diff options
author | Tor Andersson <tor@ccxvii.net> | 2024-08-25 15:52:37 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-08-25 15:54:43 +0200 |
commit | b19502415f995d1a6cd263bd641e32ef3942e3f7 (patch) | |
tree | cc751c78c8fc111d8cb2b5a2f1b71b46bfd794b6 | |
parent | 1e6e60e00f80bd82b55212a23021a3e4f03d12bc (diff) | |
download | washingtons-war-b19502415f995d1a6cd263bd641e32ef3942e3f7.tar.gz |
Capture of George Washington removes 5 PC - max one per colony!
-rw-r--r-- | rules.js | 38 |
1 files changed, 29 insertions, 9 deletions
@@ -66,6 +66,7 @@ const AMERICAN_REINFORCEMENTS = data.space_index["American Leader Reinforcements const FRENCH_REINFORCEMENTS = data.space_index["French Reinforcements"] const NOWHERE = data.spaces.length +const ALL_COLONIES = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] const THE_13_COLONIES = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ] const SOUTH_OF_WINTER_ATTRITION_LINE = [ 11, 12, 13 ] @@ -930,6 +931,26 @@ function filter_place_american_pc_in_colony(list_of_colonies) { return result } +function gen_remove_american_pc_in_colony(list_of_colonies) { + for (let colony of list_of_colonies) + for (let space of COLONIES[colony]) + if (has_american_pc(space) && has_no_american_unit(space)) + gen_action_space(space) +} + +function filter_remove_american_pc_in_colony(list_of_colonies) { + let result = [] + for (let colony of list_of_colonies) { + for (let space of COLONIES[colony]) { + if (has_american_pc(space) && has_no_american_unit(space)) { + result.push(colony) + break + } + } + } + return result +} + /* REMOVE GENERAL (STACKING) */ function prompt_remove_general(where) { @@ -3689,29 +3710,27 @@ function goto_george_washington_captured() { game.state = "george_washington_captured" game.save = game.active game.active = P_BRITAIN - game.count = 5 + game.colonies = filter_remove_american_pc_in_colony(ALL_COLONIES) + game.count = Math.min(5, game.colonies.length) delete game.washington_captured + if (game.count === 0) + game.state = "george_washington_captured_done" } states.george_washington_captured = { inactive: "to remove PC markers", prompt() { view.prompt = "George Washington captured! Remove American PC markers. " + game.count + " left." - for (let space of all_spaces) - if (has_american_pc(space) && has_no_american_unit(space)) - gen_action_space(space) - view.actions.pass = 1 + gen_remove_american_pc_in_colony(game.colonies) }, space(where) { push_undo() remove_pc(where) + let colony = SPACES[where].colony + set_delete(game.colonies, colony) if (--game.count === 0) game.state = "george_washington_captured_done" }, - pass() { - push_undo() - game.state = "george_washington_captured_done" - }, } states.george_washington_captured_done = { @@ -3728,6 +3747,7 @@ states.george_washington_captured_done = { function end_george_washington_captured() { game.active = game.save + delete game.colonies delete game.save if (game.active === P_AMERICA) { // skip end turn pause after britain removed washington at end of strategy card |