summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor@ccxvii.net>2022-12-14 19:55:39 +0100
committerTor Andersson <tor@ccxvii.net>2023-02-18 13:02:38 +0100
commit172d787f9ef492b93dc051c53de52364c2561061 (patch)
tree1511ac3eea9ee849ff792d4c883eeabd1fc3b1cd
parent5b3e18ac67bd606395f53c096c78385d4584a039 (diff)
downloadnevsky-172d787f9ef492b93dc051c53de52364c2561061.tar.gz
Fix vassals.
-rw-r--r--play.js8
-rw-r--r--rules.js43
2 files changed, 27 insertions, 24 deletions
diff --git a/play.js b/play.js
index 6a52ae1..045148e 100644
--- a/play.js
+++ b/play.js
@@ -17,6 +17,10 @@ const LORD_ANDREY = find_lord("Andrey")
const MAP_DPI = 75
+const VASSAL_UNAVAILABLE = 0
+const VASSAL_READY = 1
+const VASSAL_MUSTERED = 2
+
const NOWHERE = -1
const CALENDAR = 100
const LEGATE = 100
@@ -298,11 +302,11 @@ function has_global_capability(cap) {
}
function is_vassal_ready(vassal) {
- return view.lords.vassals[vassal] === 0
+ return view.lords.vassals[vassal] === VASSAL_READY
}
function is_vassal_mustered(vassal) {
- return view.lords.vassals[vassal] > 0
+ return view.lords.vassals[vassal] === VASSAL_MUSTERED
}
function for_each_teutonic_card(fn) {
diff --git a/rules.js b/rules.js
index 0bde619..d4fda0d 100644
--- a/rules.js
+++ b/rules.js
@@ -146,6 +146,11 @@ const LOC_SABLIA = find_locale("Sablia")
const AOW_TEUTONIC_RAIDERS = find_card("T2")
const AOW_RUSSIAN_RAIDERS = find_card("R14")
+// TODO: advanced service
+const VASSAL_UNAVAILABLE = 0
+const VASSAL_READY = 1
+const VASSAL_MUSTERED = 2
+
const NOBODY = -1
const NOWHERE = -1
const NOTHING = -1
@@ -375,20 +380,6 @@ function add_lord_routed_forces(lord, n, x) {
set_lord_routed_forces(lord, n, get_lord_routed_forces(lord, n) + x)
}
-function get_lord_vassal_count(lord) {
- return data.lords[lord].vassals.length
-}
-
-function get_lord_vassal_service(lord, n) {
- let v = data.lords[lord].vassals[n]
- return game.lords.vassals[v]
-}
-
-function set_lord_vassal_service(lord, n, x) {
- let v = data.lords[lord].vassals[n]
- game.lords.vassals[v] = x
-}
-
function clear_lords_moved() {
game.lords.moved = 0
}
@@ -544,12 +535,16 @@ function is_vassal_available(vassal) {
return 0
}
+function is_vassal_unavailable(vassal) {
+ return game.lords.vassals[vassal] === VASSAL_UNAVAILABLE
+}
+
function is_vassal_ready(vassal) {
- return game.lords.vassals[vassal] === 0
+ return game.lords.vassals[vassal] === VASSAL_READY
}
function is_vassal_mustered(vassal) {
- return game.lords.vassals[vassal] > 0
+ return game.lords.vassals[vassal] === VASSAL_MUSTERED
}
function is_friendly_lord(lord) {
@@ -912,14 +907,18 @@ function muster_lord(lord, locale, service) {
set_lord_forces(lord, MILITIA, info.forces.militia | 0)
set_lord_forces(lord, SERFS, info.forces.serfs | 0)
- for (let v of info.vassals)
- game.lords.vassals[v] = is_vassal_available(v)
+ for (let v of info.vassals) {
+ if (is_vassal_available(v))
+ game.lords.vassals[v] = VASSAL_READY
+ else
+ game.lords.vassals[v] = VASSAL_UNAVAILABLE
+ }
}
function muster_vassal(lord, vassal) {
let info = data.vassals[vassal]
- game.lords.vassals[vassal] = 1
+ game.lords.vassals[vassal] = VASSAL_MUSTERED
add_lord_forces(lord, KNIGHTS, info.forces.knights | 0)
add_lord_forces(lord, SERGEANTS, info.forces.sergeants | 0)
@@ -962,7 +961,7 @@ exports.setup = function (seed, scenario, options) {
besieged: 0,
moved: 0,
lieutenants: [],
- vassals: Array(vassal_count).fill(0),
+ vassals: Array(vassal_count).fill(VASSAL_UNAVAILABLE),
},
locales: {
@@ -2394,7 +2393,7 @@ function drop_prov(lord) {
add_lord_assets(lord, PROV, -1)
}
-function drop_loot() {
+function drop_loot(lord) {
log("Discarded Loot")
add_lord_assets(lord, LOOT, -1)
}
@@ -2874,7 +2873,7 @@ function disband_lord(lord) {
set_lord_moved(lord, 0)
for (let v of data.lords[lord].vassals)
- game.lords.vassals[v] = 0
+ game.lords.vassals[v] = VASSAL_UNAVAILABLE
// TODO: check lifted siege
}