using DominionBase.Enums; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Menagerie { public class Desperation : Event { public Desperation() : base(Source.Menagerie, 0, Traits.Gainer | Traits.PlusBuy | Traits.PlusCoin | Traits.PlusCurses) { } public override bool CanBuy(IPlayer player, Currency currency) { Contract.Requires(player != null, "player cannot be null"); if (player.CurrentTurn != null && player.CurrentTurn.CardsBought.Contains(this)) return false; return base.CanBuy(player, currency); } public override void Bought(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Bought(player); var result = player.MakeChoice(Choice.CreateYesNoChoice(Resource.ShouldGainCurse, this, player)); if (result.Options.FirstOrDefault() == Resource.Yes) { if (player.Gain(player._Game.Table.Curse, this)) player.ReceiveBenefit(this, new CardBenefit { Buys = 1, Currency = new Currency(2) }); } } } }