diff options
Diffstat (limited to 'engines/bladerunner/script/scene')
-rw-r--r-- | engines/bladerunner/script/scene/ma06.cpp | 138 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/ma07.cpp | 27 | ||||
-rw-r--r-- | engines/bladerunner/script/scene/tb07.cpp | 2 |
3 files changed, 145 insertions, 22 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) { diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp index 83efc3533d..87a2063e73 100644 --- a/engines/bladerunner/script/scene/ma07.cpp +++ b/engines/bladerunner/script/scene/ma07.cpp @@ -54,6 +54,11 @@ void SceneScriptMA07::InitializeScene() { void SceneScriptMA07::SceneLoaded() { Obstacle_Object("BARRICADE", true); + if(_vm->_cutContent) { + if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelShouldBeOutsideMcCoysAct3) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutsideMcCoysBuildingAct3); + } + } } bool SceneScriptMA07::MouseClick(int x, int y) { @@ -134,9 +139,11 @@ void SceneScriptMA07::PlayerWalkedIn() { Game_Flag_Reset(kFlagPS14toMA07); } - if (Actor_Query_Goal_Number(kActorRachael) == 300) { - Actor_Set_Goal_Number(kActorRachael, 305); - } + if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct3) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutWalksToPoliceHQAct3); + } else if (_vm->_cutContent && Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct4) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelIsOutWalksToPoliceHQAct4); + } if (Game_Flag_Query(kFlagMA06toMA07)) { Game_Flag_Reset(kFlagMA06toMA07); @@ -166,6 +173,20 @@ void SceneScriptMA07::PlayerWalkedIn() { } void SceneScriptMA07::PlayerWalkedOut() { + if (_vm->_cutContent) { + if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct3 + || Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutWalksToPoliceHQAct3 + || Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutFleeingToPoliceHQAct3 + ) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfNotMetWithMcCoy); + } else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutResumesWalkToPoliceHQAct3) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct3IfMetWithMcCoy); + } else if (Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutsideMcCoysBuildingAct4 + || Actor_Query_Goal_Number(kActorRachael) == kGoalRachaelIsOutWalksToPoliceHQAct4 + ) { + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelAtEndOfAct4); + } + } } void SceneScriptMA07::DialogueQueueFlushed(int a1) { diff --git a/engines/bladerunner/script/scene/tb07.cpp b/engines/bladerunner/script/scene/tb07.cpp index 781e53ee47..3e955f57ec 100644 --- a/engines/bladerunner/script/scene/tb07.cpp +++ b/engines/bladerunner/script/scene/tb07.cpp @@ -293,7 +293,7 @@ void SceneScriptTB07::McCoyTalkWithRachaelAndTyrell() { Actor_Says(kActorTyrell, 20, 3); Actor_Says(kActorTyrell, 30, 12); Actor_Says(kActorMcCoy, 5425, 18); - Actor_Set_Goal_Number(kActorRachael, 200); + Actor_Set_Goal_Number(kActorRachael, kGoalRachaelLeavesAfterTyrellMeeting); Actor_Says(kActorTyrell, 40, 15); Actor_Start_Speech_Sample(kActorTyrell, 50); Loop_Actor_Walk_To_XYZ(kActorTyrell, -10.0f, 12.0f, 100.0f, 0, false, false, 0); |