summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2025-03-08 16:30:14 +0100
committerTor Andersson <tor@ccxvii.net>2025-03-08 16:33:30 +0100
commit9a05c2d2ca2b16dd0c80614ef48944b1440d6b0f (patch)
treeeda278d14b4e3d8ad4128d3bc18b810d7ec67030 /rules.js
parentf09742d99d19ce0af287f0fe363b20d28f8b22c2 (diff)
downloadland-and-freedom-9a05c2d2ca2b16dd0c80614ef48944b1440d6b0f.tar.gz
Prefix prompt with event names.
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js60
1 files changed, 31 insertions, 29 deletions
diff --git a/rules.js b/rules.js
index 25d80b0..6970da0 100644
--- a/rules.js
+++ b/rules.js
@@ -189,9 +189,9 @@ function end_of_player_turn() {
function start_of_player_turn() {
const args = get_active_node_args();
const player = faction_player_map[args.f];
- log_h2(player, player);
game.faction_turn = args.f;
game.played_card = game.selected_cards[args.f][0];
+ log_h2(cards[game.played_card].title, player);
resolve_active_and_proceed();
}
const engine_functions = {
@@ -521,8 +521,7 @@ function start_turn() {
const cardId = draw_fascist_card();
game.current_events.push(cardId);
const card = cards[cardId];
- log_h2('Fascist Event', 'fascist');
- log(card.title);
+ log_h2(card.title, 'fascist');
game.fascist = 1;
game.engine = card.effects.map((effect) => resolve_effect(effect, 'fascist_event'));
if (game.year === 3 && game.turn === 4) {
@@ -1500,7 +1499,7 @@ states.player_turn = {
},
play_to_tableau() {
const faction = get_active_faction();
- const { strength } = play_card(faction, 'play_to_tableau');
+ const { strength } = play_card_to_tableau(faction);
update_active_node_args({
use_morale_bonus: true,
use_ap: true,
@@ -1510,11 +1509,11 @@ states.player_turn = {
},
play_for_event() {
const faction = get_active_faction();
- const { effects } = play_card(faction, 'play_for_event');
+ const { effects } = play_card_for_event(faction);
update_active_node_args({
resolving_event: true,
});
- const node = create_effects_node(effects);
+ const node = create_effects_node(effects, 'player_event');
node.c.push(create_function_node('end_resolving_event_effects'));
insert_before_active_node(node);
next();
@@ -2233,21 +2232,26 @@ function get_hand_limit(faction) {
}
return hand_limit;
}
-function play_card(faction, type) {
+function play_card_for_event(faction) {
const index = game.selected_cards[faction].length - 1;
const card_id = game.selected_cards[faction][index];
const card = cards[card_id];
game.played_card = card_id;
array_remove(game.hands[faction], game.hands[faction].indexOf(card_id));
array_remove(game.selected_cards[faction], index);
- if (type === 'play_for_event') {
- log_h3(`${game.active} plays ${card.title} for the Event`);
- game.trash[faction].push(card_id);
- }
- else {
- log_h3(`${game.active} plays ${card.title} to their Tableau`);
- game.tableaus[faction].push(card_id);
- }
+ log("Played for Event:");
+ game.trash[faction].push(card_id);
+ return card;
+}
+function play_card_to_tableau(faction) {
+ const index = game.selected_cards[faction].length - 1;
+ const card_id = game.selected_cards[faction][index];
+ const card = cards[card_id];
+ game.played_card = card_id;
+ array_remove(game.hands[faction], game.hands[faction].indexOf(card_id));
+ array_remove(game.selected_cards[faction], index);
+ log("Played to Tableau:");
+ game.tableaus[faction].push(card_id);
return card;
}
function resolve_fascist_test() {
@@ -2479,9 +2483,9 @@ function victory_on_a_front(front_id) {
log('Victory on ' + get_front_name(front_id));
gain_hero_points_in_player_order(game.fronts[front_id].contributions, 3);
}
-function create_effects_node(effects) {
+function create_effects_node(effects, source) {
const nodes = effects.reduce((accrued, current) => {
- const node = resolve_effect(current);
+ const node = resolve_effect(current, source);
if (node !== null) {
accrued.push(node);
}
@@ -2677,7 +2681,7 @@ function logi(msg) {
}
function log_h1(msg) {
log_br();
- log('.h1 ' + msg);
+ log('#t ' + msg);
log_br();
}
function log_h2(msg, player) {
@@ -2689,11 +2693,8 @@ function log_h3(msg) {
log_br();
log('.h3 ' + msg);
}
-function lowerCaseFirstLetter(val) {
- return String(val).charAt(0).toLowerCase() + String(val).slice(1);
-}
function add_prompt_prefix(prompt, prefix) {
- return `${prefix}: ${lowerCaseFirstLetter(prompt)}`;
+ return `${prefix}: ${prompt}`;
}
function get_active_faction() {
return player_faction_map[game.active];
@@ -2770,13 +2771,14 @@ function get_player_order_in_game(first_player = game.initiative) {
return order;
}
function get_source_name(source) {
- const prefix_map = {
- fascist_event: 'Fascist Event',
- fascist_test: 'Fascist Test',
- track_icon: 'Track Trigger',
- momentum: 'Momentum',
- };
- return prefix_map[source];
+ switch (source) {
+ case 'player_event': return cards[game.played_card].title;
+ case 'fascist_event': return cards[game.current_events[game.current_events.length - 1]].title;
+ case 'fascist_test': return 'Fascist Test';
+ case 'track_icon': return 'Track Trigger';
+ case 'momentum': return 'Momentum';
+ }
+ return '???';
}
function get_factions_with_most_hero_poins() {
let most_hero_points = null;