I think Sab is a threadt here, if it comes from an engine. You have moderate trashing with Moneylender and Doctor, the engine is expensive with BV and HG, but HG does not need as many actions to draw many cards, so it should not be too hard to play 3 Sabs/turn. Ignoring Duchy/Duke yourself, it should be hard for a Duke player to three pile soon, and the engine should destroy the Duke's deck.
edit:
{
name: 'engine'
author: 'DStu'
requires: ["Border Village", "Hunting Grounds", "Moneylender", "Saboteur"]
gainPriority: (state, my) -> [
"Province" if my.countInDeck("Saboteur") >= 3
"Moneylender" if my.countInDeck("Moneylender") < 1
"Gold" if my.countInDeck("Gold") < 2
"Silver" if my.countInDeck("Silver") < 2
"Hunting Grounds" if my.countInDeck("Hunting Grounds") < Math.min(3, my.countInDeck("Border Village"))
"Border Village"
"Saboteur" if my.countInDeck("Saboteur") < 3
]
}
wins 6:4 against
{
name: 'Duke'
author: 'DStu'
requires: ["Duke", "Duchess"]
gainPriority: (state, my) -> [
"Duchy"
"Duke"
"Silver"
"Duchess"
]
}
(both bots first tries not optimized. Hunting Grounds might not exist as a card on the official dominiate server)