diff options
-rw-r--r-- | engines/bladerunner/game_constants.h | 30 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/generic_walker_a.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/generic_walker_b.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/generic_walker_c.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/lucy.cpp | 23 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/officer_leary.cpp | 6 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/transient.cpp | 6 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/zuben.cpp | 15 | ||||
-rw-r--r-- | engines/bladerunner/script/init_script.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/hf01.cpp | 12 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/hf05.cpp | 98 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/hf06.cpp | 26 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/hf07.cpp | 8 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ma04.cpp | 16 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ug01.cpp | 2 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ug05.cpp | 85 | ||||
-rw-r--r-- | engines/bladerunner/script/scene_script.h | 14 |
17 files changed, 188 insertions, 161 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 2686993a95..85481a8d77 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -807,7 +807,8 @@ enum Flags { kFlagBB12toBB07 = 365, kFlagAR02InsectDealerTalk = 366, kFlagAR02StungByScorpion = 367, - + kFlagHF07Hole = 368, + kFlagHF05Hole = 369, kFlagNotUsed370 = 370, // is never checked // 371 is never used // 372 is never used @@ -960,6 +961,7 @@ enum Flags { kFlagTB06DogCollarTaken = 519, kFlagTB06KitchenBoxTaken = 520, kFlagHC03TrapDoorOpened = 521, + kFlagUG05TalkAboutTunnel = 522, kFlagMutantsActive = 523, kFlagUG06Chapter4Started = 524, kFlagCT10Entered = 525, @@ -996,7 +998,7 @@ enum Flags { kFlagUG16LutherLanceTalk1 = 556, kFlagNotUsed557, // is never checked kFlagDR01toCT11 = 558, - + kFlagHF06SteelInterruption = 559, kFlagLutherLanceIsReplicant = 560, kFlagNR02GordoLeaveLighter = 561, kFlagHF05CrazyLegsTalk1 = 562, @@ -1099,7 +1101,9 @@ enum Flags { kFlagNR11BreakWindow = 659, kFlagDNARowAvailableTalk = 660, kFlagTB07ShadeDown = 661, // is never set - + kFlagHF01TalkToLovedOne = 662, + kFlagHF05PoliceArrived = 663, + kFlagUG07PoliceLeave = 664, kFlagUG19Available = 665, kFlagMcCoyFreedOfAccusations = 666, // 667 is never used @@ -1118,6 +1122,8 @@ enum Flags { kFlagChapter4Intro = 680, // 681 is never used kFlagUG15BridgeBroken = 682, + kFlagUG05TalkToPolice = 683, + kFlagHF05PoliceAttacked = 684, kFlagClovisLyingDown = 685, kFlagNotUsed686 = 686, // 687 is never used @@ -1132,9 +1138,9 @@ enum Flags { kFlagKP07ReplicantsAttackMcCoy = 696, kFlagKP07McCoyPulledGun = 697, kFlagUG15LanceLuthorTrade = 698, - + kFlagTalkToZuben = 699, // 700 is never used - + kFlagMcCoyAttackedLucy = 701, kFlagBulletBobDead = 702, kFlagUG18BriefcaseTaken = 703, kFlagRC02EnteredChapter4 = 704, @@ -1149,7 +1155,7 @@ enum Flags { kFlagDR04McCoyShotMoraji = 713, kFlagMcCoyAttackedReplicants = 714, kFlagDR06UnlockedToUG16 = 715, - + kFlagUG13HomelessLayingdown = 716, kFlagRC04BobTalk3 = 717, kflagPS01toPS02 = 718, kFlagCT02McCoyFell = 719, @@ -1187,7 +1193,7 @@ enum Variables { kVariableGenericWalkerAModel = 32, kVariableGenericWalkerBModel = 33, kVariableGenericWalkerCModel = 34, - + kVariableGenericWalkerConfig = 35, // has no use kVariableBB10ShelvesAvailable = 36, kVariableWalkLoopActor = 37, kVariableWalkLoopRun = 38, @@ -1356,7 +1362,7 @@ enum Scenes { kSceneNR06 = 59, // Nightclub Row - Early Q's - Empty dressing room kSceneNR07 = 60, // Nightclub Row - Early Q's - Dektora's dressing room kSceneNR08 = 61, // Nightclub Row - Early Q's - Stage - kSceneNR09 = 62, // Nightclub Row - Early Q's - Upstairs + kSceneNR09 = 62, // Nightclub Row - Early Q's - Balcony kSceneNR10 = 63, // Nightclub Row - Early Q's - Projector room kSceneNR11 = 64, // Nightclub Row - Early Q's - Loft kScenePS01 = 65, // Police Station - Roof @@ -1820,6 +1826,7 @@ enum GoalSteele { kGoalSteeleStartChapter4 = 300, // chapter 5 kGoalSteeleStartChapter5 = 400, + kGoalSteeleHF06Attack = 402, // has no use // kGoalSteeleKP03WillShootMcCoy = 410, kGoalSteeleKP03Walk = 411, kGoalSteeleKP03StopWalking = 412, @@ -1974,6 +1981,7 @@ enum GoalClovis { enum GoalLucy { kGoalLucyDefault = 0, + // chapter 3 kGoalLucyMoveAround = 200, kGoalLucyWillReturnToHF03 = 201, kGoalLucyGoToHF03 = 205, @@ -1996,6 +2004,12 @@ enum GoalLucy { kGoalLucyHF04WalkAway = 239, kGoalLucyReturnToHF03 = 250, kGoalLucyHF03RanAway = 299, + // chapter 4 + kGoalLucyStartChapter4 = 300, + kGoalLucyUG01Wait = 310, + kGoalLucyUG01VoightKampff = 311, + kGoalLucyUG01RunAway = 312, + kGoalLucyGone = 599 }; diff --git a/engines/bladerunner/script/ai/generic_walker_a.cpp b/engines/bladerunner/script/ai/generic_walker_a.cpp index c747251f90..32a66e62d9 100644 --- a/engines/bladerunner/script/ai/generic_walker_a.cpp +++ b/engines/bladerunner/script/ai/generic_walker_a.cpp @@ -343,7 +343,7 @@ void AIScriptGenericWalkerA::movingUpdate() { } bool AIScriptGenericWalkerA::prepareWalker() { - if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(35) < 0 || !preparePath()) { + if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(kVariableGenericWalkerConfig) < 0 || !preparePath()) { return false; } diff --git a/engines/bladerunner/script/ai/generic_walker_b.cpp b/engines/bladerunner/script/ai/generic_walker_b.cpp index 2a6c3a1732..3bda0cfe55 100644 --- a/engines/bladerunner/script/ai/generic_walker_b.cpp +++ b/engines/bladerunner/script/ai/generic_walker_b.cpp @@ -319,7 +319,7 @@ void AIScriptGenericWalkerB::movingUpdate() { } bool AIScriptGenericWalkerB::prepareWalker() { - if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(35) < 0 || !preparePath()) { + if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(kVariableGenericWalkerConfig) < 0 || !preparePath()) { return false; } diff --git a/engines/bladerunner/script/ai/generic_walker_c.cpp b/engines/bladerunner/script/ai/generic_walker_c.cpp index 5c0478c645..99c07368b1 100644 --- a/engines/bladerunner/script/ai/generic_walker_c.cpp +++ b/engines/bladerunner/script/ai/generic_walker_c.cpp @@ -320,7 +320,7 @@ void AIScriptGenericWalkerC::movingUpdate() { } bool AIScriptGenericWalkerC::prepareWalker() { - if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(35) < 2 || !preparePath()) { + if (Game_Flag_Query(kFlagGenericWalkerWaiting) || Global_Variable_Query(kVariableGenericWalkerConfig) < 2 || !preparePath()) { return false; } diff --git a/engines/bladerunner/script/ai/lucy.cpp b/engines/bladerunner/script/ai/lucy.cpp index 41e127fa02..3b37bd6008 100644 --- a/engines/bladerunner/script/ai/lucy.cpp +++ b/engines/bladerunner/script/ai/lucy.cpp @@ -55,9 +55,9 @@ bool AIScriptLucy::Update() { } if (Global_Variable_Query(kVariableChapter) == 4 - && Actor_Query_Goal_Number(kActorLucy) < 300 + && Actor_Query_Goal_Number(kActorLucy) < kGoalLucyStartChapter4 ) { - Actor_Set_Goal_Number(kActorLucy, 300); + Actor_Set_Goal_Number(kActorLucy, kGoalLucyStartChapter4); } if (Global_Variable_Query(kVariableChapter) == 4 @@ -83,7 +83,7 @@ bool AIScriptLucy::Update() { && Actor_Query_Goal_Number(kActorLucy) != kGoalLucyHF04TalkToMcCoy && Player_Query_Current_Scene() == kSceneHF04 && Actor_Query_Which_Set_In(kActorLucy) == kSetHF04 - && !Game_Flag_Query(701) + && !Game_Flag_Query(kFlagMcCoyAttackedLucy) && Actor_Query_Inch_Distance_From_Actor(kActorLucy, kActorMcCoy) < 84 && !Player_Query_Combat_Mode() && Actor_Query_Friendliness_To_Other(kActorLucy, kActorMcCoy) > 40 @@ -485,24 +485,24 @@ bool AIScriptLucy::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Repeat(kActorLucy); break; - case 300: + case kGoalLucyStartChapter4: Actor_Put_In_Set(kActorLucy, kSetFreeSlotA); Actor_Set_At_Waypoint(kActorLucy, 33, 0); if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy) { - Actor_Set_Goal_Number(kActorLucy, 310); + Actor_Set_Goal_Number(kActorLucy, kGoalLucyUG01Wait); } break; - case 310: + case kGoalLucyUG01Wait: Actor_Put_In_Set(kActorLucy, kSetUG01); Actor_Set_At_Waypoint(kActorLucy, 544, 651); break; - case 311: + case kGoalLucyUG01VoightKampff: voightKampffTest(); break; - case 312: + case kGoalLucyUG01RunAway: AI_Movement_Track_Flush(kActorLucy); AI_Movement_Track_Append_Run(kActorLucy, 545, 0); AI_Movement_Track_Append(kActorLucy, 33, 0); @@ -867,7 +867,7 @@ void AIScriptLucy::voightKampffTest() { Voight_Kampff_Activate(kActorLucy, 40); Player_Loses_Control(); - if (Actor_Clue_Query(kActorMcCoy, 271)) { + if (Actor_Clue_Query(kActorMcCoy, kClueVKLucyReplicant)) { Actor_Says(kActorMcCoy, 6865, 13); Actor_Says(kActorLucy, 1140, 14); Actor_Says(kActorMcCoy, 6865, 14); @@ -894,11 +894,12 @@ void AIScriptLucy::voightKampffTest() { Actor_Says(kActorMcCoy, 6910, 13); Delay(2000); Player_Gains_Control(); - Actor_Set_Goal_Number(kActorLucy, 312); + Actor_Set_Goal_Number(kActorLucy, kGoalLucyUG01RunAway); } void AIScriptLucy::checkCombat() { - Game_Flag_Set(701); + Game_Flag_Set(kFlagMcCoyAttackedLucy); + if (Actor_Query_In_Set(kActorLucy, kSetHF01) && Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorLucy) != 450 diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp index a8edf10ff2..69ec583a6a 100644 --- a/engines/bladerunner/script/ai/officer_leary.cpp +++ b/engines/bladerunner/script/ai/officer_leary.cpp @@ -92,9 +92,9 @@ bool AIScriptOfficerLeary::Update() { } if ( Game_Flag_Query(kFlagUG07Empty) - && !Game_Flag_Query(664) + && !Game_Flag_Query(kFlagUG07PoliceLeave) ) { - Game_Flag_Set(664); + Game_Flag_Set(kFlagUG07PoliceLeave); Actor_Set_Goal_Number(kActorOfficerLeary, 305); return false; } @@ -203,7 +203,7 @@ void AIScriptOfficerLeary::TimerExpired(int timer) { Actor_Set_Goal_Number(kActorOfficerLeary, 430); Actor_Set_Goal_Number(kActorOfficerGrayford, 430); } else { - Game_Flag_Set(684); + Game_Flag_Set(kFlagHF05PoliceAttacked); } } else if (timer == 2) { AI_Countdown_Timer_Reset(kActorOfficerLeary, 2); diff --git a/engines/bladerunner/script/ai/transient.cpp b/engines/bladerunner/script/ai/transient.cpp index c5dc4caec0..9fb2e8705d 100644 --- a/engines/bladerunner/script/ai/transient.cpp +++ b/engines/bladerunner/script/ai/transient.cpp @@ -148,7 +148,7 @@ void AIScriptTransient::ShotAtAndMissed() { bool AIScriptTransient::ShotAtAndHit() { Actor_Set_Frame_Rate_FPS(kActorTransient, 8); - if (Game_Flag_Query(716)) { + if (Game_Flag_Query(kFlagUG13HomelessLayingdown)) { _animationState = 11; } else { _animationState = 14; @@ -203,7 +203,7 @@ bool AIScriptTransient::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Set_At_XYZ(kActorTransient, -310.0, 55.0, -350.0, 400); Actor_Change_Animation_Mode(kActorTransient, 53); Actor_Set_Targetable(kActorTransient, true); - Game_Flag_Set(716); + Game_Flag_Set(kFlagUG13HomelessLayingdown); return true; case 391: Actor_Change_Animation_Mode(kActorTransient, 53); @@ -461,7 +461,7 @@ bool AIScriptTransient::ChangeAnimationMode(int mode) { _animationFrame = 0; break; case 21: - if (Game_Flag_Query(716)) { + if (Game_Flag_Query(kFlagUG13HomelessLayingdown)) { _animationState = 11; } else { _animationState = 14; diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp index 84139015e1..8e25da033a 100644 --- a/engines/bladerunner/script/ai/zuben.cpp +++ b/engines/bladerunner/script/ai/zuben.cpp @@ -211,14 +211,14 @@ void AIScriptZuben::ClickedByPlayer() { Actor_Face_Actor(kActorMcCoy, kActorZuben, true); Actor_Says(kActorMcCoy, 8529, 13); } - if (Global_Variable_Query(kVariableChapter) > 1 && Global_Variable_Query(kVariableChapter) < 5) { + + if (Global_Variable_Query(kVariableChapter) > 1 + && Global_Variable_Query(kVariableChapter) < 5 + ) { if (Actor_Query_Friendliness_To_Other(kActorZuben, kActorMcCoy) <= 20) { Actor_Face_Actor(kActorMcCoy, kActorZuben, true); Actor_Says(kActorMcCoy, 8910, 11); - } else if (Game_Flag_Query(699)) { - Actor_Face_Actor(kActorMcCoy, kActorZuben, true); - Actor_Says(kActorMcCoy, 8910, 11); - } else { + } else if (!Game_Flag_Query(kFlagTalkToZuben)) { AI_Movement_Track_Pause(kActorZuben); Actor_Face_Actor(kActorZuben, kActorMcCoy, true); Actor_Says(kActorZuben, 140, 14); @@ -227,8 +227,11 @@ void AIScriptZuben::ClickedByPlayer() { Actor_Says(kActorZuben, 150, 15); Actor_Says(kActorMcCoy, 7285, 12); dialogue(); - Game_Flag_Set(699); + Game_Flag_Set(kFlagTalkToZuben); AI_Movement_Track_Unpause(kActorZuben); + } else { + Actor_Face_Actor(kActorMcCoy, kActorZuben, true); + Actor_Says(kActorMcCoy, 8910, 11); } // return true; } diff --git a/engines/bladerunner/script/init_script.cpp b/engines/bladerunner/script/init_script.cpp index 4cd634eb69..a62ff81a0f 100644 --- a/engines/bladerunner/script/init_script.cpp +++ b/engines/bladerunner/script/init_script.cpp @@ -58,7 +58,7 @@ void InitScript::Init_Globals() { for (int i = 0; i != 55; ++i) Global_Variable_Set(i, 0); - Global_Variable_Set(35, 2); + Global_Variable_Set(kVariableGenericWalkerConfig, 2); Global_Variable_Set(kVariableChapter, 1); Global_Variable_Set(kVariableChinyen, 100); diff --git a/engines/bladerunner/script/scene/hf01.cpp b/engines/bladerunner/script/scene/hf01.cpp index 2ceda569c1..9f871c474c 100644 --- a/engines/bladerunner/script/scene/hf01.cpp +++ b/engines/bladerunner/script/scene/hf01.cpp @@ -46,7 +46,7 @@ void SceneScriptHF01::InitializeScene() { } Scene_Exit_Add_2D_Exit(0, 81, 226, 169, 321, 0); - if (!Game_Flag_Query(663)) { + if (!Game_Flag_Query(kFlagHF05PoliceArrived)) { Scene_Exit_Add_2D_Exit(1, 304, 239, 492, 339, 0); Scene_Exit_Add_2D_Exit(2, 560, 231, 639, 360, 0); if (Game_Flag_Query(kFlagSpinnerAtHF01)) { @@ -80,7 +80,7 @@ void SceneScriptHF01::InitializeScene() { Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kHF01LoopInshot, false); } Scene_Loop_Set_Default(kHF01LoopMainLoopSpinner); - } else if (Game_Flag_Query(663)) { + } else if (Game_Flag_Query(kFlagHF05PoliceArrived)) { Scene_Loop_Set_Default(kHF01LoopMainLoopSpinner); } else { Scene_Loop_Set_Default(kHF01LoopMainLoopNoSpinner); @@ -159,9 +159,9 @@ bool SceneScriptHF01::ClickedOnActor(int actorId) { && !Game_Flag_Query(kFlagCrazylegsArrested) && Actor_Query_Goal_Number(kActorCrazylegs) != 2 && Game_Flag_Query(kFlagMcCoyIsHelpingReplicants) - && !Game_Flag_Query(662) + && !Game_Flag_Query(kFlagHF01TalkToLovedOne) ) { - Game_Flag_Set(662); + Game_Flag_Set(kFlagHF01TalkToLovedOne); Actor_Face_Actor(kActorMcCoy, affectionTowardsActor, true); Actor_Face_Actor(affectionTowardsActor, kActorMcCoy, true); if (affectionTowardsActor == kActorDektora) { @@ -328,7 +328,7 @@ void SceneScriptHF01::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptHF01::PlayerWalkedIn() { - if (Game_Flag_Query(663)) { + if (Game_Flag_Query(kFlagHF05PoliceArrived)) { ADQ_Flush(); ADQ_Add(kActorOfficerGrayford, 280, kAnimationModeTalk); Actor_Put_In_Set(kActorOfficerLeary, kSetHF01); @@ -340,7 +340,7 @@ void SceneScriptHF01::PlayerWalkedIn() { } if (!Game_Flag_Query(kFlagCrazylegsArrested) - && Actor_Query_Goal_Number(kActorCrazylegs) != 2 + && Actor_Query_Goal_Number(kActorCrazylegs) != 2 ) { if (Actor_Clue_Query(kActorMcCoy, kCluePhoneCallLucy1) && Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp index 88f91817fa..e5932a85ce 100644 --- a/engines/bladerunner/script/scene/hf05.cpp +++ b/engines/bladerunner/script/scene/hf05.cpp @@ -48,10 +48,10 @@ void SceneScriptHF05::InitializeScene() { Ambient_Sounds_Add_Looping_Sound(103, 40, 1, 1); - if (Game_Flag_Query(369)) { + if (Game_Flag_Query(kFlagHF05Hole)) { Scene_Loop_Set_Default(kHF05LoopMainLoopHole); addAmbientSounds(); - } else if (Game_Flag_Query(559)) { + } else if (Game_Flag_Query(kFlagHF06SteelInterruption)) { Scene_Loop_Set_Default(kHF05LoopMainLoopSpinner); addAmbientSounds(); } else { @@ -63,7 +63,7 @@ void SceneScriptHF05::SceneLoaded() { Obstacle_Object("MAINBASE", true); Unobstacle_Object("BTIRES02", true); Unobstacle_Object("LFTIRE02", true); - if (Game_Flag_Query(369)) { + if (Game_Flag_Query(kFlagHF05Hole)) { Unobstacle_Object("MONTE CARLO DRY", true); } else { Unobstacle_Object("OBSTACLE_HOLE", true); @@ -88,8 +88,8 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) { return true; } - if (!Game_Flag_Query(662) - || Game_Flag_Query(369) + if (!Game_Flag_Query(kFlagHF01TalkToLovedOne) + || Game_Flag_Query(kFlagHF05Hole) ) { Actor_Change_Animation_Mode(kActorMcCoy, 23); Sound_Play(412, 100, 0, 0, 50); @@ -98,15 +98,15 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) { Player_Loses_Control(); Actor_Set_Goal_Number(kActorOfficerLeary, 425); - Game_Flag_Set(369); - Game_Flag_Set(368); + Game_Flag_Set(kFlagHF05Hole); + Game_Flag_Set(kFlagHF07Hole); Obstacle_Object("OBSTACLE_HOLE", true); Unobstacle_Object("MONTE CARLO DRY", true); - if (sub_4048C0() != kActorMcCoy) { - Loop_Actor_Walk_To_XYZ(sub_4048C0(), 181.54f, 40.63f, 388.09f, 0, false, true, 0); - Actor_Face_Actor(kActorMcCoy, sub_4048C0(), true); - Actor_Face_Actor(sub_4048C0(), kActorMcCoy, true); + if (getCompanionActor() != kActorMcCoy) { + Loop_Actor_Walk_To_XYZ(getCompanionActor(), 181.54f, 40.63f, 388.09f, 0, false, true, 0); + Actor_Face_Actor(kActorMcCoy, getCompanionActor(), true); + Actor_Face_Actor(getCompanionActor(), kActorMcCoy, true); Actor_Says(kActorMcCoy, 1785, kAnimationModeTalk); Actor_Says(kActorMcCoy, 1790, kAnimationModeTalk); } @@ -116,8 +116,18 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) { Scene_Loop_Set_Default(kHF05LoopMainLoopHole); Scene_Loop_Start_Special(kSceneLoopModeOnce, kHF05LoopArmAnimation, true); - if (sub_4048C0() != kActorMcCoy) { - if (sub_4048C0() == kActorDektora) { + + if (getCompanionActor() == kActorMcCoy) { + ADQ_Flush(); + ADQ_Add(kActorVoiceOver, 940, -1); + Ambient_Sounds_Play_Sound(147, 50, 99, 0, 0); + Delay(1500); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, 181.54f, 40.63f, 388.09f, 0, false, true, 0); + Actor_Face_Heading(kActorMcCoy, 0, false); + Actor_Change_Animation_Mode(kActorMcCoy, 23); + Actor_Clue_Lose(kActorMcCoy, kClueBomb); + } else { + if (getCompanionActor() == kActorDektora) { Actor_Face_Heading(kActorDektora, 0, false); Ambient_Sounds_Play_Sound(147, 50, 99, 0, 0); Delay(3000); @@ -130,17 +140,8 @@ bool SceneScriptHF05::ClickedOn3DObject(const char *objectName, bool a2) { Actor_Face_Heading(kActorLucy, 0, false); Actor_Change_Animation_Mode(kActorLucy, 13); } - Actor_Face_Actor(kActorMcCoy, sub_4048C0(), true); + Actor_Face_Actor(kActorMcCoy, getCompanionActor(), true); Actor_Says(kActorMcCoy, 1805, kAnimationModeTalk); - } else { - ADQ_Flush(); - ADQ_Add(kActorVoiceOver, 940, -1); - Ambient_Sounds_Play_Sound(147, 50, 99, 0, 0); - Delay(1500); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, 181.54f, 40.63f, 388.09f, 0, false, true, 0); - Actor_Face_Heading(kActorMcCoy, 0, false); - Actor_Change_Animation_Mode(kActorMcCoy, 23); - Actor_Clue_Lose(kActorMcCoy, kClueBomb); } Player_Gains_Control(); } @@ -167,7 +168,7 @@ bool SceneScriptHF05::ClickedOnItem(int itemId, bool a2) { bool SceneScriptHF05::ClickedOnExit(int exitId) { if (exitId == 0) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 483.0f, 40.63f, -189.0f, 0, true, false, 0)) { - if (!Game_Flag_Query(684)) { + if (!Game_Flag_Query(kFlagHF05PoliceAttacked)) { Game_Flag_Set(kFlagHF05toHF01); Set_Enter(kSetHF01, kSceneHF01); } @@ -177,10 +178,10 @@ bool SceneScriptHF05::ClickedOnExit(int exitId) { if (exitId == 1) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 330.0f, 40.63f, -85.0f, 0, true, false, 0)) { - if (!Game_Flag_Query(684)) { + if (!Game_Flag_Query(kFlagHF05PoliceAttacked)) { int affectionTowardsActor = getAffectionTowardsActor(); - if (Game_Flag_Query(663) - && Game_Flag_Query(368) + if (Game_Flag_Query(kFlagHF05PoliceArrived) + && Game_Flag_Query(kFlagHF07Hole) && affectionTowardsActor != -1 ) { Actor_Face_Actor(kActorMcCoy, affectionTowardsActor, true); @@ -195,7 +196,7 @@ bool SceneScriptHF05::ClickedOnExit(int exitId) { if (exitId == 2) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 277.0f, 40.63f, 410.0f, 0, true, false, 0)) { - if (!Game_Flag_Query(684)) { + if (!Game_Flag_Query(kFlagHF05PoliceAttacked)) { Game_Flag_Set(kFlagHF05toHF06); Set_Enter(kSetHF06, kSceneHF06); } @@ -271,16 +272,16 @@ void SceneScriptHF05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo if (actorId == kActorOfficerLeary && newGoal == 430 ) { - Game_Flag_Set(684); - sub_4042E4(); + Game_Flag_Set(kFlagHF05PoliceAttacked); + policeAttack(); } //return false; } void SceneScriptHF05::PlayerWalkedIn() { - if (Game_Flag_Query(662)) { + if (Game_Flag_Query(kFlagHF01TalkToLovedOne)) { int affectionTowardsActor = getAffectionTowardsActor(); - if (Game_Flag_Query(662) + if (Game_Flag_Query(kFlagHF01TalkToLovedOne) && affectionTowardsActor != -1 ) { Actor_Put_In_Set(affectionTowardsActor, kSetHF05); @@ -297,27 +298,27 @@ void SceneScriptHF05::PlayerWalkedIn() { } } - if (Game_Flag_Query(684)) { - sub_4042E4(); + if (Game_Flag_Query(kFlagHF05PoliceAttacked)) { + policeAttack(); } else if (Actor_Clue_Query(kActorMcCoy, kClueSpinnerKeys) - || Game_Flag_Query(559) + || Game_Flag_Query(kFlagHF06SteelInterruption) ) { - if ( Game_Flag_Query(559) - && !Game_Flag_Query(663) + if ( Game_Flag_Query(kFlagHF06SteelInterruption) + && !Game_Flag_Query(kFlagHF05PoliceArrived) ) { - Game_Flag_Set(663); + Game_Flag_Set(kFlagHF05PoliceArrived); Music_Play(1, 40, 0, 2, -1, 0, 0); Actor_Says(kActorOfficerGrayford, 200, kAnimationModeTalk); Actor_Says(kActorOfficerGrayford, 210, kAnimationModeTalk); Actor_Set_Goal_Number(kActorOfficerLeary, 420); - if (sub_4048C0() == 3) { - sub_403F0C(); - } else if (sub_4048C0() == 6) { - sub_40410C(); + if (getCompanionActor() == kActorDektora) { + talkWithDektora(); + } else if (getCompanionActor() == kActorLucy) { + talkWithLucy(); } } } else { - sub_403A34(affectionTowardsActor); + talkWithCrazylegs3(affectionTowardsActor); } } else if (Game_Flag_Query(kFlagHF01toHF05)) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, 399.0f, 40.63f, -85.0f, 0, false, false, 0); @@ -573,7 +574,7 @@ int SceneScriptHF05::getAffectionTowardsActor() { return -1; } -void SceneScriptHF05::sub_4042E4() { +void SceneScriptHF05::policeAttack() { Actor_Force_Stop_Walking(kActorMcCoy); Actor_Put_In_Set(kActorOfficerLeary, kSetHF05); Actor_Set_At_XYZ(kActorOfficerLeary, 430.4f, 40.63f, -258.18f, 300); @@ -586,7 +587,7 @@ void SceneScriptHF05::sub_4042E4() { Non_Player_Actor_Combat_Mode_On(kActorOfficerGrayford, kActorCombatStateUncover, true, kActorMcCoy, 4, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, 0, 100, 100, 300, true); } -void SceneScriptHF05::sub_403F0C() { +void SceneScriptHF05::talkWithDektora() { Actor_Face_Actor(kActorMcCoy, kActorDektora, true); Actor_Face_Actor(kActorDektora, kActorMcCoy, true); Actor_Says(kActorDektora, 2660, 12); @@ -605,7 +606,7 @@ void SceneScriptHF05::sub_403F0C() { Actor_Says_With_Pause(kActorMcCoy, 1780, 1.0f, 18); } -void SceneScriptHF05::sub_40410C() { +void SceneScriptHF05::talkWithLucy() { Actor_Face_Actor(kActorMcCoy, kActorLucy, true); Actor_Face_Actor(kActorLucy, kActorMcCoy, true); Actor_Says(kActorLucy, 400, 16); @@ -623,7 +624,7 @@ void SceneScriptHF05::sub_40410C() { Actor_Says_With_Pause(kActorMcCoy, 1780, 1.0f, 18); } -void SceneScriptHF05::sub_403A34(int affectionTowardsActor) { +void SceneScriptHF05::talkWithCrazylegs3(int affectionTowardsActor) { if (affectionTowardsActor != -1 && Actor_Query_In_Set(kActorCrazylegs, kSetHF05) ) { @@ -743,7 +744,7 @@ void SceneScriptHF05::addAmbientSounds() { Ambient_Sounds_Add_Speech_Sound(38, 280, 5, 70, 7, 10, -50, 50, -101, -101, 1, 1); } -int SceneScriptHF05::sub_4048C0() { +int SceneScriptHF05::getCompanionActor() { if (Actor_Query_In_Set(kActorDektora, kSetHF05) && Actor_Query_Goal_Number(kActorDektora) != kGoalDektoraGone ) { @@ -755,6 +756,7 @@ int SceneScriptHF05::sub_4048C0() { ) { return kActorLucy; } + return kActorMcCoy; } diff --git a/engines/bladerunner/script/scene/hf06.cpp b/engines/bladerunner/script/scene/hf06.cpp index 19c10480e4..8e806aa5f0 100644 --- a/engines/bladerunner/script/scene/hf06.cpp +++ b/engines/bladerunner/script/scene/hf06.cpp @@ -38,7 +38,7 @@ void SceneScriptHF06::InitializeScene() { Ambient_Sounds_Add_Sound(376, 10, 70, 50, 100, 0, 0, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(377, 10, 70, 50, 100, 0, 0, -101, -101, 0, 0); - if (Game_Flag_Query(559)) { + if (Game_Flag_Query(kFlagHF06SteelInterruption)) { Scene_Loop_Set_Default(3); addAmbientSounds(); } else { @@ -115,7 +115,7 @@ bool SceneScriptHF06::ClickedOnActor(int actorId) { ) { Actor_Face_Actor(kActorLucy, kActorMcCoy, true); Actor_Face_Actor(kActorMcCoy, kActorLucy, true); - if (Game_Flag_Query(559)) { + if (Game_Flag_Query(kFlagHF06SteelInterruption)) { Actor_Says(kActorLucy, 390, 18); Actor_Says(kActorMcCoy, 2115, 17); } @@ -124,7 +124,7 @@ bool SceneScriptHF06::ClickedOnActor(int actorId) { ) { Actor_Face_Actor(kActorDektora, kActorMcCoy, true); Actor_Face_Actor(kActorMcCoy, kActorDektora, true); - if (Game_Flag_Query(559)) { + if (Game_Flag_Query(kFlagHF06SteelInterruption)) { Actor_Says(kActorDektora, 100, 3); Actor_Says(kActorMcCoy, 2115, 17); } @@ -208,7 +208,7 @@ void SceneScriptHF06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptHF06::PlayerWalkedIn() { - if (Game_Flag_Query(662)) { + if (Game_Flag_Query(kFlagHF01TalkToLovedOne)) { int actorId = -1; if (Global_Variable_Query(kVariableAffectionTowards) == kAffectionTowardsLucy && Actor_Query_Goal_Number(kActorLucy) != kGoalLucyGone @@ -222,7 +222,7 @@ void SceneScriptHF06::PlayerWalkedIn() { if (actorId != -1) { Actor_Put_In_Set(actorId, kSetHF06); - if (Game_Flag_Query(559)) { + if (Game_Flag_Query(kFlagHF06SteelInterruption)) { Actor_Set_At_XYZ(actorId, 173.67f, 367.93f, 446.04f, 229); Async_Actor_Walk_To_XYZ(actorId, 173.67f, 367.93f, 394.04f, 0, false); } else { @@ -235,10 +235,10 @@ void SceneScriptHF06::PlayerWalkedIn() { Loop_Actor_Travel_Stairs(kActorMcCoy, 2, true, kAnimationModeIdle); Footstep_Sound_Override_Off(); - if ( Game_Flag_Query(662) - && !Game_Flag_Query(559) + if ( Game_Flag_Query(kFlagHF01TalkToLovedOne) + && !Game_Flag_Query(kFlagHF06SteelInterruption) ) { - sub_401EF4(); + steelInterruption(); } } @@ -249,7 +249,7 @@ void SceneScriptHF06::PlayerWalkedOut() { void SceneScriptHF06::DialogueQueueFlushed(int a1) { } -void SceneScriptHF06::sub_401EF4() { +void SceneScriptHF06::steelInterruption() { int actorId; if (Actor_Query_In_Set(kActorDektora, kSetHF06)) { @@ -277,8 +277,8 @@ void SceneScriptHF06::sub_401EF4() { Actor_Says(kActorSteele, 280, 58); Actor_Face_Actor(kActorMcCoy, kActorSteele, true); Player_Set_Combat_Mode(true); - Actor_Change_Animation_Mode(kActorMcCoy, 5); - Actor_Change_Animation_Mode(kActorSteele, 7); + Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAim); + Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatWalk); Loop_Actor_Walk_To_XYZ(kActorSteele, 92.0f, 367.93f, 107.0f, 0, false, false, 0); Actor_Face_Actor(kActorSteele, kActorMcCoy, true); Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle); @@ -295,14 +295,14 @@ void SceneScriptHF06::sub_401EF4() { Actor_Says(kActorSteele, 350, 58); Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatIdle); Game_Flag_Set(kFlagNotUsed644); - Actor_Set_Goal_Number(kActorSteele, 402); + Actor_Set_Goal_Number(kActorSteele, kGoalSteeleHF06Attack); Actor_Face_Actor(kActorSteele, actorId, true); Actor_Change_Animation_Mode(kActorSteele, kAnimationModeCombatAttack); Delay(500); Scene_Loop_Set_Default(3); Scene_Loop_Start_Special(kSceneLoopModeOnce, 2, true); Sound_Play(562, 50, 0, 0, 50); - Game_Flag_Set(559); + Game_Flag_Set(kFlagHF06SteelInterruption); Scene_Exits_Disable(); Non_Player_Actor_Combat_Mode_On(kActorSteele, kActorCombatStateUncover, true, actorId, 15, kAnimationModeCombatIdle, kAnimationModeCombatWalk, kAnimationModeCombatRun, 0, 0, 100, 10, 300, false); } diff --git a/engines/bladerunner/script/scene/hf07.cpp b/engines/bladerunner/script/scene/hf07.cpp index e35c4613bc..f4e8cee557 100644 --- a/engines/bladerunner/script/scene/hf07.cpp +++ b/engines/bladerunner/script/scene/hf07.cpp @@ -40,7 +40,7 @@ void SceneScriptHF07::InitializeScene() { Ambient_Sounds_Add_Sound(304, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0); - if (Game_Flag_Query(368)) { + if (Game_Flag_Query(kFlagHF07Hole)) { Scene_Loop_Set_Default(2); } else { Scene_Loop_Set_Default(0); @@ -79,7 +79,7 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, true, false, 0)) { Game_Flag_Set(kFlagHF07toHF05); - if (!Game_Flag_Query(662)) { + if (!Game_Flag_Query(kFlagHF01TalkToLovedOne)) { Actor_Face_Heading(kActorMcCoy, 0, false); Footstep_Sound_Override_On(3); Loop_Actor_Travel_Stairs(kActorMcCoy, 30, true, kAnimationModeIdle); @@ -121,9 +121,9 @@ void SceneScriptHF07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptHF07::PlayerWalkedIn() { - if (Game_Flag_Query(662)) { + if (Game_Flag_Query(kFlagHF01TalkToLovedOne)) { int actorId = getAffectionTowardsActor(); - if (Game_Flag_Query(662) + if (Game_Flag_Query(kFlagHF01TalkToLovedOne) && actorId != -1 ) { Actor_Put_In_Set(actorId, kSetHF07); diff --git a/engines/bladerunner/script/scene/ma04.cpp b/engines/bladerunner/script/scene/ma04.cpp index 5013bb5849..b99cfcb8ff 100644 --- a/engines/bladerunner/script/scene/ma04.cpp +++ b/engines/bladerunner/script/scene/ma04.cpp @@ -365,17 +365,19 @@ void SceneScriptMA04::phoneCallWithDektora() { Actor_Says(kActorMcCoy, 2495, 0); Actor_Says(kActorDektora, 340, 3); Actor_Says(kActorDektora, 350, 3); - if (Game_Flag_Query(kFlagCrazylegsArrested) || Actor_Query_Goal_Number(kActorCrazylegs) == 2) { - answer = 1170; + if (Game_Flag_Query(kFlagCrazylegsArrested) + || Actor_Query_Goal_Number(kActorCrazylegs) == 2 + ) { + answer = 1170; // CLOVIS } else { Dialogue_Menu_Clear_List(); - DM_Add_To_List_Never_Repeat_Once_Selected(1160, 1, 1, 2); - DM_Add_To_List_Never_Repeat_Once_Selected(1170, 2, 1, 1); + DM_Add_To_List_Never_Repeat_Once_Selected(1160, 1, 1, 2); // OK + DM_Add_To_List_Never_Repeat_Once_Selected(1170, 2, 1, 1); // CLOVIS Dialogue_Menu_Appear(320, 240); answer = Dialogue_Menu_Query_Input(); Dialogue_Menu_Disappear(); } - if (answer == 1160) { + if (answer == 1160) { // OK Actor_Says(kActorMcCoy, 2500, 19); Actor_Says(kActorDektora, 360, 3); Actor_Says(kActorMcCoy, 2510, 0); @@ -418,7 +420,9 @@ void SceneScriptMA04::phoneCallWithLucy() { Actor_Says(kActorLucy, 570, 3); Actor_Says(kActorMcCoy, 2560, 17); Actor_Says(kActorLucy, 580, 3); - if (Game_Flag_Query(kFlagCrazylegsArrested) || Actor_Query_Goal_Number(kActorCrazylegs) == 2) { + if (Game_Flag_Query(kFlagCrazylegsArrested) + || Actor_Query_Goal_Number(kActorCrazylegs) == 2 + ) { Actor_Says(kActorLucy, 630, 3); Actor_Says_With_Pause(kActorMcCoy, 2575, 0.0f, 15); if (!Game_Flag_Query(kFlagDirectorsCut)) { diff --git a/engines/bladerunner/script/scene/ug01.cpp b/engines/bladerunner/script/scene/ug01.cpp index ced4378ca1..e9652f511c 100644 --- a/engines/bladerunner/script/scene/ug01.cpp +++ b/engines/bladerunner/script/scene/ug01.cpp @@ -170,7 +170,7 @@ void SceneScriptUG01::PlayerWalkedIn() { Game_Flag_Reset(kFlagRC03toUG01); } - if (Actor_Query_Goal_Number(kActorLucy) == 310) { + if (Actor_Query_Goal_Number(kActorLucy) == kGoalLucyUG01Wait) { Music_Play(21, 35, 0, 3, -1, 0, 0); Actor_Set_Goal_Number(kActorLucy, 311); } diff --git a/engines/bladerunner/script/scene/ug05.cpp b/engines/bladerunner/script/scene/ug05.cpp index 1062f456b8..a4b88eec49 100644 --- a/engines/bladerunner/script/scene/ug05.cpp +++ b/engines/bladerunner/script/scene/ug05.cpp @@ -26,8 +26,8 @@ namespace BladeRunner { void SceneScriptUG05::InitializeScene() { if (Game_Flag_Query(kFlagHF07toUG06)) { - if ( Game_Flag_Query(663) - && !Game_Flag_Query(368) + if ( Game_Flag_Query(kFlagHF05PoliceArrived) + && !Game_Flag_Query(kFlagHF07Hole) ) { Setup_Scene_Information(-356.35f, 132.77f, -1092.36f, 389); } else { @@ -39,11 +39,11 @@ void SceneScriptUG05::InitializeScene() { } Scene_Exit_Add_2D_Exit(0, 215, 240, 254, 331, 3); - if (!Game_Flag_Query(663)) { + if (!Game_Flag_Query(kFlagHF05PoliceArrived)) { Scene_Exit_Add_2D_Exit(1, 303, 422, 639, 479, 2); } - if (!Game_Flag_Query(663) - || Game_Flag_Query(368) + if (!Game_Flag_Query(kFlagHF05PoliceArrived) + || Game_Flag_Query(kFlagHF07Hole) ) { Scene_Exit_Add_2D_Exit(2, 352, 256, 393, 344, 0); } @@ -69,7 +69,7 @@ void SceneScriptUG05::InitializeScene() { Ambient_Sounds_Add_Sound(304, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0); - if (Game_Flag_Query(368)) { + if (Game_Flag_Query(kFlagHF07Hole)) { Scene_Loop_Set_Default(2); } else { Scene_Loop_Set_Default(0); @@ -77,7 +77,7 @@ void SceneScriptUG05::InitializeScene() { } void SceneScriptUG05::SceneLoaded() { - if (!Game_Flag_Query(368)) { + if (!Game_Flag_Query(kFlagHF07Hole)) { Unobstacle_Object("DROPPED CAR OBSTACL", true); } Obstacle_Object("VANBODY", true); @@ -94,10 +94,10 @@ bool SceneScriptUG05::ClickedOn3DObject(const char *objectName, bool a2) { bool SceneScriptUG05::ClickedOnActor(int actorId) { if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, actorId, 30, true, false)) { Actor_Face_Actor(kActorMcCoy, actorId, true); - int affectionTowardsActor = getAffectionTowardsActor(); + if ( actorId == kActorOfficerGrayford - && Game_Flag_Query(368) - && !Game_Flag_Query(683) + && Game_Flag_Query(kFlagHF07Hole) + && !Game_Flag_Query(kFlagUG05TalkToPolice) ) { Actor_Says(kActorOfficerGrayford, 220, -1); Actor_Says(kActorMcCoy, 5540, 14); @@ -105,11 +105,13 @@ bool SceneScriptUG05::ClickedOnActor(int actorId) { Actor_Says(kActorMcCoy, 5545, 17); Actor_Says(kActorOfficerGrayford, 240, -1); Actor_Says(kActorMcCoy, 5550, 3); - Game_Flag_Set(683); + Game_Flag_Set(kFlagUG05TalkToPolice); return false; } + + int affectionTowardsActor = getAffectionTowardsActor(); if (actorId == affectionTowardsActor) { - sub_402218(); + endGame(); return true; } return false; @@ -123,8 +125,8 @@ bool SceneScriptUG05::ClickedOnItem(int itemId, bool a2) { bool SceneScriptUG05::ClickedOnExit(int exitId) { if (exitId == 0) { - if ( Game_Flag_Query(663) - && !Game_Flag_Query(368) + if ( Game_Flag_Query(kFlagHF05PoliceArrived) + && !Game_Flag_Query(kFlagHF07Hole) ) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, -356.35f, 132.77f, -1092.36f, 0, false, false, 0); Game_Flag_Set(kFlagUG06toHF07); @@ -147,12 +149,12 @@ bool SceneScriptUG05::ClickedOnExit(int exitId) { } if (exitId == 2) { - if (!Game_Flag_Query(662)) { + if (!Game_Flag_Query(kFlagHF01TalkToLovedOne)) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 0.0f, -1.37f, -1500.0f, 0, true, false, 0)) { - if (!Game_Flag_Query(522)) { + if (!Game_Flag_Query(kFlagUG05TalkAboutTunnel)) { Actor_Voice_Over(2600, kActorVoiceOver); Actor_Voice_Over(2610, kActorVoiceOver); - Game_Flag_Set(522); + Game_Flag_Set(kFlagUG05TalkAboutTunnel); } return true; } @@ -165,7 +167,7 @@ bool SceneScriptUG05::ClickedOnExit(int exitId) { v2 = Loop_Actor_Walk_To_Actor(kActorMcCoy, affectionTowardsActor, 30, true, false) != 0; } if (!v2) { - sub_402218(); + endGame(); return true; } } @@ -184,13 +186,15 @@ void SceneScriptUG05::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptUG05::PlayerWalkedIn() { - if (Game_Flag_Query(663)) { - if (Game_Flag_Query(368)) { + if (Game_Flag_Query(kFlagHF05PoliceArrived)) { + if (Game_Flag_Query(kFlagHF07Hole)) { Music_Stop(2); + Actor_Put_In_Set(kActorOfficerGrayford, kSetUG05); Actor_Set_At_XYZ(kActorOfficerGrayford, 4.22f, -1.37f, -925.0f, 750); Actor_Set_Goal_Number(kActorOfficerGrayford, 599); - Actor_Retired_Here(kActorOfficerGrayford, 70, 36, 1, -1); + Actor_Retired_Here(kActorOfficerGrayford, 70, 36, true, -1); + int affectionTowardsActor = getAffectionTowardsActor(); if (affectionTowardsActor == kActorDektora) { Actor_Put_In_Set(kActorDektora, kSetUG05); @@ -206,9 +210,10 @@ void SceneScriptUG05::PlayerWalkedIn() { Actor_Put_In_Set(kActorOfficerLeary, kSetUG05); Actor_Set_At_XYZ(kActorOfficerLeary, 0.0f, -1.37f, -1400.0f, 768); } + if (!Actor_Query_In_Set(kActorOfficerGrayford, kSetUG05)) { ADQ_Flush(); - ADQ_Add(kActorOfficerGrayford, 280, 3); + ADQ_Add(kActorOfficerGrayford, 280, kAnimationModeTalk); Actor_Put_In_Set(kActorOfficerGrayford, kSetUG05); Actor_Set_At_XYZ(kActorOfficerGrayford, -16.0f, -1.37f, -960.0f, 768); } @@ -216,15 +221,17 @@ void SceneScriptUG05::PlayerWalkedIn() { } if (Game_Flag_Query(kFlagHF07toUG06)) { - if (Game_Flag_Query(663) && !Game_Flag_Query(368)) { + if ( Game_Flag_Query(kFlagHF05PoliceArrived) + && !Game_Flag_Query(kFlagHF07Hole) + ) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, -288.35f, 132.77f, -1092.36f, 0, true, false, 0); } else { - Loop_Actor_Travel_Stairs(kActorMcCoy, 2, 0, kAnimationModeIdle); + Loop_Actor_Travel_Stairs(kActorMcCoy, 2, false, kAnimationModeIdle); } } - if (Game_Flag_Query(663)) { - Game_Flag_Query(368); // bug in game? + if (Game_Flag_Query(kFlagHF05PoliceArrived)) { + Game_Flag_Query(kFlagHF07Hole); // bug in game? } Game_Flag_Reset(kFlagHF07toUG06); } @@ -251,7 +258,7 @@ int SceneScriptUG05::getAffectionTowardsActor() { return -1; } -void SceneScriptUG05::sub_402218() { +void SceneScriptUG05::endGame() { int affectionTowardsActor = getAffectionTowardsActor(); if (affectionTowardsActor != -1) { Actor_Face_Actor(kActorMcCoy, affectionTowardsActor, true); @@ -268,24 +275,20 @@ void SceneScriptUG05::sub_402218() { Ambient_Sounds_Remove_All_Looping_Sounds(1); if (affectionTowardsActor == kActorLucy) { - if (Game_Flag_Query(kFlagLucyIsReplicant)) { - if (Global_Variable_Query(kVariableDNAEvidence) > 3) { - Outtake_Play(kOuttakeEnd1B, false, -1); - } else { - Outtake_Play(kOuttakeEnd1C, false, -1); - } - } else { + if (!Game_Flag_Query(kFlagLucyIsReplicant)) { Outtake_Play(kOuttakeEnd1A, false, -1); + } else if (Global_Variable_Query(kVariableDNAEvidence) > 3) { + Outtake_Play(kOuttakeEnd1B, false, -1); + } else { + Outtake_Play(kOuttakeEnd1C, false, -1); } } else if (affectionTowardsActor == kActorDektora) { - if (Game_Flag_Query(kFlagDektoraIsReplicant)) { - if (Global_Variable_Query(kVariableDNAEvidence) > 3) { - Outtake_Play(kOuttakeEnd1E, false, -1); - } else { - Outtake_Play(kOuttakeEnd1F, false, -1); - } - } else { + if (!Game_Flag_Query(kFlagDektoraIsReplicant)) { Outtake_Play(kOuttakeEnd1D, false, -1); + } else if (Global_Variable_Query(kVariableDNAEvidence) > 3) { + Outtake_Play(kOuttakeEnd1E, false, -1); + } else { + Outtake_Play(kOuttakeEnd1F, false, -1); } } else { Outtake_Play(kOuttakeEnd3, false, -1); diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h index df8fe1aee8..a28bee35c0 100644 --- a/engines/bladerunner/script/scene_script.h +++ b/engines/bladerunner/script/scene_script.h @@ -217,17 +217,17 @@ DECLARE_SCRIPT(HF05) void talkWithCrazyLegs2(); void dialogueWithCrazylegs1(); void dialogueWithCrazylegs2(); - void sub_403A34(int actorId); - void sub_403F0C(); - void sub_40410C(); - void sub_4042E4(); + void talkWithCrazylegs3(int actorId); + void talkWithDektora(); + void talkWithLucy(); + void policeAttack(); void addAmbientSounds(); int getAffectionTowardsActor(); - int sub_4048C0(); + int getCompanionActor(); END_SCRIPT DECLARE_SCRIPT(HF06) - void sub_401EF4(); + void steelInterruption(); void addAmbientSounds(); END_SCRIPT @@ -459,7 +459,7 @@ END_SCRIPT DECLARE_SCRIPT(UG05) int getAffectionTowardsActor(); - void sub_402218(); + void endGame(); END_SCRIPT DECLARE_SCRIPT(UG06) |