From 3f07e3e2d2c7b29170cffb5d982b669d7ac67b3f Mon Sep 17 00:00:00 2001 From: Frans Bongers Date: Sat, 22 Mar 2025 14:19:48 +0100 Subject: improved game flow playing card for action points --- rules.ts | 92 ++++++++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 57 insertions(+), 35 deletions(-) (limited to 'rules.ts') diff --git a/rules.ts b/rules.ts index cb370a7..63ab7f8 100644 --- a/rules.ts +++ b/rules.ts @@ -657,6 +657,8 @@ export function setup(seed: number, _scenario: string, options: Record(); - use_morale_bonus = use_morale_bonus && game.bonuses[MORALE_BONUS] === ON; + const use_morale_bonus = game.can_use_mb === 1 && game.bonuses[MORALE_BONUS] === ON; const can_spend_hp = game.faction_turn === faction_id && game.hero_points[faction_id] > 0; @@ -1849,7 +1886,7 @@ states.player_turn = { const use_momentum = game.momentum === faction_id && src !== MOMENTUM; if (use_momentum) { gen_action('use_momentum'); - if (use_ap || use_morale_bonus || can_play_card) { + if (use_morale_bonus || can_play_card) { view.actions['use_momentum'] = 0; } } @@ -1857,7 +1894,7 @@ states.player_turn = { set_player_turn_prompt({ can_play_card, can_spend_hp, - use_ap, + use_ap: game.can_use_ap === 1, // Will not happen in this state anymore use_momentum, use_morale_bonus, }); @@ -1866,13 +1903,10 @@ states.player_turn = { gen_action('play_to_tableau'); gen_action('play_for_event'); } - if (use_ap) { - gen_action('use_ap'); - } - if (use_morale_bonus && game.bonuses[MORALE_BONUS] === ON) { + if (use_morale_bonus) { gen_action('use_morale_bonus'); } - if (!(can_play_card || use_ap || use_morale_bonus || use_momentum)) { + if (!(can_play_card || use_morale_bonus || use_momentum)) { gen_action('end_turn'); } }, @@ -1885,6 +1919,8 @@ states.player_turn = { if (game.faction_turn === faction_id) { game.faction_turn = null; game.played_card = null; + game.can_use_ap = 0; + game.can_use_mb = 0; game.engine.push(create_function_node('end_of_player_turn', { f: faction_id })); } game.selected_cards[faction_id].pop(); @@ -1897,11 +1933,13 @@ states.player_turn = { game.card_played = 1; const faction = get_active_faction(); const { strength } = play_card_to_tableau(faction); - update_active_node_args({ - use_morale_bonus: true, - use_ap: true, - strength, - }); + game.can_use_ap = 1; + game.can_use_mb = 1; + insert_before_active_node( + create_state_node('choose_area_ap', faction, { + strength, + }) + ); next(); }, play_for_event() { @@ -1916,33 +1954,17 @@ states.player_turn = { next(); }, - use_ap() { - log("Action Points:"); - const faction = get_active_faction(); - const { strength } = get_active_node_args(); - update_active_node_args({ - use_ap: false, - }); - insert_before_active_node( - create_state_node('choose_area_ap', faction, { - strength, - }) - ); - next(); - }, use_momentum() { const faction_id = get_active_faction(); game.selected_cards[faction_id].pop(); game.momentum = null; + game.can_use_ap = 0; + game.can_use_mb = 0; resolve_active_and_proceed(); }, use_morale_bonus() { log(`Morale Bonus:`) - // Update args before inserting node before current node, - // otherwise it will update args of inserted node - update_active_node_args({ - use_morale_bonus: false, - }); + game.can_use_mb = 0; insert_before_active_node( create_state_node('activate_icon', get_active_faction()) ); -- cgit v1.2.3