diff options
author | Thanasis Antoniou | 2019-04-09 16:31:39 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-04-09 16:32:51 +0300 |
commit | a9404284c3778c087aa1f10428db632880296a99 (patch) | |
tree | c278becceb546ac06d0aae139f40d5a058673308 /engines | |
parent | d8f43160df030abd06f3f941d7edd02b6f4c9fba (diff) | |
download | scummvm-rg350-a9404284c3778c087aa1f10428db632880296a99.tar.gz scummvm-rg350-a9404284c3778c087aa1f10428db632880296a99.tar.bz2 scummvm-rg350-a9404284c3778c087aa1f10428db632880296a99.zip |
BLADERUNNER: Fix Officer Leary crowd interrogation
He will now resume interrogation after McCoy interrupts him
Also used named constants for timers
Diffstat (limited to 'engines')
29 files changed, 290 insertions, 207 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp index da4e3fe448..fa8a5d9643 100644 --- a/engines/bladerunner/actor.cpp +++ b/engines/bladerunner/actor.cpp @@ -102,11 +102,11 @@ void Actor::setup(int actorId) { _movementTrackWalkingToWaypointId = -1; _movementTrackDelayOnNextWaypoint = -1; - for (int i = 0; i != 7; ++i) { + for (int i = 0; i != kActorTimers; ++i) { _timersLeft[i] = 0; _timersLast[i] = _vm->_time->current(); } - _timersLeft[4] = _timer4RemainDefault; // This was in original code. We need to init this timer in order to kick off periodic updates for acquireCluesByRelations + _timersLeft[kActorTimerClueExchange] = _timer4RemainDefault; // This was in original code. We need to init this timer in order to kick off periodic updates for acquireCluesByRelations _honesty = 50; _intelligence = 50; @@ -209,18 +209,18 @@ void Actor::increaseFPS() { } void Actor::timerStart(int timerId, int interval) { - assert(timerId >= 0 && timerId < 7); + assert(timerId >= 0 && timerId < kActorTimers); _timersLeft[timerId] = interval; _timersLast[timerId] = _vm->_time->current(); } void Actor::timerReset(int timerId) { - assert(timerId >= 0 && timerId < 7); + assert(timerId >= 0 && timerId < kActorTimers); _timersLeft[timerId] = 0; } int Actor::timerLeft(int timerId) { - assert(timerId >= 0 && timerId < 7); + assert(timerId >= 0 && timerId < kActorTimers); return _timersLeft[timerId]; } @@ -242,9 +242,9 @@ void Actor::timerUpdate(int timerId) { if (_timersLeft[timerId] <= 0) { switch (timerId) { - case 0: - case 1: - case 2: + case kActorTimerAIScriptCustomTask0: + case kActorTimerAIScriptCustomTask1: + case kActorTimerAIScriptCustomTask2: if (!_vm->_aiScripts->isInsideScript() && !_vm->_sceneScript->isInsideScript()) { _vm->_aiScripts->timerExpired(_id, timerId); _timersLeft[timerId] = 0; @@ -252,23 +252,23 @@ void Actor::timerUpdate(int timerId) { _timersLeft[timerId] = 1; } break; - case 3: - _timersLeft[3] = 0; + case kActorTimerMovementTrack: + _timersLeft[kActorTimerMovementTrack] = 0; if (_movementTrack->isPaused()) { - _timersLeft[3] = 1; + _timersLeft[kActorTimerMovementTrack] = 1; } else { movementTrackNext(false); } break; - case 4: + case kActorTimerClueExchange: // Exchange clues between actors acquireCluesByRelations(); - _timersLeft[4] = _timer4RemainDefault; + _timersLeft[kActorTimerClueExchange] = _timer4RemainDefault; break; - case 5: + case kActorTimerAnimationFrame: // Actor animation frame timer break; - case 6: + case kActorTimerRunningStaminaFPS: if (isRunning()) { if (_fps > 15) { int newFps = _fps - 2; @@ -278,7 +278,7 @@ void Actor::timerUpdate(int timerId) { setFPS(newFps); } } - _timersLeft[6] = 200; + _timersLeft[kActorTimerRunningStaminaFPS] = 200; break; } } @@ -323,7 +323,7 @@ void Actor::movementTrackNext(bool omitAiScript) { if (delay > 1) { changeAnimationMode(kAnimationModeIdle, false); } - timerStart(3, delay); + timerStart(kActorTimerMovementTrack, delay); } //return true; } else { @@ -368,7 +368,7 @@ void Actor::movementTrackWaypointReached() { changeAnimationMode(kAnimationModeIdle, false); delay = _movementTrackDelayOnNextWaypoint; // todo: analyze if movement is changed in some aiscript->ChangeAnimationMode? } - timerStart(3, delay); + timerStart(kActorTimerMovementTrack, delay); } } _movementTrackWalkingToWaypointId = -1; @@ -584,8 +584,8 @@ bool Actor::tick(bool forceDraw, Common::Rect *screenRect) { int timeLeft = 0; bool needsUpdate = false; if (_fps > 0) { - timerUpdate(5); - timeLeft = timerLeft(5); + timerUpdate(kActorTimerAnimationFrame); + timeLeft = timerLeft(kActorTimerAnimationFrame); needsUpdate = timeLeft <= 0; } else if (_fps == 0) { needsUpdate = false; @@ -703,7 +703,7 @@ bool Actor::tick(bool forceDraw, Common::Rect *screenRect) { if (nextFrameTime <= 0) { nextFrameTime = 1; } - timerStart(5, nextFrameTime); + timerStart(kActorTimerAnimationFrame, nextFrameTime); } if (_targetFacing >= 0) { if (_targetFacing == _facing) { @@ -1364,12 +1364,12 @@ void Actor::save(SaveFileWriteStream &f) { f.writeInt(0); f.writeFloat(_scale); - for (int i = 0; i < 7; ++i) { + for (int i = 0; i < kActorTimers; ++i) { f.writeInt(_timersLeft[i]); } uint32 now = _vm->_time->getPauseStart(); - for (int i = 0; i < 7; ++i) { + for (int i = 0; i < kActorTimers; ++i) { f.writeInt(now - _timersLast[i]); } @@ -1443,17 +1443,17 @@ void Actor::load(SaveFileReadStream &f) { f.skip(4); _scale = f.readFloat(); - for (int i = 0; i < 7; ++i) { + for (int i = 0; i < kActorTimers; ++i) { _timersLeft[i] = f.readInt(); } - // Bugfix: Special initialization case for timer 4 when it's value is restored as 0 + // Bugfix: Special initialization case for timer 4 (kActorTimerClueExchange) when its value is restored as 0 // This should be harmless, but will remedy any broken save-games where the timer 4 was saved as 0. - if (_timersLeft[4] == 0) { - _timersLeft[4] = _timer4RemainDefault; + if (_timersLeft[kActorTimerClueExchange] == 0) { + _timersLeft[kActorTimerClueExchange] = _timer4RemainDefault; } uint32 now = _vm->_time->getPauseStart(); - for (int i = 0; i < 7; ++i) { + for (int i = 0; i < kActorTimers; ++i) { _timersLast[i] = now - f.readInt(); } diff --git a/engines/bladerunner/actor.h b/engines/bladerunner/actor.h index 806130365c..1177e655a2 100644 --- a/engines/bladerunner/actor.h +++ b/engines/bladerunner/actor.h @@ -44,6 +44,8 @@ class View; class Actor { BladeRunnerEngine *_vm; + static const int kActorTimers = 7; + public: BoundingBox _bbox; Common::Rect _screenRectangle; @@ -108,8 +110,8 @@ private: int _retiredWidth; int _retiredHeight; - int _timersLeft[7]; - int _timersLast[7]; + int _timersLeft[kActorTimers]; + int _timersLast[kActorTimers]; float _scale; diff --git a/engines/bladerunner/bladerunner.cpp b/engines/bladerunner/bladerunner.cpp index b35c5bbee1..64b42e0204 100644 --- a/engines/bladerunner/bladerunner.cpp +++ b/engines/bladerunner/bladerunner.cpp @@ -481,7 +481,7 @@ bool BladeRunnerEngine::startup(bool hasSavegames) { _playerActor = _actors[_gameInfo->getPlayerId()]; _playerActor->setFPS(15); - _playerActor->timerStart(6, 200); + _playerActor->timerStart(kActorTimerRunningStaminaFPS, 200); _policeMaze = new PoliceMaze(this); diff --git a/engines/bladerunner/game_constants.h b/engines/bladerunner/game_constants.h index df934e61a2..65d1cc5356 100644 --- a/engines/bladerunner/game_constants.h +++ b/engines/bladerunner/game_constants.h @@ -2193,7 +2193,11 @@ enum GoalZuben { enum GoalOfficerLeary { kGoalOfficerLearyDefault = 0, kGoalOfficerLearyRC01WalkToCrowd = 1, - kGoalOfficerLearyRC01CrowdInterrogation = 2 + kGoalOfficerLearyRC01CrowdInterrogation = 2, +#if BLADERUNNER_ORIGINAL_BUGS +#else + kGoalOfficerLearyRC01ResumeWalkToCrowd = 4 +#endif // BLADERUNNER_ORIGINAL_BUGS }; enum GoalHanoi { @@ -2310,6 +2314,16 @@ enum GoalMaggie { kGoalMaggieDead = 599 }; +enum ActorTimers { + kActorTimerAIScriptCustomTask0 = 0, + kActorTimerAIScriptCustomTask1 = 1, + kActorTimerAIScriptCustomTask2 = 2, + kActorTimerMovementTrack = 3, + kActorTimerClueExchange = 4, + kActorTimerAnimationFrame = 5, + kActorTimerRunningStaminaFPS = 6, +}; + // Certain tracks are available at Frank Klepacki's website/portfolio for Blade Runner // Those are noted with their "official" name in a side-comment here, as they appear at the website // A few may not match the incremental number given in-game (eg kMusicGothic3 is "Gothic Club 2") diff --git a/engines/bladerunner/script/ai/bullet_bob.cpp b/engines/bladerunner/script/ai/bullet_bob.cpp index 47e3852c29..f49462492a 100644 --- a/engines/bladerunner/script/ai/bullet_bob.cpp +++ b/engines/bladerunner/script/ai/bullet_bob.cpp @@ -58,15 +58,15 @@ bool AIScriptBulletBob::Update() { && !Game_Flag_Query(kFlagRC04McCoyCombatMode) && Global_Variable_Query(kVariableChapter) < 4 ) { - AI_Countdown_Timer_Reset(kActorBulletBob, 2); - AI_Countdown_Timer_Start(kActorBulletBob, 2, 10); + AI_Countdown_Timer_Reset(kActorBulletBob, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorBulletBob, kActorTimerAIScriptCustomTask2, 10); Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobWarningMcCoy); Actor_Modify_Friendliness_To_Other(kActorBulletBob, kActorMcCoy, -15); Game_Flag_Set(kFlagRC04McCoyCombatMode); } else if ( Actor_Query_Goal_Number(kActorBulletBob) == kGoalBulletBobWarningMcCoy && !Player_Query_Combat_Mode() ) { - AI_Countdown_Timer_Reset(kActorBulletBob, 2); + AI_Countdown_Timer_Reset(kActorBulletBob, kActorTimerAIScriptCustomTask2); Game_Flag_Reset(kFlagRC04McCoyCombatMode); Game_Flag_Set(kFlagRC04McCoyWarned); Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobDefault); @@ -96,11 +96,11 @@ bool AIScriptBulletBob::Update() { } void AIScriptBulletBob::TimerExpired(int timer) { - if (timer == 2 + if (timer == kActorTimerAIScriptCustomTask2 && Actor_Query_Goal_Number(kActorBulletBob) == kGoalBulletBobWarningMcCoy ) { Actor_Set_Goal_Number(kActorBulletBob, kGoalBulletBobShootMcCoy); - AI_Countdown_Timer_Reset(kActorBulletBob, 2); + AI_Countdown_Timer_Reset(kActorBulletBob, kActorTimerAIScriptCustomTask2); return; //true; } return; //false; diff --git a/engines/bladerunner/script/ai/dektora.cpp b/engines/bladerunner/script/ai/dektora.cpp index b4e059ab6e..1e6422873c 100644 --- a/engines/bladerunner/script/ai/dektora.cpp +++ b/engines/bladerunner/script/ai/dektora.cpp @@ -110,20 +110,20 @@ bool AIScriptDektora::Update() { } void AIScriptDektora::TimerExpired(int timer) { - if (timer == 0) { + if (timer == kActorTimerAIScriptCustomTask0) { if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraNR08Dance) { if (Player_Query_Current_Scene() == kSceneNR08) { - AI_Countdown_Timer_Reset(kActorDektora, 0); - AI_Countdown_Timer_Start(kActorDektora, 0, 10); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorDektora, kActorTimerAIScriptCustomTask0, 10); } else { Actor_Set_Goal_Number(kActorDektora, kGoalDektoraNR08Leave); - AI_Countdown_Timer_Reset(kActorDektora, 0); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask0); } return; //true; } if (Actor_Query_Goal_Number(kActorDektora) == kGoalDektoraNR11Burning) { - AI_Countdown_Timer_Reset(kActorDektora, 0); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorDektora, kGoalDektoraNR11BurningGoToMcCoy); return; //true; } @@ -417,8 +417,8 @@ bool AIScriptDektora::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Flush(kActorDektora); Actor_Put_In_Set(kActorDektora, kSetNR05_NR08); Actor_Set_At_XYZ(kActorDektora, -923.93f, 127.85f, 413.46f, 30); - AI_Countdown_Timer_Reset(kActorDektora, 0); - AI_Countdown_Timer_Start(kActorDektora, 0, 45); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorDektora, kActorTimerAIScriptCustomTask0, 45); break; case kGoalDektoraNR08Leave: @@ -458,9 +458,9 @@ bool AIScriptDektora::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalDektoraNR11Hiding: AI_Movement_Track_Flush(kActorDektora); - AI_Countdown_Timer_Reset(kActorDektora, 0); - AI_Countdown_Timer_Reset(kActorDektora, 1); - AI_Countdown_Timer_Reset(kActorDektora, 2); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Reset(kActorDektora, kActorTimerAIScriptCustomTask2); Actor_Put_In_Set(kActorDektora, kSetNR11); Actor_Set_At_XYZ(kActorDektora, -184.0f, 0.33f, -268.0f, 256); break; diff --git a/engines/bladerunner/script/ai/early_q.cpp b/engines/bladerunner/script/ai/early_q.cpp index 4d67360f7b..a0f4983eb7 100644 --- a/engines/bladerunner/script/ai/early_q.cpp +++ b/engines/bladerunner/script/ai/early_q.cpp @@ -78,11 +78,11 @@ bool AIScriptEarlyQ::Update() { } void AIScriptEarlyQ::TimerExpired(int timer) { - if (timer == 0 + if (timer == kActorTimerAIScriptCustomTask0 && Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR05WillLeave ) { if (Player_Query_Current_Scene() == kSceneNR05) { - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Leave); } else { Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR05Wait); @@ -90,19 +90,19 @@ void AIScriptEarlyQ::TimerExpired(int timer) { return; //true; } - if (timer == 0 + if (timer == kActorTimerAIScriptCustomTask0 && Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR04GoToMcCoy ) { Player_Loses_Control(); - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04HandDrink); return; //true; } - if (timer == 1 + if (timer == kActorTimerAIScriptCustomTask1 && Actor_Query_Goal_Number(kActorEarlyQ) == kGoalEarlyQNR04WaitForPulledGun ) { - AI_Countdown_Timer_Reset(kActorEarlyQ, 1); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask1); Player_Loses_Control(); Actor_Change_Animation_Mode(kActorEarlyQ, 29); Delay(2500); @@ -207,7 +207,7 @@ void AIScriptEarlyQ::OtherAgentEnteredCombatMode(int otherActorId, int combatMod Game_Flag_Set(kFlagNotUsed565); } Game_Flag_Set(kFlagNR04McCoyAimedAtEarlyQ); - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04McCoyPulledGun); return; // true; } @@ -219,7 +219,7 @@ void AIScriptEarlyQ::OtherAgentEnteredCombatMode(int otherActorId, int combatMod if (Game_Flag_Query(kFlagNotUsed565)) { Game_Flag_Reset(kFlagNotUsed565); } - AI_Countdown_Timer_Reset(kActorEarlyQ, 1); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask1); Actor_Set_Goal_Number(kActorEarlyQ, kGoalEarlyQNR04Talk3); return; //true; } @@ -335,8 +335,8 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalEarlyQNR04GoToMcCoy: Loop_Actor_Walk_To_Actor(kActorEarlyQ, 0, 36, 0, 0); - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); - AI_Countdown_Timer_Start(kActorEarlyQ, 0, 4); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorEarlyQ, kActorTimerAIScriptCustomTask0, 4); break; case kGoalEarlyQNR04McCoyPulledGun: @@ -378,8 +378,8 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case kGoalEarlyQNR04WaitForPulledGun: - AI_Countdown_Timer_Reset(kActorEarlyQ, 1); - AI_Countdown_Timer_Start(kActorEarlyQ, 1, 5); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Start(kActorEarlyQ, kActorTimerAIScriptCustomTask1, 5); break; case kGoalEarlyQNR04TakeDisk: @@ -432,8 +432,8 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { break; case kGoalEarlyQNR05WillLeave: - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); - AI_Countdown_Timer_Start(kActorEarlyQ, 0, 20); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorEarlyQ, kActorTimerAIScriptCustomTask0, 20); break; case kGoalEarlyQNR05Leave: @@ -460,7 +460,7 @@ bool AIScriptEarlyQ::GoalChanged(int currentGoalNumber, int newGoalNumber) { case 229: AI_Movement_Track_Flush(kActorEarlyQ); - AI_Countdown_Timer_Reset(kActorEarlyQ, 0); + AI_Countdown_Timer_Reset(kActorEarlyQ, kActorTimerAIScriptCustomTask0); break; case kGoalEarlyQNR04Wait: diff --git a/engines/bladerunner/script/ai/gaff.cpp b/engines/bladerunner/script/ai/gaff.cpp index bfcd163a0d..ac9d944228 100644 --- a/engines/bladerunner/script/ai/gaff.cpp +++ b/engines/bladerunner/script/ai/gaff.cpp @@ -57,8 +57,8 @@ bool AIScriptGaff::Update() { } void AIScriptGaff::TimerExpired(int timer) { - if (timer == 0) { - AI_Countdown_Timer_Reset(kActorGaff, 0); + if (timer == kActorTimerAIScriptCustomTask0) { + AI_Countdown_Timer_Reset(kActorGaff, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07TalkToMcCoy); } //return false; @@ -171,7 +171,7 @@ void AIScriptGaff::OtherAgentEnteredCombatMode(int otherActorId, int combatMode) && Actor_Query_In_Set(kActorMcCoy, kSetMA07) && Actor_Query_Goal_Number(kActorGaff) == kGoalGaffMA07Wait ) { - AI_Countdown_Timer_Reset(kActorGaff, 0); + AI_Countdown_Timer_Reset(kActorGaff, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorGaff, kGoalGaffMA07ShootMcCoy); } // return false; diff --git a/engines/bladerunner/script/ai/general_doll.cpp b/engines/bladerunner/script/ai/general_doll.cpp index ee531d0d44..eb82c54ba2 100644 --- a/engines/bladerunner/script/ai/general_doll.cpp +++ b/engines/bladerunner/script/ai/general_doll.cpp @@ -61,10 +61,10 @@ bool AIScriptGeneralDoll::Update() { } void AIScriptGeneralDoll::TimerExpired(int timer) { - if (timer == 2) { + if (timer == kActorTimerAIScriptCustomTask2) { Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie); Actor_Change_Animation_Mode(kActorGeneralDoll, kAnimationModeDie); - AI_Countdown_Timer_Reset(kActorGeneralDoll, 2); + AI_Countdown_Timer_Reset(kActorGeneralDoll, kActorTimerAIScriptCustomTask2); return; //true; } return; //false; diff --git a/engines/bladerunner/script/ai/generic_walker_a.cpp b/engines/bladerunner/script/ai/generic_walker_a.cpp index c7afdbc767..b764f77d83 100644 --- a/engines/bladerunner/script/ai/generic_walker_a.cpp +++ b/engines/bladerunner/script/ai/generic_walker_a.cpp @@ -66,8 +66,8 @@ bool AIScriptGenericWalkerA::Update() { } void AIScriptGenericWalkerA::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorGenwalkerA, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorGenwalkerA, kActorTimerAIScriptCustomTask2); Game_Flag_Reset(kFlagGenericWalkerWaiting); return;// true; } @@ -79,8 +79,8 @@ void AIScriptGenericWalkerA::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorGenwalkerA, 0); if (!Game_Flag_Query(kFlagGenericWalkerWaiting)) { Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerA, 2); - AI_Countdown_Timer_Start(kActorGenwalkerA, 2, Random_Query(6, 10)); + AI_Countdown_Timer_Reset(kActorGenwalkerA, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerA, kActorTimerAIScriptCustomTask2, Random_Query(6, 10)); } // return true; } @@ -358,8 +358,8 @@ bool AIScriptGenericWalkerA::prepareWalker() { Global_Variable_Set(kVariableGenericWalkerAModel, model); Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerA, 2); - AI_Countdown_Timer_Start(kActorGenwalkerA, 2, Random_Query(4, 12)); + AI_Countdown_Timer_Reset(kActorGenwalkerA, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerA, kActorTimerAIScriptCustomTask2, Random_Query(4, 12)); Actor_Set_Goal_Number(kActorGenwalkerA, 1); return true; } diff --git a/engines/bladerunner/script/ai/generic_walker_b.cpp b/engines/bladerunner/script/ai/generic_walker_b.cpp index acada61e42..b4c37e8048 100644 --- a/engines/bladerunner/script/ai/generic_walker_b.cpp +++ b/engines/bladerunner/script/ai/generic_walker_b.cpp @@ -62,8 +62,8 @@ bool AIScriptGenericWalkerB::Update() { } void AIScriptGenericWalkerB::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorGenwalkerB, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorGenwalkerB, kActorTimerAIScriptCustomTask2); Game_Flag_Reset(kFlagGenericWalkerWaiting); return;// true; } @@ -75,8 +75,8 @@ void AIScriptGenericWalkerB::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorGenwalkerB, 0); if (!Game_Flag_Query(kFlagGenericWalkerWaiting)) { Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerB, 2); - AI_Countdown_Timer_Start(kActorGenwalkerB, 2, Random_Query(6, 10)); + AI_Countdown_Timer_Reset(kActorGenwalkerB, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerB, kActorTimerAIScriptCustomTask2, Random_Query(6, 10)); } // return true; } @@ -334,8 +334,8 @@ bool AIScriptGenericWalkerB::prepareWalker() { Global_Variable_Set(kVariableGenericWalkerBModel, model); Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerB, 2); - AI_Countdown_Timer_Start(kActorGenwalkerB, 2, Random_Query(4, 12)); + AI_Countdown_Timer_Reset(kActorGenwalkerB, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerB, kActorTimerAIScriptCustomTask2, Random_Query(4, 12)); Actor_Set_Goal_Number(kActorGenwalkerB, 1); return true; } diff --git a/engines/bladerunner/script/ai/generic_walker_c.cpp b/engines/bladerunner/script/ai/generic_walker_c.cpp index a70ebc09ff..80b1191c46 100644 --- a/engines/bladerunner/script/ai/generic_walker_c.cpp +++ b/engines/bladerunner/script/ai/generic_walker_c.cpp @@ -63,8 +63,8 @@ bool AIScriptGenericWalkerC::Update() { } void AIScriptGenericWalkerC::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorGenwalkerC, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorGenwalkerC, kActorTimerAIScriptCustomTask2); Game_Flag_Reset(kFlagGenericWalkerWaiting); return;// true; } @@ -76,8 +76,8 @@ void AIScriptGenericWalkerC::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorGenwalkerC, 0); if (!Game_Flag_Query(kFlagGenericWalkerWaiting)) { Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerC, 2); - AI_Countdown_Timer_Start(kActorGenwalkerC, 2, Random_Query(6, 10)); + AI_Countdown_Timer_Reset(kActorGenwalkerC, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerC, kActorTimerAIScriptCustomTask2, Random_Query(6, 10)); } // return true; } @@ -337,8 +337,8 @@ bool AIScriptGenericWalkerC::prepareWalker() { Global_Variable_Set(kVariableGenericWalkerCModel, model); Game_Flag_Set(kFlagGenericWalkerWaiting); - AI_Countdown_Timer_Reset(kActorGenwalkerC, 2); - AI_Countdown_Timer_Start(kActorGenwalkerC, 2, Random_Query(4, 12)); + AI_Countdown_Timer_Reset(kActorGenwalkerC, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorGenwalkerC, kActorTimerAIScriptCustomTask2, Random_Query(4, 12)); Actor_Set_Goal_Number(kActorGenwalkerC, 1); return true; } diff --git a/engines/bladerunner/script/ai/gordo.cpp b/engines/bladerunner/script/ai/gordo.cpp index b5407198c7..974629b4d0 100644 --- a/engines/bladerunner/script/ai/gordo.cpp +++ b/engines/bladerunner/script/ai/gordo.cpp @@ -101,8 +101,8 @@ bool AIScriptGordo::Update() { } void AIScriptGordo::TimerExpired(int timer) { - if (timer == 0) { - AI_Countdown_Timer_Reset(kActorGordo, 0); + if (timer == kActorTimerAIScriptCustomTask0) { + AI_Countdown_Timer_Reset(kActorGordo, kActorTimerAIScriptCustomTask0); if (Player_Query_Combat_Mode()) { Actor_Set_Goal_Number(kActorGordo, kGoalGordoNR01RunAway); } else { @@ -629,7 +629,7 @@ bool AIScriptGordo::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalGordoNR01GiveUp: ADQ_Add(kActorGordo, 170, 18); - AI_Countdown_Timer_Start(kActorGordo, 0, 10); + AI_Countdown_Timer_Start(kActorGordo, kActorTimerAIScriptCustomTask0, 10); break; case kGoalGordoNR01TalkToMcCoy: @@ -689,7 +689,7 @@ bool AIScriptGordo::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalGordoNR01Die: Music_Stop(2); - AI_Countdown_Timer_Reset(kActorGordo, 0); + AI_Countdown_Timer_Reset(kActorGordo, kActorTimerAIScriptCustomTask0); ADQ_Flush(); AI_Movement_Track_Flush(kActorGordo); if (Game_Flag_Query(kFlagGordoIsReplicant)) { diff --git a/engines/bladerunner/script/ai/hanoi.cpp b/engines/bladerunner/script/ai/hanoi.cpp index 6472c5a801..735f442661 100644 --- a/engines/bladerunner/script/ai/hanoi.cpp +++ b/engines/bladerunner/script/ai/hanoi.cpp @@ -47,7 +47,7 @@ void AIScriptHanoi::Initialize() { bool AIScriptHanoi::Update() { if (Actor_Query_Goal_Number(kActorHolloway) == kGoalHollowayGoToNR07) { - AI_Countdown_Timer_Reset(kActorHanoi, 0); + AI_Countdown_Timer_Reset(kActorHanoi, kActorTimerAIScriptCustomTask0); } if (Global_Variable_Query(kVariableChapter) == 3 @@ -99,7 +99,7 @@ bool AIScriptHanoi::Update() { } void AIScriptHanoi::TimerExpired(int timer) { - if (timer == 0) { + if (timer == kActorTimerAIScriptCustomTask0) { if (Actor_Query_Goal_Number(kActorHanoi) == kGoalHanoiNR03StartGuarding) { Actor_Set_Goal_Number(kActorHanoi, kGoalHanoiNR03GoToDefaultPosition); return; //true; @@ -219,11 +219,11 @@ bool AIScriptHanoi::GoalChanged(int currentGoalNumber, int newGoalNumber) { switch (newGoalNumber) { case kGoalHanoiDefault: - AI_Countdown_Timer_Start(kActorHanoi, 0, 45); + AI_Countdown_Timer_Start(kActorHanoi, kActorTimerAIScriptCustomTask0, 45); break; case kGoalHanoiResetTimer: - AI_Countdown_Timer_Reset(kActorHanoi, 0); + AI_Countdown_Timer_Reset(kActorHanoi, kActorTimerAIScriptCustomTask0); break; case kGoalHanoiNR07TalkToMcCoy: @@ -283,13 +283,13 @@ bool AIScriptHanoi::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalHanoiNR03StartGuarding: Actor_Put_In_Set(kActorHanoi, kSetNR03); Actor_Set_At_Waypoint(kActorHanoi, 362, 300); - AI_Countdown_Timer_Reset(kActorHanoi, 0); - AI_Countdown_Timer_Start(kActorHanoi, 0, 6); + AI_Countdown_Timer_Reset(kActorHanoi, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorHanoi, kActorTimerAIScriptCustomTask0, 6); break; case kGoalHanoiThrowOutMcCoy: Game_Flag_Set(kFlagNR03McCoyThrownOut); - AI_Countdown_Timer_Reset(kActorHanoi, 0); + AI_Countdown_Timer_Reset(kActorHanoi, kActorTimerAIScriptCustomTask0); Player_Loses_Control(); Player_Set_Combat_Mode(false); // this is missing in ITA & SPA versions of the game Actor_Force_Stop_Walking(kActorMcCoy); diff --git a/engines/bladerunner/script/ai/holloway.cpp b/engines/bladerunner/script/ai/holloway.cpp index 8efb3c933f..c7eb29ea70 100644 --- a/engines/bladerunner/script/ai/holloway.cpp +++ b/engines/bladerunner/script/ai/holloway.cpp @@ -48,8 +48,8 @@ bool AIScriptHolloway::Update() { } void AIScriptHolloway::TimerExpired(int timer) { - if (timer == 0) { - AI_Countdown_Timer_Reset(kActorHolloway, 0); + if (timer == kActorTimerAIScriptCustomTask0) { + AI_Countdown_Timer_Reset(kActorHolloway, kActorTimerAIScriptCustomTask0); if (Global_Variable_Query(kVariableHollowayArrest) == 1) { Player_Gains_Control(); } @@ -90,7 +90,7 @@ void AIScriptHolloway::OtherAgentEnteredCombatMode(int otherActorId, int combatM if (otherActorId == kActorMcCoy && Actor_Query_Goal_Number(kActorHolloway) == kGoalHollowayApproachMcCoy ) { - AI_Countdown_Timer_Reset(kActorHolloway, 0); + AI_Countdown_Timer_Reset(kActorHolloway, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorHolloway, kGoalHollowayKnockOutMcCoy); } } @@ -146,8 +146,8 @@ bool AIScriptHolloway::GoalChanged(int currentGoalNumber, int newGoalNumber) { } else { Actor_Says(kActorHolloway, 30, kAnimationModeTalk); Actor_Face_Actor(kActorMcCoy, kActorHolloway, true); - AI_Countdown_Timer_Reset(kActorHolloway, 0); - AI_Countdown_Timer_Start(kActorHolloway, 0, 1); + AI_Countdown_Timer_Reset(kActorHolloway, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorHolloway, kActorTimerAIScriptCustomTask0, 1); } break; diff --git a/engines/bladerunner/script/ai/klein.cpp b/engines/bladerunner/script/ai/klein.cpp index fc2893d17d..8091feee79 100644 --- a/engines/bladerunner/script/ai/klein.cpp +++ b/engines/bladerunner/script/ai/klein.cpp @@ -72,8 +72,8 @@ bool AIScriptKlein::Update() { && Actor_Query_Friendliness_To_Other(kActorKlein, kActorMcCoy) < 35 && !Game_Flag_Query(kFlagPS07KleinInsulted) ) { - AI_Countdown_Timer_Reset(kActorKlein, 2); - AI_Countdown_Timer_Start(kActorKlein, 2, 5); + AI_Countdown_Timer_Reset(kActorKlein, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorKlein, kActorTimerAIScriptCustomTask2, 5); Game_Flag_Set(kFlagPS07KleinInsulted); return true; } @@ -91,7 +91,7 @@ bool AIScriptKlein::Update() { } void AIScriptKlein::TimerExpired(int timer) { - if (timer == 2) { + if (timer == kActorTimerAIScriptCustomTask2) { if ( Game_Flag_Query(kFlagPS07KleinInsulted) && !Game_Flag_Query(kFlagPS07KleinInsultedTalk) && Actor_Query_Is_In_Current_Set(kActorKlein) diff --git a/engines/bladerunner/script/ai/leon.cpp b/engines/bladerunner/script/ai/leon.cpp index 0e1a1156ce..94f3093ee5 100644 --- a/engines/bladerunner/script/ai/leon.cpp +++ b/engines/bladerunner/script/ai/leon.cpp @@ -73,18 +73,18 @@ bool AIScriptLeon::Update() { } void AIScriptLeon::TimerExpired(int timer) { - if (timer == 0 + if (timer == kActorTimerAIScriptCustomTask0 && Actor_Query_Goal_Number(kActorLeon) == kGoalLeonLeave ) { - AI_Countdown_Timer_Reset(kActorLeon, 0); + AI_Countdown_Timer_Reset(kActorLeon, kActorTimerAIScriptCustomTask0); Actor_Set_Goal_Number(kActorLeon, kGoalLeonGone); } } void AIScriptLeon::CompletedMovementTrack() { if (Actor_Query_Goal_Number(kActorLeon) == kGoalLeonLeave) { - AI_Countdown_Timer_Reset(kActorLeon, 0); - AI_Countdown_Timer_Start(kActorLeon, 0, 8); + AI_Countdown_Timer_Reset(kActorLeon, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorLeon, kActorTimerAIScriptCustomTask0, 8); //return true; } //return false; @@ -111,7 +111,7 @@ void AIScriptLeon::OtherAgentEnteredThisScene(int otherActorId) { if (otherActorId == kActorMcCoy && Actor_Query_Goal_Number(kActorLeon) == kGoalLeonLeave ) { - AI_Countdown_Timer_Reset(kActorLeon, 0); + AI_Countdown_Timer_Reset(kActorLeon, kActorTimerAIScriptCustomTask0); AI_Movement_Track_Flush(kActorLeon); AI_Movement_Track_Append(kActorLeon, 353, 0); AI_Movement_Track_Repeat(kActorLeon); diff --git a/engines/bladerunner/script/ai/lucy.cpp b/engines/bladerunner/script/ai/lucy.cpp index ab007e1468..52b2b80934 100644 --- a/engines/bladerunner/script/ai/lucy.cpp +++ b/engines/bladerunner/script/ai/lucy.cpp @@ -111,14 +111,14 @@ bool AIScriptLucy::Update() { } void AIScriptLucy::TimerExpired(int timer) { - AI_Countdown_Timer_Reset(kActorLucy, 0); - if (timer == 0 - && Actor_Query_Goal_Number(kActorLucy) == kGoalLucyGoToHF03 - ) { - if (Player_Query_Current_Scene() == kSceneHF03) { - AI_Countdown_Timer_Start(kActorLucy, 0, 20); - } else { - Actor_Set_Goal_Number(kActorLucy, kGoalLucyMoveAround); + if (timer == kActorTimerAIScriptCustomTask0) { // rephrased this to be more expandable (if required) + AI_Countdown_Timer_Reset(kActorLucy, kActorTimerAIScriptCustomTask0); + if(Actor_Query_Goal_Number(kActorLucy) == kGoalLucyGoToHF03) { + if (Player_Query_Current_Scene() == kSceneHF03) { + AI_Countdown_Timer_Start(kActorLucy, kActorTimerAIScriptCustomTask0, 20); + } else { + Actor_Set_Goal_Number(kActorLucy, kGoalLucyMoveAround); + } } } } @@ -132,8 +132,8 @@ void AIScriptLucy::CompletedMovementTrack() { Actor_Set_Goal_Number(kActorLucy, kGoalLucyReturnToHF03); return; //true; } - AI_Countdown_Timer_Reset(kActorLucy, 0); - AI_Countdown_Timer_Start(kActorLucy, 0, 30); + AI_Countdown_Timer_Reset(kActorLucy, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorLucy, kActorTimerAIScriptCustomTask0, 30); break; case kGoalLucyHF03RunOutPhase1: diff --git a/engines/bladerunner/script/ai/luther.cpp b/engines/bladerunner/script/ai/luther.cpp index f30763a0d9..4ad0e5639d 100644 --- a/engines/bladerunner/script/ai/luther.cpp +++ b/engines/bladerunner/script/ai/luther.cpp @@ -72,8 +72,8 @@ bool AIScriptLuther::Update() { if ( Actor_Query_Goal_Number(kActorLuther) == kGoalLutherDyingStarted && !Game_Flag_Query(kFlagUG15LutherLanceStartedDying) ) { - AI_Countdown_Timer_Reset(kActorLuther, 2); - AI_Countdown_Timer_Start(kActorLuther, 2, 5); + AI_Countdown_Timer_Reset(kActorLuther, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorLuther, kActorTimerAIScriptCustomTask2, 5); Actor_Set_Goal_Number(kActorLuther, kGoalLutherDyingWait); Game_Flag_Set(kFlagUG15LutherLanceStartedDying); return false; @@ -116,8 +116,8 @@ bool AIScriptLuther::Update() { } void AIScriptLuther::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorLuther, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorLuther, kActorTimerAIScriptCustomTask2); Actor_Set_Goal_Number(kActorLuther, kGoalLutherDyingCheck); // return true; } diff --git a/engines/bladerunner/script/ai/maggie.cpp b/engines/bladerunner/script/ai/maggie.cpp index 3521abbb9d..86a1c5f881 100644 --- a/engines/bladerunner/script/ai/maggie.cpp +++ b/engines/bladerunner/script/ai/maggie.cpp @@ -94,10 +94,10 @@ bool AIScriptMaggie::Update() { } void AIScriptMaggie::TimerExpired(int timer) { - if (timer == 0) { + if (timer == kActorTimerAIScriptCustomTask0) { int goal = Actor_Query_Goal_Number(kActorMaggie); if (goal == kGoalMaggieMA02Wait) { - AI_Countdown_Timer_Reset(kActorMaggie, 0); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); if (Random_Query(0, 4)) { AI_Movement_Track_Flush(kActorMaggie); AI_Movement_Track_Append(kActorMaggie, randomWaypointMA02(), 0); @@ -109,7 +109,7 @@ void AIScriptMaggie::TimerExpired(int timer) { } if (goal == kGoalMaggieMA02SitDown) { - AI_Countdown_Timer_Reset(kActorMaggie, 0); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); Actor_Change_Animation_Mode(kActorMaggie, 55); return; //true } @@ -132,8 +132,8 @@ void AIScriptMaggie::CompletedMovementTrack() { if (goal == kGoalMaggieMA02Wait) { Actor_Face_Actor(kActorMaggie, kActorMcCoy, true); - AI_Countdown_Timer_Reset(kActorMaggie, 0); - AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(1, 5)); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorMaggie, kActorTimerAIScriptCustomTask0, Random_Query(1, 5)); return; //true } @@ -194,8 +194,8 @@ void AIScriptMaggie::ClickedByPlayer() { Actor_Face_Actor(kActorMaggie, kActorMcCoy, true); Actor_Change_Animation_Mode(kActorMaggie, 56); } - AI_Countdown_Timer_Reset(kActorMaggie, 0); - AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9)); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorMaggie, kActorTimerAIScriptCustomTask0, Random_Query(3, 9)); return; // true } @@ -280,7 +280,7 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; case kGoalMaggieMA02WalkToMcCoy: - AI_Countdown_Timer_Reset(kActorMaggie, 0); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); AI_Movement_Track_Flush(kActorMaggie); Loop_Actor_Walk_To_Actor(kActorMaggie, kActorMcCoy, 30, false, false); Actor_Face_Actor(kActorMaggie, kActorMcCoy, true); @@ -289,8 +289,8 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; case kGoalMaggieMA02Wait: - AI_Countdown_Timer_Reset(kActorMaggie, 0); - AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(3, 9)); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorMaggie, kActorTimerAIScriptCustomTask0, Random_Query(3, 9)); return true; case 9: @@ -310,8 +310,8 @@ bool AIScriptMaggie::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Change_Animation_Mode(kActorMaggie, 54); _animationState = kMaggieStateLayingIdle; _animationFrame = 0; - AI_Countdown_Timer_Reset(kActorMaggie, 0); - AI_Countdown_Timer_Start(kActorMaggie, 0, Random_Query(2, 9)); + AI_Countdown_Timer_Reset(kActorMaggie, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorMaggie, kActorTimerAIScriptCustomTask0, Random_Query(2, 9)); return true; case kGoalMaggieMA02Sleep: diff --git a/engines/bladerunner/script/ai/moraji.cpp b/engines/bladerunner/script/ai/moraji.cpp index e7ae6691a8..732905e2f6 100644 --- a/engines/bladerunner/script/ai/moraji.cpp +++ b/engines/bladerunner/script/ai/moraji.cpp @@ -46,8 +46,8 @@ bool AIScriptMoraji::Update() { && Player_Query_Current_Scene() == kSceneDR05 && !Game_Flag_Query(kFlagDR05BombActivated) ) { - AI_Countdown_Timer_Reset(kActorMoraji, 2); - AI_Countdown_Timer_Start(kActorMoraji, 2, 30); + AI_Countdown_Timer_Reset(kActorMoraji, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorMoraji, kActorTimerAIScriptCustomTask2, 30); Game_Flag_Set(kFlagDR05BombActivated); return true; } @@ -63,8 +63,8 @@ bool AIScriptMoraji::Update() { } void AIScriptMoraji::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorMoraji, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorMoraji, kActorTimerAIScriptCustomTask2); if (Actor_Query_Goal_Number(kActorMoraji) != kGoalMorajiJump && Actor_Query_Goal_Number(kActorMoraji) != kGoalMorajiLayDown @@ -80,7 +80,7 @@ void AIScriptMoraji::TimerExpired(int timer) { void AIScriptMoraji::CompletedMovementTrack() { if (Actor_Query_Goal_Number(kActorMoraji) == kGoalMorajiRunOut) { - AI_Countdown_Timer_Reset(kActorMoraji, 2); + AI_Countdown_Timer_Reset(kActorMoraji, kActorTimerAIScriptCustomTask2); Game_Flag_Set(kFlagDR05BombWillExplode); _animationState = 3; @@ -476,7 +476,7 @@ void AIScriptMoraji::SetAnimationState(int animationState, int animationFrame, i bool AIScriptMoraji::ReachedMovementTrackWaypoint(int waypointId) { if (waypointId == 96) - AI_Countdown_Timer_Reset(kActorMoraji, 2); + AI_Countdown_Timer_Reset(kActorMoraji, kActorTimerAIScriptCustomTask2); return true; } diff --git a/engines/bladerunner/script/ai/officer_grayford.cpp b/engines/bladerunner/script/ai/officer_grayford.cpp index 66f05e56ba..15f7044ba9 100644 --- a/engines/bladerunner/script/ai/officer_grayford.cpp +++ b/engines/bladerunner/script/ai/officer_grayford.cpp @@ -202,8 +202,8 @@ bool AIScriptOfficerGrayford::Update() { } void AIScriptOfficerGrayford::TimerExpired(int timer) { - if (timer == 2) { - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 104) { Actor_Set_Goal_Number(kActorOfficerGrayford, 105); } else if (Actor_Query_Goal_Number(kActorOfficerGrayford) == 105) { @@ -255,8 +255,8 @@ void AIScriptOfficerGrayford::CompletedMovementTrack() { if (Random_Query(0, 2)) { Actor_Change_Animation_Mode(kActorOfficerGrayford, 43); } else { - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); - AI_Countdown_Timer_Start(kActorOfficerGrayford, 2, Random_Query(6, 12)); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2, Random_Query(6, 12)); } Actor_Face_Waypoint(kActorOfficerGrayford, 97, true); // return false; @@ -365,7 +365,7 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); Actor_Says(kActorMcCoy, 1005, kAnimationModeTalk); AI_Movement_Track_Flush(kActorOfficerGrayford); - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); if (_animationState == 35 || _animationState == 34) { _animationState = 37; _animationFrame = 0; @@ -380,7 +380,7 @@ void AIScriptOfficerGrayford::ClickedByPlayer() { Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); Actor_Says(kActorMcCoy, 1005, kAnimationModeTalk); AI_Movement_Track_Flush(kActorOfficerGrayford); - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); if (_animationState == 35 || _animationState == 34) { _animationState = 37; _animationFrame = 0; @@ -548,14 +548,14 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb return true; case 104: - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); AI_Movement_Track_Flush(kActorOfficerGrayford); AI_Movement_Track_Append(kActorOfficerGrayford, 112, 0); AI_Movement_Track_Repeat(kActorOfficerGrayford); return true; case 105: - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); AI_Movement_Track_Flush(kActorOfficerGrayford); AI_Movement_Track_Append(kActorOfficerGrayford, 113, 0); AI_Movement_Track_Repeat(kActorOfficerGrayford); @@ -565,7 +565,7 @@ bool AIScriptOfficerGrayford::GoalChanged(int currentGoalNumber, int newGoalNumb Actor_Face_Actor(kActorMcCoy, kActorOfficerGrayford, true); Actor_Says(kActorMcCoy, 1000, 14); AI_Movement_Track_Flush(kActorOfficerGrayford); - AI_Countdown_Timer_Reset(kActorOfficerGrayford, 2); + AI_Countdown_Timer_Reset(kActorOfficerGrayford, kActorTimerAIScriptCustomTask2); if (_animationState == 35 || _animationState == 34 diff --git a/engines/bladerunner/script/ai/officer_leary.cpp b/engines/bladerunner/script/ai/officer_leary.cpp index c4ddef72ae..a4ece9fece 100644 --- a/engines/bladerunner/script/ai/officer_leary.cpp +++ b/engines/bladerunner/script/ai/officer_leary.cpp @@ -198,18 +198,28 @@ bool AIScriptOfficerLeary::Update() { } void AIScriptOfficerLeary::TimerExpired(int timer) { - if (timer == 1) { - AI_Countdown_Timer_Reset(kActorOfficerLeary, 1); + if (timer == kActorTimerAIScriptCustomTask1) { + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask1); if (Actor_Query_In_Set(kActorMcCoy, kSetHF05)) { Actor_Set_Goal_Number(kActorOfficerLeary, 430); Actor_Set_Goal_Number(kActorOfficerGrayford, 430); } else { Game_Flag_Set(kFlagHF05PoliceAttacked); } - } else if (timer == 2) { - AI_Countdown_Timer_Reset(kActorOfficerLeary, 2); + } else if (timer == kActorTimerAIScriptCustomTask2) { + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask2); Game_Flag_Reset(kFlagOfficerLearyTakingNotes); } +#if BLADERUNNER_ORIGINAL_BUGS +#else + else if (timer == kActorTimerAIScriptCustomTask0) { + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask0); + if (Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01ResumeWalkToCrowd) { + Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyRC01WalkToCrowd); + } + } +#endif // BLADERUNNER_ORIGINAL_BUGS + } void AIScriptOfficerLeary::CompletedMovementTrack() { @@ -340,6 +350,13 @@ bool AIScriptOfficerLeary::GoalChanged(int currentGoalNumber, int newGoalNumber) AI_Movement_Track_Append(kActorOfficerLeary, 35, 0); AI_Movement_Track_Repeat(kActorOfficerLeary); return true; +#if BLADERUNNER_ORIGINAL_BUGS +#else + case kGoalOfficerLearyRC01ResumeWalkToCrowd: + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask0); // usable for custom stuff are timers 0-2 + AI_Countdown_Timer_Start(kActorOfficerLeary, kActorTimerAIScriptCustomTask0, 4); // wait a few seconds before starting taking notes again + return true; +#endif // BLADERUNNER_ORIGINAL_BUGS case 99: AI_Movement_Track_Flush(kActorOfficerLeary); return false; @@ -521,13 +538,13 @@ bool AIScriptOfficerLeary::GoalChanged(int currentGoalNumber, int newGoalNumber) Actor_Set_Goal_Number(kActorOfficerLeary, 410); return true; case 420: - AI_Countdown_Timer_Reset(kActorOfficerLeary, 1); - AI_Countdown_Timer_Start(kActorOfficerLeary, 1, 120); + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Start(kActorOfficerLeary, kActorTimerAIScriptCustomTask1, 120); Actor_Set_Goal_Number(kActorOfficerLeary, 410); return true; case 425: - AI_Countdown_Timer_Reset(kActorOfficerLeary, 1); - AI_Countdown_Timer_Start(kActorOfficerLeary, 1, 60); + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Start(kActorOfficerLeary, kActorTimerAIScriptCustomTask1, 60); Actor_Set_Goal_Number(kActorOfficerLeary, 410); return true; case 430: @@ -1226,8 +1243,8 @@ void AIScriptOfficerLeary::SetAnimationState(int animationState, int animationFr bool AIScriptOfficerLeary::ReachedMovementTrackWaypoint(int waypointId) { if (waypointId == 57 || waypointId == 58) { Game_Flag_Set(kFlagOfficerLearyTakingNotes); - AI_Countdown_Timer_Reset(kActorOfficerLeary, 2); - AI_Countdown_Timer_Start(kActorOfficerLeary, 2, 6); + AI_Countdown_Timer_Reset(kActorOfficerLeary, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorOfficerLeary, kActorTimerAIScriptCustomTask2, 6); } return true; } diff --git a/engines/bladerunner/script/ai/sadik.cpp b/engines/bladerunner/script/ai/sadik.cpp index d931ac7fcc..85c1e58a97 100644 --- a/engines/bladerunner/script/ai/sadik.cpp +++ b/engines/bladerunner/script/ai/sadik.cpp @@ -87,8 +87,8 @@ bool AIScriptSadik::Update() { } void AIScriptSadik::TimerExpired(int timer) { - if (timer == 0) { - AI_Countdown_Timer_Reset(kActorSadik, 0); + if (timer == kActorTimerAIScriptCustomTask0) { + AI_Countdown_Timer_Reset(kActorSadik, kActorTimerAIScriptCustomTask0); // goals 303, 304 and 305 are never set, cut out part of game? switch (Actor_Query_Goal_Number(kActorSadik)) { @@ -340,13 +340,13 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) { // goals 303, 304 and 305 are never set, cut out part of game? case 303: - AI_Countdown_Timer_Reset(kActorSadik, 0); - AI_Countdown_Timer_Start(kActorSadik, 0, 5); + AI_Countdown_Timer_Reset(kActorSadik, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorSadik, kActorTimerAIScriptCustomTask0, 5); return true; case 304: Actor_Set_Targetable(kActorSadik, false); - AI_Countdown_Timer_Reset(kActorSadik, 0); + AI_Countdown_Timer_Reset(kActorSadik, kActorTimerAIScriptCustomTask0); return true; case 305: @@ -356,7 +356,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalSadikUG18PrepareShootMcCoy: Sound_Play(kSfxLGCAL1, 100, 0, 0, 50); - AI_Countdown_Timer_Start(kActorSadik, 0, 2); + AI_Countdown_Timer_Start(kActorSadik, kActorTimerAIScriptCustomTask0, 2); return true; case kGoalSadikUG18ShootMcCoy: @@ -370,7 +370,7 @@ bool AIScriptSadik::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; case 309: - AI_Countdown_Timer_Reset(kActorSadik, 0); + AI_Countdown_Timer_Reset(kActorSadik, kActorTimerAIScriptCustomTask0); return true; case 400: diff --git a/engines/bladerunner/script/ai/steele.cpp b/engines/bladerunner/script/ai/steele.cpp index f44efeb2e8..7569157ace 100644 --- a/engines/bladerunner/script/ai/steele.cpp +++ b/engines/bladerunner/script/ai/steele.cpp @@ -192,7 +192,7 @@ bool AIScriptSteele::Update() { } void AIScriptSteele::TimerExpired(int timer) { - if (timer == 0 + if (timer == kActorTimerAIScriptCustomTask0 && Actor_Query_Goal_Number(kActorSteele) == kGoalSteeleNR11StartWaiting ) { if (Player_Query_Current_Scene() == kSceneNR11) { @@ -203,10 +203,10 @@ void AIScriptSteele::TimerExpired(int timer) { return; // true; } - if (timer == 1) { + if (timer == kActorTimerAIScriptCustomTask1) { int goal = Actor_Query_Goal_Number(kActorSteele); - AI_Countdown_Timer_Reset(kActorSteele, 1); + AI_Countdown_Timer_Reset(kActorSteele, kActorTimerAIScriptCustomTask1); if (goal == kGoalSteeleKP03Exploded) { Actor_Set_Goal_Number(kActorSteele, kGoalSteeleKP03Dying); @@ -852,19 +852,19 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; case kGoalSteeleNR11StartWaiting: - AI_Countdown_Timer_Reset(kActorSteele, 0); - AI_Countdown_Timer_Start(kActorSteele, 0, 15); + AI_Countdown_Timer_Reset(kActorSteele, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorSteele, kActorTimerAIScriptCustomTask0, 15); return true; case kGoalSteeleNR11StopWaiting: - AI_Countdown_Timer_Reset(kActorSteele, 0); + AI_Countdown_Timer_Reset(kActorSteele, kActorTimerAIScriptCustomTask0); return true; case kGoalSteeleNR11Enter: if (comp_distance(kActorMcCoy, -4.0, 0.33f, 0.0f, 100.0f, 0.33f, -4.0f) < 48.0f) { Loop_Actor_Walk_To_XYZ(kActorMcCoy, 32.0f, 0.33f, 17.0f, 0, false, false, 0); } - AI_Countdown_Timer_Reset(kActorSteele, 0); + AI_Countdown_Timer_Reset(kActorSteele, kActorTimerAIScriptCustomTask0); Player_Loses_Control(); if (Actor_Query_Goal_Number(kActorDektora) == kGoalSteeleNR01ConfrontGordo) { Async_Actor_Walk_To_XYZ(kActorMcCoy, -15.53f, 0.33f, 73.49f, 0, false); @@ -1356,7 +1356,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) { case kGoalSteeleKP03Exploded: Actor_Force_Stop_Walking(kActorSteele); Actor_Change_Animation_Mode(kActorSteele, 51); - AI_Countdown_Timer_Start(kActorSteele, 1, 2); + AI_Countdown_Timer_Start(kActorSteele, kActorTimerAIScriptCustomTask1, 2); return true; case kGoalSteeleKP03Dying: @@ -1376,7 +1376,7 @@ bool AIScriptSteele::GoalChanged(int currentGoalNumber, int newGoalNumber) { Actor_Says(kActorSteele, 460, 3); Actor_Says(kActorSteele, 470, 3); } - AI_Countdown_Timer_Start(kActorSteele, 1, 3); + AI_Countdown_Timer_Start(kActorSteele, kActorTimerAIScriptCustomTask1, 3); return true; case kGoalSteeleKP03ShootMcCoy: diff --git a/engines/bladerunner/script/ai/transient.cpp b/engines/bladerunner/script/ai/transient.cpp index 3edbbaa62d..8fefc8e973 100644 --- a/engines/bladerunner/script/ai/transient.cpp +++ b/engines/bladerunner/script/ai/transient.cpp @@ -76,17 +76,17 @@ bool AIScriptTransient::Update() { && !Game_Flag_Query(kFlagCT04HomelessTrashFinish) ) { Game_Flag_Set(kFlagCT04HomelessTrashFinish); - AI_Countdown_Timer_Reset(kActorTransient, 1); - AI_Countdown_Timer_Start(kActorTransient, 1, 12); + AI_Countdown_Timer_Reset(kActorTransient, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Start(kActorTransient, kActorTimerAIScriptCustomTask1, 12); } return false; } void AIScriptTransient::TimerExpired(int timer) { - if (timer == 0) { + if (timer == kActorTimerAIScriptCustomTask0) { if (Actor_Query_Goal_Number(kActorTransient) == 395 && Actor_Query_Which_Set_In(kActorMcCoy) == kSetUG13) { - AI_Countdown_Timer_Start(kActorTransient, 0, Random_Query(20, 10)); + AI_Countdown_Timer_Start(kActorTransient, kActorTimerAIScriptCustomTask0, Random_Query(20, 10)); switch (Random_Query(1, 3)) { case 1: Sound_Play(kSfxBUMSNOR1, 50, 0, 0, 50); @@ -100,17 +100,17 @@ void AIScriptTransient::TimerExpired(int timer) { } } else if (Actor_Query_Goal_Number(kActorTransient) != 599) { Actor_Set_Goal_Number(kActorTransient, 391); - AI_Countdown_Timer_Reset(kActorTransient, 0); + AI_Countdown_Timer_Reset(kActorTransient, kActorTimerAIScriptCustomTask0); } } - if (timer == 1) { + if (timer == kActorTimerAIScriptCustomTask1) { if (Actor_Query_Goal_Number(kActorTransient) == kGoalTransientDefault) { // stop diggin the trash Actor_Set_Goal_Number(kActorTransient, 10); Actor_Change_Animation_Mode(kActorTransient, kAnimationModeIdle); } Actor_Set_Goal_Number(kActorTransient, 10); Actor_Set_Targetable(kActorTransient, false); - AI_Countdown_Timer_Reset(kActorTransient, 1); + AI_Countdown_Timer_Reset(kActorTransient, kActorTimerAIScriptCustomTask1); } } @@ -210,10 +210,10 @@ bool AIScriptTransient::GoalChanged(int currentGoalNumber, int newGoalNumber) { return true; case 395: Actor_Change_Animation_Mode(kActorTransient, 55); - AI_Countdown_Timer_Start(kActorTransient, 0, Random_Query(30, 40)); + AI_Countdown_Timer_Start(kActorTransient, kActorTimerAIScriptCustomTask0, Random_Query(30, 40)); return true; case 599: - AI_Countdown_Timer_Reset(kActorTransient, 0); + AI_Countdown_Timer_Reset(kActorTransient, kActorTimerAIScriptCustomTask0); return true; } return false; diff --git a/engines/bladerunner/script/ai/tyrell_guard.cpp b/engines/bladerunner/script/ai/tyrell_guard.cpp index a0b95bb32d..25992c2079 100644 --- a/engines/bladerunner/script/ai/tyrell_guard.cpp +++ b/engines/bladerunner/script/ai/tyrell_guard.cpp @@ -46,15 +46,15 @@ bool AIScriptTyrellGuard::Update() { void AIScriptTyrellGuard::TimerExpired(int timer) { switch (timer) { - case 0: - AI_Countdown_Timer_Reset(kActorTyrellGuard, 0); + case kActorTimerAIScriptCustomTask0: + AI_Countdown_Timer_Reset(kActorTyrellGuard, kActorTimerAIScriptCustomTask0); if (Actor_Query_Which_Set_In(kActorMcCoy) == kSetTB02_TB03) { Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardWakeUpAndArrestMcCoy); } break; - case 1: - AI_Countdown_Timer_Reset(kActorTyrellGuard, 1); + case kActorTimerAIScriptCustomTask1: + AI_Countdown_Timer_Reset(kActorTyrellGuard, kActorTimerAIScriptCustomTask1); Actor_Set_Goal_Number(kActorTyrellGuard, kGoalTyrellGuardArrestMcCoy); break; } @@ -109,7 +109,7 @@ bool AIScriptTyrellGuard::GoalChanged(int currentGoalNumber, int newGoalNumber) case kGoalTyrellGuardSleeping: if (currentGoalNumber != newGoalNumber) { Actor_Change_Animation_Mode(kActorTyrellGuard, 55); - AI_Countdown_Timer_Start(kActorTyrellGuard, 0, 30); + AI_Countdown_Timer_Start(kActorTyrellGuard, kActorTimerAIScriptCustomTask0, 30); } return true; @@ -125,9 +125,9 @@ bool AIScriptTyrellGuard::GoalChanged(int currentGoalNumber, int newGoalNumber) return true; case kGoalTyrellGuardWakeUp: - AI_Countdown_Timer_Reset(kActorTyrellGuard, 0); + AI_Countdown_Timer_Reset(kActorTyrellGuard, kActorTimerAIScriptCustomTask0); Actor_Says(kActorTyrellGuard, 310, 14); - AI_Countdown_Timer_Start(kActorTyrellGuard, 1, 20); + AI_Countdown_Timer_Start(kActorTyrellGuard, kActorTimerAIScriptCustomTask1, 20); return true; case kGoalTyrellGuardArrestMcCoy: @@ -139,7 +139,7 @@ bool AIScriptTyrellGuard::GoalChanged(int currentGoalNumber, int newGoalNumber) return true; case kGoalTyrellGuardWait: - AI_Countdown_Timer_Reset(kActorTyrellGuard, 1); + AI_Countdown_Timer_Reset(kActorTyrellGuard, kActorTimerAIScriptCustomTask1); return true; } return false; diff --git a/engines/bladerunner/script/ai/zuben.cpp b/engines/bladerunner/script/ai/zuben.cpp index aad4bfd109..a1cc7c01b6 100644 --- a/engines/bladerunner/script/ai/zuben.cpp +++ b/engines/bladerunner/script/ai/zuben.cpp @@ -58,8 +58,8 @@ bool AIScriptZuben::Update() { && Player_Query_Current_Scene() == kSceneCT01 && !Game_Flag_Query(kFlagCT01ZubenMcCoyCheck) ) { - AI_Countdown_Timer_Reset(kActorZuben, 2); - AI_Countdown_Timer_Start(kActorZuben, 2, 30); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask2); + AI_Countdown_Timer_Start(kActorZuben, kActorTimerAIScriptCustomTask2, 30); Game_Flag_Set(kFlagCT01ZubenMcCoyCheck); return true; } @@ -99,7 +99,7 @@ bool AIScriptZuben::Update() { if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06AttackMcCoy && Player_Query_Current_Scene() == kSceneCT07 ) { - AI_Countdown_Timer_Reset(kActorZuben, 0); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask0); Game_Flag_Set(kFlagCT05WarehouseOpen); Actor_Set_Targetable(kActorZuben, true); if (Actor_Query_Goal_Number(kActorGordo) == kGoalGordoDefault) { @@ -118,7 +118,7 @@ bool AIScriptZuben::Update() { } void AIScriptZuben::TimerExpired(int timer) { - if (timer == 2) { // Check on McCoy every 30s + if (timer == kActorTimerAIScriptCustomTask2) { // Check on McCoy every 30s if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenDefault && Player_Query_Current_Scene() == kSceneCT01 && Random_Query(1, 3) < 3 @@ -127,19 +127,19 @@ void AIScriptZuben::TimerExpired(int timer) { } Game_Flag_Reset(kFlagCT01ZubenMcCoyCheck); // return true; - } else if (timer == 1) { + } else if (timer == kActorTimerAIScriptCustomTask1) { if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT02RunToFreeSlotG) { // Zuben fleeing, after 10s Music_Stop(10); Actor_Set_Goal_Number(kActorZuben, kGoalZubenCT06HideAtFreeSlotA); - AI_Countdown_Timer_Reset(kActorZuben, 1); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask1); // return true; } - } else if (timer == 0) { // Zuben fleeing, after 70s + } else if (timer == kActorTimerAIScriptCustomTask0) { // Zuben fleeing, after 70s if (Player_Query_Current_Set() != kSetCT01_CT12) { Music_Stop(2); } Actor_Set_Goal_Number(kActorZuben, kGoalZubenFled); // Let Zuben flee completly, he will catch McCoy on MA01 - AI_Countdown_Timer_Reset(kActorZuben, 0); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask0); // return true; } // return false; @@ -158,7 +158,7 @@ void AIScriptZuben::CompletedMovementTrack() { } else if (Actor_Query_Goal_Number(kActorZuben) == kGoalZubenCT06HideAtFreeSlotA && Game_Flag_Query(kFlagCT02McCoyFell) ) { - AI_Countdown_Timer_Reset(kActorZuben, 0); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask0); Game_Flag_Reset(kFlagCT02McCoyFell); Game_Flag_Set(kFlagCT02McCoyCombatReady); Game_Flag_Set(kFlagNotUsed721); @@ -332,10 +332,10 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { AI_Movement_Track_Append_Run(kActorZuben, 84, 0); AI_Movement_Track_Append_Run(kActorZuben, 85, 0); AI_Movement_Track_Append(kActorZuben, 39, 0); - AI_Countdown_Timer_Reset(kActorZuben, 1); - AI_Countdown_Timer_Start(kActorZuben, 1, 10); - AI_Countdown_Timer_Reset(kActorZuben, 0); - AI_Countdown_Timer_Start(kActorZuben, 0, 70); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask1); + AI_Countdown_Timer_Start(kActorZuben, kActorTimerAIScriptCustomTask1, 10); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask0); + AI_Countdown_Timer_Start(kActorZuben, kActorTimerAIScriptCustomTask0, 70); AI_Movement_Track_Repeat(kActorZuben); return false; @@ -400,7 +400,7 @@ bool AIScriptZuben::GoalChanged(int currentGoalNumber, int newGoalNumber) { return false; case kGoalZubenCT06JumpDown: - AI_Countdown_Timer_Reset(kActorZuben, 0); + AI_Countdown_Timer_Reset(kActorZuben, kActorTimerAIScriptCustomTask0); Actor_Put_In_Set(kActorZuben, kSetCT06); Actor_Set_At_XYZ(kActorZuben, 37.14f, -58.23f, 4.0f, 256); _animationFrame = 0; diff --git a/engines/bladerunner/script/scene/rc01.cpp b/engines/bladerunner/script/scene/rc01.cpp index e3686a6b0c..a0074ebccc 100644 --- a/engines/bladerunner/script/scene/rc01.cpp +++ b/engines/bladerunner/script/scene/rc01.cpp @@ -250,11 +250,23 @@ bool SceneScriptRC01::ClickedOn3DObject(const char *objectName, bool a2) { if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "DOOR LEFT", 48, true, false)) { Actor_Face_Object(kActorMcCoy, "DOOR LEFT", true); if (!Actor_Clue_Query(kActorMcCoy, kClueDoorForced2) && Actor_Query_In_Set(kActorOfficerLeary, kSetRC01) && Global_Variable_Query(kVariableChapter) > 0) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + bool officerLearyWasInterrogatingTheCrowd = Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01CrowdInterrogation + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01WalkToCrowd + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01ResumeWalkToCrowd; +#endif // BLADERUNNER_ORIGINAL_BUGS Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyDefault); Actor_Face_Actor(kActorOfficerLeary, kActorMcCoy, true); Actor_Says(kActorOfficerLeary, 0, 12); Actor_Says(kActorMcCoy, 4495, 13); Actor_Clue_Acquire(kActorMcCoy, kClueDoorForced2, true, kActorOfficerLeary); +#if BLADERUNNER_ORIGINAL_BUGS +#else + if (officerLearyWasInterrogatingTheCrowd) { + Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyRC01ResumeWalkToCrowd); + } +#endif // BLADERUNNER_ORIGINAL_BUGS } #if BLADERUNNER_ORIGINAL_BUGS #else @@ -292,6 +304,12 @@ bool SceneScriptRC01::ClickedOn3DObject(const char *objectName, bool a2) { bool SceneScriptRC01::ClickedOnActor(int actorId) { if (actorId == kActorOfficerLeary && Global_Variable_Query(kVariableChapter) == 1) { if (!Loop_Actor_Walk_To_Actor(kActorMcCoy, kActorOfficerLeary, 36, true, false)) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + bool officerLearyWasInterrogatingTheCrowd = Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01CrowdInterrogation + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01WalkToCrowd + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01ResumeWalkToCrowd; +#endif // BLADERUNNER_ORIGINAL_BUGS Actor_Face_Actor(kActorMcCoy, kActorOfficerLeary, true); Actor_Face_Actor(kActorOfficerLeary, kActorMcCoy, true); if (Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01WalkToCrowd) { @@ -344,6 +362,12 @@ bool SceneScriptRC01::ClickedOnActor(int actorId) { } Game_Flag_Reset(kFlagRC01McCoyAndOfficerLearyTalking); } +#if BLADERUNNER_ORIGINAL_BUGS +#else + if (officerLearyWasInterrogatingTheCrowd) { + Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyRC01ResumeWalkToCrowd); + } +#endif // BLADERUNNER_ORIGINAL_BUGS } return true; } @@ -352,6 +376,12 @@ bool SceneScriptRC01::ClickedOnActor(int actorId) { bool SceneScriptRC01::ClickedOnItem(int itemId, bool a2) { if (itemId == kItemChromeDebris) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + bool officerLearyWasInterrogatingTheCrowd = Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01CrowdInterrogation + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01WalkToCrowd + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01ResumeWalkToCrowd; +#endif // BLADERUNNER_ORIGINAL_BUGS Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyDefault); if (!Loop_Actor_Walk_To_Item(kActorMcCoy, kItemChromeDebris, 36, true, false)) { Actor_Face_Item(kActorMcCoy, kItemChromeDebris, true); @@ -371,6 +401,12 @@ bool SceneScriptRC01::ClickedOnItem(int itemId, bool a2) { I_Sez("JM: He keeps me chuckling non-stop!\n"); Loop_Actor_Walk_To_Actor(kActorOfficerLeary, kActorMcCoy, 36, 0, false); } +#if BLADERUNNER_ORIGINAL_BUGS +#else + if (officerLearyWasInterrogatingTheCrowd) { + Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyRC01ResumeWalkToCrowd); + } +#endif // BLADERUNNER_ORIGINAL_BUGS return true; } return false; @@ -564,6 +600,20 @@ bool SceneScriptRC01::ClickedOnExit(int exitId) { void SceneScriptRC01::interrogateCrowd() { if (!Game_Flag_Query(kFlagRC01PoliceDone)) { +#if BLADERUNNER_ORIGINAL_BUGS +#else + bool officerLearyWasInterrogatingTheCrowd = Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01CrowdInterrogation + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01WalkToCrowd + || Actor_Query_Goal_Number(kActorOfficerLeary) == kGoalOfficerLearyRC01ResumeWalkToCrowd; + if (officerLearyWasInterrogatingTheCrowd + || (Actor_Clue_Query(kActorMcCoy, kClueCrowdInterviewA) + && Actor_Clue_Query(kActorMcCoy, kClueCrowdInterviewB) ) + ) { + Actor_Says(kActorMcCoy, 8525, 3); // generic "hmph" + return; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (!Loop_Actor_Walk_To_Scene_Object(kActorMcCoy, "BARICADE03", 36, true, false)) { Actor_Set_Goal_Number(kActorOfficerLeary, kGoalOfficerLearyDefault); Actor_Face_Object(kActorMcCoy, "BARICADE03", true); |