aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene/dr05.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/scene/dr05.cpp')
-rw-r--r--engines/bladerunner/script/scene/dr05.cpp81
1 files changed, 49 insertions, 32 deletions
diff --git a/engines/bladerunner/script/scene/dr05.cpp b/engines/bladerunner/script/scene/dr05.cpp
index 0204cf5b26..9f00bc2c66 100644
--- a/engines/bladerunner/script/scene/dr05.cpp
+++ b/engines/bladerunner/script/scene/dr05.cpp
@@ -24,18 +24,27 @@
namespace BladeRunner {
+enum kDR05Loops {
+ kDR05LoopMain = 0,
+ kDR05LoopMainDestroyed = 2
+};
+
void SceneScriptDR05::InitializeScene() {
Setup_Scene_Information(-22.0f, 0.3f, 221.0f, 0);
+
Game_Flag_Reset(kFlagDR04toDR05);
+
Scene_Exit_Add_2D_Exit(0, 0, 38, 80, 467, 3);
+
Ambient_Sounds_Add_Looping_Sound(383, 25, 0, 1);
+
if (!Game_Flag_Query(kFlagDR05BombExploded)) {
- Overlay_Play("DR05OVER", 0, 1, 0, 0);
+ Overlay_Play("DR05OVER", 0, true, false, 0);
}
if (Game_Flag_Query(kFlagDR05BombExploded)) {
- Scene_Loop_Set_Default(2);
+ Scene_Loop_Set_Default(kDR05LoopMainDestroyed);
} else {
- Scene_Loop_Set_Default(0);
+ Scene_Loop_Set_Default(kDR05LoopMain);
}
}
@@ -44,10 +53,11 @@ void SceneScriptDR05::SceneLoaded() {
Unobstacle_Object("BOX06", true);
Unobstacle_Object("BOX183", true);
Clickable_Object("T2 DOORWAY");
+
if (!Game_Flag_Query(kFlagDR05BombExploded)) {
- Item_Add_To_World(78, 932, 35, -1.57f, 31.33f, 75.21f, 540, 16, 16, true, true, false, true);
- if (Actor_Query_Goal_Number(kActorMoraji) == 0) {
- Item_Add_To_World(122, 931, 35, 37.35f, 1.59f, 46.72f, 0, 20, 20, true, true, false, true);
+ Item_Add_To_World(kItemBomb, 932, kSetDR05, -1.57f, 31.33f, 75.21f, 540, 16, 16, true, true, false, true);
+ if (Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiDefault) {
+ Item_Add_To_World(kItemChain, 931, kSetDR05, 37.35f, 1.59f, 46.72f, 0, 20, 20, true, true, false, true);
}
}
}
@@ -58,19 +68,20 @@ bool SceneScriptDR05::MouseClick(int x, int y) {
bool SceneScriptDR05::ClickedOn3DObject(const char *objectName, bool a2) {
if (Object_Query_Click("T2 DOORWAY", objectName)) {
- if (Game_Flag_Query(kFlagNotUsed276)
- || Actor_Query_Goal_Number(kActorMoraji) != 0
+ if (!Game_Flag_Query(kFlagNotUsed276)
+ && Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiDefault
) {
+ Actor_Face_Object(kActorMcCoy, "T2 DOORWAY", true);
+ Actor_Says(kActorMcCoy, 1020, 14);
+ Actor_Says(kActorMoraji, 90, 13);
+ } else {
if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 57.61f, 0.3f, 69.27f, 0, true, false, 0)) {
Actor_Face_Object(kActorMcCoy, "T2 DOORWAY", true);
Actor_Says(kActorMcCoy, 8522, 13);
Actor_Says(kActorMcCoy, 8521, 14);
}
- } else {
- Actor_Face_Object(kActorMcCoy, "T2 DOORWAY", true);
- Actor_Says(kActorMcCoy, 1020, 14);
- Actor_Says(kActorMoraji, 90, 13);
}
+
return true;
}
return false;
@@ -81,30 +92,31 @@ bool SceneScriptDR05::ClickedOnActor(int actorId) {
}
bool SceneScriptDR05::ClickedOnItem(int itemId, bool a2) {
- if (itemId == 78) {
+ if (itemId == kItemBomb) {
if (Player_Query_Combat_Mode()) {
Game_Flag_Set(kFlagDR05BombWillExplode);
- Actor_Set_Goal_Number(kActorMoraji, 30);
+ Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiChooseFate);
} else if (!Game_Flag_Query(kFlagDR05BombExploded)
- && !Loop_Actor_Walk_To_Item(kActorMcCoy, 78, 24, 1, true)
- && Actor_Query_Goal_Number(kActorMoraji) != 11
+ && !Loop_Actor_Walk_To_Item(kActorMcCoy, kItemBomb, 24, true, true)
+ && Actor_Query_Goal_Number(kActorMoraji) != kGoalMorajiRunOut
) {
if (!Actor_Query_Goal_Number(kActorMoraji)) {
Actor_Says_With_Pause(kActorMcCoy, 1015, 0.1f, 12);
Actor_Says(kActorMoraji, 70, 13);
}
- Actor_Set_Goal_Number(kActorMoraji, 30);
+ Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiChooseFate);
}
//return true; //bug?
}
- if (itemId == 122
+
+ if (itemId == kItemChain
&& Player_Query_Combat_Mode()
- && Actor_Query_Goal_Number(kActorMoraji) == 0
+ && Actor_Query_Goal_Number(kActorMoraji) == kGoalOfficerLearyDefault
) {
- Overlay_Play("DR05OVER", 1, 0, 1, 0);
- Item_Remove_From_World(122);
+ Overlay_Play("DR05OVER", 1, false, true, 0);
+ Item_Remove_From_World(kItemChain);
Game_Flag_Set(kFlagDR05ChainShot);
- Actor_Set_Goal_Number(kActorMoraji, 10);
+ Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiFreed);
Music_Play(18, 71, 0, 0, -1, 0, 2);
return true;
}
@@ -131,11 +143,12 @@ void SceneScriptDR05::SceneFrameAdvanced(int frame) {
if (frame == 49) {
Sound_Play(148, Random_Query(50, 50), 80, 80, 50);
}
+
if (Game_Flag_Query(kFlagDR05BombWillExplode)) {
- Item_Remove_From_World(78);
+ Item_Remove_From_World(kItemBomb);
Game_Flag_Reset(kFlagDR05BombWillExplode);
Game_Flag_Set(kFlagDR05BombExploded);
- Actor_Set_Goal_Number(kActorMoraji, 30);
+ Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiChooseFate);
}
}
@@ -147,11 +160,11 @@ void SceneScriptDR05::PlayerWalkedIn() {
&& !Game_Flag_Query(kFlagDR05ChainShot)
&& Game_Flag_Query(kFlagDR05BombExploded)
) {
- Item_Remove_From_World(122);
+ Item_Remove_From_World(kItemChain);
}
if (Game_Flag_Query(kFlagDR05BombExploded)) {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 0.3f, 133.0f, 0, 0, false, 0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 0.3f, 133.0f, 0, false, false, 0);
if (!Game_Flag_Query(kFlagDR05ExplodedEntered)) {
Game_Flag_Set(kFlagDR05ExplodedEntered);
if (Game_Flag_Query(kFlagSadikIsReplicant)) {
@@ -170,18 +183,18 @@ void SceneScriptDR05::PlayerWalkedIn() {
}
}
} else {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 0.3f, 133.0f, 0, 0, true, 0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, -10.0f, 0.3f, 133.0f, 0, false, true, 0);
}
if (!Game_Flag_Query(kFlagDR05MorajiTalk)
- && !Actor_Query_Goal_Number(kActorMoraji)
+ && Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiDefault
) {
Actor_Face_Actor(kActorMcCoy, kActorMoraji, true);
Actor_Says(kActorMcCoy, 1010, 13);
- Actor_Face_Item(kActorMcCoy, 78, true);
+ Actor_Face_Item(kActorMcCoy, kItemBomb, true);
Player_Set_Combat_Mode(true);
Actor_Says(kActorMoraji, 60, 12);
- Actor_Change_Animation_Mode(kActorMcCoy, 0);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
Game_Flag_Set(kFlagDR05MorajiTalk);
//return true;
}
@@ -191,8 +204,12 @@ void SceneScriptDR05::PlayerWalkedIn() {
void SceneScriptDR05::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
- if (Actor_Query_Goal_Number(kActorMoraji) == 10 || Actor_Query_Goal_Number(kActorMoraji) == 18 || Actor_Query_Goal_Number(kActorMoraji) == 19) {
- Actor_Set_Goal_Number(kActorMoraji, 11);
+
+ if (Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiFreed
+ || Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiGetUp
+ || Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiScream
+ ) {
+ Actor_Set_Goal_Number(kActorMoraji, kGoalMorajiRunOut);
//return true;
}
//return false;