From 6b63a98ab0b2fe6f8c297eb3a4da9571cf8385d9 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Tue, 19 Feb 2013 16:35:26 +0100 Subject: [PATCH] Core/SmartAI: Prevent recursive EnterEvadeMode call Ref #8679 --- src/server/game/AI/SmartScripts/SmartAI.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 501bc35b77..799102aa4b 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();