aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-05 22:40:57 +0300
committerThanasis Antoniou2019-05-06 12:43:33 +0300
commit258a71b060991d84ef881d279e4be65d86312523 (patch)
tree0b21026fe7830f106b3fd36388f9a27a576d4d74 /engines/bladerunner
parent4a2d7269f43bcdd09d2ad42833243f9b1afd2462 (diff)
downloadscummvm-rg350-258a71b060991d84ef881d279e4be65d86312523.tar.gz
scummvm-rg350-258a71b060991d84ef881d279e4be65d86312523.tar.bz2
scummvm-rg350-258a71b060991d84ef881d279e4be65d86312523.zip
BLADERUNNER: Restore fans comment in BB11 only
And some small preparation (comments) for restoring Rachael scenes
Diffstat (limited to 'engines/bladerunner')
-rw-r--r--engines/bladerunner/game_constants.h4
-rw-r--r--engines/bladerunner/script/ai/free_slot_b.cpp2
-rw-r--r--engines/bladerunner/script/ai/guzza.cpp4
-rw-r--r--engines/bladerunner/script/ai/officer_grayford.cpp4
-rw-r--r--engines/bladerunner/script/ai/rachael.cpp185
-rw-r--r--engines/bladerunner/script/ai/steele.cpp4
-rw-r--r--engines/bladerunner/script/scene/bb11.cpp15
7 files changed, 120 insertions, 98 deletions
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;
}