feat(Core/Scripting): Pass SpellInfo through the ModifyPeriodicDamage… (#14360)

feat(Core/Scripting): Pass SpellInfo through the ModifyPeriodicDamageAurasTick() hook
This commit is contained in:
Skjalf
2022-12-24 11:38:21 -03:00
committed by GitHub
parent e7f9f1ef72
commit a73d4173df
3 changed files with 7 additions and 7 deletions
@@ -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>([&](UnitScript* script) ExecuteScript<UnitScript>([&](UnitScript* script)
{ {
script->ModifyPeriodicDamageAurasTick(target, attacker, damage); script->ModifyPeriodicDamageAurasTick(target, attacker, damage, spellInfo);
}); });
} }
+2 -2
View File
@@ -422,7 +422,7 @@ public:
// Called when DoT's Tick Damage is being Dealt // Called when DoT's Tick Damage is being Dealt
// Attacker can be nullptr if he is despawned while the aura still exists on target // 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 // Called when Melee Damage is being Dealt
virtual void ModifyMeleeDamage(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { } virtual void ModifyMeleeDamage(Unit* /*target*/, Unit* /*attacker*/, uint32& /*damage*/) { }
@@ -2437,7 +2437,7 @@ public: /* Scheduled scripts */
public: /* UnitScript */ public: /* UnitScript */
void OnHeal(Unit* healer, Unit* reciever, uint32& gain); void OnHeal(Unit* healer, Unit* reciever, uint32& gain);
void OnDamage(Unit* attacker, Unit* victim, uint32& damage); 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 ModifyMeleeDamage(Unit* target, Unit* attacker, uint32& damage);
void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage, SpellInfo const* spellInfo); void ModifySpellDamageTaken(Unit* target, Unit* attacker, int32& damage, SpellInfo const* spellInfo);
void ModifyHealReceived(Unit* target, Unit* healer, uint32& addHealth, SpellInfo const* spellInfo); void ModifyHealReceived(Unit* target, Unit* healer, uint32& addHealth, SpellInfo const* spellInfo);
@@ -6298,7 +6298,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
uint32 damage = std::max(GetAmount(), 0); uint32 damage = std::max(GetAmount(), 0);
// Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations // 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) if (GetAuraType() == SPELL_AURA_PERIODIC_DAMAGE)
{ {
@@ -6410,7 +6410,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
uint32 damage = std::max(GetAmount(), 0); uint32 damage = std::max(GetAmount(), 0);
// Script Hook For HandlePeriodicHealthLeechAurasTick -- Allow scripts to change the Damage pre class mitigation calculations // 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) if (GetBase()->GetType() == DYNOBJ_AURA_TYPE)
damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount()); 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); uint32 heal = uint32(damage);
// Script Hook For HandlePeriodicDamageAurasTick -- Allow scripts to change the Damage pre class mitigation calculations // 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()); sScriptMgr->ModifyHealReceived(target, caster, heal, GetSpellInfo());
HealInfo healInfo(caster, target, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask()); HealInfo healInfo(caster, target, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask());