diff options
author | Tor Andersson <tor@ccxvii.net> | 2024-12-02 11:28:19 +0100 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-12-02 11:28:19 +0100 |
commit | 72595561e3c14688b285e59511aecb50b47e9f0d (patch) | |
tree | 76e1d8fcb7eb80be8cd5c78315c3a6068dee6741 | |
parent | 33c73232d062f0d5a1a58979a0518947769ecb3b (diff) | |
download | plantagenet-72595561e3c14688b285e59511aecb50b47e9f0d.tar.gz |
Supply from Exile Box to Port on same sea should not count distance.
... don't need to haul from the port on the same sea back to scotland!
-rw-r--r-- | rules.js | 17 | ||||
-rw-r--r-- | rules.ts | 16 |
2 files changed, 21 insertions, 12 deletions
@@ -3424,13 +3424,18 @@ function goto_supply() { game.state = "supply_source"; init_supply(); } -function modify_supply(loc, supply, report) { +function modify_supply(loc, supply, is_port_supply, report) { let here = get_lord_locale(game.command); let carts = count_shared_carts(here, true); // Must carry supply over land with one cart per provender per way - let distance = map_get(game.supply, loc, 0) >> 3; - if (distance > 0) - supply = Math.min(supply, Math.floor(carts / distance)); + if (is_exile_box(here) && is_port_supply) { + /* exception: supply from exile box to port on same sea! */ + } + else { + let distance = map_get(game.supply, loc, 0) >> 3; + if (distance > 0) + supply = Math.min(supply, Math.floor(carts / distance)); + } // Harbingers capability doubles supply received if (lord_has_capability(game.command, AOW_LANCASTER_HARBINGERS)) { if (report) @@ -3448,7 +3453,7 @@ function get_port_supply_amount(loc, report) { if (is_seaport(loc) || is_exile_box(loc)) { let here = get_lord_locale(game.command); let ships = count_shared_ships(here, true); - return modify_supply(loc, ships, report); + return modify_supply(loc, ships, true, report); } return 0; } @@ -3466,7 +3471,7 @@ function get_stronghold_supply_amount(loc, report) { logcap(AOW_YORK_STAFFORD_BRANCH); supply += 1; } - return modify_supply(loc, supply, report); + return modify_supply(loc, supply, false, report); } return 0; } @@ -4170,14 +4170,18 @@ function goto_supply() { init_supply() } -function modify_supply(loc: Locale, supply: number, report: boolean) { +function modify_supply(loc: Locale, supply: number, is_port_supply: boolean, report: boolean) { let here = get_lord_locale(game.command) let carts = count_shared_carts(here, true) // Must carry supply over land with one cart per provender per way - let distance = map_get(game.supply, loc, 0) >> 3 - if (distance > 0) - supply = Math.min(supply, Math.floor(carts / distance)) + if (is_exile_box(here) && is_port_supply) { + /* exception: supply from exile box to port on same sea! */ + } else { + let distance = map_get(game.supply, loc, 0) >> 3 + if (distance > 0) + supply = Math.min(supply, Math.floor(carts / distance)) + } // Harbingers capability doubles supply received if (lord_has_capability(game.command, AOW_LANCASTER_HARBINGERS)) { @@ -4198,7 +4202,7 @@ function get_port_supply_amount(loc: Locale, report: boolean) { if (is_seaport(loc) || is_exile_box(loc)) { let here = get_lord_locale(game.command) let ships = count_shared_ships(here, true) - return modify_supply(loc, ships, report) + return modify_supply(loc, ships, true, report) } return 0 } @@ -4220,7 +4224,7 @@ function get_stronghold_supply_amount(loc: Locale, report: boolean) { supply += 1 } - return modify_supply(loc, supply, report) + return modify_supply(loc, supply, false, report) } return 0 } |