using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class Pixie : Fate { public Pixie() : base(Categories.Action, Location.Kingdom, Traits.Cantrip | Traits.ConditionalBenefit | Traits.DeckReduction | Traits.PlusAction | Traits.PlusCard | Traits.Trasher | Traits.TrashForBenefit) { BaseCost = new Cost(2); Benefit.Cards = 1; Benefit.Actions = 1; } public override void SetupSupply(IGame game, ISupply supply) { Contract.Requires(game != null, "game cannot be null"); base.SetupSupply(game, supply); for (var i = 0; i < game.Players.Count; i++) { Card card = new Goat(); game.Table.Copper.AddTo(card); card.SetupCard(game); } } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var supply = (IBoonSupply)player._Game.Table.SpecialPiles[TypeClass.Boons]; if (supply.TurnOverNext(player)) { var boon = (IBoon)supply.TopDiscard; var choice = Choice.CreateYesNoChoice($"Do you want to trash {PhysicalCard} to receive {boon} twice?", this, boon, player, null); var result = player.MakeChoice(choice); if (result.Options[0] == Resource.Yes && player.InPlay.Contains(PhysicalCard)) { player.Trash(this, player.RetrieveCardFrom(DeckLocation.InPlay, PhysicalCard)); boon.Receive(player); boon.Receive(player); } } } } }