using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Renaissance { public class Hideout : Card { public Hideout() : base(Categories.Action, Source.Renaissance, Location.Kingdom, Traits.DeckReduction | Traits.Gainer | Traits.PlusAction | Traits.PlusCard | Traits.PlusCurses | Traits.PlusMultipleActions | Traits.RemoveCurses | Traits.Trasher) { BaseCost = new Cost(4); Benefit.Cards = 1; Benefit.Actions = 2; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var choiceTrash = new Choice(Resource.ChooseACardToTrash, this, player.Hand, ChoiceOutcome.Trash, player); var resultTrash = player.MakeChoice(choiceTrash); player.Trash(this, player.RetrieveCardsFrom(DeckLocation.Hand, resultTrash.Cards)); if (resultTrash.Cards.Any()) { if (resultTrash.Cards[0].Category.HasFlag(Categories.Victory)) player.Gain(player._Game.Table.Curse, this); } } } }