aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene/nr04.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/scene/nr04.cpp')
-rw-r--r--engines/bladerunner/script/scene/nr04.cpp260
1 files changed, 140 insertions, 120 deletions
diff --git a/engines/bladerunner/script/scene/nr04.cpp b/engines/bladerunner/script/scene/nr04.cpp
index 3af9c3e52c..0d90781597 100644
--- a/engines/bladerunner/script/scene/nr04.cpp
+++ b/engines/bladerunner/script/scene/nr04.cpp
@@ -73,7 +73,7 @@ bool SceneScriptNR04::MouseClick(int x, int y) {
return true;
}
- if (Actor_Query_Animation_Mode(kActorMcCoy) == 53) {
+ if (Actor_Query_Animation_Mode(kActorMcCoy) == kAnimationModeSit) {
Actor_Change_Animation_Mode(kActorMcCoy, 29);
return true;
}
@@ -88,50 +88,54 @@ bool SceneScriptNR04::ClickedOn3DObject(const char *objectName, bool a2) {
|| Object_Query_Click("DESK", objectName)
) {
if (!Loop_Actor_Walk_To_Waypoint(kActorMcCoy, 546, 0, true, false)) {
- if (!Object_Query_Click("DESK", objectName)) {
- Actor_Face_Object(kActorMcCoy, "B.TV01", true);
- Actor_Voice_Over(1530, kActorVoiceOver);
- Actor_Voice_Over(1540, kActorVoiceOver);
- Actor_Voice_Over(1550, kActorVoiceOver);
- } else {
+ if (Object_Query_Click("DESK", objectName)) {
Actor_Face_Object(kActorMcCoy, "DESK", true);
if (!Actor_Clue_Query(kActorMcCoy, kCluePeruvianLadyInterview)) {
Actor_Voice_Over(1600, kActorVoiceOver);
Actor_Voice_Over(1610, kActorVoiceOver);
- } else if (Actor_Clue_Query(kActorMcCoy, kClueCollectionReceipt)) {
- Actor_Says(kActorMcCoy, 8580, kAnimationModeTalk);
- } else {
+ } else if (!Actor_Clue_Query(kActorMcCoy, kClueCollectionReceipt)) {
Actor_Clue_Acquire(kActorMcCoy, kClueCollectionReceipt, false, -1);
Item_Pickup_Spin_Effect(961, 247, 141);
Actor_Voice_Over(1560, kActorVoiceOver);
Actor_Voice_Over(1570, kActorVoiceOver);
Actor_Voice_Over(1580, kActorVoiceOver);
Actor_Voice_Over(1590, kActorVoiceOver);
+ } else {
+ Actor_Says(kActorMcCoy, 8580, kAnimationModeTalk);
}
-
+ } else {
+ Actor_Face_Object(kActorMcCoy, "B.TV01", true);
+ Actor_Voice_Over(1530, kActorVoiceOver);
+ Actor_Voice_Over(1540, kActorVoiceOver);
+ Actor_Voice_Over(1550, kActorVoiceOver);
}
}
- } else if ( Object_Query_Click("TORUS01", objectName)
- && !Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.56f, 0.0f, 38.86f, 0, true, false, 0)
- && !Game_Flag_Query(605)
+ return false;
+ }
+
+ if ( Object_Query_Click("TORUS01", objectName)
+ && !Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.56f, 0.0f, 38.86f, 0, true, false, 0)
+ && !Game_Flag_Query(kFlagNR04DiscFound)
) {
Unclickable_Object("TORUS01");
Scene_Exits_Disable();
Player_Loses_Control();
- Game_Flag_Set(605);
+ Game_Flag_Set(kFlagNR04DiscFound);
Actor_Face_Object(kActorMcCoy, "TORUS01", true);
Item_Pickup_Spin_Effect(975, 358, 160);
Actor_Voice_Over(1620, kActorVoiceOver);
Actor_Voice_Over(1630, kActorVoiceOver);
Actor_Clue_Acquire(kActorMcCoy, kClueEarlyQsClub, false, -1);
- Actor_Set_Goal_Number(kActorEarlyQ, 201);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Enter);
+ return false;
}
+
return false;
}
bool SceneScriptNR04::ClickedOnActor(int actorId) {
if (actorId == kActorEarlyQ
- && Game_Flag_Query(606)
+ && Game_Flag_Query(kFlagNR04EarlyQStungByScorpions)
) {
Actor_Voice_Over(1640, kActorVoiceOver);
Actor_Voice_Over(1650, kActorVoiceOver);
@@ -149,7 +153,7 @@ bool SceneScriptNR04::ClickedOnItem(int itemId, bool a2) {
bool SceneScriptNR04::ClickedOnExit(int exitId) {
if (exitId == 0) {
- if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 45.0f, 0.0f, -106.0f, 0, 1, false, 0)) {
+ if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 45.0f, 0.0f, -106.0f, 0, true, false, 0)) {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Game_Flag_Set(kFlagNR04toNR03);
@@ -161,37 +165,46 @@ bool SceneScriptNR04::ClickedOnExit(int exitId) {
}
bool SceneScriptNR04::ClickedOn2DRegion(int region) {
- if ((region == 0 || region == 1 || region == 2)
- && Actor_Query_Which_Set_In(kActorEarlyQ) != 12
- && Actor_Query_Animation_Mode(kActorMcCoy) != 53
- && !Loop_Actor_Walk_To_Waypoint(kActorMcCoy, 445, 0, true, false)
+ if ((region == 0
+ || region == 1
+ || region == 2
+ )
+ && Actor_Query_Which_Set_In(kActorEarlyQ) != kSetNR04
+ && Actor_Query_Animation_Mode(kActorMcCoy) != kAnimationModeSit
) {
- Actor_Face_Heading(kActorMcCoy, 49, false);
- Actor_Change_Animation_Mode(kActorMcCoy, 85);
- Delay(2500);
- if (Game_Flag_Query(606) == 1) {
+ if (!Loop_Actor_Walk_To_Waypoint(kActorMcCoy, 445, 0, true, false)) {
+ Actor_Face_Heading(kActorMcCoy, 49, false);
+ Actor_Change_Animation_Mode(kActorMcCoy, 85);
+ Delay(2500);
+
+ if (!Game_Flag_Query(kFlagNR04EarlyQStungByScorpions)
+ && Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)
+ ) {
+ Player_Loses_Control();
+ Actor_Voice_Over(4180, kActorVoiceOver);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie);
+ Ambient_Sounds_Play_Sound(555, 90, 99, 0, 0);
+ Delay(350);
+ Actor_Set_At_XYZ(kActorMcCoy, 109.0f, 0.0f, 374.0f, 0);
+ Actor_Retired_Here(kActorMcCoy, 12, 12, true, -1);
+ }
return true;
}
- if (Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)) {
- Player_Loses_Control();
- Actor_Voice_Over(4180, kActorVoiceOver);
- Actor_Change_Animation_Mode(kActorMcCoy, 48);
- Ambient_Sounds_Play_Sound(555, 90, 99, 0, 0);
- Delay(350);
- Actor_Set_At_XYZ(kActorMcCoy, 109.0f, 0.0f, 374.0f, 0);
- Actor_Retired_Here(kActorMcCoy, 12, 12, 1, -1);
- }
- return true;
}
return false;
}
void SceneScriptNR04::SceneFrameAdvanced(int frame) {
- if (frame == 1 && !Music_Is_Playing()) {
- sub_402960();
+ if ( frame == 1
+ && !Music_Is_Playing()
+ ) {
+ playNextMusic();
}
- if (frame > 60 && frame < 120) {
- sub_402860(frame);
+
+ if (frame > 60
+ && frame < 120
+ ) {
+ druggedEffect(frame);
} else if (frame == 120) {
Set_Fade_Color(1.0f, 1.0f, 1.0f);
Set_Fade_Density(0.0f);
@@ -202,51 +215,23 @@ void SceneScriptNR04::SceneFrameAdvanced(int frame) {
void SceneScriptNR04::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bool currentSet) {
if (actorId == kActorEarlyQ) {
switch (newGoal) {
- case 214:
- Actor_Change_Animation_Mode(kActorEarlyQ, 29);
- Delay(2500);
- Actor_Says(kActorEarlyQ, 290, 3);
- sub_401DB0();
- //return true;
- break;
- case 213:
- Actor_Clue_Acquire(kActorMcCoy, kClueDektorasDressingRoom, false, kActorEarlyQ);
- Item_Pickup_Spin_Effect(984, 200, 160);
- Actor_Says(kActorEarlyQ, 200, 30);
- Actor_Says(kActorEarlyQ, 210, 30);
- Actor_Says(kActorEarlyQ, 220, 30);
- Actor_Says_With_Pause(kActorMcCoy, 3425, 1.5f, 23);
- Actor_Says(kActorMcCoy, 3430, 3);
- Actor_Says(kActorEarlyQ, 240, 30);
- Actor_Says(kActorMcCoy, 3435, 3);
- Actor_Says(kActorEarlyQ, 250, 30);
- Actor_Says(kActorMcCoy, 3440, 3);
- Actor_Says(kActorEarlyQ, 280, 30);
- Actor_Says(kActorMcCoy, 3445, 3);
- Actor_Set_Goal_Number(kActorEarlyQ, 214);
- //return true;
- break;
- case 209:
- Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true);
- Delay(3000);
- Actor_Says(kActorEarlyQ, 170, 30);
- Actor_Says(kActorMcCoy, 3415, 3);
- Actor_Says(kActorEarlyQ, 180, 30);
- Actor_Says_With_Pause(kActorMcCoy, 3420, 1.5f, 3);
- Actor_Says(kActorEarlyQ, 190, 30);
- Actor_Set_Goal_Number(kActorEarlyQ, 211);
- //return true;
- break;
- case 207:
- Loop_Actor_Walk_To_Waypoint(kActorEarlyQ, 445, 0, 1, false);
- Actor_Face_Heading(kActorEarlyQ, 49, false);
- Actor_Change_Animation_Mode(kActorEarlyQ, 85);
+ case kGoalEarlyQNR04Talk1:
+ Actor_Face_Actor(kActorEarlyQ, kActorMcCoy, true);
Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true);
- Actor_Set_Goal_Number(kActorEarlyQ, 208);
- Actor_Clue_Acquire(kActorMcCoy, kClueEarlyQInterview, false, kActorEarlyQ);
+ Actor_Says(kActorEarlyQ, 30, kAnimationModeTalk);
+ Actor_Says(kActorMcCoy, 3375, kAnimationModeTalk);
+ Actor_Says_With_Pause(kActorEarlyQ, 50, 1.5f, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 60, kAnimationModeTalk);
+ Actor_Says_With_Pause(kActorMcCoy, 3380, 1.0f, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 70, kAnimationModeTalk);
+ Actor_Says(kActorMcCoy, 3415, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 80, kAnimationModeTalk);
+ Player_Gains_Control();
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04GoToBar);
//return true;
break;
- case 204:
+
+ case kGoalEarlyQNR04PourDrink:
Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true);
Actor_Says(kActorEarlyQ, 90, 73);
Actor_Says(kActorMcCoy, 3390, 3);
@@ -255,22 +240,55 @@ void SceneScriptNR04::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
Actor_Says(kActorMcCoy, 3385, 3);
Actor_Says(kActorEarlyQ, 120, 74);
Actor_Face_Actor(kActorEarlyQ, kActorMcCoy, true);
- Actor_Set_Goal_Number(kActorEarlyQ, 205);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04GoToMcCoy);
//return true;
break;
- case 202:
- Actor_Face_Actor(kActorEarlyQ, kActorMcCoy, true);
+
+ case kGoalEarlyQNR04SitDown:
+ Loop_Actor_Walk_To_Waypoint(kActorEarlyQ, 445, 0, true, false);
+ Actor_Face_Heading(kActorEarlyQ, 49, false);
+ Actor_Change_Animation_Mode(kActorEarlyQ, 85);
Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true);
- Actor_Says(kActorEarlyQ, 30, 3);
- Actor_Says(kActorMcCoy, 3375, 3);
- Actor_Says_With_Pause(kActorEarlyQ, 50, 1.5f, 3);
- Actor_Says(kActorEarlyQ, 60, 3);
- Actor_Says_With_Pause(kActorMcCoy, 3380, 1.0f, 3);
- Actor_Says(kActorEarlyQ, 70, 3);
- Actor_Says(kActorMcCoy, 3415, 3);
- Actor_Says(kActorEarlyQ, 80, 3);
- Player_Gains_Control();
- Actor_Set_Goal_Number(kActorEarlyQ, 203);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04ScorpionsCheck);
+ Actor_Clue_Acquire(kActorMcCoy, kClueEarlyQInterview, false, kActorEarlyQ);
+ //return true;
+ break;
+
+ case kGoalEarlyQNR04Talk2:
+ Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true);
+ Delay(3000);
+ Actor_Says(kActorEarlyQ, 170, 30);
+ Actor_Says(kActorMcCoy, 3415, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 180, 30);
+ Actor_Says_With_Pause(kActorMcCoy, 3420, 1.5f, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 190, 30);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04WaitForPulledGun);
+ //return true;
+ break;
+
+ case kGoalEarlyQNR04Talk3:
+ Actor_Clue_Acquire(kActorMcCoy, kClueDektorasDressingRoom, false, kActorEarlyQ);
+ Item_Pickup_Spin_Effect(984, 200, 160);
+ Actor_Says(kActorEarlyQ, 200, 30);
+ Actor_Says(kActorEarlyQ, 210, 30);
+ Actor_Says(kActorEarlyQ, 220, 30);
+ Actor_Says_With_Pause(kActorMcCoy, 3425, 1.5f, 23);
+ Actor_Says(kActorMcCoy, 3430, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 240, 30);
+ Actor_Says(kActorMcCoy, 3435, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 250, 30);
+ Actor_Says(kActorMcCoy, 3440, kAnimationModeTalk);
+ Actor_Says(kActorEarlyQ, 280, 30);
+ Actor_Says(kActorMcCoy, 3445, kAnimationModeTalk);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04AskForDisk);
+ //return true;
+ break;
+
+ case kGoalEarlyQNR04AskForDisk:
+ Actor_Change_Animation_Mode(kActorEarlyQ, 29);
+ Delay(2500);
+ Actor_Says(kActorEarlyQ, 290, kAnimationModeTalk);
+ dialogueWithEarlyQ();
//return true;
break;
}
@@ -279,9 +297,9 @@ void SceneScriptNR04::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo
}
void SceneScriptNR04::PlayerWalkedIn() {
- Loop_Actor_Walk_To_XYZ(kActorMcCoy, 53.0f, 0.0f, -26.0f, 0, 0, false, 0);
+ Loop_Actor_Walk_To_XYZ(kActorMcCoy, 53.0f, 0.0f, -26.0f, 0, false, false, 0);
if (Game_Flag_Query(kFlagAR02DektoraBoughtScorpions)) {
- Overlay_Play("nr04over", 0, 1, 0, 0);
+ Overlay_Play("nr04over", 0, true, false, 0);
Delay(4000);
Overlay_Remove("nr04over");
}
@@ -294,28 +312,30 @@ void SceneScriptNR04::PlayerWalkedOut() {
void SceneScriptNR04::DialogueQueueFlushed(int a1) {
}
-void SceneScriptNR04::sub_401DB0() {
+void SceneScriptNR04::dialogueWithEarlyQ() {
Dialogue_Menu_Clear_List();
- DM_Add_To_List(1530, 10, 5, 3);
- DM_Add_To_List(1540, 3, 5, 10);
+ DM_Add_To_List(1530, 10, 5, 3); // GIVE DISC
+ DM_Add_To_List(1540, 3, 5, 10); // KEEP IT
+
Dialogue_Menu_Appear(320, 240);
int answer = Dialogue_Menu_Query_Input();
Dialogue_Menu_Disappear();
- if (answer == 1530) {
- Loop_Actor_Walk_To_Actor(kActorEarlyQ, kActorMcCoy, 36, 0, false);
+
+ if (answer == 1530) { // GIVE DISC
+ Loop_Actor_Walk_To_Actor(kActorEarlyQ, kActorMcCoy, 36, false, false);
Actor_Change_Animation_Mode(kActorMcCoy, 23);
Actor_Change_Animation_Mode(kActorEarlyQ, 23);
Delay(1500);
- Actor_Says(kActorEarlyQ, 300, 3);
- Actor_Change_Animation_Mode(kActorMcCoy, 0);
- Actor_Change_Animation_Mode(kActorEarlyQ, 0);
- Actor_Says(kActorEarlyQ, 310, 3);
- ADQ_Add(kActorMcCoy, 3450, 3);
+ Actor_Says(kActorEarlyQ, 300, kAnimationModeTalk);
+ Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeIdle);
+ Actor_Change_Animation_Mode(kActorEarlyQ, kAnimationModeIdle);
+ Actor_Says(kActorEarlyQ, 310, kAnimationModeTalk);
+ ADQ_Add(kActorMcCoy, 3450, kAnimationModeTalk);
Actor_Set_Targetable(kActorEarlyQ, false);
- Actor_Set_Goal_Number(kActorEarlyQ, 217);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Leave);
Actor_Clue_Lose(kActorMcCoy, kClueEarlyQsClub);
Scene_Exits_Enable();
- } else if (answer == 1540) {
+ } else if (answer == 1540) { // KEEP IT
Actor_Says(kActorMcCoy, 8512, 15);
Actor_Says(kActorEarlyQ, 320, 12);
Actor_Says(kActorMcCoy, 3455, 13);
@@ -325,12 +345,12 @@ void SceneScriptNR04::sub_401DB0() {
Actor_Says(kActorMcCoy, 3465, 12);
Actor_Says(kActorEarlyQ, 350, 16);
Actor_Set_Targetable(kActorEarlyQ, false);
- Actor_Set_Goal_Number(kActorEarlyQ, 217);
+ Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Leave);
Scene_Exits_Enable();
}
}
-void SceneScriptNR04::sub_402860(int frame) {
+void SceneScriptNR04::druggedEffect(int frame) {
float colorMap[] = {
1.0f, 1.0f, 1.0f,
1.0f, 0.0f, 0.0f,
@@ -359,20 +379,20 @@ void SceneScriptNR04::sub_402860(int frame) {
}
}
-void SceneScriptNR04::sub_402960() {
- int v0 = Global_Variable_Query(53);
- if (!v0) {
+void SceneScriptNR04::playNextMusic() {
+ int track = Global_Variable_Query(kVariableEarlyQFrontMusic);
+ if (track == 0) {
Music_Play(14, 11, 80, 2, -1, 0, 0);
- } else if (v0 == 1) {
+ } else if (track == 1) {
Music_Play(13, 11, 80, 2, -1, 0, 0);
- } else if (v0 == 2) {
+ } else if (track == 2) {
Music_Play(5, 11, 80, 2, -1, 0, 0);
}
- v0++;
- if (v0 > 2) {
- v0 = 0;
+ track++;
+ if (track > 2) {
+ track = 0;
}
- Global_Variable_Set(53, v0);
+ Global_Variable_Set(kVariableEarlyQFrontMusic, track);
}
} // End of namespace BladeRunner