From f89df8dca875e87cf65930d983d72e9ace89a5b4 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 13 Sep 2023 18:23:20 -0400 Subject: [PATCH] Scripts/Spells: Converted some damage calculating scripts to use new hooks as examples Port From (https://github.com/TrinityCore/TrinityCore/commit/8594fcfe8a0085a087bce510e3b4cb14f632434f) --- Source/Scripts/Spells/Azerite.cs | 6 +++--- Source/Scripts/Spells/Generic.cs | 14 +++----------- Source/Scripts/Spells/Priest.cs | 28 ++++++---------------------- 3 files changed, 12 insertions(+), 36 deletions(-) diff --git a/Source/Scripts/Spells/Azerite.cs b/Source/Scripts/Spells/Azerite.cs index 0c4061fc9..dc6652473 100644 --- a/Source/Scripts/Spells/Azerite.cs +++ b/Source/Scripts/Spells/Azerite.cs @@ -423,11 +423,11 @@ namespace Scripts.Spells.Azerite && ValidateSpellEffect(SpellIds.EchoingBladesTrait, 2); } - void CalculateDamage(uint effIndex) + void CalculateDamage(Unit victim, ref int damage, ref int flatMod, ref float pctMod) { AuraEffect trait = GetCaster().GetAuraEffect(SpellIds.EchoingBladesTrait, 2); if (trait != null) - SetHitDamage(trait.GetAmount() * 2); + damage = trait.GetAmount() * 2; } void ForceCritical(Unit victim, ref float critChance) @@ -437,7 +437,7 @@ namespace Scripts.Spells.Azerite public override void Register() { - OnEffectLaunchTarget.Add(new EffectHandler(CalculateDamage, 0, SpellEffectName.SchoolDamage)); + CalcDamage.Add(new DamageAndHealingCalcHandler(CalculateDamage)); OnCalcCritChance.Add(new OnCalcCritChanceHandler(ForceCritical)); } } diff --git a/Source/Scripts/Spells/Generic.cs b/Source/Scripts/Spells/Generic.cs index 1e32f338e..e713c56dc 100644 --- a/Source/Scripts/Spells/Generic.cs +++ b/Source/Scripts/Spells/Generic.cs @@ -1398,24 +1398,16 @@ namespace Scripts.Spells.Generic [Script] // 64208 - Consumption class spell_gen_consumption : SpellScript { - void HandleDamageCalc(uint effIndex) + void CalculateDamage(Unit victim, ref int damage, ref int flatMod, ref float pctMod) { - Creature caster = GetCaster().ToCreature(); - if (caster == null) - return; - - int damage = 0; - SpellInfo createdBySpell = Global.SpellMgr.GetSpellInfo(caster.m_unitData.CreatedBySpell, GetCastDifficulty()); + SpellInfo createdBySpell = Global.SpellMgr.GetSpellInfo(GetCaster().m_unitData.CreatedBySpell, GetCastDifficulty()); if (createdBySpell != null) damage = createdBySpell.GetEffect(2).CalcValue(); - - if (damage != 0) - SetEffectValue(damage); } public override void Register() { - OnEffectLaunchTarget.Add(new EffectHandler(HandleDamageCalc, 0, SpellEffectName.SchoolDamage)); + CalcDamage.Add(new DamageAndHealingCalcHandler(CalculateDamage)); } } diff --git a/Source/Scripts/Spells/Priest.cs b/Source/Scripts/Spells/Priest.cs index 5c2009a2f..e9d9700f9 100644 --- a/Source/Scripts/Spells/Priest.cs +++ b/Source/Scripts/Spells/Priest.cs @@ -935,24 +935,16 @@ namespace Scripts.Spells.Priest return ValidateSpellInfo(SpellIds.PowerOfTheDarkSide); } - void HandleLaunchTarget(uint effIndex) + void CalculateDamageBonus(Unit victim, ref int damage, ref int flatMod, ref float pctMod) { AuraEffect powerOfTheDarkSide = GetCaster().GetAuraEffect(SpellIds.PowerOfTheDarkSide, 0); if (powerOfTheDarkSide != null) - { - PreventHitDefaultEffect(effIndex); - - float damageBonus = GetCaster().SpellDamageBonusDone(GetHitUnit(), GetSpellInfo(), GetEffectValue(), DamageEffectType.SpellDirect, GetEffectInfo()); - float value = damageBonus + damageBonus * GetEffectVariance(); - value *= 1.0f + (powerOfTheDarkSide.GetAmount() / 100.0f); - value = GetHitUnit().SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), (int)value, DamageEffectType.SpellDirect); - SetHitDamage((int)value); - } + MathFunctions.AddPct(ref pctMod, powerOfTheDarkSide.GetAmount()); } public override void Register() { - OnEffectLaunchTarget.Add(new EffectHandler(HandleLaunchTarget, 0, SpellEffectName.SchoolDamage)); + CalcDamage.Add(new DamageAndHealingCalcHandler(CalculateDamageBonus)); } } @@ -965,24 +957,16 @@ namespace Scripts.Spells.Priest return ValidateSpellInfo(SpellIds.PowerOfTheDarkSide); } - void HandleLaunchTarget(uint effIndex) + void CalculateHealingBonus(Unit victim, ref int damage, ref int flatMod, ref float pctMod) { AuraEffect powerOfTheDarkSide = GetCaster().GetAuraEffect(SpellIds.PowerOfTheDarkSide, 0); if (powerOfTheDarkSide != null) - { - PreventHitDefaultEffect(effIndex); - - float healingBonus = GetCaster().SpellHealingBonusDone(GetHitUnit(), GetSpellInfo(), GetEffectValue(), DamageEffectType.Heal, GetEffectInfo()); - float value = healingBonus + healingBonus * GetEffectVariance(); - value *= 1.0f + (powerOfTheDarkSide.GetAmount() / 100.0f); - value = GetHitUnit().SpellHealingBonusTaken(GetCaster(), GetSpellInfo(), (int)value, DamageEffectType.Heal); - SetHitHeal((int)value); - } + MathFunctions.AddPct(ref pctMod, powerOfTheDarkSide.GetAmount()); } public override void Register() { - OnEffectLaunchTarget.Add(new EffectHandler(HandleLaunchTarget, 0, SpellEffectName.Heal)); + CalcHealing.Add(new DamageAndHealingCalcHandler(CalculateHealingBonus)); } }