summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js18
1 files changed, 18 insertions, 0 deletions
diff --git a/rules.js b/rules.js
index d6d72f3..2b08e98 100644
--- a/rules.js
+++ b/rules.js
@@ -1494,6 +1494,16 @@ function movement_allowance(who) {
return m;
}
+function potential_movement_allowance(who) {
+ let m = piece_movement(who);
+ for_each_unit_in_force(who, p => {
+ let pm = piece_movement(p);
+ if (pm > m)
+ m = pm;
+ });
+ return m;
+}
+
function moving_piece() {
return game.move.moving;
}
@@ -2673,6 +2683,10 @@ function max_land_movement_cost() {
return game.events.foul_weather ? 2 : movement_allowance(moving_piece());
}
+function max_potential_land_movement_cost() {
+ return game.events.foul_weather ? 2 : potential_movement_allowance(moving_piece());
+}
+
function max_movement_cost(type) {
switch (type) {
case 'boat-or-land':
@@ -2806,6 +2820,8 @@ function can_infiltrate_search(type, used, carry, from, to) {
type = 'land';
}
}
+ if (used > max_movement_cost('land'))
+ type = 'boat';
}
// See if we must stop.
@@ -2910,6 +2926,8 @@ function apply_move(to) {
game.move.type = 'land';
}
}
+ if (game.move.used > max_potential_land_movement_cost('land'))
+ game.move.type = 'boat';
}
if (game.move.type === 'land' || game.move.type === 'boat-or-land') {