aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-06-26 19:49:47 +0300
committerThanasis Antoniou2019-06-26 19:49:47 +0300
commitbb9bd91436b5ef04145d0f779baa2c406ebe15a2 (patch)
tree9d60d67c1dd6a583b3fb5786d99b6b5cee06788d /engines/bladerunner
parent378f1863271fd5df3051f49a883fcef23f4f85fa (diff)
downloadscummvm-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.cpp22
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) {