diff options
Diffstat (limited to 'engines/bladerunner')
19 files changed, 474 insertions, 340 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 356d18577d..69105e4b75 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -852,8 +852,12 @@ enum Flags { kFlagUG09toCT12 = 432, kFlagCT12ToUG09 = 433, - kFlatNR04toNR03 = 437, - kFlatNR03toNR04 = 438, + kFlagNR04toNR03 = 437, + kFlagNR03toNR04 = 438, + kFlagNR06toNR08 = 439, + kFlagNR08toNR06 = 440, // is never checked + kFlagNR06toNR07 = 441, + kFlagNR07toNR06 = 442, kFlagGenericWalkerWaiting = 443, kFlagIzoShot = 444, kFlagUG02WeaponsChecked = 449, @@ -875,7 +879,12 @@ enum Flags { kFlagBB10Shelf4Available = 469, kFlagBB10Shelf5Available = 470, kFlagGaffChapter2Started = 471, + // 472 is never used + // 473 is never used kFlagUG10GateOpen = 474, + kFlagNR09toNR10 = 475, + kFlagNR10toNR09 = 476, + kFlagNR11toNR10 = 477, // is never checked kFlagMcCoyAtPS03 = 478, // has no use kFlagMcCoyInHawkersCircle = 479, // 480 is never used @@ -900,7 +909,9 @@ enum Flags { kFlagDR03ChewTalkExplosion = 505, kFlagBB08toBB12 = 506, kFlagBB12toBB08 = 507, // is never checked + kFlagNR07Entered = 508, kFlagBB11SadikFight = 509, + kFlagNotUsed510 = 510, // is never set kFlagDR05ExplodedEntered = 511, kFlagDR05ViewExplosion = 515, kFlagCT07ZubenAttack = 516, @@ -943,6 +954,7 @@ enum Flags { kFlagNR05BartenderTalk1 = 588, kFlagNR05BartenderTalk2 = 589, kFlagNR05EarlyQTalk = 590, + kFlagDektoraRanAway = 591, kFlagGordoRanAway = 592, kFlagLucyRanAway = 593, kFlagNR02GordoJumpDown = 594, @@ -953,9 +965,15 @@ enum Flags { kFlagNR03HanoiTalk = 611, kFlagTB07RachaelTalk = 612, kFlagHF03LucyTalk = 613, + kFlagNR08toNR09 = 614, + kFlagNR09toNR08 = 615, kFlagMcCoyCapturedByHolloway = 616, kFlagSpinnerMissing = 617, + kFlagNR08Available = 620, + kFlagNR08TouchedDektora = 622, kFlagTB07TyrellMeeting = 625, + kFlagNR07McCoyIsCop = 638, + kFlagNR10toNR11 = 641, // is never checked kFlagSteeleKnowsBulletBobIsDead = 643, kFlagCT11DogWrapperTaken = 645, kFlagSteeleDead = 646, // is never checked @@ -994,7 +1012,8 @@ enum Flags { kFlagZubenBountyPaid = 723, kFlagCT11DogWrapperAvailable = 725, kFlagAR02Entered = 726, - kFlagPS04WeaponsOrderForm = 727 + kFlagPS04WeaponsOrderForm = 727, + kFlagNR08DektoraShow = 729 }; enum Variables { @@ -1024,11 +1043,11 @@ enum Variables { kVariableAffectionTowards = 45, // 0 none, 1 steele, 2 dektora, 3 lucy kVariableGunPulledInFrontOfSebastian = 46, kVariableDNAEvidences = 48, - kVariableNR02Music = 50, + kVariableTaffyLewisMusic = 50, kVariableReplicants = 51, kVariableNextTvNews = 52, - kVariableNR03Music = 53, - kVariableNR05Music = 54 + kVariableEarlyQFrontMusic = 53, + kVariableEarlyQBackMusic = 54 }; enum Outtakes { @@ -1175,11 +1194,11 @@ enum Scenes { kSceneNR03 = 56, // Nightclub Row - Early Q's - Main area kSceneNR04 = 57, // Nightclub Row - Early Q's - Office kSceneNR05 = 58, // Nightclub Row - Early Q's - VIP area - kSceneNR06 = 59, - kSceneNR07 = 60, - kSceneNR08 = 61, - kSceneNR09 = 62, - kSceneNR10 = 63, + kSceneNR06 = 59, // Nightclub Row - Early Q's - Empty dressing room + kSceneNR07 = 60, // Nightclub Row - Early Q's - Dektora's dressing room + kSceneNR08 = 61, // Nightclub Row - Early Q's - Stage + kSceneNR09 = 62, // Nightclub Row - Early Q's - Upstairs + kSceneNR10 = 63, // Nightclub Row - Early Q's - Projector room kSceneNR11 = 64, kScenePS01 = 65, // Police Station - Roof kScenePS02 = 66, // Police Station - Elevator @@ -1760,9 +1779,15 @@ enum GoalRunciter { enum GoalEarlyQ { // cut feature? goals 0 - 200 has no use as EarlyQ is walking around NR which is not accessible - kGoalEarlyQStartWalkingAround = 200, - kGoalEarlyQGoToNR05 = 220, - kGoalEarlyQGoToNR04 = 230 + kGoalEarlyQWalkAround = 200, + kGoalEarlyQNR05Wait = 220, + kGoalEarlyQNR05WillLeave = 221, + kGoalEarlyQNR05Leave = 222, + kGoalEarlyQNR05AnnouceDektora = 223, + kGoalEarlyQNR05UnlockNR08 = 224, + kGoalEarlyQNR05UnlockedNR08 = 225, + kGoalEarlyQNR05TalkingToMcCoy = 229, + kGoalEarlyQNR04Wait = 230 }; enum GoalZuben { @@ -1793,12 +1818,16 @@ enum GoalOfficerLeary { enum GoalHanoi { kGoalHanoiDefault = 200, + kGoalHanoiResetTimer = 201, kGoalHanoiNR03GoToDefaultPosition = 210, kGoalHanoiNR03GoToSwivelTable = 211, kGoalHanoiNR03GoToOfficeDoor = 212, kGoalHanoiNR03GoToDancer = 213, kGoalHanoiNR03StartGuarding = 215, - kGoalHanoiNR03ThrowOutMcCoy = 220 + kGoalHanoiNR03ThrowOutMcCoy = 220, + kGoalHanoiNR08WatchShow = 230, + kGoalHanoiNR08Leave = 235, + kGoalHanoiNR08Left = 236, }; enum GoalDeskClerk { diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp index 48972c4b26..4106224e45 100644 --- a/engines/bladerunner/script/ai/dektora.cpp +++ b/engines/bladerunner/script/ai/dektora.cpp @@ -204,7 +204,7 @@ void AIScriptDektora::ClickedByPlayer() { } if (Actor_Query_Goal_Number(kActorDektora) == 210) { - Game_Flag_Set(622); + Game_Flag_Set(kFlagNR08TouchedDektora); AI_Movement_Track_Flush(kActorHanoi); Actor_Force_Stop_Walking(kActorMcCoy); Player_Loses_Control(); @@ -521,7 +521,7 @@ bool AIScriptDektora::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 290: - Game_Flag_Set(591); + Game_Flag_Set(kFlagDektoraRanAway); break; case 299: diff --git a/engines/bladerunner/script/ai/early_q.cpp b/engines/bladerunner/script/ai/early_q.cpp index e06c52a547..7237c15a06 100644 --- a/engines/bladerunner/script/ai/early_q.cpp +++ b/engines/bladerunner/script/ai/early_q.cpp @@ -70,7 +70,7 @@ bool AIScriptEarlyQ::Update() { Game_Flag_Set(kFlagEarlyQStartedChapter3); Actor_Put_In_Set(kActorEarlyQ, kSetFreeSlotH); Actor_Set_At_Waypoint(kActorEarlyQ, 40, 0); - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQStartWalkingAround); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQWalkAround); return true; } @@ -79,13 +79,13 @@ bool AIScriptEarlyQ::Update() { void AIScriptEarlyQ::TimerExpired(int timer) { if (timer == 0 - && Actor_Query_Goal_Number(kActorEarlyQ) == 221 + && Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR05WillLeave ) { - if (Player_Query_Current_Scene() == 58) { + if (Player_Query_Current_Scene() == kSceneNR05) { AI_Countdown_Timer_Reset(kActorEarlyQ, 0); - Actor_Set_Goal_Number(kActorEarlyQ, 222); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Leave); } else { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR05); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Wait); } return; //true; } @@ -162,12 +162,12 @@ void AIScriptEarlyQ::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorEarlyQ, 204); break; - case 222: - Actor_Set_Goal_Number(kActorEarlyQ, 223); + case kGoalEarlyQNR05Leave: + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05AnnouceDektora); return; //false; - case kGoalEarlyQGoToNR04: - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQStartWalkingAround); + case kGoalEarlyQNR04Wait: + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQWalkAround); return; //false; default: @@ -302,7 +302,7 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Repeat(kActorEarlyQ); break; - case kGoalEarlyQStartWalkingAround: + case kGoalEarlyQWalkAround: AI_Movement_Track_Flush(kActorEarlyQ); Actor_Put_In_Set(kActorEarlyQ, kSetFreeSlotH); Actor_Set_At_Waypoint(kActorEarlyQ, 40, 0); @@ -310,11 +310,11 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { && Game_Flag_Query(kFlagGordoRanAway) && Game_Flag_Query(kFlagLucyRanAway) ) { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR05); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Wait); } else if (Game_Flag_Query(kFlagDektoraIsReplicant)) { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR04); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Wait); } else { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR05); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Wait); } break; @@ -390,7 +390,7 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { Scene_Exits_Enable(); Player_Gains_Control(); Game_Flag_Set(627); - Actor_Set_Goal_Number(kActorHanoi, 220); + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR03ThrowOutMcCoy); break; case 215: @@ -422,40 +422,40 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Repeat(kActorEarlyQ); break; - case kGoalEarlyQGoToNR05: + case kGoalEarlyQNR05Wait: if (Player_Query_Current_Set() == kSetNR05_NR08) { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR04); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Wait); } else { Actor_Put_In_Set(kActorEarlyQ, kSetNR05_NR08); Actor_Set_At_XYZ(kActorEarlyQ, -671.56f, 0.0f, -287.02f, 849); } break; - case 221: + case kGoalEarlyQNR05WillLeave: AI_Countdown_Timer_Reset(kActorEarlyQ, 0); AI_Countdown_Timer_Start(kActorEarlyQ, 0, 20); break; - case 222: + case kGoalEarlyQNR05Leave: AI_Movement_Track_Flush(kActorEarlyQ); AI_Movement_Track_Append(kActorEarlyQ, 429, 0); AI_Movement_Track_Repeat(kActorEarlyQ); break; - case 223: - if (Player_Query_Current_Scene() == 58) { - Actor_Says(kActorEarlyQ, 670, 3); - Actor_Says(kActorEarlyQ, 690, 3); + case kGoalEarlyQNR05AnnouceDektora: + if (Player_Query_Current_Scene() == kSceneNR05) { + Actor_Says(kActorEarlyQ, 670, kAnimationModeTalk); + Actor_Says(kActorEarlyQ, 690, kAnimationModeTalk); Actor_Set_Goal_Number(kActorDektora, 210); - Actor_Set_Goal_Number(kActorEarlyQ, 224); - Actor_Set_Goal_Number(kActorHanoi, 230); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05UnlockNR08); + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR08WatchShow); } else { - Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQGoToNR05); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Wait); } break; - case 224: - Game_Flag_Set(620); + case kGoalEarlyQNR05UnlockNR08: + Game_Flag_Set(kFlagNR08Available); break; case 229: @@ -463,7 +463,7 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Countdown_Timer_Reset(kActorEarlyQ, 0); break; - case kGoalEarlyQGoToNR04: + case kGoalEarlyQNR04Wait: AI_Movement_Track_Flush(kActorEarlyQ); if (Random_Query(1, 3) > 1) { AI_Movement_Track_Append(kActorEarlyQ, 322, Random_Query(15, 30)); diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp index f8137e8b53..50dc2c0f07 100644 --- a/engines/bladerunner/script/ai/gordo.cpp +++ b/engines/bladerunner/script/ai/gordo.cpp @@ -466,7 +466,7 @@ bool AIScriptGordo::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalGordoStartChapter3: if (Global_Variable_Query(kVariableHollowayArrest) == 2) { if (Game_Flag_Query(kFlagLucyRanAway) - && Game_Flag_Query(591) + && Game_Flag_Query(kFlagDektoraRanAway) && Player_Query_Current_Scene() != kSceneNR02 ) { Actor_Set_Goal_Number(kActorGordo, kGoalGordoNR02WaitAtBar); diff --git a/engines/bladerunner/script/ai/hanoi.cpp b/engines/bladerunner/script/ai/hanoi.cpp index f01e5ad89c..2ddf27b77e 100644 --- a/engines/bladerunner/script/ai/hanoi.cpp +++ b/engines/bladerunner/script/ai/hanoi.cpp @@ -57,16 +57,16 @@ bool AIScriptHanoi::Update() { } if (Player_Query_Current_Scene() != kSceneNR03 - && Actor_Query_Goal_Number(kActorHanoi) == 236 + && Actor_Query_Goal_Number(kActorHanoi) == kGoalHanoiNR08Left ) { Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR03GoToDefaultPosition); } if (Player_Query_Current_Scene() == kSceneNR03 && Actor_Query_Goal_Number(kActorHanoi) != kGoalHanoiNR03StartGuarding - && Actor_Query_Goal_Number(kActorHanoi) != 230 - && Actor_Query_Goal_Number(kActorHanoi) != 235 - && Actor_Query_Goal_Number(kActorHanoi) != 236 + && Actor_Query_Goal_Number(kActorHanoi) != kGoalHanoiNR08WatchShow + && Actor_Query_Goal_Number(kActorHanoi) != kGoalHanoiNR08Leave + && Actor_Query_Goal_Number(kActorHanoi) != kGoalHanoiNR08Left ) { // McCoy close to table swivel if (Actor_Query_Inch_Distance_From_Waypoint(kActorMcCoy, 364) < 420) { @@ -135,8 +135,8 @@ void AIScriptHanoi::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR03GoToDefaultPosition); break; - case 235: - Actor_Set_Goal_Number(kActorHanoi, 236); + case kGoalHanoiNR08Leave: + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR08Left); break; case 240: @@ -155,13 +155,13 @@ void AIScriptHanoi::ReceivedClue(int clueId, int fromActorId) { } void AIScriptHanoi::ClickedByPlayer() { - if (Actor_Query_Goal_Number(kActorHanoi) == 230 - || Actor_Query_Goal_Number(kActorHanoi) == 235 + if (Actor_Query_Goal_Number(kActorHanoi) == kGoalHanoiNR08WatchShow + || Actor_Query_Goal_Number(kActorHanoi) == kGoalHanoiNR08Leave ) { Actor_Face_Actor(kActorMcCoy, kActorHanoi, true); Actor_Says(kActorMcCoy, 8915, 11); - if (Actor_Query_Goal_Number(kActorHanoi) == 230) { + if (Actor_Query_Goal_Number(kActorHanoi) == kGoalHanoiNR08WatchShow) { Actor_Says(kActorHanoi, 210, kAnimationModeTalk); } } @@ -302,20 +302,20 @@ bool AIScriptHanoi::GoalChanged(int currentGoalNumber, int newGoalNumber) { Set_Enter(kSetNR01, kSceneNR01); break; - case 230: + case kGoalHanoiNR08WatchShow: AI_Movement_Track_Flush(kActorHanoi); Actor_Put_In_Set(kActorHanoi, kSetNR05_NR08); Actor_Set_At_XYZ(kActorHanoi, -1387.51f, 0.32f, 288.16f, 292); break; - case 235: + case kGoalHanoiNR08Leave: AI_Movement_Track_Flush(kActorHanoi); AI_Movement_Track_Append(kActorHanoi, 439, 0); AI_Movement_Track_Append(kActorHanoi, 39, 45); AI_Movement_Track_Repeat(kActorHanoi); break; - case 236: + case kGoalHanoiNR08Left: break; case 240: diff --git a/engines/bladerunner/script/ai/lucy.cpp b/engines/bladerunner/script/ai/lucy.cpp index 981c8fc31c..0a44af7ccd 100644 --- a/engines/bladerunner/script/ai/lucy.cpp +++ b/engines/bladerunner/script/ai/lucy.cpp @@ -281,7 +281,7 @@ bool AIScriptLucy::GoalChanged(int currentGoalNumber, int newGoalNumber) { switch (newGoalNumber) { case kGoalLucyMoveAround: if (Global_Variable_Query(kVariableHollowayArrest) == 3) { - if (Game_Flag_Query(591) + if (Game_Flag_Query(kFlagDektoraRanAway) && Game_Flag_Query(kFlagGordoRanAway) && Player_Query_Current_Scene() != kSceneHF03 ) { diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp index af6a76c48a..302ba9371b 100644 --- a/engines/bladerunner/script/ai/steele.cpp +++ b/engines/bladerunner/script/ai/steele.cpp @@ -902,7 +902,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Says(kActorSteele, 1800, 17); Actor_Says(kActorMcCoy, 3835, 18); Actor_Says(kActorSteele, 1810, 16); - Game_Flag_Set(591); + Game_Flag_Set(kFlagDektoraRanAway); Actor_Set_Goal_Number(kActorDektora, 599); Actor_Set_Goal_Number(kActorSteele, 275); break; @@ -915,7 +915,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Says(kActorSteele, 1770, 14); Actor_Says(kActorSteele, 1780, 15); Actor_Says(kActorMcCoy, 3825, 14); - Game_Flag_Set(591); + Game_Flag_Set(kFlagDektoraRanAway); Actor_Set_Goal_Number(kActorDektora, 599); Actor_Set_Goal_Number(kActorSteele, 275); } diff --git a/engines/bladerunner/script/scene/nr01.cpp b/engines/bladerunner/script/scene/nr01.cpp index 6089e6a917..76575f2e70 100644 --- a/engines/bladerunner/script/scene/nr01.cpp +++ b/engines/bladerunner/script/scene/nr01.cpp @@ -320,9 +320,9 @@ void SceneScriptNR01::PlayerWalkedIn() { } if (Game_Flag_Query(kFlagNR03McCoyThrownOut)) { - if (Game_Flag_Query(622)) { + if (Game_Flag_Query(kFlagNR08TouchedDektora)) { ADQ_Add(kActorHanoi, 150, kAnimationModeTalk); - Game_Flag_Reset(622); + Game_Flag_Reset(kFlagNR08TouchedDektora); } Game_Flag_Reset(kFlagNR03McCoyThrownOut); Player_Gains_Control(); diff --git a/engines/bladerunner/script/scene/nr02.cpp b/engines/bladerunner/script/scene/nr02.cpp index eb309573db..38851b48ef 100644 --- a/engines/bladerunner/script/scene/nr02.cpp +++ b/engines/bladerunner/script/scene/nr02.cpp @@ -243,7 +243,7 @@ void SceneScriptNR02::DialogueQueueFlushed(int a1) { } void SceneScriptNR02::playNextMusic() { - int track = Global_Variable_Query(kVariableNR02Music); + int track = Global_Variable_Query(kVariableTaffyLewisMusic); if (track == 0) { Music_Play(8, 41, 0, 2, -1, 0, 0); } else if (track == 1) { @@ -255,7 +255,7 @@ void SceneScriptNR02::playNextMusic() { if (track > 2) { track = 0; } - Global_Variable_Set(kVariableNR02Music, track); + Global_Variable_Set(kVariableTaffyLewisMusic, track); } } // End of namespace BladeRunner diff --git a/engines/bladerunner/script/scene/nr03.cpp b/engines/bladerunner/script/scene/nr03.cpp index e2f627dca1..26f87842b7 100644 --- a/engines/bladerunner/script/scene/nr03.cpp +++ b/engines/bladerunner/script/scene/nr03.cpp @@ -32,9 +32,9 @@ enum kNR03Loops { void SceneScriptNR03::InitializeScene() { if (Game_Flag_Query(kFlagNR05toNR03)) { Setup_Scene_Information(-301.98f, -70.19f, -348.58f, 0); - } else if (Game_Flag_Query(kFlatNR04toNR03)) { + } else if (Game_Flag_Query(kFlagNR04toNR03)) { Setup_Scene_Information( -161.0f, -70.19f, -1139.0f, 500); - Game_Flag_Reset(kFlatNR04toNR03); + Game_Flag_Reset(kFlagNR04toNR03); } else { Setup_Scene_Information( 410.0f, -70.19f, -715.0f, 690); } @@ -172,7 +172,7 @@ bool SceneScriptNR03::ClickedOnExit(int exitId) { } else { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); - Game_Flag_Set(kFlatNR03toNR04); + Game_Flag_Set(kFlagNR03toNR04); Set_Enter(kSetNR04, kSceneNR04); } } @@ -299,7 +299,7 @@ void SceneScriptNR03::PlayerWalkedIn() { } void SceneScriptNR03::PlayerWalkedOut() { - if (!Game_Flag_Query(kFlatNR03toNR04)) { + if (!Game_Flag_Query(kFlagNR03toNR04)) { Music_Stop(2); } if (Game_Flag_Query(kFlagNR03toNR05)) { @@ -356,7 +356,7 @@ void SceneScriptNR03::playNextMusic() { if (Music_Is_Playing()) { Music_Adjust(51, 0, 2); } else { - int track = Global_Variable_Query(kVariableNR03Music); + int track = Global_Variable_Query(kVariableEarlyQFrontMusic); if (track == 0) { Music_Play(14, 51, 0, 2, -1, 0, 0); } else if (track == 1) { @@ -368,7 +368,7 @@ void SceneScriptNR03::playNextMusic() { if (track > 2) { track = 0; } - Global_Variable_Set(kVariableNR03Music, track); + Global_Variable_Set(kVariableEarlyQFrontMusic, track); } } diff --git a/engines/bladerunner/script/scene/nr04.cpp b/engines/bladerunner/script/scene/nr04.cpp index f4d784cf2e..3af9c3e52c 100644 --- a/engines/bladerunner/script/scene/nr04.cpp +++ b/engines/bladerunner/script/scene/nr04.cpp @@ -152,7 +152,7 @@ bool SceneScriptNR04::ClickedOnExit(int exitId) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 45.0f, 0.0f, -106.0f, 0, 1, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); - Game_Flag_Set(kFlatNR04toNR03); + Game_Flag_Set(kFlagNR04toNR03); Set_Enter(kSetNR03, kSceneNR03); } return true; diff --git a/engines/bladerunner/script/scene/nr05.cpp b/engines/bladerunner/script/scene/nr05.cpp index e681b5146e..f88e8c0cee 100644 --- a/engines/bladerunner/script/scene/nr05.cpp +++ b/engines/bladerunner/script/scene/nr05.cpp @@ -43,7 +43,7 @@ void SceneScriptNR05::InitializeScene() { } Scene_Exit_Add_2D_Exit(0, 459, 147, 639, 290, 1); - if (Game_Flag_Query(620)) { + if (Game_Flag_Query(kFlagNR08Available)) { Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3); } @@ -107,11 +107,11 @@ bool SceneScriptNR05::ClickedOnActor(int actorId) { } if (actorId == kActorEarlyQ) { - Actor_Set_Goal_Number(kActorEarlyQ, 229); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05TalkingToMcCoy); if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorEarlyQ, 36, true, false)) { talkToEarlyQ(); } - Actor_Set_Goal_Number(kActorEarlyQ, 221); + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05WillLeave); return true; } @@ -167,8 +167,8 @@ void SceneScriptNR05::SceneFrameAdvanced(int frame) { rotateActorOnGround(kActorHysteriaPatron2); rotateActorOnGround(kActorMcCoy); - if (Actor_Query_Goal_Number(kActorEarlyQ) == 224) { - Actor_Set_Goal_Number(kActorEarlyQ, 225); + if (Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR05UnlockNR08) { + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05UnlockedNR08); if (Player_Query_Current_Scene() == kSceneNR05) { Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3); } @@ -262,9 +262,10 @@ void SceneScriptNR05::talkToBartender() { } void SceneScriptNR05::talkToEarlyQ() { - if (Actor_Query_Goal_Number(kActorEarlyQ) == 220) { - Actor_Set_Goal_Number(kActorEarlyQ, 221); + if (Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR05Wait) { + Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05WillLeave); } + Actor_Face_Actor(kActorMcCoy, kActorEarlyQ, true); Actor_Face_Actor(kActorEarlyQ, kActorMcCoy, true); @@ -340,7 +341,7 @@ void SceneScriptNR05::talkToEarlyQ() { case 910: // BLOND WOMAN Actor_Says(kActorMcCoy, 3515, 14); Actor_Modify_Friendliness_To_Other(kActorEarlyQ, kActorMcCoy, -1); - if (Actor_Clue_Query(kActorMcCoy, kClueGrigoriansNote)) { + if (Actor_Clue_Query(kActorMcCoy, kClueGrigoriansNote)) { // cut content? this clue is unobtanium Actor_Says(kActorEarlyQ, 580, 12); Actor_Says(kActorMcCoy, 3560, 13); Actor_Says(kActorEarlyQ, 590, 16); @@ -387,7 +388,7 @@ void SceneScriptNR05::playNextMusic() { if (Music_Is_Playing()) { Music_Adjust(51, 0, 2); } else { - int track = Global_Variable_Query(kVariableNR05Music); + int track = Global_Variable_Query(kVariableEarlyQBackMusic); if (track == 0) { Music_Play(16, 61, -80, 2, -1, 0, 0); } else if (track == 1) { @@ -399,7 +400,7 @@ void SceneScriptNR05::playNextMusic() { if (track > 2) { track = 0; } - Global_Variable_Set(kVariableNR05Music, track); + Global_Variable_Set(kVariableEarlyQBackMusic, track); } } diff --git a/engines/bladerunner/script/scene/nr06.cpp b/engines/bladerunner/script/scene/nr06.cpp index 4d1e7ebf6b..815a685eed 100644 --- a/engines/bladerunner/script/scene/nr06.cpp +++ b/engines/bladerunner/script/scene/nr06.cpp @@ -25,34 +25,36 @@ namespace BladeRunner { void SceneScriptNR06::InitializeScene() { - sub_401BAC(); - if (Game_Flag_Query(442)) { - Setup_Scene_Information(48.0f, -71.88f, -26.0f, 782); + playNextMusic(); + if (Game_Flag_Query(kFlagNR07toNR06)) { + Setup_Scene_Information( 48.0f, -71.88f, -26.0f, 782); } else { - Setup_Scene_Information(-36.0f, 0.37f, -373.0f, 592); + Setup_Scene_Information(-36.0f, 0.37f, -373.0f, 592); } + Scene_Exit_Add_2D_Exit(0, 533, 234, 592, 414, 1); Scene_Exit_Add_2D_Exit(1, 238, 137, 337, 322, 0); + Ambient_Sounds_Add_Looping_Sound(111, 25, 0, 1); - Ambient_Sounds_Add_Sound(252, 3, 60, 8, 12, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(254, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(255, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(256, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(257, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(258, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(259, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(260, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(261, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(262, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(182, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(184, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(185, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(186, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(188, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(189, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(191, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(192, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(195, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(252, 3, 60, 8, 12, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(254, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(255, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(256, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(257, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(258, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(259, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(260, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(261, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(262, 3, 60, 8, 8, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(182, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(184, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(185, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(186, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(188, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(189, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(191, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(192, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(195, 5, 70, 8, 8, -100, 100, -101, -101, 0, 0); } void SceneScriptNR06::SceneLoaded() { @@ -81,21 +83,22 @@ bool SceneScriptNR06::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR06::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 48.0f, -71.88f, -26.0f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 48.0f, -71.88f, -26.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); - Game_Flag_Set(441); + Game_Flag_Set(kFlagNR06toNR07); Set_Enter(kSetNR07, kSceneNR07); } return true; } + if (exitId == 1) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.0f, -71.88f, -243.0f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.0f, -71.88f, -243.0f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 95, false); Loop_Actor_Travel_Stairs(kActorMcCoy, 8, 1, kAnimationModeIdle); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -36.0f, 0.37f, -373.0f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -36.0f, 0.37f, -373.0f, 0, false, false, 0); Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); - Game_Flag_Set(439); + Game_Flag_Set(kFlagNR06toNR08); Set_Enter(kSetNR05_NR08, kSceneNR08); } return true; @@ -109,7 +112,7 @@ bool SceneScriptNR06::ClickedOn2DRegion(int region) { void SceneScriptNR06::SceneFrameAdvanced(int frame) { if (!Music_Is_Playing()) { - sub_401BAC(); + playNextMusic(); } //return false; } @@ -118,20 +121,20 @@ void SceneScriptNR06::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptNR06::PlayerWalkedIn() { - if (Game_Flag_Query(442)) { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -3.0f, -71.88f, -26.0f, 0, 0, false, 0); - Game_Flag_Reset(442); + if (Game_Flag_Query(kFlagNR07toNR06)) { + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -3.0f, -71.88f, -26.0f, 0, false, false, 0); + Game_Flag_Reset(kFlagNR07toNR06); } else { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -81.72f, 0.12f, -323.49f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -81.72f, 0.12f, -323.49f, 0, false, false, 0); Actor_Face_Heading(kActorMcCoy, 600, false); - Loop_Actor_Travel_Stairs(kActorMcCoy, 8, 0, kAnimationModeIdle); - Game_Flag_Reset(440); + Loop_Actor_Travel_Stairs(kActorMcCoy, 8, false, kAnimationModeIdle); + Game_Flag_Reset(kFlagNR08toNR06); } //return false; } void SceneScriptNR06::PlayerWalkedOut() { - if (Game_Flag_Query(441)) { + if (Game_Flag_Query(kFlagNR06toNR07)) { Music_Stop(2); } } @@ -139,23 +142,23 @@ void SceneScriptNR06::PlayerWalkedOut() { void SceneScriptNR06::DialogueQueueFlushed(int a1) { } -void SceneScriptNR06::sub_401BAC() { +void SceneScriptNR06::playNextMusic() { if (Music_Is_Playing()) { Music_Adjust(31, 80, 2); } else { - int v0 = Global_Variable_Query(54); - if (v0 == 0) { + int track = Global_Variable_Query(kVariableEarlyQBackMusic); + if (track == 0) { Music_Play(16, 61, -80, 2, -1, 0, 0); - } else if (v0 == 1) { + } else if (track == 1) { Music_Play(15, 41, -80, 2, -1, 0, 0); - } else if (v0 == 2) { + } else if (track == 2) { Music_Play(7, 41, -80, 2, -1, 0, 0); } - v0++; - if (v0 > 2) { - v0 = 0; + track++; + if (track > 2) { + track = 0; } - Global_Variable_Set(54, v0); + Global_Variable_Set(kVariableEarlyQBackMusic, track); } } diff --git a/engines/bladerunner/script/scene/nr07.cpp b/engines/bladerunner/script/scene/nr07.cpp index 1f081313d5..4ba1438885 100644 --- a/engines/bladerunner/script/scene/nr07.cpp +++ b/engines/bladerunner/script/scene/nr07.cpp @@ -26,7 +26,9 @@ namespace BladeRunner { void SceneScriptNR07::InitializeScene() { Setup_Scene_Information(-110.0f, -73.5f, -193.0f, 554); + Scene_Exit_Add_2D_Exit(0, 429, 137, 506, 251, 0); + Ambient_Sounds_Add_Looping_Sound(111, 25, 0, 1); } @@ -40,72 +42,84 @@ bool SceneScriptNR07::MouseClick(int x, int y) { } bool SceneScriptNR07::ClickedOn3DObject(const char *objectName, bool a2) { - Actor_Set_Goal_Number(kActorHanoi, 201); + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiDefault); + if (Object_Query_Click("VASE", objectName)) { - sub_401C60(); + clickedOnVase(); } - Actor_Set_Goal_Number(kActorHanoi, 200); + + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiResetTimer); return false; } bool SceneScriptNR07::ClickedOnActor(int actorId) { if (actorId == kActorDektora) { - if (Actor_Query_Goal_Number(kActorHolloway) <= 239) { - Actor_Set_Goal_Number(kActorHanoi, 201); - Actor_Face_Actor(kActorMcCoy, kActorDektora, true); - Dialogue_Menu_Clear_List(); - if (Game_Flag_Query(638)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1100, -1, 3, 8); - DM_Add_To_List_Never_Repeat_Once_Selected(1110, 8, -1, -1); - if (Actor_Clue_Query(kActorMcCoy, kClueSuspectDektora)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1120, 3, 6, 7); - } - if (Actor_Clue_Query(kActorMcCoy, kClueCarRegistration1)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1130, 3, 5, 7); - } - if (Game_Flag_Query(510)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1140, 1, 4, 7); - } - } else { - DM_Add_To_List_Never_Repeat_Once_Selected(1080, 3, 5, 7); - DM_Add_To_List_Never_Repeat_Once_Selected(1090, 7, 5, 4); + if (Actor_Query_Goal_Number(kActorHolloway) < kGoalHollowayGoToNR07) { // Holloway is not yet comming + return true; + } + + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiResetTimer); + Actor_Face_Actor(kActorMcCoy, kActorDektora, true); + Dialogue_Menu_Clear_List(); + if (Game_Flag_Query(kFlagNR07McCoyIsCop)) { + DM_Add_To_List_Never_Repeat_Once_Selected(1100, -1, 3, 8); // VOIGT-KAMPFF + DM_Add_To_List_Never_Repeat_Once_Selected(1110, 8, -1, -1); // CRYSTAL + if (Actor_Clue_Query(kActorMcCoy, kClueSuspectDektora)) { // cut content? clue is not obtainable + DM_Add_To_List_Never_Repeat_Once_Selected(1120, 3, 6, 7); // MOONBUS } - Dialogue_Menu_Add_DONE_To_List(1150); - Dialogue_Menu_Appear(320, 240); - int answer = Dialogue_Menu_Query_Input(); - Dialogue_Menu_Disappear(); - switch (answer) { - case 1140: - sub_4028FC(); - break; - case 1130: - sub_402738(); - break; - case 1120: - sub_402614(); - break; - case 1110: - sub_402510(); - break; - case 1100: - sub_402284(); - break; - case 1090: - Actor_Says(kActorMcCoy, 3650, 13); - Actor_Says(kActorDektora, 630, 30); - Actor_Says(kActorMcCoy, 3655, 16); - Actor_Says(kActorDektora, 640, 31); - break; - case 1080: - sub_401EF4(); - break; - default: - break; + if (Actor_Clue_Query(kActorMcCoy, kClueCarRegistration1)) { + DM_Add_To_List_Never_Repeat_Once_Selected(1130, 3, 5, 7); // BLACK SEDAN } - Actor_Set_Goal_Number(kActorHanoi, 200); - return false; + if (Game_Flag_Query(kFlagNotUsed510)) { // cut content? flag is never set + DM_Add_To_List_Never_Repeat_Once_Selected(1140, 1, 4, 7); // SCORPIONS + } + } else { + DM_Add_To_List_Never_Repeat_Once_Selected(1080, 3, 5, 7); // BELT + DM_Add_To_List_Never_Repeat_Once_Selected(1090, 7, 5, 4); // EARLY-Q } - return true; + Dialogue_Menu_Add_DONE_To_List(1150); // DONE + + Dialogue_Menu_Appear(320, 240); + int answer = Dialogue_Menu_Query_Input(); + Dialogue_Menu_Disappear(); + + switch (answer) { + case 1080: // BELT + talkAboutBelt1(); + break; + + case 1090: // EARLY-Q + Actor_Says(kActorMcCoy, 3650, 13); + Actor_Says(kActorDektora, 630, 30); + Actor_Says(kActorMcCoy, 3655, 16); + Actor_Says(kActorDektora, 640, 31); + break; + + case 1100: // VOIGT-KAMPFF + talkAboutVoightKampff(); + break; + + case 1110: // CRYSTAL + talkAboutSteele(); + break; + + case 1120: // MOONBUS + talkAboutMoonbus(); + break; + + case 1130: // BLACK SEDAN + talkAboutBlackSedan(); + break; + + case 1140: // SCORPIONS + talkAboutScorpions(); + break; + + default: + break; + } + + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiDefault); } return false; } @@ -116,11 +130,11 @@ bool SceneScriptNR07::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR07::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -102.0f, -73.5f, -233.0f, 0, 1, false, 0)) { - Actor_Set_Goal_Number(kActorHanoi, 201); + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -102.0f, -73.5f, -233.0f, 0, true, false, 0)) { + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiResetTimer); Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); - Game_Flag_Set(442); + Game_Flag_Set(kFlagNR07toNR06); Set_Enter(kSetNR06, kSceneNR06); } return true; @@ -139,26 +153,31 @@ void SceneScriptNR07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptNR07::PlayerWalkedIn() { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -110.0f, -73.5f, -169.0f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -110.0f, -73.5f, -169.0f, 0, false, false, 0); + if (Actor_Query_In_Set(kActorDektora, kSetNR07)) { - if (Game_Flag_Query(508)) { - Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -2); - Actor_Says(kActorDektora, 530, 31); - } else { - Game_Flag_Set(508); + if (!Game_Flag_Query(kFlagNR07Entered)) { + Game_Flag_Set(kFlagNR07Entered); + if (!Actor_Clue_Query(kActorDektora, kClueMcCoyIsABladeRunner)) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, 5); - } else if (Actor_Clue_Query(kActorMcCoy, kClueMcCoyWarnedIzo) || Actor_Clue_Query(kActorMcCoy, kClueMcCoyHelpedIzoIzoIsAReplicant)) { + } else if (Actor_Clue_Query(kActorMcCoy, kClueMcCoyWarnedIzo) + || Actor_Clue_Query(kActorMcCoy, kClueMcCoyHelpedIzoIzoIsAReplicant) + ) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, 10); } + Actor_Says(kActorDektora, 500, 30); Actor_Says(kActorMcCoy, 3585, 14); Actor_Says(kActorDektora, 510, 30); Actor_Start_Speech_Sample(kActorMcCoy, 3590); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -112.0f, -73.0f, -89.0f, 525, 0, false, 0); - Actor_Says(kActorDektora, 520, 53); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -112.0f, -73.0f, -89.0f, 525, false, false, 0); + Actor_Says(kActorDektora, 520, kAnimationModeSit); + } else { + Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -2); + Actor_Says(kActorDektora, 530, 31); } - Actor_Set_Goal_Number(kActorHanoi, 200); + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiDefault); } //return false; } @@ -170,27 +189,28 @@ void SceneScriptNR07::PlayerWalkedOut() { void SceneScriptNR07::DialogueQueueFlushed(int a1) { } -void SceneScriptNR07::sub_4018D4() { - Actor_Set_Goal_Number(kActorHanoi, 201); +void SceneScriptNR07::dektoraRunAway() { + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiResetTimer); Player_Loses_Control(); Actor_Set_At_XYZ(kActorDektora, -136.0f, -73.0f, -18.0f, 300); Actor_Change_Animation_Mode(kActorDektora, 71); Actor_Change_Animation_Mode(kActorMcCoy, 21); - Loop_Actor_Walk_To_XYZ(kActorDektora, -102.0f, -73.5f, -233.0f, 0, 0, true, 0); + Loop_Actor_Walk_To_XYZ(kActorDektora, -102.0f, -73.5f, -233.0f, 0, false, true, 0); + if (Game_Flag_Query(kFlagDektoraIsReplicant)) { Actor_Set_Goal_Number(kActorDektora, 245); } else { Actor_Set_Goal_Number(kActorDektora, 295); - Game_Flag_Set(591); + Game_Flag_Set(kFlagDektoraRanAway); Actor_Put_In_Set(kActorDektora, kSetFreeSlotA); Actor_Set_At_Waypoint(kActorDektora, 33, 0); } Player_Gains_Control(); } -void SceneScriptNR07::sub_401A10() { +void SceneScriptNR07::callHolloway() { Scene_Exits_Disable(); - Actor_Set_Goal_Number(kActorHanoi, 201); + Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiResetTimer); Actor_Says_With_Pause(kActorDektora, 930, 1.0f, 30); Actor_Says_With_Pause(kActorDektora, 910, 1.0f, 30); Actor_Face_Object(kActorDektora, "VANITY", true); @@ -202,26 +222,26 @@ void SceneScriptNR07::sub_401A10() { Actor_Change_Animation_Mode(kActorDektora, kAnimationModeCombatIdle); Actor_Face_Actor(kActorMcCoy, kActorDektora, true); Actor_Says(kActorMcCoy, 3760, 19); - Actor_Says(kActorDektora, 960, 53); - Actor_Says(kActorDektora, 920, 53); - Actor_Says(kActorMcCoy, 3780, 0); - Actor_Says(kActorDektora, 970, 53); + Actor_Says(kActorDektora, 960, kAnimationModeSit); + Actor_Says(kActorDektora, 920, kAnimationModeSit); + Actor_Says(kActorMcCoy, 3780, kAnimationModeIdle); + Actor_Says(kActorDektora, 970, kAnimationModeSit); Actor_Voice_Over(1710, kActorVoiceOver); Actor_Voice_Over(1720, kActorVoiceOver); Actor_Voice_Over(1730, kActorVoiceOver); Actor_Set_Goal_Number(kActorHolloway, kGoalHollowayGoToNR07); } -void SceneScriptNR07::sub_401C60() { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, 0, false, 0); +void SceneScriptNR07::clickedOnVase() { + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, false, false, 0); Actor_Face_Object(kActorMcCoy, "VASE", true); if (Actor_Query_Is_In_Current_Set(kActorDektora)) { if (!Actor_Clue_Query(kActorMcCoy, kClueDektoraInterview3)) { Actor_Clue_Acquire(kActorMcCoy, kClueDektoraInterview3, true, -1); - int v0 = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); - if (v0 > 50) { + int friendliness = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); + if (friendliness > 50) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, 2); - } else if (v0 <= 50) { + } else if (friendliness <= 50) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -2); } Actor_Says(kActorMcCoy, 3600, 19); @@ -230,19 +250,19 @@ void SceneScriptNR07::sub_401C60() { Actor_Says(kActorDektora, 560, 31); Actor_Says(kActorMcCoy, 3610, 19); } - } else if (Actor_Clue_Query(kActorMcCoy, kClueDektorasCard)) { - Actor_Says(kActorMcCoy, 8585, 14); - } else { + } else if (!Actor_Clue_Query(kActorMcCoy, kClueDektorasCard)) { Actor_Clue_Acquire(kActorMcCoy, kClueDektorasCard, true, -1); Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "VASE", 100, true, false); Actor_Change_Animation_Mode(kActorMcCoy, 23); Item_Pickup_Spin_Effect(935, 526, 268); Actor_Voice_Over(1690, kActorVoiceOver); Actor_Voice_Over(1700, kActorVoiceOver); + } else { + Actor_Says(kActorMcCoy, 8585, 14); } } -void SceneScriptNR07::sub_401EF4() { +void SceneScriptNR07::talkAboutBelt1() { Actor_Clue_Acquire(kActorMcCoy, kClueDektoraInterview2, true, -1); Actor_Says(kActorMcCoy, 3625, 19); Actor_Says(kActorDektora, 570, 30); @@ -251,43 +271,57 @@ void SceneScriptNR07::sub_401EF4() { Actor_Says_With_Pause(kActorDektora, 590, 1.0f, 30); Actor_Says(kActorDektora, 600, 30); Actor_Start_Speech_Sample(kActorMcCoy, 3640); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, false, false, 0); Actor_Face_Actor(kActorMcCoy, kActorDektora, true); Actor_Face_Actor(kActorDektora, kActorMcCoy, true); - Game_Flag_Set(638); + + Game_Flag_Set(kFlagNR07McCoyIsCop); Actor_Clue_Acquire(kActorMcCoy, kClueDragonflyBelt, true, kActorDektora); - int v0 = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); - if (!Game_Flag_Query(kFlagDektoraIsReplicant) && v0 < 40) { - sub_4018D4(); + + int friendliness = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); + if (!Game_Flag_Query(kFlagDektoraIsReplicant) + && friendliness < 40 + ) { + dektoraRunAway(); return; } - if (v0 < 36) { - sub_401A10(); + + if (friendliness < 36) { + callHolloway(); return; } - sub_4020F0(); + + talkAboutBelt2(); } -void SceneScriptNR07::sub_4020F0() { - if (Actor_Clue_Query(kActorDektora, kClueMcCoysDescription) && Actor_Clue_Query(kActorDektora, kClueMcCoyIsABladeRunner)) { +void SceneScriptNR07::talkAboutBelt2() { + if (Actor_Clue_Query(kActorDektora, kClueMcCoysDescription) + && Actor_Clue_Query(kActorDektora, kClueMcCoyIsABladeRunner) + ) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -1); } + Actor_Says(kActorDektora, 610, 31); Actor_Says(kActorMcCoy, 3645, 12); Actor_Says(kActorDektora, 620, 30); - int v0 = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); - if (!Game_Flag_Query(kFlagDektoraIsReplicant) && v0 < 40) { - sub_4018D4(); + + int friendliness = Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy); + if (!Game_Flag_Query(kFlagDektoraIsReplicant) + && friendliness < 40 + ) { + dektoraRunAway(); return; } - if (v0 < 36) { - sub_401A10(); + + if (friendliness < 36) { + callHolloway(); return; } + Actor_Face_Object(kActorDektora, "VANITY", true); } -void SceneScriptNR07::sub_402284() { +void SceneScriptNR07::talkAboutVoightKampff() { Actor_Clue_Acquire(kActorMcCoy, kClueDektoraInterview1, true, -1); Actor_Start_Speech_Sample(kActorMcCoy, 3660); Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, 0, false, 0); @@ -308,45 +342,50 @@ void SceneScriptNR07::sub_402284() { Actor_Says(kActorDektora, 730, 30); Actor_Says(kActorMcCoy, 3685, 13); Voight_Kampff_Activate(kActorDektora, 40); + if (Game_Flag_Query(kFlagDektoraIsReplicant)) { - sub_401A10(); + callHolloway(); } else { - sub_4018D4(); + dektoraRunAway(); } } -void SceneScriptNR07::sub_402510() { +void SceneScriptNR07::talkAboutSteele() { Actor_Says(kActorMcCoy, 3690, 14); Actor_Start_Speech_Sample(kActorDektora, 750); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, false, false, 0); Actor_Face_Actor(kActorMcCoy, kActorDektora, true); Actor_Face_Actor(kActorDektora, kActorMcCoy, true); Actor_Says(kActorMcCoy, 3695, 15); Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, 5); + if (Game_Flag_Query(kFlagDektoraIsReplicant)) { - sub_401A10(); + callHolloway(); } else { - sub_4018D4(); + dektoraRunAway(); } } -void SceneScriptNR07::sub_402614() { +void SceneScriptNR07::talkAboutMoonbus() { + // cut content? + Actor_Says(kActorMcCoy, 3705, 19); - Actor_Says(kActorDektora, 760, 53); + Actor_Says(kActorDektora, 760, kAnimationModeSit); + if (Game_Flag_Query(kFlagDektoraIsReplicant)) { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -5); Actor_Says(kActorMcCoy, 3710, 18); - sub_401A10(); + callHolloway(); } else { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -3); Actor_Start_Speech_Sample(kActorMcCoy, 3710); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, 0, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -109.0f, -73.0f, -89.0f, 0, false, false, 0); Actor_Face_Actor(kActorMcCoy, kActorDektora, true); - sub_4018D4(); + dektoraRunAway(); } } -void SceneScriptNR07::sub_402738() { +void SceneScriptNR07::talkAboutBlackSedan() { Actor_Modify_Friendliness_To_Other(kActorDektora, kActorMcCoy, -3); Actor_Says(kActorMcCoy, 3615, 16); Actor_Says(kActorDektora, 770, 30); @@ -356,20 +395,21 @@ void SceneScriptNR07::sub_402738() { Actor_Says(kActorMcCoy, 3725, 18); Actor_Says(kActorDektora, 800, 30); Actor_Says_With_Pause(kActorMcCoy, 3730, 2.0f, 13); - Actor_Says_With_Pause(kActorDektora, 810, 1.0f, 53); + Actor_Says_With_Pause(kActorDektora, 810, 1.0f, kAnimationModeSit); Actor_Says(kActorDektora, 820, 30); Actor_Says(kActorMcCoy, 3735, 14); Actor_Says(kActorDektora, 830, 31); Actor_Says(kActorMcCoy, 3740, 19); } -void SceneScriptNR07::sub_4028FC() { +void SceneScriptNR07::talkAboutScorpions() { + // cut content? Actor_Says(kActorMcCoy, 3620, 19); Actor_Says(kActorDektora, 840, 30); Actor_Says(kActorMcCoy, 3745, 9); Actor_Says_With_Pause(kActorDektora, 850, 1.0f, 30); Actor_Says(kActorDektora, 860, 30); - Actor_Says(kActorDektora, 870, 53); + Actor_Says(kActorDektora, 870, kAnimationModeSit); Actor_Says(kActorMcCoy, 3750, 11); Actor_Says(kActorDektora, 880, 30); Actor_Says(kActorMcCoy, 3755, 16); diff --git a/engines/bladerunner/script/scene/nr08.cpp b/engines/bladerunner/script/scene/nr08.cpp index 47d863b299..dd4c0e9f13 100644 --- a/engines/bladerunner/script/scene/nr08.cpp +++ b/engines/bladerunner/script/scene/nr08.cpp @@ -34,25 +34,27 @@ void SceneScriptNR08::InitializeScene() { if (Actor_Query_Goal_Number(kActorDektora) == 210) { Music_Stop(1); } - } else if (Game_Flag_Query(439)) { - Setup_Scene_Information(-724.7f, 0.0f, 384.24f, 1000); - Game_Flag_Reset(439); - } else if (Game_Flag_Query(615)) { - Setup_Scene_Information(-1663.33f, 0.65f, 342.84f, 330); - Game_Flag_Reset(615); + } else if (Game_Flag_Query(kFlagNR06toNR08)) { + Setup_Scene_Information( -724.7f, 0.0f, 384.24f, 1000); + Game_Flag_Reset(kFlagNR06toNR08); + } else if (Game_Flag_Query(kFlagNR09toNR08)) { + Setup_Scene_Information(-1663.33f, 0.65f, 342.84f, 330); + Game_Flag_Reset(kFlagNR09toNR08); } + Scene_Exit_Add_2D_Exit(0, 610, 0, 639, 479, 1); if (Actor_Query_Goal_Number(kActorDektora) != 210) { - Scene_Exit_Add_2D_Exit(1, 0, 309, 30, 398, 3); + Scene_Exit_Add_2D_Exit(1, 0, 309, 30, 398, 3); Scene_Exit_Add_2D_Exit(2, 520, 330, 556, 386, 0); } + Ambient_Sounds_Add_Looping_Sound(280, 50, 38, 0); - Ambient_Sounds_Add_Sound(252, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(254, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(255, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(256, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(257, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(258, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(252, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(254, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(255, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(256, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(257, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(258, 3, 60, 14, 14, 60, 90, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(259, 3, 60, 16, 16, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(260, 3, 60, 16, 16, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(261, 3, 60, 16, 16, -100, 100, -101, -101, 0, 0); @@ -66,6 +68,7 @@ void SceneScriptNR08::InitializeScene() { Ambient_Sounds_Add_Sound(191, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(192, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(195, 5, 70, 12, 12, -100, 100, -101, -101, 0, 0); + Scene_Loop_Set_Default(1); } @@ -95,28 +98,30 @@ bool SceneScriptNR08::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR08::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1102.88f, 0.0f, 107.43f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1102.88f, 0.0f, 107.43f, 0, true, false, 0)) { Game_Flag_Set(kFlagNR08toNR05); Set_Enter(kSetNR05_NR08, kSceneNR05); } return true; } + if (exitId == 1) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -724.7f, 0.0f, 384.24f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -724.7f, 0.0f, 384.24f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 505, false); Loop_Actor_Travel_Stairs(kActorMcCoy, 4, 1, kAnimationModeIdle); - Game_Flag_Set(440); + Game_Flag_Set(kFlagNR08toNR06); Set_Enter(kSetNR06, kSceneNR06); } return true; } + if (exitId == 2) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1663.33f, 0.65f, 342.84f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -1663.33f, 0.65f, 342.84f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 831, false); Footstep_Sound_Override_On(2); Loop_Actor_Travel_Stairs(kActorMcCoy, 6, 1, kAnimationModeIdle); Footstep_Sound_Override_Off(); - Game_Flag_Set(614); + Game_Flag_Set(kFlagNR08toNR09); Set_Enter(kSetNR09, kSceneNR09); } } @@ -129,37 +134,48 @@ bool SceneScriptNR08::ClickedOn2DRegion(int region) { void SceneScriptNR08::SceneFrameAdvanced(int frame) { if (!Music_Is_Playing()) { - sub_4021B4(); + playNextMusic(); } + Set_Fade_Color(0, 0, 0); - if (frame >= 76 && frame < 91) { + + if (frame >= 76 + && frame < 91 + ) { Set_Fade_Density((frame - 76) / 14.0f); Music_Stop(3); Ambient_Sounds_Play_Sound(566, 27, 0, 99, 0); - } else if (frame >= 91 && frame < 120) { + } else if (frame >= 91 + && frame < 120 + ) { Actor_Set_Invisible(kActorMcCoy, true); Set_Fade_Density(1.0f); - } else if (frame >= 120 && frame < 135) { + } else if (frame >= 120 + && frame < 135 + ) { Set_Fade_Density((134 - frame) / 14.0f); Music_Play(7, 61, 0, 1, -1, 0, 0); } else { Actor_Set_Invisible(kActorMcCoy, false); Set_Fade_Density(0.0f); } + if (Game_Flag_Query(651) && !Game_Flag_Query(636)) { Game_Flag_Set(636); Scene_Exits_Disable(); Scene_Loop_Set_Default(1); Scene_Loop_Start_Special(kSceneLoopModeOnce, 3, true); } + if (frame == 95) { Actor_Put_In_Set(kActorDektora, kSetFreeSlotA); Actor_Set_At_Waypoint(kActorDektora, 33, 0); - Actor_Change_Animation_Mode(kActorDektora, 0); + Actor_Change_Animation_Mode(kActorDektora, kAnimationModeIdle); Actor_Set_Goal_Number(kActorDektora, 200); - Scene_Exit_Add_2D_Exit(1, 0, 309, 30, 398, 3); + Scene_Exit_Add_2D_Exit(1, 0, 309, 30, 398, 3); Scene_Exit_Add_2D_Exit(2, 520, 330, 556, 386, 0); } + if (frame == 130) { Scene_Exits_Enable(); } @@ -170,12 +186,14 @@ void SceneScriptNR08::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptNR08::PlayerWalkedIn() { - if (Actor_Query_Goal_Number(kActorDektora) != 210 || Game_Flag_Query(729)) { - Music_Adjust(51, 0, 2); - } else { - Game_Flag_Set(729); + if (Actor_Query_Goal_Number(kActorDektora) == 210 + && !Game_Flag_Query(kFlagNR08DektoraShow) + ) { + Game_Flag_Set(kFlagNR08DektoraShow); Ambient_Sounds_Play_Sound(566, 27, 0, 99, 0); Outtake_Play(kOuttakeDektora, true, -1); + } else { + Music_Adjust(51, 0, 2); } if (Actor_Query_Goal_Number(kActorDektora) == 245) { @@ -217,25 +235,25 @@ void SceneScriptNR08::PlayerWalkedOut() { void SceneScriptNR08::DialogueQueueFlushed(int a1) { } -void SceneScriptNR08::sub_4021B4() { +void SceneScriptNR08::playNextMusic() { if (Music_Is_Playing()) { Music_Adjust(51, 0, 2); } else if (Actor_Query_Goal_Number(kActorDektora) == 210) { Music_Play(6, 61, 0, 1, -1, 0, 0); } else { - int v0 = Global_Variable_Query(54); - if (v0 == 0) { + int track = Global_Variable_Query(kVariableEarlyQBackMusic); + if (track == 0) { Music_Play(16, 61, -80, 2, -1, 0, 0); - } else if (v0 == 1) { + } else if (track == 1) { Music_Play(15, 41, -80, 2, -1, 0, 0); - } else if (v0 == 2) { + } else if (track == 2) { Music_Play(7, 41, -80, 2, -1, 0, 0); } - v0++; - if (v0 > 2) { - v0 = 0; + track++; + if (track > 2) { + track = 0; } - Global_Variable_Set(54, v0); + Global_Variable_Set(kVariableEarlyQBackMusic, track); } } diff --git a/engines/bladerunner/script/scene/nr09.cpp b/engines/bladerunner/script/scene/nr09.cpp index bddf91d037..233f58b262 100644 --- a/engines/bladerunner/script/scene/nr09.cpp +++ b/engines/bladerunner/script/scene/nr09.cpp @@ -25,22 +25,24 @@ namespace BladeRunner { void SceneScriptNR09::InitializeScene() { - if (Game_Flag_Query(476)) { + if (Game_Flag_Query(kFlagNR10toNR09)) { if (!Game_Flag_Query(640)) { Ambient_Sounds_Adjust_Looping_Sound(452, 22, 100, 2); } - Game_Flag_Reset(476); + Game_Flag_Reset(kFlagNR10toNR09); Setup_Scene_Information(-556.07f, 0.35f, 399.04f, 440); } else { if (!Game_Flag_Query(640)) { Ambient_Sounds_Add_Looping_Sound(452, 22, 100, 1); } - Setup_Scene_Information(-704.07f, 0.35f, 663.04f, 0); + Setup_Scene_Information(-704.07f, 0.35f, 663.04f, 0); } + Scene_Exit_Add_2D_Exit(0, 400, 100, 440, 280, 1); Scene_Exit_Add_2D_Exit(1, 0, 0, 30, 479, 3); + Ambient_Sounds_Add_Looping_Sound(205, 22, 0, 1); - Ambient_Sounds_Add_Looping_Sound(71, 33, 0, 1); + Ambient_Sounds_Add_Looping_Sound( 71, 33, 0, 1); Ambient_Sounds_Add_Sound(303, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(304, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); @@ -73,18 +75,19 @@ bool SceneScriptNR09::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR09::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -564.07f, 0.35f, 399.04f, 0, 1, false, 0)) { - Game_Flag_Set(475); + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -564.07f, 0.35f, 399.04f, 0, true, false, 0)) { + Game_Flag_Set(kFlagNR09toNR10); Set_Enter(kSetNR10, kSceneNR10); return true; } } + if (exitId == 1) { - int v1 = Loop_Actor_Walk_To_XYZ(kActorMcCoy, -704.07f, 0.35f, 663.04f, 0, 1, false, 0); Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); + int v1 = Loop_Actor_Walk_To_XYZ(kActorMcCoy, -704.07f, 0.35f, 663.04f, 0, true, false, 0); if (!v1) { - Game_Flag_Set(615); + Game_Flag_Set(kFlagNR09toNR08); Set_Enter(kSetNR05_NR08, kSceneNR08); return true; } @@ -98,7 +101,7 @@ bool SceneScriptNR09::ClickedOn2DRegion(int region) { void SceneScriptNR09::SceneFrameAdvanced(int frame) { if (!Music_Is_Playing()) { - sub_40172C(); + playNextMusic(); } } @@ -106,15 +109,15 @@ void SceneScriptNR09::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo } void SceneScriptNR09::PlayerWalkedIn() { - if (Game_Flag_Query(614)) { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -704.07f, 0.35f, 623.04f, 0, 0, false, 0); - Game_Flag_Reset(614); + if (Game_Flag_Query(kFlagNR08toNR09)) { + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -704.07f, 0.35f, 623.04f, 0, false, false, 0); + Game_Flag_Reset(kFlagNR08toNR09); } //return false; } void SceneScriptNR09::PlayerWalkedOut() { - if (Game_Flag_Query(475)) { + if (Game_Flag_Query(kFlagNR09toNR10)) { Music_Stop(2); } } @@ -122,23 +125,23 @@ void SceneScriptNR09::PlayerWalkedOut() { void SceneScriptNR09::DialogueQueueFlushed(int a1) { } -void SceneScriptNR09::sub_40172C() { +void SceneScriptNR09::playNextMusic() { if (Music_Is_Playing()) { Music_Adjust(31, -80, 2); } else { - int v0 = Global_Variable_Query(54); - if (v0 == 0) { + int track = Global_Variable_Query(kVariableEarlyQBackMusic); + if (track == 0) { Music_Play(16, 61, -80, 2, -1, 0, 0); - } else if (v0 == 1) { + } else if (track == 1) { Music_Play(15, 41, -80, 2, -1, 0, 0); - } else if (v0 == 2) { + } else if (track == 2) { Music_Play(7, 41, -80, 2, -1, 0, 0); } - v0++; - if (v0 > 2) { - v0 = 0; + track++; + if (track > 2) { + track = 0; } - Global_Variable_Set(54, v0); + Global_Variable_Set(kVariableEarlyQBackMusic, track); } } diff --git a/engines/bladerunner/script/scene/nr10.cpp b/engines/bladerunner/script/scene/nr10.cpp index 1d80283857..e2a1df8773 100644 --- a/engines/bladerunner/script/scene/nr10.cpp +++ b/engines/bladerunner/script/scene/nr10.cpp @@ -25,15 +25,17 @@ namespace BladeRunner { void SceneScriptNR10::InitializeScene() { - if (Game_Flag_Query(475)) { - Game_Flag_Reset(475); + if (Game_Flag_Query(kFlagNR09toNR10)) { + Game_Flag_Reset(kFlagNR09toNR10); Setup_Scene_Information(-136.78f, 2.84f, -234.43f, 320); } else { - Game_Flag_Reset(477); - Setup_Scene_Information(19.22f, 2.84f, -250.43f, 540); + Game_Flag_Reset(kFlagNR11toNR10); + Setup_Scene_Information( 19.22f, 2.84f, -250.43f, 540); } + Scene_Exit_Add_2D_Exit(0, 144, 163, 194, 318, 3); Scene_Exit_Add_2D_Exit(1, 475, 95, 568, 230, 0); + Ambient_Sounds_Add_Looping_Sound(205, 22, 0, 1); Ambient_Sounds_Add_Looping_Sound(71, 33, 0, 1); Ambient_Sounds_Add_Sound(303, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); @@ -42,6 +44,7 @@ void SceneScriptNR10::InitializeScene() { Ambient_Sounds_Add_Sound(306, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(307, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(308, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); + if (Game_Flag_Query(640)) { Scene_Loop_Set_Default(0); } else { @@ -62,7 +65,10 @@ bool SceneScriptNR10::MouseClick(int x, int y) { } bool SceneScriptNR10::ClickedOn3DObject(const char *objectName, bool combatMode) { - if (Object_Query_Click("BOX18", objectName) && combatMode && Game_Flag_Query(642)) { + if (Object_Query_Click("BOX18", objectName) + && combatMode + && Game_Flag_Query(642) + ) { Actor_Set_Goal_Number(kActorDektora, 250); Game_Flag_Set(640); Game_Flag_Reset(642); @@ -89,17 +95,18 @@ bool SceneScriptNR10::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR10::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -152.78f, 2.84f, -238.43f, 0, 1, false, 0)) { - Game_Flag_Set(476); + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -152.78f, 2.84f, -238.43f, 0, true, false, 0)) { + Game_Flag_Set(kFlagNR10toNR09); Set_Enter(kSetNR09, kSceneNR09); return true; } } + if (exitId == 1) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 11.5f, 2.84f, -304.46f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 11.5f, 2.84f, -304.46f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 55, false); - Loop_Actor_Travel_Ladder(kActorMcCoy, 8, 1, 0); - Game_Flag_Set(641); + Loop_Actor_Travel_Ladder(kActorMcCoy, 8, true, kAnimationModeIdle); + Game_Flag_Set(kFlagNR10toNR11); Set_Enter(kSetNR11, kSceneNR11); return true; } @@ -120,7 +127,10 @@ void SceneScriptNR10::SceneFrameAdvanced(int frame) { //return true; return; } - if (frame == 61 && Game_Flag_Query(642)) { + + if (frame == 61 + && Game_Flag_Query(642) + ) { Game_Flag_Reset(642); Player_Set_Combat_Mode(false); Actor_Set_Invisible(kActorMcCoy, false); @@ -140,6 +150,7 @@ void SceneScriptNR10::PlayerWalkedIn() { //return true; return; } + if (Actor_Query_Goal_Number(kActorSteele) == 236) { Actor_Face_Actor(kActorSteele, kActorMcCoy, true); Actor_Says(kActorSteele, 150, 13); diff --git a/engines/bladerunner/script/scene/nr11.cpp b/engines/bladerunner/script/scene/nr11.cpp index b450601281..fca1d661ed 100644 --- a/engines/bladerunner/script/scene/nr11.cpp +++ b/engines/bladerunner/script/scene/nr11.cpp @@ -26,18 +26,22 @@ namespace BladeRunner { void SceneScriptNR11::InitializeScene() { Setup_Scene_Information(100.0f, 1.75f, -4.0f, 0); + Scene_Exit_Add_2D_Exit(0, 450, 305, 565, 345, 2); + if (!Game_Flag_Query(640)) { Ambient_Sounds_Adjust_Looping_Sound(452, 22, 0, 1); } + Ambient_Sounds_Add_Looping_Sound(205, 22, 0, 1); - Ambient_Sounds_Add_Looping_Sound(71, 33, 0, 1); + Ambient_Sounds_Add_Looping_Sound( 71, 33, 0, 1); Ambient_Sounds_Add_Sound(303, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(304, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(306, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(307, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(308, 2, 50, 7, 17, -100, 100, -101, -101, 0, 0); + if (Game_Flag_Query(632)) { Scene_Loop_Set_Default(3); Ambient_Sounds_Add_Looping_Sound(381, 83, 0, 1); @@ -46,7 +50,7 @@ void SceneScriptNR11::InitializeScene() { Ambient_Sounds_Add_Looping_Sound(381, 83, 0, 1); } else { Scene_Loop_Set_Default(0); - Overlay_Play("NR11OVER", 0, 1, 0, 0); + Overlay_Play("NR11OVER", 0, true, false, 0); } } @@ -111,11 +115,26 @@ bool SceneScriptNR11::MouseClick(int x, int y) { bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode) { - if (Object_Query_Click("CLOTHING02", objectName) || Object_Query_Click("BOX27", objectName) || Object_Query_Click("BOX39", objectName) || Object_Query_Click("BOX44", objectName) || Object_Query_Click("DRESS", objectName) || Object_Query_Click("COATRACK", objectName) || Object_Query_Click("COLUMN3 DETS", objectName) || Object_Query_Click("COLUMN PIPE01", objectName) || Object_Query_Click("RECTANGLE02", objectName) || Object_Query_Click("COLUMN04", objectName) || Object_Query_Click("COATRACK01", objectName) || Object_Query_Click("SHIRT", objectName) || Object_Query_Click("SKIRT 02", objectName) || Object_Query_Click("CLOTHING B 03", objectName) || Object_Query_Click("BUST BUST", objectName)) { + if (Object_Query_Click("CLOTHING02", objectName) + || Object_Query_Click("BOX27", objectName) + || Object_Query_Click("BOX39", objectName) + || Object_Query_Click("BOX44", objectName) + || Object_Query_Click("DRESS", objectName) + || Object_Query_Click("COATRACK", objectName) + || Object_Query_Click("COLUMN3 DETS", objectName) + || Object_Query_Click("COLUMN PIPE01", objectName) + || Object_Query_Click("RECTANGLE02", objectName) + || Object_Query_Click("COLUMN04", objectName) + || Object_Query_Click("COATRACK01", objectName) + || Object_Query_Click("SHIRT", objectName) + || Object_Query_Click("SKIRT 02", objectName) + || Object_Query_Click("CLOTHING B 03", objectName) + || Object_Query_Click("BUST BUST", objectName) + ) { if (combatMode) { Actor_Set_Goal_Number(kActorSteele, 211); Scene_Exits_Disable(); - sub_4028EC(); + untargetEverything(); Player_Loses_Control(); if (!Player_Query_Combat_Mode()) { Player_Set_Combat_Mode(true); @@ -126,7 +145,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode) } else if (Actor_Query_Goal_Number(kActorDektora) == 250) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 24.0f, 0.33f, 0.0f, 0, 1, false, 0)) { Actor_Face_XYZ(kActorMcCoy, -180.0f, 0.0f, -170.0f, true); - sub_4028EC(); + untargetEverything(); Actor_Set_Goal_Number(kActorSteele, 211); if (Actor_Query_Friendliness_To_Other(kActorDektora, kActorMcCoy) < 30) { Actor_Set_At_XYZ(kActorDektora, 0.5f, 0.33f, -162.0f, 0); @@ -183,7 +202,7 @@ bool SceneScriptNR11::ClickedOn3DObject(const char *objectName, bool combatMode) if (Global_Variable_Query(kVariableHollowayArrest) == 1) { Actor_Set_Goal_Number(kActorSteele, 236); } - Game_Flag_Set(591); + Game_Flag_Set(kFlagDektoraRanAway); } } else { if (Random_Query(1, 2) == 1) { @@ -208,8 +227,8 @@ bool SceneScriptNR11::ClickedOnItem(int itemId, bool a2) { bool SceneScriptNR11::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 100.0f, 1.75f, -8.0f, 0, 1, false, 0)) { - Game_Flag_Set(477); + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 100.0f, 1.75f, -8.0f, 0, true, false, 0)) { + Game_Flag_Set(kFlagNR11toNR10); Set_Enter(kSetNR10, kSceneNR10); return true; } @@ -225,37 +244,47 @@ void SceneScriptNR11::SceneFrameAdvanced(int frame) { if (frame == 62) { Ambient_Sounds_Play_Sound(449, 40, 100, 100, 10); } + if (frame == 67) { Ambient_Sounds_Play_Sound(449, 30, 90, 90, 10); } + if (frame == 74) { Ambient_Sounds_Play_Sound(450, 50, 83, 83, 10); } + if (frame == 80) { Ambient_Sounds_Play_Sound(449, 60, 65, 65, 10); } + if (frame == 92) { Ambient_Sounds_Play_Sound(450, 30, 50, 50, 10); } + if (frame == 97) { Ambient_Sounds_Play_Sound(449, 50, -40, -40, 10); } + if (frame == 103) { Ambient_Sounds_Play_Sound(450, 40, -27, -27, 10); } + if (frame == 109) { Ambient_Sounds_Play_Sound(449, 60, -20, -20, 10); } + if (frame == 62) { Ambient_Sounds_Play_Sound(122, 80, 100, 100, 15); } + if (Game_Flag_Query(659)) { Game_Flag_Reset(659); Overlay_Remove("NR11OVER"); Overlay_Play("NR11OVER", 1, 0, 1, 0); } + if (Game_Flag_Query(635)) { - sub_4028EC(); + untargetEverything(); Player_Loses_Control(); if (!Player_Query_Combat_Mode()) { Player_Set_Combat_Mode(true); @@ -363,7 +392,7 @@ void SceneScriptNR11::sub_4027D0(int actorId, signed int frame) { Actor_Face_XYZ(actorId, x, y, z, true); } -void SceneScriptNR11::sub_4028EC() { +void SceneScriptNR11::untargetEverything() { Un_Combat_Target_Object("CLOTHING02"); Un_Combat_Target_Object("BOX27"); Un_Combat_Target_Object("BOX39"); diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h index ed7bcebdee..77cf8597d4 100644 --- a/engines/bladerunner/script/scene_script.h +++ b/engines/bladerunner/script/scene_script.h @@ -321,28 +321,28 @@ DECLARE_SCRIPT(NR05) END_SCRIPT DECLARE_SCRIPT(NR06) - void sub_401BAC(); + void playNextMusic(); END_SCRIPT DECLARE_SCRIPT(NR07) - void sub_4018D4(); - void sub_401A10(); - void sub_401C60(); - void sub_401EF4(); - void sub_4020F0(); - void sub_402284(); - void sub_402510(); - void sub_402614(); - void sub_402738(); - void sub_4028FC(); + void dektoraRunAway(); + void callHolloway(); + void clickedOnVase(); + void talkAboutBelt1(); + void talkAboutBelt2(); + void talkAboutVoightKampff(); + void talkAboutSteele(); + void talkAboutMoonbus(); + void talkAboutBlackSedan(); + void talkAboutScorpions(); END_SCRIPT DECLARE_SCRIPT(NR08) - void sub_4021B4(); + void playNextMusic(); END_SCRIPT DECLARE_SCRIPT(NR09) - void sub_40172C(); + void playNextMusic(); END_SCRIPT DECLARE_SCRIPT(NR10) @@ -350,7 +350,7 @@ END_SCRIPT DECLARE_SCRIPT(NR11) void sub_4027D0(int actorId, signed int frame); - void sub_4028EC(); + void untargetEverything(); END_SCRIPT DECLARE_SCRIPT(PS01) |