diff options
author | Tor Andersson <tor@ccxvii.net> | 2022-02-13 00:37:29 +0100 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2022-11-16 19:19:39 +0100 |
commit | c798b7fa59579eea4c5823925e43b15658a30095 (patch) | |
tree | a161617d8a95874e0fc3259d4d483a31eef0a243 | |
parent | 5e29594090b0d5a0f41cbad2c50ddaefbd8c288a (diff) | |
download | crusader-rex-c798b7fa59579eea4c5823925e43b15658a30095.tar.gz |
Add "Iron Bridge" optional rule.
-rw-r--r-- | create.html | 10 | ||||
-rw-r--r-- | data.js | 3 | ||||
-rw-r--r-- | rules.js | 21 |
3 files changed, 29 insertions, 5 deletions
diff --git a/create.html b/create.html index e69de29..a9b870a 100644 --- a/create.html +++ b/create.html @@ -0,0 +1,10 @@ +<p> +Optional rules: +<dl> +<dt> +<label> +<input type="checkbox" name="iron_bridge" value="true"> +Iron Bridge +</label> +<dd>The road between Antioch and Harim has a move limit of 3. +</dl> @@ -337,10 +337,11 @@ const PORTS = []; TOWNS[B].exits.push(A); } + function iron_bridge(A,B) { road(A,B,"iron-bridge"); } function major(A,B) { road(A,B,"major"); } function minor(A,B) { road(A,B,"minor"); } - major("Antioch", "Harim"); + iron_bridge("Antioch", "Harim"); major("Harim", "Artah"); major("Artah", "Aleppo"); major("Aleppo", "Zerdana"); @@ -659,13 +659,24 @@ function is_pinned(who, from) { function can_block_use_road(from, to) { if (game.active === game.guide) { switch (road_type(from, to)) { - case 'major': return road_limit(from, to) < 8; - case 'minor': return road_limit(from, to) < 4; + case 'iron-bridge': + // https://boardgamegeek.com/thread/744750/20-rules-iron-bridge-question + case 'major': + return road_limit(from, to) < 8; + case 'minor': + return road_limit(from, to) < 4; } } else { switch (road_type(from, to)) { - case 'major': return road_limit(from, to) < 4; - case 'minor': return road_limit(from, to) < 2; + case 'iron-bridge': + if (game.iron_bridge) + return road_limit(from, to) < 3; + else + return road_limit(from, to) < 4; + case 'major': + return road_limit(from, to) < 4; + case 'minor': + return road_limit(from, to) < 2; } } return false; @@ -3752,6 +3763,8 @@ exports.setup = function (seed, scenario, options) { where: null, undo: [], } + if (options && options.iron_bridge) + game.iron_bridge = 1; setup_game(); return game; } |