diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/bladerunner/game_constants.h | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ar01.cpp | 20 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ar02.cpp | 19 |
3 files changed, 40 insertions, 1 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 59185a52a3..7140243053 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -552,7 +552,7 @@ enum Flags { kFlagHC02toHC04 = 110, kFlagPS07KleinTalkClues = 111, // 112 is never used - // 113 is never used + kFlagScorpionsInAR02 = 113, // // Re-purposed. Original: 113 is never used kFlagRC03toRC01 = 114, kFlagRC01toRC03 = 115, kFlagRC03toAR02 = 116, 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) { |