From b45568adaf73967a8ac0f4c5cc6983f1cbbdb50a Mon Sep 17 00:00:00 2001 From: Joël Simoneau Date: Tue, 1 Apr 2025 19:45:25 -0400 Subject: Better Amass logging --- play.js | 1 + rules.js | 41 +++++++++++++++++++++++++++++++++-------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/play.js b/play.js index 71b70d2..83f906b 100644 --- a/play.js +++ b/play.js @@ -1263,6 +1263,7 @@ function on_update() { // Other buttons action_button("roll", "Roll") + action_button("end_cavalry", "End Cavalry") action_button("resume", "Resume") action_button("skip", "Skip") diff --git a/rules.js b/rules.js index b51d206..79fbc50 100644 --- a/rules.js +++ b/rules.js @@ -707,8 +707,13 @@ states.main_phase = { states.cavalry = { inactive: "Gain Cavalry tokens", prompt() { - view.prompt = `Gain Cavalry: Take ${game.cav.n} Calvary token${game.cav.n > 1 ? "s" : ""}.` - gen_take_cavalry(game.current) + if (game.cav.n > 0) { + view.prompt = `Gain Cavalry: Take ${game.cav.n} Calvary token${game.cav.n > 1 ? "s" : ""}.` + gen_take_cavalry(game.current) + } else { + view.prompt = "Gain Cavalry: Done." + view.actions.end_cavalry = 1 + } }, token(c) { push_undo() @@ -717,7 +722,8 @@ states.cavalry = { set_cavalry_faction(c, game.current) if (game.cav.n === 0) end_cavalry() - } + }, + end_cavalry: end_cavalry } states.compromising_gifts = { @@ -2581,19 +2587,38 @@ states.amass = { function amass() { let n_available = Math.min(count_faction_pieces(AVAILABLE, MI), 3) - // Add three to mountain pass - log_space(S_MOUNTAIN_PASSES, "Amass") - push_summary() + let s = null for (let i = 0; i < n_available; ++i) { + s = amass_space(s) let p = find_piece(AVAILABLE, MI, TROOPS) log_summary_place(p) - place_piece(p, S_MOUNTAIN_PASSES) + place_piece(p, s) } - pop_summary() + if (game.summary) + pop_summary() amass_trinkle_down(S_MOUNTAIN_PASSES, S_PUNJAB) amass_trinkle_down(S_PUNJAB, S_DELHI) +} + +function amass_space(s) { + let s2 = null + if (count_faction_pieces(S_MOUNTAIN_PASSES, MI) < 4) + s2 = S_MOUNTAIN_PASSES + else if (count_faction_pieces(S_PUNJAB, MI) < 4) + s2 = S_PUNJAB + else + s2 = S_DELHI + if (s === s2) + return s + else { + if (game.summary) + pop_summary() + log_space(s2, "Amass") + push_summary() + return s2 + } } function amass_trinkle_down(s_source, s_dest) { -- cgit v1.2.3