bool BattleGround::DelCreature(uint32 type) { Creature *cr = HashMapHolder<Creature>::Find(m_BgCreatures[type]); if(!cr) { sLog.outError("Can't find creature guid: %u",m_BgCreatures[type]); return false; } cr->CleanupsBeforeDelete(); cr->AddObjectToRemoveList(); m_BgCreatures[type] = 0; return true; }
/* void BattleGround::SpawnBGCreature(uint32 type, uint32 respawntime) { Map * map = MapManager::Instance().FindMap(GetMapId(),GetInstanceId()); if(!map) return false; if(respawntime == 0) { Creature *obj = HashMapHolder<Creature>::Find(m_BgCreatures[type]); if(obj) { //obj->Respawn(); // bugged obj->SetRespawnTime(0); objmgr.SaveCreatureRespawnTime(obj->GetGUIDLow(), GetInstanceID(), 0); map->Add(obj); } } else { Creature *obj = HashMapHolder<Creature>::Find(m_BgCreatures[type]); if(obj) { obj->setDeathState(DEAD); obj->SetRespawnTime(respawntime); map->Add(obj); } } } */ bool BattleGround::DelCreature(uint32 type) { Creature *cr = HashMapHolder<Creature>::Find(m_BgCreatures[type]); if(!cr) { sLog.outError("Can't find creature guid: %u",GUID_LOPART(m_BgCreatures[type])); return false; } //TODO: only delete creature after not in combat cr->CleanupsBeforeDelete(); cr->AddObjectToRemoveList(); m_BgCreatures[type] = 0; return true; }
Transport::~Transport() { for(CreatureSet::iterator itr = m_NPCPassengerSet.begin(); itr != m_NPCPassengerSet.end(); ++itr) { Creature* passenger = *itr; Map* map = passenger->GetMap(); passenger->SetTransport(NULL); passenger->CleanupsBeforeDelete(); map->Remove(passenger, true); } m_NPCPassengerSet.clear(); m_WayPoints.clear(); m_passengers.clear(); }