Earlier today I played a game (http://www.gokosalvager.com/static/logprettifier.html?20150426/log.516cccebe4b082c74d79df9b.1430066568491.txt) with Colonies and this Kingdom:
(http://wiki.dominionstrategy.com/images/2/2f/Embassy.jpg) (http://wiki.dominionstrategy.com/index.php/Embassy) (http://wiki.dominionstrategy.com/images/e/ec/Festival.jpg) (http://wiki.dominionstrategy.com/index.php/Festival) (http://wiki.dominionstrategy.com/images/f/f6/Rogue.jpg) (http://wiki.dominionstrategy.com/index.php/Rogue) (http://wiki.dominionstrategy.com/images/e/ed/Tactician.jpg) (http://wiki.dominionstrategy.com/index.php/Tactician) (http://wiki.dominionstrategy.com/images/8/8d/King's_Court.jpg) (http://wiki.dominionstrategy.com/index.php/King's Court)
(http://wiki.dominionstrategy.com/images/2/26/Herbalist.jpg) (http://wiki.dominionstrategy.com/index.php/Herbalist) (http://wiki.dominionstrategy.com/images/c/c6/Lookout.jpg) (http://wiki.dominionstrategy.com/index.php/Lookout) (http://wiki.dominionstrategy.com/images/c/c8/Caravan.jpg) (http://wiki.dominionstrategy.com/index.php/Caravan) (http://wiki.dominionstrategy.com/images/f/f6/Silk_Road.jpg) (http://wiki.dominionstrategy.com/index.php/Silk Road) (http://wiki.dominionstrategy.com/images/f/f7/Bazaar.jpg) (http://wiki.dominionstrategy.com/index.php/Bazaar)
Herbalist, Lookout, Caravan, Silk Road, Bazaar, Embassy, Festival, Rogue, Tactician, King's Court
After words I spent a while running sims to see if it's worth buying King's Court or just pursuing more or less a money strategy. Since I invested a decent chunk of time in it I thought people might be interested in the results: the King's Court bot wins, but only at 54%. Here are some lessons from the bot:
- A single Rogue is helpful against the money bot, despite the concerns that a) cards costing $3 to $6 are less important in Colony games and b) you may end up stealing stuff you don't want, such as Silvers that gum up the engine
- Lookout is harmful (though the simulator doubtless plays it imperfectly)
- Buy a couple Festivals (for +Buy) and then go for Bazaars (for hand size)
- You want a fair bit of money ($40). Maybe this isn't even really an "engine" in a strict sense
- Despite the presence of Colonies, which means you may end up buying both Colonies and Provinces before the game ends, you can't assume the Silk Roads are going to be at least as valuable as Duchies
Here's the simple (no King) bot:
{
name: 'Embassy'
requires: ['Embassy', 'Herbalist', 'Silk Road']
gainPriority: (state, my) -> [
"Colony" if my.countInDeck("Platinum") > 0
"Province" if state.countInSupply("Colony") <= 6 \
or state.countInSupply("Province") <= 6
"Duchy" if 0 < state.gainsToEndGame() <= 5
"Silk Road" if 0 < state.gainsToEndGame() <= 5
"Estate" if 0 < state.gainsToEndGame() <= 2
"Platinum"
"Gold"
"Embassy" if my.countInDeck("Embassy") < 2 \
and my.numCardsInDeck() >= 14
"Embassy" if my.countInDeck("Embassy") < 1
"Festival"
"Bazaar"
"Caravan"
"Silver"
"Copper" if state.gainsToEndGame() <= 3
]
}
And here's the King bot:
{
name: 'KingEngine'
requires: ['Herbalist', "King's Court", 'Bazaar', 'Caravan', 'Lookout', 'Rogue', "Festival", "Embassy"]
gainPriority: (state, my) -> [
"Colony" if my.countInDeck("Platinum") > 0
"Colony" if my.getTotalMoney() >= 40
"Colony" if state.countInSupply("Colony") <= 6 \
or state.countInSupply("Province") <= 6
"Province" if state.countInSupply("Colony") <= 6 \
or state.countInSupply("Province") <= 6
"Silk Road" if 0 < state.gainsToEndGame() <= 5 and my.getVP("Silk Road") >= 3
"Duchy" if 0 < state.gainsToEndGame() <= 5
"Silk Road" if 0 < state.gainsToEndGame() <= 5
"Duchy" if 0 < state.gainsToEndGame() <= 5
"Estate" if 0 < state.gainsToEndGame() <= 2
"Platinum" if my.getTotalMoney() < 40
"King's Court" if my.countCardTypeInDeck("Action") >= 7
"Gold" if my.getTotalMoney() < 40
"Rogue" in my.countInDeck("Rogue") == 0
"Embassy" if my.countInDeck("Embassy") + my .countInDeck("Rogue") < \
my.countInDeck("Bazaar") + my.countInDeck("Festival") + 2
"Bazaar" if my.countInDeck("Festival") >= 2
"Festival"
"Bazaar"
"Caravan"
# "Lookout" if my.countInDeck("Lookout") == 0 # Hurts, even after bug fix: http://forum.dominionstrategy.com/index.php?topic=619.msg486204#msg486204
"Silver" if my.getTotalMoney() < 40 or state.gainsToEndGame() <= 3
"Copper" if state.gainsToEndGame() <= 3
"Herbalist" if my.countInDeck("Herbalist") < 0 and my.countInDeck("Gold") + my.countInDeck("Platinum") > 0
]
}