void GameEventMgr::DespawnEvent(uint32 id) { Log.Success("GameEvent","Started despawning event %u", id); // creatures for(std::map<uint32, std::list<uint32>>::iterator mitr = m_creaturespawns[id].begin(); mitr != m_creaturespawns[id].end(); mitr++) { for(std::list<uint32>::iterator gitr = mitr->second.begin(); gitr != mitr->second.end(); gitr++) { // find creature with current guid(*gitr) and despawn it MapMgr *mgr = sInstanceMgr.GetMapMgr(mitr->first); Creature *crt = mgr->GetCreature(*gitr); if(crt == NULL) { Log.Success("GameEvent","Failed to despawn creature with guid %u for event %u", *gitr, id); } else { // we don't need to delete waypoints as they are stored in m_custom_waypoint_map // and they are deleted automatically when creature is deleted crt->Despawn(0,0); Log.Success("GameEvent","creature with guid %u despawned from map %u for event %u", *gitr, mitr->first, id); } } mitr->second.clear(); } // gameobjects for(std::map<uint32, std::list<uint32>>::iterator mitr = m_gameobjectspawns[id].begin(); mitr != m_gameobjectspawns[id].end(); mitr++) { for(std::list<uint32>::iterator gitr = mitr->second.begin(); gitr != mitr->second.end(); gitr++) { // find gameobject with current guid(*gitr) and despawn it MapMgr *mgr = sInstanceMgr.GetMapMgr(mitr->first); GameObject *go = mgr->GetGameObject(*gitr); if(go == NULL) { Log.Success("GameEvent","Failed to despawn gameobject with guid %u for event %u", *gitr, id); } else { go->Despawn(0,0); Log.Success("GameEvent","gameobject with guid %u despawned from map %u for event %u", *gitr, mitr->first, id); } } mitr->second.clear(); } Log.Success("GameEvent","event %u despawned.", id); }