From eb5aafa90ce8ab8c2ed4a78ca5073b3b16716a5c Mon Sep 17 00:00:00 2001 From: Thanasis Antoniou Date: Wed, 8 May 2019 23:56:38 +0300 Subject: BLADERUNNER: Fix scorpion cage blink in and out Original bug occurs in transitions from AR01 to AR02 --- engines/bladerunner/script/scene/ar01.cpp | 20 ++++++++++++++++++++ engines/bladerunner/script/scene/ar02.cpp | 19 +++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'engines/bladerunner/script/scene') 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) { -- cgit v1.2.3