From f4a51cda82508504662992ec8530b847482f94bf Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Sun, 23 Mar 2025 00:25:47 +0100 Subject: only claim momentum if you have enough cards in hand to use it. --- data.js | 4 +++- data.ts | 2 ++ rules.js | 18 +++++++++++++++--- rules.ts | 18 +++++++++++++++--- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/data.js b/data.js index eedacff..eaebba1 100644 --- a/data.js +++ b/data.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.MOMENTUM = exports.LIBERTY_OR_COLLECTIVIZATION = exports.COMMUNIST_EXTRA_HERO_POINT = exports.ANARCHIST_EXTRA_HERO_POINT = exports.NORTHERN = exports.SOUTHERN = exports.ARAGON = exports.MADRID = exports.ORGANIZATION_MEDALLION_ID = exports.ARCHIVES_MEDALLION_ID = exports.VOLUNTEERS_MEDALLION_ID = exports.INTELLIGENCE_MEDALLION_ID = exports.PROPAGANDA_MEDALLION_ID = exports.STRATEGY_MEDALLION_ID = exports.FRONTS = exports.DEFEAT = exports.VICTORY = exports.TRASH = exports.TOWARDS_CENTER = exports.AWAY_FROM_CENTER = exports.SELF = exports.PLAYER_WITH_MOST_HERO_POINTS = exports.OTHER_PLAYERS = exports.ON = exports.OFF = exports.TEAMWORK_BONUS = exports.MORALE_BONUS = exports.FOREIGN_AID = exports.SOVIET_SUPPORT = exports.INITIATIVE_PLAYER = exports.GOVERNMENT = exports.COLLECTIVIZATION = exports.CLOSEST_TO_VICTORY = exports.CLOSEST_TO_DEFEAT = exports.LIBERTY = exports.ANY = exports.MODERATES_ID = exports.FASCIST_ID = exports.COMMUNISTS_ID = exports.ANARCHISTS_ID = exports.MODERATE = exports.COMMUNIST = exports.ANARCHIST = exports.ALL_PLAYERS = void 0; +exports.MOMENTUM = exports.LIBERTY_OR_COLLECTIVIZATION = exports.COMMUNIST_EXTRA_HERO_POINT = exports.ANARCHIST_EXTRA_HERO_POINT = exports.NORTHERN = exports.SOUTHERN = exports.ARAGON = exports.MADRID = exports.ORGANIZATION_MEDALLION_ID = exports.ARCHIVES_MEDALLION_ID = exports.VOLUNTEERS_MEDALLION_ID = exports.INTELLIGENCE_MEDALLION_ID = exports.PROPAGANDA_MEDALLION_ID = exports.STRATEGY_MEDALLION_ID = exports.MOMENTUM_MEDALLION_ID = exports.FRONTS = exports.DEFEAT = exports.VICTORY = exports.TRASH = exports.TOWARDS_CENTER = exports.AWAY_FROM_CENTER = exports.SELF = exports.PLAYER_WITH_MOST_HERO_POINTS = exports.OTHER_PLAYERS = exports.ON = exports.OFF = exports.TEAMWORK_BONUS = exports.MORALE_BONUS = exports.FOREIGN_AID = exports.SOVIET_SUPPORT = exports.INITIATIVE_PLAYER = exports.GOVERNMENT = exports.COLLECTIVIZATION = exports.CLOSEST_TO_VICTORY = exports.CLOSEST_TO_DEFEAT = exports.LIBERTY = exports.ANY = exports.MODERATES_ID = exports.FASCIST_ID = exports.COMMUNISTS_ID = exports.ANARCHISTS_ID = exports.MODERATE = exports.COMMUNIST = exports.ANARCHIST = exports.ALL_PLAYERS = void 0; exports.create_effect = create_effect; const LIBERTY = 0; exports.LIBERTY = LIBERTY; @@ -72,6 +72,8 @@ const VICTORY = 'Victory'; exports.VICTORY = VICTORY; const DEFEAT = 'Defeat'; exports.DEFEAT = DEFEAT; +const MOMENTUM_MEDALLION_ID = 2; +exports.MOMENTUM_MEDALLION_ID = MOMENTUM_MEDALLION_ID; const STRATEGY_MEDALLION_ID = 3; exports.STRATEGY_MEDALLION_ID = STRATEGY_MEDALLION_ID; const PROPAGANDA_MEDALLION_ID = 4; diff --git a/data.ts b/data.ts index b9cb79a..de4774f 100644 --- a/data.ts +++ b/data.ts @@ -46,6 +46,7 @@ const VICTORY = 'Victory'; const DEFEAT = 'Defeat'; // Medallion ids +const MOMENTUM_MEDALLION_ID = 2; const STRATEGY_MEDALLION_ID = 3; const PROPAGANDA_MEDALLION_ID = 4; const INTELLIGENCE_MEDALLION_ID = 5; @@ -105,6 +106,7 @@ export { VICTORY, DEFEAT, FRONTS, + MOMENTUM_MEDALLION_ID, STRATEGY_MEDALLION_ID, PROPAGANDA_MEDALLION_ID, INTELLIGENCE_MEDALLION_ID, diff --git a/rules.js b/rules.js index fd1297f..a1ec804 100644 --- a/rules.js +++ b/rules.js @@ -1112,11 +1112,23 @@ states.choose_medallion = { prompt() { gen_spend_hero_points(); view.prompt = 'Claim a Medallion.'; + const faction = get_active_faction(); + var skip = true; for (let m of game.medallions[POOL_ID]) { - if (m !== null) - gen_action_medallion(m); + if (m !== null) { + if (m === data_1.MOMENTUM_MEDALLION_ID) { + if (game.hands[faction].length > game.selected_cards[faction].length) { + gen_action_medallion(m); + skip = false; + } + } + else { + gen_action_medallion(m); + skip = false; + } + } } - if (!game.medallions[POOL_ID].some((m) => m !== null)) { + if (skip) { gen_action('skip'); } }, diff --git a/rules.ts b/rules.ts index 840a412..7a9fef4 100644 --- a/rules.ts +++ b/rules.ts @@ -53,6 +53,7 @@ import data, { TOWARDS_CENTER, ARCHIVES_MEDALLION_ID, INTELLIGENCE_MEDALLION_ID, + MOMENTUM_MEDALLION_ID, ORGANIZATION_MEDALLION_ID, STRATEGY_MEDALLION_ID, PROPAGANDA_MEDALLION_ID, @@ -1403,11 +1404,22 @@ states.choose_medallion = { prompt() { gen_spend_hero_points(); view.prompt = 'Claim a Medallion.'; + const faction = get_active_faction(); + var skip = true; for (let m of game.medallions[POOL_ID]) { - if (m !== null) - gen_action_medallion(m); + if (m !== null) { + if (m === MOMENTUM_MEDALLION_ID) { + if (game.hands[faction].length > game.selected_cards[faction].length) { + gen_action_medallion(m); + skip = false; + } + } else { + gen_action_medallion(m); + skip = false; + } + } } - if (!game.medallions[POOL_ID].some((m) => m !== null)) { + if (skip) { gen_action('skip'); } }, -- cgit v1.2.3