aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2013-02-19 16:35:26 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2013-02-19 16:35:26 +0100
commit6b63a98ab0b2fe6f8c297eb3a4da9571cf8385d9 (patch)
tree5f8ce3eea427dc706dff47a80f010606898379e6 /src
parent12e55416368e5c4db5c024180fe8b7cbf6963158 (diff)
Core/SmartAI: Prevent recursive EnterEvadeMode call
Ref #8679
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index 501bc35b77a..799102aa4bd 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -422,6 +422,9 @@ void SmartAI::MovepointReached(uint32 id)
void SmartAI::MovementInform(uint32 MovementType, uint32 Data)
{
+ if ((MovementType == POINT_MOTION_TYPE && Data == SMART_ESCORT_LAST_OOC_POINT) || MovementType == FOLLOW_MOTION_TYPE)
+ me->ClearUnitState(UNIT_STATE_EVADE);
+
GetScript()->ProcessEventsFor(SMART_EVENT_MOVEMENTINFORM, NULL, MovementType, Data);
if (MovementType != POINT_MOTION_TYPE || !HasEscortState(SMART_ESCORT_ESCORTING))
return;
@@ -443,11 +446,12 @@ void SmartAI::RemoveAuras()
void SmartAI::EnterEvadeMode()
{
- if (!me->isAlive())
+ if (!me->isAlive() || me->IsInEvadeMode())
return;
RemoveAuras();
+ me->AddUnitState(UNIT_STATE_EVADE);
me->DeleteThreatList();
me->CombatStop(true);
me->LoadCreaturesAddon();