diff options
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index d1ab3e5932f..4dce17ab33a 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3946,8 +3946,26 @@ void SmartScript::OnUpdate(uint32 const diff) && !GetBaseObject()) return; + // Don't run any action while evading if (me && me->IsInEvadeMode()) + { + // Check if the timed action list finished and clear it if so. + // This is required by SMART_ACTION_CALL_TIMED_ACTIONLIST failing if mTimedActionList is not empty. + if (!mTimedActionList.empty()) + { + bool needCleanup = true; + for (SmartScriptHolder& scriptholder : mTimedActionList) + { + if (scriptholder.enableTimed) + needCleanup = false; + } + + if (needCleanup) + mTimedActionList.clear(); + } + return; + } InstallEvents();//before UpdateTimers |