Scripts/Spells: Converted some damage calculating scripts to use new hooks as examples
Port From (https://github.com/TrinityCore/TrinityCore/commit/8594fcfe8a0085a087bce510e3b4cb14f632434f)
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user