public int CalcEffectValue(Unit caster, int value) { if (EffectValueOverrideEffect != null && caster.Spells.Contains(EffectValueOverrideEffect.Spell)) { return(EffectValueOverrideEffect.CalcEffectValue(caster, value)); } if (caster == null) { return(value); } if (APValueFactor != 0.0 || APPerComboPointValueFactor != 0.0) { float num1 = APValueFactor + APPerComboPointValueFactor * caster.ComboPoints; int num2 = Spell.IsRanged ? caster.TotalRangedAP : caster.TotalMeleeAP; value += (int)(num2 * (double)num1 + 0.5); } if (caster is Character && SpellPowerValuePct != 0) { value += (SpellPowerValuePct * caster.GetDamageDoneMod(Spell.Schools[0]) + 50) / 100; } SpellModifierType type; switch (EffectIndex) { case EffectIndex.Zero: type = SpellModifierType.EffectValue1; break; case EffectIndex.One: type = SpellModifierType.EffectValue2; break; case EffectIndex.Two: type = SpellModifierType.EffectValue3; break; default: type = SpellModifierType.EffectValue4AndBeyond; break; } value = caster.Auras.GetModifiedInt(type, Spell, value); value = caster.Auras.GetModifiedInt(SpellModifierType.AllEffectValues, Spell, value); return(value); }
public int CalcEffectValue() { if (m_cast.TriggerEffect != null && m_cast.TriggerEffect.OverrideEffectValue) { return(m_cast.TriggerEffect.CalcEffectValue(m_cast.CasterReference)); } return(Effect.CalcEffectValue(m_cast.CasterReference)); }
/// <summary> /// Trigger all spells that might be triggered by the given Spell /// </summary> /// <param name="spell"></param> internal void TriggerSpellsFor(SpellCast cast) { if (this.m_TargetTriggers == null) { return; } Spell spell = cast.Spell; for (int index = 0; index < this.m_TargetTriggers.Count; ++index) { AddTargetTriggerHandler targetTrigger = this.m_TargetTriggers[index]; SpellEffect spellEffect = targetTrigger.SpellEffect; int num; if (spellEffect.EffectType != SpellEffectType.TriggerSpellFromTargetWithCasterAsTarget && spell.SpellClassSet == spellEffect.Spell.SpellClassSet && spellEffect.MatchesSpell(spell) && (((num = spellEffect.CalcEffectValue(this.Owner)) >= 100 || Utility.Random(0, 101) <= num) && (spell != spellEffect.TriggerSpell && targetTrigger.Aura.CasterUnit != null))) { cast.Trigger(spellEffect.TriggerSpell, new WorldObject[0]); } } }