[Scummvm-git-logs] scummvm branch-2-3 -> c7406a4077f40678a86f758d34a024f4889278df
mduggan
mgithub at guarana.org
Thu Sep 9 13:23:45 UTC 2021
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c7406a4077 ULTIMA8: Limit BA-40 ammo in high Crusader difficulties
Commit: c7406a4077f40678a86f758d34a024f4889278df
https://github.com/scummvm/scummvm/commit/c7406a4077f40678a86f758d34a024f4889278df
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-09-09T22:23:36+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