aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp8
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();
}