aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp7
-rw-r--r--src/server/game/Movement/MovementGenerators/HomeMovementGenerator.h3
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