[9647] Fix current pet save in summoned state.

Thanks to hunuza for explcit bug line pointing ;)
This commit is contained in:
VladimirMangos 2010-03-31 02:02:21 +04:00
parent f9f21b5f7f
commit 47878ab6aa
2 changed files with 10 additions and 9 deletions

View file

@ -17026,17 +17026,17 @@ void Player::UpdateDuelFlag(time_t currTime)
void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent) void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
{ {
if(!pet) if (!pet)
pet = GetPet(); pet = GetPet();
if(!pet || pet->GetOwnerGUID()!=GetGUID()) if (!pet || pet->GetOwnerGUID() != GetGUID())
return; return;
// not save secondary permanent pet as current // not save secondary permanent pet as current
if (pet && m_temporaryUnsummonedPetNumber != pet->GetCharmInfo()->GetPetNumber() && mode == PET_SAVE_AS_CURRENT) if (pet && m_temporaryUnsummonedPetNumber && m_temporaryUnsummonedPetNumber != pet->GetCharmInfo()->GetPetNumber() && mode == PET_SAVE_AS_CURRENT)
mode = PET_SAVE_NOT_IN_SLOT; mode = PET_SAVE_NOT_IN_SLOT;
if(returnreagent && pet && mode != PET_SAVE_AS_CURRENT) if (returnreagent && pet && mode != PET_SAVE_AS_CURRENT)
{ {
//returning of reagents only for players, so best done here //returning of reagents only for players, so best done here
uint32 spellId = pet ? pet->GetUInt32Value(UNIT_CREATED_BY_SPELL) : m_oldpetspell; uint32 spellId = pet ? pet->GetUInt32Value(UNIT_CREATED_BY_SPELL) : m_oldpetspell;
@ -17071,7 +17071,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
RemoveGuardian(pet); RemoveGuardian(pet);
break; break;
default: default:
if(GetPetGUID() == pet->GetGUID()) if (GetPetGUID() == pet->GetGUID())
SetPet(NULL); SetPet(NULL);
break; break;
} }
@ -17083,7 +17083,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
pet->AddObjectToRemoveList(); pet->AddObjectToRemoveList();
pet->m_removed = true; pet->m_removed = true;
if(pet->isControlled()) if (pet->isControlled())
{ {
RemovePetActionBar(); RemovePetActionBar();
@ -17094,7 +17094,7 @@ void Player::RemovePet(Pet* pet, PetSaveMode mode, bool returnreagent)
void Player::RemoveMiniPet() void Player::RemoveMiniPet()
{ {
if(Pet* pet = GetMiniPet()) if (Pet* pet = GetMiniPet())
{ {
pet->Remove(PET_SAVE_AS_DELETED); pet->Remove(PET_SAVE_AS_DELETED);
m_miniPet = 0; m_miniPet = 0;
@ -17103,8 +17103,9 @@ void Player::RemoveMiniPet()
Pet* Player::GetMiniPet() Pet* Player::GetMiniPet()
{ {
if(!m_miniPet) if (!m_miniPet)
return NULL; return NULL;
return GetMap()->GetPet(m_miniPet); return GetMap()->GetPet(m_miniPet);
} }

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "9646" #define REVISION_NR "9647"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__