From 258a71b060991d84ef881d279e4be65d86312523 Mon Sep 17 00:00:00 2001 From: Thanasis Antoniou Date: Sun, 5 May 2019 22:40:57 +0300 Subject: BLADERUNNER: Restore fans comment in BB11 only And some small preparation (comments) for restoring Rachael scenes --- engines/bladerunner/game_constants.h | 4 +- engines/bladerunner/script/ai/free_slot_b.cpp | 2 +- engines/bladerunner/script/ai/guzza.cpp | 4 +- engines/bladerunner/script/ai/officer_grayford.cpp | 4 +- engines/bladerunner/script/ai/rachael.cpp | 185 +++++++++++---------- engines/bladerunner/script/ai/steele.cpp | 4 +- engines/bladerunner/script/scene/bb11.cpp | 15 ++ 7 files changed, 120 insertions(+), 98 deletions(-) (limited to 'engines/bladerunner') diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 44acb5c3e4..8c99747806 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -366,7 +366,7 @@ enum Clues { kClueChinaBar = 260, kCluePlasticExplosive = 261, kClueDogCollar2 = 262, - kClueKingstonKitchenBox2 = 263, + kClueKingstonKitchenBox2 = 263, // ESPER hard-copy kClueCrystalsCigarette = 264, kClueSpinnerKeys = 265, kClueAct2Ended = 266, @@ -1126,7 +1126,7 @@ enum Flags { kFlagHF05PoliceAttacked = 684, kFlagClovisLyingDown = 685, kFlagNotUsed686 = 686, - // 687 is never used + kFlagMcCoyCommentsOnFans = 687, // Re-purposed. Original: 687 is never used kFlagPS05TV0 = 688, kFlagPS05TV1 = 689, kFlagPS05TV2 = 690, diff --git a/engines/bladerunner/script/ai/free_slot_b.cpp b/engines/bladerunner/script/ai/free_slot_b.cpp index cbaecb0ac3..79eeea3cb5 100644 --- a/engines/bladerunner/script/ai/free_slot_b.cpp +++ b/engines/bladerunner/script/ai/free_slot_b.cpp @@ -139,7 +139,7 @@ void AIScriptFreeSlotB::ClickedByPlayer() { if (Actor_Query_Goal_Number(kActorFreeSlotB) != 599) return; //false; - Actor_Face_Actor(kActorMcCoy, kActorFreeSlotB, 1); + Actor_Face_Actor(kActorMcCoy, kActorFreeSlotB, true); if (Random_Query(1, 2) == 1) { Actor_Says(kActorMcCoy, 8655, 16); } else { diff --git a/engines/bladerunner/script/ai/guzza.cpp b/engines/bladerunner/script/ai/guzza.cpp index 5c36beea1b..cc3ed50df0 100644 --- a/engines/bladerunner/script/ai/guzza.cpp +++ b/engines/bladerunner/script/ai/guzza.cpp @@ -113,12 +113,12 @@ void AIScriptGuzza::ClickedByPlayer() { } //TODO: test this, looks like a bug in game if (Random_Query(1, 4) == 1) { - AI_Movement_Track_Pause(4); + AI_Movement_Track_Pause(kActorGuzza); Actor_Says(kActorMcCoy, 4005, 15); Actor_Says(kActorGuzza, 780, -1); AI_Movement_Track_Unpause(kActorGuzza); } else if (Random_Query(1, 4) == 2) { - AI_Movement_Track_Pause(4); + AI_Movement_Track_Pause(kActorGuzza); Actor_Says(kActorMcCoy, 3970, 14); Actor_Says(kActorGuzza, 780, -1); AI_Movement_Track_Unpause(kActorGuzza); diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp index 7f502cd6db..3c54790335 100644 --- a/engines/bladerunner/script/ai/officer_grayford.cpp +++ b/engines/bladerunner/script/ai/officer_grayford.cpp @@ -385,7 +385,7 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { _animationState = 37; _animationFrame = 0; } - Actor_Face_Actor(kActorOfficerGrayford, kActorMcCoy, 1); + Actor_Face_Actor(kActorOfficerGrayford, kActorMcCoy, true); Actor_Says(kActorOfficerGrayford, 190, 19); Actor_Set_Goal_Number(kActorOfficerGrayford, 105); break; @@ -535,7 +535,7 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb Player_Gains_Control(); if (Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiDead) { - Actor_Face_Actor(kActorOfficerGrayford, kActorMoraji, 1); + Actor_Face_Actor(kActorOfficerGrayford, kActorMoraji, true); } else { Actor_Face_Waypoint(kActorOfficerGrayford, 97, 1); } diff --git a/engines/bladerunner/script/ai/rachael.cpp b/engines/bladerunner/script/ai/rachael.cpp index 20a4578ed4..5045769a3b 100644 --- a/engines/bladerunner/script/ai/rachael.cpp +++ b/engines/bladerunner/script/ai/rachael.cpp @@ -57,10 +57,10 @@ void AIScriptRachael::ReceivedClue(int clueId, int fromActorId) { void AIScriptRachael::ClickedByPlayer() { if (Actor_Query_Goal_Number(kActorRachael) == 305) { - Actor_Face_Actor(kActorMcCoy, kActorRachael, 1); - Actor_Says(kActorMcCoy, 2730, 12); - AI_Movement_Track_Pause(57); - dialogue_start(); + Actor_Face_Actor(kActorMcCoy, kActorRachael, true); + Actor_Says(kActorMcCoy, 2730, 12); // "Rachael, right?" + AI_Movement_Track_Pause(kActorRachael); + dialogue_start(); // "I remember you mr McCoy" till "I'm fine, thank you for asking." if (Player_Query_Agenda() == kPlayerAgendaSurly || Player_Query_Agenda() == kPlayerAgendaErratic) { dialogue_agenda2(); @@ -75,7 +75,7 @@ void AIScriptRachael::ClickedByPlayer() { } Actor_Set_Goal_Number(kActorRachael, 306); - AI_Movement_Track_Unpause(57); + AI_Movement_Track_Unpause(kActorRachael); } } @@ -121,12 +121,20 @@ bool AIScriptRachael::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 300: + // Presumably Rachael's goal is set to 300 + // a) when Chapter 3 starts if McCoy met Rachael at Tyrell's during Chapter 2 + // OR b) after he has met her at Tyrell's if he makes the appointment during Chapter 3 + // It's unlikely to be connected to random chance + // + // This puts Rachael outside McCoy's building Actor_Put_In_Set(kActorRachael, kSetMA07); Actor_Set_At_XYZ(kActorRachael, -8.09f, -162.8f, 135.33f, 544); break; case 305: + // Rachael's goal is set to 305 when the player walks in the MA07 scene and if her goal is already 300 AI_Movement_Track_Flush(kActorRachael); + // This makes Rachael (who is right outside McCoy's building) head towards the Police Station (left) AI_Movement_Track_Append(kActorRachael, 468, 0); AI_Movement_Track_Append(kActorRachael, 39, 0); AI_Movement_Track_Repeat(kActorRachael); @@ -337,103 +345,102 @@ void AIScriptRachael::FledCombat() { } void AIScriptRachael::dialogue_start() { - Actor_Face_Actor(kActorRachael, kActorMcCoy, 1); - Loop_Actor_Walk_To_Actor(kActorRachael, kActorMcCoy, 84, 0, 0); - Actor_Says(kActorRachael, 0, 15); + Loop_Actor_Walk_To_Actor(kActorRachael, kActorMcCoy, 84, 0, false); + Actor_Says(kActorRachael, 0, 15); // I remember you mr mcCoy Actor_Says(kActorMcCoy, 2740, 13); Actor_Says(kActorRachael, 10, 14); Actor_Says(kActorMcCoy, 2745, 13); - Actor_Says(kActorRachael, 20, 12); - Actor_Says_With_Pause(kActorMcCoy, 2750, 1.5f, 3); - Actor_Says(kActorRachael, 30, 13); - Actor_Says(kActorRachael, 40, 15); + Actor_Says(kActorRachael, 20, 12); // perhaps none of your business + Actor_Says_With_Pause(kActorMcCoy, 2750, 1.5f, 3); // ok I get the picture (also assumed that here goes 2755: are you alright?) + Actor_Says(kActorRachael, 30, 13); // certainly had better days but i'm fine + Actor_Says(kActorRachael, 40, 15); // Thank you for asking } void AIScriptRachael::dialogue_agenda1() { - Actor_Says(kActorMcCoy, 2795, 13); - Actor_Says(kActorRachael, 140, 15); - Actor_Says(kActorMcCoy, 2800, 12); - Actor_Says(kActorRachael, 150, 16); - Actor_Says(kActorMcCoy, 2805, 18); - Actor_Says(kActorRachael, 160, 14); - Actor_Says(kActorRachael, 170, 13); - Actor_Says(kActorMcCoy, 2810, 14); - Actor_Says(kActorRachael, 180, 13); - Actor_Says(kActorMcCoy, 2815, 12); - Actor_Says(kActorMcCoy, 2820, 13); - Actor_Says(kActorRachael, 190, 15); - Actor_Says(kActorMcCoy, 2825, 12); - Actor_Says(kActorRachael, 200, 15); - Actor_Says(kActorMcCoy, 2830, 14); - Actor_Says(kActorRachael, 210, 15); - Actor_Says(kActorRachael, 220, 16); - Actor_Says(kActorMcCoy, 2835, 13); - Actor_Says(kActorRachael, 230, 14); - Actor_Says(kActorMcCoy, 2840, 12); - Actor_Says(kActorRachael, 240, 13); - Actor_Says(kActorRachael, 250, 15); - Actor_Says(kActorRachael, 260, 16); - Actor_Says(kActorMcCoy, 2845, 13); - Actor_Says(kActorRachael, 270, 13); - Actor_Says(kActorRachael, 280, 14); - Actor_Says(kActorMcCoy, 2850, 13); - Actor_Says(kActorRachael, 290, 14); - Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); - Actor_Says(kActorMcCoy, 2860, 14); + Actor_Says(kActorMcCoy, 2795, 13); // You are upset + Actor_Says(kActorRachael, 140, 15); // How observant + Actor_Says(kActorMcCoy, 2800, 12); // Whats the matter good listener + Actor_Says(kActorRachael, 150, 16); // ImSureYouAreMrMcCoyDontFeelLike + Actor_Says(kActorMcCoy, 2805, 18); // DidYourUncleSaySomethingToYou + Actor_Says(kActorRachael, 160, 14); // HeCanBeSoCruel + Actor_Says(kActorRachael, 170, 13); // HereIAmPouringMyHeartOut + Actor_Says(kActorMcCoy, 2810, 14); // NotHowILookAtIt + Actor_Says(kActorRachael, 180, 13); // GotToLiveWithYourself + Actor_Says(kActorMcCoy, 2815, 12); // NotSomeKillingMachineRachael + Actor_Says(kActorMcCoy, 2820, 13); // + Actor_Says(kActorRachael, 190, 15); // WhyDontYouQuitThen + Actor_Says(kActorMcCoy, 2825, 12); // SomeoneWouldJustTakeMyPlace + Actor_Says(kActorRachael, 200, 15); // SoMuchForIntegrity + Actor_Says(kActorMcCoy, 2830, 14); // ItsNotThat + Actor_Says(kActorRachael, 210, 15); // ItsTheMoneyThen + Actor_Says(kActorRachael, 220, 16); // ImSoFedUpWithAllOfIt + Actor_Says(kActorMcCoy, 2835, 13); // IveThinkingAboutTheTreatmentOfReps + Actor_Says(kActorRachael, 230, 14); // BravoShouldWeCallThePressConf + Actor_Says(kActorMcCoy, 2840, 12); // MaybeTheyVeGottenARawDeal + Actor_Says(kActorRachael, 240, 13); // ImagineSomebodyEngineeringYourMind + Actor_Says(kActorRachael, 250, 15); // PuttingWhateverThoughtsAndMemories + Actor_Says(kActorRachael, 260, 16); // NothingInThisWorldWouldBelongToyou + Actor_Says(kActorMcCoy, 2845, 13); // No + Actor_Says(kActorRachael, 270, 13); // ThinkAboutItMcCoy + Actor_Says(kActorRachael, 280, 14); // MaybeYouArentSoDifferentFromThoseRepsAfterAll + Actor_Says(kActorMcCoy, 2850, 13); // ISupposeAllRepsInOneWayOrAnother + Actor_Says(kActorRachael, 290, 14); // ThatsRight + Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy + (isn't this your floor - missing?) + Actor_Says(kActorMcCoy, 2860, 14); // YouTakeCareOfYourself } void AIScriptRachael::dialogue_agenda2() { - Actor_Says(kActorRachael, 50, 15); - Actor_Says(kActorMcCoy, 2765, 16); - Actor_Says(kActorMcCoy, 2770, 17); - Actor_Says(kActorRachael, 60, 14); - Actor_Says(kActorMcCoy, 2775, 16); - Actor_Says(kActorRachael, 70, 13); - Actor_Says(kActorRachael, 80, 14); - Actor_Says(kActorRachael, 90, 15); - Actor_Says(kActorMcCoy, 2780, 17); - Actor_Says(kActorRachael, 100, 16); - Actor_Says(kActorRachael, 110, 15); - Actor_Says(kActorMcCoy, 2785, 17); - Actor_Says(kActorRachael, 120, 13); - Actor_Says(kActorMcCoy, 2790, 16); - Actor_Says(kActorRachael, 130, 14); - Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); - Actor_Says(0, 2860, 14); + Actor_Says(kActorRachael, 50, 15); // I don't think he'd appreciate being called that + Actor_Says(kActorMcCoy, 2765, 16); // Oh i'm sure brilliant man + Actor_Says(kActorMcCoy, 2770, 17); // anyone who could create nexus -6 + Actor_Says(kActorRachael, 60, 14); // keeping people like you employed + Actor_Says(kActorMcCoy, 2775, 16); // IdJustAsSoonNotDoThisJob + Actor_Says(kActorRachael, 70, 13); // do you really expect me to believe that + Actor_Says(kActorRachael, 80, 14); // ISawThatLookInYourEye + Actor_Says(kActorRachael, 90, 15); // LikeNothingButToKillInnocentPeople + Actor_Says(kActorMcCoy, 2780, 17); // ReplicantsArentPeople + Actor_Says(kActorRachael, 100, 16); // CertainlyAreMoreInnocentThanMostPeople + Actor_Says(kActorRachael, 110, 15); // TheyDidntAskToBeBroughtIntoThisWorld + Actor_Says(kActorMcCoy, 2785, 17); // NobodyDoes + Actor_Says(kActorRachael, 120, 13); // ThatsRightAndNobodyHasALicenseTokillHumans + Actor_Says(kActorMcCoy, 2790, 16); // Aha + Actor_Says(kActorRachael, 130, 14); // ButReplicantsHowHumain + Actor_Says_With_Pause(kActorRachael, 300, 1.0f, 3); // GoodbyeMcCoy + (isn't this your floor - missing?) + Actor_Says(kActorMcCoy, 2860, 14); // YouTakeCareOfYourself } // Not used in the game void AIScriptRachael::dialogue_agenda3() { - Actor_Says(kActorMcCoy, 2865, 3); - Actor_Says(kActorRachael, 320, 3); - Actor_Says(kActorRachael, 330, 3); - Actor_Says(kActorMcCoy, 2870, 3); - Actor_Says(kActorRachael, 340, 3); - Actor_Says(kActorMcCoy, 2875, 3); - Actor_Says(kActorRachael, 350, 3); - Actor_Says(kActorMcCoy, 2880, 3); - Actor_Says(kActorMcCoy, 2885, 3); - Actor_Says(kActorRachael, 360, 3); - Actor_Says(kActorRachael, 370, 3); - Actor_Says(kActorMcCoy, 2890, 3); - Actor_Says(kActorRachael, 380, 3); - Actor_Says(kActorRachael, 390, 3); - Actor_Says(kActorRachael, 400, 3); - Actor_Says(kActorMcCoy, 2895, 3); - Actor_Says(kActorRachael, 410, 3); - Actor_Says(kActorMcCoy, 2900, 3); - Actor_Says(kActorRachael, 420, 3); - Actor_Says(kActorMcCoy, 2905, 3); - Actor_Says(kActorRachael, 430, 3); - Actor_Says(kActorRachael, 440, 3); - Actor_Says(kActorMcCoy, 2910, 3); - Actor_Says(kActorMcCoy, 2920, 3); - Actor_Says(kActorRachael, 450, 3); - Actor_Says(kActorMcCoy, 2925, 3); - Actor_Says(kActorMcCoy, 2930, 3); - Actor_Says(kActorRachael, 460, 3); - Actor_Says(kActorMcCoy, 2935, 3); - Actor_Says(kActorRachael, 470, 3); + Actor_Says(kActorMcCoy, 2865, 3); // Lobby + Actor_Says(kActorRachael, 320, 3); // McCoy + Actor_Says(kActorRachael, 330, 3); // RachaelRememberMe + Actor_Says(kActorMcCoy, 2870, 3); // Jesus DontKnowWhatIRememberAnyMore + Actor_Says(kActorRachael, 340, 3); // NowYouLookInTrouble + Actor_Says(kActorMcCoy, 2875, 3); // Saw me here before + Actor_Says(kActorRachael, 350, 3); // YesWhatHappened + Actor_Says(kActorMcCoy, 2880, 3); // Suddenly + Actor_Says(kActorMcCoy, 2885, 3); // MyAnimalMaggiePrizedPosessionDisappeared-Elevator-Rachael + Actor_Says(kActorRachael, 360, 3); // ImSorry + Actor_Says(kActorRachael, 370, 3); // IKnowTheFeeling + Actor_Says(kActorMcCoy, 2890, 3); // You do? + Actor_Says(kActorRachael, 380, 3); // EverythingWeBelieve + Actor_Says(kActorRachael, 390, 3); // WhatIsReality + Actor_Says(kActorRachael, 400, 3); // MaybeAllSomeoneElsesFantasy + Actor_Says(kActorMcCoy, 2895, 3); // That would make us a fantasy + Actor_Says(kActorRachael, 410, 3); // ThatsRightAndInTheBlinkOfAnEyeGoesAway + Actor_Says(kActorMcCoy, 2900, 3); // But just yesterday + Actor_Says(kActorRachael, 420, 3); // YesterdayTwoMonthsAgo + Actor_Says(kActorMcCoy, 2905, 3); // ButIfWeBothRemembered-Elevator-Rachael + Actor_Says(kActorRachael, 430, 3); // CopiesOnlyCopies + Actor_Says(kActorRachael, 440, 3); // OnlyThingWeCanTrustIsNow + Actor_Says(kActorMcCoy, 2910, 3); // NotLosingMyMindEscapedReplicant-Elevator-Rachael + Actor_Says(kActorMcCoy, 2920, 3); // SomeoneSettingMeUpUsingMe-Elevator-Rachael + Actor_Says(kActorRachael, 450, 3); // NothingWrongWithAcceptingWhatYouAre + Actor_Says(kActorMcCoy, 2925, 3); // NotAReplicantGoddamnit-Elevator-Rachael + Actor_Says(kActorMcCoy, 2930, 3); // MaybeYouCanHelpMeYouAreTyrellsNiece-Elevator-Rachael + Actor_Says(kActorRachael, 460, 3); // Why not take that V-K test + Actor_Says(kActorMcCoy, 2935, 3); // YeahGoodIdeaMaybeIllDoThat-Elevator-Rachael + Actor_Says(kActorRachael, 470, 3); // Hope you get the answers looking for McCoy. } } // End of namespace BladeRunner diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp index 7569157ace..7d2793929e 100644 --- a/engines/bladerunner/script/ai/steele.cpp +++ b/engines/bladerunner/script/ai/steele.cpp @@ -364,7 +364,7 @@ void AIScriptSteele::ClickedByPlayer() { return; //true; } - AI_Movement_Track_Pause(1); + AI_Movement_Track_Pause(kActorSteele); Actor_Face_Actor(kActorSteele, kActorMcCoy, true); Actor_Face_Actor(kActorMcCoy, kActorSteele, true); @@ -384,7 +384,7 @@ void AIScriptSteele::ClickedByPlayer() { Actor_Says(kActorSteele, 1750, 15); break; } - AI_Movement_Track_Unpause(1); + AI_Movement_Track_Unpause(kActorSteele); return; //false; } diff --git a/engines/bladerunner/script/scene/bb11.cpp b/engines/bladerunner/script/scene/bb11.cpp index 1bef99f04c..155325769a 100644 --- a/engines/bladerunner/script/scene/bb11.cpp +++ b/engines/bladerunner/script/scene/bb11.cpp @@ -28,6 +28,10 @@ void SceneScriptBB11::InitializeScene() { Setup_Scene_Information(43.39f, -10.27f, -20.52f, 200); if (!Game_Flag_Query(kFlagBB11SadikFight)) { Scene_Exit_Add_2D_Exit(0, 280, 154, 388, 247, 2); + if (_vm->_cutContent && !Game_Flag_Query(kFlagMcCoyCommentsOnFans)) { + Scene_2D_Region_Add(0, 454, 1, 639, 228);// right fans + Scene_2D_Region_Add(1, 1, 1, 240, 375); // left fans + } } Ambient_Sounds_Add_Looping_Sound(kSfxROOFRAN1, 90, 0, 1); @@ -97,6 +101,17 @@ bool SceneScriptBB11::ClickedOnExit(int exitId) { } bool SceneScriptBB11::ClickedOn2DRegion(int region) { + if (_vm->_cutContent) { + if (!Game_Flag_Query(kFlagMcCoyCommentsOnFans) && (region == 0 || region == 1) ) { + Game_Flag_Set(kFlagMcCoyCommentsOnFans); + Actor_Face_Heading(kActorMcCoy, 550, false); + Actor_Voice_Over(3740, kActorVoiceOver); + Actor_Voice_Over(3750, kActorVoiceOver); + Scene_2D_Region_Remove(0); + Scene_2D_Region_Remove(1); + return true; + } + } return false; } -- cgit v1.2.3