summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js23
1 files changed, 21 insertions, 2 deletions
diff --git a/rules.js b/rules.js
index 8132a93..b644ddf 100644
--- a/rules.js
+++ b/rules.js
@@ -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