[Scummvm-git-logs] scummvm master -> 509a71a2845e2142df1ebc5394528ca7a4c163a3

yuv422 yuv422 at users.noreply.github.com
Sat May 16 11:53:17 UTC 2020


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:
509a71a284 DRAGONS: Fixed handling of inventory logic when combining items


Commit: 509a71a2845e2142df1ebc5394528ca7a4c163a3
    https://github.com/scummvm/scummvm/commit/509a71a2845e2142df1ebc5394528ca7a4c163a3
Author: Eric Fry (yuv422 at users.noreply.github.com)
Date: 2020-05-16T21:48:54+10:00

Commit Message:
DRAGONS: Fixed handling of inventory logic when combining items

Changed paths:
    engines/dragons/inventory.cpp
    engines/dragons/inventory.h
    engines/dragons/scriptopcodes.cpp


diff --git a/engines/dragons/inventory.cpp b/engines/dragons/inventory.cpp
index 726b163158..1867121aa8 100644
--- a/engines/dragons/inventory.cpp
+++ b/engines/dragons/inventory.cpp
@@ -395,6 +395,7 @@ bool Inventory::clearItem(uint16 iniId) {
 	for (int i = 0; i < DRAGONS_MAX_INVENTORY_ITEMS; i++) {
 		if (_inventoryItemTbl[i] == iniId) {
 			_inventoryItemTbl[i] = 0;
+			return true;
 		}
 	}
 	return false;
@@ -432,4 +433,13 @@ void Inventory::setPreviousState() {
 	_previousState = tmpState;
 }
 
+bool Inventory::hasItem(uint16 iniId) {
+	for (int i = 0; i < DRAGONS_MAX_INVENTORY_ITEMS; i++) {
+		if (_inventoryItemTbl[i] == iniId) {
+			return true;
+		}
+	}
+	return false;
+}
+
 } // End of namespace Dragons
diff --git a/engines/dragons/inventory.h b/engines/dragons/inventory.h
index 714b8f98ee..98933502ce 100644
--- a/engines/dragons/inventory.h
+++ b/engines/dragons/inventory.h
@@ -108,6 +108,7 @@ public:
 	bool addItemIfPositionIsEmpty(uint16 iniId, uint16 x, uint16 y);
 	void replaceItem(uint16 existingIniId, uint16 newIniId);
 	bool clearItem(uint16 iniId);
+	bool hasItem(uint16 iniId);
 
 	Actor *getInventoryItemActor(uint16 iniId);
 	void inventoryMissing();
diff --git a/engines/dragons/scriptopcodes.cpp b/engines/dragons/scriptopcodes.cpp
index 6f32e3f50f..9f1a794cd7 100644
--- a/engines/dragons/scriptopcodes.cpp
+++ b/engines/dragons/scriptopcodes.cpp
@@ -407,9 +407,11 @@ void ScriptOpcodes::opMoveObjectToScene(ScriptOpCall &scriptOpCall) {
 				_vm->_cursor->_sequenceID = 0;
 				_vm->_cursor->_iniItemInHand = 0;
 			} else {
-				if (_vm->_inventory->clearItem(ini->id + 1)) {
+				if (_vm->_inventory->hasItem(ini->id + 1)) {
+					Actor *actor = _vm->_inventory->getInventoryItemActor(ini->id + 1);
+					_vm->_inventory->clearItem(ini->id + 1);
 					if (_vm->_inventory->getState() == InventoryOpen) {
-						ini->actor->clearFlag(ACTOR_FLAG_40);
+						actor->clearFlag(ACTOR_FLAG_40);
 					}
 				}
 			}




More information about the Scummvm-git-logs mailing list