diff options
author | Tor Andersson <tor@ccxvii.net> | 2024-04-21 20:10:52 +0200 |
---|---|---|
committer | Tor Andersson <tor@ccxvii.net> | 2024-04-21 20:11:57 +0200 |
commit | 3cfa67bb3f76a0937b6a1d163eb2537899b0b1d7 (patch) | |
tree | 42966964eb044c2beafcc45ce59a5394c343ba04 | |
parent | a22a048d65c158fd0db8968bb202ffbe9086f34c (diff) | |
download | plantagenet-3cfa67bb3f76a0937b6a1d163eb2537899b0b1d7.tar.gz |
Escape Ship search.
-rw-r--r-- | rules.ts | 31 |
1 files changed, 13 insertions, 18 deletions
@@ -7285,8 +7285,6 @@ function goto_battle_influence() { // === 4.4.3 ENDING THE BATTLE: LOSSES === -// TODO: should we bother to roll for losses on lords whose retinue has routed? - function has_battle_losses() { for (let lord of all_friendly_lords()) if (lord_has_routed_troops(lord)) @@ -7633,34 +7631,30 @@ states.bloody_thou_art = { // === DEATH CHECK EVENT: ESCAPE SHIP === function can_play_escape_ship() { - return can_escape_at(game.battle.where) -} - -function can_escape_at(here: Locale) { - if (game.active === YORK && has_york_favour(here) && is_seaport(here)) - return true - if (game.active === LANCASTER && has_lancaster_favour(here) && is_seaport(here)) - return true - if (search_escape_ship(here)) - return true + let here = game.battle.where + if (is_friendly_locale(here)) { + if (is_seaport(here)) + return true + if (search_escape_ship(here)) + return true + } return false } function search_escape_ship(start: Locale) { search_seen.fill(0) search_seen[start] = 1 - let queue = [start] + + let queue = [ start ] while (queue.length > 0) { let here = queue.shift() - // Check if the current locale is a seaport - if (is_seaport(here)) { + if (is_seaport(here)) return true - } - if (is_friendly_locale(here)) { - for (let next of data.locales[here].adjacent) { + for (let next of data.locales[here].adjacent) { + if (is_friendly_locale(next)) { if (!search_seen[next]) { search_seen[next] = 1 queue.push(next) @@ -7668,6 +7662,7 @@ function search_escape_ship(start: Locale) { } } } + return false } |