Example #1
0
 public static List <Card> VictoryAndTreasures()
 {
     return(new List <Card>
     {
         Copper.Get(),
         Silver.Get(),
         Gold.Get(),
         Estate.Get(),
         Duchy.Get(),
         Province.Get()
     });
 }
Example #2
0
 private static List <Pile> VictoryAndTreasures(bool two)
 {
     return(new List <Pile>
     {
         new Pile(Copper.Get(), 60),
         new Pile(Silver.Get(), 40),
         new Pile(Gold.Get(), 30),
         new Pile(Estate.Get(), two ? 8 : 12),
         new Pile(Duchy.Get(), two ? 8 : 12),
         new Pile(Province.Get(), two ? 8 : 12)
     });
 }
Example #3
0
        public override Card SelectCardToGain(KingdomWrapper wrapper, PlayerState ps, Kingdom k, Phase phase)
        {
            var provinces = k.GetPile(CardType.Province);

            if (buyAgenda.Provinces > provinces.Count && wrapper.GetCard(CardType.Province) != null)
            {
                return(Province.Get());
            }

            var duchies = k.GetPile(CardType.Duchy);

            if (buyAgenda.Duchies > provinces.Count && wrapper.GetCard(CardType.Duchy) != null)
            {
                return(Duchy.Get());
            }

            var estates = k.GetPile(CardType.Estate);

            if (buyAgenda.Estates > provinces.Count && wrapper.GetCard(CardType.Estate) != null)
            {
                return(Estate.Get());
            }

            for (int i = 0; i < buyAgenda.BuyMenu.Count; i++)
            {
                var tuple = buyAgenda.BuyMenu[i];
                if (tuple.Number <= 0)
                {
                    continue;
                }

                var card = wrapper.GetCard(tuple.Card);
                if (card == null)
                {
                    continue;
                }

                tuple.Number--;
                if (tuple.Number == 0)
                {
                    buyAgenda.BuyMenu.RemoveAt(i);
                }
                else
                {
                    buyAgenda.BuyMenu[i] = tuple; // this is a value type, i have to return the value back
                }
                if (card.IsTreasure)
                {
                    playerInfo.TreasureTotal += card.Coins;
                }
                if (card.Type == CardType.Moneylender)
                {
                    playerInfo.TreasureTotal -= 1;
                }
                else if (card.Type == CardType.Bureaucrat)
                {
                    playerInfo.TreasureTotal += 2;
                }
                else if (card.Type == CardType.Mine)
                {
                    playerInfo.TreasureTotal += 1;
                }

                return(card);
            }
            return(null);
        }