using DominionBase.Enums; using DominionBase.Players; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class Fear : Hex { public Fear() : base(Source.Nocturne, Traits.Discard) { } public override void Receive(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Receive(player); if (player.Hand.Count >= 5) { var availableToDiscard = player.Hand[c => c.Category.HasFlag(Categories.Action) || c.Category.HasFlag(Categories.Treasure)]; if (availableToDiscard.Any()) { var choice = new Choice("Choose a card to discard.", this, availableToDiscard, ChoiceOutcome.Discard, player); var result = player.MakeChoice(choice); player.Discard(DeckLocation.Hand, result.Cards); } else player.RevealHand(); } } } }