From 535e5a561f54287522abde5971be8ecdfe17d351 Mon Sep 17 00:00:00 2001 From: iainp5 Date: Fri, 29 Nov 2024 22:56:43 +0000 Subject: Updates for CEH and Stasi --- rules.js | 72 +++++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 39 insertions(+), 33 deletions(-) (limited to 'rules.js') diff --git a/rules.js b/rules.js index fe97cce..7bc1d0c 100644 --- a/rules.js +++ b/rules.js @@ -486,6 +486,7 @@ exports.view = function (state, player) { // === ACTIONS =========== function gen_action(action, argument) { + console.log('gen_action called with', action) if (argument === undefined) { view.actions[action] = 1 } else { @@ -628,23 +629,6 @@ states.play_card = { return } - // Check for Reformer Rehabilitated - if (game.played_card === C_REFORMER_REHABILITATED && game.playable_cards.includes(C_REFORMER_REHABILITATED)) { - if (game.active === DEM && (game.dem_tst_position > game.com_tst_position)) { - gen_action('event') - } - if (game.active === COM && (game.dem_tst_position < game.com_tst_position)) { - gen_action('event') - } - } - - // Check Common European Home - if (game.played_card === C_COMMON_EUROPEAN_HOME) { - if (ceh_card_check().length > 0) { - gen_action('event') - } - } - // Check for events if (event_is_playable(game.played_card)) { if ( @@ -697,6 +681,18 @@ states.play_card = { view.actions.event = 0 } } + + // Special check for Reformer Rehabilitated + if (game.played_card === C_REFORMER_REHABILITATED && game.playable_cards.includes(C_REFORMER_REHABILITATED)) { + if (game.active === DEM && (game.dem_tst_position > game.com_tst_position)) { + gen_action('event') + view.actions.event = 1 + } + if (game.active === COM && (game.dem_tst_position < game.com_tst_position)) { + gen_action('event') + view.actions.event = 1 + } + } gen_action('influence') gen_action('support_check') @@ -2087,7 +2083,7 @@ states.stasi_confirm_scoring_card = { }, continue() { push_undo() - end_stasi_choose_card() + end_stasi() }, } @@ -2110,8 +2106,7 @@ states.stasi_confirm = { gen_action('done') }, done() { - game.playable_cards = game.playable_cards.filter(n => n !== C_COMMON_EUROPEAN_HOME) - end_stasi_choose_card() + end_stasi() } } @@ -2162,6 +2157,7 @@ states.stasi_resolve_common_european_home = { gen_action('no') }, yes() { + push_undo() log(`Played C${game.played_card} with Common European Home`) silent_discard(C_COMMON_EUROPEAN_HOME) game.vm_infl_to_do = true @@ -2169,6 +2165,7 @@ states.stasi_resolve_common_european_home = { game.state = 'resolve_opponent_event' }, no() { + push_undo() game.state = 'play_card' }, } @@ -3135,17 +3132,21 @@ function end_stasi_choose_card() { if (game.stasi_card === C_COMMON_EUROPEAN_HOME) { game.state = 'stasi_confirm' } else { - game.round_player = COM - game.round ++ - log_h2(`Action Round ${game.round}`) - next_player() - game.valid_spaces = [] - if (game.persistent_events.includes(C_GENERAL_STRIKE)) { - log_h3('C' + C_GENERAL_STRIKE) - game.state = 'general_strike' - } else { - game.state = 'choose_card' - } + end_stasi() + } +} + +function end_stasi() { + game.round_player = COM + game.round ++ + log_h2(`Action Round ${game.round}`) + next_player() + game.valid_spaces = [] + if (game.persistent_events.includes(C_GENERAL_STRIKE)) { + log_h3('C' + C_GENERAL_STRIKE) + game.state = 'general_strike' + } else { + game.state = 'choose_card' } } @@ -3405,8 +3406,13 @@ function event_is_playable(card) { return false } // Check for Common European Home under Stasi - else if (game.stasi_card === C_COMMON_EUROPEAN_HOME && card === C_COMMON_EUROPEAN_HOME && game.active === DEM) { - return false + else if (card === C_COMMON_EUROPEAN_HOME && game.active === DEM) { + if (game.stasi_card === C_COMMON_EUROPEAN_HOME) { + return false + } else { + if (ceh_card_check().length > 0) + return true + } } // Check for Gorbachev Charms the West after Breakaway Baltic Republics -- cgit v1.2.3