using DominionBase.Enums; using DominionBase.Properties; using System.Diagnostics.Contracts; namespace DominionBase.Cards.Nocturne { public class SacredGrove : Fate { public SacredGrove() : base(Categories.Action, Location.Kingdom, Traits.AffectOthers | Traits.ConditionalBenefit | Traits.PlusBuy | Traits.PlusCoin | Traits.Terminal) { BaseCost = new Cost(5); Benefit.Buys = 1; Benefit.Currency.Coin.Value = 3; } public override void FollowInstructions(IPlayer player) { Contract.Requires(player != null, "player cannot be null"); base.FollowInstructions(player); var supply = (IBoonSupply)player._Game.Table.SpecialPiles[TypeClass.Boons]; if (supply.TurnOverNext(player)) { var boon = (IBoon)supply.TopDiscard; boon.Receive(player); if (boon.Benefit.Currency.Coin != 1) { var enumerator = player._Game.GetPlayersStartingWithEnumerator(player); enumerator.MoveNext(); while (enumerator.MoveNext()) { var choicePlayer = Choice.CreateYesNoChoice($"Do you want to receive {boon}?", this, boon, enumerator.Current, null); var resultPlayer = enumerator.Current.MakeChoice(choicePlayer); if (resultPlayer.Options[0] == Resource.Yes) boon.Receive(enumerator.Current); } } } } } }