diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp | 7 | ||||
-rw-r--r-- | src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp index 4be89f9d5ce..c740dbcc9b1 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp @@ -44,8 +44,8 @@ void HomeMovementGenerator<Creature>::DoReset(Creature*) { } void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner) { if (owner->HasUnitState(UNIT_STATE_ROOT | UNIT_STATE_STUNNED | UNIT_STATE_DISTRACTED)) - { // if we are ROOT/STUNNED/DISTRACTED even after aura clear, immediately finalize - otherwise we would get stuck in evade - arrived = true; + { // if we are ROOT/STUNNED/DISTRACTED even after aura clear, finalize on next update - otherwise we would get stuck in evade + skipToHome = true; return; } @@ -61,6 +61,7 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner) init.SetWalk(false); init.Launch(); + skipToHome = false; arrived = false; owner->ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_EVADE | UNIT_STATE_IGNORE_PATHFINDING))); @@ -68,6 +69,6 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner) bool HomeMovementGenerator<Creature>::DoUpdate(Creature* owner, const uint32 /*time_diff*/) { - arrived = arrived || owner->movespline->Finalized(); + arrived = skipToHome || owner->movespline->Finalized(); return !arrived; } diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h index 2fdfb45e574..e332c06df97 100644 --- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h +++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h @@ -31,7 +31,7 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature { public: - HomeMovementGenerator() : arrived(false) { } + HomeMovementGenerator() : arrived(false), skipToHome(false) { } ~HomeMovementGenerator() { } void DoInitialize(Creature*); @@ -43,5 +43,6 @@ class HomeMovementGenerator<Creature> : public MovementGeneratorMedium< Creature private: void _setTargetLocation(Creature*); bool arrived; + bool skipToHome; }; #endif |