using DominionBase.Enums; using DominionBase.Players; using System.Collections.Generic; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Menagerie { public class Coven : Card { public Coven() : base(Categories.Action | Categories.Attack, Source.Menagerie, Location.Kingdom, Traits.AffectOthers | Traits.Exiler | Traits.PlusAction | Traits.PlusCoin) { BaseCost = new Cost(5); Benefit.Actions = 1; Benefit.Currency.Coin.Value = 2; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var availableCosts = new List { new Cost(3), new Cost(4), new Cost(5), new Cost(6) }; var enumerator = player._Game.GetPlayersStartingWithEnumerator(player); enumerator.MoveNext(); while (enumerator.MoveNext()) { var attackee = enumerator.Current; if (IsAttackBlocked[attackee]) continue; var supply = attackee._Game.Table.Curse; if (supply.Count > 0) { var toExile = supply.Take(); attackee.AddCardInto(TypeClass.Exile, toExile); toExile.ReceivedBy(player); attackee._Game.SendMessage(attackee, this, "Exile", toExile); } else { attackee.Discard(DeckLocation.PlayerMat, TypeClass.Exile, c => c is Universal.Curse); } } } } }