[Scummvm-git-logs] scummvm master -> a8920f4c2d457d8249aa6834df27022db131b42b

mduggan mgithub at guarana.org
Sun Jun 13 04:27:39 UTC 2021


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

Summary:
005ad17f7a ULTIMA8: Make INVINCIBLE flag work in Crusader games
0e61c999af ULTIMA8: Clear instance of singleton Crusader processes on destruction
c92bd29e2c ULTIMA8: Add a couple of consts
a8920f4c2d ULTIMA8: Fix Crusader selection with more than 2 candidates


Commit: 005ad17f7a04defd0ec7b593a6f2f567a81f95b1
    https://github.com/scummvm/scummvm/commit/005ad17f7a04defd0ec7b593a6f2f567a81f95b1
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00

Commit Message:
ULTIMA8: Make INVINCIBLE flag work in Crusader games

Changed paths:
    engines/ultima/ultima8/world/actors/actor.cpp


diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 19222edffb..412cfe3683 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -920,7 +920,7 @@ void Actor::receiveHitCru(uint16 other, Direction dir, int damage, uint16 damage
 		world->setVargasShield(static_cast<uint32>(newval));
 		return;
 	} else if (GAME_IS_REGRET && shape == 0x5b1) {
-		/* TODO: Finish special case for No Regret */
+		warning("TODO: Finish Shape 0x5b1 special case for No Regret.");
 		/*
 		_bossHealth = _bossHealth - damage;
 		if (_bossHealth < 1) {
@@ -982,7 +982,7 @@ void Actor::receiveHitCru(uint16 other, Direction dir, int damage, uint16 damage
 		damage = receiveShieldHit(damage, damage_type);
 	}
 
-	if (hasActorFlags(ACT_IMMORTAL))
+	if (hasActorFlags(ACT_IMMORTAL | ACT_INVINCIBLE))
 		damage = 0;
 
 	if (damage > _hitPoints)


Commit: 0e61c999af455c70c1238c6a34f752e140c8265f
    https://github.com/scummvm/scummvm/commit/0e61c999af455c70c1238c6a34f752e140c8265f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00

Commit Message:
ULTIMA8: Clear instance of singleton Crusader processes on destruction

Changed paths:
    engines/ultima/ultima8/graphics/cycle_process.cpp
    engines/ultima/ultima8/graphics/cycle_process.h
    engines/ultima/ultima8/world/crosshair_process.cpp
    engines/ultima/ultima8/world/crosshair_process.h
    engines/ultima/ultima8/world/item_selection_process.cpp
    engines/ultima/ultima8/world/item_selection_process.h
    engines/ultima/ultima8/world/snap_process.cpp
    engines/ultima/ultima8/world/snap_process.h
    engines/ultima/ultima8/world/target_reticle_process.cpp
    engines/ultima/ultima8/world/target_reticle_process.h


diff --git a/engines/ultima/ultima8/graphics/cycle_process.cpp b/engines/ultima/ultima8/graphics/cycle_process.cpp
index 2653e12ac1..2b63e7109f 100644
--- a/engines/ultima/ultima8/graphics/cycle_process.cpp
+++ b/engines/ultima/ultima8/graphics/cycle_process.cpp
@@ -57,6 +57,7 @@ static inline void copyColor(uint8 *dst, const uint8 *src) {
 CycleProcess::CycleProcess() : Process(), _running(1) {
 	_instance = this;
 	_ticksPerRun = 2;
+	_type = 1; // persistent
 	for (int i = 0; i < 7; i++) {
 		copyColor(_cycleColData[i], CYCLE_INIT_COLS[i]);
 	}
diff --git a/engines/ultima/ultima8/graphics/cycle_process.h b/engines/ultima/ultima8/graphics/cycle_process.h
index 15624eea1b..c9267f7447 100644
--- a/engines/ultima/ultima8/graphics/cycle_process.h
+++ b/engines/ultima/ultima8/graphics/cycle_process.h
@@ -40,7 +40,7 @@ public:
 	// p_dynamic_class stuff
 	ENABLE_RUNTIME_CLASSTYPE()
 	CycleProcess();
-	~CycleProcess(void) override;
+	~CycleProcess() override;
 
 	void run() override;
 
diff --git a/engines/ultima/ultima8/world/crosshair_process.cpp b/engines/ultima/ultima8/world/crosshair_process.cpp
index 93994e11dc..3db2f19076 100644
--- a/engines/ultima/ultima8/world/crosshair_process.cpp
+++ b/engines/ultima/ultima8/world/crosshair_process.cpp
@@ -44,6 +44,12 @@ CrosshairProcess *CrosshairProcess::_instance = nullptr;
 
 CrosshairProcess::CrosshairProcess() : Process() {
 	_instance = this;
+	_type = 1; // persistent
+}
+
+CrosshairProcess::~CrosshairProcess() {
+	if (_instance == this)
+		_instance = nullptr;
 }
 
 void CrosshairProcess::run() {
diff --git a/engines/ultima/ultima8/world/crosshair_process.h b/engines/ultima/ultima8/world/crosshair_process.h
index b871545024..917bb5386f 100644
--- a/engines/ultima/ultima8/world/crosshair_process.h
+++ b/engines/ultima/ultima8/world/crosshair_process.h
@@ -37,6 +37,7 @@ namespace Ultima8 {
 class CrosshairProcess : public Process {
 public:
 	CrosshairProcess();
+	~CrosshairProcess();
 
 	ENABLE_RUNTIME_CLASSTYPE()
 
diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index 4be8488818..c34b31bebd 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -46,6 +46,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(ItemSelectionProcess)
 ItemSelectionProcess::ItemSelectionProcess() : Process(), _selectedItem(0),
 _ax(0), _ay(0), _az(0) {
 	_instance = this;
+	_type = 1; // persistent
+}
+
+ItemSelectionProcess::~ItemSelectionProcess() {
+	if (_instance == this)
+		_instance = nullptr;
 }
 
 void ItemSelectionProcess::run() {
diff --git a/engines/ultima/ultima8/world/item_selection_process.h b/engines/ultima/ultima8/world/item_selection_process.h
index 509e2256bb..42219e1ad2 100644
--- a/engines/ultima/ultima8/world/item_selection_process.h
+++ b/engines/ultima/ultima8/world/item_selection_process.h
@@ -37,6 +37,7 @@ class Item;
 class ItemSelectionProcess : public Process {
 public:
 	ItemSelectionProcess();
+	~ItemSelectionProcess();
 
 	ENABLE_RUNTIME_CLASSTYPE()
 
diff --git a/engines/ultima/ultima8/world/snap_process.cpp b/engines/ultima/ultima8/world/snap_process.cpp
index acdd1bfc16..7a5427c74e 100644
--- a/engines/ultima/ultima8/world/snap_process.cpp
+++ b/engines/ultima/ultima8/world/snap_process.cpp
@@ -35,6 +35,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(SnapProcess)
 
 SnapProcess::SnapProcess() : Process(), _currentSnapEgg() {
 	_instance = this;
+	_type = 1; // persistent
+}
+
+SnapProcess::~SnapProcess() {
+	if (_instance == this)
+		_instance = nullptr;
 }
 
 void SnapProcess::run() {
diff --git a/engines/ultima/ultima8/world/snap_process.h b/engines/ultima/ultima8/world/snap_process.h
index 2801c13337..2747cb6697 100644
--- a/engines/ultima/ultima8/world/snap_process.h
+++ b/engines/ultima/ultima8/world/snap_process.h
@@ -34,6 +34,7 @@ class Item;
 class SnapProcess : public Process {
 public:
 	SnapProcess();
+	~SnapProcess();
 
 	ENABLE_RUNTIME_CLASSTYPE()
 
diff --git a/engines/ultima/ultima8/world/target_reticle_process.cpp b/engines/ultima/ultima8/world/target_reticle_process.cpp
index e913b24014..21a4150798 100644
--- a/engines/ultima/ultima8/world/target_reticle_process.cpp
+++ b/engines/ultima/ultima8/world/target_reticle_process.cpp
@@ -41,6 +41,12 @@ DEFINE_RUNTIME_CLASSTYPE_CODE(TargetReticleProcess)
 TargetReticleProcess::TargetReticleProcess() : Process(), _reticleEnabled(true),
 		_lastUpdate(0), _reticleSpriteProcess(0), _lastTargetDir(dir_current), _lastTargetItem(0) {
 	_instance = this;
+	_type = 1; // persistent
+}
+
+TargetReticleProcess::~TargetReticleProcess() {
+	if (_instance == this)
+		_instance = nullptr;
 }
 
 void TargetReticleProcess::run() {
diff --git a/engines/ultima/ultima8/world/target_reticle_process.h b/engines/ultima/ultima8/world/target_reticle_process.h
index 7f5ce8258b..f151b95051 100644
--- a/engines/ultima/ultima8/world/target_reticle_process.h
+++ b/engines/ultima/ultima8/world/target_reticle_process.h
@@ -38,6 +38,7 @@ class Item;
 class TargetReticleProcess : public Process {
 public:
 	TargetReticleProcess();
+	~TargetReticleProcess();
 
 	ENABLE_RUNTIME_CLASSTYPE()
 


Commit: c92bd29e2c9e1a83fd8de10227947052dc9721a3
    https://github.com/scummvm/scummvm/commit/c92bd29e2c9e1a83fd8de10227947052dc9721a3
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00

Commit Message:
ULTIMA8: Add a couple of consts

Changed paths:
    engines/ultima/ultima8/games/start_crusader_process.cpp
    engines/ultima/ultima8/graphics/soft_render_surface.inl


diff --git a/engines/ultima/ultima8/games/start_crusader_process.cpp b/engines/ultima/ultima8/games/start_crusader_process.cpp
index 53a1c68ad9..148010450a 100644
--- a/engines/ultima/ultima8/games/start_crusader_process.cpp
+++ b/engines/ultima/ultima8/games/start_crusader_process.cpp
@@ -92,7 +92,7 @@ void StartCrusaderProcess::run() {
 
 #if 0
 		// Give the avatar *all the weapons and ammo*.. (handy for testing)
-		uint32 wpnshapes[] = {
+		static const uint32 wpnshapes[] = {
 			// Weapons
 			0x032E, 0x032F, 0x0330, 0x038C, 0x0332, 0x0333, 0x0334,
 			0x038E, 0x0388, 0x038A, 0x038D, 0x038B, 0x0386,
diff --git a/engines/ultima/ultima8/graphics/soft_render_surface.inl b/engines/ultima/ultima8/graphics/soft_render_surface.inl
index fee1fd7285..d0e6579607 100644
--- a/engines/ultima/ultima8/graphics/soft_render_surface.inl
+++ b/engines/ultima/ultima8/graphics/soft_render_surface.inl
@@ -194,7 +194,7 @@ const int32 neg = (FLIP_CONDITIONAL)?-1:0;
 	assert(_pixels00 && _pixels && srcpixels && srcmask);
 
 	for (int i = 0; i < height_; i++)  {
-		int line = y + i;
+		const int line = y + i;
 
 		if (NOT_CLIPPED_Y) {
 			const uint8	*srcline = srcpixels + i * width_;


Commit: a8920f4c2d457d8249aa6834df27022db131b42b
    https://github.com/scummvm/scummvm/commit/a8920f4c2d457d8249aa6834df27022db131b42b
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-06-13T13:26:31+09:00

Commit Message:
ULTIMA8: Fix Crusader selection with more than 2 candidates

Changed paths:
    engines/ultima/ultima8/world/item_selection_process.cpp


diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index c34b31bebd..7a1f6e7474 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -130,10 +130,10 @@ bool ItemSelectionProcess::selectNextItem(bool grab) {
 	if (_selectedItem) {
 		// Pick the next item
 		int offset = 0;
-		for (Std::vector<Item *>::iterator iter = candidates.begin();
+		for (Std::vector<Item *>::const_iterator iter = candidates.begin();
 			 iter != candidates.end();
 			 offset++, iter++) {
-			ObjId num = item->getObjId();
+			ObjId num = (*iter)->getObjId();
 			if (_selectedItem == num) {
 				offset++;
 				break;




More information about the Scummvm-git-logs mailing list