using DominionBase.Currencies; using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class TheEarthsGift : Boon { public TheEarthsGift() : 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 choiceDiscard = new Choice(Resource.ChooseTreasureDiscard, this, player.Hand[Categories.Treasure], ChoiceOutcome.Discard, player, minimum: 0); var resultDiscard = player.MakeChoice(choiceDiscard); if (resultDiscard.Cards.Count == 1) { player.Discard(DeckLocation.Hand, resultDiscard.Cards); var gainableSupplies = new SupplyCollection(player._Game.Table.TableEntities.FindAll(supply => supply.CanGain() && supply.CurrentCost <= new Coin(4))); var choice = new Choice(Resource.GainUpTo4, this, gainableSupplies, ChoiceOutcome.Gain, player, false); var result = player.MakeChoice(choice); if (result.Supply != null) player.Gain(result.Supply, this); } return true; } } }