diff options
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 23 |
1 files changed, 21 insertions, 2 deletions
@@ -1753,6 +1753,7 @@ states.ops_british_reinforcements_where = { view.prompt = "Reinforcements: choose a port space." view.prompt += " Carrying " + game.count + " British CU." view.move = { from: BRITISH_REINFORCEMENTS, to: BRITISH_REINFORCEMENTS, who: game.who, carry_british: game.count } + view.selected_general = game.who gen_british_reinforcements_where() }, drop_british_cu() { @@ -1795,6 +1796,7 @@ states.ops_american_reinforcements_where = { prompt() { view.prompt = "Reinforcements: choose a space." view.move = { from: AMERICAN_REINFORCEMENTS, to: AMERICAN_REINFORCEMENTS, who: game.who, carry_american: game.count } + view.selected_general = game.who gen_american_reinforcements_where(game.who) }, space(space) { @@ -2097,6 +2099,8 @@ states.ops_general_move = { format_move_prompt() view.prompt += " " + game.move.count + " MP left." + view.selected_general = view.move.who + // Cannot stop on enemy general if (!has_enemy_general(location_of_general(game.move.who))) view.actions.stop = 1 @@ -2187,6 +2191,7 @@ states.confirm_move_intercept = { prompt() { format_move_prompt() view.prompt += " You may be intercepted." + view.selected_general = view.move.who view.actions.next = 1 }, next() { @@ -2198,6 +2203,7 @@ states.confirm_move_battle = { prompt() { format_move_prompt() view.prompt += " Approach battle?" + view.selected_general = view.move.who view.actions.next = 1 }, next() { @@ -2407,11 +2413,13 @@ states.intercept_who = { states.intercept_roll = { prompt() { - view.prompt = "Intercept " + game.move.who + " at " + game.move.to + "?" + view.prompt = "Intercept " + general_name(game.move.who) + " at " + space_name(game.move.to) + " with " + general_name(game.intercept.who) + "?" + view.selected_general = game.intercept.who view.react = game.intercept view.actions.roll = 1 }, roll() { + clear_undo() let g = game.intercept.who let die = roll_d6() if (die <= GENERALS[g].agility) { @@ -2427,7 +2435,9 @@ states.intercept_roll = { } else { log(g + " failed to intercept (" + die + " > " + GENERALS[g].agility + ")") delete game.intercept - if (!can_intercept_to(game.move.to)) + if (can_intercept_to(game.move.to)) + game.state = "intercept_who" + else end_intercept() } }, @@ -2499,6 +2509,7 @@ function goto_retreat_before_battle() { states.retreat_before_battle = { prompt() { view.prompt = "Attempt retreat before battle?" + view.selected_general = find_american_or_french_general(game.move.to) view.actions.pass = 1 gen_defender_retreat() }, @@ -2514,6 +2525,7 @@ states.retreat_before_battle = { game.state = "retreat_before_battle_roll" }, pass() { + clear_undo() end_retreat_before_battle() }, } @@ -2521,6 +2533,7 @@ states.retreat_before_battle = { states.retreat_before_battle_roll = { prompt() { view.prompt = "Attempt retreat before battle?" + view.selected_general = find_american_or_french_general(game.move.to) view.react = game.retreat view.actions.roll = 1 // TODO: choose which CU to retreat with if mix of french/american @@ -3075,6 +3088,11 @@ function gen_defender_retreat() { let is_lone = is_general_without_cu(here) let can_retreat = false + if (game.active === P_BRITAIN) + view.selected_general = find_british_general(here) + else + view.selected_general = find_american_or_french_general(here) + for (let to of SPACES[here].adjacent) { if (can_defender_retreat(to, is_lone)) { gen_action_space(to) @@ -3100,6 +3118,7 @@ function gen_defender_retreat() { } function gen_attacker_retreat() { + view.selected_general = game.move.who if (can_attacker_retreat()) gen_action_space(game.move.from) else |