using DominionBase.Enums; using DominionBase.Players; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class Werewolf : Doom { public Werewolf() : base(Categories.Action | Categories.Night | Categories.Attack, Location.Kingdom, Traits.AffectOthers | Traits.ConditionalBenefit | Traits.NetCardDraw | Traits.PlusCard | Traits.Terminal) { BaseCost = new Cost(5); } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); if (player.Phase == PhaseEnum.Night) { var hexPile = (IHexSupply)player._Game.Table.SpecialPiles[TypeClass.Hexes]; var hexTurnedOver = hexPile.TurnOverNext(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; if (hexTurnedOver) ((IHex)hexPile.TopDiscard).Receive(attackee); } } else { player.ReceiveBenefit(this, new CardBenefit { Cards = 3 }); } } } }