using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Menagerie { public class WayOfTheRat : Way { public WayOfTheRat() : base(Source.Menagerie, Traits.Discard | Traits.Gainer | Traits.Terminal) { } public override void FollowAlternateInstructions(IPlayer player, Card playedCard) { Contract.Requires(player != null, "player cannot be null"); Contract.Requires(playedCard != null, "playedCard cannot be null"); base.FollowAlternateInstructions(player, playedCard); var choiceDiscard = new Choice(Resource.ChooseTreasureDiscard, this, player.Hand[Categories.Treasure], ChoiceOutcome.Discard, player, minimum: 0); var resultDiscard = player.MakeChoice(choiceDiscard); if (resultDiscard.Cards.Count == 1) { player.Discard(DeckLocation.Hand, resultDiscard.Cards); var supply = player._Game.Table.FindSupplyPileByType(playedCard.Type, false); if (supply != null && supply.CanGain(playedCard.Type)) player.Gain(supply, this); } } } }