I think the 5/2 Coppersmith definitely counts for OBM Coppersmith, particularly because anything else would presumably do worse and therefore be non-optimal. I've added it to Dominiate.
While we're on unpopular cards, here's my OBM Chancellor. I've included the rule of when to use the Chancellor to reshuffle, and also made it the default Chancellor rule, so that a bot that uses Chancellor well doesn't actually have to have this card-counting code in it.
{
name: 'BM+Chancellor2'
author: 'rspeer'
gainPriority: (state, my) -> [
"Province" if my.getTotalMoney() > 18 \
or state.gainsToEndGame() <= 7
"Duchy" if state.gainsToEndGame() <= 4
"Estate" if state.gainsToEndGame() <= 2
"Gold"
"Duchy" if state.gainsToEndGame() <= 7
"Chancellor" if my.countInDeck("Chancellor") < 1
"Silver"
]
# Here, we decide to reshuffle (returning a reshuffleValue over 0) when most
# of the non-Action, non-Treasure cards are in the draw pile, or when there
# are no such cards in the deck.
reshuffleValue: (state, choice, my) ->
junkToDraw = 0
totalJunk = 0
for card in my.draw
if not (card.isAction or card.isTreasure)
junkToDraw++
for card in my.getDeck()
if not (card.isAction or card.isTreasure)
totalJunk++
return 1 if (totalJunk == 0)
proportion = junkToDraw/totalJunk
return (proportion - 0.5)
}
I implemented a version that borrows Geronimoo's simulator's rule, which is to always reshuffle: reshuffleValue: (state, choice, my) -> 1. OBM Chancellor unsuprisingly beats it 51.8 - 49.2%. Of course, as this simulation is taking place inside Dominiate, where things like the anti-suicide rule don't exist yet, the Straw Man Anti-Defamation League has lodged a complaint against my research methods.
EDITED: Buying Duchies for 5 as soon as the Province race begins (gainsToEndGame <= 7) turns out to work for OBM Chancellor, as it can often skip them.