aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene/ma06.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/bladerunner/script/scene/ma06.cpp')
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp138
1 files changed, 120 insertions, 18 deletions
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp
index 3779f946f5..2031b40244 100644
--- a/engines/bladerunner/script/scene/ma06.cpp
+++ b/engines/bladerunner/script/scene/ma06.cpp
@@ -46,6 +46,20 @@ void SceneScriptMA06::InitializeScene() {
void SceneScriptMA06::SceneLoaded() {
Obstacle_Object("PANEL", true);
Clickable_Object("PANEL");
+ if (_vm->_cutContent) {
+ if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeInElevatorMcCoysAct3) {
+ // Put Rachael in set for her first cut scene (Act 3) when it plays out in the elevator
+ Actor_Put_In_Set(kActorRachael, kSetMA06);
+ Actor_Set_At_XYZ(kActorRachael, 30.15f, 0.0f, 45.16f, 350);
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideMcCoysElevatorAct3);
+ } else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelAtEndOfAct3IfMetWithMcCoy
+ && Game_Flag_Query(kFlagMA02RajifTalk)) {
+ // Put Rachael in set for her second cut scene (Act 4)
+ Actor_Put_In_Set(kActorRachael, kSetMA06);
+ Actor_Set_At_XYZ(kActorRachael, 30.15f, 0.0f, 50.16f, 170); // different rotation and slightly different placement
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideMcCoysElevatorAct4);
+ }
+ }
Player_Loses_Control();
}
@@ -83,34 +97,122 @@ void SceneScriptMA06::PlayerWalkedIn() {
Loop_Actor_Walk_To_XYZ(kActorMcCoy, 40.0f, 1.35f, 0.0f, 0, 0, false, 0);
Actor_Face_Object(kActorMcCoy, "panel", true);
Delay(500);
- activateElevator();
- if (isElevatorOnDifferentFloor()) {
- Sound_Play(kSfxSPINUP1, 25, 0, 0, 50);
- Delay(4000);
- }
+ if (_vm->_cutContent) {
+ //
+ // McCoy + Rachael meetings
+ //
+ if ((Game_Flag_Query(kFlagMA07toMA06) || Game_Flag_Query(kFlagMA01toMA06))
+ && Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideMcCoysElevatorAct3
+ ){
+ // Act 3 Deleted scene (can happen within the elevator or outside the building)
+ // Skip floor panel selection - force go to MCCOY 88F
+ Game_Flag_Reset(kFlagMA06toMA01);
+ Game_Flag_Reset(kFlagMA06ToMA02);
+ Game_Flag_Reset(kFlagMA06toMA07);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 10, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1);
- Game_Flag_Reset(kFlagMA01toMA06);
- Game_Flag_Reset(kFlagMA02toMA06);
- Game_Flag_Reset(kFlagMA07toMA06);
+ Actor_Says(kActorAnsweringMachine, 80, 3); // your floor number please
+ Actor_Says(kActorMcCoy, 2940, 18); // McCoy: McCoy 88F
+ Game_Flag_Set(kFlagMA06ToMA02); // to McCoy's Apartment
+ Actor_Says(kActorAnsweringMachine, 90, 3); // 88 thank you
+ Actor_Face_Actor(kActorMcCoy, kActorRachael, true);
+ Actor_Says(kActorMcCoy, 2710, 14); // Excuse me
- if (Game_Flag_Query(kFlagMA06toMA01)) {
- Set_Enter(kSetMA01, kSceneMA01);
- } else if (Game_Flag_Query(kFlagMA06ToMA02)) {
- Set_Enter(kSetMA02_MA04, kSceneMA02);
- } else {
- Set_Enter(kSetMA07, kSceneMA07);
- }
+ Actor_Says(kActorMcCoy, 2730, 12); // RachaelRight
+ AI_Movement_Track_Pause(kActorRachael);
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct3);
+
+ Game_Flag_Reset(kFlagMA01toMA06);
+ Game_Flag_Reset(kFlagMA02toMA06);
+ Game_Flag_Reset(kFlagMA07toMA06);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxSPINUP1, 0, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 0, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 0, 0, 1);
+ Ambient_Sounds_Remove_Looping_Sound(kSfxSPINUP1, 1); // stop elev moving sound
+ Ambient_Sounds_Remove_Looping_Sound(kSfxAPRTFAN1, 1); // stop other ambient
+ Ambient_Sounds_Remove_Looping_Sound(kSfxELEAMB3, 1); // stop other ambient
+ Actor_Says_With_Pause(kActorRachael, 300, 1.0, 14); // GoodbyeMcCoy
+ Actor_Says(kActorRachael, 310, 14); // Isnt ThisYourFloor --
+ Actor_Says(kActorMcCoy, 2860, 14); // YouTakeCareOfYoursel
- Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
- Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
- //return true;
+ Set_Enter(kSetMA02_MA04, kSceneMA02);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+ Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+ } else if (Game_Flag_Query(kFlagMA02toMA06)
+ && Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideMcCoysElevatorAct4
+ ){
+ // Act 4 deleted scene case with Rachael
+ //
+ // TODO fix animationsDo an Optimization pass
+ // TODO Skip panel selection but actually set the target floor and "MOVE elevator" to LOBBY (Floor > 1)
+ //
+ Game_Flag_Reset(kFlagMA06toMA01);
+ Game_Flag_Reset(kFlagMA06ToMA02);
+ Game_Flag_Reset(kFlagMA06toMA07);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 10, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 10, 0, 1);
+
+ Actor_Says(kActorAnsweringMachine, 80, 3); // your floor number please
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsInsideElevatorStartTalkAct4);
+ //
+ Delay(500);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxSPINUP1, 0, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxAPRTFAN1, 0, 0, 1);
+ Ambient_Sounds_Adjust_Looping_Sound(kSfxELEAMB3, 0, 0, 1);
+ Ambient_Sounds_Remove_Looping_Sound(kSfxSPINUP1, 1); // stop elev moving sound
+ Ambient_Sounds_Remove_Looping_Sound(kSfxAPRTFAN1, 1); // stop other ambient
+ Ambient_Sounds_Remove_Looping_Sound(kSfxELEAMB3, 1); // stop other ambient
+
+ Game_Flag_Reset(kFlagMA01toMA06);
+ Game_Flag_Reset(kFlagMA02toMA06);
+ Game_Flag_Reset(kFlagMA07toMA06);
+
+// Player_Gains_Control();
+ Set_Enter(kSetMA07, kSceneMA07);
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+ Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+ } else {
+ // normal elevator business
+ activateElevator();
+
+ if (isElevatorOnDifferentFloor()) {
+ Sound_Play(kSfxSPINUP1, 25, 0, 0, 50);
+ Delay(4000);
+ }
+
+ Game_Flag_Reset(kFlagMA01toMA06);
+ Game_Flag_Reset(kFlagMA02toMA06);
+ Game_Flag_Reset(kFlagMA07toMA06);
+
+ if (Game_Flag_Query(kFlagMA06toMA01)) {
+ Set_Enter(kSetMA01, kSceneMA01);
+ } else if (Game_Flag_Query(kFlagMA06ToMA02)) {
+ Set_Enter(kSetMA02_MA04, kSceneMA02);
+ } else {
+ Set_Enter(kSetMA07, kSceneMA07);
+ }
+
+ Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true);
+ Sound_Play(kSfxELDOORO2, 100, 50, 50, 50);
+ }
+ } // end of cut content
}
void SceneScriptMA06::PlayerWalkedOut() {
Ambient_Sounds_Remove_All_Non_Looping_Sounds(true);
Ambient_Sounds_Remove_All_Looping_Sounds(1);
Player_Gains_Control();
+ if (_vm->_cutContent) {
+ if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideElevatorStartTalkAct3) {
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfMetWithMcCoy);
+ }
+ else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsInsideElevatorStartTalkAct4) {
+ Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutsideMcCoysBuildingAct4);
+ // don't reset kEDSFlagRachaelInElevatorChapter4JUSTEncountered here but in the ma07.cpp script (walked-in_ where mcCoy will automatically go (so no problems of inconsistency there)
+ }
+ }
}
void SceneScriptMA06::DialogueQueueFlushed(int a1) {