using DominionBase.Enums; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class Idol : Fate { public Idol() : base(Categories.Treasure | Categories.Attack, Location.Kingdom, Traits.AffectOthers | Traits.ConditionalBenefit | Traits.PlusCoin | Traits.PlusCurses) { BaseCost = new Cost(5); Benefit.Currency.Coin.Value = 2; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); if (player.InPlayAndSetAside[TypeClass.Idol].Count % 2 == 1) { var supply = (IBoonSupply)player._Game.Table.SpecialPiles[TypeClass.Boons]; supply.TurnOverNextAndReceive(player); } else { 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); } } } } }