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));
            }
Пример #2
0
        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);
                    }
                }
            }
        }
Пример #3
0
            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);
            }
Пример #4
0
 internal void HandleSpellModifier(SpellModifier modifier, bool apply)
 {
     spellModifiers.HandleEntry(modifier.Kind, modifier, apply);
 }