using DominionBase.Enums; using DominionBase.Players; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class Pooka : Card { public Pooka() : base(Categories.Action, Source.Nocturne, Location.Kingdom, Traits.ConditionalBenefit | Traits.NetCardDraw | Traits.PlusCard | Traits.Trasher | Traits.TrashForBenefit) { BaseCost = new Cost(5); } public override void SetupSupply(IGame game, ISupply supply) { Contract.Requires(game != null, "game cannot be null"); base.SetupSupply(game, supply); for (var i = 0; i < game.Players.Count; i++) { Card card = new CursedGold(); game.Table.Copper.AddTo(card); card.SetupCard(game); } } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var availableCards = player.Hand[c => c.Category.HasFlag(Categories.Treasure) && !(c is CursedGold)]; var choice = new Choice("You may choose a non-Cursed Gold Treasure card to trash", this, availableCards, ChoiceOutcome.Trash, player, minimum: 0); var result = player.MakeChoice(choice); if (result.Cards.Any()) { player.Trash(this, player.RetrieveCardFrom(DeckLocation.Hand, result.Cards[0])); player.ReceiveBenefit(this, new CardBenefit { Cards = 4 }); } } } }