[10754] Use UNIT_FIELD_CRITTER for store minipet guid.

Also move related code to Unit and allow summon minipets by creatures.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>

Also fix creature's totems unsummon at owner remove from world.
This commit is contained in:
rsa 2010-11-20 04:23:47 +03:00 committed by VladimirMangos
parent f671f09950
commit 92ed528eb9
7 changed files with 35 additions and 45 deletions

View file

@ -5849,6 +5849,22 @@ Pet* Unit::_GetPet(ObjectGuid guid) const
return GetMap()->GetPet(guid);
}
void Unit::RemoveMiniPet()
{
if (Pet* pet = GetMiniPet())
pet->Unsummon(PET_SAVE_AS_DELETED, this);
else
SetCritterGuid(ObjectGuid());
}
Pet* Unit::GetMiniPet() const
{
if (GetCritterGuid().IsEmpty())
return NULL;
return GetMap()->GetPet(GetCritterGuid());
}
Unit* Unit::GetCharm() const
{
ObjectGuid charm_guid = GetCharmGuid();
@ -8365,6 +8381,7 @@ void Unit::SetDeathState(DeathState s)
{
RemoveAllAurasOnDeath();
RemoveGuardians();
RemoveMiniPet();
UnsummonAllTotems();
// after removing a Fearaura (in RemoveAllAurasOnDeath)
@ -9287,6 +9304,8 @@ void Unit::RemoveFromWorld()
Uncharm();
RemoveNotOwnSingleTargetAuras();
RemoveGuardians();
RemoveMiniPet();
UnsummonAllTotems();
RemoveAllGameObjects();
RemoveAllDynObjects();
CleanupDeletedAuras();