summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2021-06-20 16:58:32 +0000
committerTor Andersson <tor@ccxvii.net>2023-02-18 12:12:42 +0100
commitb787af332542d3a88f32dbefedb0b2a37bcff6b7 (patch)
tree837ed4f02b5ca7f07dda53a0df2b752d48fdcb27 /rules.js
parent146209b0d6f101f8cfeac972dff2c68547483dc0 (diff)
downloadshores-of-tripoli-b787af332542d3a88f32dbefedb0b2a37bcff6b7.tar.gz
tripoli: More polish.
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js27
1 files changed, 19 insertions, 8 deletions
diff --git a/rules.js b/rules.js
index 9b00db2..7775207 100644
--- a/rules.js
+++ b/rules.js
@@ -307,7 +307,7 @@ function you_may_play(current, list) {
list = list.map(c => "\u201c" + CARD_NAMES[c] + "\u201d");
if (list.length == 1)
msg += list[0] + ".";
- else if (list.length)
+ else if (list.length == 2)
msg += list[0] + " or " + list[1] + ".";
else {
for (let i = 0; i < list.length-1; ++i)
@@ -558,7 +558,7 @@ function is_naval_battle_location(space) {
}
function is_naval_bombardment_location(space) {
- let n_us = count_american_frigates(space);
+ let n_us = count_american_frigates(space) + count_american_gunboats(space);
let n_tr = count_tripolitan_infantry(space);
return (n_us > 0 && n_tr > 0);
}
@@ -1050,7 +1050,10 @@ states.move_us_frigate_to = {
},
next: function () {
flush_summary("Frigates moved:");
- if (count_naval_battle_or_bombardment_locations() > 0)
+ let n = count_naval_battle_or_bombardment_locations();
+ if (n == 1)
+ auto_allocate_gunboats();
+ else if (n > 1)
goto_allocate_gunboats();
else
end_american_play();
@@ -1432,8 +1435,12 @@ function resume_naval_battle() {
log("The Tripolitan fleet has been eliminated.");
move_all_pieces(US_MARINES, BENGHAZI, TRIPOLI);
move_all_pieces(AR_INFANTRY, BENGHAZI, TRIPOLI);
- naval_bombardment_round();
- game.state = 'land_battle_bombardment_results';
+ if (is_naval_bombardment_location(game.where)) {
+ naval_bombardment_round();
+ game.state = 'land_battle_bombardment_results';
+ } else {
+ goto_land_battle();
+ }
return;
}
if (n_us == 0) {
@@ -1497,9 +1504,13 @@ states.land_battle_move_frigates = {
next: function () {
let n = count_american_frigates(game.where);
log(n + " American frigates move to " + SPACES[game.where] + ".");
- move_all_pieces(US_GUNBOATS, MALTA, game.where);
- naval_bombardment_round();
- game.state = 'land_battle_bombardment_results';
+ if (is_naval_bombardment_location(game.where)) {
+ move_all_pieces(US_GUNBOATS, MALTA, game.where);
+ naval_bombardment_round();
+ game.state = 'land_battle_bombardment_results';
+ } else {
+ goto_land_battle();
+ }
},
undo: pop_undo
}