From e0be8aea7bc4d8de52ee0e8750968d70f86c979d Mon Sep 17 00:00:00 2001 From: Frans Bongers Date: Sat, 22 Mar 2025 19:55:15 +0100 Subject: add skip button when player does not have any hand cards --- rules.js | 9 ++++++++- rules.ts | 16 +++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/rules.js b/rules.js index 175688b..bd6e116 100644 --- a/rules.js +++ b/rules.js @@ -990,6 +990,9 @@ states.play_card = { gen_action_card(c); } } + if (hand.length === 0) { + gen_action('skip'); + } }, spend_hp() { resolve_spend_hp(); @@ -1000,6 +1003,10 @@ states.play_card = { game.card_played = 0; game.played_card = game.selected_cards[faction][game.selected_cards[faction].length - 1]; log_header("C" + game.played_card, faction); + insert_after_active_node(create_state_node('player_turn', faction, { src: get_active_node_args().src })); + resolve_active_and_proceed(); + }, + skip() { resolve_active_and_proceed(); }, }; @@ -1607,6 +1614,7 @@ states.player_turn = { game.momentum = null; game.can_use_ap = 0; game.can_use_mb = 0; + game.engine.push(create_function_node('end_of_player_turn', { f: faction_id })); resolve_active_and_proceed(); }, use_morale_bonus() { @@ -2690,7 +2698,6 @@ function resolve_effect(effect, source) { resolve: () => { return create_seq_node([ create_state_node('play_card', faction, { src: source }), - create_state_node('player_turn', faction, { src: source }), ]); }, }, diff --git a/rules.ts b/rules.ts index abadd40..9484e7b 100644 --- a/rules.ts +++ b/rules.ts @@ -1261,6 +1261,9 @@ states.play_card = { gen_action_card(c); } } + if (hand.length === 0) { + gen_action('skip'); + } }, spend_hp() { resolve_spend_hp(); @@ -1273,6 +1276,12 @@ states.play_card = { // NOTE: I don't think we are using game.played_card in the UI at the moment? game.played_card = game.selected_cards[faction][game.selected_cards[faction].length - 1]; log_header("C" + game.played_card, faction); + + insert_after_active_node(create_state_node('player_turn', faction, { src: get_active_node_args().src })); + + resolve_active_and_proceed(); + }, + skip() { resolve_active_and_proceed(); }, }; @@ -1957,11 +1966,17 @@ states.player_turn = { next(); }, use_momentum() { + /** + * This will only be used in case a player gets the momentum medallion + * during their own turn. This needs to have similar functionality as + * end_turn function where game.faction_turn === faction_id + */ 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; + game.engine.push(create_function_node('end_of_player_turn', { f: faction_id })); resolve_active_and_proceed(); }, use_morale_bonus() { @@ -3345,7 +3360,6 @@ function resolve_effect(effect: Effect, source?: EffectSource): EngineNode { resolve: () => { return create_seq_node([ create_state_node('play_card', faction, { src: source }), - create_state_node('player_turn', faction, { src: source }), ]); }, }, -- cgit v1.2.3