Exemple #1
0
        /// <summary>
        /// If player deals attack, defended can reveal reaction cards.
        /// If any of revealed cards is Moad attack effect wont be executed.
        /// </summary>
        /// <param name="attack"></param>
        /// <param name="attacker"></param>
        /// <param name="attackCard"></param>
        public void DealAttack(Player attacker, Card attackCard)
        {
            Game.Logger?.Log($"{Name} deals attack.");

            // before attack is executed defender can select some reaction cards.
            Card card      = null;
            bool defended  = false;
            var  reactions = new LinkedList <Card>(ps.Hand.Where(c => c.IsReaction));

            for (int i = 0; i < reactions.Count; i++)
            {
                if (reactions.Count == 0)
                {
                    break;
                }
                card = User.PlayCard(reactions, ps, Game.Kingdom, Phase.Reaction, attackCard);
                reactions.Remove(card);
                if (card == null)
                {
                    break;
                }
                defended |= card.Reaction(this);
            }

            if (!defended)
            {
                attackCard.Attack(this, attacker);
            }
        }