aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-06-25 22:40:50 +0300
committerThanasis Antoniou2019-06-25 22:40:50 +0300
commit78667edd0fe0ba5b2e46263b156c6a590b7b9032 (patch)
treed1fbce7426336339df3f87207fa5b3851622160d /engines/bladerunner
parent35cf41683e55a3d1a6756bd689ef69d565821f5a (diff)
downloadscummvm-rg350-78667edd0fe0ba5b2e46263b156c6a590b7b9032.tar.gz
scummvm-rg350-78667edd0fe0ba5b2e46263b156c6a590b7b9032.tar.bz2
scummvm-rg350-78667edd0fe0ba5b2e46263b156c6a590b7b9032.zip
BLADERUNNER: Fix Elevator blink in when missing from UG08
Happens, if elevator missing because McCoy took it down to UG13 and then went the long way round
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/script/scene/ug08.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/engines/bladerunner/script/scene/ug08.cpp b/engines/bladerunner/script/scene/ug08.cpp
index c9750b68fe..b69e86472f 100644
--- a/engines/bladerunner/script/scene/ug08.cpp
+++ b/engines/bladerunner/script/scene/ug08.cpp
@@ -62,6 +62,28 @@ void SceneScriptUG08::InitializeScene() {
Game_Flag_Set(kFlagUG08Entered);
}
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ // if there's no elevator here (because it's in UG13 and the player took the long way round,
+ // McCoy is unable to call it up (there's no call button)
+ // Additionally, since the elevator exit is added regardless, McCoy will walk up to
+ // the elevator and then the elevator will blink in (BUG)
+ // Solution here is to:
+ // In easy mode: Have the elevator always be here.
+ // In normal/hard mode: If the elevator is missing, then:
+ // by ~33% probability the elevator will be up again,
+ // and by ~66% it won't be up, so we remove the elevator exit, and force McCoy to go the long way round again (or retry the room)
+ if (!Game_Flag_Query(kFlagUG08ElevatorUp)) {
+ if (Query_Difficulty_Level() == kGameDifficultyEasy
+ || Random_Query(1, 3) == 1
+ ) {
+ Game_Flag_Set(kFlagUG08ElevatorUp);
+ } else {
+ Scene_Exit_Remove(1);
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
+
if (Game_Flag_Query(kFlagUG13toUG08)) {
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kUG08LoopElevatorComingUp, false);
Scene_Loop_Set_Default(kUG08LoopMainLoopElevator);