diff options
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 2a60e031416..74c7d0ed747 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -447,6 +447,10 @@ class CreatureGameObjectAreaTriggerScriptRegistrySwapHooks // Hook which is called before a gameobject is swapped static void UnloadResetScript(GameObject* gameobject) { + // Remove deletable events only, + // otherwise it causes crashes with non-deletable spell events. + gameobject->m_Events.KillAllEvents(false); + gameobject->AI()->Reset(); } @@ -461,6 +465,10 @@ class CreatureGameObjectAreaTriggerScriptRegistrySwapHooks // Hook which is called before a areatrigger is swapped static void UnloadResetScript(AreaTrigger* at) { + // Remove deletable events only, + // otherwise it causes crashes with non-deletable spell events. + at->m_Events.KillAllEvents(false); + at->AI()->OnRemove(); } |