void WorldSession::HandleDismissCritter(WorldPacket& recv_data) { #if VERSION_STRING > TBC uint64 GUID; recv_data >> GUID; if (_player->getCritterGuid() == 0) { LOG_ERROR("Player %u sent dismiss companion packet, but player has no companion", _player->getGuidLow()); return; } if (_player->getCritterGuid() != GUID) { LOG_ERROR("Player %u sent dismiss companion packet, but it doesn't match player's companion", _player->getGuidLow()); return; } Unit* companion = _player->GetMapMgr()->GetUnit(GUID); if (companion != NULL) { companion->Delete(); } _player->setCritterGuid(0); #endif }
void SummonHandler::ExpireSummonsInSlot() { for(std::tr1::array< Unit*, SUMMON_SLOTS >::iterator itr = summonslots.begin(); itr != summonslots.end(); ++itr) { Unit* u = *itr; if(u != NULL) u->Delete(); } std::fill(summonslots.begin(), summonslots.end(), reinterpret_cast< Unit* >(NULL)); }
void SummonHandler::RemoveAllSummons() { for(std::set< Unit* >::iterator itr = guardians.begin(); itr != guardians.end();) { Unit* g = *itr; ++itr; g->Delete(); } guardians.clear(); ExpireSummonsInSlot(); }
void Vehicle::RemoveAccessories(){ for( std::vector< uint64 >::iterator itr = installed_accessories.begin(); itr != installed_accessories.end(); ++itr ){ Unit *u = owner->GetMapMgr()->GetUnit( *itr ); if( u == NULL ) continue; if( u->GetVehicleComponent() != NULL ) u->GetVehicleComponent()->EjectAllPassengers(); EjectPassenger( u ); u->Delete(); } installed_accessories.clear(); }