using DominionBase.Enums; using DominionBase.Players; using DominionBase.Properties; using System.Diagnostics.Contracts; using System.Linq; namespace DominionBase.Cards.Renaissance { public class OldWitch : Card { public OldWitch() : base(Categories.Action | Categories.Attack, Source.Renaissance, Location.Kingdom, Traits.AffectOthers | Traits.NetCardDraw | Traits.PlusCard | Traits.PlusCurses | Traits.RemoveCurses | Traits.Terminal) { BaseCost = new Cost(5); Benefit.Cards = 3; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var enumerator = player._Game.GetPlayersStartingWithEnumerator(player); enumerator.MoveNext(); while (enumerator.MoveNext()) { var attackee = enumerator.Current; // Skip if the attack is blocked (Moat, Lighthouse, etc.) if (IsAttackBlocked[attackee]) continue; attackee.Gain(player._Game.Table.Curse, this); if (attackee.Hand[Universal.TypeClass.Curse].Any()) { var choice = Choice.CreateYesNoChoice("Trash a Curse from your hand?", this, player); var result = attackee.MakeChoice(choice); if (result.Options[0] == Resource.Yes) { attackee.Trash(this, attackee.RetrieveCardFrom(DeckLocation.Hand, Universal.TypeClass.Curse)); } } } } } }