From 9e3b4fe409e401bdffa44dc479177aa1b5fe96b1 Mon Sep 17 00:00:00 2001 From: megamage Date: Fri, 11 Nov 2011 14:11:58 -0500 Subject: Cleanup before deleting objects when unloading grid. Fix #3922. --- src/server/game/Grids/ObjectGridLoader.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'src/server/game/Grids/ObjectGridLoader.cpp') diff --git a/src/server/game/Grids/ObjectGridLoader.cpp b/src/server/game/Grids/ObjectGridLoader.cpp index 1f27aeb4742..73e4a85e9d0 100755 --- a/src/server/game/Grids/ObjectGridLoader.cpp +++ b/src/server/game/Grids/ObjectGridLoader.cpp @@ -205,6 +205,9 @@ void ObjectGridUnloader::Visit(GridRefManager &m) // if option set then object already saved at this moment if (!sWorld->getBoolConfig(CONFIG_SAVE_RESPAWN_TIME_IMMEDIATELY)) obj->SaveRespawnTime(); + //Some creatures may summon other temp summons in CleanupsBeforeDelete() + //So we need this even after cleaner (maybe we can remove cleaner) + obj->CleanupsBeforeDelete(); ///- object will get delinked from the manager when deleted delete obj; } @@ -225,23 +228,18 @@ void ObjectGridStoper::Visit(CreatureMapType &m) } } -void ObjectGridCleaner::Visit(CreatureMapType &m) -{ - for (CreatureMapType::iterator iter=m.begin(); iter != m.end(); ++iter) - iter->getSource()->CleanupsBeforeDelete(); -} - template void ObjectGridCleaner::Visit(GridRefManager &m) { for (typename GridRefManager::iterator iter = m.begin(); iter != m.end(); ++iter) - iter->getSource()->RemoveFromWorld(); + iter->getSource()->CleanupsBeforeDelete(); } template void ObjectGridUnloader::Visit(CreatureMapType &); template void ObjectGridUnloader::Visit(GameObjectMapType &); template void ObjectGridUnloader::Visit(DynamicObjectMapType &); template void ObjectGridUnloader::Visit(CorpseMapType &); +template void ObjectGridCleaner::Visit(CreatureMapType &); template void ObjectGridCleaner::Visit(GameObjectMapType &); template void ObjectGridCleaner::Visit(DynamicObjectMapType &); template void ObjectGridCleaner::Visit(CorpseMapType &); -- cgit v1.2.3