[Scummvm-git-logs] scummvm master -> c3fe087fa3502c825935aace2fac3fecdd5d7ea0
antoniou79
a.antoniou79 at gmail.com
Sun Dec 20 14:10:00 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:
c3fe087fa3 BLADERUNNER: Fix rogue hotspot in UG12
Commit: c3fe087fa3502c825935aace2fac3fecdd5d7ea0
https://github.com/scummvm/scummvm/commit/c3fe087fa3502c825935aace2fac3fecdd5d7ea0
Author: antoniou79 (a.antoniou79 at gmail.com)
Date: 2020-12-20T16:07:52+02:00
Commit Message:
BLADERUNNER: Fix rogue hotspot in UG12
A chair from another scene was somewhere in the background
Changed paths:
engines/bladerunner/items.cpp
engines/bladerunner/items.h
engines/bladerunner/script/scene/ug12.cpp
engines/bladerunner/script/script.cpp
engines/bladerunner/script/script.h
diff --git a/engines/bladerunner/items.cpp b/engines/bladerunner/items.cpp
index effa1adebd..3d1f8d92de 100644
--- a/engines/bladerunner/items.cpp
+++ b/engines/bladerunner/items.cpp
@@ -119,6 +119,23 @@ bool Items::addToSet(int setId) {
return true;
}
+#if !BLADERUNNER_ORIGINAL_BUGS
+bool Items::removeFromCurrentSceneOnly(int itemId) {
+ if (_items.size() == 0) {
+ return false;
+ }
+ int itemIndex = findItem(itemId);
+ if (itemIndex == -1) {
+ return false;
+ }
+
+ if (_items[itemIndex]->_setId == _vm->_scene->getSetId()) {
+ _vm->_sceneObjects->remove(itemId + kSceneObjectOffsetItems);
+ }
+ return true;
+}
+#endif // !BLADERUNNER_ORIGINAL_BUGS
+
bool Items::remove(int itemId) {
if (_items.size() == 0) {
return false;
diff --git a/engines/bladerunner/items.h b/engines/bladerunner/items.h
index 61f8d55be2..750a471a5a 100644
--- a/engines/bladerunner/items.h
+++ b/engines/bladerunner/items.h
@@ -52,6 +52,9 @@ public:
void tick();
bool addToWorld(int itemId, int animationId, int setId, Vector3 position, int facing, int height, int width, bool isTargetFlag, bool isVisibleFlag, bool isPoliceMazeEnemyFlag, bool addToSetFlag);
bool addToSet(int itemId);
+#if !BLADERUNNER_ORIGINAL_BUGS
+ bool removeFromCurrentSceneOnly(int itemId);
+#endif // !BLADERUNNER_ORIGINAL_BUGS
bool remove(int itemId);
void setIsTarget(int itemId, bool val);
diff --git a/engines/bladerunner/script/scene/ug12.cpp b/engines/bladerunner/script/scene/ug12.cpp
index e408dd2c3a..f53d918a02 100644
--- a/engines/bladerunner/script/scene/ug12.cpp
+++ b/engines/bladerunner/script/scene/ug12.cpp
@@ -115,6 +115,16 @@ void SceneScriptUG12::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
}
void SceneScriptUG12::PlayerWalkedIn() {
+#if !BLADERUNNER_ORIGINAL_BUGS
+ // UG12 scene is in the same set as CT08 and CT51 (kSetCT08_CT51_UG12 : 6)
+ // CT08 and CT51 belong to the Replicant hideout room at Yukon hotel,
+ // thus kItemChair is still present and with a bit of pixel hunt also visible in this scene
+ // fix: remove rogue clickable chair item in this scene only.
+ // This code has to be in PlayerWalkedIn() (which is executed after SceneLoaded() when player enters the scene)
+ // and not in SceneLoaded(), as in that method, the item is not yet available in the sceneObjects
+ // (SceneObjects::findById() returns -1 for it, in SceneLoaded())
+ Item_Remove_From_Current_Scene(kItemChair);
+#endif // !BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptUG12::PlayerWalkedOut() {
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index de9ceb8180..0f5c80497f 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -844,6 +844,13 @@ void ScriptBase::Item_Add_To_World(int itemId, int animationId, int setId, float
_vm->_items->addToWorld(itemId, animationId, setId, Vector3(x, y, z), facing, height, width, isTargetable, isObstacle, isPoliceMazeEnemy, updateOnly == 0);
}
+#if !BLADERUNNER_ORIGINAL_BUGS
+void ScriptBase::Item_Remove_From_Current_Scene(int itemId) {
+ debugC(kDebugScript, "Item_Remove_From_Current_Scene(%d)", itemId);
+ _vm->_items->removeFromCurrentSceneOnly(itemId);
+}
+#endif // !BLADERUNNER_ORIGINAL_BUGS
+
void ScriptBase::Item_Remove_From_World(int itemId) {
debugC(kDebugScript, "Item_Remove_From_World(%d)", itemId);
_vm->_items->remove(itemId);
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index d1578de69d..ea3e87fc7b 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -122,6 +122,9 @@ protected:
void Actor_Set_Invisible(int actorId, bool isInvisible);
void Actor_Set_Immunity_To_Obstacles(int actorId, bool isImmune);
void Item_Add_To_World(int itemId, int animationId, int setId, float x, float y, float z, signed int facing, int height, int width, bool isTargetable, bool isObstacle, bool isPoliceMazeEnemy, bool updateOnly);
+#if !BLADERUNNER_ORIGINAL_BUGS
+ void Item_Remove_From_Current_Scene(int itemId);
+#endif // !BLADERUNNER_ORIGINAL_BUGS
void Item_Remove_From_World(int itemId);
void Item_Spin_In_World(int itemId);
void Item_Flag_As_Target(int itemId);
More information about the Scummvm-git-logs
mailing list