public bool CanChooseSpecialAbility(SpecialAbility[] list) { if (!Creature.Controlled) { return(true); } if (HasSpecialMagicalAbility() && list.Any(abil => IsRuleBreaker(abil)) && (AreaEffects == null || AreaEffects.Length == 0) && (SpecialAbilities == null || SpecialAbilities.Length == 0 || SpecialAbilities.All(a => a.NaturalAbility))) { return(true); } return(!HasSpecialMagicalAbility() && (SpecialAbilities == null || SpecialAbilities.Where(a => !a.NaturalAbility).Count() == 0) && AbilityCount() < 3); }