summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2023-05-07 21:30:39 +0200
committerTor Andersson <tor@ccxvii.net>2023-05-24 21:06:18 +0200
commitb4401cc81a4264b21a10f849438174d383ebade7 (patch)
tree0344ff487ca14879e617ab4d883496cb8f328d89
parent046bcaac4ccae61b567c6e4cf8a79880127bc4c1 (diff)
downloadred-flag-over-paris-b4401cc81a4264b21a10f849438174d383ebade7.tar.gz
Event tweaks.
-rw-r--r--events.txt4
-rw-r--r--rules.js36
2 files changed, 35 insertions, 5 deletions
diff --git a/events.txt b/events.txt
index bb6cff4..279339c 100644
--- a/events.txt
+++ b/events.txt
@@ -54,6 +54,8 @@ CARD 9 - Socialist Newspaper Ban
CARD 10 - Fortification of Mont-Valérien
place_up_to 1 MONT_VALERIEN
+ # reassess control after placing the cube
+ asm update_presence_and_control()
if (is_control(MONT_VALERIEN))
may_place_disc MONT_VALERIEN
endif
@@ -100,7 +102,6 @@ CARD 18 - Paule Minck
replace 1 (where_present(MILITARY))
CARD 19 - Walery Wroblewski
- # NOTE: exact
place_disc (where_present(PARIS))
CARD 20 - Banque de France
@@ -174,7 +175,6 @@ CARD 34 - Charles Delescluze
# Neutral Cards
CARD 35 - Conciliation
- # move_between_up_to 2 PUBLIC_OPINION PARIS
prompt "Move up to 2 from Public Opinion or Paris to the other."
switch ["public_opinion","paris"]
case "public_opinion"
diff --git a/rules.js b/rules.js
index 5ee771b..e73ff63 100644
--- a/rules.js
+++ b/rules.js
@@ -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