diff options
| author | Shauren <shauren.trinity@gmail.com> | 2025-07-09 16:01:34 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-07-09 16:01:34 +0200 |
| commit | 6daf472e8131fdb9993a87483106af513e0ec398 (patch) | |
| tree | d4ed5bfdfe2c1122157badbec5e61d2a976a6b55 /src/server/game/Spells/Spell.cpp | |
| parent | 2c74626e66e5fd88683348f37f4b30ab397bf55b (diff) | |
Core/Spells: Fixed Revive Pet not being usable if pet corpse is still in world
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 1d816bf9f85..07f0bf1c20a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -6464,18 +6464,22 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (!playerCaster || !playerCaster->GetPetStable()) return SPELL_FAILED_BAD_TARGETS; - Pet* pet = playerCaster->GetPet(); - if (pet && pet->IsAlive()) - return SPELL_FAILED_ALREADY_HAVE_SUMMON; - - PetStable const* petStable = playerCaster->GetPetStable(); - auto deadPetItr = std::find_if(petStable->ActivePets.begin(), petStable->ActivePets.end(), [](Optional<PetStable::PetInfo> const& petInfo) + if (Pet* pet = playerCaster->GetPet()) { - return petInfo && !petInfo->Health; - }); + if (pet->IsAlive()) + return SPELL_FAILED_ALREADY_HAVE_SUMMON; + } + else + { + PetStable const* petStable = playerCaster->GetPetStable(); + auto deadPetItr = std::ranges::find_if(petStable->ActivePets, [](Optional<PetStable::PetInfo> const& petInfo) + { + return petInfo && !petInfo->Health; + }); - if (deadPetItr == petStable->ActivePets.end()) - return SPELL_FAILED_BAD_TARGETS; + if (deadPetItr == petStable->ActivePets.end()) + return SPELL_FAILED_BAD_TARGETS; + } break; } |
