using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class TheSkysGift : Boon { public TheSkysGift() : base(Source.Nocturne, Traits.Discard | Traits.Gainer) { } public override bool Receive(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Receive(player); var choiceYesNo = Choice.CreateYesNoChoice("You may discard 3 cards.", this, this, player, null); var resultYesNo = player.MakeChoice(choiceYesNo); if (resultYesNo.Options[0] == Resource.Yes) { var choiceDiscard = new Choice("Choose cards to discard.", this, player.Hand, ChoiceOutcome.Discard, player, minimum: 3, maximum: 3); var resultDiscard = player.MakeChoice(choiceDiscard); if (resultDiscard.Cards.Any()) { player.Discard(DeckLocation.Hand, resultDiscard.Cards); if (resultDiscard.Cards.Count == 3) player.Gain(player._Game.Table.Gold, this); } } return true; } } }