diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2013-02-19 16:35:26 +0100 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2013-02-19 16:35:26 +0100 |
commit | 6b63a98ab0b2fe6f8c297eb3a4da9571cf8385d9 (patch) | |
tree | 5f8ce3eea427dc706dff47a80f010606898379e6 /src | |
parent | 12e55416368e5c4db5c024180fe8b7cbf6963158 (diff) |
Core/SmartAI: Prevent recursive EnterEvadeMode call
Ref #8679
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartAI.cpp | 6 |
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(); |