diff options
Diffstat (limited to 'engines')
27 files changed, 446 insertions, 335 deletions
diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index 62a00ec036..7aabef9c05 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -626,7 +626,7 @@ enum Flags { kFlagSteeleInChinaTown = 184, kFlagSteeleInPoliceStation = 185, kFlagRC01PoliceDone = 186, - kFlagRC02TalkedToRunciter = 187, + kFlagRC02RunciterTalk1 = 187, // 188 is never used // 189 is never used kFlagRC02ShellCasingsTaken = 190, @@ -860,7 +860,7 @@ enum Flags { kFlagUG09ToUG07 = 428, kFlagUG08toUG13 = 429, kFlagUG13toUG08 = 430, - + kFlagUB08ElevatorUp = 431, kFlagUG09toCT12 = 432, kFlagCT12ToUG09 = 433, kFlagUG13toUG18 = 434, // is never checked @@ -933,6 +933,7 @@ enum Flags { kFlagTB06DogCollarTaken = 519, kFlagTB06KitchenBoxTaken = 520, kFlagHC03TrapDoorOpened = 521, + kFlagUG06Chapter4Started = 524, kFlagCT10Entered = 525, kFlagHF02toHF03 = 527, kFlagHF03toHF02 = 528, @@ -958,6 +959,7 @@ enum Flags { kFlagMcCoyTiedDown = 550, kFlagUG16toDR06 = 551, // is never checked kFlagDR06toUG16 = 552, + kFlagUG13Entered = 553, kFlagDR01toCT11 = 558, kFlagNR02GordoLeaveLighter = 561, kFlagHF05CrazyLegsTalk1 = 562, @@ -992,6 +994,7 @@ enum Flags { kFlagNR04EarlyQStungByScorpions = 606, kFlagTB07toTB02 = 608, kFlagNR04McCoyAimedAtEarlyQ = 609, + kFlagUG08Entered = 610, kFlagNR03HanoiTalk = 611, kFlagTB07RachaelTalk = 612, kFlagHF03LucyTalk = 613, @@ -1004,6 +1007,7 @@ enum Flags { kFlagNR08Available = 620, // 621 is never used kFlagNR08TouchedDektora = 622, + kFlagUG07Empty = 623, kFlagTB07TyrellMeeting = 625, kFlagNR01McCoyIsDrugged = 627, kFlagNR01DektoraFall = 632, @@ -1025,6 +1029,7 @@ enum Flags { kFlagMA04PhoneMessageFromLucy = 650, kFlagNR08McCoyWatchingShow = 651, kFlagCrazylegsArrestedTalk = 652, + kFlagMA02RajifTalk = 655, kFlagUG02RagiationGooglesTaken = 656, kFlagNR11BreakWindow = 659, kFlagDNARowAvailableTalk = 660, @@ -1044,6 +1049,9 @@ enum Flags { kFlagUG03DeadHomeless = 693, kFlagUG14DeadHomeless = 694, kFlagBulletBobDead = 702, + kFlagRC02EnteredChapter4 = 704, + kFlagRC02RunciterTalkWithGun = 705, + kFlagRC02RunciterTalk2 = 706, kFlagTB06PhotographTalk1 = 707, kFlagUG02AmmoTaken = 708, kFlagRC51Discovered = 709, @@ -1275,27 +1283,27 @@ enum Scenes { kSceneRC03 = 80, // Bullet Bob's Runner Surplus - Outside kSceneRC04 = 81, // Bullet Bob's Runner Surplus - Inside kSceneTB02 = 82, // Tyrell Building - Reception - kSceneTB03 = 83, + kSceneTB03 = 83, // Tyrell Building - Reception back kSceneTB05 = 84, // Tyrell Building - Grav Test Lab - Iutside kSceneTB06 = 85, // Tyrell Building - Grav Test Lab - Inside - kSceneUG01 = 86, // Underground - Under Bullet Bob entrance - kSceneUG02 = 87, // Underground - Under Green pawn - kSceneUG03 = 88, - kSceneUG04 = 89, - kSceneUG05 = 90, - kSceneUG06 = 91, - kSceneUG07 = 92, - kSceneUG08 = 93, - kSceneUG09 = 94, - kSceneUG10 = 95, // Undergound - Bridge - kSceneUG12 = 96, - kSceneUG13 = 97, + kSceneUG01 = 86, // Underground - Under RC03 + kSceneUG02 = 87, // Underground - Under HC03 + kSceneUG03 = 88, // Underground - Chair + kSceneUG04 = 89, // Underground - Rails with crash - start + kSceneUG05 = 90, // Underground - Under HF07 - Rails with cars + kSceneUG06 = 91, // Underground - Under NR01 - Metro entrance + kSceneUG07 = 92, // Underground - Pipe + kSceneUG08 = 93, // Underground - Elevator + kSceneUG09 = 94, // Underground - Behind CT12 + kSceneUG10 = 95, // Underground - Moving bridge + kSceneUG12 = 96, // Underground - Gate + kSceneUG13 = 97, // Underground - Homeless' living room kSceneUG14 = 98, kSceneUG15 = 99, - kSceneUG16 = 100, - kSceneUG17 = 101, - kSceneUG18 = 102, - kSceneUG19 = 103, + kSceneUG16 = 100, // Underground - Under DR06 + kSceneUG17 = 101, // Underground - Under TB03 + kSceneUG18 = 102, // Underground - Pit + kSceneUG19 = 103, // Underground - Under MA07 kSceneBB51 = 104, // Bradbury Building - Billiard room - Back kSceneCT51 = 105, // Chinatown - Yukon Hotel - Backroom - back kSceneHC04 = 106, // Hawker's Circle - Kingston kitchen @@ -1305,8 +1313,7 @@ enum Scenes { kSceneBB12 = 120 // Bradbury Building - Monkey room }; -enum Sets -{ +enum Sets { kSetAR01_AR02 = 0, kSetBB02_BB04_BB06_BB51 = 1, kSetBB06_BB07 = 2, //BB06 @@ -1862,15 +1869,17 @@ enum GoalBulletBob { kGoalBulletBobDefault = 0, kGoalBulletBobWarningMcCoy = 1, kGoalBulletBobShootMcCoy = 2, - kGoalBulletBobShotMcCoy = 3, // has no use - kGoalBulletBobDead = 4 + kGoalBulletBobWillShotMcCoy = 3, // has no use + kGoalBulletBobDead = 4, + kGoalBulletBobShotMcCoy = 6, + kGoalBulletBobGone = 99 }; enum GoalRunciter { kGoalRunciterDefault = 0, - kGoalRunciterWalkAroundRC02 = 1, + kGoalRunciterRC02WalkAround = 1, kGoalRunciterGoToFreeSlotGH = 2, - kGoalRunciterAtShop = 300, + kGoalRunciterRC02Wait = 300, kGoalRunciterDead = 599 }; diff --git a/engines/bladerunner/script/ai/bullet_bob.cpp b/engines/bladerunner/script/ai/bullet_bob.cpp index 1a97a826cd..75acdfdb21 100644 --- a/engines/bladerunner/script/ai/bullet_bob.cpp +++ b/engines/bladerunner/script/ai/bullet_bob.cpp @@ -79,7 +79,7 @@ bool AIScriptBulletBob::Update() { Actor_Face_Heading(kActorBulletBob, 208, false); _animationFrame = 0; _animationState = 2; - Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy); + Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobWillShotMcCoy); Game_Flag_Set(kFlagRC04BobShootMcCoy); return true; } @@ -142,7 +142,7 @@ bool AIScriptBulletBob::ShotAtAndHit() { Global_Variable_Increment(kVariableBobShot, 1); if (Global_Variable_Query(kVariableBobShot) > 0) { Actor_Set_Targetable(kActorBulletBob, false); - Actor_Set_Goal_Number(kActorBulletBob, 99); + Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobGone); _animationFrame = 0; _animationState = 3; Ambient_Sounds_Play_Speech_Sound(kActorGordo, 9000, 100, 0, 0, 0); // not a typo, it's really from Gordo @@ -178,7 +178,7 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; } - if (newGoalNumber == kGoalBulletBobDead + if ( newGoalNumber == kGoalBulletBobDead && !Actor_Clue_Query(kActorMcCoy, kClueVKBobGorskyReplicant) ) { Delay(2000); @@ -189,11 +189,11 @@ bool AIScriptBulletBob::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; } - if (newGoalNumber == 6) { + if (newGoalNumber == kGoalBulletBobShotMcCoy) { Scene_Exits_Disable(); Actor_Force_Stop_Walking(kActorMcCoy); Ambient_Sounds_Play_Speech_Sound(kActorMcCoy, 9900, 100, 0, 0, 0); - Actor_Change_Animation_Mode(kActorMcCoy, 48); + Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie); Actor_Retired_Here(kActorMcCoy, 6, 6, 1, -1); Scene_Exits_Enable(); return true; @@ -268,7 +268,7 @@ bool AIScriptBulletBob::UpdateAnimation(int *animation, int *frame) { } if (_animationFrame == 5) { Sound_Play(493, 90, 0, 0, 50); - Actor_Set_Goal_Number(kActorBulletBob, 6); + Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShotMcCoy); } break; diff --git a/engines/bladerunner/script/ai/free_slot_a.cpp b/engines/bladerunner/script/ai/free_slot_a.cpp index f673860119..6c3e9e2c80 100644 --- a/engines/bladerunner/script/ai/free_slot_a.cpp +++ b/engines/bladerunner/script/ai/free_slot_a.cpp @@ -51,9 +51,15 @@ void AIScriptFreeSlotA::Initialize() { bool AIScriptFreeSlotA::Update() { switch (Global_Variable_Query(kVariableChapter)) { case 4: - if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02 && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02) { + if (Actor_Query_Which_Set_In(kActorMcCoy) == kSceneUG02 + && Actor_Query_Which_Set_In(kActorFreeSlotA) == kSceneUG02 + ) { int goal = Actor_Query_Goal_Number(kActorFreeSlotA); - if ((goal == 302 || goal == 303) && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48) { + if ((goal == 302 + || goal == 303 + ) + && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48 + ) { Actor_Set_Goal_Number(kActorFreeSlotA, 304); } else if (goal == 309) { float x, y, z; @@ -72,7 +78,8 @@ bool AIScriptFreeSlotA::Update() { switch (Actor_Query_Goal_Number(kActorFreeSlotA)) { case 306: if (Actor_Query_Which_Set_In(kActorFreeSlotA) == Player_Query_Current_Set() - && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48) { + && Actor_Query_Inch_Distance_From_Actor(kActorFreeSlotA, kActorMcCoy) <= 48 + ) { Actor_Set_Goal_Number(kActorFreeSlotA, 308); } break; diff --git a/engines/bladerunner/script/ai/mutant1.cpp b/engines/bladerunner/script/ai/mutant1.cpp index fa9b736671..3849cfcaea 100644 --- a/engines/bladerunner/script/ai/mutant1.cpp +++ b/engines/bladerunner/script/ai/mutant1.cpp @@ -295,7 +295,7 @@ bool AIScriptMutant1::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case 8: - if (Game_Flag_Query(623) == 1) { + if (Game_Flag_Query(kFlagUG07Empty)) { AI_Movement_Track_Append(kActorMutant1, 418, 0); AI_Movement_Track_Append(kActorMutant1, 417, 0); AI_Movement_Track_Append(kActorMutant1, 539, 0); diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp index 0348806508..718a39aff7 100644 --- a/engines/bladerunner/script/ai/officer_leary.cpp +++ b/engines/bladerunner/script/ai/officer_leary.cpp @@ -91,7 +91,7 @@ bool AIScriptOfficerLeary::Update() { return false; } - if ( Game_Flag_Query(623) + if ( Game_Flag_Query(kFlagUG07Empty) && !Game_Flag_Query(664) ) { Game_Flag_Set(664); diff --git a/engines/bladerunner/script/ai/rajif.cpp b/engines/bladerunner/script/ai/rajif.cpp index 26cf41282f..3703e74b64 100644 --- a/engines/bladerunner/script/ai/rajif.cpp +++ b/engines/bladerunner/script/ai/rajif.cpp @@ -37,7 +37,9 @@ void AIScriptRajif::Initialize() { } bool AIScriptRajif::Update() { - if (Global_Variable_Query(kVariableChapter) == 5 && Actor_Query_Goal_Number(kActorRajif) < 400) + if (Global_Variable_Query(kVariableChapter) == 5 + && Actor_Query_Goal_Number(kActorRajif) < 400 + ) Actor_Set_Goal_Number(kActorRajif, 599); return false; @@ -98,6 +100,7 @@ bool AIScriptRajif::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Change_Animation_Mode(kActorRajif, 0); return true; } + if (newGoalNumber == 599) { Actor_Put_In_Set(kActorRajif, kSetFreeSlotI); Actor_Set_At_Waypoint(kActorRajif, 41, 0); diff --git a/engines/bladerunner/script/ai/runciter.cpp b/engines/bladerunner/script/ai/runciter.cpp index 8087489d49..11ad906593 100644 --- a/engines/bladerunner/script/ai/runciter.cpp +++ b/engines/bladerunner/script/ai/runciter.cpp @@ -57,19 +57,21 @@ bool AIScriptRunciter::Update() { ) { Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterGoToFreeSlotGH); } + if (Global_Variable_Query(kVariableChapter) == 4 - && Actor_Query_Goal_Number(kActorRunciter) < 300 + && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait ) { - Actor_Set_Goal_Number(kActorRunciter, 300); + Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02Wait); } + return false; } void AIScriptRunciter::TimerExpired(int timer) {} void AIScriptRunciter::CompletedMovementTrack() { - if (Actor_Query_Goal_Number(kActorRunciter) == 1) { - if (Player_Query_Current_Scene() == 79) { + if (Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02WalkAround) { + if (Player_Query_Current_Scene() == kSceneRC02) { switch (Random_Query(1, 5)) { case 2: case 3: @@ -85,7 +87,7 @@ void AIScriptRunciter::CompletedMovementTrack() { } } Actor_Set_Goal_Number(kActorRunciter, 99); - Actor_Set_Goal_Number(kActorRunciter, 1); + Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround); //return true; } //return false; @@ -102,12 +104,15 @@ void AIScriptRunciter::OtherAgentEnteredThisScene(int otherActorId) {} void AIScriptRunciter::OtherAgentExitedThisScene(int otherActorId) {} void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) { - if (Actor_Query_Goal_Number(kActorRunciter) == 300 && combatMode == 1 && !Game_Flag_Query(705)) { + if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait + && combatMode + && !Game_Flag_Query(kFlagRC02RunciterTalkWithGun) + ) { Actor_Set_Targetable(kActorRunciter, true); Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); Actor_Says(kActorRunciter, 420, 12); Actor_Face_Actor(kActorMcCoy, kActorRunciter, true); - Actor_Change_Animation_Mode(kActorMcCoy, 5); + Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeCombatAim); if (Actor_Clue_Query(kActorMcCoy, kClueZubensMotive)) { Actor_Says(kActorMcCoy, 4770, -1); Actor_Says(kActorRunciter, 590, 13); @@ -145,7 +150,7 @@ void AIScriptRunciter::OtherAgentEnteredCombatMode(int otherActorId, int combatM Actor_Says(kActorRunciter, 530, 18); Actor_Says(kActorRunciter, 540, 16); } - Game_Flag_Set(705); + Game_Flag_Set(kFlagRC02RunciterTalkWithGun); } } @@ -180,7 +185,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Set_At_Waypoint(kActorRunciter, 92, 567); return false; } - if (newGoalNumber == kGoalRunciterWalkAroundRC02) { + + if (newGoalNumber == kGoalRunciterRC02WalkAround) { AI_Movement_Track_Flush(kActorRunciter); if (Random_Query(0, 1) == 1) { if (Random_Query(0, 1) == 0) { @@ -198,6 +204,7 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Repeat(kActorRunciter); return true; } + if (newGoalNumber == kGoalRunciterGoToFreeSlotGH) { AI_Movement_Track_Flush(kActorRunciter); AI_Movement_Track_Append(kActorRunciter, 39, 120); @@ -205,7 +212,8 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Repeat(kActorRunciter); return false; } - if (newGoalNumber == kGoalRunciterAtShop) { + + if (newGoalNumber == kGoalRunciterRC02Wait) { Actor_Put_In_Set(kActorRunciter, kSetRC02_RC51); Actor_Set_At_Waypoint(kActorRunciter, 93, 1007); return false; @@ -214,77 +222,95 @@ bool AIScriptRunciter::GoalChanged(int currentGoalNumber, int newGoalNumber) { } bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { - switch (_animationState) { - case kRunciterStateDead: - *animation = 528; - _animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1; - *frame = _animationFrame; - break; - case kRunciterStateDying: - *animation = 528; - _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) { - *animation = 528; - _animationState = kRunciterStateDead; - } - *frame = _animationFrame; - break; - case 13: + case kRunciterStateIdle: if (var_45CD78 == 0) { - _animationFrame = 0; - _animationState = _animationStateNext; - *animation = _animationNext; + *animation = 529; + if (var_45CD84) { + var_45CD84--; + } else { + _animationFrame += var_45CD80; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) { + _animationFrame = 0; + } + if (_animationFrame < 0) { + _animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1; + } + --var_45CD7C; + if (var_45CD7C == 0) { + var_45CD80 = 2 * Random_Query(0, 1) - 1; + var_45CD7C = Random_Query(6, 14); + var_45CD84 = Random_Query(0, 4); + } + if (_animationFrame == 0) { + if (Random_Query(0, 1) == 1) { + var_45CD78 = Random_Query(1, 2); + var_45CD80 = 1; + var_45CD84 = 0; + } + } + } } else if (var_45CD78 == 1) { *animation = 530; - _animationFrame += 3; + _animationFrame++; if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) { _animationFrame = 0; - _animationState = _animationStateNext; - *animation = _animationNext; + var_45CD78 = 0; + *animation = 529; + var_45CD7C = Random_Query(6, 14); + var_45CD80 = 2 * Random_Query(0, 1) - 1; } } else if (var_45CD78 == 2) { *animation = 531; - _animationFrame -= 3; - if (_animationFrame - 3 < 0) { - _animationFrame = 0; - _animationState = _animationStateNext; - *animation = _animationNext; + if (var_45CD84) { + var_45CD84--; + } else { + _animationFrame += var_45CD80; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) { + var_45CD84 = Random_Query(5, 15); + var_45CD80 = -1; + } + if (_animationFrame <= 0) { + _animationFrame = 0; + var_45CD78 = 0; + *animation = 529; + var_45CD7C = Random_Query(6, 14); + var_45CD80 = 2 * Random_Query(0, 1) - 1; + } } } *frame = _animationFrame; break; - case 12: - *animation = 532; + + case kRunciterStateWalking: + *animation = 526; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) { - *animation = 529; - _animationState = 0; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) { _animationFrame = 0; - var_45CD78 = 0; - Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle); } *frame = _animationFrame; break; - case 11: - *animation = 541; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) { + + case 2: + *animation = 533; + _animationFrame++; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; _animationState = 0; var_45CD78 = 0; } else { - *animation = 533; - _animationState = 2; + _animationState = 4; } } *frame = _animationFrame; break; - case 10: - *animation = 540; + + case 4: + *animation = 534; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -297,10 +323,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 9: - *animation = 539; + + case 5: + *animation = 535; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -313,10 +340,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 8: - *animation = 538; + + case 6: + *animation = 536; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -329,6 +357,7 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; + case 7: *animation = 537; _animationFrame++; @@ -345,10 +374,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 6: - *animation = 536; + + case 8: + *animation = 538; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(536)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(538)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -361,10 +391,11 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 5: - *animation = 535; + + case 9: + *animation = 539; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(535)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(539)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -377,10 +408,10 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 4: - *animation = 534; + case 10: + *animation = 540; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(534)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(540)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; @@ -393,87 +424,77 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { } *frame = _animationFrame; break; - case 2: - *animation = 533; - _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(533)) { + + case 11: + *animation = 541; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(541)) { _animationFrame = 0; if (var_45CD88) { *animation = 529; _animationState = 0; var_45CD78 = 0; } else { - _animationState = 4; + *animation = 533; + _animationState = 2; } } *frame = _animationFrame; break; - case kRunciterStateWalking: - *animation = 526; + + case 12: + *animation = 532; _animationFrame++; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(526)) { + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(532)) { + *animation = 529; + _animationState = 0; _animationFrame = 0; + var_45CD78 = 0; + Actor_Change_Animation_Mode(kActorRunciter, kAnimationModeCombatIdle); } *frame = _animationFrame; break; - case kRunciterStateIdle: + + case 13: if (var_45CD78 == 0) { - *animation = 529; - if (var_45CD84) { - var_45CD84--; - } else { - _animationFrame += var_45CD80; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(529)) { - _animationFrame = 0; - } - if (_animationFrame < 0) { - _animationFrame = Slice_Animation_Query_Number_Of_Frames(529) - 1; - } - --var_45CD7C; - if (var_45CD7C == 0) { - var_45CD80 = 2 * Random_Query(0, 1) - 1; - var_45CD7C = Random_Query(6, 14); - var_45CD84 = Random_Query(0, 4); - } - if (_animationFrame == 0) { - if (Random_Query(0, 1) == 1) { - var_45CD78 = Random_Query(1, 2); - var_45CD80 = 1; - var_45CD84 = 0; - } - } - } + _animationFrame = 0; + _animationState = _animationStateNext; + *animation = _animationNext; } else if (var_45CD78 == 1) { *animation = 530; - _animationFrame++; + _animationFrame += 3; if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(530)) { _animationFrame = 0; - var_45CD78 = 0; - *animation = 529; - var_45CD7C = Random_Query(6, 14); - var_45CD80 = 2 * Random_Query(0, 1) - 1; + _animationState = _animationStateNext; + *animation = _animationNext; } } else if (var_45CD78 == 2) { *animation = 531; - if (var_45CD84) { - var_45CD84--; - } else { - _animationFrame += var_45CD80; - if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(*animation) - 1) { - var_45CD84 = Random_Query(5, 15); - var_45CD80 = -1; - } - if (_animationFrame <= 0) { - _animationFrame = 0; - var_45CD78 = 0; - *animation = 529; - var_45CD7C = Random_Query(6, 14); - var_45CD80 = 2 * Random_Query(0, 1) - 1; - } + _animationFrame -= 3; + if (_animationFrame - 3 < 0) { + _animationFrame = 0; + _animationState = _animationStateNext; + *animation = _animationNext; } } *frame = _animationFrame; break; + + case kRunciterStateDying: + *animation = 528; + _animationFrame++; + if (_animationFrame >= Slice_Animation_Query_Number_Of_Frames(528) - 1) { + *animation = 528; + _animationState = kRunciterStateDead; + } + *frame = _animationFrame; + break; + + case kRunciterStateDead: + *animation = 528; + _animationFrame = Slice_Animation_Query_Number_Of_Frames(528) - 1; + *frame = _animationFrame; + break; + default: *animation = 399; _animationFrame = 0; @@ -486,7 +507,9 @@ bool AIScriptRunciter::UpdateAnimation(int *animation, int *frame) { bool AIScriptRunciter::ChangeAnimationMode(int mode) { switch (mode) { case kAnimationModeIdle: - if (_animationState >= 2 && _animationState <= 11) { + if (_animationState >= 2 + && _animationState <= 11 + ) { var_45CD88 = 1; } else { _animationState = 0; @@ -494,6 +517,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { var_45CD78 = 0; } break; + case kAnimationModeWalk: if (_animationState > 1) { _animationState = 1; @@ -504,6 +528,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { _animationNext = 526; } break; + case kAnimationModeTalk: if (_animationState != 0) { _animationState = 2; @@ -515,6 +540,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 12: if (_animationState != 0) { _animationState = 2; @@ -526,6 +552,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 13: if (_animationState != 0) { _animationState = 2; @@ -537,6 +564,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 14: if (_animationState != 0) { _animationState = 2; @@ -548,6 +576,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 15: if (_animationState != 0) { _animationState = 2; @@ -559,6 +588,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 16: if (_animationState != 0) { _animationState = 2; @@ -570,6 +600,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 17: if (_animationState != 0) { _animationState = 2; @@ -581,6 +612,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 18: if (_animationState != 0) { _animationState = 2; @@ -592,6 +624,7 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 19: if (_animationState != 0) { _animationState = 2; @@ -603,11 +636,13 @@ bool AIScriptRunciter::ChangeAnimationMode(int mode) { } var_45CD88 = 0; break; + case 23: _animationState = 12; _animationFrame = 0; break; - case 48: + + case kAnimationModeDie: _animationState = 14; _animationFrame = 0; break; diff --git a/engines/bladerunner/script/scene/ct04.cpp b/engines/bladerunner/script/scene/ct04.cpp index 613fd05829..a7740b0be2 100644 --- a/engines/bladerunner/script/scene/ct04.cpp +++ b/engines/bladerunner/script/scene/ct04.cpp @@ -38,8 +38,10 @@ void SceneScriptCT04::InitializeScene() { Scene_Loop_Set_Default(kCT03LoopMain); Setup_Scene_Information(-82.86f, -621.3f, 769.03f, 1020); } + Scene_Exit_Add_2D_Exit(0, 590, 0, 639, 479, 1); Scene_Exit_Add_2D_Exit(1, 194, 84, 320, 274, 0); + Ambient_Sounds_Add_Looping_Sound(54, 50, 1, 1); Ambient_Sounds_Add_Looping_Sound(56, 15, -100, 1); Ambient_Sounds_Add_Looping_Sound(105, 34, 100, 1); diff --git a/engines/bladerunner/script/scene/dr06.cpp b/engines/bladerunner/script/scene/dr06.cpp index 51a3841bf2..afbdf7cfb5 100644 --- a/engines/bladerunner/script/scene/dr06.cpp +++ b/engines/bladerunner/script/scene/dr06.cpp @@ -152,7 +152,7 @@ bool SceneScriptDR06::ClickedOn3DObject(const char *objectName, bool a2) { } if (!Game_Flag_Query(kFlagDR06MannequinHeadOpen)) { - Overlay_Play("DR06ovr2", 0, 1, 0, 0); + Overlay_Play("DR06ovr2", 0, true, false, 0); Game_Flag_Set(kFlagDR06MannequinHeadOpen); Sound_Play(160, 100, 0, 0, 50); if (!Actor_Clue_Query(kActorMcCoy, kClueEnvelope)) { @@ -202,6 +202,7 @@ bool SceneScriptDR06::ClickedOnExit(int exitId) { } return true; } + if (exitId == 1) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -707.57f, 136.6f, -1132.64f, 0, true, false, 0)) { Game_Flag_Set(kFlagDR06toUG16); diff --git a/engines/bladerunner/script/scene/hf05.cpp b/engines/bladerunner/script/scene/hf05.cpp index e5afa3c98b..88f91817fa 100644 --- a/engines/bladerunner/script/scene/hf05.cpp +++ b/engines/bladerunner/script/scene/hf05.cpp @@ -47,6 +47,7 @@ void SceneScriptHF05::InitializeScene() { Scene_Exit_Add_2D_Exit(2, 589, 0, 639, 479, 1); Ambient_Sounds_Add_Looping_Sound(103, 40, 1, 1); + if (Game_Flag_Query(369)) { Scene_Loop_Set_Default(kHF05LoopMainLoopHole); addAmbientSounds(); diff --git a/engines/bladerunner/script/scene/hf07.cpp b/engines/bladerunner/script/scene/hf07.cpp index 11593fb7d4..e35c4613bc 100644 --- a/engines/bladerunner/script/scene/hf07.cpp +++ b/engines/bladerunner/script/scene/hf07.cpp @@ -28,16 +28,19 @@ void SceneScriptHF07::InitializeScene() { if (Game_Flag_Query(kFlagUG06toHF07) ) { Setup_Scene_Information(-84.0f, 58.43f, -105.0f, 524); } else { - Setup_Scene_Information(298.0f, 58.43f, -71.0f, 700); + Setup_Scene_Information(298.0f, 58.43f, -71.0f, 700); } + Scene_Exit_Add_2D_Exit(0, 289, 136, 344, 305, 0); - Scene_Exit_Add_2D_Exit(1, 69, 264, 132, 303, 2); + Scene_Exit_Add_2D_Exit(1, 69, 264, 132, 303, 2); + Ambient_Sounds_Add_Looping_Sound(108, 100, 0, 1); - Ambient_Sounds_Add_Looping_Sound(112, 32, 0, 1); + Ambient_Sounds_Add_Looping_Sound(112, 32, 0, 1); Ambient_Sounds_Add_Sound(303, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(304, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 5, 40, 20, 33, -100, 100, -101, -101, 0, 0); - if (Game_Flag_Query(368) ) { + + if (Game_Flag_Query(368)) { Scene_Loop_Set_Default(2); } else { Scene_Loop_Set_Default(0); @@ -73,7 +76,8 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) { } else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) { Async_Actor_Walk_To_XYZ(kActorLucy, 235.0f, 58.43f, -100.0f, 0, false); } - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, 1, false, 0)) { + + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 318.0f, 71.43f, -102.0f, 0, true, false, 0)) { Game_Flag_Set(kFlagHF07toHF05); if (!Game_Flag_Query(662)) { Actor_Face_Heading(kActorMcCoy, 0, false); @@ -87,12 +91,14 @@ bool SceneScriptHF07::ClickedOnExit(int exitId) { } return true; } + if (exitId == 1) { if (Actor_Query_In_Set(kActorDektora, kSetHF07)) { Async_Actor_Walk_To_XYZ(kActorDektora, -73.0f, 58.43f, -7.0f, 0, false); } else if (Actor_Query_In_Set(kActorLucy, kSetHF07)) { Async_Actor_Walk_To_XYZ(kActorLucy, -73.0f, 58.43f, -7.0f, 0, false); } + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -84.0f, 58.43f, -105.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); @@ -117,7 +123,9 @@ void SceneScriptHF07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo void SceneScriptHF07::PlayerWalkedIn() { if (Game_Flag_Query(662)) { int actorId = getAffectionTowardsActor(); - if (Game_Flag_Query(662) && actorId != -1) { + if (Game_Flag_Query(662) + && actorId != -1 + ) { Actor_Put_In_Set(actorId, kSetHF07); if (Game_Flag_Query(kFlagUG06toHF07)) { Actor_Set_At_XYZ(actorId, -73.0f, 58.43f, -7.0f, 224); @@ -131,6 +139,7 @@ void SceneScriptHF07::PlayerWalkedIn() { Loop_Actor_Travel_Stairs(kActorMcCoy, 30, false, kAnimationModeIdle); Footstep_Sound_Override_Off(); } + Game_Flag_Reset(kFlagHF05toHF07); Game_Flag_Reset(kFlagUG06toHF07); } diff --git a/engines/bladerunner/script/scene/ma02.cpp b/engines/bladerunner/script/scene/ma02.cpp index 5fa1e669c5..74eaedbaad 100644 --- a/engines/bladerunner/script/scene/ma02.cpp +++ b/engines/bladerunner/script/scene/ma02.cpp @@ -31,37 +31,46 @@ enum kMA02Exits { void SceneScriptMA02::InitializeScene() { if (Game_Flag_Query(kFlagMA04ToMA02)) { - Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500); + Setup_Scene_Information(-172.0f, -144.13f, 6.27f, 500); } else { // From MA06 - Setup_Scene_Information(23.19f, -144.12f, 378.27f, 750); + Setup_Scene_Information( 23.19f, -144.12f, 378.27f, 750); if (Global_Variable_Query(kVariableChapter) == 4) { Actor_Set_Goal_Number(kActorRajif, 300); } Game_Flag_Reset(kFlagMA04WatchedTV); } Scene_Exit_Add_2D_Exit(kMA02ExitMA06, 538, 84, 639, 327, 1); - Scene_Exit_Add_2D_Exit(kMA02ExitMA04, 56, 98, 150, 260, 0); - if (Global_Variable_Query(kVariableChapter) >= 4 && Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653)) { + Scene_Exit_Add_2D_Exit(kMA02ExitMA04, 56, 98, 150, 260, 0); + + if (Global_Variable_Query(kVariableChapter) >= 4 + && Global_Variable_Query(kVariableChapter) == 5 + && Game_Flag_Query(653) + ) { Actor_Set_Goal_Number(kActorMaggie, 599); Actor_Change_Animation_Mode(kActorMaggie, 88); Actor_Put_In_Set(kActorMaggie, kSetMA02_MA04); Actor_Set_At_XYZ(kActorMaggie, -35.51f, -144.12f, 428.0f, 0); Actor_Retired_Here(kActorMaggie, 24, 24, 1, -1); } + Ambient_Sounds_Add_Looping_Sound(104, 12, 0, 1); Ambient_Sounds_Add_Looping_Sound(71, 25, 0, 1); - Ambient_Sounds_Add_Sound(72, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(73, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(74, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(375, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(376, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(87, 10, 60, 12, 12, -100, 100, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(68, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0); - Ambient_Sounds_Add_Sound(69, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 72, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 73, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 74, 5, 30, 5, 5, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(375, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound(376, 10, 60, 20, 20, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 87, 10, 60, 12, 12, -100, 100, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 68, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0); + Ambient_Sounds_Add_Sound( 69, 60, 180, 14, 14, 0, 0, -101, -101, 0, 0); if (isPhoneRinging()) { Ambient_Sounds_Add_Sound(403, 3, 3, 27, 27, -100, -100, -100, -100, 99, 0); } - if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) { + + if ( Global_Variable_Query(kVariableChapter) == 5 + && Game_Flag_Query(653) + && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette) + ) { Overlay_Play("MA02OVER", 0, 1, 0, 0); } } @@ -84,30 +93,34 @@ bool SceneScriptMA02::ClickedOn3DObject(const char *objectName, bool a2) { ESPER_Flag_To_Activate(); return true; } - if (Object_Query_Click("BAR-MAIN", objectName) && !Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, 1, false, 0)) { - Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true); - if (Global_Variable_Query(kVariableChapter) < 4) { - Actor_Set_Goal_Number(kActorMaggie, 3); - } else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) { - Overlay_Remove("MA02OVER"); - Item_Pickup_Spin_Effect(985, 480, 240); - Actor_Voice_Over(1150, kActorVoiceOver); - Actor_Voice_Over(1160, kActorVoiceOver); - Actor_Voice_Over(1170, kActorVoiceOver); - Actor_Voice_Over(1180, kActorVoiceOver); - Actor_Voice_Over(1190, kActorVoiceOver); - Actor_Voice_Over(1200, kActorVoiceOver); - Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1); - } else { - Actor_Says(kActorMcCoy, 8526, 0); + if (Object_Query_Click("BAR-MAIN", objectName)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -29.0f, -140.4f, 298.0f, 36, true, false, 0)) { + Actor_Face_Object(kActorMcCoy, "BAR-MAIN", true); + if (Global_Variable_Query(kVariableChapter) < 4) { + Actor_Set_Goal_Number(kActorMaggie, 3); + } else if (Global_Variable_Query(kVariableChapter) == 5 && Game_Flag_Query(653) && !Actor_Clue_Query(kActorMcCoy, kClueCrystalsCigarette)) { + Overlay_Remove("MA02OVER"); + Item_Pickup_Spin_Effect(985, 480, 240); + Actor_Voice_Over(1150, kActorVoiceOver); + Actor_Voice_Over(1160, kActorVoiceOver); + Actor_Voice_Over(1170, kActorVoiceOver); + Actor_Voice_Over(1180, kActorVoiceOver); + Actor_Voice_Over(1190, kActorVoiceOver); + Actor_Voice_Over(1200, kActorVoiceOver); + Actor_Clue_Acquire(kActorMcCoy, kClueCrystalsCigarette, true, -1); + } else { + Actor_Says(kActorMcCoy, 8526, 0); + } + return true; } - return true; } return false; } bool SceneScriptMA02::ClickedOnActor(int actorId) { - if (actorId == kActorMaggie && Actor_Query_Goal_Number(kActorMaggie) == 599) { + if (actorId == kActorMaggie + && Actor_Query_Goal_Number(kActorMaggie) == 599 + ) { if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorMaggie, 30, true, false)) { Actor_Face_Actor(kActorMcCoy, kActorMaggie, true); Actor_Voice_Over(1140, kActorVoiceOver); @@ -122,15 +135,16 @@ bool SceneScriptMA02::ClickedOnItem(int itemId, bool a2) { bool SceneScriptMA02::ClickedOnExit(int exitId) { if (exitId == kMA02ExitMA06) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, true, false, 0)) { Music_Stop(10); Game_Flag_Set(kFlagMA02toMA06); Set_Enter(kSetMA06, kSceneMA06); } return true; } + if (exitId == kMA02ExitMA04) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -168.0f, -144.13f, 10.27f, 0, true, false, 0)) { Game_Flag_Set(kFlagMA02ToMA04); Set_Enter(kSetMA04, kSceneMA04); } @@ -153,33 +167,37 @@ void SceneScriptMA02::PlayerWalkedIn() { if (Game_Flag_Query(kFlagMA06ToMA02)) { selectNextTvNews(); } + if (Game_Flag_Query(kFlagMA04ToMA02)) { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, 1, false, 0); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -148.12f, -144.13f, 34.27f, 0, true, false, 0); } + if ( Global_Variable_Query(kVariableChapter) == 4 - && !Game_Flag_Query(655) + && !Game_Flag_Query(kFlagMA02RajifTalk) ) { - Game_Flag_Set(623); - Game_Flag_Set(655); - dialogueWithRajif(); - Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, 0, false, 0); + Game_Flag_Set(kFlagUG07Empty); + Game_Flag_Set(kFlagMA02RajifTalk); + talkWithRajif(); + Loop_Actor_Walk_To_XYZ(kActorMcCoy, 23.19f, -144.12f, 378.27f, 0, false, false, 0); Game_Flag_Set(kFlagMA02toMA06); Set_Enter(kSetMA06, kSceneMA06); // return true; return; } + if ( Global_Variable_Query(kVariableChapter) == 5 && !Game_Flag_Query(654) ) { if (Game_Flag_Query(653)) { - Actor_Says(kActorMcCoy, 2390, 0); + Actor_Says(kActorMcCoy, 2390, kAnimationModeIdle); Music_Play(2, 25, 0, 3, -1, 0, 0); } else { - Actor_Says(kActorMcCoy, 2385, 3); + Actor_Says(kActorMcCoy, 2385, kAnimationModeTalk); } Game_Flag_Set(654); Autosave_Game(3); } + if ( Global_Variable_Query(kVariableChapter) < 4 && !Game_Flag_Query(kFlagMA04ToMA02) && Actor_Query_Goal_Number(kActorMaggie) != 2 @@ -199,6 +217,7 @@ void SceneScriptMA02::PlayerWalkedIn() { } } } + Game_Flag_Reset(kFlagMA04ToMA02); Game_Flag_Reset(kFlagMA06ToMA02); //return false; @@ -213,7 +232,7 @@ void SceneScriptMA02::PlayerWalkedOut() { void SceneScriptMA02::DialogueQueueFlushed(int a1) { } -void SceneScriptMA02::dialogueWithRajif() { +void SceneScriptMA02::talkWithRajif() { Actor_Says(kActorMcCoy, 2365, 13); Actor_Says(kActorRajif, 0, 13); Actor_Says(kActorMcCoy, 2370, 13); @@ -227,7 +246,7 @@ void SceneScriptMA02::dialogueWithRajif() { } bool SceneScriptMA02::isPhoneRinging() { - return Global_Variable_Query(kVariableChapter) == 5 + return Global_Variable_Query(kVariableChapter) == 5 && !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallClovis) && !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallCrystal) && !Actor_Clue_Query(kActorMcCoy, kCluePhoneCallDektora1) diff --git a/engines/bladerunner/script/scene/ma06.cpp b/engines/bladerunner/script/scene/ma06.cpp index b7a6da38e2..8d7bc4e504 100644 --- a/engines/bladerunner/script/scene/ma06.cpp +++ b/engines/bladerunner/script/scene/ma06.cpp @@ -33,10 +33,13 @@ enum kMA06Loops { 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(kSceneLoopModeLoseControl, kMA06LoopDoorOpen, false); Scene_Loop_Set_Default(kMA06LoopMain); + Sound_Play(209, 100, 50, 50, 100); } @@ -81,10 +84,12 @@ void SceneScriptMA06::PlayerWalkedIn() { Actor_Face_Object(kActorMcCoy, "panel", true); Delay(500); activateElevator(); + if (isElevatorOnDifferentFloor()) { Sound_Play(114, 25, 0, 0, 50); Delay(4000); } + Game_Flag_Reset(kFlagMA01toMA06); Game_Flag_Reset(kFlagMA02toMA06); Game_Flag_Reset(kFlagMA07toMA06); @@ -96,6 +101,7 @@ void SceneScriptMA06::PlayerWalkedIn() { } else { Set_Enter(kSetMA07, kSceneMA07); } + Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kMA06LoopDoorClose, true); Sound_Play(208, 100, 50, 50, 50); //return true; @@ -130,11 +136,14 @@ void SceneScriptMA06::activateElevator() { if (Game_Flag_Query(kFlagMA06toMA07)) { break; } - Actor_Says(kActorAnsweringMachine, 80, 3); + + Actor_Says(kActorAnsweringMachine, 80, kAnimationModeTalk); Player_Gains_Control(); int floor = Elevator_Activate(kElevatorMA); Player_Loses_Control(); + Scene_Loop_Start_Special(kSceneLoopModeOnce, kMA06LoopMain, true); + if (floor > 1) { Game_Flag_Set(kFlagMA06toMA07); } else if (floor == 1) { @@ -147,12 +156,14 @@ void SceneScriptMA06::activateElevator() { } } else { // floor == 0 Actor_Says(kActorMcCoy, 2940, 18); - if (Global_Variable_Query(kVariableChapter) == 4 && Game_Flag_Query(655)) { + if (Global_Variable_Query(kVariableChapter) == 4 + && Game_Flag_Query(kFlagMA02RajifTalk) + ) { Sound_Play(412, 100, 0, 0, 50); Delay(500); - Actor_Says(kActorAnsweringMachine, 610, 3); + Actor_Says(kActorAnsweringMachine, 610, kAnimationModeTalk); Delay(500); - Actor_Says(kActorMcCoy, 8527, 3); + Actor_Says(kActorMcCoy, 8527, kAnimationModeTalk); } else { Game_Flag_Set(kFlagMA06ToMA02); Actor_Says(kActorAnsweringMachine, 90, 3); diff --git a/engines/bladerunner/script/scene/ma07.cpp b/engines/bladerunner/script/scene/ma07.cpp index 65d2332d6c..27b489733b 100644 --- a/engines/bladerunner/script/scene/ma07.cpp +++ b/engines/bladerunner/script/scene/ma07.cpp @@ -131,12 +131,15 @@ void SceneScriptMA07::PlayerWalkedIn() { Loop_Actor_Walk_To_XYZ(kActorMcCoy, -268.0f, -162.8f, 188.0f, 0, false, false, 0); Game_Flag_Reset(kFlagPS14toMA07); } + if (Actor_Query_Goal_Number(kActorRachael) == 300) { Actor_Set_Goal_Number(kActorRachael, 305); } + if (Game_Flag_Query(kFlagMA06toMA07)) { Game_Flag_Reset(kFlagMA06toMA07); } + if (!Game_Flag_Query(648) && Game_Flag_Query(671) && Global_Variable_Query(kVariableChapter) == 4 @@ -144,6 +147,7 @@ void SceneScriptMA07::PlayerWalkedIn() { Scene_Exits_Disable(); Actor_Set_Goal_Number(kActorGaff, 300); } + if (Game_Flag_Query(666)) { Actor_Voice_Over(1360, kActorVoiceOver); Actor_Voice_Over(1370, kActorVoiceOver); diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp index f3b757ecf6..15c4d5e45a 100644 --- a/engines/bladerunner/script/scene/rc01.cpp +++ b/engines/bladerunner/script/scene/rc01.cpp @@ -405,7 +405,7 @@ void SceneScriptRC01::walkToCenter() { bool SceneScriptRC01::ClickedOnExit(int exitId) { if (exitId == kRC01ExitRC02) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -174.77f, 5.55f, 25.95f, 12, true, false, 0)) { - if (Game_Flag_Query(705)) { + if (Game_Flag_Query(kFlagRC02RunciterTalkWithGun)) { Actor_Says(kActorMcCoy, 8522, 14); } else { switch (Global_Variable_Query(kVariableChapter)) { diff --git a/engines/bladerunner/script/scene/rc02.cpp b/engines/bladerunner/script/scene/rc02.cpp index a84fe99bcf..93bedec479 100644 --- a/engines/bladerunner/script/scene/rc02.cpp +++ b/engines/bladerunner/script/scene/rc02.cpp @@ -160,7 +160,7 @@ void SceneScriptRC02::dialogueWithRunciter() { Actor_Says(kActorRunciter, 130, 19); Actor_Says(kActorMcCoy, 4605, 13); Actor_Says(kActorRunciter, 140, 16); - Game_Flag_Set(kFlagRC02TalkedToRunciter); + Game_Flag_Set(kFlagRC02RunciterTalk1); break; case 10: // LUCY @@ -223,18 +223,12 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) { } else { Actor_Says(kActorMcCoy, 8720, 17); } - } else if (Game_Flag_Query(705) - || Game_Flag_Query(706) + return true; + } + + if (!Game_Flag_Query(kFlagRC02RunciterTalkWithGun) + && !Game_Flag_Query(kFlagRC02RunciterTalk2) ) { - Actor_Says(kActorMcCoy, 4805, 11); - Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); - if (Game_Flag_Query(706)) { - Actor_Says(kActorRunciter, 720, 15); - } else { - Actor_Says(kActorRunciter, 730, 14); - } - Actor_Face_Heading(kActorRunciter, 1007, false); - } else { Actor_Says(kActorMcCoy, 4690, 11); Actor_Says(kActorMcCoy, 4695, 13); Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); @@ -251,14 +245,25 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) { Actor_Says(kActorRunciter, 430, 16); Actor_Face_Heading(kActorRunciter, 1007, false); } - Game_Flag_Set(706); + Game_Flag_Set(kFlagRC02RunciterTalk2); + return true; } + + Actor_Says(kActorMcCoy, 4805, 11); + Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); + if (Game_Flag_Query(kFlagRC02RunciterTalk2)) { + Actor_Says(kActorRunciter, 720, 15); + } else { + Actor_Says(kActorRunciter, 730, 14); + } + Actor_Face_Heading(kActorRunciter, 1007, false); return true; } AI_Movement_Track_Pause(kActorRunciter); Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorRunciter, 48, true, false); Actor_Face_Actor(kActorMcCoy, kActorRunciter, true); + if (!Game_Flag_Query(kFlagRC02RunciterInterview)) { Actor_Says(kActorMcCoy, 4560, 13); Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); @@ -274,7 +279,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) { return true; } - if (Game_Flag_Query(kFlagRC02TalkedToRunciter)) { + if (Game_Flag_Query(kFlagRC02RunciterTalk1)) { if (Player_Query_Agenda() == kPlayerAgendaPolite) { Game_Flag_Reset(kFlagNotUsed0); dialogueWithRunciter(); @@ -302,7 +307,7 @@ bool SceneScriptRC02::ClickedOnActor(int actorId) { Actor_Says(kActorRunciter, 240, 16); Actor_Says(kActorMcCoy, 4640, 17); } - Game_Flag_Reset(kFlagRC02TalkedToRunciter); + Game_Flag_Reset(kFlagRC02RunciterTalk1); AI_Movement_Track_Unpause(kActorRunciter); return true; } @@ -346,6 +351,7 @@ bool SceneScriptRC02::ClickedOnExit(int exitId) { } return true; } + if (exitId == kRC02ExitRC51) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -20.2f, -1238.73f, 108152.73f, 0, true, false, 0)) { Async_Actor_Walk_To_XYZ(kActorMcCoy, -8.87f, -1238.89f, 108076.27f, 0, false); @@ -382,12 +388,12 @@ void SceneScriptRC02::PlayerWalkedIn() { Game_Flag_Set(kFlagRC02Entered); } if (Actor_Query_Which_Set_In(kActorRunciter) == kSetRC02_RC51 - && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterAtShop + && Actor_Query_Goal_Number(kActorRunciter) < kGoalRunciterRC02Wait ) { - Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterWalkAroundRC02); + Actor_Set_Goal_Number(kActorRunciter, kGoalRunciterRC02WalkAround); } - if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterAtShop - && !Game_Flag_Query(704) + if ( Actor_Query_Goal_Number(kActorRunciter) == kGoalRunciterRC02Wait + && !Game_Flag_Query(kFlagRC02EnteredChapter4) ) { Actor_Face_Actor(kActorRunciter, kActorMcCoy, true); Actor_Says(kActorRunciter, 370, 12); @@ -399,7 +405,7 @@ void SceneScriptRC02::PlayerWalkedIn() { Actor_Face_Heading(kActorRunciter, 1007, false); Actor_Says(kActorRunciter, 400, 13); Actor_Says(kActorRunciter, 410, 12); - Game_Flag_Set(704); + Game_Flag_Set(kFlagRC02EnteredChapter4); } } else { Player_Loses_Control(); diff --git a/engines/bladerunner/script/scene/rc04.cpp b/engines/bladerunner/script/scene/rc04.cpp index 122ff652c9..9287d7a098 100644 --- a/engines/bladerunner/script/scene/rc04.cpp +++ b/engines/bladerunner/script/scene/rc04.cpp @@ -457,7 +457,7 @@ void SceneScriptRC04::PlayerWalkedIn() { ) { Actor_Says(kActorDispatcher, 40, 3); Actor_Says(kActorBulletBob, 890, 37); - Actor_Set_Goal_Number(kActorBulletBob, 2); + Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShootMcCoy); } Game_Flag_Set(kFlagRC04Entered); diff --git a/engines/bladerunner/script/scene/ug02.cpp b/engines/bladerunner/script/scene/ug02.cpp index 12be0c2547..74b421fb44 100644 --- a/engines/bladerunner/script/scene/ug02.cpp +++ b/engines/bladerunner/script/scene/ug02.cpp @@ -30,8 +30,10 @@ void SceneScriptUG02::InitializeScene() { } else { Setup_Scene_Information( -95.0f, 74.78f, -503.0f, 556); } + Scene_Exit_Add_2D_Exit(0, 529, 130, 607, 277, 0); Scene_Exit_Add_2D_Exit(1, 305, 36, 335, 192, 0); + Ambient_Sounds_Add_Looping_Sound(332, 43, 0, 1); Ambient_Sounds_Add_Looping_Sound(333, 43, 0, 1); Ambient_Sounds_Add_Sound(303, 5, 50, 17, 37, 100, 100, -101, -101, 0, 0); diff --git a/engines/bladerunner/script/scene/ug05.cpp b/engines/bladerunner/script/scene/ug05.cpp index e02a9bd18b..cbce58e4a2 100644 --- a/engines/bladerunner/script/scene/ug05.cpp +++ b/engines/bladerunner/script/scene/ug05.cpp @@ -123,13 +123,15 @@ bool SceneScriptUG05::ClickedOnItem(int itemId, bool a2) { bool SceneScriptUG05::ClickedOnExit(int exitId) { if (exitId == 0) { - if (Game_Flag_Query(663) && !Game_Flag_Query(368)) { + if ( Game_Flag_Query(663) + && !Game_Flag_Query(368) + ) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, -356.35f, 132.77f, -1092.36f, 0, false, false, 0); Game_Flag_Set(kFlagUG06toHF07); Set_Enter(kSetHF07, kSceneHF07); } else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -156.72f, 3.03f, -1118.17f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 760, false); - Loop_Actor_Travel_Stairs(kActorMcCoy, 3, 1, kAnimationModeIdle); + Loop_Actor_Travel_Stairs(kActorMcCoy, 3, true, kAnimationModeIdle); Game_Flag_Set(kFlagUG06toHF07); Set_Enter(kSetHF07, kSceneHF07); } diff --git a/engines/bladerunner/script/scene/ug06.cpp b/engines/bladerunner/script/scene/ug06.cpp index 99ebc54f3c..9ac5bcab88 100644 --- a/engines/bladerunner/script/scene/ug06.cpp +++ b/engines/bladerunner/script/scene/ug06.cpp @@ -140,7 +140,7 @@ void SceneScriptUG06::PlayerWalkedIn() { } if ( Global_Variable_Query(kVariableChapter) == 4 - && !Game_Flag_Query(524) + && !Game_Flag_Query(kFlagUG06Chapter4Started) ) { Player_Loses_Control(); Actor_Voice_Over(2620, kActorVoiceOver); @@ -153,7 +153,7 @@ void SceneScriptUG06::PlayerWalkedIn() { Actor_Voice_Over(2690, kActorVoiceOver); Actor_Voice_Over(2700, kActorVoiceOver); Player_Gains_Control(); - Game_Flag_Set(524); + Game_Flag_Set(kFlagUG06Chapter4Started); Autosave_Game(2); } //return false; diff --git a/engines/bladerunner/script/scene/ug07.cpp b/engines/bladerunner/script/scene/ug07.cpp index 1b0994331d..9892d16067 100644 --- a/engines/bladerunner/script/scene/ug07.cpp +++ b/engines/bladerunner/script/scene/ug07.cpp @@ -35,7 +35,7 @@ void SceneScriptUG07::InitializeScene() { Game_Flag_Reset(kFlagUG10toUG07); } - if (Game_Flag_Query(623)) { + if (Game_Flag_Query(kFlagUG07Empty)) { Scene_Exit_Add_2D_Exit(0, 0, 192, 51, 334, 0); Scene_Exit_Add_2D_Exit(1, 226, 224, 314, 396, 1); } @@ -176,7 +176,7 @@ void SceneScriptUG07::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo void SceneScriptUG07::PlayerWalkedIn() { if ( Global_Variable_Query(kVariableChapter) == 4 - && !Game_Flag_Query(623) + && !Game_Flag_Query(kFlagUG07Empty) ) { Actor_Set_Goal_Number(kActorOfficerLeary, 307); Actor_Set_Goal_Number(kActorOfficerGrayford, 307); diff --git a/engines/bladerunner/script/scene/ug08.cpp b/engines/bladerunner/script/scene/ug08.cpp index d3621af467..65e790b7c6 100644 --- a/engines/bladerunner/script/scene/ug08.cpp +++ b/engines/bladerunner/script/scene/ug08.cpp @@ -24,6 +24,13 @@ namespace BladeRunner { +enum kUG08Loops { + kUG08LoopElevatorComingUp = 0, + kUG08LoopMainLoopElevator = 1, + kUG08LoopElevatorGoingDown = 3, + kUG08LoopMainNoElevator = 4 +}; + void SceneScriptUG08::InitializeScene() { if (Game_Flag_Query(kFlagUG13toUG08)) { Setup_Scene_Information(-124.0f, 93.18f, 71.0f, 745); @@ -50,18 +57,18 @@ void SceneScriptUG08::InitializeScene() { Ambient_Sounds_Add_Sound(304, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0); Ambient_Sounds_Add_Sound(305, 5, 50, 17, 37, -100, 100, -101, -101, 0, 0); - if (!Game_Flag_Query(610)) { - Game_Flag_Set(431); - Game_Flag_Set(610); + if (!Game_Flag_Query(kFlagUG08Entered)) { + Game_Flag_Set(kFlagUB08ElevatorUp); + Game_Flag_Set(kFlagUG08Entered); } if (Game_Flag_Query(kFlagUG13toUG08)) { - Scene_Loop_Start_Special(kSceneLoopModeLoseControl, 0, false); - Scene_Loop_Set_Default(1); - } else if (Game_Flag_Query(431)) { - Scene_Loop_Set_Default(1); + Scene_Loop_Start_Special(kSceneLoopModeLoseControl, kUG08LoopElevatorComingUp, false); + Scene_Loop_Set_Default(kUG08LoopMainLoopElevator); + } else if (Game_Flag_Query(kFlagUB08ElevatorUp)) { + Scene_Loop_Set_Default(kUG08LoopMainLoopElevator); } else { - Scene_Loop_Set_Default(4); + Scene_Loop_Set_Default(kUG08LoopMainNoElevator); } } @@ -108,9 +115,9 @@ bool SceneScriptUG08::ClickedOnExit(int exitId) { Player_Loses_Control(); Actor_Set_Invisible(kActorMcCoy, true); Game_Flag_Set(kFlagUG08toUG13); - Game_Flag_Reset(431); + Game_Flag_Reset(kFlagUB08ElevatorUp); Set_Enter(kSetUG13, kSceneUG13); - Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false); + Scene_Loop_Start_Special(kSceneLoopModeChangeSet, kUG08LoopElevatorGoingDown, false); return false; } } diff --git a/engines/bladerunner/script/scene/ug09.cpp b/engines/bladerunner/script/scene/ug09.cpp index e6613c1d9b..3348272ea3 100644 --- a/engines/bladerunner/script/scene/ug09.cpp +++ b/engines/bladerunner/script/scene/ug09.cpp @@ -136,7 +136,7 @@ void SceneScriptUG09::ActorChangedGoal(int actorId, int newGoal, int oldGoal, bo void SceneScriptUG09::PlayerWalkedIn() { if (Global_Variable_Query(kVariableChapter) == 4 - && Game_Flag_Query(623) + && Game_Flag_Query(kFlagUG07Empty) ) { Game_Flag_Set(630); } diff --git a/engines/bladerunner/script/scene/ug13.cpp b/engines/bladerunner/script/scene/ug13.cpp index d6dfbfa0fc..da212b74a7 100644 --- a/engines/bladerunner/script/scene/ug13.cpp +++ b/engines/bladerunner/script/scene/ug13.cpp @@ -34,7 +34,7 @@ void SceneScriptUG13::InitializeScene() { Actor_Set_Invisible(kActorMcCoy, false); } - if (!Game_Flag_Query(431)) { + if (!Game_Flag_Query(kFlagUB08ElevatorUp)) { Scene_Exit_Add_2D_Exit(0, 394, 205, 464, 281, 0); } Scene_Exit_Add_2D_Exit(1, 560, 90, 639, 368, 1); @@ -62,7 +62,7 @@ void SceneScriptUG13::InitializeScene() { if (Game_Flag_Query(kFlagUG08toUG13)) { Scene_Loop_Start_Special(0, 0, 0); Scene_Loop_Set_Default(1); - } else if (Game_Flag_Query(431)) { + } else if (Game_Flag_Query(kFlagUB08ElevatorUp)) { Scene_Loop_Set_Default(4); } else { Scene_Loop_Set_Default(1); @@ -98,16 +98,16 @@ bool SceneScriptUG13::ClickedOn3DObject(const char *objectName, bool a2) { if (Object_Query_Click("BOLLARD", objectName)) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 7.0f, 44.0f, -695.0f, 0, true, false, 0)) { Actor_Face_Object(kActorMcCoy, "BOLLARD", true); - if (Game_Flag_Query(431)) { + if (Game_Flag_Query(kFlagUB08ElevatorUp)) { Scene_Loop_Set_Default(1); Scene_Loop_Start_Special(kSceneLoopModeOnce, 0, false); - Game_Flag_Reset(431); + Game_Flag_Reset(kFlagUB08ElevatorUp); Game_Flag_Set(436); return true; } else { Scene_Loop_Set_Default(4); Scene_Loop_Start_Special(kSceneLoopModeOnce, 3, false); - Game_Flag_Set(431); + Game_Flag_Set(kFlagUB08ElevatorUp); Scene_Exit_Remove(0); return true; } @@ -122,15 +122,24 @@ bool SceneScriptUG13::ClickedOnActor(int actorId) { ) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -248.0f, 44.0f, -390.0f, 12, true, false, 0)) { Actor_Face_Actor(kActorMcCoy, kActorTransient, true); - if (Actor_Query_Goal_Number(kActorTransient) != 6 && Actor_Query_Goal_Number(kActorTransient) != 599) { + if (Actor_Query_Goal_Number(kActorTransient) != 6 + && Actor_Query_Goal_Number(kActorTransient) != 599 + ) { if (!Game_Flag_Query(554)) { - sub_40223C(); + Actor_Face_Actor(kActorMcCoy, kActorTransient, true); + Game_Flag_Set(554); + Actor_Says(kActorMcCoy, 5560, 13); + Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18); + Actor_Says(kActorTransient, 70, 31); + Actor_Says(kActorTransient, 80, 32); + Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk); + Actor_Says(kActorTransient, 90, 32); } else if (!Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1) || !Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) { - sub_402AD4(); + dialogueWithHomeless1(); } else { Actor_Set_Goal_Number(kActorTransient, 391); if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) { - sub_402AD4(); + dialogueWithHomeless1(); } else { Actor_Face_Actor(kActorMcCoy, kActorTransient, true); Actor_Says(kActorMcCoy, 5600, 14); @@ -170,14 +179,13 @@ bool SceneScriptUG13::ClickedOnItem(int itemId, bool a2) { } bool SceneScriptUG13::ClickedOnExit(int exitId) { - if (exitId == 0) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -32.0f, 54.63f, -883.0f, 0, true, false, 0)) { Player_Loses_Control(); Game_Flag_Set(kFlagUG13toUG08); - Game_Flag_Set(431); + Game_Flag_Set(kFlagUB08ElevatorUp); Set_Enter(kSetUG08, kSceneUG08); - Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, 0); + Scene_Loop_Start_Special(kSceneLoopModeChangeSet, 3, false); } return true; } @@ -194,7 +202,7 @@ bool SceneScriptUG13::ClickedOnExit(int exitId) { if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -267.0f, 44.0f, -795.0f, 0, true, false, 0)) { Actor_Face_Heading(kActorMcCoy, 830, false); Footstep_Sound_Override_On(3); - Loop_Actor_Travel_Stairs(kActorMcCoy, 11, 1, kAnimationModeIdle); + Loop_Actor_Travel_Stairs(kActorMcCoy, 11, true, kAnimationModeIdle); Footstep_Sound_Override_Off(); if (!sub_402AD0()) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, -477.0f, 141.9f, -870.0f, 0, false, false, 0); @@ -270,13 +278,13 @@ void SceneScriptUG13::PlayerWalkedIn() { if ( Actor_Query_Goal_Number(kActorTransient) >= 390 && !Game_Flag_Query(kFlagCT04HomelessKilledByMcCoy) ) { - if (Game_Flag_Query(553)) { + if (!Game_Flag_Query(kFlagUG13Entered)) { + Game_Flag_Set(kFlagUG13Entered); + Actor_Says(kActorTransient, 50, kAnimationModeTalk); + } else { if (Random_Query(1, 3) == 1) { Actor_Set_Goal_Number(kActorTransient, 395); } - } else { - Game_Flag_Set(553); - Actor_Says(kActorTransient, 50, kAnimationModeTalk); } } //return false; @@ -299,17 +307,6 @@ void SceneScriptUG13::PlayerWalkedOut() { void SceneScriptUG13::DialogueQueueFlushed(int a1) { } -void SceneScriptUG13::sub_40223C() { - Actor_Face_Actor(kActorMcCoy, kActorTransient, true); - Game_Flag_Set(554); - Actor_Says(kActorMcCoy, 5560, 13); - Actor_Says_With_Pause(kActorMcCoy, 5565, 3.0f, 18); - Actor_Says(kActorTransient, 70, 31); - Actor_Says(kActorTransient, 80, 32); - Actor_Says(kActorMcCoy, 5570, kAnimationModeTalk); - Actor_Says(kActorTransient, 90, 32); -} - void SceneScriptUG13::sub_4023D8() { Actor_Face_Actor(kActorMcCoy, kActorTransient, true); Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManInterview1, false, kActorTransient); @@ -343,68 +340,57 @@ void SceneScriptUG13::sub_4025E0() { Actor_Says(kActorTransient, 260, 32); } -void SceneScriptUG13::sub_402960() { - Actor_Says(kActorMcCoy, 5670, 9); - Actor_Says(kActorTransient, 340, 31); - Actor_Says(kActorMcCoy, 5690, 19); - Actor_Says(kActorTransient, 350, 32); - Actor_Says(kActorMcCoy, 5695, 14); - Actor_Says(kActorTransient, 360, 33); - Actor_Voice_Over(2710, kActorVoiceOver); - Actor_Voice_Over(2730, kActorVoiceOver); - Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient); -} - int SceneScriptUG13::sub_402AD0() { return 0; } -void SceneScriptUG13::sub_402AD4() { +void SceneScriptUG13::dialogueWithHomeless1() { Dialogue_Menu_Clear_List(); - DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1); + DM_Add_To_List_Never_Repeat_Once_Selected(1320, 6, 3, 1); // OTHERS if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview1)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5); + DM_Add_To_List_Never_Repeat_Once_Selected(1330, 5, 8, 5); // FAT MAN } - DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6); + DM_Add_To_List_Never_Repeat_Once_Selected(1340, 2, 4, 6); // SEWERS if (Actor_Clue_Query(kActorMcCoy, kClueFlaskOfAbsinthe)) { - DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7); + DM_Add_To_List_Never_Repeat_Once_Selected(1350, 1, 3, 7); // GIVE FLASK } - Dialogue_Menu_Add_DONE_To_List(1360); + Dialogue_Menu_Add_DONE_To_List(1360); // DONE Dialogue_Menu_Appear(320, 240); int answer = Dialogue_Menu_Query_Input(); Dialogue_Menu_Disappear(); switch (answer) { - case 1360: - return; + case 1320: // OTHERS + sub_4023D8(); + break; - case 1350: - Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy); - Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23); - Item_Pickup_Spin_Effect(945, 193, 325); - Actor_Says(kActorTransient, 290, 33); - Actor_Says(kActorMcCoy, 5660, 13); - Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe); - sub_402E24(); + case 1330: // FAT MAN + Actor_Says(kActorMcCoy, 5585, 16); + sub_4025E0(); break; - case 1340: + case 1340: // SEWERS Actor_Modify_Friendliness_To_Other(kActorTransient, kActorMcCoy, -10); Actor_Says(kActorMcCoy, 5590, 15); Actor_Says(kActorTransient, 270, 31); Actor_Says(kActorMcCoy, 5655, 16); Actor_Says(kActorTransient, 280, 32); break; - case 1330: - Actor_Says(kActorMcCoy, 5585, 16); - sub_4025E0(); - break; - case 1320: - sub_4023D8(); + case 1350: // GIVE FLASK + Actor_Clue_Acquire(kActorTransient, kClueFlaskOfAbsinthe, false, kActorMcCoy); + Actor_Says_With_Pause(kActorMcCoy, 5595, 1.0f, 23); + Item_Pickup_Spin_Effect(945, 193, 325); + Actor_Says(kActorTransient, 290, 33); + Actor_Says(kActorMcCoy, 5660, 13); + Actor_Clue_Lose(kActorMcCoy, kClueFlaskOfAbsinthe); + dialogueWithHomeless2(); break; + case 1360: // DONE + return; + default: Actor_Face_Actor(kActorMcCoy, kActorTransient, true); Actor_Says(kActorMcCoy, 5600, 14); @@ -416,18 +402,18 @@ void SceneScriptUG13::sub_402AD4() { } } -void SceneScriptUG13::sub_402E24() { +void SceneScriptUG13::dialogueWithHomeless2() { Actor_Set_Friendliness_To_Other(kActorTransient, kActorMcCoy, 40); Dialogue_Menu_Clear_List(); - DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8); - DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1); - DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1); + DM_Add_To_List_Never_Repeat_Once_Selected(1370, 1, 1, 8); // DIRECTIONS + DM_Add_To_List_Never_Repeat_Once_Selected(1380, 1, 8, 1); // FAT MAN + DM_Add_To_List_Never_Repeat_Once_Selected(1390, 8, 1, 1); // REPLICANTS Dialogue_Menu_Appear(320, 240); int answer = Dialogue_Menu_Query_Input(); Dialogue_Menu_Disappear(); - if (answer == 1370) { + if (answer == 1370) { // DIRECTIONS Actor_Says(kActorMcCoy, 5665, 16); Actor_Says(kActorTransient, 300, 32); Actor_Says(kActorMcCoy, 5680, 19); @@ -436,14 +422,22 @@ void SceneScriptUG13::sub_402E24() { Actor_Start_Speech_Sample(kActorTransient, 110); Actor_Set_Goal_Number(kActorTransient, 395); Actor_Says(kActorMcCoy, 5685, 18); - } else if (answer == 1380) { + } else if (answer == 1380) { // FAT MAN if (Actor_Clue_Query(kActorMcCoy, kClueHomelessManInterview2)) { - sub_402960(); + Actor_Says(kActorMcCoy, 5670, 9); + Actor_Says(kActorTransient, 340, 31); + Actor_Says(kActorMcCoy, 5690, 19); + Actor_Says(kActorTransient, 350, 32); + Actor_Says(kActorMcCoy, 5695, 14); + Actor_Says(kActorTransient, 360, 33); + Actor_Voice_Over(2710, kActorVoiceOver); + Actor_Voice_Over(2730, kActorVoiceOver); + Actor_Clue_Acquire(kActorMcCoy, kClueHomelessManKid, false, kActorTransient); } else { Actor_Says(kActorMcCoy, 5700, 15); sub_4025E0(); } - } else if (answer == 1390) { + } else if (answer == 1390) { // REPLICANTS Actor_Says(kActorMcCoy, 5675, 9); Actor_Says(kActorTransient, 370, 32); Actor_Says(kActorMcCoy, 5705, 10); diff --git a/engines/bladerunner/script/scene/ug14.cpp b/engines/bladerunner/script/scene/ug14.cpp index 914cf10045..d850df0eb5 100644 --- a/engines/bladerunner/script/scene/ug14.cpp +++ b/engines/bladerunner/script/scene/ug14.cpp @@ -83,7 +83,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) { bool v1 = y > 57.0f; - if (!exitId == 0) { + if (exitId == 0) { if (v1) { if (Loop_Actor_Walk_To_XYZ(kActorMcCoy, 141.47f, 128.92f, -150.16f, 0, true, false, 0)) { return false; @@ -133,6 +133,7 @@ bool SceneScriptUG14::ClickedOnExit(int exitId) { Loop_Actor_Travel_Stairs(kActorMcCoy, 13, true, kAnimationModeIdle); Footstep_Sound_Override_Off(); } + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 157.0f, 128.92f, -108.01f, 0, true, false, 0)) { Footstep_Sound_Override_On(3); Loop_Actor_Travel_Stairs(kActorMcCoy, 6, true, kAnimationModeIdle); diff --git a/engines/bladerunner/script/scene/ug15.cpp b/engines/bladerunner/script/scene/ug15.cpp index fdd32449ff..ef1ca2f291 100644 --- a/engines/bladerunner/script/scene/ug15.cpp +++ b/engines/bladerunner/script/scene/ug15.cpp @@ -109,7 +109,7 @@ bool SceneScriptUG15::ClickedOnItem(int itemId, bool a2) { bool SceneScriptUG15::ClickedOnExit(int exitId) { if (exitId == 0) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -25.0f, 26.31f, -434.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); Game_Flag_Set(kFlagUG15toUG17); @@ -119,7 +119,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) { } if (exitId == 1) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -17.0f, 26.31f, -346.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); Game_Flag_Set(kFlagUG15toUG16a); @@ -133,8 +133,8 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) { if (v1 >= 300 && v1 <= 303 ) { - Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, 1, false, 0); - } else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, 1, false, 0)) { + Loop_Actor_Walk_To_XYZ(kActorMcCoy, -137.61f, 48.07f, 147.12f, 0, true, false, 0); + } else if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, 18.0f, 52.28f, 46.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); Game_Flag_Set(kFlagUG15toUG16b); @@ -144,7 +144,7 @@ bool SceneScriptUG15::ClickedOnExit(int exitId) { } if (exitId == 3) { - if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, 1, false, 0)) { + if (!Loop_Actor_Walk_To_XYZ(kActorMcCoy, -238.0f, 52.46f, 222.0f, 0, true, false, 0)) { Ambient_Sounds_Remove_All_Non_Looping_Sounds(true); Ambient_Sounds_Remove_All_Looping_Sounds(1); Game_Flag_Set(kFlagUG15toUG13); diff --git a/engines/bladerunner/script/scene_script.h b/engines/bladerunner/script/scene_script.h index f866935823..8d45053c13 100644 --- a/engines/bladerunner/script/scene_script.h +++ b/engines/bladerunner/script/scene_script.h @@ -261,7 +261,7 @@ DECLARE_SCRIPT(MA01) END_SCRIPT DECLARE_SCRIPT(MA02) - void dialogueWithRajif(); + void talkWithRajif(); bool isPhoneRinging(); void selectNextTvNews(); END_SCRIPT @@ -483,13 +483,11 @@ DECLARE_SCRIPT(UG12) END_SCRIPT DECLARE_SCRIPT(UG13) - void sub_40223C(); void sub_4023D8(); void sub_4025E0(); - void sub_402960(); int sub_402AD0(); - void sub_402AD4(); - void sub_402E24(); + void dialogueWithHomeless1(); + void dialogueWithHomeless2(); END_SCRIPT DECLARE_SCRIPT(UG14) |