summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2025-03-09 17:02:34 +0100
committerTor Andersson <tor@ccxvii.net>2025-03-09 17:02:34 +0100
commit59dea4f112065f499ca8ce7379953a22e52a2f48 (patch)
tree627917385651fb73d563a59b155d622dac51ed98
parentef570959b52296b7c58a9a29ccdff5aad3d0afa7 (diff)
downloadland-and-freedom-59dea4f112065f499ca8ce7379953a22e52a2f48.tar.gz
List morale bonus icons on prompt.
-rw-r--r--play.js2
-rw-r--r--rules.js42
-rw-r--r--rules.ts47
3 files changed, 86 insertions, 5 deletions
diff --git a/play.js b/play.js
index 2b439f9..e6d5b37 100644
--- a/play.js
+++ b/play.js
@@ -550,7 +550,7 @@ function on_update() { // eslint-disable-line no-unused-vars
action_button("spend_hp", "Spend Hero Points")
action_button("use_momentum", "Play second card (Momentum)")
action_button("done", "Done")
- action_button("end_turn", "End turn")
+ action_button("end_turn", "End Turn")
action_button("undo", "Undo")
for (e of action_register)
diff --git a/rules.js b/rules.js
index 7c89b4f..b371266 100644
--- a/rules.js
+++ b/rules.js
@@ -554,8 +554,10 @@ states.activate_icon = {
inactive: 'activate an icon',
prompt() {
gen_spend_hero_points();
- view.prompt = 'Choose an icon to activate';
const c = cards[game.played_card];
+ view.prompt = 'Morale Bonus: ';
+ view.prompt += join_oxford_comma(c.icons.map(get_icon_name), "or");
+ view.prompt += '.';
for (const i of c.icons) {
const count = get_icon_count_in_tableau(i);
let direction = 0;
@@ -1470,7 +1472,7 @@ function set_player_turn_prompt({ can_play_card, can_spend_hp, use_ap, use_momen
view.prompt = 'Spend Hero Points.';
}
else {
- view.prompt = 'End turn.';
+ view.prompt = 'Player Turn: Done.';
}
}
states.player_turn = {
@@ -2789,6 +2791,42 @@ function get_player_order_in_game(first_player = game.initiative) {
}
return order;
}
+function join_oxford_comma(list, conjunction) {
+ let n = list.length;
+ if (n == 0)
+ return "nothing";
+ if (n == 1)
+ return list[0];
+ if (n == 2)
+ return list[0] + " " + conjunction + " " + list[1];
+ let result = list[0];
+ for (let i = 1; i < n; ++i) {
+ result += ", ";
+ if (i == n - 1)
+ result += conjunction + " ";
+ result += list[i];
+ }
+ return result;
+}
+const icon_names = {
+ add_to_front: "+1 to Front",
+ collectivization: "Increase Collectivization",
+ foreign_aid: "Increase Foreign Aid",
+ liberty: "Increase Liberty",
+ soviet_support: "Increase Soviet Support",
+ government: "Increase Government",
+ d_collectivization: "Decrease Collectivization",
+ d_foreign_aid: "Decrease Foreign Aid",
+ d_government: "Decrease Government",
+ d_liberty: "Decrease Liberty",
+ d_soviet_support: "Decrease Soviet Support",
+ government_to_center: "Move Government to Center",
+ teamwork_on: "Turn on Teamwork Bonus",
+ draw_card: "Draw a Card",
+};
+function get_icon_name(icon) {
+ return icon_names[icon];
+}
function get_source_name(source) {
switch (source) {
case 'player_event':
diff --git a/rules.ts b/rules.ts
index 762411a..373d1cd 100644
--- a/rules.ts
+++ b/rules.ts
@@ -766,8 +766,12 @@ states.activate_icon = {
inactive: 'activate an icon',
prompt() {
gen_spend_hero_points();
- view.prompt = 'Choose an icon to activate';
const c = cards[game.played_card] as PlayerCard;
+
+ view.prompt = 'Morale Bonus: ';
+ view.prompt += join_oxford_comma(c.icons.map(get_icon_name), "or");
+ view.prompt += '.';
+
for (const i of c.icons) {
const count = get_icon_count_in_tableau(i);
let direction = 0;
@@ -1819,7 +1823,7 @@ function set_player_turn_prompt({
} else if (can_spend_hp) {
view.prompt = 'Spend Hero Points.';
} else {
- view.prompt = 'End turn.';
+ view.prompt = 'Player Turn: Done.';
}
}
@@ -3562,6 +3566,45 @@ function get_player_order_in_game(
return order;
}
+function join_oxford_comma(list: string[], conjunction: string) {
+ let n = list.length
+ if (n == 0)
+ return "nothing";
+ if (n == 1)
+ return list[0];
+ if (n == 2)
+ return list[0] + " " + conjunction + " " + list[1];
+ let result = list[0];
+ for (let i = 1; i < n; ++i) {
+ result += ", ";
+ if (i == n - 1)
+ result += conjunction + " "
+ result += list[i];
+ }
+ return result
+}
+
+const icon_names = {
+ add_to_front: "+1 to Front",
+ collectivization: "Increase Collectivization",
+ foreign_aid: "Increase Foreign Aid",
+ liberty: "Increase Liberty",
+ soviet_support: "Increase Soviet Support",
+ government: "Increase Government",
+ d_collectivization: "Decrease Collectivization",
+ d_foreign_aid: "Decrease Foreign Aid",
+ d_government: "Decrease Government",
+ d_liberty: "Decrease Liberty",
+ d_soviet_support: "Decrease Soviet Support",
+ government_to_center: "Move Government to Center",
+ teamwork_on: "Turn on Teamwork Bonus",
+ draw_card: "Draw a Card",
+}
+
+function get_icon_name(icon: Icon): string {
+ return icon_names[icon]
+}
+
function get_source_name(source: EffectSource): string {
switch (source) {
case 'player_event':