So as there are many non-trivial decisions, I think Dominiate is the better tool for playing around with the strategy:
Some basic template for this strat:
# Some basic ideas for Remodel-Mining Village
#
{
name: 'Remodel/Mining Village'
author: 'DStu'
requires: ["Remodel", "Mining Village"]
gainPriority: (state, my) -> [
"Province"
"Duchy" if state.gainsToEndGame() <= 5
"Estate" if state.gainsToEndGame() <= 2
"Gold"
"Remodel" if my.countInDeck("Remodel") <= 3
"Mining Village"
"Silver"
]
actionPriority: (state,my) -> [
"Remodel" if my.countInHand("Mining Village") >= 1
"Mining Village"
"Remodel" if my.countInHand("Estate") >= 1
"Remodel" if my.countInHand("Remodel") >= 1
null
]
upgradeValue: (state, choice, my) ->
[oldCard, newCard] = choice
if (oldCard == c["Gold"] && newCard == c["Province"])
return 50
if (oldCard == c["Mining Village"] && newCard == c["Gold"])
return 40
if (oldCard == c["Remodel"] && newCard == c["Gold"])
return 30
if (oldCard == c["Estate"] && newCard == c["Mining Village"])
return 20
if (oldCard == c["Estate"] && newCard == c["Remodel"] )
return 10
if (newCard == c["Curse"])
return -10
return 0
miningVillageTrashValue: (state, choice, my) ->
if 4 <= my.ai.pessimisticMoneyInHand(state) <= 6
return 1
return -1
}
gainPriority is what you would like to buy, like in Geronimoo's sim.
actionPriority is what you would like to play under which conditions
upgradeValue is for Remodel. Which pair [old, new] would you prefer most to remodel from old -> new. There must be a better way to write this, but I didn't manage
minigVillageTrashValue gives conditions for trashing the MV.
As is it looses 10:90 against BM. So have fun playing around with it.