[7794] Add DK pet type support for proper show it in client Pet tab.

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
Astellar 2009-05-07 13:15:08 +04:00 committed by VladimirMangos
parent b2d9faa1cf
commit 55392c3417
4 changed files with 31 additions and 9 deletions

View file

@ -181,10 +181,7 @@ bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool
return true;
}
if (getPetType() == HUNTER_PET || (getPetType() == SUMMON_PET && cinfo->type == CREATURE_TYPE_DEMON && owner->getClass() == CLASS_WARLOCK))
m_charmInfo->SetPetNumber(pet_number, true);
else
m_charmInfo->SetPetNumber(pet_number, false);
m_charmInfo->SetPetNumber(pet_number, IsPermanentPetFor(owner));
SetOwnerGUID(owner->GetGUID());
SetDisplayId(fields[3].GetUInt32());
@ -1738,6 +1735,27 @@ void Pet::ToggleAutocast(uint32 spellid, bool apply)
}
}
bool Pet::IsPermanentPetFor(Player* owner)
{
switch(getPetType())
{
case SUMMON_PET:
switch(owner->getClass())
{
case CLASS_WARLOCK:
return GetCreatureInfo()->type == CREATURE_TYPE_DEMON;
case CLASS_DEATH_KNIGHT:
return GetCreatureInfo()->type == CREATURE_TYPE_UNDEAD;
default:
return false;
}
case HUNTER_PET:
return true;
default:
return false;
}
}
bool Pet::Create(uint32 guidlow, Map *map, uint32 phaseMask, uint32 Entry, uint32 pet_number)
{
SetMapId(map->GetId());
@ -1788,10 +1806,10 @@ void Pet::LearnPetPassives()
void Pet::CastPetAuras(bool current)
{
Unit* owner = GetOwner();
if(!owner)
if(!owner || owner->GetTypeId()!=TYPEID_PLAYER)
return;
if(getPetType() != HUNTER_PET && (getPetType() != SUMMON_PET || owner->getClass() != CLASS_WARLOCK))
if(!IsPermanentPetFor((Player*)owner))
return;
for(PetAuraSet::const_iterator itr = owner->m_petAuras.begin(); itr != owner->m_petAuras.end();)