diff options
author | Thanasis Antoniou | 2019-06-22 11:01:39 +0300 |
---|---|---|
committer | Thanasis Antoniou | 2019-06-22 11:01:39 +0300 |
commit | f3cdbd2ea9bf65ab50bfa8bb6d0ea66c22704e5d (patch) | |
tree | 7b7b67c0d60f98a5e364a5291e95cb0fb2519487 /engines/bladerunner | |
parent | 2287a4f607bab243ca6cb164942502c6ba82ce9d (diff) | |
download | scummvm-rg350-f3cdbd2ea9bf65ab50bfa8bb6d0ea66c22704e5d.tar.gz scummvm-rg350-f3cdbd2ea9bf65ab50bfa8bb6d0ea66c22704e5d.tar.bz2 scummvm-rg350-f3cdbd2ea9bf65ab50bfa8bb6d0ea66c22704e5d.zip |
BLADERUNNER: _playerActorIdle should affect McCoy only
Should be set or cleared only when McCoy is the actor who is walking and affect only McCoy
Diffstat (limited to 'engines/bladerunner')
-rw-r--r-- | engines/bladerunner/actor.cpp | 9 | ||||
-rw-r--r-- | engines/bladerunner/script/ai/clovis.cpp | 5 | ||||
-rw-r--r-- | engines/bladerunner/script/script.cpp | 71 |
3 files changed, 85 insertions, 0 deletions
diff --git a/engines/bladerunner/actor.cpp b/engines/bladerunner/actor.cpp index dd5650c324..5a464394f8 100644 --- a/engines/bladerunner/actor.cpp +++ b/engines/bladerunner/actor.cpp @@ -493,9 +493,18 @@ bool Actor::loopWalk(const Vector3 &destination, int proximity, bool interruptib _vm->playerGainsControl(); } +#if BLADERUNNER_ORIGINAL_BUGS if (!wasInterrupted && proximity == 0 && !_vm->_playerActorIdle) { setAtXYZ(destination, _facing, true, false, false); } +#else + if (!wasInterrupted && proximity == 0 + && (_id == kActorMcCoy && !_vm->_playerActorIdle) + && !isRetired() + ) { + setAtXYZ(destination, _facing, true, false, false); + } +#endif // BLADERUNNER_ORIGINAL_BUGS if (_id != kActorMcCoy) { _vm->_mouse->enable(); diff --git a/engines/bladerunner/script/ai/clovis.cpp b/engines/bladerunner/script/ai/clovis.cpp index 4d476f4cab..f054ce3d50 100644 --- a/engines/bladerunner/script/ai/clovis.cpp +++ b/engines/bladerunner/script/ai/clovis.cpp @@ -353,8 +353,13 @@ bool AIScriptClovis::GoalChanged(int currentGoalNumber, int newGoalNumber) { } else { Actor_Change_Animation_Mode(kActorMcCoy, kAnimationModeDie); } +#if BLADERUNNER_ORIGINAL_BUGS Delay(3000); Actor_Retired_Here(kActorMcCoy, 12, 48, true, kActorClovis); +#else + Actor_Retired_Here(kActorMcCoy, 12, 48, true, kActorClovis); + Delay(3000); +#endif // BLADERUNNER_ORIGINAL_BUGS return true; case kGoalClovisStartChapter5: diff --git a/engines/bladerunner/script/script.cpp b/engines/bladerunner/script/script.cpp index c65fb03152..a98a5ec7bd 100644 --- a/engines/bladerunner/script/script.cpp +++ b/engines/bladerunner/script/script.cpp @@ -489,15 +489,29 @@ bool ScriptBase::Loop_Actor_Walk_To_Actor(int actorId, int otherActorId, int pro run = true; } +#if BLADERUNNER_ORIGINAL_BUGS _vm->_playerActorIdle = false; +#else + if (actorId == kActorMcCoy) { + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS bool isRunning; bool result = _vm->_actors[actorId]->loopWalkToActor(otherActorId, proximity, interruptible, run, true, &isRunning); +#if BLADERUNNER_ORIGINAL_BUGS if (_vm->_playerActorIdle) { result = true; _vm->_playerActorIdle = false; } +#else + if (actorId == kActorMcCoy && _vm->_playerActorIdle) { + result = true; + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (isRunning) { _vm->_runningActorId = actorId; } @@ -514,15 +528,29 @@ bool ScriptBase::Loop_Actor_Walk_To_Item(int actorId, int itemId, int proximity, run = true; } +#if BLADERUNNER_ORIGINAL_BUGS _vm->_playerActorIdle = false; +#else + if (actorId == kActorMcCoy) { + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS bool isRunning; bool result = _vm->_actors[actorId]->loopWalkToItem(itemId, proximity, interruptible, run, true, &isRunning); +#if BLADERUNNER_ORIGINAL_BUGS if (_vm->_playerActorIdle) { result = true; _vm->_playerActorIdle = false; } +#else + if (actorId == kActorMcCoy && _vm->_playerActorIdle) { + result = true; + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (isRunning) { _vm->_runningActorId = actorId; } @@ -539,15 +567,29 @@ bool ScriptBase::Loop_Actor_Walk_To_Scene_Object(int actorId, const char *object run = true; } +#if BLADERUNNER_ORIGINAL_BUGS _vm->_playerActorIdle = false; +#else + if (actorId == kActorMcCoy) { + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS bool isRunning; bool result = _vm->_actors[actorId]->loopWalkToSceneObject(objectName, proximity, interruptible, run, true, &isRunning); +#if BLADERUNNER_ORIGINAL_BUGS if (_vm->_playerActorIdle) { result = true; _vm->_playerActorIdle = false; } +#else + if (actorId == kActorMcCoy && _vm->_playerActorIdle) { + result = true; + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (isRunning) { _vm->_runningActorId = actorId; } @@ -564,15 +606,29 @@ bool ScriptBase::Loop_Actor_Walk_To_Waypoint(int actorId, int waypointId, int pr run = true; } +#if BLADERUNNER_ORIGINAL_BUGS _vm->_playerActorIdle = false; +#else + if (actorId == kActorMcCoy) { + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS bool isRunning; bool result = _vm->_actors[actorId]->loopWalkToWaypoint(waypointId, proximity, interruptible, run, true, &isRunning); +#if BLADERUNNER_ORIGINAL_BUGS if (_vm->_playerActorIdle) { result = true; _vm->_playerActorIdle = false; } +#else + if (actorId == kActorMcCoy && _vm->_playerActorIdle) { + result = true; + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (isRunning) { _vm->_runningActorId = actorId; } @@ -592,15 +648,30 @@ bool ScriptBase::Loop_Actor_Walk_To_XYZ(int actorId, float x, float y, float z, run = true; } } + +#if BLADERUNNER_ORIGINAL_BUGS _vm->_playerActorIdle = false; +#else + if (actorId == kActorMcCoy) { + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS bool isRunning; bool result = _vm->_actors[actorId]->loopWalkToXYZ(Vector3(x, y, z), proximity, interruptible, run, true, &isRunning); +#if BLADERUNNER_ORIGINAL_BUGS if (_vm->_playerActorIdle) { result = true; _vm->_playerActorIdle = false; } +#else + if (actorId == kActorMcCoy && _vm->_playerActorIdle) { + result = true; + _vm->_playerActorIdle = false; + } +#endif // BLADERUNNER_ORIGINAL_BUGS + if (isRunning) { _vm->_runningActorId = actorId; } |