From 5a53ca6560d2399614fd6851ab1c329d16266086 Mon Sep 17 00:00:00 2001 From: blinkysc <37940565+blinkysc@users.noreply.github.com> Date: Sun, 22 Feb 2026 18:28:31 -0600 Subject: [PATCH] fix(Core/Spells): Fix Prayer of Mending not bouncing to full-HP members (#24815) Co-authored-by: blinkysc --- src/server/game/Grids/Notifiers/GridNotifiers.h | 2 +- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index afb6b71bb..400fc6fdb 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -1539,7 +1539,7 @@ namespace Acore return false; } - if (u->IsAlive() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() > i_hp) + if (u->IsAlive() && !i_obj->IsHostileTo(u) && i_obj->IsWithinDistInMap(u, i_range) && u->GetMaxHealth() - u->GetHealth() >= i_hp) { i_hp = u->GetMaxHealth() - u->GetHealth(); return true; diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 775aab3d5..77250413f 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -7365,6 +7365,12 @@ void AuraEffect::HandleRaidProcFromChargeAuraProc(AuraApplication* aurApp, ProcE void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurApp, ProcEventInfo& /*eventInfo*/) { + enum + { + SPELL_PRAYER_OF_MENDING_HEAL = 33110, + SPELL_PRAYER_OF_MENDING_VISUAL = 41637 + }; + Unit* target = aurApp->GetTarget(); // Currently only Prayer of Mending @@ -7373,7 +7379,6 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA LOG_DEBUG("spells.aura", "AuraEffect::HandleRaidProcFromChargeWithValueAuraProc: received not handled spell: {}", GetId()); return; } - uint32 triggerSpellId = 33110; int32 value = GetAmount(); @@ -7397,6 +7402,7 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA if (triggerTarget) { + target->CastSpell(triggerTarget, SPELL_PRAYER_OF_MENDING_VISUAL, true); target->CastCustomSpell(triggerTarget, GetId(), &value, nullptr, nullptr, true, nullptr, this, GetCasterGUID()); if (Aura* aura = triggerTarget->GetAura(GetId(), GetCasterGUID())) aura->SetCharges(jumps); @@ -7404,8 +7410,7 @@ void AuraEffect::HandleRaidProcFromChargeWithValueAuraProc(AuraApplication* aurA } } - LOG_DEBUG("spells.aura", "AuraEffect::HandleRaidProcFromChargeWithValueAuraProc: Triggering spell {} from aura {} proc", triggerSpellId, GetId()); - target->CastCustomSpell(target, triggerSpellId, &value, nullptr, nullptr, true, nullptr, this, GetCasterGUID()); + target->CastCustomSpell(target, SPELL_PRAYER_OF_MENDING_HEAL, &value, nullptr, nullptr, true, nullptr, this, GetCasterGUID()); } int32 AuraEffect::GetTotalTicks() const