From 0afc258a6b5b1c9ca55f85b253cf247c88bbfc22 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Tue, 10 Jun 2025 02:25:33 +0000 Subject: [PATCH] fix(Core/Spell): Halve healing threat generated by paladins (#22271) --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 14 +++++++++++--- src/server/game/Spells/Spell.cpp | 6 +++++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 1c7e15fd8..740e51877 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -6852,8 +6852,10 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c heal = uint32(caster->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT, GetBase()->GetStackAmount())); HealInfo healInfo(caster, caster, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); - int32 gain = caster->HealBySpell(healInfo); - caster->getHostileRefMgr().threatAssist(caster, gain * 0.5f, GetSpellInfo()); + float threat = float(caster->HealBySpell(healInfo)) * 0.5f; + if (caster->IsClass(CLASS_PALADIN)) + threat *= 0.5f; + caster->getHostileRefMgr().threatAssist(caster, threat, GetSpellInfo()); } void AuraEffect::HandlePeriodicHealthFunnelAuraTick(Unit* target, Unit* caster) const @@ -7000,7 +7002,13 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const target->SendPeriodicAuraLog(&pInfo); if (caster) - target->getHostileRefMgr().threatAssist(caster, float(gain) * 0.5f, GetSpellInfo()); + { + float threat = float(gain) * 0.5f; + if (caster->IsClass(CLASS_PALADIN)) + threat *= 0.5f; + + target->getHostileRefMgr().threatAssist(caster, threat, GetSpellInfo()); + } bool haveCastItem = GetBase()->GetCastItemGUID(); diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index bc531a08f..25505c3c4 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -2808,7 +2808,11 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target) } int32 gain = caster->HealBySpell(healInfo, crit); - unitTarget->getHostileRefMgr().threatAssist(caster, float(gain) * 0.5f, m_spellInfo); + float threat = float(gain) * 0.5f; + if (caster->IsClass(CLASS_PALADIN)) + threat *= 0.5f; + + unitTarget->getHostileRefMgr().threatAssist(caster, threat, m_spellInfo); m_healing = gain; // Xinef: if heal acutally healed something, add no overheal flag