summaryrefslogtreecommitdiff
path: root/rules.js
diff options
context:
space:
mode:
Diffstat (limited to 'rules.js')
-rw-r--r--rules.js130
1 files changed, 73 insertions, 57 deletions
diff --git a/rules.js b/rules.js
index b03a4c8..b3385fc 100644
--- a/rules.js
+++ b/rules.js
@@ -2582,54 +2582,13 @@ states.levy_muster_lord = {
levy_troops() {
push_undo()
+
if (is_event_in_play(EVENT_LANCASTER_RISING_WAGES) && game.active === YORK) {
- push_state("rising_wages")
- }
- let here = get_lord_locale(game.who)
- let here_type = data.locales[here].type
- if (
- !lord_has_capability(game.who, AOW_LANCASTER_QUARTERMASTERS) &&
- !lord_has_capability(game.who, AOW_YORK_WOODWILLES) &&
- !chamberlains_eligible_levy(here)
- )
- deplete_locale(here)
- switch (here_type) {
- case "calais":
- add_lord_forces(game.who, MEN_AT_ARMS, 2)
- add_lord_forces(game.who, LONGBOWMEN, 1)
- break
- case "london":
- add_lord_forces(game.who, MEN_AT_ARMS, 1)
- add_lord_forces(game.who, LONGBOWMEN, 1)
- add_lord_forces(game.who, MILITIA, 1)
- break
- case "harlech":
- add_lord_forces(game.who, MEN_AT_ARMS, 1)
- add_lord_forces(game.who, LONGBOWMEN, 2)
- break
- case "city":
- add_lord_forces(game.who, LONGBOWMEN, 1)
- add_lord_forces(game.who, MILITIA, 1)
- break
- case "town":
- add_lord_forces(game.who, MILITIA, 2)
- break
- case "fortress":
- add_lord_forces(game.who, MEN_AT_ARMS, 1)
- add_lord_forces(game.who, MILITIA, 1)
- break
- }
- if (game.flags.free_levy === 1) {
- ++game.count
- game.flags.free_levy = 0
- }
- if (eligible_kings_name()) {
- goto_kings_name("Levy Troops")
+ goto_rising_wages()
+ return
}
- if (is_event_in_play(EVENT_YORK_THE_COMMONS) && is_york_lord(game.who))
- goto_the_commons()
- else
- resume_levy_muster_lord()
+
+ do_levy_troops()
},
levy_beloved_warwick() {
@@ -2677,6 +2636,68 @@ states.levy_muster_lord = {
},
}
+// Check if the levy troops is at vassal seat
+function chamberlains_eligible_levy(locale) {
+ for (let vassal = first_vassal; vassal <= last_vassal; ++vassal)
+ if (is_vassal_mustered_with(vassal, game.who) && lord_has_capability(game.who, AOW_LANCASTER_CHAMBERLAINS)) {
+ if (locale === data.vassals[vassal].seat)
+ return true
+ }
+}
+
+function do_levy_troops() {
+ let here = get_lord_locale(game.who)
+ if (
+ !lord_has_capability(game.who, AOW_LANCASTER_QUARTERMASTERS) &&
+ !lord_has_capability(game.who, AOW_YORK_WOODWILLES) &&
+ !chamberlains_eligible_levy(here)
+ )
+ deplete_locale(here)
+
+ let here_type = data.locales[here].type
+ switch (here_type) {
+ case "calais":
+ add_lord_forces(game.who, MEN_AT_ARMS, 2)
+ add_lord_forces(game.who, LONGBOWMEN, 1)
+ break
+ case "london":
+ add_lord_forces(game.who, MEN_AT_ARMS, 1)
+ add_lord_forces(game.who, LONGBOWMEN, 1)
+ add_lord_forces(game.who, MILITIA, 1)
+ break
+ case "harlech":
+ add_lord_forces(game.who, MEN_AT_ARMS, 1)
+ add_lord_forces(game.who, LONGBOWMEN, 2)
+ break
+ case "city":
+ add_lord_forces(game.who, LONGBOWMEN, 1)
+ add_lord_forces(game.who, MILITIA, 1)
+ break
+ case "town":
+ add_lord_forces(game.who, MILITIA, 2)
+ break
+ case "fortress":
+ add_lord_forces(game.who, MEN_AT_ARMS, 1)
+ add_lord_forces(game.who, MILITIA, 1)
+ break
+ }
+ if (game.flags.free_levy === 1) {
+ ++game.count
+ game.flags.free_levy = 0
+ }
+
+ // TODO: after The Commons
+
+ if (is_event_in_play(EVENT_YORK_THE_COMMONS) && is_york_lord(game.who)) {
+ goto_the_commons()
+ } else {
+ if (eligible_kings_name())
+ goto_kings_name("Levy Troops")
+ else
+ resume_levy_muster_lord()
+ }
+}
+
// === 3.4.2 LEVY LORD ===
states.muster_lord_at_seat = {
@@ -11057,6 +11078,10 @@ function kings_name_reset_troops() {
// === EVENT: RISING WAGES ===
+function goto_rising_wages() {
+ game.state = "rising_wages"
+}
+
states.rising_wages = {
inactive: "Rising Wages",
prompt() {
@@ -11074,18 +11099,9 @@ states.rising_wages = {
add_lord_assets(lord, COIN, -1)
logi(`${EVENT_LANCASTER_RISING_WAGES}`)
log("York paid 1 Coin to Levy troops")
- pop_state()
- },
-}
-// Check if the levy troops is at vassal seat
-
-function chamberlains_eligible_levy(locale) {
- for (let vassal = first_vassal; vassal <= last_vassal; ++vassal)
- if (is_vassal_mustered_with(vassal, game.who) && lord_has_capability(game.who, AOW_LANCASTER_CHAMBERLAINS)) {
- if (locale === data.vassals[vassal].seat)
- return true
- }
+ do_levy_troops()
+ },
}
// === EVENT: THE COMMONS ===