summaryrefslogtreecommitdiff
path: root/rules.ts
diff options
context:
space:
mode:
authorFrans Bongers <fransbongers@franss-mbp.home>2025-01-08 20:53:51 +0100
committerFrans Bongers <fransbongers@franss-mbp.home>2025-01-08 20:53:51 +0100
commitb1a3b055df4472ff191f067f707c7722fb04d946 (patch)
treedda9a7c4d83c47a4dbfeafbf1170e1bf24a25cd4 /rules.ts
parent3ed56f482596fd4bf914bea95bd3ce46c0dcad6b (diff)
downloadland-and-freedom-b1a3b055df4472ff191f067f707c7722fb04d946.tar.gz
bugfixesHEADmaster
Diffstat (limited to 'rules.ts')
-rw-r--r--rules.ts35
1 files changed, 28 insertions, 7 deletions
diff --git a/rules.ts b/rules.ts
index d3c58ab..18bb5d3 100644
--- a/rules.ts
+++ b/rules.ts
@@ -1242,17 +1242,26 @@ states.draw_card = {
states.end_of_year_discard = {
inactive: 'discard cards from hand and tableau',
prompt() {
- view.prompt = 'Discard a card';
const faction_id = get_active_faction();
const hand = game.hands[faction_id];
const hand_limit = get_hand_limit(faction_id);
- if (hand.length > hand_limit) {
+ const needs_to_discard_from_hand = hand.length > hand_limit;
+ if (needs_to_discard_from_hand) {
for (let c of hand) gen_action_card(c);
}
const tableau = game.tableaus[faction_id];
- if (tableau.length > game.year) {
+ const needs_to_discard_from_tableau = tableau.length > game.year;
+ if (needs_to_discard_from_tableau) {
for (let c of tableau) gen_action_card(c);
}
+
+ if (needs_to_discard_from_hand && needs_to_discard_from_tableau) {
+ view.prompt = 'Discard a card from your hand or tableau';
+ } else {
+ view.prompt = `Discard a card from your ${
+ needs_to_discard_from_hand ? 'hand' : 'tableau'
+ }`;
+ }
},
card(c: CardId) {
const faction_id = get_active_faction();
@@ -2363,12 +2372,24 @@ function gain_hero_points(
}
if (
!skip_abilities &&
- ((faction_id === ANARCHISTS_ID &&
- (game.active_abilities || []).includes(ANARCHIST_EXTRA_HERO_POINT)) ||
- (faction_id === COMMUNISTS_ID &&
- (game.active_abilities || []).includes(COMMUNIST_EXTRA_HERO_POINT)))
+ faction_id === ANARCHISTS_ID &&
+ // TODO: remove || [] and replace filter with array_remove
+ (game.active_abilities || []).includes(ANARCHIST_EXTRA_HERO_POINT)
) {
value++;
+ game.active_abilities = (game.active_abilities || []).filter(
+ (ability) => ability !== ANARCHIST_EXTRA_HERO_POINT
+ );
+ }
+ if (
+ !skip_abilities &&
+ faction_id === COMMUNISTS_ID &&
+ (game.active_abilities || []).includes(COMMUNIST_EXTRA_HERO_POINT)
+ ) {
+ value++;
+ game.active_abilities = (game.active_abilities || []).filter(
+ (ability) => ability !== COMMUNIST_EXTRA_HERO_POINT
+ );
}
const gain = Math.min(game.hero_points.pool, value);
game.hero_points.pool -= gain;