示例#1
0
    public Attack ApplyBuffs()
    {
        IEnumerable <IAttackModifier> attackModifiers =
            (attacker?.buffs?.Where(b => b is IAttackModifier) ?? CollectionExtensions.Empty <Buff>())
            .Concat(victim?.buffs?.Where(b => b is IAttackModifier) ?? CollectionExtensions.Empty <Buff>())
            .Cast <IAttackModifier>()
            .Unique();

        foreach (var am in attackModifiers.OrderBy(am => am.Priority))
        {
            am.ModifyAttack(this);
            if (interrupted)
            {
                break;
            }
        }
        return(this);
    }