using DominionBase.Enums; using DominionBase.Piles; using DominionBase.Players; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Nocturne { public class MagicLamp : Card { public MagicLamp() : base(Categories.Treasure | Categories.Heirloom, Source.Nocturne, Location.Invisible, Traits.ConditionalBenefit | Traits.Gainer | Traits.IncludesExtraPiles | Traits.PlusCoin) { BaseCost = new Cost(0); Benefit.Currency.Coin.Value = 1; } public override void SetupCard(IGame game) { Contract.Requires(game != null, "game cannot be null"); base.SetupCard(game); Wish.SetupSupply(game); } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); if (player.InPlayAndSetAside.GroupBy(k => k.Name).Where(g => g.Count() == 1).Count() >= 6) { if (player.InPlay.Contains(PhysicalCard)) { player.Trash(this, player.RetrieveCardFrom(DeckLocation.InPlay, PhysicalCard)); player.Gain((ISupply)player._Game.Table.SpecialPiles[TypeClass.Wish], this, count: 3); } } } } }