diff options
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 26 |
1 files changed, 19 insertions, 7 deletions
@@ -739,6 +739,7 @@ function release_hex_control(a) { set_delete(game.allied_sides, side) } }) + hide_units_in_hex(a) } function claim_hex_control_for_defender(a) { @@ -4221,10 +4222,14 @@ states.retreat_move = { } function end_retreat() { - if (!is_battle_hex(game.retreat)) { - release_hex_control(game.retreat) - hide_units_in_hex(game.retreat) + if ((game.to1 || game.to2) && game.forced.length > 0) { + // Don't release in case a forced march regroup teleports units back into battle. + // Wait until goto_combat_phase to release these hexes. + } else { + if (!is_battle_hex(game.retreat)) + release_hex_control(game.retreat) } + game.retreat_units = null // mark shielding units as moved @@ -4489,7 +4494,6 @@ function end_rout() { log_br() game.state = game.rout.state release_hex_control(game.rout.from) - hide_units_in_hex(game.rout.from) set_delete(game.new_battles, game.rout.from) @@ -4513,9 +4517,19 @@ function is_mandatory_combat(fortress) { return false } +function release_retreat_hex_control() { + for (let x of all_hexes) + if (!is_battle_hex(x)) + if (set_has(game.axis_hexes, x) || set_has(game.allied_hexes, x)) + release_hex_control(x) +} + function goto_combat_phase() { set_active_player() + // Release hexes that were retreated from here + release_retreat_hex_control() + reveal_visited_minefields() if (game.turn_option === 'pass') { @@ -4764,10 +4778,8 @@ function goto_battle(x) { } function end_battle() { - if (!is_battle_hex(game.battle)) { + if (!is_battle_hex(game.battle)) release_hex_control(game.battle) - hide_units_in_hex(game.battle) - } set_delete(game.new_battles, game.battle) set_delete(game.active_battles, game.battle) |