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()); }