aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Kohaut2019-02-07 23:44:37 +0100
committerPeter Kohaut2019-02-07 23:45:41 +0100
commit7061f7cb173871e84d26010b9742fcec8a0ece1a (patch)
treee830affbe2be948917848e7d0d22ca85305cc35d
parentb3b6f6eaa36ef8651d3a7192f07223699b7055a9 (diff)
downloadscummvm-rg350-7061f7cb173871e84d26010b9742fcec8a0ece1a.tar.gz
scummvm-rg350-7061f7cb173871e84d26010b9742fcec8a0ece1a.tar.bz2
scummvm-rg350-7061f7cb173871e84d26010b9742fcec8a0ece1a.zip
BLADERUNNER: Cleanup for drive away endings scripts
All ending are achievable
-rw-r--r--engines/bladerunner/game_constants.h30
-rw-r--r--engines/bladerunner/script/ai/generic_walker_a.cpp2
-rw-r--r--engines/bladerunner/script/ai/generic_walker_b.cpp2
-rw-r--r--engines/bladerunner/script/ai/generic_walker_c.cpp2
-rw-r--r--engines/bladerunner/script/ai/lucy.cpp23
-rw-r--r--engines/bladerunner/script/ai/officer_leary.cpp6
-rw-r--r--engines/bladerunner/script/ai/transient.cpp6
-rw-r--r--engines/bladerunner/script/ai/zuben.cpp15
-rw-r--r--engines/bladerunner/script/init_script.cpp2
-rw-r--r--engines/bladerunner/script/scene/hf01.cpp12
-rw-r--r--engines/bladerunner/script/scene/hf05.cpp98
-rw-r--r--engines/bladerunner/script/scene/hf06.cpp26
-rw-r--r--engines/bladerunner/script/scene/hf07.cpp8
-rw-r--r--engines/bladerunner/script/scene/ma04.cpp16
-rw-r--r--engines/bladerunner/script/scene/ug01.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug05.cpp85
-rw-r--r--engines/bladerunner/script/scene_script.h14
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)