From ab3548e2e437d11b997674ba44676dcf90204626 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Wed, 2 Nov 2022 19:19:17 -0300 Subject: [PATCH] =?UTF-8?q?feat(Core/Scripting):=20Expand=20ModifyHealRece?= =?UTF-8?q?ived()=20to=20also=20include=20hea=E2=80=A6=20(#13655)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(Core/Scripting): Expand ModifyHealReceived() to also include healing over time --- src/server/game/Entities/Unit/Unit.cpp | 2 +- src/server/game/Scripting/ScriptDefines/UnitScript.cpp | 4 ++-- src/server/game/Scripting/ScriptMgr.h | 4 ++-- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 1 + 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index f97169a1c..4e2b52c19 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11183,7 +11183,7 @@ void Unit::SendHealSpellLog(Unit* victim, uint32 SpellID, uint32 Damage, uint32 int32 Unit::HealBySpell(HealInfo& healInfo, bool critical) { uint32 heal = healInfo.GetHeal(); - sScriptMgr->ModifyHealRecieved(this, healInfo.GetTarget(), heal); + sScriptMgr->ModifyHealReceived(this, healInfo.GetTarget(), heal, healInfo.GetSpellInfo()); healInfo.SetHeal(heal); // calculate heal absorb and reduce healing diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp index 538da43e9..fa30126ad 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp @@ -77,11 +77,11 @@ void ScriptMgr::ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& dama }); } -void ScriptMgr::ModifyHealRecieved(Unit* target, Unit* attacker, uint32& damage) +void ScriptMgr::ModifyHealReceived(Unit* target, Unit* healer, uint32& heal, SpellInfo const* spellInfo) { ExecuteScript([&](UnitScript* script) { - script->ModifyHealRecieved(target, attacker, damage); + script->ModifyHealReceived(target, healer, heal, spellInfo); }); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index c84a6dfae..ac6c9c4e8 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -431,7 +431,7 @@ public: virtual void ModifySpellDamageTaken(Unit* /*target*/, Unit* /*attacker*/, int32& /*damage*/) { } // Called when Heal is Recieved - virtual void ModifyHealRecieved(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { } + virtual void ModifyHealReceived(Unit* /*target*/, Unit* /*healer*/, uint32& /*heal*/, SpellInfo const* /*spellInfo*/) { } //Called when Damage is Dealt virtual uint32 DealDamage(Unit* /*AttackerUnit*/, Unit* /*pVictim*/, uint32 damage, DamageEffectType /*damagetype*/) { return damage; } @@ -2431,7 +2431,7 @@ public: /* UnitScript */ void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage); void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage); void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage); - void ModifyHealRecieved(Unit* target, Unit* attacker, uint32& addHealth); + void ModifyHealReceived(Unit* target, Unit* healer, uint32& addHealth, SpellInfo const* spellInfo); uint32 DealDamage(Unit* AttackerUnit, Unit* pVictim, uint32 damage, DamageEffectType damagetype); void OnBeforeRollMeleeOutcomeAgainst(Unit const* attacker, Unit const* victim, WeaponAttackType attType, int32& attackerMaxSkillValueForLevel, int32& victimMaxSkillValueForLevel, int32& attackerWeaponSkill, int32& victimDefenseSkill, int32& crit_chance, int32& miss_chance, int32& dodge_chance, int32& parry_chance, int32& block_chance); void OnAuraRemove(Unit* unit, AuraApplication* aurApp, AuraRemoveMode mode); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 94a6d72b6..1da935955 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -6619,6 +6619,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const // Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, heal); + sScriptMgr->ModifyHealReceived(target, caster, heal, GetSpellInfo()); HealInfo healInfo(caster, target, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); Unit::CalcHealAbsorb(healInfo);