aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-08 23:56:38 +0300
committerThanasis Antoniou2019-05-08 23:56:38 +0300
commiteb5aafa90ce8ab8c2ed4a78ca5073b3b16716a5c (patch)
treee923c72f999a2be9f879c431b69e116f0f8072db /engines/bladerunner/script/scene
parentdb0020c55fa0078e1ff01156454f224df02dba6c (diff)
downloadscummvm-rg350-eb5aafa90ce8ab8c2ed4a78ca5073b3b16716a5c.tar.gz
scummvm-rg350-eb5aafa90ce8ab8c2ed4a78ca5073b3b16716a5c.tar.bz2
scummvm-rg350-eb5aafa90ce8ab8c2ed4a78ca5073b3b16716a5c.zip
BLADERUNNER: Fix scorpion cage blink in and out
Original bug occurs in transitions from AR01 to AR02
Diffstat (limited to 'engines/bladerunner/script/scene')
-rw-r--r--engines/bladerunner/script/scene/ar01.cpp20
-rw-r--r--engines/bladerunner/script/scene/ar02.cpp19
2 files changed, 39 insertions, 0 deletions
diff --git a/engines/bladerunner/script/scene/ar01.cpp b/engines/bladerunner/script/scene/ar01.cpp
index 465978376f..11b67945ce 100644
--- a/engines/bladerunner/script/scene/ar01.cpp
+++ b/engines/bladerunner/script/scene/ar01.cpp
@@ -119,6 +119,26 @@ void SceneScriptAR01::InitializeScene() {
void SceneScriptAR01::SceneLoaded() {
Obstacle_Object("DF_BOOTH", true);
Unobstacle_Object("SPINNER BODY", true);
+
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ if (Global_Variable_Query(kVariableChapter) < 4
+ && !Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)
+ && !Game_Flag_Query(kFlagScorpionsInAR02)
+ ) {
+ // the kFlagScorpionsInAR02 flag helps keep track of the item in AR
+ // and make it not blink in and out of existence
+ // in the transition from AR01 to AR02
+ Game_Flag_Set(kFlagScorpionsInAR02);
+ Item_Add_To_World(kItemScorpions, kModelAnimationCageOfScorpions, kSetAR01_AR02, -442.84f, 36.77f, -1144.51f, 360, 36, 36, false, true, false, true);
+ } else if (Global_Variable_Query(kVariableChapter) >= 4
+ && !Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)
+ && Game_Flag_Query(kFlagScorpionsInAR02)
+ ) {
+ Game_Flag_Reset(kFlagScorpionsInAR02);
+ Item_Remove_From_World(kItemScorpions);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptAR01::MouseClick(int x, int y) {
diff --git a/engines/bladerunner/script/scene/ar02.cpp b/engines/bladerunner/script/scene/ar02.cpp
index f02e3e6b03..882a13aacf 100644
--- a/engines/bladerunner/script/scene/ar02.cpp
+++ b/engines/bladerunner/script/scene/ar02.cpp
@@ -79,6 +79,7 @@ void SceneScriptAR02::InitializeScene() {
void SceneScriptAR02::SceneLoaded() {
Obstacle_Object("DF_BOOTH", true);
+#if BLADERUNNER_ORIGINAL_BUGS
if (!Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)) {
Item_Add_To_World(kItemScorpions, kModelAnimationCageOfScorpions, kSetAR01_AR02, -442.84f, 36.77f, -1144.51f, 360, 36, 36, false, true, false, true);
}
@@ -88,6 +89,24 @@ void SceneScriptAR02::SceneLoaded() {
Game_Flag_Set(kFlagNotUsed0);
Item_Remove_From_World(kItemScorpions);
}
+#else
+ if (Global_Variable_Query(kVariableChapter) < 4
+ && !Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)
+ && !Game_Flag_Query(kFlagScorpionsInAR02)
+ ) {
+ // the kFlagScorpionsInAR02 flag helps keep track of the item in AR
+ // and make it not blink in and out of existence
+ // in the transition from AR01 to AR02
+ Game_Flag_Set(kFlagScorpionsInAR02);
+ Item_Add_To_World(kItemScorpions, kModelAnimationCageOfScorpions, kSetAR01_AR02, -442.84f, 36.77f, -1144.51f, 360, 36, 36, false, true, false, true);
+ } else if (Global_Variable_Query(kVariableChapter) >= 4
+ && !Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)
+ && Game_Flag_Query(kFlagScorpionsInAR02)
+ ) {
+ Game_Flag_Reset(kFlagScorpionsInAR02);
+ Item_Remove_From_World(kItemScorpions);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
bool SceneScriptAR02::MouseClick(int x, int y) {