internal bool IsAffectedBySpellModifier(Spell spell, SpellModifier modifier) { if (modifier.Aura.AuraInfo.UsesCharges && modifier.Aura.Charges == 0 && !spell.HasAppliedModifier(modifier.Aura)) { return(false); } return(!spell.SpellInfo.HasAttribute(SpellAttributes.IgnoreSpellModifiers)); }
internal void AddAppliedModifier(SpellModifier spellModifier) { appliedModifierAuras.Add(spellModifier.Aura); appliedModifiers.Add(spellModifier); unappliedModifiers.Remove(spellModifier); for (int i = 0; i < spellModifier.Aura.Effects.Count; i++) { if (spellModifier.Aura.Effects[i] is AuraEffectSpellModifier spellModifierEffect) { if (!appliedModifiers.Contains(spellModifierEffect.SpellModifier)) { unappliedModifiers.Add(spellModifierEffect.SpellModifier); } } } }
internal bool IsAffectedBySpellModifier(Spell spell, SpellModifier modifier) { if (modifier.Aura.AuraInfo.UsesCharges && modifier.Aura.Charges == 0 && !spell.HasAppliedModifier(modifier.Aura)) { return(false); } if (spell.SpellInfo.HasAttribute(SpellAttributes.IgnoreSpellModifiers)) { return(false); } for (int i = 0; i < modifier.AuraModifier.ApplicationConditions.Count; i++) { Condition applicationCondition = modifier.AuraModifier.ApplicationConditions[i]; if (applicationCondition.IsApplicableAndInvalid(spell.Caster, spell.ExplicitTargets.Target, spell)) { return(false); } } return(true); }
internal void HandleSpellModifier(SpellModifier modifier, bool apply) { spellModifiers.HandleEntry(modifier.Kind, modifier, apply); }