diff options
Diffstat (limited to 'engines/bladerunner/script/scene/ma06.cpp')
-rw-r--r-- | engines/bladerunner/script/scene/ma06.cpp | 59 |
1 files changed, 31 insertions, 28 deletions
diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp index 42845ecd8f..e545e291b3 100644 --- a/engines/bladerunner/script/scene/ma06.cpp +++ b/engines/bladerunner/script/scene/ma06.cpp @@ -28,7 +28,7 @@ void SceneScriptMA06::InitializeScene() { Setup_Scene_Information(40.0f, 1.0f, -20.0f, 400); Ambient_Sounds_Add_Looping_Sound(210, 50, 0, 1); Ambient_Sounds_Add_Looping_Sound(408, 33, 0, 1); - Scene_Loop_Start_Special(0, 0, 0); + Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false); Scene_Loop_Set_Default(1); Sound_Play(209, 100, 50, 50, 100); } @@ -73,28 +73,29 @@ 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); - sub_4014E4(); - if (sub_4012C0()) { + activateElevator(); + if (isElevatorOnDifferentFloor()) { Sound_Play(114, 25, 0, 0, 50); Delay(4000); } - Game_Flag_Reset(37); - Game_Flag_Reset(33); - Game_Flag_Reset(57); - if (Game_Flag_Query(38)) { + Game_Flag_Reset(kFlagMA01toMA06); + Game_Flag_Reset(kFlagMA02toMA06); + Game_Flag_Reset(kFlagMA07toMA06); + + if (Game_Flag_Query(kFlagMA06toMA01)) { Set_Enter(49, 48); - } else if (Game_Flag_Query(34)) { + } else if (Game_Flag_Query(kFlagMA06ToMA02)) { Set_Enter(10, 49); - } else { + } else { // kFlagMA06ToMA07 Set_Enter(53, 53); } - Scene_Loop_Start_Special(1, 3, 1); + Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, true); Sound_Play(208, 100, 50, 50, 50); //return true; } void SceneScriptMA06::PlayerWalkedOut() { - Ambient_Sounds_Remove_All_Non_Looping_Sounds(1); + Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); Player_Gains_Control(); } @@ -102,34 +103,36 @@ void SceneScriptMA06::PlayerWalkedOut() { void SceneScriptMA06::DialogueQueueFlushed(int a1) { } -bool SceneScriptMA06::sub_4012C0() { - return (Game_Flag_Query(37) && !Game_Flag_Query(38)) || (Game_Flag_Query(33) && !Game_Flag_Query(34)) || (Game_Flag_Query(57) && !Game_Flag_Query(58)); +bool SceneScriptMA06::isElevatorOnDifferentFloor() { + return (Game_Flag_Query(kFlagMA01toMA06) && !Game_Flag_Query(kFlagMA06toMA01)) + || (Game_Flag_Query(kFlagMA02toMA06) && !Game_Flag_Query(kFlagMA06ToMA02)) + || (Game_Flag_Query(kFlagMA07toMA06) && !Game_Flag_Query(kFlagMA06toMA07)); } -void SceneScriptMA06::sub_4014E4() { - Game_Flag_Reset(38); - Game_Flag_Reset(34); - Game_Flag_Reset(58); +void SceneScriptMA06::activateElevator() { + Game_Flag_Reset(kFlagMA06toMA01); + Game_Flag_Reset(kFlagMA06ToMA02); + Game_Flag_Reset(kFlagMA06toMA07); while (true) { - if (Game_Flag_Query(34)) { + if (Game_Flag_Query(kFlagMA06ToMA02)) { break; } - if (Game_Flag_Query(38)) { + if (Game_Flag_Query(kFlagMA06toMA01)) { break; } - if (Game_Flag_Query(58)) { + if (Game_Flag_Query(kFlagMA06toMA07)) { break; } Actor_Says(kActorAnsweringMachine, 80, 3); Player_Gains_Control(); - int v1 = Elevator_Activate(1); + int floor = Elevator_Activate(1); Player_Loses_Control(); - Scene_Loop_Start_Special(2, 1, 1); - if (v1 > 1) { - Game_Flag_Set(58); - } else if (v1 == 1) { - if (Game_Flag_Query(250)) { - Game_Flag_Set(38); + Scene_Loop_Start_Special(kSceneLoopMode2, 1, true); + if (floor > 1) { + Game_Flag_Set(kFlagMA06toMA07); + } else if (floor == 1) { + if (Game_Flag_Query(kFlagMA01Locked)) { + Game_Flag_Set(kFlagMA06toMA01); } else { Sound_Play(412, 100, 0, 0, 50); Delay(500); @@ -144,7 +147,7 @@ void SceneScriptMA06::sub_4014E4() { Delay(500); Actor_Says(kActorMcCoy, 8527, 3); } else { - Game_Flag_Set(34); + Game_Flag_Set(kFlagMA06ToMA02); Actor_Says(kActorAnsweringMachine, 90, 3); } } |