using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using System; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class BadOmens : Hex { public BadOmens() : base(Source.Nocturne, Traits.CardOrdering) { } public override void Receive(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.Receive(player); player._Game.SendMessage(player, this, "Discard"); var cc = player.RetrieveCardsFrom(DeckLocation.Deck); player.AddCardsInto(DeckLocation.Discard, cc); var discardPileCards = player.DiscardPile.LookThrough(c => true); player._Game.SendMessage(player, this, "LookThroughDiscard", discardPileCards.ToArray()); var copperCount = Math.Min(2, discardPileCards.Count(c => c is Universal.Copper)); if (copperCount > 0) { player.AddCardsInto(DeckLocation.Revealed, player.RetrieveCardsFrom(DeckLocation.Discard, Universal.TypeClass.Copper, copperCount)); player.AddCardsToDeck(player.RetrieveCardsFrom(DeckLocation.Revealed), DeckPosition.Top); } if (copperCount < 2) { player._Game.SendMessage(player, this, "Reveal", discardPileCards.ToArray()); } } } }