diff options
author | Tor Andersson <tor@ccxvii.net> | 2023-05-07 21:30:39 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2023-05-24 21:06:18 +0200 |
commit | b4401cc81a4264b21a10f849438174d383ebade7 (patch) | |
tree | 0344ff487ca14879e617ab4d883496cb8f328d89 /rules.js | |
parent | 046bcaac4ccae61b567c6e4cf8a79880127bc4c1 (diff) | |
download | red-flag-over-paris-b4401cc81a4264b21a10f849438174d383ebade7.tar.gz |
Event tweaks.
Diffstat (limited to 'rules.js')
-rw-r--r-- | rules.js | 36 |
1 files changed, 33 insertions, 3 deletions
@@ -752,7 +752,7 @@ function find_available_cube(removed=0) { if (p >= 0) return p } - for (let i = 0; i < 3; ++i) { + for (let i = 2; i >= 0; --i) { p = find_commune_cube(RED_CUBE_POOL[i]) if (p >= 0) return p @@ -1490,10 +1490,14 @@ states.operations_done = { } function end_operations() { - if (game.vm) + if (game.vm) { vm_next() - else + // Fast-forward past "All done" if Ops was the last thing in an event. + if (game.state === "vm_return") + end_event() + } else { end_card_play() + } } // === SET ASIDE CARDS === @@ -1554,6 +1558,7 @@ states.bonus_action = { let dimension = DIMENSION_SPACES[game.where] view.prompt = "Bonus Action in " + DIMENSION_NAME[game.where] + "." view.where = game.where + view.actions.skip = 1 view.actions.de_escalate = 1 view.actions.spread_influence = 1 if (can_replace_cube_in_any(dimension)) @@ -1575,6 +1580,9 @@ states.bonus_action = { push_undo() game.state = "turncoat" }, + skip() { + resume_pivotal_space_bonus_actions() + }, } states.de_escalate_1 = { @@ -1867,6 +1875,7 @@ function resume_final_crisis() { if (game.red_hand.length === 0 && game.blue_hand.length === 0) { goto_pivotal_space_bonus_actions() } else { + game.state = "final_crisis_events" game.active = game.final_active game.active = enemy_player() } @@ -1972,6 +1981,7 @@ function goto_play_event(c) { function end_event() { if (is_objective_card(game.vm.fp)) { + assess_crisis_breach_all() game.vm = null resume_objective_card_events() } else { @@ -2506,6 +2516,26 @@ states.vm_remove = { }, } +states.vm_remove_own = { + prompt() { + event_prompt() + if (game.vm.upto) + view.actions.skip = 1 + for (let s of game.vm.spaces) + for_each_friendly_cube(s, gen_action_piece) + }, + piece(p) { + push_undo() + remove_piece(p) + if (--game.vm.count === 0) + vm_next() + }, + skip() { + push_undo() + vm_next() + }, +} + function can_vm_move() { let from = false let to = false |