Prevent using loading pet from DB code for non-player pets.

This commit is contained in:
VladimirMangos 2008-12-26 12:47:03 +03:00
parent 3c774f9c68
commit 3488c1fee3
4 changed files with 5 additions and 5 deletions

View file

@ -101,7 +101,7 @@ void Pet::RemoveFromWorld()
Unit::RemoveFromWorld(); Unit::RemoveFromWorld();
} }
bool Pet::LoadPetFromDB( Unit* owner, uint32 petentry, uint32 petnumber, bool current ) bool Pet::LoadPetFromDB( Player* owner, uint32 petentry, uint32 petnumber, bool current )
{ {
m_loading = true; m_loading = true;

View file

@ -133,7 +133,7 @@ class Pet : public Creature
bool Create (uint32 guidlow, Map *map, uint32 Entry, uint32 pet_number); bool Create (uint32 guidlow, Map *map, uint32 Entry, uint32 pet_number);
bool CreateBaseAtCreature(Creature* creature); bool CreateBaseAtCreature(Creature* creature);
bool LoadPetFromDB( Unit* owner,uint32 petentry = 0,uint32 petnumber = 0, bool current = false ); bool LoadPetFromDB( Player* owner,uint32 petentry = 0,uint32 petnumber = 0, bool current = false );
void SavePetToDB(PetSaveMode mode); void SavePetToDB(PetSaveMode mode);
void Remove(PetSaveMode mode, bool returnreagent = false); void Remove(PetSaveMode mode, bool returnreagent = false);
static void DeleteFromDB(uint32 guidlow); static void DeleteFromDB(uint32 guidlow);

View file

@ -3283,7 +3283,7 @@ void Spell::EffectSummon(uint32 i)
uint32 level = m_caster->getLevel(); uint32 level = m_caster->getLevel();
Pet* spawnCreature = new Pet(SUMMON_PET); Pet* spawnCreature = new Pet(SUMMON_PET);
if(spawnCreature->LoadPetFromDB(m_caster,pet_entry)) if(m_caster->GetTypeId()==TYPEID_PLAYER && spawnCreature->LoadPetFromDB((Player*)m_caster,pet_entry))
{ {
// set timer for unsummon // set timer for unsummon
int32 duration = GetSpellDuration(m_spellInfo); int32 duration = GetSpellDuration(m_spellInfo);
@ -4099,7 +4099,7 @@ void Spell::EffectSummonPet(uint32 i)
Pet* NewSummon = new Pet; Pet* NewSummon = new Pet;
// petentry==0 for hunter "call pet" (current pet summoned if any) // petentry==0 for hunter "call pet" (current pet summoned if any)
if(NewSummon->LoadPetFromDB(m_caster,petentry)) if(m_caster->GetTypeId() == TYPEID_PLAYER && NewSummon->LoadPetFromDB((Player*)m_caster,petentry))
{ {
if(NewSummon->getPetType()==SUMMON_PET) if(NewSummon->getPetType()==SUMMON_PET)
{ {

View file

@ -8419,7 +8419,7 @@ void Unit::Unmount()
if(GetTypeId() == TYPEID_PLAYER && IsInWorld() && ((Player*)this)->GetTemporaryUnsummonedPetNumber() && isAlive()) if(GetTypeId() == TYPEID_PLAYER && IsInWorld() && ((Player*)this)->GetTemporaryUnsummonedPetNumber() && isAlive())
{ {
Pet* NewPet = new Pet; Pet* NewPet = new Pet;
if(!NewPet->LoadPetFromDB(this, 0, ((Player*)this)->GetTemporaryUnsummonedPetNumber(), true)) if(!NewPet->LoadPetFromDB((Player*)this, 0, ((Player*)this)->GetTemporaryUnsummonedPetNumber(), true))
delete NewPet; delete NewPet;
((Player*)this)->SetTemporaryUnsummonedPetNumber(0); ((Player*)this)->SetTemporaryUnsummonedPetNumber(0);