From ac40449699c355c235b76182dbde3de9a70af47d Mon Sep 17 00:00:00 2001 From: antoniou79 Date: Fri, 16 Aug 2019 23:56:46 +0300 Subject: BLADERUNNER: Restored - Dino gets clues properly He gets them from the mainframe as indicated by the game's manual --- engines/bladerunner/script/ai/klein.cpp | 52 +++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 22 deletions(-) (limited to 'engines/bladerunner/script/ai') diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp index 66d8801555..943995726a 100644 --- a/engines/bladerunner/script/ai/klein.cpp +++ b/engines/bladerunner/script/ai/klein.cpp @@ -53,25 +53,27 @@ bool AIScriptKlein::Update() { // The following if-clauses and flags circumvent the manual's explicit instruction that McCoy should upload his clues // on the Mainframe, so that Dino Klein can acquire them. - if (Actor_Clue_Query(kActorMcCoy, kClueOfficersStatement) - && !Game_Flag_Query(kFlagMcCoyHasOfficersStatement) - ) { - Game_Flag_Set(kFlagMcCoyHasOfficersStatement); - } - if (Actor_Clue_Query(kActorMcCoy, kCluePaintTransfer) - && !Game_Flag_Query(kFlagMcCoyHasPaintTransfer) - ) { - Game_Flag_Set(kFlagMcCoyHasPaintTransfer); - } - if (Actor_Clue_Query(kActorMcCoy, kClueShellCasings) - && !Game_Flag_Query(kFlagMcCoyHasShellCasings) - ) { - Game_Flag_Set(kFlagMcCoyHasShellCasings); - } - if (Actor_Clue_Query(kActorMcCoy, kClueChromeDebris) - && !Game_Flag_Query(kFlagMcCoyHasChromeDebris) - ) { - Game_Flag_Set(kFlagMcCoyHasChromeDebris); + if (!_vm->_cutContent) { + if (Actor_Clue_Query(kActorMcCoy, kClueOfficersStatement) + && !Game_Flag_Query(kFlagMcCoyHasOfficersStatement) + ) { + Game_Flag_Set(kFlagMcCoyHasOfficersStatement); + } + if (Actor_Clue_Query(kActorMcCoy, kCluePaintTransfer) + && !Game_Flag_Query(kFlagMcCoyHasPaintTransfer) + ) { + Game_Flag_Set(kFlagMcCoyHasPaintTransfer); + } + if (Actor_Clue_Query(kActorMcCoy, kClueShellCasings) + && !Game_Flag_Query(kFlagMcCoyHasShellCasings) + ) { + Game_Flag_Set(kFlagMcCoyHasShellCasings); + } + if (Actor_Clue_Query(kActorMcCoy, kClueChromeDebris) + && !Game_Flag_Query(kFlagMcCoyHasChromeDebris) + ) { + Game_Flag_Set(kFlagMcCoyHasChromeDebris); + } } // The following deals with the case that Klein gets annoyed by McCoy and how he recovers from that @@ -79,6 +81,7 @@ bool AIScriptKlein::Update() { && Actor_Query_Friendliness_To_Other(kActorKlein, kActorMcCoy) < 35 && !Game_Flag_Query(kFlagPS07KleinInsulted) ) { + // kActorTimerAIScriptCustomTask2 causes the "Klein is annoyed dialogue" to occur after 5 seconds AI_Countdown_Timer_Reset(kActorKlein, kActorTimerAIScriptCustomTask2); AI_Countdown_Timer_Start(kActorKlein, kActorTimerAIScriptCustomTask2, 5); Game_Flag_Set(kFlagPS07KleinInsulted); @@ -219,17 +222,22 @@ bool AIScriptKlein::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case kGoalKleinIsAnnoyedByMcCoyInit: AI_Movement_Track_Flush(kActorKlein); - AI_Movement_Track_Append(kActorKlein, 32, 5); // kSetPS07 + AI_Movement_Track_Append(kActorKlein, 32, 5); // kSetPS07 (hidden spot) AI_Movement_Track_Repeat(kActorKlein); break; case kGoalKleinIsAnnoyedByMcCoy01: AI_Movement_Track_Flush(kActorKlein); - AI_Movement_Track_Append(kActorKlein, 35, 60); // kSetFreeSlotC + if (_vm->_cutContent) { + AI_Movement_Track_Append(kActorKlein, 35, Random_Query(8, 18)); // kSetFreeSlotC + } else { + // this never really gets triggered in the original game + AI_Movement_Track_Append(kActorKlein, 35, 60); // kSetFreeSlotC + } AI_Movement_Track_Repeat(kActorKlein); break; case kGoalKleinIsAnnoyedByMcCoy02: AI_Movement_Track_Flush(kActorKlein); - AI_Movement_Track_Append(kActorKlein, 32, 5); // kSetPS07 + AI_Movement_Track_Append(kActorKlein, 32, 5); // kSetPS07 (hidden spot) AI_Movement_Track_Repeat(kActorKlein); break; case kGoalKleinIsAnnoyedByMcCoyFinal: -- cgit v1.2.3