diff options
author | Thanasis Antoniou | 2019-03-26 02:06:33 +0200 |
---|---|---|
committer | Thanasis Antoniou | 2019-03-26 02:08:22 +0200 |
commit | 805dc466d02344a1368181f3cb852771d64a48a9 (patch) | |
tree | 897db2c9fd575c242396916532b5a687d6000c6d /engines/bladerunner/script/scene | |
parent | b3dc3832f7b04ed2c027d7b92deece6244a7f2fd (diff) | |
download | scummvm-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.cpp | 31 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/rc01.cpp | 16 |
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; } |