using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Menagerie { public class Goatherd : Card { public Goatherd() : base(Categories.Action, Source.Menagerie, Location.Kingdom, Traits.AffectOthers | Traits.ConditionalBenefit | Traits.DeckReduction | Traits.PlusAction | Traits.PlusCard | Traits.RemoveCurses | Traits.Trasher | Traits.TrashForBenefit) { BaseCost = new Cost(3); Benefit.Actions = 1; } 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, minimum: 0); var resultTrash = player.MakeChoice(choiceTrash); if (resultTrash.Cards.Any()) player.Trash(this, player.RetrieveCardsFrom(DeckLocation.Hand, resultTrash.Cards)); // Get the player to my right var playerToRight = player._Game.GetPlayerFromIndex(player, -1); var mostRecentTurn = player._Game.TurnsTaken.Last(turn => turn.Player == playerToRight); if (mostRecentTurn.CardsTrashed.Count > 0) player.ReceiveBenefit(this, new CardBenefit { Cards = mostRecentTurn.CardsTrashed.Count }); } } }