コード例 #1
0
        public bool WillTrigger(SpellTriggerActivationInfo activationInfo)
        {
            if (activationInfo.Spell.IsTriggered)
            {
                return(false);
            }

            if (Aura.AuraInfo.UsesCharges && Aura.Charges < 1)
            {
                return(false);
            }

            if (!activationInfo.Actor.SpellHistory.IsReady(EffectInfo.TriggeredSpell))
            {
                return(false);
            }

            if (!EffectInfo.TriggerFlags.HasAnyFlag(activationInfo.SpellTriggerFlags))
            {
                return(false);
            }

            for (int i = 0; i < EffectInfo.TriggerConditions.Count; i++)
            {
                if (EffectInfo.TriggerConditions[i].IsApplicableAndInvalid(activationInfo.Actor, activationInfo.ActionTarget, activationInfo.Spell))
                {
                    return(false);
                }
            }

            return(RandomUtils.CheckSuccess(EffectInfo.Chance));
        }