From c932d2242db64cf42ff2fa88ec164e89b1210328 Mon Sep 17 00:00:00 2001 From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:35:38 +0100 Subject: offer intelligent reroll suggestions during final voting --- rules.js | 48 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 43 insertions(+), 5 deletions(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index e151672..cb5703c 100644 --- a/rules.js +++ b/rules.js @@ -1218,6 +1218,12 @@ function goto_final_voting() { log_h1("Final Voting") log(`Suffragist has ${count_green_checks()} of ${GREEN_CHECK_VICTORY} States.`) log(`Opposition has ${count_red_xs()} of ${RED_X_VICTORY} States.`) + if (game.persistent_ballot.includes(MISS_FEBB_WINS_THE_LAST_VOTE)) { + log("Suffragist wins all ties.") + } else { + log("Opposition wins all ties.") + } + game.active = SUF game.state = "final_voting_select_state" } @@ -1276,6 +1282,20 @@ function goto_final_voting_roll() { game.state = "final_voting_roll" } +function should_reroll() { + // not if you have already rolled your max + if (game.roll === game.dice) + return false + // not if your have already won, because they are broke and cant reroll + if (!opponent_buttons() && (game.roll > game.opponent_roll || (player_wins_ties() && game.roll === game.opponent_roll))) + return false + // not if your have already won, because they cant roll any higher + if (game.roll > game.opponent_dice || (player_wins_ties() && game.roll === game.opponent_dice)) + return false + // you could give it a shot + return true +} + states.final_voting_roll = { inactive: "do Final Voting.", prompt() { @@ -1298,7 +1318,7 @@ states.final_voting_roll = { view.prompt += '.' // only reroll when you can and when it makes sense - if (player_buttons() > 0 && game.roll < game.dice) + if (player_buttons() > 0 && should_reroll()) gen_action("reroll") gen_action("next") } @@ -1318,6 +1338,20 @@ states.final_voting_roll = { } } +function should_opponent_reroll() { + // not if you have already rolled your max + if (game.opponent_roll === game.opponent_dice) + return false + // not if your have already won + if (game.opponent_roll > game.roll || (player_wins_ties() && game.opponent_roll === game.roll)) + return false + // not if you cant roll a win + if (game.roll > game.opponent_dice || (!player_wins_ties() && game.roll === game.opponent_dice)) + return false + // you could give it a shot + return true +} + states.final_voting_opponent = { inactive: "do Final Voting.", prompt() { @@ -1331,7 +1365,7 @@ states.final_voting_opponent = { view.prompt += '.' // only reroll when you can and when it makes sense - if (player_buttons() > 0 && game.opponent_roll < game.opponent_dice) + if (player_buttons() > 0 && should_opponent_reroll()) gen_action("reroll") gen_action("next") }, @@ -1346,6 +1380,10 @@ states.final_voting_opponent = { const MISS_FEBB_WINS_THE_LAST_VOTE = find_card("Miss Febb Wins the Last Vote") +function player_wins_ties() { + return game.active === OPP || game.persistent_ballot.includes(MISS_FEBB_WINS_THE_LAST_VOTE) +} + function goto_final_voting_result() { clear_undo() let support_roll = game.active === OPP ? game.roll : game.opponent_roll @@ -1376,9 +1414,9 @@ function goto_final_voting_result() { else reject_nineteenth_amendment(game.selected_us_state) - log_br() - log(`Suffragist won ${count_green_checks()} of ${GREEN_CHECK_VICTORY} States.`) - log(`Opposition won ${count_red_xs()} of ${RED_X_VICTORY} States.`) + // log_br() + // log(`Suffragist won ${count_green_checks()} of ${GREEN_CHECK_VICTORY} States.`) + // log(`Opposition won ${count_red_xs()} of ${RED_X_VICTORY} States.`) game.state = "final_voting_result" } -- cgit v1.2.3