diff options
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 26 |
1 files changed, 18 insertions, 8 deletions
@@ -1112,6 +1112,13 @@ function is_protected_from_conquest(s) { return false } +function has_no_generals_in_space(s) { + for (let p of all_generals) + if (game.pos[p] === s) + return false + return true +} + /* STATE */ function is_intro() { @@ -3770,10 +3777,10 @@ function end_recruit() { /* COMBAT (CHOOSE TARGETS) */ -function remove_from_combat(p) { - let s = game.pos[p] +function remove_from_combat(s) { if (game.combat) - game.combat = map_filter(game.combat, (atk, def) => atk !== s && def !== s) + if (has_no_generals_in_space(s)) + game.combat = map_filter(game.combat, (atk, def) => atk !== s && def !== s) } function goto_combat() { @@ -5692,10 +5699,11 @@ states.saxony_return_foreign_where = { gen_action_space(s) }, space(s) { - if (is_general(game.selected)) - remove_from_combat(game.selected) + let from = game.pos[game.selected] log(">P" + game.selected + " to S" + s) enter_piece_at(game.selected, s) + if (is_general(game.selected)) + remove_from_combat(from) game.selected = -1 game.state = "saxony_return_foreign_who" }, @@ -5721,11 +5729,12 @@ states.saxony_return_home = { view.actions.next = 1 }, piece(p) { - if (is_general(p)) - remove_from_combat(p) + let from = game.pos[p] let s = setup_piece_position[p] game.pos[p] = s log(">P" + p + " to S" + s) + if (is_general(p)) + remove_from_combat(from) }, next() { end_saxony_neutral() @@ -5768,9 +5777,10 @@ states.saxony_move_general = { gen_action_space(s) }, space(s) { - remove_from_combat(game.selected) + let from = game.pos[game.selected] log(">P" + game.selected + " to S" + s) enter_piece_at(game.selected, s) + remove_from_combat(from) end_saxony_neutral() }, } |