internal void EffectSchoolDamage(EffectSchoolDamage effect, int effectIndex, Unit target, SpellEffectHandleMode mode) { if (mode != SpellEffectHandleMode.HitStart || target == null || !target.IsAlive) { return; } float spellDamage = effect.CalculateSpellDamage(SpellInfo, effectIndex, Caster, target); if (SpellInfo.HasAttribute(SpellCustomAttributes.ShareDamage)) { spellDamage /= Mathf.Min(1, ImplicitTargets.TargetCountForEffect(effectIndex)); } for (var i = 0; i < effect.ConditionalModifiers.Count; i++) { ConditionalModifier modifier = effect.ConditionalModifiers[i]; if (modifier.Condition.With(Caster, target, this).IsApplicableAndValid) { modifier.Modify(ref spellDamage); } } EffectDamage += (int)spellDamage; }
internal void EffectHeal(EffectHeal effect, int effectIndex, Unit target, SpellEffectHandleMode mode) { if (mode != SpellEffectHandleMode.HitStart || !target.IsAlive) { return; } float spellHealAmount = effect.CalculateSpellHeal(SpellInfo, effectIndex, Caster, target); for (var i = 0; i < effect.ConditionalModifiers.Count; i++) { ConditionalModifier modifier = effect.ConditionalModifiers[i]; if (modifier.Condition.With(Caster, target, this).IsApplicableAndValid) { modifier.Modify(ref spellHealAmount); } } EffectHealing += (int)spellHealAmount; }