[Scummvm-git-logs] scummvm master -> 5cda13cb40137f04c02c9addd1d27bcaccdc7370

mduggan mgithub at guarana.org
Thu Sep 9 13:21:47 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
40baa571e8 ULTIMA8: Constify some variables
5cda13cb40 ULTIMA8: Limit BA-40 ammo in high Crusader difficulties


Commit: 40baa571e8270b2fc274d2652823bb1b18cae91b
    https://github.com/scummvm/scummvm/commit/40baa571e8270b2fc274d2652823bb1b18cae91b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-09-09T22:15:35+09:00

Commit Message:
ULTIMA8: Constify some variables

Changed paths:
    engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
    engines/ultima/ultima8/gumps/cru_weapon_gump.cpp
    engines/ultima/ultima8/world/actors/main_actor.cpp


diff --git a/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp b/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
index c0e9d27831..2899e329f2 100644
--- a/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_ammo_gump.cpp
@@ -70,7 +70,7 @@ void CruAmmoGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 	if (active) {
 		Item *item = getItem(active);
 		if (item) {
-			WeaponInfo *weaponinfo = item->getShapeInfo()->_weaponInfo;
+			const WeaponInfo *weaponinfo = item->getShapeInfo()->_weaponInfo;
 			//uint16 frameno = 0;
 			if (weaponinfo && weaponinfo->_ammoType) {
 				//frameno = weaponinfo->_ammoType;
diff --git a/engines/ultima/ultima8/gumps/cru_weapon_gump.cpp b/engines/ultima/ultima8/gumps/cru_weapon_gump.cpp
index 5d60dd8e82..0eb9c9c862 100644
--- a/engines/ultima/ultima8/gumps/cru_weapon_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_weapon_gump.cpp
@@ -93,7 +93,7 @@ void CruWeaponGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scale
 		if (!item) {
 			weaponGump->SetShape(0, 0);
 		} else {
-			WeaponInfo *weaponinfo = item->getShapeInfo()->_weaponInfo;
+			const WeaponInfo *weaponinfo = item->getShapeInfo()->_weaponInfo;
 			uint16 frameno = 0;
 			if (weaponinfo) {
 				// this should be a weapon, otherwise why are we here?
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index 9709786a71..7d0827e6c2 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -664,7 +664,7 @@ void MainActor::getWeaponOverlay(const WeaponOverlayFrame *&frame, uint32 &shape
 	const ShapeInfo *shapeinfo = weapon->getShapeInfo();
 	if (!shapeinfo) return;
 
-	WeaponInfo *weaponinfo = shapeinfo->_weaponInfo;
+	const WeaponInfo *weaponinfo = shapeinfo->_weaponInfo;
 	if (!weaponinfo) return;
 
 	shape = weaponinfo->_overlayShape;


Commit: 5cda13cb40137f04c02c9addd1d27bcaccdc7370
    https://github.com/scummvm/scummvm/commit/5cda13cb40137f04c02c9addd1d27bcaccdc7370
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-09-09T22:20:27+09:00

Commit Message:
ULTIMA8: Limit BA-40 ammo in high Crusader difficulties

Bug #12880.  The BA-40 should consume ammo in the higher 2 difficulty levels
for Crusader: No Remorse.  A similar change is probably needed for No Regret,
but it will be done separately.

Changed paths:
    devtools/create_ultima/files/ultima8/remorseweapons.ini
    engines/ultima/ultima8/world/world.cpp
    engines/ultima/ultima8/world/world.h


diff --git a/devtools/create_ultima/files/ultima8/remorseweapons.ini b/devtools/create_ultima/files/ultima8/remorseweapons.ini
index bca8ff1a9b..5593d96c85 100644
--- a/devtools/create_ultima/files/ultima8/remorseweapons.ini
+++ b/devtools/create_ultima/files/ultima8/remorseweapons.ini
@@ -11,6 +11,7 @@ overlay=0
 small=1
 reload_sound=0x02B
 shot_delay=0x0C
+clip_size=20
 
 [BA-41]
 shape=0x032F
diff --git a/engines/ultima/ultima8/world/world.cpp b/engines/ultima/ultima8/world/world.cpp
index 2702aedda4..e4b358d385 100644
--- a/engines/ultima/ultima8/world/world.cpp
+++ b/engines/ultima/ultima8/world/world.cpp
@@ -40,6 +40,7 @@
 #include "ultima/ultima8/world/target_reticle_process.h"
 #include "ultima/ultima8/audio/audio_process.h"
 #include "ultima/ultima8/world/snap_process.h"
+#include "ultima/ultima8/graphics/main_shape_archive.h"
 
 namespace Ultima {
 namespace Ultima8 {
@@ -506,6 +507,27 @@ void World::setAlertActiveRegret(bool active)
 	}
 }
 
+void World::setGameDifficulty(uint8 difficulty) {
+   _difficulty = difficulty;
+   if (GAME_IS_REMORSE) {
+	   // HACK: Set ammo data for BA-40 in higher 2 difficulty levels
+	   // This would be better handled in the ini file somehow?
+	   const ShapeInfo *si = GameData::get_instance()->getMainShapes()->getShapeInfo(0x32E);
+	   if (si && si->_weaponInfo) {
+		   WeaponInfo *wi = si->_weaponInfo;
+		   wi->_clipSize = 20;
+		   if (difficulty > 2) {
+			   wi->_ammoShape = 0x33D;
+			   wi->_ammoType = 1;
+		   } else {
+			   wi->_ammoShape = 0;
+			   wi->_ammoType = 0;
+		   }
+	   }
+   }
+}
+
+
 void World::setControlledNPCNum(uint16 num) {
 	uint16 oldnpc = _controlledNPCNum;
 	_controlledNPCNum = num;
diff --git a/engines/ultima/ultima8/world/world.h b/engines/ultima/ultima8/world/world.h
index 3052f113de..848e5dec65 100644
--- a/engines/ultima/ultima8/world/world.h
+++ b/engines/ultima/ultima8/world/world.h
@@ -148,9 +148,8 @@ public:
 	uint8 getGameDifficulty() const {
 		return _difficulty;
 	}
-	void setGameDifficulty(uint8 difficulty) {
-		_difficulty = difficulty;
-	}
+
+	void setGameDifficulty(uint8 difficulty);
 
 	uint16 getControlledNPCNum() const {
 		return _controlledNPCNum;




More information about the Scummvm-git-logs mailing list