public override void Resolve(TurnContext context, ICard source)
            {
                var player = context.ActivePlayer;
                var log = context.Game.Log;

                if (player.Hand.OfType<IActionCard>().Any())
                {
                    var activity = new SelectCardsActivity(
                        log, player,
                        "Select an action to play twice",
                        SelectionSpecifications.SelectExactlyXCards(1), source);

                    activity.Hint = ActivityHint.PlayCards;
                    activity.Specification.CardTypeRestriction = typeof (IActionCard);
                    activity.AfterCardsSelected = cards =>
                    {
                        var actionCard = cards.OfType<IActionCard>().Single();
                        log.LogMessage("{0} selected {1} to be played twice.", player.Name, actionCard.Name);

                        actionCard.MoveTo(context.ActivePlayer.PlayArea);
                        context.AddEffect(source, new PlayCardEffect(actionCard));
                        context.AddEffect(source, new PlayCardEffect(actionCard));                        
                    };

                    _activities.Add(activity);
                }
                    
            }
Exemple #2
0
        public void Play(TurnContext context)
        {
            context.DrawCards(1);
            context.RemainingActions += 1;

            context.AddEffect(this, new UpgradeEffect());
        }
Exemple #3
0
            private IActivity CreateChooseActionActivity(TurnContext context, RevealZone revealZone, ICard source)
            {
                var selectTreasure = new SelectFromRevealedCardsActivity(context.Game.Log, context.ActivePlayer, revealZone,
                    "Select the action to play first.", SelectionSpecifications.SelectExactlyXCards(1), source);

                selectTreasure.AfterCardsSelected = cards =>
                {
                    var first = cards.OfType<IActionCard>().Single();
                    var second = revealZone.OfType<IActionCard>().Single(c => c != first);

                    // Reverse order because we're on a stack.
                    context.AddEffect(source, new PlayCardEffect(second));
                    context.AddEffect(source, new PlayCardEffect(first));                    
                };

                return selectTreasure;
            }  
 public override void BeginResolve(TurnContext context)
 {
     if(_hasHadReactionStep)
     {
         base.BeginResolve(context);
     }
     else
     {
         _hasHadReactionStep = true;
         if (context.Opponents.Any(o => o.Hand.OfType<IReactionCard>().Any()))
             context.AddEffect(Source, new ReactionEffect(this));
         else
             base.BeginResolve(context);
     }
 }
Exemple #5
0
 public override void BeginResolve(TurnContext context)
 {
     if (_hasHadReactionStep)
     {
         base.BeginResolve(context);
     }
     else
     {
         _hasHadReactionStep = true;
         if (context.Opponents.Any(o => o.Hand.OfType <IReactionCard>().Any()))
         {
             context.AddEffect(Source, new ReactionEffect(this));
         }
         else
         {
             base.BeginResolve(context);
         }
     }
 }
Exemple #6
0
 public void Play(TurnContext context)
 {
     context.AddEffect(new WorkshopEffect());
 }
Exemple #7
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new KingsCourtEffect());
 }
Exemple #8
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new ChapelEffect());
 }
Exemple #9
0
 public void Play(TurnContext context)
 {
     context.DrawCards(3);
     context.AddEffect(this, new RabbleAttack());
 }
Exemple #10
0
 public void Play(TurnContext context)
 {
     context.ActivePlayer.DrawCards(2);
     context.AddEffect(this, new GhostShipAttack());
 }
        public void React(AttackEffect attackEffect, Player player, TurnContext currentTurn)
        {
            currentTurn.AddEffect(this, new SecretChamberReactionEffect(player));
            currentTurn.Game.Log.LogMessage("{0} revealed a Secret Chamber.", player);

        }
Exemple #12
0
 public void Play(TurnContext context)
 {
     context.DrawCards(2);
     context.AddEffect(this, new WitchAttack());            
 }
Exemple #13
0
 public void Play(TurnContext context)
 {
     context.AvailableSpend += 2;
     context.AddEffect(new ChancellorEffect());
 }
Exemple #14
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 1;
     context.AddEffect(this, new CellarEffect());
 }
Exemple #15
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new MoneylenderEffect());
 }
Exemple #16
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 1;
     context.AddEffect(this, new ApprenticeEffect());
 }
Exemple #17
0
 public void Play(TurnContext context)
 {
     context.Trash(context.ActivePlayer, this);
     context.AddEffect(this, new FeastEffect());
 }
Exemple #18
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new ThiefAttack());
 }
Exemple #19
0
 public void Play(TurnContext context)
 {
     context.AvailableSpend += 2;
     context.AddEffect(this, new MilitiaAttack());
 }
Exemple #20
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 1;
     context.AddEffect(new ChapelEffect());
 }
Exemple #21
0
 public void Play(TurnContext context)
 {
     context.DrawCards(1);
     context.RemainingActions += 2;
     context.AddEffect(this, new MiningVillageEffect(this));
 }
Exemple #22
0
 public void Play(TurnContext context)
 {
     context.AvailableSpend += 2;
     context.AddEffect(new MountebankAttack());
 }
Exemple #23
0
 public void Play(TurnContext context)
 {
     context.DrawCards(1);
     context.RemainingActions += 1;
     context.AddEffect(new FamiliarAttack());
 }
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new SecretChamberActionEffect());
 }
Exemple #25
0
 public void Play(TurnContext context)
 {
     var effect = new EnvoyEffect();
     context.AddEffect(this, effect);
 }
Exemple #26
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new ThroneRoomEffect());
 }
Exemple #27
0
 public void Play(TurnContext context)
 {
     context.Buys += 1;
     context.AddEffect(this, new SalvagerEffect());
 }
Exemple #28
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new NoblesEffect());
 }
Exemple #29
0
 public void Play(TurnContext context)
 {
     context.AddEffect(this, new BaronEffect());
     context.Buys += 1;
 }
Exemple #30
0
 public void Play(TurnContext context)
 {
     context.RemainingActions += 1;
     context.AddEffect(this, new MinionAttackEffect());
 }
Exemple #31
0
 public void Play(TurnContext context)
 {
     context.AddEffect(new MineEffect());
 }