aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-08 22:57:06 +0300
committerThanasis Antoniou2019-05-08 22:58:04 +0300
commitdb0020c55fa0078e1ff01156454f224df02dba6c (patch)
tree5d8145cbb03616712b40fd317b7169f8142a9efe /engines/bladerunner
parent3c67ce0eed26712946244d06e119ee398562a704 (diff)
downloadscummvm-rg350-db0020c55fa0078e1ff01156454f224df02dba6c.tar.gz
scummvm-rg350-db0020c55fa0078e1ff01156454f224df02dba6c.tar.bz2
scummvm-rg350-db0020c55fa0078e1ff01156454f224df02dba6c.zip
BLADERUNNER: Another fix for confess to Guzza
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/script/ai/dektora.cpp2
-rw-r--r--engines/bladerunner/script/scene/ps04.cpp19
-rw-r--r--engines/bladerunner/script/scene/tb05.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug13.cpp2
-rw-r--r--engines/bladerunner/script/script.cpp6
-rw-r--r--engines/bladerunner/script/script.h2
6 files changed, 20 insertions, 13 deletions
diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp
index 690c1e9916..0d76f10b2c 100644
--- a/engines/bladerunner/script/ai/dektora.cpp
+++ b/engines/bladerunner/script/ai/dektora.cpp
@@ -1057,7 +1057,7 @@ bool AIScriptDektora::UpdateAnimation(int *animation, int *frame) {
if (_animationFrame == 8
&& Actor_Query_In_Set(kActorDektora, kSetNR10)
) {
- Scene_Loop_Start_Special(2, 4, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeOnce, 4, true);
}
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(157)) {
diff --git a/engines/bladerunner/script/scene/ps04.cpp b/engines/bladerunner/script/scene/ps04.cpp
index 11e45b73f6..120fde25e2 100644
--- a/engines/bladerunner/script/scene/ps04.cpp
+++ b/engines/bladerunner/script/scene/ps04.cpp
@@ -51,7 +51,8 @@ void SceneScriptPS04::InitializeScene() {
Ambient_Sounds_Add_Sound(kSfxSCANNER5, 9, 40, 20, 20, 0, 0, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(kSfxSCANNER6, 9, 40, 20, 20, 0, 0, -101, -101, 0, 0);
Ambient_Sounds_Add_Sound(kSfxSCANNER7, 9, 40, 20, 20, 0, 0, -101, -101, 0, 0);
- Scene_Loop_Start_Special(kPS04LoopPanToPS04, 0, 0);
+
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kPS04LoopPanToPS04, false);
Scene_Loop_Set_Default(kPS04LoopMainLoop);
}
@@ -358,20 +359,26 @@ void SceneScriptPS04::dialogueWithGuzza() {
Actor_Says(kActorGuzza, 620, 32);
if (_vm->_cutContent) {
// add a fade-out here while Guzza calls-in for favors
- Scene_Loop_Start_Special(kPS04LoopPanToPS04, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeOnce, kPS04LoopPanToPS04, true);
Scene_Loop_Set_Default(kPS04LoopMainLoop);
- Delay(2000);
+ Delay(1000);
+ Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
+ Delay(1000);
}
- Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
Actor_Says(kActorGuzza, 700, 34);
Actor_Says(kActorMcCoy, 4100, 13);
Actor_Says(kActorGuzza, 710, 31);
Actor_Says(kActorGuzza, 720, 34);
Actor_Says(kActorMcCoy, 4105, 18);
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -668.0f, -350.85f, 962.0f, 0, false, false, 0);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -668.0f, -350.85f, 962.0f, 0, false, false, false);
+#else
+ // enforce stop running (if was running) - McCoy running in Guzza's office in this scene looks bad
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -668.0f, -350.85f, 962.0f, 0, false, false, true);
+#endif // BLADERUNNER_ORIGINAL_BUGS
Actor_Says(kActorGuzza, 730, 32);
Actor_Face_Actor(kActorMcCoy, kActorGuzza, true);
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -716.0f, -354.85f, 1042.0f, 0, false, false, 0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -716.0f, -354.85f, 1042.0f, 0, false, false, false);
Actor_Face_Actor(kActorGuzza, kActorMcCoy, true);
Actor_Says(kActorGuzza, 740, 31);
Actor_Says(kActorGuzza, 750, 32);
diff --git a/engines/bladerunner/script/scene/tb05.cpp b/engines/bladerunner/script/scene/tb05.cpp
index 896c3ffb73..f2eb62aea0 100644
--- a/engines/bladerunner/script/scene/tb05.cpp
+++ b/engines/bladerunner/script/scene/tb05.cpp
@@ -177,7 +177,7 @@ bool SceneScriptTB05::ClickedOnExit(int exitId) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.0f, 151.53f, -205.0f, 12, true, false, 0)) {
Game_Flag_Set(kFlagTB05toTB06);
Set_Enter(kSetTB06, kSceneTB06);
- Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 2, 1);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 2, true);
}
return true;
}
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index ee1d364e4a..9b72fbdc78 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -66,7 +66,7 @@ void SceneScriptUG13::InitializeScene() {
}
if (Game_Flag_Query(kFlagUG08toUG13)) {
- Scene_Loop_Start_Special(0, 0, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
Scene_Loop_Set_Default(1);
} else if (Game_Flag_Query(kFlagUG08ElevatorUp)) {
Scene_Loop_Set_Default(4);
diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp
index 1b52d659ca..4ce5e893fe 100644
--- a/engines/bladerunner/script/script.cpp
+++ b/engines/bladerunner/script/script.cpp
@@ -577,12 +577,12 @@ bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int pr
return result;
}
-bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool a7) {
- debugC(kDebugScript, "Loop_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d, %d, %d)", actorId, x, y, z, proximity, interruptible, run, a7);
+bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool force) {
+ debugC(kDebugScript, "Loop_Actor_Walk_To_XYZ(%d, %f, %f, %f, %d, %d, %d, %d)", actorId, x, y, z, proximity, interruptible, run, force);
_vm->gameWaitForActive();
if (_vm->_runningActorId == actorId) {
- if (a7) {
+ if (force) {
_vm->_runningActorId = -1;
} else {
run = true;
diff --git a/engines/bladerunner/script/script.h b/engines/bladerunner/script/script.h
index fbd366f13a..7641b2279b 100644
--- a/engines/bladerunner/script/script.h
+++ b/engines/bladerunner/script/script.h
@@ -107,7 +107,7 @@ protected:
bool Loop_Actor_Walk_To_Item(int actorId, int itemId, int proximity, bool interruptible, bool run);
bool Loop_Actor_Walk_To_Scene_Object(int actorId, const char *objectName, int proximity, bool interruptible, bool run);
bool Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool interruptible, bool run);
- bool Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool a7);
+ bool Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool interruptible, bool run, bool force);
void Async_Actor_Walk_To_Waypoint(int actorId, int waypointId, int proximity, bool run);
void Async_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, int proximity, bool run);
void Actor_Force_Stop_Walking(int actorId);