diff options
author | Thanasis Antoniou | 2019-06-26 19:49:47 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-06-26 19:49:47 +0300 |
commit | bb9bd91436b5ef04145d0f779baa2c406ebe15a2 (patch) | |
tree | 9d60d67c1dd6a583b3fb5786d99b6b5cee06788d /engines/bladerunner | |
parent | 378f1863271fd5df3051f49a883fcef23f4f85fa (diff) | |
download | scummvm-rg350-bb9bd91436b5ef04145d0f779baa2c406ebe15a2.tar.gz scummvm-rg350-bb9bd91436b5ef04145d0f779baa2c406ebe15a2.tar.bz2 scummvm-rg350-bb9bd91436b5ef04145d0f779baa2c406ebe15a2.zip |
BLADERUNNER: Pause walkers for special loop in RC03
Otherwise they may glitch with the background at the Hawker's Circle entrance.
Diffstat (limited to 'engines/bladerunner')
-rw-r--r-- | engines/bladerunner/script/scene/rc03.cpp | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/engines/bladerunner/script/scene/rc03.cpp b/engines/bladerunner/script/scene/rc03.cpp index bb6168a0a9..49b8b9476d 100644 --- a/engines/bladerunner/script/scene/rc03.cpp +++ b/engines/bladerunner/script/scene/rc03.cpp @@ -25,8 +25,8 @@ namespace BladeRunner { enum kRC03Loops { - kRC03LoopInshot = 0, - kRC03LoopMainLoop = 1 + kRC03LoopInshot = 0, // frames: 0 - 59 + kRC03LoopMainLoop = 1 // frames: 60 - 120 }; void SceneScriptRC03::InitializeScene() { @@ -90,6 +90,15 @@ void SceneScriptRC03::InitializeScene() { if (Random_Query(1, 3) == 1) { // enhancement: don't always play this scene when exiting Hawker's Circle Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kRC03LoopInshot, false); + // Pause generic walkers while special loop is playing + // to prevent glitching over background (walkers coming from Hawker's Circle) + // This is done is a similar way to CT01 +#if !BLADERUNNER_ORIGINAL_BUGS + Actor_Set_Goal_Number(kActorGenwalkerA, kGoalGenwalkerDefault); + Actor_Set_Goal_Number(kActorGenwalkerB, kGoalGenwalkerDefault); + Actor_Set_Goal_Number(kActorGenwalkerC, kGoalGenwalkerDefault); + Global_Variable_Set(kVariableGenericWalkerConfig, -1); +#endif // !BLADERUNNER_ORIGINAL_BUGS } } Scene_Loop_Set_Default(kRC03LoopMainLoop); @@ -253,6 +262,15 @@ void SceneScriptRC03::SceneFrameAdvanced(int frame) { if (frame == 15) { Sound_Play(kSfxCHEVBY1, Random_Query(50, 50), -100, 100, 50); } +#if !BLADERUNNER_ORIGINAL_BUGS + if (frame == 59) { + // end of special loop + // Resume walkers + if (Global_Variable_Query(kVariableGenericWalkerConfig) < 0 ) { + Global_Variable_Set(kVariableGenericWalkerConfig, 2); + } + } +#endif // BLADERUNNER_ORIGINAL } void SceneScriptRC03::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) { |