aboutsummaryrefslogtreecommitdiff
path: root/engines/bladerunner/script/scene
diff options
context:
space:
mode:
authorThanasis Antoniou2019-05-06 23:52:48 +0300
committerThanasis Antoniou2019-05-06 23:53:43 +0300
commit24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f (patch)
tree3ff0e64262e7294a23b727c4845207234e5e5041 /engines/bladerunner/script/scene
parent9a510b1c4709e75559108d97c2807fba409ae657 (diff)
downloadscummvm-rg350-24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f.tar.gz
scummvm-rg350-24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f.tar.bz2
scummvm-rg350-24bf47a28b317853f1c9175a8f22d6b4ba3ffc5f.zip
BLADERUNNER: Restoring Rachael related scenes pt1
Some testing and polishing of animations pending especially with meeting in Act 4
Diffstat (limited to 'engines/bladerunner/script/scene')
-rw-r--r--engines/bladerunner/script/scene/ma06.cpp138
-rw-r--r--engines/bladerunner/script/scene/ma07.cpp27
-rw-r--r--engines/bladerunner/script/scene/tb07.cpp2
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);