From 2ef8d2e1e21e4c3b40850ae9513a316024cf649d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 12 Sep 2022 03:01:53 +0200 Subject: [PATCH] fix(Core/Spells): Revive Pet cannot be cast if there is not pet to resurrect (#12818) - Closes #12776 --- src/server/game/Spells/Spell.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 96c554a5d..145955832 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6336,11 +6336,26 @@ SpellCastResult Spell::CheckCast(bool strict) { Unit* unitCaster = m_caster->ToUnit(); if (!unitCaster) + { return SPELL_FAILED_BAD_TARGETS; + } Creature* pet = unitCaster->GetGuardianPet(); - if (pet && pet->IsAlive()) - return SPELL_FAILED_ALREADY_HAVE_SUMMON; + if (pet) + { + if (pet->IsAlive()) + { + return SPELL_FAILED_ALREADY_HAVE_SUMMON; + } + } + else if (Player* playerCaster = m_caster->ToPlayer()) + { + PetStable& petStable = playerCaster->GetOrInitPetStable(); + if (!petStable.CurrentPet && petStable.UnslottedPets.empty()) + { + return SPELL_FAILED_NO_PET; + } + } break; }