private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, gameState => gameState.Self.AvailableBuys >= 4 || CountAllOwned(Cards.Province, gameState) > 0), CardAcceptance.For(Cards.Duchy, gameState => CountAllOwned(Cards.Province, gameState) >= 3), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1)); //CardAcceptance.For(Cards.Jester, gameState => CountAllOwned(Cards.Jester, gameState) == 0)); // jester actually hurts in a non mirror match /*// Intuitive guess as to the right build order, not correct it seeems. var buildOrder = new CardPickByBuildOrder( Cards.Armory, Cards.Silver, Cards.WanderingMinstrel, Cards.Watchtower, Cards.Rats, Cards.Watchtower);*/ var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Armory), CardAcceptance.For(Cards.Watchtower), CardAcceptance.For(Cards.Rats), CardAcceptance.For(Cards.Watchtower)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Bridge, ShouldBuyBridge), CardAcceptance.For(Cards.WanderingMinstrel), CardAcceptance.For(Cards.Watchtower, gameState => CountAllOwned(Cards.Watchtower, gameState) < 3)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Embassy, gameState => CountAllOwned(Cards.Embassy, gameState) < 1), CardAcceptance.For(Cards.Duchy), CardAcceptance.For(Cards.Duke)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Silver)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, ShouldBuyProvinceOverDuchyDuke), CardAcceptance.For(Cards.Duke, gameState => ShouldBuyDukeOverDuchy(gameState) && ShouldBuyDuchyDukeOverPowerUp(gameState)), CardAcceptance.For(Cards.Duchy, ShouldBuyDuchyDukeOverPowerUp), CardAcceptance.For(Cards.Duke, ShouldBuyDuchyDukeOverPowerUp), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 2), CardAcceptance.For(Cards.Duke, gameState => ShouldBuyDukeOverDuchy(gameState) && AtEndGame(gameState)), CardAcceptance.For(Cards.Duchy, AtEndGame), CardAcceptance.For(Cards.Duke, AtEndGame), CardAcceptance.For(Cards.Caravan, CanDoubleCaravan), CardAcceptance.For(Cards.Cartographer, gameState => CountAllOwned(Cards.Cartographer, gameState) < 2), CardAcceptance.For(Cards.Gold, gameState => gameState.Self.AvailableBuys <= 1)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Bridge), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Bridge)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Caravan), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 4), CardAcceptance.For(Cards.Silver)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, ShouldBuyProvinces), CardAcceptance.For(Cards.Duchy, gameState => CountAllOwned(Cards.Province, gameState) >= 3), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 1), CardAcceptance.For(Cards.Salvager, gameState => CountAllOwned(Cards.Copper, gameState) >= 6 && CountAllOwned(Cards.Salvager, gameState) == 0), CardAcceptance.For(Cards.Lookout, gameState => CountAllOwned(Cards.Copper, gameState) >= 6 && CountAllOwned(Cards.Lookout, gameState) == 0), CardAcceptance.For(Cards.Silver, gameState => CountAllOwned(Cards.Silver, gameState) + CountAllOwned(Cards.Festival, gameState) < 2) ); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Festival), CardAcceptance.For(Cards.Library), CardAcceptance.For(Cards.Festival), CardAcceptance.For(Cards.Highway), CardAcceptance.For(Cards.Highway), CardAcceptance.For(Cards.Festival), CardAcceptance.For(Cards.Festival), CardAcceptance.For(Cards.Library), CardAcceptance.For(Cards.Festival) ); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Highway)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) <= 4)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.FishingVillage), CardAcceptance.For(Cards.Chapel)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.FishingVillage, gameState => CountAllOwned(Cards.FishingVillage, gameState) < 2), CardAcceptance.For(Cards.PoorHouse)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.IllGottenGains, DefaultStrategies.ShouldGainIllGottenGains), CardAcceptance.For(Cards.Gold, gameState => CountOfPile(Cards.Province, gameState) >= 6), CardAcceptance.For(Cards.Duchy), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 2)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Silver)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Copper)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, gameState => CountAllOwned(Cards.Gold, gameState) >=2), CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) <= 4), CardAcceptance.For(Cards.Gold), CardAcceptance.For(Cards.Laboratory)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.SpiceMerchant), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 4)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder(ICardPicker trashOrder) { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, gameState => CountAllOwned(trashOrder, gameState) <= 3), CardAcceptance.For(Cards.Library, gameState => CountAllOwned(Cards.Library, gameState) < 1), CardAcceptance.For(Cards.Count, gameState => CountAllOwned(Cards.Count, gameState) < 1)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.FishingVillage), CardAcceptance.For(Cards.Library), CardAcceptance.For(Cards.Count), CardAcceptance.For(Cards.Library)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.PoorHouse, gameState => CountAllOwned(Cards.PoorHouse, gameState) < 2 && CountAllOwned(Cards.Count, gameState) >= 1), CardAcceptance.For(Cards.FishingVillage)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder(bool shouldBuySpiceMerchant, bool shouldBuyPlaza) { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, CardAcceptance.AlwaysMatch, CardAcceptance.OverPayMaxAmount)); var buildOrder = new CardPickByBuildOrder( shouldBuySpiceMerchant == true ? CardAcceptance.For(Cards.SpiceMerchant) : CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Embassy), CardAcceptance.For(Cards.Tunnel), CardAcceptance.For(Cards.Embassy), shouldBuyPlaza ? CardAcceptance.For(Cards.Plaza) : null); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) <= 4), CardAcceptance.For(Cards.Tunnel, gameState => gameState.Self.AllOwnedCards.Count > 13), CardAcceptance.For(Cards.Silver)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province, gameState => gameState.players.CurrentPlayer.AllOwnedCards.CountOf(Cards.Gold) > 2), CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) < 5), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) < 2), CardAcceptance.For(Cards.Gold)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Silver), CardAcceptance.For(Cards.Warehouse)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Silver)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.GreatHall, gameState => CardBeingPlayedIs(Cards.IronWorks, gameState)), CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.HuntingGrounds, gameState => CountAllOwned(Cards.Gold, gameState) >= 1 ), CardAcceptance.For(Cards.Gold), CardAcceptance.For(Cards.Pillage, gameState => CountAllOwned(Cards.Gold, gameState) == 0), CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) <= 4)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.IronWorks), CardAcceptance.For(Cards.Silver)); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.IronWorks, gameState => CountAllOwned(Cards.IronWorks, gameState) < 2), CardAcceptance.For(Cards.Remodel), CardAcceptance.For(Cards.Silver)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }
private static ICardPicker PurchaseOrder() { var highPriority = new CardPickByPriority( CardAcceptance.For(Cards.Province), CardAcceptance.For(Cards.Duchy, gameState => CountOfPile(Cards.Province, gameState) <= 2), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 2), CardAcceptance.For(Cards.Butcher, gameState => CountAllOwned(Cards.Butcher, gameState) < 2), CardAcceptance.For(Cards.Estate, gameState => CountOfPile(Cards.Province, gameState) <= 3)); var buildOrder = new CardPickByBuildOrder( CardAcceptance.For(Cards.Silver, gameState => CountAllOwned(Cards.Plaza, gameState) == 0), CardAcceptance.For(Cards.Watchtower), CardAcceptance.For(Cards.Plaza), CardAcceptance.For(Cards.Plaza), CardAcceptance.For(Cards.Watchtower) ); var lowPriority = new CardPickByPriority( CardAcceptance.For(Cards.Watchtower, gameState => CountAllOwned(Cards.Butcher, gameState) + CountAllOwned(Cards.Watchtower, gameState) < CountAllOwned(Cards.Plaza, gameState)), CardAcceptance.For(Cards.Plaza), CardAcceptance.For(Cards.Watchtower)); return new CardPickConcatenator(highPriority, buildOrder, lowPriority); }