diff options
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index c6013ea0e68..95fd1f1a61d 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -5999,32 +5999,34 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (playerCaster && playerCaster->GetPetStable()) { std::pair<PetStable::PetInfo const*, PetSaveMode> info = Pet::GetLoadPetInfo(*playerCaster->GetPetStable(), spellEffectInfo.MiscValue, 0, false); - if (!info.first) + if (info.first) { - playerCaster->SendTameFailure(PetTameResult::NoPetAvailable); - return SPELL_FAILED_DONT_REPORT; - } - - if (info.first->Type == HUNTER_PET) - { - if (!info.first->Health) + if (info.first->Type == HUNTER_PET) { - playerCaster->SendTameFailure(PetTameResult::Dead); - return SPELL_FAILED_DONT_REPORT; - } + if (!info.first->Health) + { + playerCaster->SendTameFailure(PetTameResult::Dead); + return SPELL_FAILED_DONT_REPORT; + } - CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(info.first->CreatureId); - if (!creatureInfo || !creatureInfo->IsTameable(playerCaster->CanTameExoticPets())) - { - // if problem in exotic pet - if (creatureInfo && creatureInfo->IsTameable(true)) - playerCaster->SendTameFailure(PetTameResult::CantControlExotic); - else - playerCaster->SendTameFailure(PetTameResult::NoPetAvailable); + CreatureTemplate const* creatureInfo = sObjectMgr->GetCreatureTemplate(info.first->CreatureId); + if (!creatureInfo || !creatureInfo->IsTameable(playerCaster->CanTameExoticPets())) + { + // if problem in exotic pet + if (creatureInfo && creatureInfo->IsTameable(true)) + playerCaster->SendTameFailure(PetTameResult::CantControlExotic); + else + playerCaster->SendTameFailure(PetTameResult::NoPetAvailable); - return SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_DONT_REPORT; + } } } + else if (!spellEffectInfo.MiscValue) // when miscvalue is present it is allowed to create new pets + { + playerCaster->SendTameFailure(PetTameResult::NoPetAvailable); + return SPELL_FAILED_DONT_REPORT; + } } break; |