aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Movement
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2016-09-09 15:01:42 +0200
committertreeston <treeston.mmoc@gmail.com>2016-09-09 15:01:42 +0200
commite69a483aa942c1c6c4bd9b5fa47139f89643b8d5 (patch)
tree51c469a0e079b310f1238009d2ca24aedecf6b02 /src/server/game/Movement
parent3219346888ba3beb43424c60764849ec0ea030c5 (diff)
AI/SmartAI: Fix an issue where SmartAI creatures would not properly follow their owner on evade. Also fix a bug where creatures with INHABIT_ROOT would get stuck in evade under certain conditions.
This allows us to fix quest 12261 (No Place to Run). Closes #16291.
Diffstat (limited to 'src/server/game/Movement')
-rw-r--r--src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
index 513cb823477..e3c258c3456 100644
--- a/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/HomeMovementGenerator.cpp
@@ -44,7 +44,10 @@ 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;
return;
+ }
Movement::MoveSplineInit init(owner);
float x, y, z, o;
@@ -65,6 +68,6 @@ void HomeMovementGenerator<Creature>::_setTargetLocation(Creature* owner)
bool HomeMovementGenerator<Creature>::DoUpdate(Creature* owner, const uint32 /*time_diff*/)
{
- arrived = owner->movespline->Finalized();
+ arrived = arrived || owner->movespline->Finalized();
return !arrived;
}