using DominionBase.Enums; using DominionBase.Properties; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Renaissance { public class Spices : Card { public Spices() : base(Categories.Treasure, Source.Renaissance, Location.Kingdom, Traits.Component | Traits.PlusBuy | Traits.PlusCoffer | Traits.PlusCoin | Traits.ReactToGain) { BaseCost = new Cost(5); Benefit.Currency.Coin.Value = 2; Benefit.Buys = 1; } protected override bool AllowUndo => true; public override void SetupCard(IGame game) { Contract.Requires(game != null, "game cannot be null"); base.SetupCard(game); foreach (var player in game.Players) player.CardGained += Player_CardGained; } public override void TearDown(IGame game) { Contract.Requires(game != null, "game cannot be null"); base.TearDown(game); foreach (var player in game.Players) player.CardGained -= Player_CardGained; } private void Player_CardGained(object sender, Players.CardGainEventArgs e) { var player = sender as IPlayer; var key = Type.ToString(); // This is not the card you are looking for if (e.Card != this || e.Resolvers.ContainsKey(key) || e.HandledBy.Contains(this)) return; e.Resolvers[key] = new Players.CardGainResolver(player, this, "GainCoffers", Resource.Gain2Coffers, Player_GainSpices, true); } internal void Player_GainSpices(IPlayer player, ref Players.CardGainEventArgs e) { player.ReceiveBenefit(this, new CardBenefit { Coffers = 2 }); e.HandledBy.Add(this); } } }