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::DoReset(Creature*) { } void HomeMovementGenerator::_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::_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::_setTargetLocation(Creature* owner) bool HomeMovementGenerator::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 : public MovementGeneratorMedium< Creature { public: - HomeMovementGenerator() : arrived(false) { } + HomeMovementGenerator() : arrived(false), skipToHome(false) { } ~HomeMovementGenerator() { } void DoInitialize(Creature*); @@ -43,5 +43,6 @@ class HomeMovementGenerator : public MovementGeneratorMedium< Creature private: void _setTargetLocation(Creature*); bool arrived; + bool skipToHome; }; #endif