aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AI/SmartScripts
diff options
context:
space:
mode:
authortreeston <treeston.mmoc@gmail.com>2016-09-09 15:01:42 +0200
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-26 15:30:15 +0100
commit9c36dd7e947d483767b545b79e586c95e29e4305 (patch)
tree0dc106dfecf9cce3ae9ed922b62b3b80170b4977 /src/server/game/AI/SmartScripts
parent31eb40439e0ce92cb728268946138ebf6a5e66b3 (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. (cherry picked from commit e69a483aa942c1c6c4bd9b5fa47139f89643b8d5) Derp. Build fix. (cherry picked from commit 9180bcd404ff0a89144bbe834a2efe189bd0eb86)
Diffstat (limited to 'src/server/game/AI/SmartScripts')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 270a32e2c73..5decf1e87c7 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -449,14 +449,17 @@ void SmartAI::EnterEvadeMode(EvadeReason /*why*/)
AddEscortState(SMART_ESCORT_RETURNING);
ReturnToLastOOCPos();
}
- else if (!mFollowGuid.IsEmpty())
+ else if (Unit* target = !mFollowGuid.IsEmpty() ? ObjectAccessor::GetUnit(*me, mFollowGuid) : nullptr)
{
- if (Unit* target = ObjectAccessor::GetUnit(*me, mFollowGuid))
- me->GetMotionMaster()->MoveFollow(target, mFollowDist, mFollowAngle);
-
+ me->GetMotionMaster()->MoveFollow(target, mFollowDist, mFollowAngle);
// evade is not cleared in MoveFollow, so we can't keep it
me->ClearUnitState(UNIT_STATE_EVADE);
}
+ else if (Unit* owner = me->GetCharmerOrOwner())
+ {
+ me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, PET_FOLLOW_ANGLE);
+ me->ClearUnitState(UNIT_STATE_EVADE);
+ }
else
me->GetMotionMaster()->MoveTargetedHome();