using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class TragicHero : Card { public TragicHero() : base(Categories.Action, Source.Nocturne, Location.Kingdom, Traits.ConditionalBenefit | Traits.Gainer | Traits.NetCardDraw | Traits.PlusBuy | Traits.PlusCard | Traits.Terminal | Traits.Trasher) { BaseCost = new Cost(5); Benefit.Cards = 3; Benefit.Buys = 1; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); if (player.Hand.Count >= 8) { if (player.InPlay.Contains(PhysicalCard)) player.Trash(this, player.RetrieveCardFrom(DeckLocation.InPlay, PhysicalCard)); var gainableSupplies = new SupplyCollection(player._Game.Table.TableEntities.FindAll(supply => supply.CanGain() && supply.TopCard.Category.HasFlag(Categories.Treasure))); var choice = new Choice("Gain a Treasure", this, gainableSupplies, ChoiceOutcome.Gain, player, false); var result = player.MakeChoice(choice); if (result.Supply != null) player.Gain(result.Supply, this); } } } }