Well, it's been a while, huh? I sort of forgot about this thread three semesters ago, and school and work happened. But finally, I had time to go back, sit down, and with the help of a friend, fix the Big Money Baker coin token thing. I present to you, my solution:
#Ruthlessly executes unsuspecting bots with the KC/Goons/Masquerade pin
{
name: 'Pin'
requires: ["Chapel", "King's Court", "Masquerade", "Goons"]
gainPriority: (state, my) -> [
"King's Court" if my.countInDeck("King's Court") < 2
"Goons" if my.countInDeck("Goons") == 0
"Gold" if my.countInDeck("King's Court") < 2
# If this bot somehow gets rid of its chapel later in the game,
# it won't try to acquire another one.
"Chapel" if my.coins <= 4 and my.countInDeck("Chapel") == 0 and my.turnsTaken <= 2
# Would be three, if it wasn't for that nasty Baker 4/4 split
"Masquerade" if my.countInDeck("Masquerade") == 0
"Silver" if my.countInDeck("King's Court") < 2
"Gold" if my.turnsTaken >= 50 #MAKE IT STOP
"Duchy" if my.turnsTaken >= 70
"Estate" if my.turnsTaken >= 90
"Chapel" if my.countInDeck("Copper") > 7 and my.countInDeck("Chapel") < 2 #just to counter that nasty DoubleMountebank. Guess you sometimes do have to buy a second Chapel
]
trashPriority: (state, my) -> [
"Curse"
"Estate"
"Copper"
"Silver" if my.countInDeck("King's Court") == 2 and my.countInDeck('Goons') == 1
"Chapel"
#kill anything once the pin starts
"Gold" if my.countInDeck("King's Court") == 2 and my.countInDeck('Goons') == 1
"Province" if my.countInDeck("King's Court") ==2 and my.countInDeck('Goons') == 1
"Duchy" if my.countInDeck("King's Court") == 2 and my.countInDeck('Goons') == 1
"King's Court" if my.countInDeck("King's Court") > 2 and my.countInDeck('Goons') == 1
"Goons" if my.countInDeck("King's Court") == 2 and my.countInDeck('Goons') > 1
"Masquerade" if my.countInDeck("King's Court") == 2 and my.countInDeck('Goons') == 1 and my.countInDeck('Chapel') == 0
#anything else just trash
"Witch"
"Platinum"
"Colony"
"Wharf"
"Monument"
"Library"
"Bank"
"Envoy"
"Smithy"
"Mountebank"
"Young Witch"
"Ambassador"
"Ghost Ship"
"Jack of All Trades"
"Militia"
"Moneylender"
"Adventurer"
"Bazaar"
"Bridge"
"Chancellor"
"Coppersmith"
"Courtyard"
"Hunting Party"
"Nobles"
"Remake"
"Royal Seal"
"Scheme"
"Tournament"
"Baron"
#added these for Andrew's version
"Advisor"
"Beggar"
"Gardens"
"Journeyman"
"Baker"
"Vineyard"
"University"
"Scrying Pool"
"Alchemist"
"Potion"
"Rats"
"Masterpiece"
"Feodum"
"Duke"
"Rebuild"
"Horse Traders"
"Rogue"
"Plaza"
#huh, new strategies, guess it has been a while
"Oasis"
"Watchtower"
"Develop"
"Festival"
"Talisman"
]
wantsToRebuild: (state, my) ->
return 0
wantsToJM: (state, my) ->
false
multipliedPriority: (state, card, my) -> [
"King's Court"
"Goons"
"Masquerade"
"Chapel"
]
}
Yeah, it's kind of funny really. I was working on alt-win conditions I thought would be interesting to simulate, and I knew of the strategy, so I tried to get an AI to play it. I even played it through on a friend once, just to see exactly how it played. (It was extremely fun for me, but not for said friend. Reading it, you can guess why.)
I know the SillyAI thing was a bit of a stretch; coded "properly"
(naming everything possible) I could have beaten SillyAI, but I chose not to, since doing so would be long and tedious. There has to be a rock for every scissors, and for my strategy(and from lack of patience), this was it.
Next challenge: Design something that beats this,
using only the cards I named to trash, of course If you want, you can use
any other card, if you add its name to the trash section Couldn't get it to work on Geronimoo's, of course. He just has buy priorities, not
trash or multiplied action priorities , and I couldn't get the AI to
trash everything it was given So that's why it's only Dominate. I guess it says that Dominate is better (at least, in some ways) than Geronimoo's, and if we ever want to get to a true AI that plays like a real player would, we'll need to go in that direction. Or not. Who knows?
Hope you all had fun trying to solve this. If anyone comes up with another solution, it'd be really interesting to see.