private static bool PreferMoneyOverDuchy(DefaultPlayerAction playerAction, GameState gameState)
{
if (!gameState.GetPile(Dominion.Cards.Duchy).Any)
return true;
int minCoin = gameState.Self.ExpectedCoinValueAtEndOfTurn;
int maxCoin = minCoin + 3;
Card mostExpensiveCard = playerAction.purchaseOrder.GetPreferredCard(gameState, card => card.CurrentCoinCost(gameState.Self) > minCoin && card.CurrentCoinCost(gameState.Self) <= maxCoin);
Card thatOrDuchy = playerAction.purchaseOrder.GetPreferredCard(gameState, card => card == Dominion.Cards.Duchy || card == mostExpensiveCard);
if (mostExpensiveCard != null && thatOrDuchy != Dominion.Cards.Duchy)
return true;
return false;
}