using DominionBase.Enums; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Renaissance { public class MountainVillage : Card { public MountainVillage() : base(Categories.Action, Source.Renaissance, Location.Kingdom, Traits.Cantrip | Traits.PlusAction | Traits.PlusCard | Traits.PlusMultipleActions) { BaseCost = new Cost(4); Benefit.Actions = 2; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); if (player.DiscardPile.Any()) { var discardPileCards = player.DiscardPile.LookThrough(c => true); player._Game.SendMessage(player, this, discardPileCards.ToArray()); var choiceTop = new Choice("Choose a card to put onto your hand", this, discardPileCards, ChoiceOutcome.Select, player); var resultTop = player.MakeChoice(choiceTop); if (resultTop.Cards.Any()) player.AddCardsToHand(player.DiscardPile.Retrieve(player, c => resultTop.Cards.Contains(c))); } else { player.ReceiveBenefit(this, new CardBenefit { Cards = 1 }); } } } }