From afb2a57376a1ea25a807ca016b9564a339f192ba Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 2 Aug 2024 15:38:10 +0200 Subject: v2: build new improvements --- rules.js | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 77 insertions(+), 17 deletions(-) diff --git a/rules.js b/rules.js index d2e894e..25ef8a5 100644 --- a/rules.js +++ b/rules.js @@ -680,16 +680,35 @@ function find_unused_legion() { return -1 } -function can_build_improvement(province) { - if (has_amphitheater(province) && has_basilica(province) && has_limes(province)) +function count_improvements(where) { + let n = 0 + if (has_amphitheater(where)) + ++n + if (has_basilica(where)) + ++n + if (has_limes(where)) + ++n + if (has_market(where)) + ++n + if (has_monument(where)) + ++n + if (has_port(where)) + ++n + if (has_temple(where)) + ++n + return n +} + +function can_build_improvement(where) { + if (count_improvements(where) >= 3) return false - if (get_mobs(province)) + if (get_mobs(where)) return false - if (has_active_barbarians(province)) + if (has_active_barbarians(where)) return false - if (has_rival_emperor(province)) + if (has_rival_emperor(where)) return false - if (has_enemy_general_in_capital(province)) + if (has_enemy_general_in_capital(where)) return false return true } @@ -1045,12 +1064,7 @@ function count_own_improvements() { let n = 0 for (let where = 0; where < 12; ++where) { if (is_own_province(where)) { - if (has_amphitheater(where)) - ++n - if (has_basilica(where)) - ++n - if (has_limes(where)) - ++n + n += count_improvements(where) } } return n @@ -2301,16 +2315,42 @@ states.build_improvement = { view.color = POPULACE view.selected_region = game.where - view.actions.amphitheater = 0 - view.actions.basilica = 0 - view.actions.limes = 0 - if (!has_amphitheater(game.where)) - view.actions.amphitheater = 1 + if (is_classic()) { + if (!has_amphitheater(game.where)) + view.actions.amphitheater = 1 + else + view.actions.amphitheater = 0 + } + if (!has_basilica(game.where)) view.actions.basilica = 1 + else + view.actions.basilica = 0 + if (!has_limes(game.where)) view.actions.limes = 1 + else + view.actions.limes = 0 + + if (is_deluxe()) { + if (!has_market(game.where)) + view.actions.market = 1 + else + view.actions.market = 0 + if (!has_monument(game.where)) + view.actions.monument = 1 + else + view.actions.monument = 0 + if (!has_port(game.where)) + view.actions.port = 1 + else + view.actions.port = 0 + if (!has_temple(game.where)) + view.actions.temple = 1 + else + view.actions.temple = 0 + } }, amphitheater() { add_amphitheater(game.where) @@ -2327,6 +2367,26 @@ states.build_improvement = { log("Build Limes in %" + game.where + ".") resume_take_actions() }, + market() { + add_market(game.where) + log("Build Market in %" + game.where + ".") + resume_take_actions() + }, + monument() { + add_monument(game.where) + log("Build Monument in %" + game.where + ".") + resume_take_actions() + }, + port() { + add_port(game.where) + log("Build Port in %" + game.where + ".") + resume_take_actions() + }, + temple() { + add_temple(game.where) + log("Build Temple in %" + game.where + ".") + resume_take_actions() + }, } // ACTION: INCREASE SUPPORT LEVEL -- cgit v1.2.3