aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-04-28 00:20:05 +0300
committerThanasis Antoniou2019-04-28 00:21:16 +0300
commitc72cde3149514dddb8f76f9e717a0fb03dcb8332 (patch)
tree64ab76f8e22b3fc26bdcd5af8872f288eb791189 /engines/bladerunner
parent346361166cd95bb6c2fb56c1526f8f44be27a32f (diff)
downloadscummvm-rg350-c72cde3149514dddb8f76f9e717a0fb03dcb8332.tar.gz
scummvm-rg350-c72cde3149514dddb8f76f9e717a0fb03dcb8332.tar.bz2
scummvm-rg350-c72cde3149514dddb8f76f9e717a0fb03dcb8332.zip
BLADERUNNER: Fix spinner transitions post Act 1
Also restored ascenting outtake when leaving RC01 in Act 1
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/game_constants.h20
-rw-r--r--engines/bladerunner/script/scene/ar01.cpp9
-rw-r--r--engines/bladerunner/script/scene/bb01.cpp10
-rw-r--r--engines/bladerunner/script/scene/ct01.cpp12
-rw-r--r--engines/bladerunner/script/scene/dr01.cpp8
-rw-r--r--engines/bladerunner/script/scene/hf01.cpp12
-rw-r--r--engines/bladerunner/script/scene/ma01.cpp24
-rw-r--r--engines/bladerunner/script/scene/nr01.cpp13
-rw-r--r--engines/bladerunner/script/scene/ps01.cpp21
-rw-r--r--engines/bladerunner/script/scene/rc01.cpp20
-rw-r--r--engines/bladerunner/script/scene/tb02.cpp9
-rw-r--r--engines/bladerunner/script/scene/tb07.cpp14
12 files changed, 136 insertions, 36 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index c944db81d8..44acb5c3e4 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -1245,16 +1245,16 @@ enum Outtakes {
kOuttakeEnd7 = 26,
kOuttakeTyrellBuildingFly = 27,
kOuttakeWestwood = 28,
- kOuttakeFlyThrough = 29,
- kOuttakeAway1 = 30,
- kOuttakeAway2 = 31,
- kOuttakeAscent = 32,
- kOuttakeDescent = 33,
- kOuttakeInside1 = 34,
- kOuttakeInside2 = 35,
- kOuttakeTowards1 = 36,
- kOuttakeTowards2 = 37,
- kOuttakeTowards3 = 38,
+ kOuttakeFlyThrough = 29, // Act 1
+ kOuttakeAway1 = 30, // Act 2, 3
+ kOuttakeAway2 = 31, // Act 1
+ kOuttakeAscent = 32, // Act 1, 4, 5 - Original: unused
+ kOuttakeDescent = 33, // Act 1, 4, 5
+ kOuttakeInside1 = 34, // Act 1
+ kOuttakeInside2 = 35, // Act 1, 2, 3
+ kOuttakeTowards1 = 36, // Act 1
+ kOuttakeTowards2 = 37, // Act 1
+ kOuttakeTowards3 = 38, // Act 1, 2, 3
kOuttakeRachel = 39,
kOuttakeDektora = 40,
kOuttakeBladeRunner = 41
diff --git a/engines/bladerunner/script/scene/ar01.cpp b/engines/bladerunner/script/scene/ar01.cpp
index d658cc4476..0397435d57 100644
--- a/engines/bladerunner/script/scene/ar01.cpp
+++ b/engines/bladerunner/script/scene/ar01.cpp
@@ -399,9 +399,14 @@ void SceneScriptAR01::PlayerWalkedOut() {
if (!Game_Flag_Query(kFlagAR01toHC01)
&& !Game_Flag_Query(kFlagAR01toAR02)
) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
+#if BLADERUNNER_ORIGINAL_BUGS
Outtake_Play(kOuttakeTowards3, true, -1);
+#else
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play an extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeTowards3, true, -1); // Act 1, 2, 3
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
}
diff --git a/engines/bladerunner/script/scene/bb01.cpp b/engines/bladerunner/script/scene/bb01.cpp
index 76fe189687..4275bb93bf 100644
--- a/engines/bladerunner/script/scene/bb01.cpp
+++ b/engines/bladerunner/script/scene/bb01.cpp
@@ -259,6 +259,16 @@ void SceneScriptBB01::PlayerWalkedIn() {
void SceneScriptBB01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ if (!Game_Flag_Query(kFlagBB01toBB02)
+ && !Game_Flag_Query(kFlagBB01toDR02)) {
+ // Acts 2, 3 - should still use a spinner fly-through transition
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ Outtake_Play(kOuttakeTowards3, true, -1); // available in Acts 1, 2, 3
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptBB01::DialogueQueueFlushed(int a1) {
diff --git a/engines/bladerunner/script/scene/ct01.cpp b/engines/bladerunner/script/scene/ct01.cpp
index d3312f74b7..43805d09f5 100644
--- a/engines/bladerunner/script/scene/ct01.cpp
+++ b/engines/bladerunner/script/scene/ct01.cpp
@@ -487,11 +487,23 @@ void SceneScriptCT01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Looping_Sounds(1);
}
Music_Stop(5);
+#if BLADERUNNER_ORIGINAL_BUGS
if (!Game_Flag_Query(kFlagMcCoyInChinaTown) && Global_Variable_Query(kVariableChapter) == 1) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(kOuttakeTowards3, true, -1);
}
+#else
+ // Acts 2, 3 - should still use a spinner fly-through transition
+ // also removed the redundant Ambient_Sounds_Remove_All_Non_Looping_Sounds
+ if (!Game_Flag_Query(kFlagMcCoyInChinaTown)) {
+ Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play this outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeTowards3, true, -1); // available in Acts 1, 2, 3
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptCT01::DialogueQueueFlushed(int a1) {
diff --git a/engines/bladerunner/script/scene/dr01.cpp b/engines/bladerunner/script/scene/dr01.cpp
index 334c0e4f49..2467d841cd 100644
--- a/engines/bladerunner/script/scene/dr01.cpp
+++ b/engines/bladerunner/script/scene/dr01.cpp
@@ -303,6 +303,14 @@ void SceneScriptDR01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Outtake_Play(kOuttakeInside2, true, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ // add another transition to make it less abrupt
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // but don't play this extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeAway1, true, -1);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
}
diff --git a/engines/bladerunner/script/scene/hf01.cpp b/engines/bladerunner/script/scene/hf01.cpp
index f7567bc438..e98cd93db7 100644
--- a/engines/bladerunner/script/scene/hf01.cpp
+++ b/engines/bladerunner/script/scene/hf01.cpp
@@ -411,10 +411,16 @@ void SceneScriptHF01::PlayerWalkedOut() {
&& !Game_Flag_Query(kFlagHF01toHF03)
&& !Game_Flag_Query(kFlagChapter4Starting)
) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Outtake_Play(kOuttakeInside2, true, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Outtake_Play(kOuttakeInside2, true, -1);
Outtake_Play(kOuttakeTowards3, true, -1);
+#else
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play an extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeInside2, true, -1);
+ Outtake_Play(kOuttakeTowards3, true, -1);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Game_Flag_Reset(kFlagChapter4Starting);
diff --git a/engines/bladerunner/script/scene/ma01.cpp b/engines/bladerunner/script/scene/ma01.cpp
index 7de96d7577..9a4bf2431b 100644
--- a/engines/bladerunner/script/scene/ma01.cpp
+++ b/engines/bladerunner/script/scene/ma01.cpp
@@ -275,14 +275,22 @@ void SceneScriptMA01::PlayerWalkedOut() {
Actor_Set_Invisible(kActorMcCoy, false);
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
- if (!Game_Flag_Query(kFlagMA01toMA06)
- && Global_Variable_Query(kVariableChapter) == 1
- ) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Outtake_Play(kOuttakeTowards2, true, -1);
- Outtake_Play(kOuttakeInside1, true, -1);
- Outtake_Play(kOuttakeTowards1, true, -1);
+ if (!Game_Flag_Query(kFlagMA01toMA06)) {
+ if (Global_Variable_Query(kVariableChapter) == 1) {
+ Outtake_Play(kOuttakeTowards2, true, -1);
+ Outtake_Play(kOuttakeInside1, true, -1);
+ Outtake_Play(kOuttakeTowards1, true, -1);
+ }
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ else {
+ // Acts 2, 3 - should still use a spinner fly-through transition
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play an extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeAway1, true, -1); // available in Acts 2, 3
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
}
diff --git a/engines/bladerunner/script/scene/nr01.cpp b/engines/bladerunner/script/scene/nr01.cpp
index 41a571c5e0..3429870187 100644
--- a/engines/bladerunner/script/scene/nr01.cpp
+++ b/engines/bladerunner/script/scene/nr01.cpp
@@ -462,10 +462,17 @@ void SceneScriptNR01::PlayerWalkedOut() {
&& !Game_Flag_Query(kFlagNR01DektoraFall)
&& !Game_Flag_Query(kFlagChapter4Starting)
) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Outtake_Play(kOuttakeAway1, true, -1);
+#if BLADERUNNER_ORIGINAL_BUGS
+ Outtake_Play(kOuttakeAway1, true, -1);
Outtake_Play(kOuttakeInside2, true, -1);
+#else
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play an extra outtake when going to Tyrell Building
+ // also switch order so inside2 outtake is not last
+ Outtake_Play(kOuttakeInside2, true, -1);
+ Outtake_Play(kOuttakeAway1, true, -1);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
Game_Flag_Reset(kFlagChapter4Starting);
}
diff --git a/engines/bladerunner/script/scene/ps01.cpp b/engines/bladerunner/script/scene/ps01.cpp
index 4ab8f24582..56b9f7289a 100644
--- a/engines/bladerunner/script/scene/ps01.cpp
+++ b/engines/bladerunner/script/scene/ps01.cpp
@@ -288,12 +288,21 @@ void SceneScriptPS01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
- if (!Game_Flag_Query(kflagPS01toPS02)
- && Global_Variable_Query(kVariableChapter) == 1
- ) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Outtake_Play(kOuttakeTowards3, true, -1);
+ if (!Game_Flag_Query(kflagPS01toPS02)) {
+ if (Global_Variable_Query(kVariableChapter) == 1) {
+ Outtake_Play(kOuttakeTowards3, true, -1);
+ }
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ else {
+ // Acts 2, 3 - should still use a spinner fly-through transition
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play an extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeInside2, true, -1); // available in Acts 1, 2, 3
+ Outtake_Play(kOuttakeTowards3, true, -1); // available in Acts 1, 2, 3
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
}
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index a6fb2db5b2..ee7fe5f957 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -698,11 +698,23 @@ void SceneScriptRC01::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Looping_Sounds(1);
if (!Game_Flag_Query(kFlagRC01toRC02)
&& !Game_Flag_Query(kFlagRC01toRC03)
- && Global_Variable_Query(kVariableChapter) == 1
) {
- Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
- Ambient_Sounds_Remove_All_Looping_Sounds(1);
- Outtake_Play(kOuttakeAway2, true, -1);
+ if(Global_Variable_Query(kVariableChapter) == 1) {
+ if (_vm->_cutContent) {
+ Outtake_Play(kOuttakeAscent, true, -1);
+ }
+ Outtake_Play(kOuttakeAway2, true, -1);
+ }
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ else {
+ // Acts 2, 3 - should still use a spinner fly-through transition
+ if (!Game_Flag_Query(kFlagMcCoyInTyrellBuilding)) {
+ // don't play this extra outtake when going to Tyrell Building
+ Outtake_Play(kOuttakeAway1, true, -1); // available in Acts 2, 3
+ }
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
// return 1;
}
diff --git a/engines/bladerunner/script/scene/tb02.cpp b/engines/bladerunner/script/scene/tb02.cpp
index bffea7be46..56cf556a3c 100644
--- a/engines/bladerunner/script/scene/tb02.cpp
+++ b/engines/bladerunner/script/scene/tb02.cpp
@@ -383,6 +383,15 @@ void SceneScriptTB02::PlayerWalkedIn() {
void SceneScriptTB02::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ if (Global_Variable_Query(kVariableChapter) < 4
+ && !Game_Flag_Query(kFlagMcCoyInTyrellBuilding)
+ ) {
+ // Acts 2, 3 - use a spinner fly-through transition
+ Outtake_Play(kOuttakeTowards3, true, -1); // available in Acts 1, 2, 3
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
void SceneScriptTB02::DialogueQueueFlushed(int a1) {
diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp
index 9e5578a907..781e53ee47 100644
--- a/engines/bladerunner/script/scene/tb07.cpp
+++ b/engines/bladerunner/script/scene/tb07.cpp
@@ -90,8 +90,10 @@ bool SceneScriptTB07::ClickedOnItem(int itemId, bool a2) {
bool SceneScriptTB07::ClickedOnExit(int exitId) {
if (exitId == 0) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 68.0f, 12.0f, 288.0f, 0, true, false, 0)) {
+#if BLADERUNNER_ORIGINAL_BUGS
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
+#endif // BLADERUNNER_ORIGINAL_BUGS
if (Global_Variable_Query(kVariableChapter) == 4) {
Game_Flag_Set(kFlagTB07toTB02);
Set_Enter(kSetTB02_TB03, kSceneTB02);
@@ -199,6 +201,18 @@ void SceneScriptTB07::PlayerWalkedIn() {
}
void SceneScriptTB07::PlayerWalkedOut() {
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
+ Ambient_Sounds_Remove_All_Looping_Sounds(1);
+ if (Global_Variable_Query(kVariableChapter) < 4
+ && !Game_Flag_Query(kFlagMcCoyInTyrellBuilding)
+ ) {
+ // Acts 2, 3 - use a spinner fly-through transition
+ Outtake_Play(kOuttakeAway1, true, -1); // available in Acts 2, 3
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
+
}
void SceneScriptTB07::DialogueQueueFlushed(int a1) {