From b252960c920e5f41c1b45b09c7af5c2fa0a2e300 Mon Sep 17 00:00:00 2001 From: Mischa Untaga <99098079+MischaU8@users.noreply.github.com> Date: Thu, 23 Nov 2023 11:01:11 +0100 Subject: counter strat --- events.txt | 2 +- play.html | 3 +++ play.js | 8 ++++---- rules.js | 34 ++++++++++++++++++++++++++++++++-- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/events.txt b/events.txt index fdc4130..1af104a 100644 --- a/events.txt +++ b/events.txt @@ -604,7 +604,7 @@ CARD 114 - Transportation CARD 115 - Counter Strat # Remove one card that is “in effect for the remainder of the turn” and place it in the appropriate discard pile. - todo + counter_strat CARD 116 - National Focus # Add 2 :purple_or_yellow_cube or 2 :red_cube in one state of each region. diff --git a/play.html b/play.html index 5e5587d..d70e1cb 100644 --- a/play.html +++ b/play.html @@ -214,6 +214,9 @@ div.persistent_box { } .persistent_card.support { background-color: var(--suf-85); } .persistent_card.opposition { background-color: var(--opp-85); } +.persistent_card.action { + box-shadow: 0 0 0 3px yellow; +} div.congress_box { position: absolute; diff --git a/play.js b/play.js index 0d45669..da42be1 100644 --- a/play.js +++ b/play.js @@ -634,8 +634,11 @@ function on_update() { // eslint-disable-line no-unused-vars for (let c of view[id] || []) { let elt = create("div", { className: `persistent_card ${CARDS[c].type}`, - innerHTML: sub_card_name(null, c) + innerHTML: sub_card_name(null, c), + my_card: c }) + elt.addEventListener("click", on_click_card) + elt.classList.toggle("action", is_card_enabled(c)) document.getElementById(id).appendChild(elt) } } @@ -758,9 +761,6 @@ function on_update() { // eslint-disable-line no-unused-vars action_button("pass", "Pass") action_button("done", "Done") action_button("undo", "Undo") - - // XXX - action_button("restart", "Restart") } build_user_interface() diff --git a/rules.js b/rules.js index 7da6a2b..a6ebfec 100644 --- a/rules.js +++ b/rules.js @@ -411,6 +411,10 @@ function gen_action(action, argument) { } } +function gen_action_card(c) { + gen_action("card", c) +} + function gen_action_region(r) { gen_action("region", r) } @@ -1085,12 +1089,17 @@ states.cleanup_phase = { function discard_persistent_card(cards, c) { log(`C${c} discarded.`) array_remove_item(cards, c) + + // TODO does it matter where we discard them? + // I see no value in having multiple discard piles. if (is_support_card(c)) { game.support_discard.push(c) } else if (is_opposition_card(c)) { game.opposition_discard.push(c) + } else if (game.active === SUF) { + game.support_discard.push(c) } else { - throw Error(`Unexpected card type ${c}`) + game.opposition_discard.push(c) } } @@ -2077,6 +2086,10 @@ function vm_todo() { vm_next() } +function vm_counter_strat() { + game.state = "vm_counter_strat" +} + function vm_draw_2_play_1_event() { log("TODO draw_2_play_1_event") vm_next() @@ -2632,6 +2645,23 @@ states.move_each_player_campaigner_free = { } } +states.vm_counter_strat = { + inactive: "remove a persistent event card.", + prompt() { + event_prompt("Select a persistent event card to discard.") + for (let c of game.persistent_turn) + gen_action_card(c) + + }, + card(c) { + push_undo() + discard_persistent_card(game.persistent_turn, c) + vm_next() + } +} + + + // #endregion @@ -3699,7 +3729,7 @@ CODE[114] = [ // Transportation ] CODE[115] = [ // Counter Strat - [ vm_todo ], + [ vm_counter_strat ], [ vm_return ], ] -- cgit v1.2.3