aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2025-07-09 16:01:34 +0200
committerShauren <shauren.trinity@gmail.com>2025-07-09 16:01:34 +0200
commit6daf472e8131fdb9993a87483106af513e0ec398 (patch)
treed4ed5bfdfe2c1122157badbec5e61d2a976a6b55
parent2c74626e66e5fd88683348f37f4b30ab397bf55b (diff)
Core/Spells: Fixed Revive Pet not being usable if pet corpse is still in world
-rw-r--r--src/server/game/Spells/Spell.cpp24
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
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;
});