mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-10 06:01:27 +00:00
fix(Core/Pets): fix crash at pet resurrect (#10120)
This commit is contained in:
@@ -1157,10 +1157,10 @@ public:
|
||||
|
||||
Player* player = handler->GetSession()->GetPlayer();
|
||||
|
||||
if (player->GetPetGUID())
|
||||
if (player->IsExistPet())
|
||||
{
|
||||
handler->SendSysMessage (LANG_YOU_ALREADY_HAVE_PET);
|
||||
handler->SetSentErrorMessage (true);
|
||||
handler->SendSysMessage(LANG_YOU_ALREADY_HAVE_PET);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1168,46 +1168,18 @@ public:
|
||||
|
||||
if (!cInfo->IsTameable(player->CanTameExoticPets()))
|
||||
{
|
||||
handler->PSendSysMessage (LANG_CREATURE_NON_TAMEABLE, cInfo->Entry);
|
||||
handler->PSendSysMessage(LANG_CREATURE_NON_TAMEABLE, cInfo->Entry);
|
||||
handler->SetSentErrorMessage (true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Everything looks OK, create new pet
|
||||
Pet* pet = player->CreateTamedPetFrom(creatureTarget);
|
||||
if (!pet)
|
||||
if (!player->CreatePet(creatureTarget))
|
||||
{
|
||||
handler->PSendSysMessage (LANG_CREATURE_NON_TAMEABLE, cInfo->Entry);
|
||||
handler->SetSentErrorMessage (true);
|
||||
handler->PSendSysMessage(LANG_CREATURE_NON_TAMEABLE, cInfo->Entry);
|
||||
handler->SetSentErrorMessage(true);
|
||||
return false;
|
||||
}
|
||||
|
||||
// place pet before player
|
||||
float x, y, z;
|
||||
player->GetClosePoint (x, y, z, creatureTarget->GetObjectSize(), CONTACT_DISTANCE);
|
||||
pet->Relocate(x, y, z, M_PI - player->GetOrientation());
|
||||
|
||||
// set pet to defensive mode by default (some classes can't control controlled pets in fact).
|
||||
pet->SetReactState(REACT_DEFENSIVE);
|
||||
|
||||
// calculate proper level
|
||||
uint8 level = (creatureTarget->getLevel() < (player->getLevel() - 5)) ? (player->getLevel() - 5) : creatureTarget->getLevel();
|
||||
|
||||
// prepare visual effect for levelup
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, level - 1);
|
||||
|
||||
// add to world
|
||||
pet->GetMap()->AddToMap(pet->ToCreature());
|
||||
|
||||
// visual effect for levelup
|
||||
pet->SetUInt32Value(UNIT_FIELD_LEVEL, level);
|
||||
|
||||
// caster have pet now
|
||||
player->SetMinion(pet, true);
|
||||
|
||||
pet->SavePetToDB(PET_SAVE_AS_CURRENT);
|
||||
player->PetSpellInitialize();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user