using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using DominionBase.Properties; using System; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Seaside2019Errata { public static class TypeClass { //public static readonly Type Embargo = typeof(Embargo); } public class Embargo : Card { public Embargo() : this(Edition.Errata2019) { } public Embargo(Edition edition) : base(Categories.Action, Source.Seaside, Location.Kingdom, Traits.Component | Traits.PlusCurses | Traits.PlusCoin | Traits.Gainer | Traits.Trasher | Traits.Terminal, edition: edition) { BaseCost = new Cost(2); Benefit.Currency.Coin.Value = 2; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); Card toTrash = null; if (player.InPlay.Contains(PhysicalCard)) toTrash = player.RetrieveCardFrom(DeckLocation.InPlay, PhysicalCard); if (toTrash != null) { player.Trash(this, toTrash); var choice = new Choice(Resource.ChooseSupplyToEmbargo, this, new SupplyCollection(player._Game.Table.TableEntities), ChoiceOutcome.Select, player, false); var result = player.MakeChoice(choice); if (result.Supply != null) { player._Game.SendMessage(player, this, result.Supply); result.Supply.AddToken(new Seaside.EmbargoToken(player._Game, result.Supply)); } } } } }