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); }