using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Menagerie { public class Gamble : Event { public Gamble() : base(Source.Menagerie, 2, Traits.Discard | Traits.PlusBuy) { Benefit.Buys = 1; } public override void Bought(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Bought(player); var cardsDrawn = player.Draw(1, DeckLocation.Revealed); if (cardsDrawn.Any()) { var cardToTest = cardsDrawn.FirstOrDefault(c => c.Category.HasFlag(Categories.Treasure) || c.Category.HasFlag(Categories.Action)); if (cardToTest != null) { var choice = Choice.CreateYesNoChoice(Resource.MayPlayCard.Replace("{card}", cardToTest.Name), this, cardToTest, player, null); var result = player.MakeChoice(choice); if (result.Options[0] == Resource.Yes) { if (cardToTest.Category.HasFlag(Categories.Action)) player.Actions++; var previousPlayerMode = player.PutCardIntoPlay(cardToTest); var logicalCard = cardToTest.LogicalCard; player.PlayCard(logicalCard, previousPlayerMode); return; } } } player.DiscardRevealed(); } } }