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 | |
parent | 2c74626e66e5fd88683348f37f4b30ab397bf55b (diff) |
Core/Spells: Fixed Revive Pet not being usable if pet corpse is still in world
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 24 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 |
2 files changed, 15 insertions, 11 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; } diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 32de2d2f393..10e2d052c69 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4244,7 +4244,7 @@ void Spell::EffectResurrectPet() if (!player->GetPet()) { PetStable const* petStable = player->GetPetStable(); - auto deadPetItr = std::find_if(petStable->ActivePets.begin(), petStable->ActivePets.end(), [](Optional<PetStable::PetInfo> const& petInfo) + auto deadPetItr = std::ranges::find_if(petStable->ActivePets, [](Optional<PetStable::PetInfo> const& petInfo) { return petInfo && !petInfo->Health; }); |