diff options
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; } |