mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-23 21:56:22 +00:00
fix(Core/Pets): fix crash at pet resurrect (#10120)
This commit is contained in:
@@ -342,24 +342,6 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
|
||||
SetReactState(petInfo->ReactState);
|
||||
SetCanModifyStats(true);
|
||||
|
||||
if (getPetType() == SUMMON_PET && !current) //all (?) summon pets come with full health when called, but not when they are current
|
||||
{
|
||||
SetPower(POWER_MANA, GetMaxPower(POWER_MANA));
|
||||
//SetHealth(GetMaxHealth());
|
||||
}
|
||||
else
|
||||
{
|
||||
uint32 savedhealth = petInfo->Health;
|
||||
uint32 savedmana = petInfo->Mana;
|
||||
if (!savedhealth && getPetType() == HUNTER_PET)
|
||||
setDeathState(JUST_DIED);
|
||||
else
|
||||
{
|
||||
SetHealth(savedhealth > GetMaxHealth() ? GetMaxHealth() : savedhealth);
|
||||
SetPower(POWER_MANA, savedmana > GetMaxPower(POWER_MANA) ? GetMaxPower(POWER_MANA) : savedmana);
|
||||
}
|
||||
}
|
||||
|
||||
// set current pet as current
|
||||
// 0=current
|
||||
// 1..MAX_PET_STABLES in stable slot
|
||||
@@ -426,7 +408,8 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
|
||||
owner->ToPlayer()->SetLastPetNumber(petInfo->PetNumber);
|
||||
|
||||
owner->GetSession()->AddQueryHolderCallback(CharacterDatabase.DelayQueryHolder(std::make_shared<PetLoadQueryHolder>(ownerid, petInfo->PetNumber)))
|
||||
.AfterComplete([this, owner, session = owner->GetSession(), isTemporarySummon, current, lastSaveTime = petInfo->LastSaveTime](SQLQueryHolderBase const& holder)
|
||||
.AfterComplete([this, owner, session = owner->GetSession(), isTemporarySummon, current, lastSaveTime = petInfo->LastSaveTime, savedhealth = petInfo->Health, savedmana = petInfo->Mana]
|
||||
(SQLQueryHolderBase const& holder)
|
||||
{
|
||||
if (session->GetPlayer() != owner || owner->GetPet() != this)
|
||||
return;
|
||||
@@ -475,6 +458,22 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
|
||||
}
|
||||
}
|
||||
|
||||
if (getPetType() == SUMMON_PET && !current) //all (?) summon pets come with full health when called, but not when they are current
|
||||
{
|
||||
SetPower(POWER_MANA, GetMaxPower(POWER_MANA));
|
||||
SetFullHealth();
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!savedhealth && getPetType() == HUNTER_PET)
|
||||
setDeathState(JUST_DIED);
|
||||
else
|
||||
{
|
||||
SetHealth(savedhealth > GetMaxHealth() ? GetMaxHealth() : savedhealth);
|
||||
SetPower(POWER_MANA, savedmana > GetMaxPower(POWER_MANA) ? GetMaxPower(POWER_MANA) : savedmana);
|
||||
}
|
||||
}
|
||||
|
||||
// must be after SetMinion (owner guid check)
|
||||
//LoadTemplateImmunities();
|
||||
//LoadMechanicTemplateImmunity();
|
||||
|
||||
Reference in New Issue
Block a user