diff options
author | Thanasis Antoniou | 2019-06-25 22:40:50 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-06-25 22:40:50 +0300 |
commit | 78667edd0fe0ba5b2e46263b156c6a590b7b9032 (patch) | |
tree | d1fbce7426336339df3f87207fa5b3851622160d /engines/bladerunner | |
parent | 35cf41683e55a3d1a6756bd689ef69d565821f5a (diff) | |
download | scummvm-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.cpp | 22 |
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); |