Exemple #1
0
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);
}