예제 #1
0
        public override List <Card> ChapelTrash(PlayerState ps, Kingdom k)
        {
            var cards = ps.Hand;

            // allways trash curse
            var trash = cards.Where(c => c.Type == CardType.Curse);

            var neco = trash.ToString();

            // in the beginnig trash estate as well
            var provinces = k.GetPile(CardType.Province);

            if (buyAgenda.Estates <= provinces.Count)
            {
                trash = trash.Concat(cards.Where(c => c.Type == CardType.Estate));
            }

            if (trash.Count() >= 4)
            {
                return(trash.Take(4).ToList());
            }

            // trash only unnecesary coppers
            int coins = cards.Select(c => c.Coins).Sum() + ps.Coins;
            var card  = SelectCardToGain(k.GetWrapper(coins), ps, k, Phase.Buy);
            int price = card == null ? 0 : card.Price;

            if (playerInfo.TreasureTotal > 3)
            {
                var coppers = cards.Where(c => c.Type == CardType.Copper).Take(coins - price);
                trash = trash.Concat(coppers);
                // player info update
                playerInfo.TreasureTotal -= coppers.Count();
            }

            return(trash.Take(4).ToList());
        }