aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene
diff options
context:
space:
mode:
authorThanasis Antoniou2019-03-26 02:06:33 +0200
committerThanasis Antoniou2019-03-26 02:08:22 +0200
commit805dc466d02344a1368181f3cb852771d64a48a9 (patch)
tree897db2c9fd575c242396916532b5a687d6000c6d /engines/bladerunner/script/scene
parentb3dc3832f7b04ed2c027d7b92deece6244a7f2fd (diff)
downloadscummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.tar.gz
scummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.tar.bz2
scummvm-rg350-805dc466d02344a1368181f3cb852771d64a48a9.zip
BLADERUNNER: Resolve dead end state with Zuben
McCoy should now always be able to gather enough clues to trigger Zuben throwing the soup (via the VK test question if he does not have the Lucy photo clue).
Diffstat (limited to 'engines/bladerunner/script/scene')
-rw-r--r--engines/bladerunner/script/scene/ct02.cpp31
-rw-r--r--engines/bladerunner/script/scene/rc01.cpp16
2 files changed, 46 insertions, 1 deletions
diff --git a/engines/bladerunner/script/scene/ct02.cpp b/engines/bladerunner/script/scene/ct02.cpp
index 0e62302d1d..fbb6a06835 100644
--- a/engines/bladerunner/script/scene/ct02.cpp
+++ b/engines/bladerunner/script/scene/ct02.cpp
@@ -127,9 +127,15 @@ void SceneScriptCT02::dialogueWithZuben() {
DM_Add_To_List_Never_Repeat_Once_Selected(280, 8, 5, 3); // LUCY
}
int evidenceCount = 0;
+#if BLADERUNNER_ORIGINAL_BUGS
if (Actor_Clue_Query(kActorMcCoy, kClueDoorForced2)) {
evidenceCount = 1;
}
+#else
+ if (Actor_Clue_Query(kActorMcCoy, kClueDoorForced2) || Actor_Clue_Query(kActorMcCoy, kClueDoorForced1)) {
+ ++evidenceCount;
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
if (Actor_Clue_Query(kActorMcCoy, kClueLabCorpses)) {
++evidenceCount;
}
@@ -142,9 +148,34 @@ void SceneScriptCT02::dialogueWithZuben() {
if (Actor_Clue_Query(kActorMcCoy, kClueHowieLeeInterview)) {
++evidenceCount;
}
+#if BLADERUNNER_ORIGINAL_BUGS
if (evidenceCount > 3) {
DM_Add_To_List_Never_Repeat_Once_Selected(290, -1, 4, 8); // VOIGT-KAMPFF
}
+#else
+ // There is an original game's dead end state where:
+ // 1. McCoy misses the Lucy Photo (he never gets the photos from Runciter),
+ // 2. misses the kClueDoorForced2 and Leary takes off so the player can't get it any more
+ // 3. the player does not talk to kFlagMcCoyHasOfficersStatement at all, and Leary takes off, so Dino won't give the kClueLabCorpses
+ //
+ // An easy to reproduce scenario is, after the intro:
+ // - McCoy takes the Chrome plate. Does not talk with Leary at all, nor orders the canvassing
+ // - Then, McCoy talks to Runciter until Lucy's desk location is unlocked
+ // - McCoy takes the chopstick wrapper and leaves for Chinatown.
+ //
+ //
+ // Solution:
+ // -. Restore acquiring of kClueDoorForced1 if McCoy visits the rc01 after Leary takes off.
+ // The clue was also acquired in the original, but McCoy did not note he got something
+ // and it was not taken into account for the evidenceCount var.
+ // This clue is now considered as an alternative to kClueDoorForced2
+ // -. Steele will acquire the officer's statement clue if McCoy did not and will upload it to the mainframe
+ // -. Make McCoy able to VK Zuben even in Polite mode
+ //
+ if (evidenceCount > 3) {
+ DM_Add_To_List_Never_Repeat_Once_Selected(290, 0, 4, 8); // VOIGT-KAMPFF
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
Dialogue_Menu_Add_DONE_To_List(300); // DONE
Dialogue_Menu_Appear(320, 240);
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index a371086f81..effe5587a0 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -255,10 +255,24 @@ bool SceneScriptRC01::ClickedOn3DObject(const char *objectName, bool a2) {
Actor_Says(kActorOfficerLeary, 0, 12);
Actor_Says(kActorMcCoy, 4495, 13);
Actor_Clue_Acquire(kActorMcCoy, kClueDoorForced2, true, kActorOfficerLeary);
- } else {
+ }
+#if BLADERUNNER_ORIGINAL_BUGS
+#else
+ else if (!Actor_Clue_Query(kActorMcCoy, kClueDoorForced2) && !Actor_Clue_Query(kActorMcCoy, kClueDoorForced1) && !Actor_Query_In_Set(kActorOfficerLeary, kSetRC01) && Global_Variable_Query(kVariableChapter) == 1) {
+#if BLADERUNNER_RESTORED_CUT_CONTENT
+ Actor_Voice_Over(1870, kActorVoiceOver);
+#else
+ Actor_Says(kActorMcCoy, 8570, 14);
+#endif // BLADERUNNER_RESTORED_CUT_CONTENT
+ Actor_Clue_Acquire(kActorMcCoy, kClueDoorForced1, true, -1);
+ }
+#endif // BLADERUNNER_ORIGINAL_BUGS
+ else {
Actor_Says(kActorMcCoy, 8570, 14);
}
+#if BLADERUNNER_ORIGINAL_BUGS
Actor_Clue_Acquire(kActorMcCoy, kClueDoorForced1, true, -1);
+#endif // BLADERUNNER_ORIGINAL_BUGS
}
return true;
}