using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class ZombieApprentice : Card { public ZombieApprentice() : base(Categories.Action | Categories.Zombie, Source.Nocturne, Location.Special, Traits.ConditionalBenefit | Traits.DeckReduction | Traits.NetCardDraw | Traits.PlusAction | Traits.PlusCard | Traits.RemoveFromHand | Traits.Trasher | Traits.TrashForBenefit) { BaseCost = new Cost(3); } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var choice = new Choice(Resource.ChooseACardToTrash, this, player.Hand[Categories.Action], ChoiceOutcome.Trash, player, minimum: 0); var result = player.MakeChoice(choice); if (result.Cards.Any()) { var c = player.RetrieveCardFrom(DeckLocation.Hand, result.Cards[0]); player.Trash(this, c); player.ReceiveBenefit(this, new CardBenefit { Cards = 3, Actions = 1 }); } } } }