aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
Diffstat (limited to 'engines')
-rw-r--r--engines/bladerunner/game_constants.h59
-rw-r--r--engines/bladerunner/script/ai/bullet_bob.cpp12
-rw-r--r--engines/bladerunner/script/ai/free_slot_a.cpp13
-rw-r--r--engines/bladerunner/script/ai/mutant1.cpp2
-rw-r--r--engines/bladerunner/script/ai/officer_leary.cpp2
-rw-r--r--engines/bladerunner/script/ai/rajif.cpp5
-rw-r--r--engines/bladerunner/script/ai/runciter.cpp281
-rw-r--r--engines/bladerunner/script/scene/ct04.cpp2
-rw-r--r--engines/bladerunner/script/scene/dr06.cpp3
-rw-r--r--engines/bladerunner/script/scene/hf05.cpp1
-rw-r--r--engines/bladerunner/script/scene/hf07.cpp21
-rw-r--r--engines/bladerunner/script/scene/ma02.cpp105
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp19
-rw-r--r--engines/bladerunner/script/scene/ma07.cpp4
-rw-r--r--engines/bladerunner/script/scene/rc01.cpp2
-rw-r--r--engines/bladerunner/script/scene/rc02.cpp46
-rw-r--r--engines/bladerunner/script/scene/rc04.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug02.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug05.cpp6
-rw-r--r--engines/bladerunner/script/scene/ug06.cpp4
-rw-r--r--engines/bladerunner/script/scene/ug07.cpp4
-rw-r--r--engines/bladerunner/script/scene/ug08.cpp27
-rw-r--r--engines/bladerunner/script/scene/ug09.cpp2
-rw-r--r--engines/bladerunner/script/scene/ug13.cpp136
-rw-r--r--engines/bladerunner/script/scene/ug14.cpp3
-rw-r--r--engines/bladerunner/script/scene/ug15.cpp10
-rw-r--r--engines/bladerunner/script/scene_script.h8
27 files changed, 446 insertions, 335 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h
index 62a00ec036..7aabef9c05 100644
--- a/engines/bladerunner/game_constants.h
+++ b/engines/bladerunner/game_constants.h
@@ -626,7 +626,7 @@ enum Flags {
kFlagSteeleInChinaTown = 184,
kFlagSteeleInPoliceStation = 185,
kFlagRC01PoliceDone = 186,
- kFlagRC02TalkedToRunciter = 187,
+ kFlagRC02RunciterTalk1 = 187,
// 188 is never used
// 189 is never used
kFlagRC02ShellCasingsTaken = 190,
@@ -860,7 +860,7 @@ enum Flags {
kFlagUG09ToUG07 = 428,
kFlagUG08toUG13 = 429,
kFlagUG13toUG08 = 430,
-
+ kFlagUB08ElevatorUp = 431,
kFlagUG09toCT12 = 432,
kFlagCT12ToUG09 = 433,
kFlagUG13toUG18 = 434, // is never checked
@@ -933,6 +933,7 @@ enum Flags {
kFlagTB06DogCollarTaken = 519,
kFlagTB06KitchenBoxTaken = 520,
kFlagHC03TrapDoorOpened = 521,
+ kFlagUG06Chapter4Started = 524,
kFlagCT10Entered = 525,
kFlagHF02toHF03 = 527,
kFlagHF03toHF02 = 528,
@@ -958,6 +959,7 @@ enum Flags {
kFlagMcCoyTiedDown = 550,
kFlagUG16toDR06 = 551, // is never checked
kFlagDR06toUG16 = 552,
+ kFlagUG13Entered = 553,
kFlagDR01toCT11 = 558,
kFlagNR02GordoLeaveLighter = 561,
kFlagHF05CrazyLegsTalk1 = 562,
@@ -992,6 +994,7 @@ enum Flags {
kFlagNR04EarlyQStungByScorpions = 606,
kFlagTB07toTB02 = 608,
kFlagNR04McCoyAimedAtEarlyQ = 609,
+ kFlagUG08Entered = 610,
kFlagNR03HanoiTalk = 611,
kFlagTB07RachaelTalk = 612,
kFlagHF03LucyTalk = 613,
@@ -1004,6 +1007,7 @@ enum Flags {
kFlagNR08Available = 620,
// 621 is never used
kFlagNR08TouchedDektora = 622,
+ kFlagUG07Empty = 623,
kFlagTB07TyrellMeeting = 625,
kFlagNR01McCoyIsDrugged = 627,
kFlagNR01DektoraFall = 632,
@@ -1025,6 +1029,7 @@ enum Flags {
kFlagMA04PhoneMessageFromLucy = 650,
kFlagNR08McCoyWatchingShow = 651,
kFlagCrazylegsArrestedTalk = 652,
+ kFlagMA02RajifTalk = 655,
kFlagUG02RagiationGooglesTaken = 656,
kFlagNR11BreakWindow = 659,
kFlagDNARowAvailableTalk = 660,
@@ -1044,6 +1049,9 @@ enum Flags {
kFlagUG03DeadHomeless = 693,
kFlagUG14DeadHomeless = 694,
kFlagBulletBobDead = 702,
+ kFlagRC02EnteredChapter4 = 704,
+ kFlagRC02RunciterTalkWithGun = 705,
+ kFlagRC02RunciterTalk2 = 706,
kFlagTB06PhotographTalk1 = 707,
kFlagUG02AmmoTaken = 708,
kFlagRC51Discovered = 709,
@@ -1275,27 +1283,27 @@ enum Scenes {
kSceneRC03 = 80, // Bullet Bob's Runner Surplus - Outside
kSceneRC04 = 81, // Bullet Bob's Runner Surplus - Inside
kSceneTB02 = 82, // Tyrell Building - Reception
- kSceneTB03 = 83,
+ kSceneTB03 = 83, // Tyrell Building - Reception back
kSceneTB05 = 84, // Tyrell Building - Grav Test Lab - Iutside
kSceneTB06 = 85, // Tyrell Building - Grav Test Lab - Inside
- kSceneUG01 = 86, // Underground - Under Bullet Bob entrance
- kSceneUG02 = 87, // Underground - Under Green pawn
- kSceneUG03 = 88,
- kSceneUG04 = 89,
- kSceneUG05 = 90,
- kSceneUG06 = 91,
- kSceneUG07 = 92,
- kSceneUG08 = 93,
- kSceneUG09 = 94,
- kSceneUG10 = 95, // Undergound - Bridge
- kSceneUG12 = 96,
- kSceneUG13 = 97,
+ kSceneUG01 = 86, // Underground - Under RC03
+ kSceneUG02 = 87, // Underground - Under HC03
+ kSceneUG03 = 88, // Underground - Chair
+ kSceneUG04 = 89, // Underground - Rails with crash - start
+ kSceneUG05 = 90, // Underground - Under HF07 - Rails with cars
+ kSceneUG06 = 91, // Underground - Under NR01 - Metro entrance
+ kSceneUG07 = 92, // Underground - Pipe
+ kSceneUG08 = 93, // Underground - Elevator
+ kSceneUG09 = 94, // Underground - Behind CT12
+ kSceneUG10 = 95, // Underground - Moving bridge
+ kSceneUG12 = 96, // Underground - Gate
+ kSceneUG13 = 97, // Underground - Homeless' living room
kSceneUG14 = 98,
kSceneUG15 = 99,
- kSceneUG16 = 100,
- kSceneUG17 = 101,
- kSceneUG18 = 102,
- kSceneUG19 = 103,
+ kSceneUG16 = 100, // Underground - Under DR06
+ kSceneUG17 = 101, // Underground - Under TB03
+ kSceneUG18 = 102, // Underground - Pit
+ kSceneUG19 = 103, // Underground - Under MA07
kSceneBB51 = 104, // Bradbury Building - Billiard room - Back
kSceneCT51 = 105, // Chinatown - Yukon Hotel - Backroom - back
kSceneHC04 = 106, // Hawker's Circle - Kingston kitchen
@@ -1305,8 +1313,7 @@ enum Scenes {
kSceneBB12 = 120 // Bradbury Building - Monkey room
};
-enum Sets
-{
+enum Sets {
kSetAR01_AR02 = 0,
kSetBB02_BB04_BB06_BB51 = 1,
kSetBB06_BB07 = 2, //BB06
@@ -1862,15 +1869,17 @@ enum GoalBulletBob {
kGoalBulletBobDefault = 0,
kGoalBulletBobWarningMcCoy = 1,
kGoalBulletBobShootMcCoy = 2,
- kGoalBulletBobShotMcCoy = 3, // has no use
- kGoalBulletBobDead = 4
+ kGoalBulletBobWillShotMcCoy = 3, // has no use
+ kGoalBulletBobDead = 4,
+ kGoalBulletBobShotMcCoy = 6,
+ kGoalBulletBobGone = 99
};
enum GoalRunciter {
kGoalRunciterDefault = 0,
- kGoalRunciterWalkAroundRC02 = 1,
+ kGoalRunciterRC02WalkAround = 1,
kGoalRunciterGoToFreeSlotGH = 2,
- kGoalRunciterAtShop = 300,
+ kGoalRunciterRC02Wait = 300,
kGoalRunciterDead = 599
};
diff --git a/engines/bladerunner/script/ai/bullet_bob.cpp b/engines/bladerunner/script/ai/bullet_bob.cpp
index 1a97a826cd..75acdfdb21 100644
--- a/engines/bladerunner/script/ai/bullet_bob.cpp
+++ b/engines/bladerunner/script/ai/bullet_bob.cpp
@@ -79,7 +79,7 @@ bool AIScriptBulletBob::Update() {
Actor_Face_Heading(kActorBulletBob, 208, false);
_animationFrame = 0;
_animationState = 2;
- Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy);
+ Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobWillShotMcCoy);
Game_Flag_Set(kFlagRC04BobShootMcCoy);
return true;
}
@@ -142,7 +142,7 @@ bool AIScriptBulletBob::ShotAtAndHit() {
Global_Variable_Increment(kVariableBobShot, 1);
if (Global_Variable_Query(kVariableBobShot) > 0) {
Actor_Set_Targetable(kActorBulletBob, false);
- Actor_Set_Goal_Number(kActorBulletBob, 99);
+ Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobGone);
_animationFrame = 0;
_animationState = 3;
Ambient_Sounds_Play_Speech_Sound(kActorGordo, 9000, 100, 0, 0, 0); // not a typo, it's really from Gordo
@@ -178,7 +178,7 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) {
return true;
}
- if (newGoalNumber == kGoalBulletBobDead
+ if ( newGoalNumber == kGoalBulletBobDead
&& !Actor_Clue_Query(kActorMcCoy, kClueVKBobGorskyReplicant)
) {
Delay(2000);
@@ -189,11 +189,11 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) {
return true;
}
- if (newGoalNumber == 6) {
+ if (newGoalNumber == kGoalBulletBobShotMcCoy) {
Scene_Exits_Disable();
Actor_Force_Stop_Walking(kActorMcCoy);
Ambient_Sounds_Play_Speech_Sound(kActorMcCoy, 9900, 100, 0, 0, 0);
- Actor_Change_Animation_Mode(kActorMcCoy, 48);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
Actor_Retired_Here(kActorMcCoy, 6, 6, 1, -1);
Scene_Exits_Enable();
return true;
@@ -268,7 +268,7 @@ bool AIScriptBulletBob::UpdateAnimation(int *animation, int *frame) {
}
if (_animationFrame == 5) {
Sound_Play(493, 90, 0, 0, 50);
- Actor_Set_Goal_Number(kActorBulletBob, 6);
+ Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy);
}
break;
diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp
index f673860119..6c3e9e2c80 100644
--- a/engines/bladerunner/script/ai/free_slot_a.cpp
+++ b/engines/bladerunner/script/ai/free_slot_a.cpp
@@ -51,9 +51,15 @@ void AIScriptFreeSlotA::Initialize() {
bool AIScriptFreeSlotA::Update() {
switch (Global_Variable_Query(kVariableChapter)) {
case 4:
- if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02 && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02) {
+ if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02
+ && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02
+ ) {
int goal = Actor_Query_Goal_Number(kActorFreeSlotA);
- if ((goal == 302 || goal == 303) && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48) {
+ if ((goal == 302
+ || goal == 303
+ )
+ && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
+ ) {
Actor_Set_Goal_Number(kActorFreeSlotA, 304);
} else if (goal == 309) {
float x, y, z;
@@ -72,7 +78,8 @@ bool AIScriptFreeSlotA::Update() {
switch (Actor_Query_Goal_Number(kActorFreeSlotA)) {
case 306:
if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set()
- && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48) {
+ && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48
+ ) {
Actor_Set_Goal_Number(kActorFreeSlotA, 308);
}
break;
diff --git a/engines/bladerunner/script/ai/mutant1.cpp b/engines/bladerunner/script/ai/mutant1.cpp
index fa9b736671..3849cfcaea 100644
--- a/engines/bladerunner/script/ai/mutant1.cpp
+++ b/engines/bladerunner/script/ai/mutant1.cpp
@@ -295,7 +295,7 @@ bool AIScriptMutant1::GoalChanged(int currentGoalNumber, int newGoalNumber) {
break;
case 8:
- if (Game_Flag_Query(623) == 1) {
+ if (Game_Flag_Query(kFlagUG07Empty)) {
AI_Movement_Track_Append(kActorMutant1, 418, 0);
AI_Movement_Track_Append(kActorMutant1, 417, 0);
AI_Movement_Track_Append(kActorMutant1, 539, 0);
diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp
index 0348806508..718a39aff7 100644
--- a/engines/bladerunner/script/ai/officer_leary.cpp
+++ b/engines/bladerunner/script/ai/officer_leary.cpp
@@ -91,7 +91,7 @@ bool AIScriptOfficerLeary::Update() {
return false;
}
- if ( Game_Flag_Query(623)
+ if ( Game_Flag_Query(kFlagUG07Empty)
&& !Game_Flag_Query(664)
) {
Game_Flag_Set(664);
diff --git a/engines/bladerunner/script/ai/rajif.cpp b/engines/bladerunner/script/ai/rajif.cpp
index 26cf41282f..3703e74b64 100644
--- a/engines/bladerunner/script/ai/rajif.cpp
+++ b/engines/bladerunner/script/ai/rajif.cpp
@@ -37,7 +37,9 @@ void AIScriptRajif::Initialize() {
}
bool AIScriptRajif::Update() {
- if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorRajif) < 400)
+ if (Global_Variable_Query(kVariableChapter) == 5
+ && Actor_Query_Goal_Number(kActorRajif) < 400
+ )
Actor_Set_Goal_Number(kActorRajif, 599);
return false;
@@ -98,6 +100,7 @@ bool AIScriptRajif::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Change_Animation_Mode(kActorRajif, 0);
return true;
}
+
if (newGoalNumber == 599) {
Actor_Put_In_Set(kActorRajif, kSetFreeSlotI);
Actor_Set_At_Waypoint(kActorRajif, 41, 0);
diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp
index 8087489d49..11ad906593 100644
--- a/engines/bladerunner/script/ai/runciter.cpp
+++ b/engines/bladerunner/script/ai/runciter.cpp
@@ -57,19 +57,21 @@ bool AIScriptRunciter::Update() {
) {
Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterGoToFreeSlotGH);
}
+
if (Global_Variable_Query(kVariableChapter) == 4
- && Actor_Query_Goal_Number(kActorRunciter) < 300
+ && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait
) {
- Actor_Set_Goal_Number(kActorRunciter, 300);
+ Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02Wait);
}
+
return false;
}
void AIScriptRunciter::TimerExpired(int timer) {}
void AIScriptRunciter::CompletedMovementTrack() {
- if (Actor_Query_Goal_Number(kActorRunciter) == 1) {
- if (Player_Query_Current_Scene() == 79) {
+ if (Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02WalkAround) {
+ if (Player_Query_Current_Scene() == kSceneRC02) {
switch (Random_Query(1, 5)) {
case 2:
case 3:
@@ -85,7 +87,7 @@ void AIScriptRunciter::CompletedMovementTrack() {
}
}
Actor_Set_Goal_Number(kActorRunciter, 99);
- Actor_Set_Goal_Number(kActorRunciter, 1);
+ Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround);
//return true;
}
//return false;
@@ -102,12 +104,15 @@ void AIScriptRunciter::OtherAgentEnteredThisScene(int otherActorId) {}
void AIScriptRunciter::OtherAgentExitedThisScene(int otherActorId) {}
void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) {
- if (Actor_Query_Goal_Number(kActorRunciter) == 300 && combatMode == 1 && !Game_Flag_Query(705)) {
+ if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait
+ && combatMode
+ && !Game_Flag_Query(kFlagRC02RunciterTalkWithGun)
+ ) {
Actor_Set_Targetable(kActorRunciter, true);
Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
Actor_Says(kActorRunciter, 420, 12);
Actor_Face_Actor(kActorMcCoy, kActorRunciter, true);
- Actor_Change_Animation_Mode(kActorMcCoy, 5);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAim);
if (Actor_Clue_Query(kActorMcCoy, kClueZubensMotive)) {
Actor_Says(kActorMcCoy, 4770, -1);
Actor_Says(kActorRunciter, 590, 13);
@@ -145,7 +150,7 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM
Actor_Says(kActorRunciter, 530, 18);
Actor_Says(kActorRunciter, 540, 16);
}
- Game_Flag_Set(705);
+ Game_Flag_Set(kFlagRC02RunciterTalkWithGun);
}
}
@@ -180,7 +185,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
Actor_Set_At_Waypoint(kActorRunciter, 92, 567);
return false;
}
- if (newGoalNumber == kGoalRunciterWalkAroundRC02) {
+
+ if (newGoalNumber == kGoalRunciterRC02WalkAround) {
AI_Movement_Track_Flush(kActorRunciter);
if (Random_Query(0, 1) == 1) {
if (Random_Query(0, 1) == 0) {
@@ -198,6 +204,7 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Movement_Track_Repeat(kActorRunciter);
return true;
}
+
if (newGoalNumber == kGoalRunciterGoToFreeSlotGH) {
AI_Movement_Track_Flush(kActorRunciter);
AI_Movement_Track_Append(kActorRunciter, 39, 120);
@@ -205,7 +212,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
AI_Movement_Track_Repeat(kActorRunciter);
return false;
}
- if (newGoalNumber == kGoalRunciterAtShop) {
+
+ if (newGoalNumber == kGoalRunciterRC02Wait) {
Actor_Put_In_Set(kActorRunciter, kSetRC02_RC51);
Actor_Set_At_Waypoint(kActorRunciter, 93, 1007);
return false;
@@ -214,77 +222,95 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) {
}
bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
-
switch (_animationState) {
- case kRunciterStateDead:
- *animation = 528;
- _animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1;
- *frame = _animationFrame;
- break;
- case kRunciterStateDying:
- *animation = 528;
- _animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) {
- *animation = 528;
- _animationState = kRunciterStateDead;
- }
- *frame = _animationFrame;
- break;
- case 13:
+ case kRunciterStateIdle:
if (var_45CD78 == 0) {
- _animationFrame = 0;
- _animationState = _animationStateNext;
- *animation = _animationNext;
+ *animation = 529;
+ if (var_45CD84) {
+ var_45CD84--;
+ } else {
+ _animationFrame += var_45CD80;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) {
+ _animationFrame = 0;
+ }
+ if (_animationFrame < 0) {
+ _animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1;
+ }
+ --var_45CD7C;
+ if (var_45CD7C == 0) {
+ var_45CD80 = 2 * Random_Query(0, 1) - 1;
+ var_45CD7C = Random_Query(6, 14);
+ var_45CD84 = Random_Query(0, 4);
+ }
+ if (_animationFrame == 0) {
+ if (Random_Query(0, 1) == 1) {
+ var_45CD78 = Random_Query(1, 2);
+ var_45CD80 = 1;
+ var_45CD84 = 0;
+ }
+ }
+ }
} else if (var_45CD78 == 1) {
*animation = 530;
- _animationFrame += 3;
+ _animationFrame++;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) {
_animationFrame = 0;
- _animationState = _animationStateNext;
- *animation = _animationNext;
+ var_45CD78 = 0;
+ *animation = 529;
+ var_45CD7C = Random_Query(6, 14);
+ var_45CD80 = 2 * Random_Query(0, 1) - 1;
}
} else if (var_45CD78 == 2) {
*animation = 531;
- _animationFrame -= 3;
- if (_animationFrame - 3 < 0) {
- _animationFrame = 0;
- _animationState = _animationStateNext;
- *animation = _animationNext;
+ if (var_45CD84) {
+ var_45CD84--;
+ } else {
+ _animationFrame += var_45CD80;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
+ var_45CD84 = Random_Query(5, 15);
+ var_45CD80 = -1;
+ }
+ if (_animationFrame <= 0) {
+ _animationFrame = 0;
+ var_45CD78 = 0;
+ *animation = 529;
+ var_45CD7C = Random_Query(6, 14);
+ var_45CD80 = 2 * Random_Query(0, 1) - 1;
+ }
}
}
*frame = _animationFrame;
break;
- case 12:
- *animation = 532;
+
+ case kRunciterStateWalking:
+ *animation = 526;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) {
- *animation = 529;
- _animationState = 0;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) {
_animationFrame = 0;
- var_45CD78 = 0;
- Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle);
}
*frame = _animationFrame;
break;
- case 11:
- *animation = 541;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) {
+
+ case 2:
+ *animation = 533;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
_animationState = 0;
var_45CD78 = 0;
} else {
- *animation = 533;
- _animationState = 2;
+ _animationState = 4;
}
}
*frame = _animationFrame;
break;
- case 10:
- *animation = 540;
+
+ case 4:
+ *animation = 534;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -297,10 +323,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 9:
- *animation = 539;
+
+ case 5:
+ *animation = 535;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -313,10 +340,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 8:
- *animation = 538;
+
+ case 6:
+ *animation = 536;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -329,6 +357,7 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
+
case 7:
*animation = 537;
_animationFrame++;
@@ -345,10 +374,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 6:
- *animation = 536;
+
+ case 8:
+ *animation = 538;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -361,10 +391,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 5:
- *animation = 535;
+
+ case 9:
+ *animation = 539;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -377,10 +408,10 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 4:
- *animation = 534;
+ case 10:
+ *animation = 540;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
@@ -393,87 +424,77 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
}
*frame = _animationFrame;
break;
- case 2:
- *animation = 533;
- _animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) {
+
+ case 11:
+ *animation = 541;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) {
_animationFrame = 0;
if (var_45CD88) {
*animation = 529;
_animationState = 0;
var_45CD78 = 0;
} else {
- _animationState = 4;
+ *animation = 533;
+ _animationState = 2;
}
}
*frame = _animationFrame;
break;
- case kRunciterStateWalking:
- *animation = 526;
+
+ case 12:
+ *animation = 532;
_animationFrame++;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) {
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) {
+ *animation = 529;
+ _animationState = 0;
_animationFrame = 0;
+ var_45CD78 = 0;
+ Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle);
}
*frame = _animationFrame;
break;
- case kRunciterStateIdle:
+
+ case 13:
if (var_45CD78 == 0) {
- *animation = 529;
- if (var_45CD84) {
- var_45CD84--;
- } else {
- _animationFrame += var_45CD80;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) {
- _animationFrame = 0;
- }
- if (_animationFrame < 0) {
- _animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1;
- }
- --var_45CD7C;
- if (var_45CD7C == 0) {
- var_45CD80 = 2 * Random_Query(0, 1) - 1;
- var_45CD7C = Random_Query(6, 14);
- var_45CD84 = Random_Query(0, 4);
- }
- if (_animationFrame == 0) {
- if (Random_Query(0, 1) == 1) {
- var_45CD78 = Random_Query(1, 2);
- var_45CD80 = 1;
- var_45CD84 = 0;
- }
- }
- }
+ _animationFrame = 0;
+ _animationState = _animationStateNext;
+ *animation = _animationNext;
} else if (var_45CD78 == 1) {
*animation = 530;
- _animationFrame++;
+ _animationFrame += 3;
if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) {
_animationFrame = 0;
- var_45CD78 = 0;
- *animation = 529;
- var_45CD7C = Random_Query(6, 14);
- var_45CD80 = 2 * Random_Query(0, 1) - 1;
+ _animationState = _animationStateNext;
+ *animation = _animationNext;
}
} else if (var_45CD78 == 2) {
*animation = 531;
- if (var_45CD84) {
- var_45CD84--;
- } else {
- _animationFrame += var_45CD80;
- if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) {
- var_45CD84 = Random_Query(5, 15);
- var_45CD80 = -1;
- }
- if (_animationFrame <= 0) {
- _animationFrame = 0;
- var_45CD78 = 0;
- *animation = 529;
- var_45CD7C = Random_Query(6, 14);
- var_45CD80 = 2 * Random_Query(0, 1) - 1;
- }
+ _animationFrame -= 3;
+ if (_animationFrame - 3 < 0) {
+ _animationFrame = 0;
+ _animationState = _animationStateNext;
+ *animation = _animationNext;
}
}
*frame = _animationFrame;
break;
+
+ case kRunciterStateDying:
+ *animation = 528;
+ _animationFrame++;
+ if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) {
+ *animation = 528;
+ _animationState = kRunciterStateDead;
+ }
+ *frame = _animationFrame;
+ break;
+
+ case kRunciterStateDead:
+ *animation = 528;
+ _animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1;
+ *frame = _animationFrame;
+ break;
+
default:
*animation = 399;
_animationFrame = 0;
@@ -486,7 +507,9 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) {
bool AIScriptRunciter::ChangeAnimationMode(int mode) {
switch (mode) {
case kAnimationModeIdle:
- if (_animationState >= 2 && _animationState <= 11) {
+ if (_animationState >= 2
+ && _animationState <= 11
+ ) {
var_45CD88 = 1;
} else {
_animationState = 0;
@@ -494,6 +517,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
var_45CD78 = 0;
}
break;
+
case kAnimationModeWalk:
if (_animationState > 1) {
_animationState = 1;
@@ -504,6 +528,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
_animationNext = 526;
}
break;
+
case kAnimationModeTalk:
if (_animationState != 0) {
_animationState = 2;
@@ -515,6 +540,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 12:
if (_animationState != 0) {
_animationState = 2;
@@ -526,6 +552,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 13:
if (_animationState != 0) {
_animationState = 2;
@@ -537,6 +564,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 14:
if (_animationState != 0) {
_animationState = 2;
@@ -548,6 +576,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 15:
if (_animationState != 0) {
_animationState = 2;
@@ -559,6 +588,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 16:
if (_animationState != 0) {
_animationState = 2;
@@ -570,6 +600,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 17:
if (_animationState != 0) {
_animationState = 2;
@@ -581,6 +612,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 18:
if (_animationState != 0) {
_animationState = 2;
@@ -592,6 +624,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 19:
if (_animationState != 0) {
_animationState = 2;
@@ -603,11 +636,13 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) {
}
var_45CD88 = 0;
break;
+
case 23:
_animationState = 12;
_animationFrame = 0;
break;
- case 48:
+
+ case kAnimationModeDie:
_animationState = 14;
_animationFrame = 0;
break;
diff --git a/engines/bladerunner/script/scene/ct04.cpp b/engines/bladerunner/script/scene/ct04.cpp
index 613fd05829..a7740b0be2 100644
--- a/engines/bladerunner/script/scene/ct04.cpp
+++ b/engines/bladerunner/script/scene/ct04.cpp
@@ -38,8 +38,10 @@ void SceneScriptCT04::InitializeScene() {
Scene_Loop_Set_Default(kCT03LoopMain);
Setup_Scene_Information(-82.86f, -621.3f, 769.03f, 1020);
}
+
Scene_Exit_Add_2D_Exit(0, 590, 0, 639, 479, 1);
Scene_Exit_Add_2D_Exit(1, 194, 84, 320, 274, 0);
+
Ambient_Sounds_Add_Looping_Sound(54, 50, 1, 1);
Ambient_Sounds_Add_Looping_Sound(56, 15, -100, 1);
Ambient_Sounds_Add_Looping_Sound(105, 34, 100, 1);
diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp
index 51a3841bf2..afbdf7cfb5 100644
--- a/engines/bladerunner/script/scene/dr06.cpp
+++ b/engines/bladerunner/script/scene/dr06.cpp
@@ -152,7 +152,7 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) {
}
if (!Game_Flag_Query(kFlagDR06MannequinHeadOpen)) {
- Overlay_Play("DR06ovr2", 0, 1, 0, 0);
+ Overlay_Play("DR06ovr2", 0, true, false, 0);
Game_Flag_Set(kFlagDR06MannequinHeadOpen);
Sound_Play(160, 100, 0, 0, 50);
if (!Actor_Clue_Query(kActorMcCoy, kClueEnvelope)) {
@@ -202,6 +202,7 @@ bool SceneScriptDR06::ClickedOnExit(int exitId) {
}
return true;
}
+
if (exitId == 1) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -707.57f, 136.6f, -1132.64f, 0, true, false, 0)) {
Game_Flag_Set(kFlagDR06toUG16);
diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp
index e5afa3c98b..88f91817fa 100644
--- a/engines/bladerunner/script/scene/hf05.cpp
+++ b/engines/bladerunner/script/scene/hf05.cpp
@@ -47,6 +47,7 @@ void SceneScriptHF05::InitializeScene() {
Scene_Exit_Add_2D_Exit(2, 589, 0, 639, 479, 1);
Ambient_Sounds_Add_Looping_Sound(103, 40, 1, 1);
+
if (Game_Flag_Query(369)) {
Scene_Loop_Set_Default(kHF05LoopMainLoopHole);
addAmbientSounds();
diff --git a/engines/bladerunner/script/scene/hf07.cpp b/engines/bladerunner/script/scene/hf07.cpp
index 11593fb7d4..e35c4613bc 100644
--- a/engines/bladerunner/script/scene/hf07.cpp
+++ b/engines/bladerunner/script/scene/hf07.cpp
@@ -28,16 +28,19 @@ void SceneScriptHF07::InitializeScene() {
if (Game_Flag_Query(kFlagUG06toHF07) ) {
Setup_Scene_Information(-84.0f, 58.43f, -105.0f, 524);
} else {
- Setup_Scene_Information(298.0f, 58.43f, -71.0f, 700);
+ Setup_Scene_Information(298.0f, 58.43f, -71.0f, 700);
}
+
Scene_Exit_Add_2D_Exit(0, 289, 136, 344, 305, 0);
- Scene_Exit_Add_2D_Exit(1, 69, 264, 132, 303, 2);
+ Scene_Exit_Add_2D_Exit(1, 69, 264, 132, 303, 2);
+
Ambient_Sounds_Add_Looping_Sound(108, 100, 0, 1);
- Ambient_Sounds_Add_Looping_Sound(112, 32, 0, 1);
+ Ambient_Sounds_Add_Looping_Sound(112, 32, 0, 1);
Ambient_Sounds_Add_Sound(303, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0);
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(368)) {
Scene_Loop_Set_Default(2);
} else {
Scene_Loop_Set_Default(0);
@@ -73,7 +76,8 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) {
} else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) {
Async_Actor_Walk_To_XYZ(kActorLucy, 235.0f, 58.43f, -100.0f, 0, false);
}
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, 1, false, 0)) {
+
+ 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)) {
Actor_Face_Heading(kActorMcCoy, 0, false);
@@ -87,12 +91,14 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) {
}
return true;
}
+
if (exitId == 1) {
if (Actor_Query_In_Set(kActorDektora, kSetHF07)) {
Async_Actor_Walk_To_XYZ(kActorDektora, -73.0f, 58.43f, -7.0f, 0, false);
} else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) {
Async_Actor_Walk_To_XYZ(kActorLucy, -73.0f, 58.43f, -7.0f, 0, false);
}
+
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -84.0f, 58.43f, -105.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
@@ -117,7 +123,9 @@ void SceneScriptHF07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptHF07::PlayerWalkedIn() {
if (Game_Flag_Query(662)) {
int actorId = getAffectionTowardsActor();
- if (Game_Flag_Query(662) && actorId != -1) {
+ if (Game_Flag_Query(662)
+ && actorId != -1
+ ) {
Actor_Put_In_Set(actorId, kSetHF07);
if (Game_Flag_Query(kFlagUG06toHF07)) {
Actor_Set_At_XYZ(actorId, -73.0f, 58.43f, -7.0f, 224);
@@ -131,6 +139,7 @@ void SceneScriptHF07::PlayerWalkedIn() {
Loop_Actor_Travel_Stairs(kActorMcCoy, 30, false, kAnimationModeIdle);
Footstep_Sound_Override_Off();
}
+
Game_Flag_Reset(kFlagHF05toHF07);
Game_Flag_Reset(kFlagUG06toHF07);
}
diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp
index 5fa1e669c5..74eaedbaad 100644
--- a/engines/bladerunner/script/scene/ma02.cpp
+++ b/engines/bladerunner/script/scene/ma02.cpp
@@ -31,37 +31,46 @@ enum kMA02Exits {
void SceneScriptMA02::InitializeScene() {
if (Game_Flag_Query(kFlagMA04ToMA02)) {
- Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500);
+ Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500);
} else { // From MA06
- Setup_Scene_Information(23.19f, -144.12f, 378.27f, 750);
+ Setup_Scene_Information( 23.19f, -144.12f, 378.27f, 750);
if (Global_Variable_Query(kVariableChapter) == 4) {
Actor_Set_Goal_Number(kActorRajif, 300);
}
Game_Flag_Reset(kFlagMA04WatchedTV);
}
Scene_Exit_Add_2D_Exit(kMA02ExitMA06, 538, 84, 639, 327, 1);
- Scene_Exit_Add_2D_Exit(kMA02ExitMA04, 56, 98, 150, 260, 0);
- if (Global_Variable_Query(kVariableChapter) >= 4 && Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653)) {
+ Scene_Exit_Add_2D_Exit(kMA02ExitMA04, 56, 98, 150, 260, 0);
+
+ if (Global_Variable_Query(kVariableChapter) >= 4
+ && Global_Variable_Query(kVariableChapter) == 5
+ && Game_Flag_Query(653)
+ ) {
Actor_Set_Goal_Number(kActorMaggie, 599);
Actor_Change_Animation_Mode(kActorMaggie, 88);
Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04);
Actor_Set_At_XYZ(kActorMaggie, -35.51f, -144.12f, 428.0f, 0);
Actor_Retired_Here(kActorMaggie, 24, 24, 1, -1);
}
+
Ambient_Sounds_Add_Looping_Sound(104, 12, 0, 1);
Ambient_Sounds_Add_Looping_Sound(71, 25, 0, 1);
- Ambient_Sounds_Add_Sound(72, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(73, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(74, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(375, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(376, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(87, 10, 60, 12, 12, -100, 100, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(68, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
- Ambient_Sounds_Add_Sound(69, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 72, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 73, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 74, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound(375, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound(376, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 87, 10, 60, 12, 12, -100, 100, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 68, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
+ Ambient_Sounds_Add_Sound( 69, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0);
if (isPhoneRinging()) {
Ambient_Sounds_Add_Sound(403, 3, 3, 27, 27, -100, -100, -100, -100, 99, 0);
}
- if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+
+ if ( Global_Variable_Query(kVariableChapter) == 5
+ && Game_Flag_Query(653)
+ && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)
+ ) {
Overlay_Play("MA02OVER", 0, 1, 0, 0);
}
}
@@ -84,30 +93,34 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) {
ESPER_Flag_To_Activate();
return true;
}
- if (Object_Query_Click("BAR-MAIN", objectName) && !Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, 1, false, 0)) {
- Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true);
- if (Global_Variable_Query(kVariableChapter) < 4) {
- Actor_Set_Goal_Number(kActorMaggie, 3);
- } else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
- Overlay_Remove("MA02OVER");
- Item_Pickup_Spin_Effect(985, 480, 240);
- Actor_Voice_Over(1150, kActorVoiceOver);
- Actor_Voice_Over(1160, kActorVoiceOver);
- Actor_Voice_Over(1170, kActorVoiceOver);
- Actor_Voice_Over(1180, kActorVoiceOver);
- Actor_Voice_Over(1190, kActorVoiceOver);
- Actor_Voice_Over(1200, kActorVoiceOver);
- Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1);
- } else {
- Actor_Says(kActorMcCoy, 8526, 0);
+ if (Object_Query_Click("BAR-MAIN", objectName)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, true, false, 0)) {
+ Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true);
+ if (Global_Variable_Query(kVariableChapter) < 4) {
+ Actor_Set_Goal_Number(kActorMaggie, 3);
+ } else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) {
+ Overlay_Remove("MA02OVER");
+ Item_Pickup_Spin_Effect(985, 480, 240);
+ Actor_Voice_Over(1150, kActorVoiceOver);
+ Actor_Voice_Over(1160, kActorVoiceOver);
+ Actor_Voice_Over(1170, kActorVoiceOver);
+ Actor_Voice_Over(1180, kActorVoiceOver);
+ Actor_Voice_Over(1190, kActorVoiceOver);
+ Actor_Voice_Over(1200, kActorVoiceOver);
+ Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1);
+ } else {
+ Actor_Says(kActorMcCoy, 8526, 0);
+ }
+ return true;
}
- return true;
}
return false;
}
bool SceneScriptMA02::ClickedOnActor(int actorId) {
- if (actorId == kActorMaggie && Actor_Query_Goal_Number(kActorMaggie) == 599) {
+ if (actorId == kActorMaggie
+ && Actor_Query_Goal_Number(kActorMaggie) == 599
+ ) {
if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorMaggie, 30, true, false)) {
Actor_Face_Actor(kActorMcCoy, kActorMaggie, true);
Actor_Voice_Over(1140, kActorVoiceOver);
@@ -122,15 +135,16 @@ bool SceneScriptMA02::ClickedOnItem(int itemId, bool a2) {
bool SceneScriptMA02::ClickedOnExit(int exitId) {
if (exitId == kMA02ExitMA06) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, true, false, 0)) {
Music_Stop(10);
Game_Flag_Set(kFlagMA02toMA06);
Set_Enter(kSetMA06, kSceneMA06);
}
return true;
}
+
if (exitId == kMA02ExitMA04) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, true, false, 0)) {
Game_Flag_Set(kFlagMA02ToMA04);
Set_Enter(kSetMA04, kSceneMA04);
}
@@ -153,33 +167,37 @@ void SceneScriptMA02::PlayerWalkedIn() {
if (Game_Flag_Query(kFlagMA06ToMA02)) {
selectNextTvNews();
}
+
if (Game_Flag_Query(kFlagMA04ToMA02)) {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, 1, false, 0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, true, false, 0);
}
+
if ( Global_Variable_Query(kVariableChapter) == 4
- && !Game_Flag_Query(655)
+ && !Game_Flag_Query(kFlagMA02RajifTalk)
) {
- Game_Flag_Set(623);
- Game_Flag_Set(655);
- dialogueWithRajif();
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 0, false, 0);
+ Game_Flag_Set(kFlagUG07Empty);
+ Game_Flag_Set(kFlagMA02RajifTalk);
+ talkWithRajif();
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, false, false, 0);
Game_Flag_Set(kFlagMA02toMA06);
Set_Enter(kSetMA06, kSceneMA06);
// return true;
return;
}
+
if ( Global_Variable_Query(kVariableChapter) == 5
&& !Game_Flag_Query(654)
) {
if (Game_Flag_Query(653)) {
- Actor_Says(kActorMcCoy, 2390, 0);
+ Actor_Says(kActorMcCoy, 2390, kAnimationModeIdle);
Music_Play(2, 25, 0, 3, -1, 0, 0);
} else {
- Actor_Says(kActorMcCoy, 2385, 3);
+ Actor_Says(kActorMcCoy, 2385, kAnimationModeTalk);
}
Game_Flag_Set(654);
Autosave_Game(3);
}
+
if ( Global_Variable_Query(kVariableChapter) < 4
&& !Game_Flag_Query(kFlagMA04ToMA02)
&& Actor_Query_Goal_Number(kActorMaggie) != 2
@@ -199,6 +217,7 @@ void SceneScriptMA02::PlayerWalkedIn() {
}
}
}
+
Game_Flag_Reset(kFlagMA04ToMA02);
Game_Flag_Reset(kFlagMA06ToMA02);
//return false;
@@ -213,7 +232,7 @@ void SceneScriptMA02::PlayerWalkedOut() {
void SceneScriptMA02::DialogueQueueFlushed(int a1) {
}
-void SceneScriptMA02::dialogueWithRajif() {
+void SceneScriptMA02::talkWithRajif() {
Actor_Says(kActorMcCoy, 2365, 13);
Actor_Says(kActorRajif, 0, 13);
Actor_Says(kActorMcCoy, 2370, 13);
@@ -227,7 +246,7 @@ void SceneScriptMA02::dialogueWithRajif() {
}
bool SceneScriptMA02::isPhoneRinging() {
- return Global_Variable_Query(kVariableChapter) == 5
+ return Global_Variable_Query(kVariableChapter) == 5
&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallClovis)
&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallCrystal)
&& !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallDektora1)
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index b7a6da38e2..8d7bc4e504 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -33,10 +33,13 @@ enum kMA06Loops {
void SceneScriptMA06::InitializeScene() {
Setup_Scene_Information(40.0f, 1.0f, -20.0f, 400);
+
Ambient_Sounds_Add_Looping_Sound(210, 50, 0, 1);
Ambient_Sounds_Add_Looping_Sound(408, 33, 0, 1);
+
Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kMA06LoopDoorOpen, false);
Scene_Loop_Set_Default(kMA06LoopMain);
+
Sound_Play(209, 100, 50, 50, 100);
}
@@ -81,10 +84,12 @@ void SceneScriptMA06::PlayerWalkedIn() {
Actor_Face_Object(kActorMcCoy, "panel", true);
Delay(500);
activateElevator();
+
if (isElevatorOnDifferentFloor()) {
Sound_Play(114, 25, 0, 0, 50);
Delay(4000);
}
+
Game_Flag_Reset(kFlagMA01toMA06);
Game_Flag_Reset(kFlagMA02toMA06);
Game_Flag_Reset(kFlagMA07toMA06);
@@ -96,6 +101,7 @@ void SceneScriptMA06::PlayerWalkedIn() {
} else {
Set_Enter(kSetMA07, kSceneMA07);
}
+
Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
Sound_Play(208, 100, 50, 50, 50);
//return true;
@@ -130,11 +136,14 @@ void SceneScriptMA06::activateElevator() {
if (Game_Flag_Query(kFlagMA06toMA07)) {
break;
}
- Actor_Says(kActorAnsweringMachine, 80, 3);
+
+ Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk);
Player_Gains_Control();
int floor = Elevator_Activate(kElevatorMA);
Player_Loses_Control();
+
Scene_Loop_Start_Special(kSceneLoopModeOnce, kMA06LoopMain, true);
+
if (floor > 1) {
Game_Flag_Set(kFlagMA06toMA07);
} else if (floor == 1) {
@@ -147,12 +156,14 @@ void SceneScriptMA06::activateElevator() {
}
} else { // floor == 0
Actor_Says(kActorMcCoy, 2940, 18);
- if (Global_Variable_Query(kVariableChapter) == 4 && Game_Flag_Query(655)) {
+ if (Global_Variable_Query(kVariableChapter) == 4
+ && Game_Flag_Query(kFlagMA02RajifTalk)
+ ) {
Sound_Play(412, 100, 0, 0, 50);
Delay(500);
- Actor_Says(kActorAnsweringMachine, 610, 3);
+ Actor_Says(kActorAnsweringMachine, 610, kAnimationModeTalk);
Delay(500);
- Actor_Says(kActorMcCoy, 8527, 3);
+ Actor_Says(kActorMcCoy, 8527, kAnimationModeTalk);
} else {
Game_Flag_Set(kFlagMA06ToMA02);
Actor_Says(kActorAnsweringMachine, 90, 3);
diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp
index 65d2332d6c..27b489733b 100644
--- a/engines/bladerunner/script/scene/ma07.cpp
+++ b/engines/bladerunner/script/scene/ma07.cpp
@@ -131,12 +131,15 @@ void SceneScriptMA07::PlayerWalkedIn() {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -268.0f, -162.8f, 188.0f, 0, false, false, 0);
Game_Flag_Reset(kFlagPS14toMA07);
}
+
if (Actor_Query_Goal_Number(kActorRachael) == 300) {
Actor_Set_Goal_Number(kActorRachael, 305);
}
+
if (Game_Flag_Query(kFlagMA06toMA07)) {
Game_Flag_Reset(kFlagMA06toMA07);
}
+
if (!Game_Flag_Query(648)
&& Game_Flag_Query(671)
&& Global_Variable_Query(kVariableChapter) == 4
@@ -144,6 +147,7 @@ void SceneScriptMA07::PlayerWalkedIn() {
Scene_Exits_Disable();
Actor_Set_Goal_Number(kActorGaff, 300);
}
+
if (Game_Flag_Query(666)) {
Actor_Voice_Over(1360, kActorVoiceOver);
Actor_Voice_Over(1370, kActorVoiceOver);
diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp
index f3b757ecf6..15c4d5e45a 100644
--- a/engines/bladerunner/script/scene/rc01.cpp
+++ b/engines/bladerunner/script/scene/rc01.cpp
@@ -405,7 +405,7 @@ void SceneScriptRC01::walkToCenter() {
bool SceneScriptRC01::ClickedOnExit(int exitId) {
if (exitId == kRC01ExitRC02) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -174.77f, 5.55f, 25.95f, 12, true, false, 0)) {
- if (Game_Flag_Query(705)) {
+ if (Game_Flag_Query(kFlagRC02RunciterTalkWithGun)) {
Actor_Says(kActorMcCoy, 8522, 14);
} else {
switch (Global_Variable_Query(kVariableChapter)) {
diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp
index a84fe99bcf..93bedec479 100644
--- a/engines/bladerunner/script/scene/rc02.cpp
+++ b/engines/bladerunner/script/scene/rc02.cpp
@@ -160,7 +160,7 @@ void SceneScriptRC02::dialogueWithRunciter() {
Actor_Says(kActorRunciter, 130, 19);
Actor_Says(kActorMcCoy, 4605, 13);
Actor_Says(kActorRunciter, 140, 16);
- Game_Flag_Set(kFlagRC02TalkedToRunciter);
+ Game_Flag_Set(kFlagRC02RunciterTalk1);
break;
case 10: // LUCY
@@ -223,18 +223,12 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
} else {
Actor_Says(kActorMcCoy, 8720, 17);
}
- } else if (Game_Flag_Query(705)
- || Game_Flag_Query(706)
+ return true;
+ }
+
+ if (!Game_Flag_Query(kFlagRC02RunciterTalkWithGun)
+ && !Game_Flag_Query(kFlagRC02RunciterTalk2)
) {
- Actor_Says(kActorMcCoy, 4805, 11);
- Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
- if (Game_Flag_Query(706)) {
- Actor_Says(kActorRunciter, 720, 15);
- } else {
- Actor_Says(kActorRunciter, 730, 14);
- }
- Actor_Face_Heading(kActorRunciter, 1007, false);
- } else {
Actor_Says(kActorMcCoy, 4690, 11);
Actor_Says(kActorMcCoy, 4695, 13);
Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
@@ -251,14 +245,25 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
Actor_Says(kActorRunciter, 430, 16);
Actor_Face_Heading(kActorRunciter, 1007, false);
}
- Game_Flag_Set(706);
+ Game_Flag_Set(kFlagRC02RunciterTalk2);
+ return true;
}
+
+ Actor_Says(kActorMcCoy, 4805, 11);
+ Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
+ if (Game_Flag_Query(kFlagRC02RunciterTalk2)) {
+ Actor_Says(kActorRunciter, 720, 15);
+ } else {
+ Actor_Says(kActorRunciter, 730, 14);
+ }
+ Actor_Face_Heading(kActorRunciter, 1007, false);
return true;
}
AI_Movement_Track_Pause(kActorRunciter);
Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorRunciter, 48, true, false);
Actor_Face_Actor(kActorMcCoy, kActorRunciter, true);
+
if (!Game_Flag_Query(kFlagRC02RunciterInterview)) {
Actor_Says(kActorMcCoy, 4560, 13);
Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
@@ -274,7 +279,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
return true;
}
- if (Game_Flag_Query(kFlagRC02TalkedToRunciter)) {
+ if (Game_Flag_Query(kFlagRC02RunciterTalk1)) {
if (Player_Query_Agenda() == kPlayerAgendaPolite) {
Game_Flag_Reset(kFlagNotUsed0);
dialogueWithRunciter();
@@ -302,7 +307,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) {
Actor_Says(kActorRunciter, 240, 16);
Actor_Says(kActorMcCoy, 4640, 17);
}
- Game_Flag_Reset(kFlagRC02TalkedToRunciter);
+ Game_Flag_Reset(kFlagRC02RunciterTalk1);
AI_Movement_Track_Unpause(kActorRunciter);
return true;
}
@@ -346,6 +351,7 @@ bool SceneScriptRC02::ClickedOnExit(int exitId) {
}
return true;
}
+
if (exitId == kRC02ExitRC51) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -20.2f, -1238.73f, 108152.73f, 0, true, false, 0)) {
Async_Actor_Walk_To_XYZ(kActorMcCoy, -8.87f, -1238.89f, 108076.27f, 0, false);
@@ -382,12 +388,12 @@ void SceneScriptRC02::PlayerWalkedIn() {
Game_Flag_Set(kFlagRC02Entered);
}
if (Actor_Query_Which_Set_In(kActorRunciter) == kSetRC02_RC51
- && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterAtShop
+ && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait
) {
- Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterWalkAroundRC02);
+ Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround);
}
- if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterAtShop
- && !Game_Flag_Query(704)
+ if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait
+ && !Game_Flag_Query(kFlagRC02EnteredChapter4)
) {
Actor_Face_Actor(kActorRunciter, kActorMcCoy, true);
Actor_Says(kActorRunciter, 370, 12);
@@ -399,7 +405,7 @@ void SceneScriptRC02::PlayerWalkedIn() {
Actor_Face_Heading(kActorRunciter, 1007, false);
Actor_Says(kActorRunciter, 400, 13);
Actor_Says(kActorRunciter, 410, 12);
- Game_Flag_Set(704);
+ Game_Flag_Set(kFlagRC02EnteredChapter4);
}
} else {
Player_Loses_Control();
diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp
index 122ff652c9..9287d7a098 100644
--- a/engines/bladerunner/script/scene/rc04.cpp
+++ b/engines/bladerunner/script/scene/rc04.cpp
@@ -457,7 +457,7 @@ void SceneScriptRC04::PlayerWalkedIn() {
) {
Actor_Says(kActorDispatcher, 40, 3);
Actor_Says(kActorBulletBob, 890, 37);
- Actor_Set_Goal_Number(kActorBulletBob, 2);
+ Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShootMcCoy);
}
Game_Flag_Set(kFlagRC04Entered);
diff --git a/engines/bladerunner/script/scene/ug02.cpp b/engines/bladerunner/script/scene/ug02.cpp
index 12be0c2547..74b421fb44 100644
--- a/engines/bladerunner/script/scene/ug02.cpp
+++ b/engines/bladerunner/script/scene/ug02.cpp
@@ -30,8 +30,10 @@ void SceneScriptUG02::InitializeScene() {
} else {
Setup_Scene_Information( -95.0f, 74.78f, -503.0f, 556);
}
+
Scene_Exit_Add_2D_Exit(0, 529, 130, 607, 277, 0);
Scene_Exit_Add_2D_Exit(1, 305, 36, 335, 192, 0);
+
Ambient_Sounds_Add_Looping_Sound(332, 43, 0, 1);
Ambient_Sounds_Add_Looping_Sound(333, 43, 0, 1);
Ambient_Sounds_Add_Sound(303, 5, 50, 17, 37, 100, 100, -101, -101, 0, 0);
diff --git a/engines/bladerunner/script/scene/ug05.cpp b/engines/bladerunner/script/scene/ug05.cpp
index e02a9bd18b..cbce58e4a2 100644
--- a/engines/bladerunner/script/scene/ug05.cpp
+++ b/engines/bladerunner/script/scene/ug05.cpp
@@ -123,13 +123,15 @@ 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(663)
+ && !Game_Flag_Query(368)
+ ) {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -356.35f, 132.77f, -1092.36f, 0, false, false, 0);
Game_Flag_Set(kFlagUG06toHF07);
Set_Enter(kSetHF07, kSceneHF07);
} else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -156.72f, 3.03f, -1118.17f, 0, true, false, 0)) {
Actor_Face_Heading(kActorMcCoy, 760, false);
- Loop_Actor_Travel_Stairs(kActorMcCoy, 3, 1, kAnimationModeIdle);
+ Loop_Actor_Travel_Stairs(kActorMcCoy, 3, true, kAnimationModeIdle);
Game_Flag_Set(kFlagUG06toHF07);
Set_Enter(kSetHF07, kSceneHF07);
}
diff --git a/engines/bladerunner/script/scene/ug06.cpp b/engines/bladerunner/script/scene/ug06.cpp
index 99ebc54f3c..9ac5bcab88 100644
--- a/engines/bladerunner/script/scene/ug06.cpp
+++ b/engines/bladerunner/script/scene/ug06.cpp
@@ -140,7 +140,7 @@ void SceneScriptUG06::PlayerWalkedIn() {
}
if ( Global_Variable_Query(kVariableChapter) == 4
- && !Game_Flag_Query(524)
+ && !Game_Flag_Query(kFlagUG06Chapter4Started)
) {
Player_Loses_Control();
Actor_Voice_Over(2620, kActorVoiceOver);
@@ -153,7 +153,7 @@ void SceneScriptUG06::PlayerWalkedIn() {
Actor_Voice_Over(2690, kActorVoiceOver);
Actor_Voice_Over(2700, kActorVoiceOver);
Player_Gains_Control();
- Game_Flag_Set(524);
+ Game_Flag_Set(kFlagUG06Chapter4Started);
Autosave_Game(2);
}
//return false;
diff --git a/engines/bladerunner/script/scene/ug07.cpp b/engines/bladerunner/script/scene/ug07.cpp
index 1b0994331d..9892d16067 100644
--- a/engines/bladerunner/script/scene/ug07.cpp
+++ b/engines/bladerunner/script/scene/ug07.cpp
@@ -35,7 +35,7 @@ void SceneScriptUG07::InitializeScene() {
Game_Flag_Reset(kFlagUG10toUG07);
}
- if (Game_Flag_Query(623)) {
+ if (Game_Flag_Query(kFlagUG07Empty)) {
Scene_Exit_Add_2D_Exit(0, 0, 192, 51, 334, 0);
Scene_Exit_Add_2D_Exit(1, 226, 224, 314, 396, 1);
}
@@ -176,7 +176,7 @@ void SceneScriptUG07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptUG07::PlayerWalkedIn() {
if ( Global_Variable_Query(kVariableChapter) == 4
- && !Game_Flag_Query(623)
+ && !Game_Flag_Query(kFlagUG07Empty)
) {
Actor_Set_Goal_Number(kActorOfficerLeary, 307);
Actor_Set_Goal_Number(kActorOfficerGrayford, 307);
diff --git a/engines/bladerunner/script/scene/ug08.cpp b/engines/bladerunner/script/scene/ug08.cpp
index d3621af467..65e790b7c6 100644
--- a/engines/bladerunner/script/scene/ug08.cpp
+++ b/engines/bladerunner/script/scene/ug08.cpp
@@ -24,6 +24,13 @@
namespace BladeRunner {
+enum kUG08Loops {
+ kUG08LoopElevatorComingUp = 0,
+ kUG08LoopMainLoopElevator = 1,
+ kUG08LoopElevatorGoingDown = 3,
+ kUG08LoopMainNoElevator = 4
+};
+
void SceneScriptUG08::InitializeScene() {
if (Game_Flag_Query(kFlagUG13toUG08)) {
Setup_Scene_Information(-124.0f, 93.18f, 71.0f, 745);
@@ -50,18 +57,18 @@ void SceneScriptUG08::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(610)) {
- Game_Flag_Set(431);
- Game_Flag_Set(610);
+ if (!Game_Flag_Query(kFlagUG08Entered)) {
+ Game_Flag_Set(kFlagUB08ElevatorUp);
+ Game_Flag_Set(kFlagUG08Entered);
}
if (Game_Flag_Query(kFlagUG13toUG08)) {
- Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false);
- Scene_Loop_Set_Default(1);
- } else if (Game_Flag_Query(431)) {
- Scene_Loop_Set_Default(1);
+ Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kUG08LoopElevatorComingUp, false);
+ Scene_Loop_Set_Default(kUG08LoopMainLoopElevator);
+ } else if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
+ Scene_Loop_Set_Default(kUG08LoopMainLoopElevator);
} else {
- Scene_Loop_Set_Default(4);
+ Scene_Loop_Set_Default(kUG08LoopMainNoElevator);
}
}
@@ -108,9 +115,9 @@ bool SceneScriptUG08::ClickedOnExit(int exitId) {
Player_Loses_Control();
Actor_Set_Invisible(kActorMcCoy, true);
Game_Flag_Set(kFlagUG08toUG13);
- Game_Flag_Reset(431);
+ Game_Flag_Reset(kFlagUB08ElevatorUp);
Set_Enter(kSetUG13, kSceneUG13);
- Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kUG08LoopElevatorGoingDown, false);
return false;
}
}
diff --git a/engines/bladerunner/script/scene/ug09.cpp b/engines/bladerunner/script/scene/ug09.cpp
index e6613c1d9b..3348272ea3 100644
--- a/engines/bladerunner/script/scene/ug09.cpp
+++ b/engines/bladerunner/script/scene/ug09.cpp
@@ -136,7 +136,7 @@ void SceneScriptUG09::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
void SceneScriptUG09::PlayerWalkedIn() {
if (Global_Variable_Query(kVariableChapter) == 4
- && Game_Flag_Query(623)
+ && Game_Flag_Query(kFlagUG07Empty)
) {
Game_Flag_Set(630);
}
diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp
index d6dfbfa0fc..da212b74a7 100644
--- a/engines/bladerunner/script/scene/ug13.cpp
+++ b/engines/bladerunner/script/scene/ug13.cpp
@@ -34,7 +34,7 @@ void SceneScriptUG13::InitializeScene() {
Actor_Set_Invisible(kActorMcCoy, false);
}
- if (!Game_Flag_Query(431)) {
+ if (!Game_Flag_Query(kFlagUB08ElevatorUp)) {
Scene_Exit_Add_2D_Exit(0, 394, 205, 464, 281, 0);
}
Scene_Exit_Add_2D_Exit(1, 560, 90, 639, 368, 1);
@@ -62,7 +62,7 @@ void SceneScriptUG13::InitializeScene() {
if (Game_Flag_Query(kFlagUG08toUG13)) {
Scene_Loop_Start_Special(0, 0, 0);
Scene_Loop_Set_Default(1);
- } else if (Game_Flag_Query(431)) {
+ } else if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
Scene_Loop_Set_Default(4);
} else {
Scene_Loop_Set_Default(1);
@@ -98,16 +98,16 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("BOLLARD", objectName)) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 7.0f, 44.0f, -695.0f, 0, true, false, 0)) {
Actor_Face_Object(kActorMcCoy, "BOLLARD", true);
- if (Game_Flag_Query(431)) {
+ if (Game_Flag_Query(kFlagUB08ElevatorUp)) {
Scene_Loop_Set_Default(1);
Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false);
- Game_Flag_Reset(431);
+ Game_Flag_Reset(kFlagUB08ElevatorUp);
Game_Flag_Set(436);
return true;
} else {
Scene_Loop_Set_Default(4);
Scene_Loop_Start_Special(kSceneLoopModeOnce, 3, false);
- Game_Flag_Set(431);
+ Game_Flag_Set(kFlagUB08ElevatorUp);
Scene_Exit_Remove(0);
return true;
}
@@ -122,15 +122,24 @@ bool SceneScriptUG13::ClickedOnActor(int actorId) {
) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -248.0f, 44.0f, -390.0f, 12, true, false, 0)) {
Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
- if (Actor_Query_Goal_Number(kActorTransient) != 6 && Actor_Query_Goal_Number(kActorTransient) != 599) {
+ if (Actor_Query_Goal_Number(kActorTransient) != 6
+ && Actor_Query_Goal_Number(kActorTransient) != 599
+ ) {
if (!Game_Flag_Query(554)) {
- sub_40223C();
+ Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
+ Game_Flag_Set(554);
+ Actor_Says(kActorMcCoy, 5560, 13);
+ Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18);
+ Actor_Says(kActorTransient, 70, 31);
+ Actor_Says(kActorTransient, 80, 32);
+ Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk);
+ Actor_Says(kActorTransient, 90, 32);
} else if (!Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1) || !Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) {
- sub_402AD4();
+ dialogueWithHomeless1();
} else {
Actor_Set_Goal_Number(kActorTransient, 391);
if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) {
- sub_402AD4();
+ dialogueWithHomeless1();
} else {
Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
Actor_Says(kActorMcCoy, 5600, 14);
@@ -170,14 +179,13 @@ bool SceneScriptUG13::ClickedOnItem(int itemId, bool a2) {
}
bool SceneScriptUG13::ClickedOnExit(int exitId) {
-
if (exitId == 0) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -32.0f, 54.63f, -883.0f, 0, true, false, 0)) {
Player_Loses_Control();
Game_Flag_Set(kFlagUG13toUG08);
- Game_Flag_Set(431);
+ Game_Flag_Set(kFlagUB08ElevatorUp);
Set_Enter(kSetUG08, kSceneUG08);
- Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, 0);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false);
}
return true;
}
@@ -194,7 +202,7 @@ bool SceneScriptUG13::ClickedOnExit(int exitId) {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -267.0f, 44.0f, -795.0f, 0, true, false, 0)) {
Actor_Face_Heading(kActorMcCoy, 830, false);
Footstep_Sound_Override_On(3);
- Loop_Actor_Travel_Stairs(kActorMcCoy, 11, 1, kAnimationModeIdle);
+ Loop_Actor_Travel_Stairs(kActorMcCoy, 11, true, kAnimationModeIdle);
Footstep_Sound_Override_Off();
if (!sub_402AD0()) {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, -477.0f, 141.9f, -870.0f, 0, false, false, 0);
@@ -270,13 +278,13 @@ void SceneScriptUG13::PlayerWalkedIn() {
if ( Actor_Query_Goal_Number(kActorTransient) >= 390
&& !Game_Flag_Query(kFlagCT04HomelessKilledByMcCoy)
) {
- if (Game_Flag_Query(553)) {
+ if (!Game_Flag_Query(kFlagUG13Entered)) {
+ Game_Flag_Set(kFlagUG13Entered);
+ Actor_Says(kActorTransient, 50, kAnimationModeTalk);
+ } else {
if (Random_Query(1, 3) == 1) {
Actor_Set_Goal_Number(kActorTransient, 395);
}
- } else {
- Game_Flag_Set(553);
- Actor_Says(kActorTransient, 50, kAnimationModeTalk);
}
}
//return false;
@@ -299,17 +307,6 @@ void SceneScriptUG13::PlayerWalkedOut() {
void SceneScriptUG13::DialogueQueueFlushed(int a1) {
}
-void SceneScriptUG13::sub_40223C() {
- Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
- Game_Flag_Set(554);
- Actor_Says(kActorMcCoy, 5560, 13);
- Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18);
- Actor_Says(kActorTransient, 70, 31);
- Actor_Says(kActorTransient, 80, 32);
- Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk);
- Actor_Says(kActorTransient, 90, 32);
-}
-
void SceneScriptUG13::sub_4023D8() {
Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview1, false, kActorTransient);
@@ -343,68 +340,57 @@ void SceneScriptUG13::sub_4025E0() {
Actor_Says(kActorTransient, 260, 32);
}
-void SceneScriptUG13::sub_402960() {
- Actor_Says(kActorMcCoy, 5670, 9);
- Actor_Says(kActorTransient, 340, 31);
- Actor_Says(kActorMcCoy, 5690, 19);
- Actor_Says(kActorTransient, 350, 32);
- Actor_Says(kActorMcCoy, 5695, 14);
- Actor_Says(kActorTransient, 360, 33);
- Actor_Voice_Over(2710, kActorVoiceOver);
- Actor_Voice_Over(2730, kActorVoiceOver);
- Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient);
-}
-
int SceneScriptUG13::sub_402AD0() {
return 0;
}
-void SceneScriptUG13::sub_402AD4() {
+void SceneScriptUG13::dialogueWithHomeless1() {
Dialogue_Menu_Clear_List();
- DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1);
+ DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1); // OTHERS
if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1)) {
- DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5);
+ DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5); // FAT MAN
}
- DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6);
+ DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6); // SEWERS
if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) {
- DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7);
+ DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7); // GIVE FLASK
}
- Dialogue_Menu_Add_DONE_To_List(1360);
+ Dialogue_Menu_Add_DONE_To_List(1360); // DONE
Dialogue_Menu_Appear(320, 240);
int answer = Dialogue_Menu_Query_Input();
Dialogue_Menu_Disappear();
switch (answer) {
- case 1360:
- return;
+ case 1320: // OTHERS
+ sub_4023D8();
+ break;
- case 1350:
- Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy);
- Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23);
- Item_Pickup_Spin_Effect(945, 193, 325);
- Actor_Says(kActorTransient, 290, 33);
- Actor_Says(kActorMcCoy, 5660, 13);
- Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe);
- sub_402E24();
+ case 1330: // FAT MAN
+ Actor_Says(kActorMcCoy, 5585, 16);
+ sub_4025E0();
break;
- case 1340:
+ case 1340: // SEWERS
Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -10);
Actor_Says(kActorMcCoy, 5590, 15);
Actor_Says(kActorTransient, 270, 31);
Actor_Says(kActorMcCoy, 5655, 16);
Actor_Says(kActorTransient, 280, 32);
break;
- case 1330:
- Actor_Says(kActorMcCoy, 5585, 16);
- sub_4025E0();
- break;
- case 1320:
- sub_4023D8();
+ case 1350: // GIVE FLASK
+ Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy);
+ Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23);
+ Item_Pickup_Spin_Effect(945, 193, 325);
+ Actor_Says(kActorTransient, 290, 33);
+ Actor_Says(kActorMcCoy, 5660, 13);
+ Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe);
+ dialogueWithHomeless2();
break;
+ case 1360: // DONE
+ return;
+
default:
Actor_Face_Actor(kActorMcCoy, kActorTransient, true);
Actor_Says(kActorMcCoy, 5600, 14);
@@ -416,18 +402,18 @@ void SceneScriptUG13::sub_402AD4() {
}
}
-void SceneScriptUG13::sub_402E24() {
+void SceneScriptUG13::dialogueWithHomeless2() {
Actor_Set_Friendliness_To_Other(kActorTransient, kActorMcCoy, 40);
Dialogue_Menu_Clear_List();
- DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8);
- DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1);
- DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1);
+ DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8); // DIRECTIONS
+ DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1); // FAT MAN
+ DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1); // REPLICANTS
Dialogue_Menu_Appear(320, 240);
int answer = Dialogue_Menu_Query_Input();
Dialogue_Menu_Disappear();
- if (answer == 1370) {
+ if (answer == 1370) { // DIRECTIONS
Actor_Says(kActorMcCoy, 5665, 16);
Actor_Says(kActorTransient, 300, 32);
Actor_Says(kActorMcCoy, 5680, 19);
@@ -436,14 +422,22 @@ void SceneScriptUG13::sub_402E24() {
Actor_Start_Speech_Sample(kActorTransient, 110);
Actor_Set_Goal_Number(kActorTransient, 395);
Actor_Says(kActorMcCoy, 5685, 18);
- } else if (answer == 1380) {
+ } else if (answer == 1380) { // FAT MAN
if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) {
- sub_402960();
+ Actor_Says(kActorMcCoy, 5670, 9);
+ Actor_Says(kActorTransient, 340, 31);
+ Actor_Says(kActorMcCoy, 5690, 19);
+ Actor_Says(kActorTransient, 350, 32);
+ Actor_Says(kActorMcCoy, 5695, 14);
+ Actor_Says(kActorTransient, 360, 33);
+ Actor_Voice_Over(2710, kActorVoiceOver);
+ Actor_Voice_Over(2730, kActorVoiceOver);
+ Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient);
} else {
Actor_Says(kActorMcCoy, 5700, 15);
sub_4025E0();
}
- } else if (answer == 1390) {
+ } else if (answer == 1390) { // REPLICANTS
Actor_Says(kActorMcCoy, 5675, 9);
Actor_Says(kActorTransient, 370, 32);
Actor_Says(kActorMcCoy, 5705, 10);
diff --git a/engines/bladerunner/script/scene/ug14.cpp b/engines/bladerunner/script/scene/ug14.cpp
index 914cf10045..d850df0eb5 100644
--- a/engines/bladerunner/script/scene/ug14.cpp
+++ b/engines/bladerunner/script/scene/ug14.cpp
@@ -83,7 +83,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) {
bool v1 = y > 57.0f;
- if (!exitId == 0) {
+ if (exitId == 0) {
if (v1) {
if (Loop_Actor_Walk_To_XYZ(kActorMcCoy, 141.47f, 128.92f, -150.16f, 0, true, false, 0)) {
return false;
@@ -133,6 +133,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) {
Loop_Actor_Travel_Stairs(kActorMcCoy, 13, true, kAnimationModeIdle);
Footstep_Sound_Override_Off();
}
+
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 157.0f, 128.92f, -108.01f, 0, true, false, 0)) {
Footstep_Sound_Override_On(3);
Loop_Actor_Travel_Stairs(kActorMcCoy, 6, true, kAnimationModeIdle);
diff --git a/engines/bladerunner/script/scene/ug15.cpp b/engines/bladerunner/script/scene/ug15.cpp
index fdd32449ff..ef1ca2f291 100644
--- a/engines/bladerunner/script/scene/ug15.cpp
+++ b/engines/bladerunner/script/scene/ug15.cpp
@@ -109,7 +109,7 @@ bool SceneScriptUG15::ClickedOnItem(int itemId, bool a2) {
bool SceneScriptUG15::ClickedOnExit(int exitId) {
if (exitId == 0) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(kFlagUG15toUG17);
@@ -119,7 +119,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
}
if (exitId == 1) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(kFlagUG15toUG16a);
@@ -133,8 +133,8 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
if (v1 >= 300
&& v1 <= 303
) {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, 1, false, 0);
- } else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, 1, false, 0)) {
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, true, false, 0);
+ } else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(kFlagUG15toUG16b);
@@ -144,7 +144,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) {
}
if (exitId == 3) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(kFlagUG15toUG13);
diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h
index f866935823..8d45053c13 100644
--- a/engines/bladerunner/script/scene_script.h
+++ b/engines/bladerunner/script/scene_script.h
@@ -261,7 +261,7 @@ DECLARE_SCRIPT(MA01)
END_SCRIPT
DECLARE_SCRIPT(MA02)
- void dialogueWithRajif();
+ void talkWithRajif();
bool isPhoneRinging();
void selectNextTvNews();
END_SCRIPT
@@ -483,13 +483,11 @@ DECLARE_SCRIPT(UG12)
END_SCRIPT
DECLARE_SCRIPT(UG13)
- void sub_40223C();
void sub_4023D8();
void sub_4025E0();
- void sub_402960();
int sub_402AD0();
- void sub_402AD4();
- void sub_402E24();
+ void dialogueWithHomeless1();
+ void dialogueWithHomeless2();
END_SCRIPT
DECLARE_SCRIPT(UG14)