summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js132
1 files changed, 63 insertions, 69 deletions
diff --git a/rules.js b/rules.js
index 6cd2aea..005d4b1 100644
--- a/rules.js
+++ b/rules.js
@@ -20,13 +20,13 @@ const MISS = [ "0", "\u2460", "\u2461", "\u2462", "\u2463", "\u2464", "\u2465" ]
function range(x) {
switch (x) {
- case 0: return "0"
- case 1: return "1"
- case 2: return "1-2"
- case 3: return "1-3"
- case 4: return "1-4"
- case 5: return "1-5"
- case 6: return "Automatic success"
+ case 0: return "0"
+ case 1: return "1"
+ case 2: return "1-2"
+ case 3: return "1-3"
+ case 4: return "1-4"
+ case 5: return "1-5"
+ case 6: return "Automatic success"
}
}
@@ -1418,39 +1418,36 @@ function can_add_troops(lordwho, locale) {
}
function can_add_troops_beloved_warwick(lordwho, locale) {
- if (!has_exhausted_marker(locale) &&
- !is_exile(locale) &&
- lord_has_capability(lordwho, AOW_YORK_BELOVED_WARWICK)
+ return (
+ lord_has_capability(lordwho, AOW_YORK_BELOVED_WARWICK) &&
+ !has_exhausted_marker(locale) &&
+ !is_exile(locale)
)
- return true
- else
- return false
}
+
function can_add_troops_irishmen(lordwho, locale) {
- if (
- (!has_exhausted_marker(locale) &&
- (locale === LOC_IRELAND || data.port_3.includes(locale))) &&
- lord_has_capability(lordwho, AOW_YORK_IRISHMEN)
+ return (
+ lord_has_capability(lordwho, AOW_YORK_IRISHMEN) &&
+ !has_exhausted_marker(locale) &&
+ (locale === LOC_IRELAND || data.port_3.includes(locale))
)
- return true
- else
- return false
}
function can_add_troops_sof(lordwho, locale) {
- let number = 6
- for (let lord = first_friendly_lord; lord <= last_friendly_lord; ++lord) {
- number -= get_lord_forces(lord, MERCENARIES)
+ if (
+ lord_has_capability(lordwho, AOW_YORK_SOLDIERS_OF_FORTUNE) &&
+ !has_exhausted_marker(locale) &&
+ !is_exile(locale) &&
+ // TODO: get_shared_assets includes lord's own assets -- simplify?
+ (get_lord_assets(lordwho, COIN) > 0 || get_shared_assets(lordwho, COIN) > 0)
+ ) {
+ let number = 6
+ for (let lord = first_friendly_lord; lord <= last_friendly_lord; ++lord)
+ number -= get_lord_forces(lord, MERCENARIES)
+ if (number >= 1)
+ return true
}
- if (!has_exhausted_marker(locale) &&
- !is_exile(locale) &&
- lord_has_capability(lordwho, AOW_YORK_SOLDIERS_OF_FORTUNE) &&
- (get_lord_assets(lordwho, COIN) > 0 || get_shared_assets(lordwho, COIN) > 0) &&
- number >= 1
- )
- return true
- else
- return false
+ return false
}
function can_add_transport(who, what) {
@@ -2042,9 +2039,9 @@ function setup_II_Y() {
setup_vassals([ VASSAL_DEVON, VASSAL_OXFORD ])
-// TODO: Add Foreign Haven rule
-// TODO: Add Skaky Allies rules
-// TODO: Natural causes rule
+ // TODO: Add Foreign Haven rule
+ // TODO: Add Skaky Allies rules
+ // TODO: Natural causes rule
}
@@ -2171,9 +2168,9 @@ function setup_II_L() {
setup_vassals([ VASSAL_DEVON, VASSAL_OXFORD ])
-// TODO: Add Foreign Haven rule
-// TODO: Add Shaky Allies rules
-// TODO: Natural causes rule
+ // TODO: Add Foreign Haven rule
+ // TODO: Add Shaky Allies rules
+ // TODO: Natural causes rule
}
@@ -4753,7 +4750,7 @@ states.levy_muster_lord = {
add_lord_assets(game.who, SHIP, 1)
if (eligible_kings_name()) {
goto_kings_name("Levy Ship")
- }
+ }
else {
resume_levy_muster_lord()
}
@@ -6151,7 +6148,6 @@ function is_wales_forbidden_to_enemy(loc) {
return false
}
-
function can_march_to(to) {
if (is_wales_forbidden(to))
return false
@@ -6964,7 +6960,7 @@ states.select_supply_type = {
roll_naval_blockade()
}
else {
- use_port_supply(game.where, get_port_supply_amount(game.where))
+ use_port_supply(game.where, get_port_supply_amount(game.where))
}
},
}
@@ -7540,16 +7536,15 @@ function end_exile_pact() {
resume_command()
}
-
// === CAPABILITY : NAVAL BLOCKADE
-
+
function check_naval_blockade(action, locale) {
let ports = [data.port_1, data.port_2, data.port_3]
game.what = action
- if (!lord_has_capability(LORD_WARWICK_Y, AOW_YORK_NAVAL_BLOCKADE) || !is_seaport(get_lord_locale(LORD_WARWICK_Y)) || is_exile(get_lord_locale(LORD_WARWICK_Y))) {
- return false
- }
+ if (!lord_has_capability(LORD_WARWICK_Y, AOW_YORK_NAVAL_BLOCKADE) || !is_seaport(get_lord_locale(LORD_WARWICK_Y)) || is_exile(get_lord_locale(LORD_WARWICK_Y))) {
+ return false
+ }
for (let port of ports) {
if (set_has(port, get_lord_locale(LORD_WARWICK_Y)) && set_has(port, locale)) {
return true
@@ -7561,7 +7556,7 @@ function roll_naval_blockade() {
push_state("naval_blockade")
}
-// Parley, and Tax
+// Parley, and Tax
states.naval_blockade = {
inactive: "Naval Blockade",
prompt() {
@@ -7577,7 +7572,7 @@ states.naval_blockade = {
logi(`Successfully overran C${AOW_YORK_NAVAL_BLOCKADE}`)
if (game.what === "levy ship") {
add_lord_assets(game.who, SHIP, 1)
- }
+ }
if (game.what === "supply") {
use_port_supply(game.where, get_port_supply_amount(game.where))
}
@@ -7610,11 +7605,9 @@ states.naval_blockade = {
resume_command()
}
game.what = NOTHING
- },
+ },
}
-
-
// === CAPABILITY : AGITATORS ===
function can_action_agitators() {
@@ -9118,12 +9111,12 @@ function goto_engagement_total_hits() {
if (game.battle.attacker_artillery > 0) {
ahits += game.battle.attacker_artillery
}
- }
+ }
else {
dhits += game.battle.ah[pos]
if (game.battle.defender_artillery > 0) {
dhits += game.battle.defender_artillery
- }
+ }
}
}
if (ahits & 1)
@@ -11795,23 +11788,24 @@ function map_delete(map, item) {
let log_sanity = []
exports.fuzz_log = function (fuzz_info) {
- console.log(`${fuzz_info.state.state} - ${fuzz_info.actions} - - ${fuzz_info.args} [${fuzz_info.chosen_action}, ${fuzz_info.chosen_arg}] `)
-
- log_sanity.push(fuzz_info.state.state)
- if (log_sanity.length > 200) {
- log_sanity = log_sanity.slice(1)
+ console.log(`${fuzz_info.state.state} - ${fuzz_info.actions} - - ${fuzz_info.args} [${fuzz_info.chosen_action}, ${fuzz_info.chosen_arg}]`)
- // if (log_sanity.every(l => l === fuzz_info.state.state)) {
- // console.log(`STATE`, fuzz_info.state)
- // console.log(`VIEW`, fuzz_info.view)
- // throw new Error("Too many times in the same state.")
- // }
- }
+ log_sanity.push(fuzz_info.state.state)
+ if (log_sanity.length > 200) {
+ log_sanity = log_sanity.slice(1)
+ if (false)
+ if (log_sanity.every(l => l === fuzz_info.state.state)) {
+ console.log(`STATE`, fuzz_info.state)
+ console.log(`VIEW`, fuzz_info.view)
+ throw new Error("Too many times in the same state.")
+ }
}
+}
- // exports.fuzz_crash = function (state, view) {
- // for(let x = 0; x<log_sanity.length; x++) {
- // console.log(log_sanity[x])
- // }
- // }
+if (false)
+ exports.fuzz_crash = function (state, view) {
+ for (let x = 0; x < log_sanity.length; x++) {
+ console.log(log_sanity[x])
+ }
+ }