From ac275bca44a1e766538b844c36e1f0b4cf474ac5 Mon Sep 17 00:00:00 2001 From: Tor Andersson <tor@ccxvii.net> Date: Sun, 9 Apr 2023 11:58:14 +0200 Subject: Patrol cleanup (1). --- rules.js | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/rules.js b/rules.js index 742ac08..17f926b 100644 --- a/rules.js +++ b/rules.js @@ -2647,6 +2647,7 @@ states.patrol_limop = { select_op_space(s, 0) + game.op.limop_space = s // remember destination for assault game.op.where = s game.state = "patrol_limop_move" }, @@ -2763,20 +2764,30 @@ states.patrol = { function goto_patrol_activate() { push_undo() + game.op.spaces = [] + resume_patrol_activate() +} - if (has_momentum(MOM_PLAN_COLOMBIA)) { - log("No Activation by Patrol.") +function resume_patrol_activate() { + if (can_patrol_activate()) + game.state = "patrol_activate" + else goto_patrol_assault() - return - } - - // TODO: activate per space (for maximum damage targeted tracking!) +} - // TODO: skip if nothing to activate - game.state = "patrol_activate" - game.op.count = [] +function can_patrol_activate() { + if (has_momentum(MOM_PLAN_COLOMBIA)) + return false for (let s = first_loc; s <= last_loc; ++s) - game.op.count[s - first_loc] = Math.min(count_cubes(s), count_any_underground_guerrillas(s)) + if (can_patrol_activate_space(s)) + return true + return false +} + +function can_patrol_activate_space(s) { + if (has_cube(s) && has_any_underground_guerrilla(s)) + return true + return false } states.patrol_activate = { @@ -2854,9 +2865,8 @@ states.patrol_assault = { else { view.prompt = "Patrol: Free Assault in one LoC." if (game.op.limited) { - for (let s of game.op.spaces) - if (has_assault_target(s)) - gen_action_space(s) + if (has_assault_target(game.op.limop_space)) + gen_action_space(game.op.limop_space) } else { for (let s = first_loc; s <= last_loc; ++s) if (has_assault_target(s)) -- cgit v1.2.3