From a73d4173dfab04de9f58a9768c97f31caf5f81ea Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 24 Dec 2022 11:38:21 -0300 Subject: [PATCH] =?UTF-8?q?feat(Core/Scripting):=20Pass=20SpellInfo=20thro?= =?UTF-8?q?ugh=20the=20ModifyPeriodicDamage=E2=80=A6=20(#14360)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit feat(Core/Scripting): Pass SpellInfo through the ModifyPeriodicDamageAurasTick() hook --- src/server/game/Scripting/ScriptDefines/UnitScript.cpp | 4 ++-- src/server/game/Scripting/ScriptMgr.h | 4 ++-- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp index dd5f20709..5d66f7a88 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp @@ -53,11 +53,11 @@ void ScriptMgr::OnDamage(Unit* attacker, Unit* victim, uint32& damage) }); } -void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage) +void ScriptMgr::ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage, SpellInfo const* spellInfo) { ExecuteScript([&](UnitScript* script) { - script->ModifyPeriodicDamageAurasTick(target, attacker, damage); + script->ModifyPeriodicDamageAurasTick(target, attacker, damage, spellInfo); }); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 8e3545bd3..8c30b28d8 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -422,7 +422,7 @@ public: // Called when DoT's Tick Damage is being Dealt // Attacker can be nullptr if he is despawned while the aura still exists on target - virtual void ModifyPeriodicDamageAurasTick(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { } + virtual void ModifyPeriodicDamageAurasTick(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/, SpellInfo const* /*spellInfo*/) { } // Called when Melee Damage is being Dealt virtual void ModifyMeleeDamage(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { } @@ -2437,7 +2437,7 @@ public: /* Scheduled scripts */ public: /* UnitScript */ void OnHeal(Unit* healer, Unit* reciever, uint32& gain); void OnDamage(Unit* attacker, Unit* victim, uint32& damage); - void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage); + void ModifyPeriodicDamageAurasTick(Unit* target, Unit* attacker, uint32& damage, SpellInfo const* spellInfo); void ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage); void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage, SpellInfo const* spellInfo); void ModifyHealReceived(Unit* target, Unit* healer, uint32& addHealth, SpellInfo const* spellInfo); diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 997e7e5bf..cfe37f4e8 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -6298,7 +6298,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const uint32 damage = std::max(GetAmount(), 0); // Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations - sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage); + sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage, GetSpellInfo()); if (GetAuraType() == SPELL_AURA_PERIODIC_DAMAGE) { @@ -6410,7 +6410,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c uint32 damage = std::max(GetAmount(), 0); // Script Hook For HandlePeriodicHealthLeechAurasTick -- Allow scripts to change the Damage pre class mitigation calculations - sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage); + sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage, GetSpellInfo()); if (GetBase()->GetType() == DYNOBJ_AURA_TYPE) damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount()); @@ -6618,7 +6618,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const uint32 heal = uint32(damage); // Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations - sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, heal); + sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, heal, GetSpellInfo()); sScriptMgr->ModifyHealReceived(target, caster, heal, GetSpellInfo()); HealInfo healInfo(caster, target, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask());