aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/openvic-simulation/DefinitionManager.hpp2
-rw-r--r--src/openvic-simulation/country/CountryInstance.cpp14
-rw-r--r--src/openvic-simulation/dataloader/NodeTools.cpp6
-rw-r--r--src/openvic-simulation/defines/AIDefines.cpp100
-rw-r--r--src/openvic-simulation/defines/AIDefines.hpp60
-rw-r--r--src/openvic-simulation/defines/CountryDefines.cpp228
-rw-r--r--src/openvic-simulation/defines/CountryDefines.hpp109
-rw-r--r--src/openvic-simulation/defines/Define.cpp25
-rw-r--r--src/openvic-simulation/defines/Define.hpp38
-rw-r--r--src/openvic-simulation/defines/DiplomacyDefines.cpp914
-rw-r--r--src/openvic-simulation/defines/DiplomacyDefines.hpp368
-rw-r--r--src/openvic-simulation/defines/EconomyDefines.cpp92
-rw-r--r--src/openvic-simulation/defines/EconomyDefines.hpp53
-rw-r--r--src/openvic-simulation/defines/GraphicsDefines.cpp41
-rw-r--r--src/openvic-simulation/defines/GraphicsDefines.hpp30
-rw-r--r--src/openvic-simulation/defines/MilitaryDefines.cpp168
-rw-r--r--src/openvic-simulation/defines/MilitaryDefines.hpp86
-rw-r--r--src/openvic-simulation/defines/PopsDefines.cpp142
-rw-r--r--src/openvic-simulation/defines/PopsDefines.hpp82
-rw-r--r--src/openvic-simulation/map/ProvinceInstance.cpp10
-rw-r--r--src/openvic-simulation/misc/Define.cpp270
-rw-r--r--src/openvic-simulation/misc/Define.hpp88
-rw-r--r--src/openvic-simulation/pop/Pop.cpp8
23 files changed, 2559 insertions, 375 deletions
diff --git a/src/openvic-simulation/DefinitionManager.hpp b/src/openvic-simulation/DefinitionManager.hpp
index b5df507..02de2a3 100644
--- a/src/openvic-simulation/DefinitionManager.hpp
+++ b/src/openvic-simulation/DefinitionManager.hpp
@@ -1,6 +1,7 @@
#pragma once
#include "openvic-simulation/country/CountryDefinition.hpp"
+#include "openvic-simulation/defines/Define.hpp"
#include "openvic-simulation/diplomacy/DiplomaticAction.hpp"
#include "openvic-simulation/economy/EconomyManager.hpp"
#include "openvic-simulation/history/HistoryManager.hpp"
@@ -10,7 +11,6 @@
#include "openvic-simulation/map/Mapmode.hpp"
#include "openvic-simulation/military/MilitaryManager.hpp"
#include "openvic-simulation/misc/Decision.hpp"
-#include "openvic-simulation/misc/Define.hpp"
#include "openvic-simulation/misc/Event.hpp"
#include "openvic-simulation/misc/SongChance.hpp"
#include "openvic-simulation/misc/SoundEffect.hpp"
diff --git a/src/openvic-simulation/country/CountryInstance.cpp b/src/openvic-simulation/country/CountryInstance.cpp
index 043494d..4ecb902 100644
--- a/src/openvic-simulation/country/CountryInstance.cpp
+++ b/src/openvic-simulation/country/CountryInstance.cpp
@@ -1,10 +1,10 @@
#include "CountryInstance.hpp"
#include "openvic-simulation/country/CountryDefinition.hpp"
+#include "openvic-simulation/defines/Define.hpp"
#include "openvic-simulation/history/CountryHistory.hpp"
#include "openvic-simulation/map/Crime.hpp"
#include "openvic-simulation/map/MapInstance.hpp"
-#include "openvic-simulation/misc/Define.hpp"
#include "openvic-simulation/modifier/ModifierEffectCache.hpp"
#include "openvic-simulation/modifier/StaticModifierCache.hpp"
#include "openvic-simulation/politics/Ideology.hpp"
@@ -756,7 +756,7 @@ void CountryInstance::_update_production(DefineManager const& define_manager) {
for (auto const& [country, money_invested] : foreign_investments) {
if (country->exists()) {
const fixed_point_t investment_industrial_power =
- money_invested * define_manager.get_country_investment_industrial_score_factor() / 100;
+ money_invested * define_manager.get_country_defines().get_country_investment_industrial_score_factor() / 100;
if (investment_industrial_power != 0) {
industrial_power += investment_industrial_power;
@@ -875,7 +875,7 @@ void CountryInstance::_update_military(
/ fixed_point_t::parse(7 * (1 + unit_type_manager.get_regiment_type_count()));
if (disarmed) {
- military_power_from_land *= define_manager.get_disarmed_penalty();
+ military_power_from_land *= define_manager.get_diplomacy_defines().get_disarmed_penalty();
}
military_power_from_sea = 0;
@@ -1141,9 +1141,11 @@ void CountryInstanceManager::update_rankings(Date today, DefineManager const& de
military_power_ranking[index]->military_rank = rank;
}
- const size_t max_great_power_rank = define_manager.get_great_power_rank();
- const size_t max_secondary_power_rank = define_manager.get_secondary_power_rank();
- const Timespan lose_great_power_grace_days = define_manager.get_lose_great_power_grace_days();
+ CountryDefines const& country_defines = define_manager.get_country_defines();
+
+ const size_t max_great_power_rank = country_defines.get_great_power_rank();
+ const size_t max_secondary_power_rank = country_defines.get_secondary_power_rank();
+ const Timespan lose_great_power_grace_days = country_defines.get_lose_great_power_grace_days();
// Demote great powers who have been below the max great power rank for longer than the demotion grace period and
// remove them from the list. We don't just demote them all and clear the list as when rebuilding we'd need to look
diff --git a/src/openvic-simulation/dataloader/NodeTools.cpp b/src/openvic-simulation/dataloader/NodeTools.cpp
index ad130ad..b7b3e34 100644
--- a/src/openvic-simulation/dataloader/NodeTools.cpp
+++ b/src/openvic-simulation/dataloader/NodeTools.cpp
@@ -234,19 +234,19 @@ node_callback_t NodeTools::expect_date_identifier_or_string(callback_t<Date> cal
}
node_callback_t NodeTools::expect_years(callback_t<Timespan> callback) {
- return expect_uint<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
+ return expect_int<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
return callback(Timespan::from_years(val));
});
}
node_callback_t NodeTools::expect_months(callback_t<Timespan> callback) {
- return expect_uint<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
+ return expect_int<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
return callback(Timespan::from_months(val));
});
}
node_callback_t NodeTools::expect_days(callback_t<Timespan> callback) {
- return expect_uint<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
+ return expect_int<Timespan::day_t>([callback](Timespan::day_t val) -> bool {
return callback(Timespan::from_days(val));
});
}
diff --git a/src/openvic-simulation/defines/AIDefines.cpp b/src/openvic-simulation/defines/AIDefines.cpp
new file mode 100644
index 0000000..1229daa
--- /dev/null
+++ b/src/openvic-simulation/defines/AIDefines.cpp
@@ -0,0 +1,100 @@
+#include "AIDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+AIDefines::AIDefines()
+ : colony_weight {},
+ administrator_weight {},
+ industryworker_weight {},
+ educator_weight {},
+ soldier_weight {},
+ soldier_fraction {},
+ capitalist_fraction {},
+ production_weight {},
+ spam_penalty {},
+ one_side_max_warscore {},
+ pop_project_investment_max_budget_factor {},
+ relation_limit_no_alliance_offer {},
+ naval_supply_penalty_limit {},
+ chance_build_railroad {},
+ chance_build_naval_base {},
+ chance_build_fort {},
+ chance_invest_pop_proj {},
+ chance_foreign_invest {},
+ tws_awareness_score_low_cap {},
+ tws_awareness_score_aspect {},
+ peace_base_reluctance {},
+ peace_time_duration {},
+ peace_time_factor {},
+ peace_time_factor_no_goals {},
+ peace_war_exhaustion_factor {},
+ peace_war_direction_factor {},
+ peace_war_direction_winning_mult {},
+ peace_force_balance_factor {},
+ peace_ally_base_reluctance_mult {},
+ peace_ally_time_mult {},
+ peace_ally_war_exhaustion_mult {},
+ peace_ally_war_direction_mult {},
+ peace_ally_force_balance_mult {},
+ aggression_base {},
+ aggression_unciv_bonus {},
+ fleet_size {},
+ min_fleets {},
+ max_fleets {},
+ time_before_disband {} {}
+
+std::string_view AIDefines::get_name() const {
+ return "ai";
+}
+
+node_callback_t AIDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "COLONY_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colony_weight)),
+ "ADMINISTRATOR_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(administrator_weight)),
+ "INDUSTRYWORKER_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(industryworker_weight)),
+ "EDUCATOR_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(educator_weight)),
+ "SOLDIER_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(soldier_weight)),
+ "SOLDIER_FRACTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(soldier_fraction)),
+ "CAPITALIST_FRACTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(capitalist_fraction)),
+ "PRODUCTION_WEIGHT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(production_weight)),
+ "SPAM_PENALTY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(spam_penalty)),
+ "ONE_SIDE_MAX_WARSCORE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(one_side_max_warscore)),
+ "POP_PROJECT_INVESTMENT_MAX_BUDGET_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(pop_project_investment_max_budget_factor)),
+ "RELATION_LIMIT_NO_ALLIANCE_OFFER", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(relation_limit_no_alliance_offer)),
+ "NAVAL_SUPPLY_PENALTY_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(naval_supply_penalty_limit)),
+ "CHANCE_BUILD_RAILROAD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(chance_build_railroad)),
+ "CHANCE_BUILD_NAVAL_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(chance_build_naval_base)),
+ "CHANCE_BUILD_FORT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(chance_build_fort)),
+ "CHANCE_INVEST_POP_PROJ", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(chance_invest_pop_proj)),
+ "CHANCE_FOREIGN_INVEST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(chance_foreign_invest)),
+ "TWS_AWARENESS_SCORE_LOW_CAP", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_awareness_score_low_cap)),
+ "TWS_AWARENESS_SCORE_ASPECT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_awareness_score_aspect)),
+ "PEACE_BASE_RELUCTANCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_base_reluctance)),
+ "PEACE_TIME_MONTHS", ONE_EXACTLY, expect_months(assign_variable_callback(peace_time_duration)),
+ "PEACE_TIME_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_time_factor)),
+ "PEACE_TIME_FACTOR_NO_GOALS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_time_factor_no_goals)),
+ "PEACE_WAR_EXHAUSTION_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_war_exhaustion_factor)),
+ "PEACE_WAR_DIRECTION_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_war_direction_factor)),
+ "PEACE_WAR_DIRECTION_WINNING_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_war_direction_winning_mult)),
+ "PEACE_FORCE_BALANCE_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_force_balance_factor)),
+ "PEACE_ALLY_BASE_RELUCTANCE_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_ally_base_reluctance_mult)),
+ "PEACE_ALLY_TIME_MULT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_ally_time_mult)),
+ "PEACE_ALLY_WAR_EXHAUSTION_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_ally_war_exhaustion_mult)),
+ "PEACE_ALLY_WAR_DIRECTION_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_ally_war_direction_mult)),
+ "PEACE_ALLY_FORCE_BALANCE_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_ally_force_balance_mult)),
+ "AGGRESSION_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(aggression_base)),
+ "AGGRESSION_UNCIV_BONUS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(aggression_unciv_bonus)),
+ "FLEET_SIZE", ONE_EXACTLY, expect_uint(assign_variable_callback(fleet_size)),
+ "MIN_FLEETS", ONE_EXACTLY, expect_uint(assign_variable_callback(min_fleets)),
+ "MAX_FLEETS", ONE_EXACTLY, expect_uint(assign_variable_callback(max_fleets)),
+ "MONTHS_BEFORE_DISBAND", ONE_EXACTLY, expect_months(assign_variable_callback(time_before_disband))
+ );
+}
diff --git a/src/openvic-simulation/defines/AIDefines.hpp b/src/openvic-simulation/defines/AIDefines.hpp
new file mode 100644
index 0000000..c69e9af
--- /dev/null
+++ b/src/openvic-simulation/defines/AIDefines.hpp
@@ -0,0 +1,60 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct AIDefines {
+ friend struct DefineManager;
+
+ private:
+ fixed_point_t PROPERTY(colony_weight);
+ fixed_point_t PROPERTY(administrator_weight);
+ fixed_point_t PROPERTY(industryworker_weight);
+ fixed_point_t PROPERTY(educator_weight);
+ fixed_point_t PROPERTY(soldier_weight);
+ fixed_point_t PROPERTY(soldier_fraction);
+ fixed_point_t PROPERTY(capitalist_fraction);
+ fixed_point_t PROPERTY(production_weight);
+ fixed_point_t PROPERTY(spam_penalty);
+ fixed_point_t PROPERTY(one_side_max_warscore);
+ fixed_point_t PROPERTY(pop_project_investment_max_budget_factor);
+ fixed_point_t PROPERTY(relation_limit_no_alliance_offer);
+ fixed_point_t PROPERTY(naval_supply_penalty_limit);
+ fixed_point_t PROPERTY(chance_build_railroad);
+ fixed_point_t PROPERTY(chance_build_naval_base);
+ fixed_point_t PROPERTY(chance_build_fort);
+ fixed_point_t PROPERTY(chance_invest_pop_proj);
+ fixed_point_t PROPERTY(chance_foreign_invest);
+ fixed_point_t PROPERTY(tws_awareness_score_low_cap);
+ fixed_point_t PROPERTY(tws_awareness_score_aspect);
+ fixed_point_t PROPERTY(peace_base_reluctance);
+ Timespan PROPERTY(peace_time_duration);
+ fixed_point_t PROPERTY(peace_time_factor);
+ fixed_point_t PROPERTY(peace_time_factor_no_goals);
+ fixed_point_t PROPERTY(peace_war_exhaustion_factor);
+ fixed_point_t PROPERTY(peace_war_direction_factor);
+ fixed_point_t PROPERTY(peace_war_direction_winning_mult);
+ fixed_point_t PROPERTY(peace_force_balance_factor);
+ fixed_point_t PROPERTY(peace_ally_base_reluctance_mult);
+ fixed_point_t PROPERTY(peace_ally_time_mult);
+ fixed_point_t PROPERTY(peace_ally_war_exhaustion_mult);
+ fixed_point_t PROPERTY(peace_ally_war_direction_mult);
+ fixed_point_t PROPERTY(peace_ally_force_balance_mult);
+ fixed_point_t PROPERTY(aggression_base);
+ fixed_point_t PROPERTY(aggression_unciv_bonus);
+ size_t PROPERTY(fleet_size);
+ size_t PROPERTY(min_fleets);
+ size_t PROPERTY(max_fleets);
+ Timespan PROPERTY(time_before_disband);
+
+ AIDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/CountryDefines.cpp b/src/openvic-simulation/defines/CountryDefines.cpp
new file mode 100644
index 0000000..686f209
--- /dev/null
+++ b/src/openvic-simulation/defines/CountryDefines.cpp
@@ -0,0 +1,228 @@
+#include "CountryDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+CountryDefines::CountryDefines()
+ : nationalism_duration {},
+ rebels_hold_capital_success_duration {}, // NOT USED
+ rebel_success_duration {},
+ base_country_tax_efficiency {},
+ base_country_admin_efficiency {},
+ gold_to_cash_rate {},
+ gold_to_worker_pay_rate {},
+ great_power_rank {},
+ lose_great_power_grace_days {},
+ infamy_containment_limit {},
+ max_bureaucracy_percentage {},
+ bureaucracy_percentage_increment {},
+ min_crimefight_percent {},
+ max_crimefight_percent {},
+ admin_efficiency_crimefight_percent {},
+ conservative_increase_after_reform {},
+ campaign_event_base_duration {},
+ campaign_event_min_duration {}, // NOT USED
+ campaign_event_state_duration_modifier {}, // NOT USED
+ campaign_duration {},
+ secondary_power_rank {},
+ colony_to_state_prestige_gain {},
+ colonial_liferating {},
+ base_greatpower_daily_influence {},
+ ai_support_reform {},
+ base_monthly_diplopoints {},
+ diplomat_travel_duration {},
+ province_overseas_penalty {},
+ noncore_tax_penalty {},
+ base_tariff_efficiency {},
+ colony_formed_prestige {},
+ created_cb_valid_time {},
+ loyalty_boost_on_party_win {},
+ movement_radicalism_base {},
+ movement_radicalism_passed_reform_effect {},
+ movement_radicalism_nationalism_factor {},
+ suppression_points_gain_base {},
+ suppress_bureaucrat_factor {},
+ wrong_reform_militancy_impact {},
+ suppression_radicalisation_hit {},
+ country_investment_industrial_score_factor {},
+ unciv_tech_spread_max {},
+ unciv_tech_spread_min {},
+ min_delay_duration_between_reforms {},
+ economic_reform_uh_factor {},
+ military_reform_uh_factor {},
+ wrong_reform_radical_impact {},
+ tech_year_span {},
+ tech_factor_vassal {},
+ max_suppression {},
+ prestige_hit_on_break_country {},
+ min_mobilize_limit {},
+ pop_growth_country_cache_days {},
+ newspaper_printing_frequency {},
+ newspaper_timeout_period {},
+ newspaper_max_tension {},
+ naval_base_supply_score_base {},
+ naval_base_supply_score_empty {},
+ naval_base_non_core_supply_score {},
+ colonial_points_from_supply_factor {},
+ colonial_points_for_non_core_base {},
+ mobilization_speed_base {},
+ mobilization_speed_rails_mult {},
+ colonization_interest_lead {},
+ colonization_influence_lead {},
+ colonization_duration {},
+ colonization_days_between_investment {},
+ colonization_days_for_initial_investment {},
+ colonization_protectorate_province_maintainance {},
+ colonization_colony_province_maintainance {},
+ colonization_colony_industry_maintainance {},
+ colonization_colony_railway_maintainance {},
+ colonization_interest_cost_initial {},
+ colonization_interest_cost_neighbor_modifier {},
+ colonization_interest_cost {},
+ colonization_influence_cost {},
+ colonization_extra_guard_cost {},
+ colonization_release_dominion_cost {},
+ colonization_create_state_cost {},
+ colonization_create_protectorate_cost {},
+ colonization_create_colony_cost {},
+ colonization_colony_state_distance {},
+ colonization_influence_temperature_per_day {},
+ colonization_influence_temperature_per_level {},
+ party_loyalty_hit_on_war_loss {},
+ research_points_on_conquer_mult {},
+ max_research_points {} {}
+
+std::string_view CountryDefines::get_name() const {
+ return "country";
+}
+
+node_callback_t CountryDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "YEARS_OF_NATIONALISM", ONE_EXACTLY, expect_years(assign_variable_callback(nationalism_duration)),
+ "MONTHS_UNTIL_BROKEN", ZERO_OR_ONE, // NOT USED
+ expect_months(assign_variable_callback(rebels_hold_capital_success_duration)),
+ "REBEL_ACCEPTANCE_MONTHS", ONE_EXACTLY, expect_months(assign_variable_callback(rebel_success_duration)),
+ "BASE_COUNTRY_TAX_EFFICIENCY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_country_tax_efficiency)),
+ "BASE_COUNTRY_ADMIN_EFFICIENCY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(base_country_admin_efficiency)),
+ "GOLD_TO_CASH_RATE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gold_to_cash_rate)),
+ "GOLD_TO_WORKER_PAY_RATE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gold_to_worker_pay_rate)),
+ "GREAT_NATIONS_COUNT", ONE_EXACTLY, expect_uint(assign_variable_callback(great_power_rank)),
+ "GREATNESS_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(lose_great_power_grace_days)),
+ "BADBOY_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_containment_limit)),
+ "MAX_BUREAUCRACY_PERCENTAGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_bureaucracy_percentage)),
+ "BUREAUCRACY_PERCENTAGE_INCREMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(bureaucracy_percentage_increment)),
+ "MIN_CRIMEFIGHT_PERCENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(min_crimefight_percent)),
+ "MAX_CRIMEFIGHT_PERCENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_crimefight_percent)),
+ "ADMIN_EFFICIENCY_CRIMEFIGHT_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(admin_efficiency_crimefight_percent)),
+ "CONSERVATIVE_INCREASE_AFTER_REFORM", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(conservative_increase_after_reform)),
+ "CAMPAIGN_EVENT_BASE_TIME", ONE_EXACTLY, expect_days(assign_variable_callback(campaign_event_base_duration)),
+ "CAMPAIGN_EVENT_MIN_TIME", ZERO_OR_ONE, expect_days(assign_variable_callback(campaign_event_min_duration)), // NOT USED
+ "CAMPAIGN_EVENT_STATE_SCALE", ZERO_OR_ONE, // NOT USED
+ expect_days(assign_variable_callback(campaign_event_state_duration_modifier)),
+ "CAMPAIGN_DURATION", ONE_EXACTLY, expect_months(assign_variable_callback(campaign_duration)),
+ "COLONIAL_RANK", ONE_EXACTLY, expect_uint(assign_variable_callback(secondary_power_rank)),
+ "COLONY_TO_STATE_PRESTIGE_GAIN", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colony_to_state_prestige_gain)),
+ "COLONIAL_LIFERATING", ONE_EXACTLY, expect_uint(assign_variable_callback(colonial_liferating)),
+ "BASE_GREATPOWER_DAILY_INFLUENCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(base_greatpower_daily_influence)),
+ "AI_SUPPORT_REFORM", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_support_reform)),
+ "BASE_MONTHLY_DIPLOPOINTS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_monthly_diplopoints)),
+ "DIPLOMAT_TRAVEL_TIME", ONE_EXACTLY, expect_days(assign_variable_callback(diplomat_travel_duration)),
+ "PROVINCE_OVERSEAS_PENALTY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(province_overseas_penalty)),
+ "NONCORE_TAX_PENALTY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(noncore_tax_penalty)),
+ "BASE_TARIFF_EFFICIENCY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_tariff_efficiency)),
+ "COLONY_FORMED_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colony_formed_prestige)),
+ "CREATED_CB_VALID_TIME", ONE_EXACTLY, expect_months(assign_variable_callback(created_cb_valid_time)),
+ "LOYALTY_BOOST_ON_PARTY_WIN", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(loyalty_boost_on_party_win)),
+ "MOVEMENT_RADICALISM_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(movement_radicalism_base)),
+ "MOVEMENT_RADICALISM_PASSED_REFORM_EFFECT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(movement_radicalism_passed_reform_effect)),
+ "MOVEMENT_RADICALISM_NATIONALISM_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(movement_radicalism_nationalism_factor)),
+ "SUPPRESSION_POINTS_GAIN_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(suppression_points_gain_base)),
+ "SUPPRESS_BUREAUCRAT_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(suppress_bureaucrat_factor)),
+ "WRONG_REFORM_MILITANCY_IMPACT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(wrong_reform_militancy_impact)),
+ "SUPPRESSION_RADICALISATION_HIT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(suppression_radicalisation_hit)),
+ "INVESTMENT_SCORE_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(country_investment_industrial_score_factor)),
+ "UNCIV_TECH_SPREAD_MAX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(unciv_tech_spread_max)),
+ "UNCIV_TECH_SPREAD_MIN", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(unciv_tech_spread_min)),
+ "MIN_DELAY_BETWEEN_REFORMS", ONE_EXACTLY, expect_months(assign_variable_callback(min_delay_duration_between_reforms)),
+ "ECONOMIC_REFORM_UH_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(economic_reform_uh_factor)),
+ "MILITARY_REFORM_UH_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(military_reform_uh_factor)),
+ "WRONG_REFORM_RADICAL_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(wrong_reform_radical_impact)),
+ "TECH_YEAR_SPAN", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tech_year_span)),
+ "TECH_FACTOR_VASSAL", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tech_factor_vassal)),
+ "MAX_SUPPRESSION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_suppression)),
+ "PRESTIGE_HIT_ON_BREAK_COUNTRY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_hit_on_break_country)),
+ "MIN_MOBILIZE_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(min_mobilize_limit)),
+ "POP_GROWTH_COUNTRY_CACHE_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(pop_growth_country_cache_days)),
+ "NEWSPAPER_PRINTING_FREQUENCY", ONE_EXACTLY, expect_days(assign_variable_callback(newspaper_printing_frequency)),
+ "NEWSPAPER_TIMEOUT_PERIOD", ONE_EXACTLY, expect_days(assign_variable_callback(newspaper_timeout_period)),
+ "NEWSPAPER_MAX_TENSION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(newspaper_max_tension)),
+ "NAVAL_BASE_SUPPLY_SCORE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_base_supply_score_base)),
+ "NAVAL_BASE_SUPPLY_SCORE_EMPTY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_base_supply_score_empty)),
+ "NAVAL_BASE_NON_CORE_SUPPLY_SCORE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_base_non_core_supply_score)),
+ "COLONIAL_POINTS_FROM_SUPPLY_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonial_points_from_supply_factor)),
+ "COLONIAL_POINTS_FOR_NON_CORE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonial_points_for_non_core_base)),
+ "MOBILIZATION_SPEED_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mobilization_speed_base)),
+ "MOBILIZATION_SPEED_RAILS_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(mobilization_speed_rails_mult)),
+ "COLONIZATION_INTEREST_LEAD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colonization_interest_lead)),
+ "COLONIZATION_INFLUENCE_LEAD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colonization_influence_lead)),
+ "COLONIZATION_MONTHS_TO_COLONIZE", ONE_EXACTLY, expect_months(assign_variable_callback(colonization_duration)),
+ "COLONIZATION_DAYS_BETWEEN_INVESTMENT", ONE_EXACTLY,
+ expect_days(assign_variable_callback(colonization_days_between_investment)),
+ "COLONIZATION_DAYS_FOR_INITIAL_INVESTMENT", ONE_EXACTLY,
+ expect_days(assign_variable_callback(colonization_days_for_initial_investment)),
+ "COLONIZATION_PROTECTORATE_PROVINCE_MAINTAINANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_protectorate_province_maintainance)),
+ "COLONIZATION_COLONY_PROVINCE_MAINTAINANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_colony_province_maintainance)),
+ "COLONIZATION_COLONY_INDUSTRY_MAINTAINANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_colony_industry_maintainance)),
+ "COLONIZATION_COLONY_RAILWAY_MAINTAINANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_colony_railway_maintainance)),
+ "COLONIZATION_INTEREST_COST_INITIAL", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_interest_cost_initial)),
+ "COLONIZATION_INTEREST_COST_NEIGHBOR_MODIFIER", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_interest_cost_neighbor_modifier)),
+ "COLONIZATION_INTEREST_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colonization_interest_cost)),
+ "COLONIZATION_INFLUENCE_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(colonization_influence_cost)),
+ "COLONIZATION_EXTRA_GUARD_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_extra_guard_cost)),
+ "COLONIZATION_RELEASE_DOMINION_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_release_dominion_cost)),
+ "COLONIZATION_CREATE_STATE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_create_state_cost)),
+ "COLONIZATION_CREATE_PROTECTORATE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_create_protectorate_cost)),
+ "COLONIZATION_CREATE_COLONY_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_create_colony_cost)),
+ "COLONIZATION_COLONY_STATE_DISTANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_colony_state_distance)),
+ "COLONIZATION_INFLUENCE_TEMPERATURE_PER_DAY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_influence_temperature_per_day)),
+ "COLONIZATION_INFLUENCE_TEMPERATURE_PER_LEVEL", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(colonization_influence_temperature_per_level)),
+ "PARTY_LOYALTY_HIT_ON_WAR_LOSS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(party_loyalty_hit_on_war_loss)),
+ "RESEARCH_POINTS_ON_CONQUER_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(research_points_on_conquer_mult)),
+ "MAX_RESEARCH_POINTS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_research_points))
+ );
+}
diff --git a/src/openvic-simulation/defines/CountryDefines.hpp b/src/openvic-simulation/defines/CountryDefines.hpp
new file mode 100644
index 0000000..b97f6f3
--- /dev/null
+++ b/src/openvic-simulation/defines/CountryDefines.hpp
@@ -0,0 +1,109 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/map/ProvinceInstance.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct CountryDefines {
+ friend struct DefineManager;
+
+ private:
+ Timespan PROPERTY(nationalism_duration);
+ Timespan PROPERTY(rebels_hold_capital_success_duration); // NOT USED
+ Timespan PROPERTY(rebel_success_duration);
+ fixed_point_t PROPERTY(base_country_tax_efficiency);
+ fixed_point_t PROPERTY(base_country_admin_efficiency);
+ fixed_point_t PROPERTY(gold_to_cash_rate);
+ fixed_point_t PROPERTY(gold_to_worker_pay_rate);
+ size_t PROPERTY(great_power_rank);
+ Timespan PROPERTY(lose_great_power_grace_days);
+ fixed_point_t PROPERTY(infamy_containment_limit);
+ fixed_point_t PROPERTY(max_bureaucracy_percentage);
+ fixed_point_t PROPERTY(bureaucracy_percentage_increment);
+ fixed_point_t PROPERTY(min_crimefight_percent);
+ fixed_point_t PROPERTY(max_crimefight_percent);
+ fixed_point_t PROPERTY(admin_efficiency_crimefight_percent);
+ fixed_point_t PROPERTY(conservative_increase_after_reform);
+ Timespan PROPERTY(campaign_event_base_duration);
+ Timespan PROPERTY(campaign_event_min_duration); // NOT USED
+ Timespan PROPERTY(campaign_event_state_duration_modifier); // NOT USED
+ Timespan PROPERTY(campaign_duration);
+ size_t PROPERTY(secondary_power_rank);
+ fixed_point_t PROPERTY(colony_to_state_prestige_gain);
+ ProvinceInstance::life_rating_t PROPERTY(colonial_liferating);
+ fixed_point_t PROPERTY(base_greatpower_daily_influence);
+ fixed_point_t PROPERTY(ai_support_reform);
+ fixed_point_t PROPERTY(base_monthly_diplopoints);
+ Timespan PROPERTY(diplomat_travel_duration);
+ fixed_point_t PROPERTY(province_overseas_penalty);
+ fixed_point_t PROPERTY(noncore_tax_penalty);
+ fixed_point_t PROPERTY(base_tariff_efficiency);
+ fixed_point_t PROPERTY(colony_formed_prestige);
+ Timespan PROPERTY(created_cb_valid_time);
+ fixed_point_t PROPERTY(loyalty_boost_on_party_win);
+ fixed_point_t PROPERTY(movement_radicalism_base);
+ fixed_point_t PROPERTY(movement_radicalism_passed_reform_effect);
+ fixed_point_t PROPERTY(movement_radicalism_nationalism_factor);
+ fixed_point_t PROPERTY(suppression_points_gain_base);
+ fixed_point_t PROPERTY(suppress_bureaucrat_factor);
+ fixed_point_t PROPERTY(wrong_reform_militancy_impact);
+ fixed_point_t PROPERTY(suppression_radicalisation_hit);
+ fixed_point_t PROPERTY(country_investment_industrial_score_factor);
+ fixed_point_t PROPERTY(unciv_tech_spread_max);
+ fixed_point_t PROPERTY(unciv_tech_spread_min);
+ Timespan PROPERTY(min_delay_duration_between_reforms);
+ fixed_point_t PROPERTY(economic_reform_uh_factor);
+ fixed_point_t PROPERTY(military_reform_uh_factor);
+ fixed_point_t PROPERTY(wrong_reform_radical_impact);
+ fixed_point_t PROPERTY(tech_year_span);
+ fixed_point_t PROPERTY(tech_factor_vassal);
+ fixed_point_t PROPERTY(max_suppression);
+ fixed_point_t PROPERTY(prestige_hit_on_break_country);
+ fixed_point_t PROPERTY(min_mobilize_limit);
+ Timespan PROPERTY(pop_growth_country_cache_days);
+ Timespan PROPERTY(newspaper_printing_frequency);
+ Timespan PROPERTY(newspaper_timeout_period);
+ fixed_point_t PROPERTY(newspaper_max_tension);
+ fixed_point_t PROPERTY(naval_base_supply_score_base);
+ fixed_point_t PROPERTY(naval_base_supply_score_empty);
+ fixed_point_t PROPERTY(naval_base_non_core_supply_score);
+ fixed_point_t PROPERTY(colonial_points_from_supply_factor);
+ fixed_point_t PROPERTY(colonial_points_for_non_core_base);
+ fixed_point_t PROPERTY(mobilization_speed_base);
+ fixed_point_t PROPERTY(mobilization_speed_rails_mult);
+ fixed_point_t PROPERTY(colonization_interest_lead);
+ fixed_point_t PROPERTY(colonization_influence_lead);
+ Timespan PROPERTY(colonization_duration);
+ Timespan PROPERTY(colonization_days_between_investment);
+ Timespan PROPERTY(colonization_days_for_initial_investment);
+ fixed_point_t PROPERTY(colonization_protectorate_province_maintainance);
+ fixed_point_t PROPERTY(colonization_colony_province_maintainance);
+ fixed_point_t PROPERTY(colonization_colony_industry_maintainance);
+ fixed_point_t PROPERTY(colonization_colony_railway_maintainance);
+ fixed_point_t PROPERTY(colonization_interest_cost_initial);
+ fixed_point_t PROPERTY(colonization_interest_cost_neighbor_modifier);
+ fixed_point_t PROPERTY(colonization_interest_cost);
+ fixed_point_t PROPERTY(colonization_influence_cost);
+ fixed_point_t PROPERTY(colonization_extra_guard_cost);
+ fixed_point_t PROPERTY(colonization_release_dominion_cost);
+ fixed_point_t PROPERTY(colonization_create_state_cost);
+ fixed_point_t PROPERTY(colonization_create_protectorate_cost);
+ fixed_point_t PROPERTY(colonization_create_colony_cost);
+ fixed_point_t PROPERTY(colonization_colony_state_distance);
+ fixed_point_t PROPERTY(colonization_influence_temperature_per_day);
+ fixed_point_t PROPERTY(colonization_influence_temperature_per_level);
+ fixed_point_t PROPERTY(party_loyalty_hit_on_war_loss);
+ fixed_point_t PROPERTY(research_points_on_conquer_mult);
+ fixed_point_t PROPERTY(max_research_points);
+
+ CountryDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/Define.cpp b/src/openvic-simulation/defines/Define.cpp
new file mode 100644
index 0000000..8d910cb
--- /dev/null
+++ b/src/openvic-simulation/defines/Define.cpp
@@ -0,0 +1,25 @@
+#include "Define.hpp"
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+DefineManager::DefineManager() : start_date {}, end_date {} {}
+
+bool DefineManager::load_defines_file(ast::NodeCPtr root) {
+ return expect_dictionary_keys(
+ "defines", ONE_EXACTLY, expect_dictionary_keys(
+ "start_date", ONE_EXACTLY, expect_date_identifier_or_string(assign_variable_callback(start_date)),
+ "end_date", ONE_EXACTLY, expect_date_identifier_or_string(assign_variable_callback(end_date)),
+
+ ai_defines.get_name(), ONE_EXACTLY, ai_defines.expect_defines(),
+ country_defines.get_name(), ONE_EXACTLY, country_defines.expect_defines(),
+ diplomacy_defines.get_name(), ONE_EXACTLY, diplomacy_defines.expect_defines(),
+ economy_defines.get_name(), ONE_EXACTLY, economy_defines.expect_defines(),
+ graphics_defines.get_name(), ONE_EXACTLY, graphics_defines.expect_defines(),
+ military_defines.get_name(), ONE_EXACTLY, military_defines.expect_defines(),
+ pops_defines.get_name(), ONE_EXACTLY, pops_defines.expect_defines()
+ )
+ )(root);
+}
diff --git a/src/openvic-simulation/defines/Define.hpp b/src/openvic-simulation/defines/Define.hpp
new file mode 100644
index 0000000..e1b2bc2
--- /dev/null
+++ b/src/openvic-simulation/defines/Define.hpp
@@ -0,0 +1,38 @@
+#pragma once
+
+#include "openvic-simulation/defines/AIDefines.hpp"
+#include "openvic-simulation/defines/CountryDefines.hpp"
+#include "openvic-simulation/defines/DiplomacyDefines.hpp"
+#include "openvic-simulation/defines/EconomyDefines.hpp"
+#include "openvic-simulation/defines/GraphicsDefines.hpp"
+#include "openvic-simulation/defines/MilitaryDefines.hpp"
+#include "openvic-simulation/defines/PopsDefines.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager {
+ private:
+ // Date
+ Date PROPERTY(start_date);
+ Date PROPERTY(end_date);
+
+ // Other define groups
+ AIDefines PROPERTY(ai_defines);
+ CountryDefines PROPERTY(country_defines);
+ DiplomacyDefines PROPERTY(diplomacy_defines);
+ EconomyDefines PROPERTY(economy_defines);
+ GraphicsDefines PROPERTY(graphics_defines);
+ MilitaryDefines PROPERTY(military_defines);
+ PopsDefines PROPERTY(pops_defines);
+
+ public:
+ DefineManager();
+
+ constexpr bool in_game_period(Date date) const {
+ return date.in_range(start_date, end_date);
+ }
+
+ bool load_defines_file(ast::NodeCPtr root);
+ };
+}
diff --git a/src/openvic-simulation/defines/DiplomacyDefines.cpp b/src/openvic-simulation/defines/DiplomacyDefines.cpp
new file mode 100644
index 0000000..5facbe4
--- /dev/null
+++ b/src/openvic-simulation/defines/DiplomacyDefines.cpp
@@ -0,0 +1,914 @@
+#include "DiplomacyDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+DiplomacyDefines::DiplomacyDefines()
+ : peace_cost_add_to_sphere {},
+ peace_cost_release_puppet {},
+ peace_cost_make_puppet {},
+ peace_cost_disarmament {},
+ peace_cost_destroy_forts {},
+ peace_cost_destroy_naval_bases {},
+ peace_cost_reparations {},
+ peace_cost_transfer_provinces {},
+ peace_cost_remove_cores {},
+ peace_cost_prestige {},
+ peace_cost_concede {},
+ peace_cost_status_quo {},
+ peace_cost_annex {},
+ peace_cost_demand_state {},
+ peace_cost_install_communist_gov_type {},
+ peace_cost_uninstall_communist_gov_type {},
+ peace_cost_colony {},
+ infamy_add_to_sphere {},
+ infamy_release_puppet {},
+ infamy_make_puppet {},
+ infamy_disarmament {},
+ infamy_destroy_forts {},
+ infamy_destroy_naval_bases {},
+ infamy_reparations {},
+ infamy_transfer_provinces {},
+ infamy_remove_cores {},
+ infamy_prestige {},
+ infamy_concede {},
+ infamy_status_quo {},
+ infamy_annex {},
+ infamy_demand_state {},
+ infamy_install_communist_gov_type {},
+ infamy_uninstall_communist_gov_type {},
+ infamy_colony {},
+ prestige_add_to_sphere_base {},
+ prestige_release_puppet_base {},
+ prestige_make_puppet_base {},
+ prestige_disarmament_base {},
+ prestige_destroy_forts_base {},
+ prestige_destroy_naval_bases_base {},
+ prestige_reparations_base {},
+ prestige_transfer_provinces_base {},
+ prestige_remove_cores_base {},
+ prestige_prestige_base {},
+ prestige_concede_base {},
+ prestige_status_quo_base {},
+ prestige_annex_base {},
+ prestige_demand_state_base {},
+ prestige_clear_union_sphere_base {},
+ prestige_gunboat_base {},
+ prestige_install_communist_gov_type_base {},
+ prestige_uninstall_communist_gov_type_base {},
+ prestige_colony_base {},
+ prestige_add_to_sphere {},
+ prestige_release_puppet {},
+ prestige_make_puppet {},
+ prestige_disarmament {},
+ prestige_destroy_forts {},
+ prestige_destroy_naval_bases {},
+ prestige_reparations {},
+ prestige_transfer_provinces {},
+ prestige_remove_cores {},
+ prestige_prestige {},
+ prestige_concede {},
+ prestige_status_quo {},
+ prestige_annex {},
+ prestige_demand_state {},
+ prestige_clear_union_sphere {},
+ prestige_gunboat {},
+ prestige_install_communist_gov_type {},
+ prestige_uninstall_communist_gov_type {},
+ prestige_colony {},
+ breaktruce_infamy_add_to_sphere {},
+ breaktruce_infamy_release_puppet {},
+ breaktruce_infamy_make_puppet {},
+ breaktruce_infamy_disarmament {},
+ breaktruce_infamy_destroy_forts {},
+ breaktruce_infamy_destroy_naval_bases {},
+ breaktruce_infamy_reparations {},
+ breaktruce_infamy_transfer_provinces {},
+ breaktruce_infamy_remove_cores {},
+ breaktruce_infamy_prestige {},
+ breaktruce_infamy_concede {},
+ breaktruce_infamy_status_quo {},
+ breaktruce_infamy_annex {},
+ breaktruce_infamy_demand_state {},
+ breaktruce_infamy_install_communist_gov_type {},
+ breaktruce_infamy_uninstall_communist_gov_type {},
+ breaktruce_infamy_colony {},
+ breaktruce_prestige_add_to_sphere {},
+ breaktruce_prestige_release_puppet {},
+ breaktruce_prestige_make_puppet {},
+ breaktruce_prestige_disarmament {},
+ breaktruce_prestige_destroy_forts {},
+ breaktruce_prestige_destroy_naval_bases {},
+ breaktruce_prestige_reparations {},
+ breaktruce_prestige_transfer_provinces {},
+ breaktruce_prestige_remove_cores {},
+ breaktruce_prestige_prestige {},
+ breaktruce_prestige_concede {},
+ breaktruce_prestige_status_quo {},
+ breaktruce_prestige_annex {},
+ breaktruce_prestige_demand_state {},
+ breaktruce_prestige_install_communist_gov_type {},
+ breaktruce_prestige_uninstall_communist_gov_type {},
+ breaktruce_prestige_colony {},
+ breaktruce_militancy_add_to_sphere {},
+ breaktruce_militancy_release_puppet {},
+ breaktruce_militancy_make_puppet {},
+ breaktruce_militancy_disarmament {},
+ breaktruce_militancy_destroy_forts {},
+ breaktruce_militancy_destroy_naval_bases {},
+ breaktruce_militancy_reparations {},
+ breaktruce_militancy_transfer_provinces {},
+ breaktruce_militancy_remove_cores {},
+ breaktruce_militancy_prestige {},
+ breaktruce_militancy_concede {},
+ breaktruce_militancy_status_quo {},
+ breaktruce_militancy_annex {},
+ breaktruce_militancy_demand_state {},
+ breaktruce_militancy_install_communist_gov_type {},
+ breaktruce_militancy_uninstall_communist_gov_type {},
+ breaktruce_militancy_colony {},
+ goodrelation_infamy_add_to_sphere {},
+ goodrelation_infamy_release_puppet {},
+ goodrelation_infamy_make_puppet {},
+ goodrelation_infamy_disarmament {},
+ goodrelation_infamy_destroy_forts {},
+ goodrelation_infamy_destroy_naval_bases {},
+ goodrelation_infamy_reparations {},
+ goodrelation_infamy_transfer_provinces {},
+ goodrelation_infamy_remove_cores {},
+ goodrelation_infamy_prestige {},
+ goodrelation_infamy_concede {},
+ goodrelation_infamy_status_quo {},
+ goodrelation_infamy_annex {},
+ goodrelation_infamy_demand_state {},
+ goodrelation_infamy_install_communist_gov_type {},
+ goodrelation_infamy_uninstall_communist_gov_type {},
+ goodrelation_infamy_colony {},
+ goodrelation_prestige_add_to_sphere {},
+ goodrelation_prestige_release_puppet {},
+ goodrelation_prestige_make_puppet {},
+ goodrelation_prestige_disarmament {},
+ goodrelation_prestige_destroy_forts {},
+ goodrelation_prestige_destroy_naval_bases {},
+ goodrelation_prestige_reparations {},
+ goodrelation_prestige_transfer_provinces {},
+ goodrelation_prestige_remove_cores {},
+ goodrelation_prestige_prestige {},
+ goodrelation_prestige_concede {},
+ goodrelation_prestige_status_quo {},
+ goodrelation_prestige_annex {},
+ goodrelation_prestige_demand_state {},
+ goodrelation_prestige_install_communist_gov_type {},
+ goodrelation_prestige_uninstall_communist_gov_type {},
+ goodrelation_prestige_colony {},
+ goodrelation_militancy_add_to_sphere {},
+ goodrelation_militancy_release_puppet {},
+ goodrelation_militancy_make_puppet {},
+ goodrelation_militancy_disarmament {},
+ goodrelation_militancy_destroy_forts {},
+ goodrelation_militancy_destroy_naval_bases {},
+ goodrelation_militancy_reparations {},
+ goodrelation_militancy_transfer_provinces {},
+ goodrelation_militancy_remove_cores {},
+ goodrelation_militancy_prestige {},
+ goodrelation_militancy_concede {},
+ goodrelation_militancy_status_quo {},
+ goodrelation_militancy_annex {},
+ goodrelation_militancy_demand_state {},
+ goodrelation_militancy_install_communist_gov_type {},
+ goodrelation_militancy_uninstall_communist_gov_type {},
+ goodrelation_militancy_colony {},
+ war_prestige_cost_base {},
+ war_prestige_cost_high_prestige {},
+ war_prestige_cost_neg_prestige {},
+ war_prestige_cost_truce {},
+ war_prestige_cost_honor_alliance {},
+ war_prestige_cost_honor_guarnatee {},
+ war_prestige_cost_uncivilized {},
+ war_prestige_cost_core {},
+ war_failed_goal_militancy {},
+ war_failed_goal_prestige_base {},
+ war_failed_goal_prestige {},
+ discredit_days {},
+ discredit_influence_cost_factor {},
+ discredit_influence_gain_factor {},
+ banembassy_days {},
+ declarewar_relation_on_accept {},
+ declarewar_diplomatic_cost {},
+ addwargoal_relation_on_accept {},
+ addwargoal_diplomatic_cost {},
+ add_unjustified_goal_badboy {},
+ peace_relation_on_accept {},
+ peace_relation_on_decline {},
+ peace_diplomatic_cost {},
+ alliance_relation_on_accept {},
+ alliance_relation_on_decline {},
+ alliance_diplomatic_cost {},
+ cancelalliance_relation_on_accept {},
+ cancelalliance_diplomatic_cost {},
+ callally_relation_on_accept {},
+ callally_relation_on_decline {},
+ callally_diplomatic_cost {},
+ askmilaccess_relation_on_accept {},
+ askmilaccess_relation_on_decline {},
+ askmilaccess_diplomatic_cost {},
+ cancelaskmilaccess_relation_on_accept {},
+ cancelaskmilaccess_diplomatic_cost {},
+ givemilaccess_relation_on_accept {},
+ givemilaccess_relation_on_decline {},
+ givemilaccess_diplomatic_cost {},
+ cancelgivemilaccess_relation_on_accept {},
+ cancelgivemilaccess_diplomatic_cost {},
+ warsubsidy_relation_on_accept {},
+ warsubsidy_diplomatic_cost {},
+ cancelwarsubsidy_relation_on_accept {},
+ cancelwarsubsidy_diplomatic_cost {},
+ discredit_relation_on_accept {},
+ discredit_influence_cost {},
+ expeladvisors_relation_on_accept {},
+ expeladvisors_influence_cost {},
+ ceasecolonization_relation_on_accept {},
+ ceasecolonization_relation_on_decline {},
+ ceasecolonization_diplomatic_cost {},
+ banembassy_relation_on_accept {},
+ banembassy_influence_cost {},
+ increaserelation_relation_on_accept {},
+ increaserelation_relation_on_decline {},
+ increaserelation_diplomatic_cost {},
+ decreaserelation_relation_on_accept {},
+ decreaserelation_diplomatic_cost {},
+ addtosphere_relation_on_accept {},
+ addtosphere_influence_cost {},
+ removefromsphere_relation_on_accept {},
+ removefromsphere_influence_cost {},
+ removefromsphere_prestige_cost {},
+ removefromsphere_infamy_cost {},
+ increaseopinion_relation_on_accept {},
+ increaseopinion_influence_cost {},
+ decreaseopinion_relation_on_accept {},
+ decreaseopinion_influence_cost {},
+ make_cb_diplomatic_cost {},
+ make_cb_relation_on_accept {},
+ disarmed_penalty {},
+ reparations_tax_hit {},
+ prestige_reduction_base {},
+ prestige_reduction {},
+ reparations_duration {},
+ min_warscore_to_intervene {},
+ min_time_to_intervene {},
+ max_warscore_from_battles {},
+ gunboat_diplomatic_cost {},
+ gunboat_relation_on_accept {},
+ wargoal_jingoism_requirement {},
+ liberate_state_relation_increase {},
+ dishonored_callally_prestige_penalty {},
+ base_truce_duration {},
+ max_influence {},
+ warsubsidies_percent {},
+ neighbour_bonus_influence_percent {},
+ sphere_neighbour_bonus_influence_percent {},
+ other_continent_bonus_influence_percent {},
+ puppet_bonus_influence_percent {},
+ release_nation_prestige {},
+ release_nation_infamy {},
+ infamy_clear_union_sphere {},
+ breaktruce_infamy_clear_union_sphere {},
+ breaktruce_prestige_clear_union_sphere {},
+ breaktruce_militancy_clear_union_sphere {},
+ goodrelation_infamy_clear_union_sphere {},
+ goodrelation_prestige_clear_union_sphere {},
+ goodrelation_militancy_clear_union_sphere {},
+ peace_cost_clear_union_sphere {},
+ good_peace_refusal_militancy {},
+ good_peace_refusal_warexh {},
+ peace_cost_gunboat {},
+ infamy_gunboat {},
+ breaktruce_infamy_gunboat {},
+ breaktruce_prestige_gunboat {},
+ breaktruce_militancy_gunboat {},
+ goodrelation_infamy_gunboat {},
+ goodrelation_prestige_gunboat {},
+ goodrelation_militancy_gunboat {},
+ cb_generation_base_speed {},
+ cb_generation_speed_bonus_on_colony_competition {},
+ cb_generation_speed_bonus_on_colony_competition_troops_presence {},
+ make_cb_relation_limit {},
+ cb_detection_chance_base {},
+ investment_influence_defense {},
+ relation_influence_modifier {},
+ on_cb_detected_relation_change {},
+ gw_intervene_min_relations {},
+ gw_intervene_max_exhaustion {},
+ gw_justify_cb_badboy_impact {},
+ gw_cb_construction_speed {},
+ gw_wargoal_jingoism_requirement_mod {},
+ gw_warscore_cost_mod {},
+ gw_warscore_cost_mod_2 {},
+ gw_warscore_2_threshold {},
+ tension_decay {},
+ tension_from_cb {},
+ tension_from_movement {},
+ tension_from_movement_max {},
+ at_war_tension_decay {},
+ tension_on_cb_discovered {},
+ tension_on_revolt {},
+ tension_while_crisis {},
+ crisis_cooldown_duration {},
+ crisis_base_chance {},
+ crisis_temperature_increase {},
+ crisis_offer_diplomatic_cost {},
+ crisis_offer_relation_on_accept {},
+ crisis_offer_relation_on_decline {},
+ crisis_did_not_take_side_prestige_factor_base {},
+ crisis_did_not_take_side_prestige_factor_year {},
+ crisis_winner_prestige_factor_base {},
+ crisis_winner_prestige_factor_year {},
+ crisis_winner_relations_impact {},
+ back_crisis_diplomatic_cost {},
+ back_crisis_relation_on_accept {},
+ back_crisis_relation_on_decline {},
+ crisis_temperature_on_offer_decline {},
+ crisis_temperature_participant_factor {},
+ crisis_temperature_on_mobilize {},
+ crisis_wargoal_infamy_mult {},
+ crisis_wargoal_prestige_mult {},
+ crisis_wargoal_militancy_mult {},
+ crisis_interest_war_exhaustion_limit {},
+ rank_1_tension_decay {},
+ rank_2_tension_decay {},
+ rank_3_tension_decay {},
+ rank_4_tension_decay {},
+ rank_5_tension_decay {},
+ rank_6_tension_decay {},
+ rank_7_tension_decay {},
+ rank_8_tension_decay {},
+ tws_fulfilled_speed {},
+ tws_not_fulfilled_speed {},
+ tws_grace_period_days {},
+ tws_cb_limit_default {},
+ tws_fulfilled_idle_space {},
+ tws_battle_min_count {},
+ tws_battle_max_aspect {},
+ large_population_influence_penalty {},
+ lone_backer_prestige_factor {} {}
+
+std::string_view DiplomacyDefines::get_name() const {
+ return "diplomacy";
+}
+
+node_callback_t DiplomacyDefines::expect_defines() {
+ // The key map entries are added in two separate function calls, half each time, as adding them all at once causes a
+ // runtime crash, presumably due to a limit on the number of loose lambda functions that can exist at the same time.
+
+ key_map_t key_map;
+
+ add_key_map_entries(
+ key_map,
+ "PEACE_COST_ADD_TO_SPHERE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_add_to_sphere)),
+ "PEACE_COST_RELEASE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_release_puppet)),
+ "PEACE_COST_MAKE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_make_puppet)),
+ "PEACE_COST_DISARMAMENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_disarmament)),
+ "PEACE_COST_DESTROY_FORTS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_destroy_forts)),
+ "PEACE_COST_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_cost_destroy_naval_bases)),
+ "PEACE_COST_REPARATIONS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_reparations)),
+ "PEACE_COST_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_cost_transfer_provinces)),
+ "PEACE_COST_REMOVE_CORES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_remove_cores)),
+ "PEACE_COST_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_prestige)),
+ "PEACE_COST_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_concede)),
+ "PEACE_COST_STATUS_QUO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_status_quo)),
+ "PEACE_COST_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_annex)),
+ "PEACE_COST_DEMAND_STATE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_demand_state)),
+ "PEACE_COST_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_cost_install_communist_gov_type)),
+ "PEACE_COST_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_cost_uninstall_communist_gov_type)),
+ "PEACE_COST_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_colony)),
+ "INFAMY_ADD_TO_SPHERE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_add_to_sphere)),
+ "INFAMY_RELEASE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_release_puppet)),
+ "INFAMY_MAKE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_make_puppet)),
+ "INFAMY_DISARMAMENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_disarmament)),
+ "INFAMY_DESTROY_FORTS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_destroy_forts)),
+ "INFAMY_DESTROY_NAVAL_BASES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_destroy_naval_bases)),
+ "INFAMY_REPARATIONS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_reparations)),
+ "INFAMY_TRANSFER_PROVINCES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_transfer_provinces)),
+ "INFAMY_REMOVE_CORES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_remove_cores)),
+ "INFAMY_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_prestige)),
+ "INFAMY_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_concede)),
+ "INFAMY_STATUS_QUO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_status_quo)),
+ "INFAMY_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_annex)),
+ "INFAMY_DEMAND_STATE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_demand_state)),
+ "INFAMY_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(infamy_install_communist_gov_type)),
+ "INFAMY_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(infamy_uninstall_communist_gov_type)),
+ "INFAMY_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_colony)),
+ "PRESTIGE_ADD_TO_SPHERE_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_add_to_sphere_base)),
+ "PRESTIGE_RELEASE_PUPPET_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_release_puppet_base)),
+ "PRESTIGE_MAKE_PUPPET_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_make_puppet_base)),
+ "PRESTIGE_DISARMAMENT_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_disarmament_base)),
+ "PRESTIGE_DESTROY_FORTS_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_destroy_forts_base)),
+ "PRESTIGE_DESTROY_NAVAL_BASES_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_destroy_naval_bases_base)),
+ "PRESTIGE_REPARATIONS_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_reparations_base)),
+ "PRESTIGE_TRANSFER_PROVINCES_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_transfer_provinces_base)),
+ "PRESTIGE_REMOVE_CORES_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_remove_cores_base)),
+ "PRESTIGE_PRESTIGE_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_prestige_base)),
+ "PRESTIGE_CONCEDE_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_concede_base)),
+ "PRESTIGE_STATUS_QUO_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_status_quo_base)),
+ "PRESTIGE_ANNEX_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_annex_base)),
+ "PRESTIGE_DEMAND_STATE_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_demand_state_base)),
+ "PRESTIGE_CLEAR_UNION_SPHERE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_clear_union_sphere_base)),
+ "PRESTIGE_GUNBOAT_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_gunboat_base)),
+ "PRESTIGE_INSTALL_COMMUNIST_GOV_TYPE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_install_communist_gov_type_base)),
+ "PRESTIGE_UNINSTALL_COMMUNIST_GOV_TYPE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_uninstall_communist_gov_type_base)),
+ "PRESTIGE_COLONY_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_colony_base)),
+ "PRESTIGE_ADD_TO_SPHERE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_add_to_sphere)),
+ "PRESTIGE_RELEASE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_release_puppet)),
+ "PRESTIGE_MAKE_PUPPET", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_make_puppet)),
+ "PRESTIGE_DISARMAMENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_disarmament)),
+ "PRESTIGE_DESTROY_FORTS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_destroy_forts)),
+ "PRESTIGE_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_destroy_naval_bases)),
+ "PRESTIGE_REPARATIONS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_reparations)),
+ "PRESTIGE_TRANSFER_PROVINCES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_transfer_provinces)),
+ "PRESTIGE_REMOVE_CORES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_remove_cores)),
+ "PRESTIGE_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_prestige)),
+ "PRESTIGE_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_concede)),
+ "PRESTIGE_STATUS_QUO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_status_quo)),
+ "PRESTIGE_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_annex)),
+ "PRESTIGE_DEMAND_STATE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_demand_state)),
+ "PRESTIGE_CLEAR_UNION_SPHERE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_clear_union_sphere)),
+ "PRESTIGE_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_gunboat)),
+ "PRESTIGE_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_install_communist_gov_type)),
+ "PRESTIGE_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(prestige_uninstall_communist_gov_type)),
+ "PRESTIGE_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_colony)),
+ "BREAKTRUCE_INFAMY_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_add_to_sphere)),
+ "BREAKTRUCE_INFAMY_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_release_puppet)),
+ "BREAKTRUCE_INFAMY_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_make_puppet)),
+ "BREAKTRUCE_INFAMY_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_disarmament)),
+ "BREAKTRUCE_INFAMY_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_destroy_forts)),
+ "BREAKTRUCE_INFAMY_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_destroy_naval_bases)),
+ "BREAKTRUCE_INFAMY_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_reparations)),
+ "BREAKTRUCE_INFAMY_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_transfer_provinces)),
+ "BREAKTRUCE_INFAMY_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_remove_cores)),
+ "BREAKTRUCE_INFAMY_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_infamy_prestige)),
+ "BREAKTRUCE_INFAMY_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_infamy_concede)),
+ "BREAKTRUCE_INFAMY_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_status_quo)),
+ "BREAKTRUCE_INFAMY_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_infamy_annex)),
+ "BREAKTRUCE_INFAMY_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_demand_state)),
+ "BREAKTRUCE_INFAMY_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_install_communist_gov_type)),
+ "BREAKTRUCE_INFAMY_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_uninstall_communist_gov_type)),
+ "BREAKTRUCE_INFAMY_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_infamy_colony)),
+ "BREAKTRUCE_PRESTIGE_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_add_to_sphere)),
+ "BREAKTRUCE_PRESTIGE_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_release_puppet)),
+ "BREAKTRUCE_PRESTIGE_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_make_puppet)),
+ "BREAKTRUCE_PRESTIGE_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_disarmament)),
+ "BREAKTRUCE_PRESTIGE_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_destroy_forts)),
+ "BREAKTRUCE_PRESTIGE_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_destroy_naval_bases)),
+ "BREAKTRUCE_PRESTIGE_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_reparations)),
+ "BREAKTRUCE_PRESTIGE_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_transfer_provinces)),
+ "BREAKTRUCE_PRESTIGE_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_remove_cores)),
+ "BREAKTRUCE_PRESTIGE_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_prestige)),
+ "BREAKTRUCE_PRESTIGE_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_prestige_concede)),
+ "BREAKTRUCE_PRESTIGE_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_status_quo)),
+ "BREAKTRUCE_PRESTIGE_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_prestige_annex)),
+ "BREAKTRUCE_PRESTIGE_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_demand_state)),
+ "BREAKTRUCE_PRESTIGE_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_install_communist_gov_type)),
+ "BREAKTRUCE_PRESTIGE_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_uninstall_communist_gov_type)),
+ "BREAKTRUCE_PRESTIGE_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_prestige_colony)),
+ "BREAKTRUCE_MILITANCY_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_add_to_sphere)),
+ "BREAKTRUCE_MILITANCY_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_release_puppet)),
+ "BREAKTRUCE_MILITANCY_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_make_puppet)),
+ "BREAKTRUCE_MILITANCY_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_disarmament)),
+ "BREAKTRUCE_MILITANCY_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_destroy_forts)),
+ "BREAKTRUCE_MILITANCY_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_destroy_naval_bases)),
+ "BREAKTRUCE_MILITANCY_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_reparations)),
+ "BREAKTRUCE_MILITANCY_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_transfer_provinces)),
+ "BREAKTRUCE_MILITANCY_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_remove_cores)),
+ "BREAKTRUCE_MILITANCY_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_prestige)),
+ "BREAKTRUCE_MILITANCY_CONCEDE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_concede)),
+ "BREAKTRUCE_MILITANCY_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_status_quo)),
+ "BREAKTRUCE_MILITANCY_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_militancy_annex)),
+ "BREAKTRUCE_MILITANCY_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_demand_state)),
+ "BREAKTRUCE_MILITANCY_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_install_communist_gov_type)),
+ "BREAKTRUCE_MILITANCY_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_uninstall_communist_gov_type)),
+ "BREAKTRUCE_MILITANCY_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_militancy_colony)),
+ "GOODRELATION_INFAMY_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_add_to_sphere)),
+ "GOODRELATION_INFAMY_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_release_puppet)),
+ "GOODRELATION_INFAMY_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_make_puppet)),
+ "GOODRELATION_INFAMY_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_disarmament)),
+ "GOODRELATION_INFAMY_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_destroy_forts)),
+ "GOODRELATION_INFAMY_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_destroy_naval_bases)),
+ "GOODRELATION_INFAMY_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_reparations)),
+ "GOODRELATION_INFAMY_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_transfer_provinces)),
+ "GOODRELATION_INFAMY_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_remove_cores)),
+ "GOODRELATION_INFAMY_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_prestige)),
+ "GOODRELATION_INFAMY_CONCEDE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goodrelation_infamy_concede)),
+ "GOODRELATION_INFAMY_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_status_quo)),
+ "GOODRELATION_INFAMY_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goodrelation_infamy_annex)),
+ "GOODRELATION_INFAMY_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_demand_state)),
+ "GOODRELATION_INFAMY_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_install_communist_gov_type)),
+ "GOODRELATION_INFAMY_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_uninstall_communist_gov_type)),
+ "GOODRELATION_INFAMY_COLONY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goodrelation_infamy_colony)),
+ "GOODRELATION_PRESTIGE_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_add_to_sphere)),
+ "GOODRELATION_PRESTIGE_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_release_puppet)),
+ "GOODRELATION_PRESTIGE_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_make_puppet)),
+ "GOODRELATION_PRESTIGE_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_disarmament)),
+ "GOODRELATION_PRESTIGE_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_destroy_forts)),
+ "GOODRELATION_PRESTIGE_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_destroy_naval_bases)),
+ "GOODRELATION_PRESTIGE_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_reparations)),
+ "GOODRELATION_PRESTIGE_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_transfer_provinces)),
+ "GOODRELATION_PRESTIGE_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_remove_cores)),
+ "GOODRELATION_PRESTIGE_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_prestige)),
+ "GOODRELATION_PRESTIGE_CONCEDE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_concede)),
+ "GOODRELATION_PRESTIGE_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_status_quo)),
+ "GOODRELATION_PRESTIGE_ANNEX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goodrelation_prestige_annex)),
+ "GOODRELATION_PRESTIGE_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_demand_state)),
+ "GOODRELATION_PRESTIGE_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_install_communist_gov_type)),
+ "GOODRELATION_PRESTIGE_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_uninstall_communist_gov_type)),
+ "GOODRELATION_PRESTIGE_COLONY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_colony)),
+ "GOODRELATION_MILITANCY_ADD_TO_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_add_to_sphere)),
+ "GOODRELATION_MILITANCY_RELEASE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_release_puppet)),
+ "GOODRELATION_MILITANCY_MAKE_PUPPET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_make_puppet)),
+ "GOODRELATION_MILITANCY_DISARMAMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_disarmament)),
+ "GOODRELATION_MILITANCY_DESTROY_FORTS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_destroy_forts)),
+ "GOODRELATION_MILITANCY_DESTROY_NAVAL_BASES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_destroy_naval_bases)),
+ "GOODRELATION_MILITANCY_REPARATIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_reparations)),
+ "GOODRELATION_MILITANCY_TRANSFER_PROVINCES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_transfer_provinces)),
+ "GOODRELATION_MILITANCY_REMOVE_CORES", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_remove_cores)),
+ "GOODRELATION_MILITANCY_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_prestige)),
+ "GOODRELATION_MILITANCY_CONCEDE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_concede)),
+ "GOODRELATION_MILITANCY_STATUS_QUO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_status_quo)),
+ "GOODRELATION_MILITANCY_ANNEX", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_annex)),
+ "GOODRELATION_MILITANCY_DEMAND_STATE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_demand_state)),
+ "GOODRELATION_MILITANCY_INSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_install_communist_gov_type)),
+ "GOODRELATION_MILITANCY_UNINSTALL_COMMUNIST_GOV_TYPE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_uninstall_communist_gov_type)),
+ "GOODRELATION_MILITANCY_COLONY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_colony))
+ );
+
+ add_key_map_entries(
+ key_map,
+ "WAR_PRESTIGE_COST_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(war_prestige_cost_base)),
+ "WAR_PRESTIGE_COST_HIGH_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_prestige_cost_high_prestige)),
+ "WAR_PRESTIGE_COST_NEG_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_prestige_cost_neg_prestige)),
+ "WAR_PRESTIGE_COST_TRUCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(war_prestige_cost_truce)),
+ "WAR_PRESTIGE_COST_HONOR_ALLIANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_prestige_cost_honor_alliance)),
+ "WAR_PRESTIGE_COST_HONOR_GUARNATEE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_prestige_cost_honor_guarnatee)),
+ "WAR_PRESTIGE_COST_UNCIVILIZED", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_prestige_cost_uncivilized)),
+ "WAR_PRESTIGE_COST_CORE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(war_prestige_cost_core)),
+ "WAR_FAILED_GOAL_MILITANCY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(war_failed_goal_militancy)),
+ "WAR_FAILED_GOAL_PRESTIGE_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(war_failed_goal_prestige_base)),
+ "WAR_FAILED_GOAL_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(war_failed_goal_prestige)),
+ "DISCREDIT_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(discredit_days)),
+ "DISCREDIT_INFLUENCE_COST_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(discredit_influence_cost_factor)),
+ "DISCREDIT_INFLUENCE_GAIN_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(discredit_influence_gain_factor)),
+ "BANEMBASSY_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(banembassy_days)),
+ "DECLAREWAR_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(declarewar_relation_on_accept)),
+ "DECLAREWAR_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(declarewar_diplomatic_cost)),
+ "ADDWARGOAL_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(addwargoal_relation_on_accept)),
+ "ADDWARGOAL_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(addwargoal_diplomatic_cost)),
+ "ADD_UNJUSTIFIED_GOAL_BADBOY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(add_unjustified_goal_badboy)),
+ "PEACE_RELATION_ON_ACCEPT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_relation_on_accept)),
+ "PEACE_RELATION_ON_DECLINE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_relation_on_decline)),
+ "PEACE_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_diplomatic_cost)),
+ "ALLIANCE_RELATION_ON_ACCEPT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(alliance_relation_on_accept)),
+ "ALLIANCE_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(alliance_relation_on_decline)),
+ "ALLIANCE_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(alliance_diplomatic_cost)),
+ "CANCELALLIANCE_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelalliance_relation_on_accept)),
+ "CANCELALLIANCE_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelalliance_diplomatic_cost)),
+ "CALLALLY_RELATION_ON_ACCEPT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(callally_relation_on_accept)),
+ "CALLALLY_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(callally_relation_on_decline)),
+ "CALLALLY_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(callally_diplomatic_cost)),
+ "ASKMILACCESS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(askmilaccess_relation_on_accept)),
+ "ASKMILACCESS_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(askmilaccess_relation_on_decline)),
+ "ASKMILACCESS_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(askmilaccess_diplomatic_cost)),
+ "CANCELASKMILACCESS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelaskmilaccess_relation_on_accept)),
+ "CANCELASKMILACCESS_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelaskmilaccess_diplomatic_cost)),
+ "GIVEMILACCESS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(givemilaccess_relation_on_accept)),
+ "GIVEMILACCESS_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(givemilaccess_relation_on_decline)),
+ "GIVEMILACCESS_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(givemilaccess_diplomatic_cost)),
+ "CANCELGIVEMILACCESS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelgivemilaccess_relation_on_accept)),
+ "CANCELGIVEMILACCESS_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelgivemilaccess_diplomatic_cost)),
+ "WARSUBSIDY_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(warsubsidy_relation_on_accept)),
+ "WARSUBSIDY_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(warsubsidy_diplomatic_cost)),
+ "CANCELWARSUBSIDY_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelwarsubsidy_relation_on_accept)),
+ "CANCELWARSUBSIDY_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cancelwarsubsidy_diplomatic_cost)),
+ "DISCREDIT_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(discredit_relation_on_accept)),
+ "DISCREDIT_INFLUENCE_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(discredit_influence_cost)),
+ "EXPELADVISORS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(expeladvisors_relation_on_accept)),
+ "EXPELADVISORS_INFLUENCE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(expeladvisors_influence_cost)),
+ "CEASECOLONIZATION_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(ceasecolonization_relation_on_accept)),
+ "CEASECOLONIZATION_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(ceasecolonization_relation_on_decline)),
+ "CEASECOLONIZATION_DIPLOMATIC_COST", ONE_OR_MORE, // Appears twice in vanilla!
+ expect_fixed_point(assign_variable_callback(ceasecolonization_diplomatic_cost)),
+ "BANEMBASSY_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(banembassy_relation_on_accept)),
+ "BANEMBASSY_INFLUENCE_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(banembassy_influence_cost)),
+ "INCREASERELATION_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(increaserelation_relation_on_accept)),
+ "INCREASERELATION_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(increaserelation_relation_on_decline)),
+ "INCREASERELATION_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(increaserelation_diplomatic_cost)),
+ "DECREASERELATION_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(decreaserelation_relation_on_accept)),
+ "DECREASERELATION_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(decreaserelation_diplomatic_cost)),
+ "ADDTOSPHERE_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(addtosphere_relation_on_accept)),
+ "ADDTOSPHERE_INFLUENCE_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(addtosphere_influence_cost)),
+ "REMOVEFROMSPHERE_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(removefromsphere_relation_on_accept)),
+ "REMOVEFROMSPHERE_INFLUENCE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(removefromsphere_influence_cost)),
+ "REMOVEFROMSPHERE_PRESTIGE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(removefromsphere_prestige_cost)),
+ "REMOVEFROMSPHERE_INFAMY_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(removefromsphere_infamy_cost)),
+ "INCREASEOPINION_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(increaseopinion_relation_on_accept)),
+ "INCREASEOPINION_INFLUENCE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(increaseopinion_influence_cost)),
+ "DECREASEOPINION_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(decreaseopinion_relation_on_accept)),
+ "DECREASEOPINION_INFLUENCE_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(decreaseopinion_influence_cost)),
+ "MAKE_CB_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(make_cb_diplomatic_cost)),
+ "MAKE_CB_RELATION_ON_ACCEPT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(make_cb_relation_on_accept)),
+ "DISARMAMENT_ARMY_HIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(disarmed_penalty)),
+ "REPARATIONS_TAX_HIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(reparations_tax_hit)),
+ "PRESTIGE_REDUCTION_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_reduction_base)),
+ "PRESTIGE_REDUCTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(prestige_reduction)),
+ "REPARATIONS_YEARS", ONE_EXACTLY, expect_years(assign_variable_callback(reparations_duration)),
+ "MIN_WARSCORE_TO_INTERVENE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(min_warscore_to_intervene)),
+ "MIN_MONTHS_TO_INTERVENE", ONE_EXACTLY, expect_months(assign_variable_callback(min_time_to_intervene)),
+ "MAX_WARSCORE_FROM_BATTLES", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_warscore_from_battles)),
+ "GUNBOAT_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gunboat_diplomatic_cost)),
+ "GUNBOAT_RELATION_ON_ACCEPT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gunboat_relation_on_accept)),
+ "WARGOAL_JINGOISM_REQUIREMENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(wargoal_jingoism_requirement)),
+ "LIBERATE_STATE_RELATION_INCREASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(liberate_state_relation_increase)),
+ "DISHONORED_CALLALLY_PRESTIGE_PENALTY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(dishonored_callally_prestige_penalty)),
+ "BASE_TRUCE_MONTHS", ONE_EXACTLY, expect_months(assign_variable_callback(base_truce_duration)),
+ "MAX_INFLUENCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_influence)),
+ "WARSUBSIDIES_PERCENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(warsubsidies_percent)),
+ "NEIGHBOUR_BONUS_INFLUENCE_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(neighbour_bonus_influence_percent)),
+ "SPHERE_NEIGHBOUR_BONUS_INFLUENCE_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(sphere_neighbour_bonus_influence_percent)),
+ "OTHER_CONTINENT_BONUS_INFLUENCE_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(other_continent_bonus_influence_percent)),
+ "PUPPET_BONUS_INFLUENCE_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(puppet_bonus_influence_percent)),
+ "RELEASE_NATION_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(release_nation_prestige)),
+ "RELEASE_NATION_INFAMY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(release_nation_infamy)),
+ "INFAMY_CLEAR_UNION_SPHERE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_clear_union_sphere)),
+ "BREAKTRUCE_INFAMY_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_infamy_clear_union_sphere)),
+ "BREAKTRUCE_PRESTIGE_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_prestige_clear_union_sphere)),
+ "BREAKTRUCE_MILITANCY_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_clear_union_sphere)),
+ "GOODRELATION_INFAMY_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_infamy_clear_union_sphere)),
+ "GOODRELATION_PRESTIGE_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_clear_union_sphere)),
+ "GOODRELATION_MILITANCY_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_clear_union_sphere)),
+ "PEACE_COST_CLEAR_UNION_SPHERE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(peace_cost_clear_union_sphere)),
+ "GOOD_PEACE_REFUSAL_MILITANCY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(good_peace_refusal_militancy)),
+ "GOOD_PEACE_REFUSAL_WAREXH", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(good_peace_refusal_warexh)),
+ "PEACE_COST_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(peace_cost_gunboat)),
+ "INFAMY_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(infamy_gunboat)),
+ "BREAKTRUCE_INFAMY_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_infamy_gunboat)),
+ "BREAKTRUCE_PRESTIGE_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(breaktruce_prestige_gunboat)),
+ "BREAKTRUCE_MILITANCY_GUNBOAT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(breaktruce_militancy_gunboat)),
+ "GOODRELATION_INFAMY_GUNBOAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goodrelation_infamy_gunboat)),
+ "GOODRELATION_PRESTIGE_GUNBOAT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_prestige_gunboat)),
+ "GOODRELATION_MILITANCY_GUNBOAT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(goodrelation_militancy_gunboat)),
+ "CB_GENERATION_BASE_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(cb_generation_base_speed)),
+ "CB_GENERATION_SPEED_BONUS_ON_COLONY_COMPETITION", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(cb_generation_speed_bonus_on_colony_competition)),
+ "CB_GENERATION_SPEED_BONUS_ON_COLONY_COMPETITION_TROOPS_PRESENCE", ONE_EXACTLY, expect_fixed_point(
+ assign_variable_callback(cb_generation_speed_bonus_on_colony_competition_troops_presence)
+ ),
+ "MAKE_CB_RELATION_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(make_cb_relation_limit)),
+ "CB_DETECTION_CHANCE_BASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(cb_detection_chance_base)),
+ "INVESTMENT_INFLUENCE_DEFENSE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(investment_influence_defense)),
+ "RELATION_INFLUENCE_MODIFIER", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(relation_influence_modifier)),
+ "ON_CB_DETECTED_RELATION_CHANGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(on_cb_detected_relation_change)),
+ "GW_INTERVENE_MIN_RELATIONS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_intervene_min_relations)),
+ "GW_INTERVENE_MAX_EXHAUSTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_intervene_max_exhaustion)),
+ "GW_JUSTIFY_CB_BADBOY_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_justify_cb_badboy_impact)),
+ "GW_CB_CONSTRUCTION_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_cb_construction_speed)),
+ "GW_WARGOAL_JINGOISM_REQUIREMENT_MOD", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(gw_wargoal_jingoism_requirement_mod)),
+ "GW_WARSCORE_COST_MOD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_warscore_cost_mod)),
+ "GW_WARSCORE_COST_MOD_2", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_warscore_cost_mod_2)),
+ "GW_WARSCORE_2_THRESHOLD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gw_warscore_2_threshold)),
+ "TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_decay)),
+ "TENSION_FROM_CB", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_from_cb)),
+ "TENSION_FROM_MOVEMENT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_from_movement)),
+ "TENSION_FROM_MOVEMENT_MAX", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_from_movement_max)),
+ "AT_WAR_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(at_war_tension_decay)),
+ "TENSION_ON_CB_DISCOVERED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_on_cb_discovered)),
+ "TENSION_ON_REVOLT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_on_revolt)),
+ "TENSION_WHILE_CRISIS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tension_while_crisis)),
+ "CRISIS_COOLDOWN_MONTHS", ONE_EXACTLY, expect_months(assign_variable_callback(crisis_cooldown_duration)),
+ "CRISIS_BASE_CHANCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(crisis_base_chance)),
+ "CRISIS_TEMPERATURE_INCREASE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(crisis_temperature_increase)),
+ "CRISIS_OFFER_DIPLOMATIC_COST", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_offer_diplomatic_cost)),
+ "CRISIS_OFFER_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_offer_relation_on_accept)),
+ "CRISIS_OFFER_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_offer_relation_on_decline)),
+ "CRISIS_DID_NOT_TAKE_SIDE_PRESTIGE_FACTOR_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_did_not_take_side_prestige_factor_base)),
+ "CRISIS_DID_NOT_TAKE_SIDE_PRESTIGE_FACTOR_YEAR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_did_not_take_side_prestige_factor_year)),
+ "CRISIS_WINNER_PRESTIGE_FACTOR_BASE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_winner_prestige_factor_base)),
+ "CRISIS_WINNER_PRESTIGE_FACTOR_YEAR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_winner_prestige_factor_year)),
+ "CRISIS_WINNER_RELATIONS_IMPACT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_winner_relations_impact)),
+ "BACK_CRISIS_DIPLOMATIC_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(back_crisis_diplomatic_cost)),
+ "BACK_CRISIS_RELATION_ON_ACCEPT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(back_crisis_relation_on_accept)),
+ "BACK_CRISIS_RELATION_ON_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(back_crisis_relation_on_decline)),
+ "CRISIS_TEMPERATURE_ON_OFFER_DECLINE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_temperature_on_offer_decline)),
+ "CRISIS_TEMPERATURE_PARTICIPANT_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_temperature_participant_factor)),
+ "CRISIS_TEMPERATURE_ON_MOBILIZE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_temperature_on_mobilize)),
+ "CRISIS_WARGOAL_INFAMY_MULT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(crisis_wargoal_infamy_mult)),
+ "CRISIS_WARGOAL_PRESTIGE_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_wargoal_prestige_mult)),
+ "CRISIS_WARGOAL_MILITANCY_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_wargoal_militancy_mult)),
+ "CRISIS_INTEREST_WAR_EXHAUSTION_LIMIT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(crisis_interest_war_exhaustion_limit)),
+ "RANK_1_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_1_tension_decay)),
+ "RANK_2_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_2_tension_decay)),
+ "RANK_3_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_3_tension_decay)),
+ "RANK_4_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_4_tension_decay)),
+ "RANK_5_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_5_tension_decay)),
+ "RANK_6_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_6_tension_decay)),
+ "RANK_7_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_7_tension_decay)),
+ "RANK_8_TENSION_DECAY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(rank_8_tension_decay)),
+ "TWS_FULFILLED_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_fulfilled_speed)),
+ "TWS_NOT_FULFILLED_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_not_fulfilled_speed)),
+ "TWS_GRACE_PERIOD_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(tws_grace_period_days)),
+ "TWS_CB_LIMIT_DEFAULT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_cb_limit_default)),
+ "TWS_FULFILLED_IDLE_SPACE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_fulfilled_idle_space)),
+ "TWS_BATTLE_MIN_COUNT", ONE_EXACTLY, expect_uint(assign_variable_callback(tws_battle_min_count)),
+ "TWS_BATTLE_MAX_ASPECT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(tws_battle_max_aspect)),
+ "LARGE_POPULATION_INFLUENCE_PENALTY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(large_population_influence_penalty)),
+ "LONE_BACKER_PRESTIGE_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(lone_backer_prestige_factor))
+ );
+
+ return expect_dictionary_key_map(std::move(key_map));
+}
diff --git a/src/openvic-simulation/defines/DiplomacyDefines.hpp b/src/openvic-simulation/defines/DiplomacyDefines.hpp
new file mode 100644
index 0000000..d9195ab
--- /dev/null
+++ b/src/openvic-simulation/defines/DiplomacyDefines.hpp
@@ -0,0 +1,368 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct DiplomacyDefines {
+ friend struct DefineManager;
+
+ private:
+ fixed_point_t PROPERTY(peace_cost_add_to_sphere);
+ fixed_point_t PROPERTY(peace_cost_release_puppet);
+ fixed_point_t PROPERTY(peace_cost_make_puppet);
+ fixed_point_t PROPERTY(peace_cost_disarmament);
+ fixed_point_t PROPERTY(peace_cost_destroy_forts);
+ fixed_point_t PROPERTY(peace_cost_destroy_naval_bases);
+ fixed_point_t PROPERTY(peace_cost_reparations);
+ fixed_point_t PROPERTY(peace_cost_transfer_provinces);
+ fixed_point_t PROPERTY(peace_cost_remove_cores);
+ fixed_point_t PROPERTY(peace_cost_prestige);
+ fixed_point_t PROPERTY(peace_cost_concede);
+ fixed_point_t PROPERTY(peace_cost_status_quo);
+ fixed_point_t PROPERTY(peace_cost_annex);
+ fixed_point_t PROPERTY(peace_cost_demand_state);
+ fixed_point_t PROPERTY(peace_cost_install_communist_gov_type);
+ fixed_point_t PROPERTY(peace_cost_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(peace_cost_colony);
+ fixed_point_t PROPERTY(infamy_add_to_sphere);
+ fixed_point_t PROPERTY(infamy_release_puppet);
+ fixed_point_t PROPERTY(infamy_make_puppet);
+ fixed_point_t PROPERTY(infamy_disarmament);
+ fixed_point_t PROPERTY(infamy_destroy_forts);
+ fixed_point_t PROPERTY(infamy_destroy_naval_bases);
+ fixed_point_t PROPERTY(infamy_reparations);
+ fixed_point_t PROPERTY(infamy_transfer_provinces);
+ fixed_point_t PROPERTY(infamy_remove_cores);
+ fixed_point_t PROPERTY(infamy_prestige);
+ fixed_point_t PROPERTY(infamy_concede);
+ fixed_point_t PROPERTY(infamy_status_quo);
+ fixed_point_t PROPERTY(infamy_annex);
+ fixed_point_t PROPERTY(infamy_demand_state);
+ fixed_point_t PROPERTY(infamy_install_communist_gov_type);
+ fixed_point_t PROPERTY(infamy_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(infamy_colony);
+ fixed_point_t PROPERTY(prestige_add_to_sphere_base);
+ fixed_point_t PROPERTY(prestige_release_puppet_base);
+ fixed_point_t PROPERTY(prestige_make_puppet_base);
+ fixed_point_t PROPERTY(prestige_disarmament_base);
+ fixed_point_t PROPERTY(prestige_destroy_forts_base);
+ fixed_point_t PROPERTY(prestige_destroy_naval_bases_base);
+ fixed_point_t PROPERTY(prestige_reparations_base);
+ fixed_point_t PROPERTY(prestige_transfer_provinces_base);
+ fixed_point_t PROPERTY(prestige_remove_cores_base);
+ fixed_point_t PROPERTY(prestige_prestige_base);
+ fixed_point_t PROPERTY(prestige_concede_base);
+ fixed_point_t PROPERTY(prestige_status_quo_base);
+ fixed_point_t PROPERTY(prestige_annex_base);
+ fixed_point_t PROPERTY(prestige_demand_state_base);
+ fixed_point_t PROPERTY(prestige_clear_union_sphere_base);
+ fixed_point_t PROPERTY(prestige_gunboat_base);
+ fixed_point_t PROPERTY(prestige_install_communist_gov_type_base);
+ fixed_point_t PROPERTY(prestige_uninstall_communist_gov_type_base);
+ fixed_point_t PROPERTY(prestige_colony_base);
+ fixed_point_t PROPERTY(prestige_add_to_sphere);
+ fixed_point_t PROPERTY(prestige_release_puppet);
+ fixed_point_t PROPERTY(prestige_make_puppet);
+ fixed_point_t PROPERTY(prestige_disarmament);
+ fixed_point_t PROPERTY(prestige_destroy_forts);
+ fixed_point_t PROPERTY(prestige_destroy_naval_bases);
+ fixed_point_t PROPERTY(prestige_reparations);
+ fixed_point_t PROPERTY(prestige_transfer_provinces);
+ fixed_point_t PROPERTY(prestige_remove_cores);
+ fixed_point_t PROPERTY(prestige_prestige);
+ fixed_point_t PROPERTY(prestige_concede);
+ fixed_point_t PROPERTY(prestige_status_quo);
+ fixed_point_t PROPERTY(prestige_annex);
+ fixed_point_t PROPERTY(prestige_demand_state);
+ fixed_point_t PROPERTY(prestige_clear_union_sphere);
+ fixed_point_t PROPERTY(prestige_gunboat);
+ fixed_point_t PROPERTY(prestige_install_communist_gov_type);
+ fixed_point_t PROPERTY(prestige_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(prestige_colony);
+ fixed_point_t PROPERTY(breaktruce_infamy_add_to_sphere);
+ fixed_point_t PROPERTY(breaktruce_infamy_release_puppet);
+ fixed_point_t PROPERTY(breaktruce_infamy_make_puppet);
+ fixed_point_t PROPERTY(breaktruce_infamy_disarmament);
+ fixed_point_t PROPERTY(breaktruce_infamy_destroy_forts);
+ fixed_point_t PROPERTY(breaktruce_infamy_destroy_naval_bases);
+ fixed_point_t PROPERTY(breaktruce_infamy_reparations);
+ fixed_point_t PROPERTY(breaktruce_infamy_transfer_provinces);
+ fixed_point_t PROPERTY(breaktruce_infamy_remove_cores);
+ fixed_point_t PROPERTY(breaktruce_infamy_prestige);
+ fixed_point_t PROPERTY(breaktruce_infamy_concede);
+ fixed_point_t PROPERTY(breaktruce_infamy_status_quo);
+ fixed_point_t PROPERTY(breaktruce_infamy_annex);
+ fixed_point_t PROPERTY(breaktruce_infamy_demand_state);
+ fixed_point_t PROPERTY(breaktruce_infamy_install_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_infamy_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_infamy_colony);
+ fixed_point_t PROPERTY(breaktruce_prestige_add_to_sphere);
+ fixed_point_t PROPERTY(breaktruce_prestige_release_puppet);
+ fixed_point_t PROPERTY(breaktruce_prestige_make_puppet);
+ fixed_point_t PROPERTY(breaktruce_prestige_disarmament);
+ fixed_point_t PROPERTY(breaktruce_prestige_destroy_forts);
+ fixed_point_t PROPERTY(breaktruce_prestige_destroy_naval_bases);
+ fixed_point_t PROPERTY(breaktruce_prestige_reparations);
+ fixed_point_t PROPERTY(breaktruce_prestige_transfer_provinces);
+ fixed_point_t PROPERTY(breaktruce_prestige_remove_cores);
+ fixed_point_t PROPERTY(breaktruce_prestige_prestige);
+ fixed_point_t PROPERTY(breaktruce_prestige_concede);
+ fixed_point_t PROPERTY(breaktruce_prestige_status_quo);
+ fixed_point_t PROPERTY(breaktruce_prestige_annex);
+ fixed_point_t PROPERTY(breaktruce_prestige_demand_state);
+ fixed_point_t PROPERTY(breaktruce_prestige_install_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_prestige_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_prestige_colony);
+ fixed_point_t PROPERTY(breaktruce_militancy_add_to_sphere);
+ fixed_point_t PROPERTY(breaktruce_militancy_release_puppet);
+ fixed_point_t PROPERTY(breaktruce_militancy_make_puppet);
+ fixed_point_t PROPERTY(breaktruce_militancy_disarmament);
+ fixed_point_t PROPERTY(breaktruce_militancy_destroy_forts);
+ fixed_point_t PROPERTY(breaktruce_militancy_destroy_naval_bases);
+ fixed_point_t PROPERTY(breaktruce_militancy_reparations);
+ fixed_point_t PROPERTY(breaktruce_militancy_transfer_provinces);
+ fixed_point_t PROPERTY(breaktruce_militancy_remove_cores);
+ fixed_point_t PROPERTY(breaktruce_militancy_prestige);
+ fixed_point_t PROPERTY(breaktruce_militancy_concede);
+ fixed_point_t PROPERTY(breaktruce_militancy_status_quo);
+ fixed_point_t PROPERTY(breaktruce_militancy_annex);
+ fixed_point_t PROPERTY(breaktruce_militancy_demand_state);
+ fixed_point_t PROPERTY(breaktruce_militancy_install_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_militancy_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(breaktruce_militancy_colony);
+ fixed_point_t PROPERTY(goodrelation_infamy_add_to_sphere);
+ fixed_point_t PROPERTY(goodrelation_infamy_release_puppet);
+ fixed_point_t PROPERTY(goodrelation_infamy_make_puppet);
+ fixed_point_t PROPERTY(goodrelation_infamy_disarmament);
+ fixed_point_t PROPERTY(goodrelation_infamy_destroy_forts);
+ fixed_point_t PROPERTY(goodrelation_infamy_destroy_naval_bases);
+ fixed_point_t PROPERTY(goodrelation_infamy_reparations);
+ fixed_point_t PROPERTY(goodrelation_infamy_transfer_provinces);
+ fixed_point_t PROPERTY(goodrelation_infamy_remove_cores);
+ fixed_point_t PROPERTY(goodrelation_infamy_prestige);
+ fixed_point_t PROPERTY(goodrelation_infamy_concede);
+ fixed_point_t PROPERTY(goodrelation_infamy_status_quo);
+ fixed_point_t PROPERTY(goodrelation_infamy_annex);
+ fixed_point_t PROPERTY(goodrelation_infamy_demand_state);
+ fixed_point_t PROPERTY(goodrelation_infamy_install_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_infamy_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_infamy_colony);
+ fixed_point_t PROPERTY(goodrelation_prestige_add_to_sphere);
+ fixed_point_t PROPERTY(goodrelation_prestige_release_puppet);
+ fixed_point_t PROPERTY(goodrelation_prestige_make_puppet);
+ fixed_point_t PROPERTY(goodrelation_prestige_disarmament);
+ fixed_point_t PROPERTY(goodrelation_prestige_destroy_forts);
+ fixed_point_t PROPERTY(goodrelation_prestige_destroy_naval_bases);
+ fixed_point_t PROPERTY(goodrelation_prestige_reparations);
+ fixed_point_t PROPERTY(goodrelation_prestige_transfer_provinces);
+ fixed_point_t PROPERTY(goodrelation_prestige_remove_cores);
+ fixed_point_t PROPERTY(goodrelation_prestige_prestige);
+ fixed_point_t PROPERTY(goodrelation_prestige_concede);
+ fixed_point_t PROPERTY(goodrelation_prestige_status_quo);
+ fixed_point_t PROPERTY(goodrelation_prestige_annex);
+ fixed_point_t PROPERTY(goodrelation_prestige_demand_state);
+ fixed_point_t PROPERTY(goodrelation_prestige_install_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_prestige_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_prestige_colony);
+ fixed_point_t PROPERTY(goodrelation_militancy_add_to_sphere);
+ fixed_point_t PROPERTY(goodrelation_militancy_release_puppet);
+ fixed_point_t PROPERTY(goodrelation_militancy_make_puppet);
+ fixed_point_t PROPERTY(goodrelation_militancy_disarmament);
+ fixed_point_t PROPERTY(goodrelation_militancy_destroy_forts);
+ fixed_point_t PROPERTY(goodrelation_militancy_destroy_naval_bases);
+ fixed_point_t PROPERTY(goodrelation_militancy_reparations);
+ fixed_point_t PROPERTY(goodrelation_militancy_transfer_provinces);
+ fixed_point_t PROPERTY(goodrelation_militancy_remove_cores);
+ fixed_point_t PROPERTY(goodrelation_militancy_prestige);
+ fixed_point_t PROPERTY(goodrelation_militancy_concede);
+ fixed_point_t PROPERTY(goodrelation_militancy_status_quo);
+ fixed_point_t PROPERTY(goodrelation_militancy_annex);
+ fixed_point_t PROPERTY(goodrelation_militancy_demand_state);
+ fixed_point_t PROPERTY(goodrelation_militancy_install_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_militancy_uninstall_communist_gov_type);
+ fixed_point_t PROPERTY(goodrelation_militancy_colony);
+ fixed_point_t PROPERTY(war_prestige_cost_base);
+ fixed_point_t PROPERTY(war_prestige_cost_high_prestige);
+ fixed_point_t PROPERTY(war_prestige_cost_neg_prestige);
+ fixed_point_t PROPERTY(war_prestige_cost_truce);
+ fixed_point_t PROPERTY(war_prestige_cost_honor_alliance);
+ fixed_point_t PROPERTY(war_prestige_cost_honor_guarnatee);
+ fixed_point_t PROPERTY(war_prestige_cost_uncivilized);
+ fixed_point_t PROPERTY(war_prestige_cost_core);
+ fixed_point_t PROPERTY(war_failed_goal_militancy);
+ fixed_point_t PROPERTY(war_failed_goal_prestige_base);
+ fixed_point_t PROPERTY(war_failed_goal_prestige);
+ Timespan PROPERTY(discredit_days);
+ fixed_point_t PROPERTY(discredit_influence_cost_factor);
+ fixed_point_t PROPERTY(discredit_influence_gain_factor);
+ Timespan PROPERTY(banembassy_days);
+ fixed_point_t PROPERTY(declarewar_relation_on_accept);
+ fixed_point_t PROPERTY(declarewar_diplomatic_cost);
+ fixed_point_t PROPERTY(addwargoal_relation_on_accept);
+ fixed_point_t PROPERTY(addwargoal_diplomatic_cost);
+ fixed_point_t PROPERTY(add_unjustified_goal_badboy);
+ fixed_point_t PROPERTY(peace_relation_on_accept);
+ fixed_point_t PROPERTY(peace_relation_on_decline);
+ fixed_point_t PROPERTY(peace_diplomatic_cost);
+ fixed_point_t PROPERTY(alliance_relation_on_accept);
+ fixed_point_t PROPERTY(alliance_relation_on_decline);
+ fixed_point_t PROPERTY(alliance_diplomatic_cost);
+ fixed_point_t PROPERTY(cancelalliance_relation_on_accept);
+ fixed_point_t PROPERTY(cancelalliance_diplomatic_cost);
+ fixed_point_t PROPERTY(callally_relation_on_accept);
+ fixed_point_t PROPERTY(callally_relation_on_decline);
+ fixed_point_t PROPERTY(callally_diplomatic_cost);
+ fixed_point_t PROPERTY(askmilaccess_relation_on_accept);
+ fixed_point_t PROPERTY(askmilaccess_relation_on_decline);
+ fixed_point_t PROPERTY(askmilaccess_diplomatic_cost);
+ fixed_point_t PROPERTY(cancelaskmilaccess_relation_on_accept);
+ fixed_point_t PROPERTY(cancelaskmilaccess_diplomatic_cost);
+ fixed_point_t PROPERTY(givemilaccess_relation_on_accept);
+ fixed_point_t PROPERTY(givemilaccess_relation_on_decline);
+ fixed_point_t PROPERTY(givemilaccess_diplomatic_cost);
+ fixed_point_t PROPERTY(cancelgivemilaccess_relation_on_accept);
+ fixed_point_t PROPERTY(cancelgivemilaccess_diplomatic_cost);
+ fixed_point_t PROPERTY(warsubsidy_relation_on_accept);
+ fixed_point_t PROPERTY(warsubsidy_diplomatic_cost);
+ fixed_point_t PROPERTY(cancelwarsubsidy_relation_on_accept);
+ fixed_point_t PROPERTY(cancelwarsubsidy_diplomatic_cost);
+ fixed_point_t PROPERTY(discredit_relation_on_accept);
+ fixed_point_t PROPERTY(discredit_influence_cost);
+ fixed_point_t PROPERTY(expeladvisors_relation_on_accept);
+ fixed_point_t PROPERTY(expeladvisors_influence_cost);
+ fixed_point_t PROPERTY(ceasecolonization_relation_on_accept);
+ fixed_point_t PROPERTY(ceasecolonization_relation_on_decline);
+ fixed_point_t PROPERTY(ceasecolonization_diplomatic_cost);
+ fixed_point_t PROPERTY(banembassy_relation_on_accept);
+ fixed_point_t PROPERTY(banembassy_influence_cost);
+ fixed_point_t PROPERTY(increaserelation_relation_on_accept);
+ fixed_point_t PROPERTY(increaserelation_relation_on_decline);
+ fixed_point_t PROPERTY(increaserelation_diplomatic_cost);
+ fixed_point_t PROPERTY(decreaserelation_relation_on_accept);
+ fixed_point_t PROPERTY(decreaserelation_diplomatic_cost);
+ fixed_point_t PROPERTY(addtosphere_relation_on_accept);
+ fixed_point_t PROPERTY(addtosphere_influence_cost);
+ fixed_point_t PROPERTY(removefromsphere_relation_on_accept);
+ fixed_point_t PROPERTY(removefromsphere_influence_cost);
+ fixed_point_t PROPERTY(removefromsphere_prestige_cost);
+ fixed_point_t PROPERTY(removefromsphere_infamy_cost);
+ fixed_point_t PROPERTY(increaseopinion_relation_on_accept);
+ fixed_point_t PROPERTY(increaseopinion_influence_cost);
+ fixed_point_t PROPERTY(decreaseopinion_relation_on_accept);
+ fixed_point_t PROPERTY(decreaseopinion_influence_cost);
+ fixed_point_t PROPERTY(make_cb_diplomatic_cost);
+ fixed_point_t PROPERTY(make_cb_relation_on_accept);
+ fixed_point_t PROPERTY(disarmed_penalty);
+ fixed_point_t PROPERTY(reparations_tax_hit);
+ fixed_point_t PROPERTY(prestige_reduction_base);
+ fixed_point_t PROPERTY(prestige_reduction);
+ Timespan PROPERTY(reparations_duration);
+ fixed_point_t PROPERTY(min_warscore_to_intervene);
+ Timespan PROPERTY(min_time_to_intervene);
+ fixed_point_t PROPERTY(max_warscore_from_battles);
+ fixed_point_t PROPERTY(gunboat_diplomatic_cost);
+ fixed_point_t PROPERTY(gunboat_relation_on_accept);
+ fixed_point_t PROPERTY(wargoal_jingoism_requirement);
+ fixed_point_t PROPERTY(liberate_state_relation_increase);
+ fixed_point_t PROPERTY(dishonored_callally_prestige_penalty);
+ Timespan PROPERTY(base_truce_duration);
+ fixed_point_t PROPERTY(max_influence);
+ fixed_point_t PROPERTY(warsubsidies_percent);
+ fixed_point_t PROPERTY(neighbour_bonus_influence_percent);
+ fixed_point_t PROPERTY(sphere_neighbour_bonus_influence_percent);
+ fixed_point_t PROPERTY(other_continent_bonus_influence_percent);
+ fixed_point_t PROPERTY(puppet_bonus_influence_percent);
+ fixed_point_t PROPERTY(release_nation_prestige);
+ fixed_point_t PROPERTY(release_nation_infamy);
+ fixed_point_t PROPERTY(infamy_clear_union_sphere);
+ fixed_point_t PROPERTY(breaktruce_infamy_clear_union_sphere);
+ fixed_point_t PROPERTY(breaktruce_prestige_clear_union_sphere);
+ fixed_point_t PROPERTY(breaktruce_militancy_clear_union_sphere);
+ fixed_point_t PROPERTY(goodrelation_infamy_clear_union_sphere);
+ fixed_point_t PROPERTY(goodrelation_prestige_clear_union_sphere);
+ fixed_point_t PROPERTY(goodrelation_militancy_clear_union_sphere);
+ fixed_point_t PROPERTY(peace_cost_clear_union_sphere);
+ fixed_point_t PROPERTY(good_peace_refusal_militancy);
+ fixed_point_t PROPERTY(good_peace_refusal_warexh);
+ fixed_point_t PROPERTY(peace_cost_gunboat);
+ fixed_point_t PROPERTY(infamy_gunboat);
+ fixed_point_t PROPERTY(breaktruce_infamy_gunboat);
+ fixed_point_t PROPERTY(breaktruce_prestige_gunboat);
+ fixed_point_t PROPERTY(breaktruce_militancy_gunboat);
+ fixed_point_t PROPERTY(goodrelation_infamy_gunboat);
+ fixed_point_t PROPERTY(goodrelation_prestige_gunboat);
+ fixed_point_t PROPERTY(goodrelation_militancy_gunboat);
+ fixed_point_t PROPERTY(cb_generation_base_speed);
+ fixed_point_t PROPERTY(cb_generation_speed_bonus_on_colony_competition);
+ fixed_point_t PROPERTY(cb_generation_speed_bonus_on_colony_competition_troops_presence);
+ fixed_point_t PROPERTY(make_cb_relation_limit);
+ fixed_point_t PROPERTY(cb_detection_chance_base);
+ fixed_point_t PROPERTY(investment_influence_defense);
+ fixed_point_t PROPERTY(relation_influence_modifier);
+ fixed_point_t PROPERTY(on_cb_detected_relation_change);
+ fixed_point_t PROPERTY(gw_intervene_min_relations);
+ fixed_point_t PROPERTY(gw_intervene_max_exhaustion);
+ fixed_point_t PROPERTY(gw_justify_cb_badboy_impact);
+ fixed_point_t PROPERTY(gw_cb_construction_speed);
+ fixed_point_t PROPERTY(gw_wargoal_jingoism_requirement_mod);
+ fixed_point_t PROPERTY(gw_warscore_cost_mod);
+ fixed_point_t PROPERTY(gw_warscore_cost_mod_2);
+ fixed_point_t PROPERTY(gw_warscore_2_threshold);
+ fixed_point_t PROPERTY(tension_decay);
+ fixed_point_t PROPERTY(tension_from_cb);
+ fixed_point_t PROPERTY(tension_from_movement);
+ fixed_point_t PROPERTY(tension_from_movement_max);
+ fixed_point_t PROPERTY(at_war_tension_decay);
+ fixed_point_t PROPERTY(tension_on_cb_discovered);
+ fixed_point_t PROPERTY(tension_on_revolt);
+ fixed_point_t PROPERTY(tension_while_crisis);
+ Timespan PROPERTY(crisis_cooldown_duration);
+ fixed_point_t PROPERTY(crisis_base_chance);
+ fixed_point_t PROPERTY(crisis_temperature_increase);
+ fixed_point_t PROPERTY(crisis_offer_diplomatic_cost);
+ fixed_point_t PROPERTY(crisis_offer_relation_on_accept);
+ fixed_point_t PROPERTY(crisis_offer_relation_on_decline);
+ fixed_point_t PROPERTY(crisis_did_not_take_side_prestige_factor_base);
+ fixed_point_t PROPERTY(crisis_did_not_take_side_prestige_factor_year);
+ fixed_point_t PROPERTY(crisis_winner_prestige_factor_base);
+ fixed_point_t PROPERTY(crisis_winner_prestige_factor_year);
+ fixed_point_t PROPERTY(crisis_winner_relations_impact);
+ fixed_point_t PROPERTY(back_crisis_diplomatic_cost);
+ fixed_point_t PROPERTY(back_crisis_relation_on_accept);
+ fixed_point_t PROPERTY(back_crisis_relation_on_decline);
+ fixed_point_t PROPERTY(crisis_temperature_on_offer_decline);
+ fixed_point_t PROPERTY(crisis_temperature_participant_factor);
+ fixed_point_t PROPERTY(crisis_temperature_on_mobilize);
+ fixed_point_t PROPERTY(crisis_wargoal_infamy_mult);
+ fixed_point_t PROPERTY(crisis_wargoal_prestige_mult);
+ fixed_point_t PROPERTY(crisis_wargoal_militancy_mult);
+ fixed_point_t PROPERTY(crisis_interest_war_exhaustion_limit);
+ fixed_point_t PROPERTY(rank_1_tension_decay);
+ fixed_point_t PROPERTY(rank_2_tension_decay);
+ fixed_point_t PROPERTY(rank_3_tension_decay);
+ fixed_point_t PROPERTY(rank_4_tension_decay);
+ fixed_point_t PROPERTY(rank_5_tension_decay);
+ fixed_point_t PROPERTY(rank_6_tension_decay);
+ fixed_point_t PROPERTY(rank_7_tension_decay);
+ fixed_point_t PROPERTY(rank_8_tension_decay);
+ fixed_point_t PROPERTY(tws_fulfilled_speed);
+ fixed_point_t PROPERTY(tws_not_fulfilled_speed);
+ Timespan PROPERTY(tws_grace_period_days);
+ fixed_point_t PROPERTY(tws_cb_limit_default);
+ fixed_point_t PROPERTY(tws_fulfilled_idle_space);
+ size_t PROPERTY(tws_battle_min_count);
+ fixed_point_t PROPERTY(tws_battle_max_aspect);
+ fixed_point_t PROPERTY(large_population_influence_penalty);
+ fixed_point_t PROPERTY(lone_backer_prestige_factor);
+
+ DiplomacyDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/EconomyDefines.cpp b/src/openvic-simulation/defines/EconomyDefines.cpp
new file mode 100644
index 0000000..57c0157
--- /dev/null
+++ b/src/openvic-simulation/defines/EconomyDefines.cpp
@@ -0,0 +1,92 @@
+#include "EconomyDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+EconomyDefines::EconomyDefines()
+ : max_daily_research {},
+ loan_base_interest {},
+ bankruptcy_external_loan_duration {},
+ bankruptcy_factor {},
+ shadowy_financiers_max_loan_amount {},
+ max_loan_cap_from_banks {},
+ gunboat_low_tax_cap {},
+ gunboat_high_tax_cap {},
+ gunboat_fleet_size_factor {},
+ province_size_divider {},
+ capitalist_build_factory_state_employment_percent {},
+ goods_focus_swap_chance {},
+ num_closed_factories_per_state_lassiez_faire {},
+ min_num_factories_per_state_before_deleting_lassiez_faire {},
+ bankrupcy_duration {},
+ second_rank_base_share_factor {},
+ civ_base_share_factor {},
+ unciv_base_share_factor {},
+ factory_paychecks_leftover_factor {},
+ max_factory_money_save {},
+ small_debt_limit {},
+ factory_upgrade_employee_factor {},
+ rgo_supply_demand_factor_hire_hi {},
+ rgo_supply_demand_factor_hire_lo {},
+ rgo_supply_demand_factor_fire {},
+ employment_hire_lowest {},
+ employment_fire_lowest {},
+ trade_cap_low_limit_land {},
+ trade_cap_low_limit_naval {},
+ trade_cap_low_limit_constructions {},
+ factory_purchase_min_factor {},
+ factory_purchase_drawdown_factor {} {}
+
+std::string_view EconomyDefines::get_name() const {
+ return "economy";
+}
+
+node_callback_t EconomyDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "MAX_DAILY_RESEARCH", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_daily_research)),
+ "LOAN_BASE_INTEREST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(loan_base_interest)),
+ "BANKRUPTCY_EXTERNAL_LOAN_YEARS", ONE_EXACTLY,
+ expect_years(assign_variable_callback(bankruptcy_external_loan_duration)),
+ "BANKRUPTCY_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(bankruptcy_factor)),
+ "SHADOWY_FINANCIERS_MAX_LOAN_AMOUNT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(shadowy_financiers_max_loan_amount)),
+ "MAX_LOAN_CAP_FROM_BANKS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_loan_cap_from_banks)),
+ "GUNBOAT_LOW_TAX_CAP", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gunboat_low_tax_cap)),
+ "GUNBOAT_HIGH_TAX_CAP", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gunboat_high_tax_cap)),
+ "GUNBOAT_FLEET_SIZE_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(gunboat_fleet_size_factor)),
+ "PROVINCE_SIZE_DIVIDER", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(province_size_divider)),
+ "CAPITALIST_BUILD_FACTORY_STATE_EMPLOYMENT_PERCENT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(capitalist_build_factory_state_employment_percent)),
+ "GOODS_FOCUS_SWAP_CHANCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(goods_focus_swap_chance)),
+ "NUM_CLOSED_FACTORIES_PER_STATE_LASSIEZ_FAIRE", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(num_closed_factories_per_state_lassiez_faire)),
+ "MIN_NUM_FACTORIES_PER_STATE_BEFORE_DELETING_LASSIEZ_FAIRE", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(min_num_factories_per_state_before_deleting_lassiez_faire)),
+ "BANKRUPCY_DURATION", ONE_EXACTLY, expect_years(assign_variable_callback(bankrupcy_duration)),
+ "SECOND_RANK_BASE_SHARE_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(second_rank_base_share_factor)),
+ "CIV_BASE_SHARE_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(civ_base_share_factor)),
+ "UNCIV_BASE_SHARE_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(unciv_base_share_factor)),
+ "FACTORY_PAYCHECKS_LEFTOVER_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(factory_paychecks_leftover_factor)),
+ "MAX_FACTORY_MONEY_SAVE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_factory_money_save)),
+ "SMALL_DEBT_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(small_debt_limit)),
+ "FACTORY_UPGRADE_EMPLOYEE_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(factory_upgrade_employee_factor)),
+ "RGO_SUPPLY_DEMAND_FACTOR_HIRE_HI", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(rgo_supply_demand_factor_hire_hi)),
+ "RGO_SUPPLY_DEMAND_FACTOR_HIRE_LO", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(rgo_supply_demand_factor_hire_lo)),
+ "RGO_SUPPLY_DEMAND_FACTOR_FIRE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(rgo_supply_demand_factor_fire)),
+ "EMPLOYMENT_HIRE_LOWEST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(employment_hire_lowest)),
+ "EMPLOYMENT_FIRE_LOWEST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(employment_fire_lowest)),
+ "TRADE_CAP_LOW_LIMIT_LAND", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(trade_cap_low_limit_land)),
+ "TRADE_CAP_LOW_LIMIT_NAVAL", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(trade_cap_low_limit_naval)),
+ "TRADE_CAP_LOW_LIMIT_CONSTRUCTIONS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(trade_cap_low_limit_constructions)),
+ "FACTORY_PURCHASE_MIN_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(factory_purchase_min_factor)),
+ "FACTORY_PURCHASE_DRAWDOWN_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(factory_purchase_drawdown_factor))
+ );
+}
diff --git a/src/openvic-simulation/defines/EconomyDefines.hpp b/src/openvic-simulation/defines/EconomyDefines.hpp
new file mode 100644
index 0000000..122475f
--- /dev/null
+++ b/src/openvic-simulation/defines/EconomyDefines.hpp
@@ -0,0 +1,53 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct EconomyDefines {
+ friend struct DefineManager;
+
+ private:
+ fixed_point_t PROPERTY(max_daily_research);
+ fixed_point_t PROPERTY(loan_base_interest);
+ Timespan PROPERTY(bankruptcy_external_loan_duration);
+ fixed_point_t PROPERTY(bankruptcy_factor);
+ fixed_point_t PROPERTY(shadowy_financiers_max_loan_amount);
+ fixed_point_t PROPERTY(max_loan_cap_from_banks);
+ fixed_point_t PROPERTY(gunboat_low_tax_cap);
+ fixed_point_t PROPERTY(gunboat_high_tax_cap);
+ fixed_point_t PROPERTY(gunboat_fleet_size_factor);
+ fixed_point_t PROPERTY(province_size_divider);
+ fixed_point_t PROPERTY(capitalist_build_factory_state_employment_percent);
+ fixed_point_t PROPERTY(goods_focus_swap_chance);
+ size_t PROPERTY(num_closed_factories_per_state_lassiez_faire);
+ size_t PROPERTY(min_num_factories_per_state_before_deleting_lassiez_faire);
+ Timespan PROPERTY(bankrupcy_duration);
+ fixed_point_t PROPERTY(second_rank_base_share_factor);
+ fixed_point_t PROPERTY(civ_base_share_factor);
+ fixed_point_t PROPERTY(unciv_base_share_factor);
+ fixed_point_t PROPERTY(factory_paychecks_leftover_factor);
+ fixed_point_t PROPERTY(max_factory_money_save);
+ fixed_point_t PROPERTY(small_debt_limit);
+ fixed_point_t PROPERTY(factory_upgrade_employee_factor);
+ fixed_point_t PROPERTY(rgo_supply_demand_factor_hire_hi);
+ fixed_point_t PROPERTY(rgo_supply_demand_factor_hire_lo);
+ fixed_point_t PROPERTY(rgo_supply_demand_factor_fire);
+ fixed_point_t PROPERTY(employment_hire_lowest);
+ fixed_point_t PROPERTY(employment_fire_lowest);
+ fixed_point_t PROPERTY(trade_cap_low_limit_land);
+ fixed_point_t PROPERTY(trade_cap_low_limit_naval);
+ fixed_point_t PROPERTY(trade_cap_low_limit_constructions);
+ fixed_point_t PROPERTY(factory_purchase_min_factor);
+ fixed_point_t PROPERTY(factory_purchase_drawdown_factor);
+
+ EconomyDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/GraphicsDefines.cpp b/src/openvic-simulation/defines/GraphicsDefines.cpp
new file mode 100644
index 0000000..e68afe2
--- /dev/null
+++ b/src/openvic-simulation/defines/GraphicsDefines.cpp
@@ -0,0 +1,41 @@
+#include "GraphicsDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+GraphicsDefines::GraphicsDefines()
+ : cities_sprawl_offset {},
+ cities_sprawl_width {},
+ cities_sprawl_height {},
+ cities_sprawl_iterations {},
+ cities_mesh_pool_size_for_country {},
+ cities_mesh_pool_size_for_culture {},
+ cities_mesh_pool_size_for_generic {},
+ cities_mesh_types_count {},
+ cities_mesh_sizes_count {},
+ cities_special_buildings_pool_size {},
+ cities_size_max_population_k {} {}
+
+std::string_view GraphicsDefines::get_name() const {
+ return "graphics";
+}
+
+node_callback_t GraphicsDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "CITIES_SPRAWL_OFFSET", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_sprawl_offset)),
+ "CITIES_SPRAWL_WIDTH", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_sprawl_width)),
+ "CITIES_SPRAWL_HEIGHT", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_sprawl_height)),
+ "CITIES_SPRAWL_ITERATIONS", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_sprawl_iterations)),
+ "CITIES_MESH_POOL_SIZE_FOR_COUNTRY", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(cities_mesh_pool_size_for_country)),
+ "CITIES_MESH_POOL_SIZE_FOR_CULTURE", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(cities_mesh_pool_size_for_culture)),
+ "CITIES_MESH_POOL_SIZE_FOR_GENERIC", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(cities_mesh_pool_size_for_generic)),
+ "CITIES_MESH_TYPES_COUNT", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_mesh_types_count)),
+ "CITIES_MESH_SIZES_COUNT", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_mesh_sizes_count)),
+ "CITIES_SPECIAL_BUILDINGS_POOL_SIZE", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(cities_special_buildings_pool_size)),
+ "CITIES_SIZE_MAX_POPULATION_K", ONE_EXACTLY, expect_uint(assign_variable_callback(cities_size_max_population_k))
+ );
+}
diff --git a/src/openvic-simulation/defines/GraphicsDefines.hpp b/src/openvic-simulation/defines/GraphicsDefines.hpp
new file mode 100644
index 0000000..f4cd7e2
--- /dev/null
+++ b/src/openvic-simulation/defines/GraphicsDefines.hpp
@@ -0,0 +1,30 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct GraphicsDefines {
+ friend struct DefineManager;
+
+ private:
+ size_t PROPERTY(cities_sprawl_offset);
+ size_t PROPERTY(cities_sprawl_width);
+ size_t PROPERTY(cities_sprawl_height);
+ size_t PROPERTY(cities_sprawl_iterations);
+ size_t PROPERTY(cities_mesh_pool_size_for_country);
+ size_t PROPERTY(cities_mesh_pool_size_for_culture);
+ size_t PROPERTY(cities_mesh_pool_size_for_generic);
+ size_t PROPERTY(cities_mesh_types_count);
+ size_t PROPERTY(cities_mesh_sizes_count);
+ size_t PROPERTY(cities_special_buildings_pool_size);
+ size_t PROPERTY(cities_size_max_population_k);
+
+ GraphicsDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/MilitaryDefines.cpp b/src/openvic-simulation/defines/MilitaryDefines.cpp
new file mode 100644
index 0000000..0ce4cb1
--- /dev/null
+++ b/src/openvic-simulation/defines/MilitaryDefines.cpp
@@ -0,0 +1,168 @@
+#include "MilitaryDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+MilitaryDefines::MilitaryDefines()
+ : dig_in_increase_each_days {},
+ reinforce_speed {},
+ combat_difficulty_impact {},
+ base_combat_width {},
+ min_pop_size_for_regiment {},
+ pop_size_per_regiment {},
+ soldier_to_pop_damage {},
+ land_speed_modifier {},
+ naval_speed_modifier {},
+ exp_gain_div {},
+ leader_recruit_cost {},
+ supply_range {},
+ pop_size_per_regiment_protectorate_multiplier {},
+ pop_size_per_regiment_colony_multiplier {},
+ pop_size_per_regiment_non_core_multiplier {},
+ gas_attack_modifier {},
+ combatloss_war_exhaustion {},
+ leader_max_random_prestige {},
+ leader_age_death_factor {},
+ leader_prestige_to_morale_factor {},
+ leader_prestige_to_max_org_factor {},
+ leader_transfer_penalty_on_country_prestige {},
+ leader_prestige_land_gain {},
+ leader_prestige_naval_gain {},
+ naval_combat_seeking_chance {},
+ naval_combat_seeking_chance_min {},
+ naval_combat_self_defence_chance {},
+ naval_combat_shift_back_on_next_target {},
+ naval_combat_shift_back_duration_scale {},
+ naval_combat_speed_to_distance_factor {},
+ naval_combat_change_target_chance {},
+ naval_combat_damage_org_mult {},
+ naval_combat_damage_str_mult {},
+ naval_combat_damage_mult_no_org {},
+ naval_combat_retreat_chance {},
+ naval_combat_retreat_str_org_level {},
+ naval_combat_retreat_speed_mod {},
+ naval_combat_retreat_min_distance {},
+ naval_combat_damaged_target_selection {},
+ naval_combat_stacking_target_change {},
+ naval_combat_stacking_target_select {},
+ naval_combat_max_targets {},
+ ai_bigship_proportion {},
+ ai_lightship_proportion {},
+ ai_transport_proportion {},
+ ai_cavalry_proportion {},
+ ai_support_proportion {},
+ ai_special_proportion {},
+ ai_escort_ratio {},
+ ai_army_taxbase_fraction {},
+ ai_navy_taxbase_fraction {},
+ ai_blockade_range {},
+ recon_unit_ratio {},
+ engineer_unit_ratio {},
+ siege_brigades_min {},
+ siege_brigades_max {},
+ siege_brigades_bonus {},
+ recon_siege_effect {},
+ siege_attrition {},
+ base_military_tactics {},
+ naval_low_supply_damage_supply_status {},
+ naval_low_supply_damage_days_delay {},
+ naval_low_supply_damage_min_str {},
+ naval_low_supply_damage_per_day {} {}
+
+std::string_view MilitaryDefines::get_name() const {
+ return "military";
+}
+
+node_callback_t MilitaryDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "DIG_IN_INCREASE_EACH_DAYS", ONE_EXACTLY, expect_days(assign_variable_callback(dig_in_increase_each_days)),
+ "REINFORCE_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(reinforce_speed)),
+ "COMBAT_DIFFICULTY_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(combat_difficulty_impact)),
+ "BASE_COMBAT_WIDTH", ONE_EXACTLY, expect_uint(assign_variable_callback(base_combat_width)),
+ "POP_MIN_SIZE_FOR_REGIMENT", ONE_EXACTLY, expect_uint(assign_variable_callback(min_pop_size_for_regiment)),
+ "POP_SIZE_PER_REGIMENT", ONE_EXACTLY, expect_uint(assign_variable_callback(pop_size_per_regiment)),
+ "SOLDIER_TO_POP_DAMAGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(soldier_to_pop_damage)),
+ "LAND_SPEED_MODIFIER", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(land_speed_modifier)),
+ "NAVAL_SPEED_MODIFIER", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(naval_speed_modifier)),
+ "EXP_GAIN_DIV", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(exp_gain_div)),
+ "LEADER_RECRUIT_COST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(leader_recruit_cost)),
+ "SUPPLY_RANGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(supply_range)),
+ "POP_MIN_SIZE_FOR_REGIMENT_PROTECTORATE_MULTIPLIER", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(pop_size_per_regiment_protectorate_multiplier)),
+ "POP_MIN_SIZE_FOR_REGIMENT_COLONY_MULTIPLIER", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(pop_size_per_regiment_colony_multiplier)),
+ "POP_MIN_SIZE_FOR_REGIMENT_NONCORE_MULTIPLIER", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(pop_size_per_regiment_non_core_multiplier)),
+ "GAS_ATTACK_MODIFIER", ONE_EXACTLY, expect_uint(assign_variable_callback(gas_attack_modifier)),
+ "COMBATLOSS_WAR_EXHAUSTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(combatloss_war_exhaustion)),
+ "LEADER_MAX_RANDOM_PRESTIGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(leader_max_random_prestige)),
+ "LEADER_AGE_DEATH_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(leader_age_death_factor)),
+ "LEADER_PRESTIGE_TO_MORALE_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(leader_prestige_to_morale_factor)),
+ "LEADER_PRESTIGE_TO_MAX_ORG_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(leader_prestige_to_max_org_factor)),
+ "LEADER_TRANSFER_PENALTY_ON_COUNTRY_PRESTIGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(leader_transfer_penalty_on_country_prestige)),
+ "LEADER_PRESTIGE_LAND_GAIN", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(leader_prestige_land_gain)),
+ "LEADER_PRESTIGE_NAVAL_GAIN", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(leader_prestige_naval_gain)),
+ "NAVAL_COMBAT_SEEKING_CHANCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(naval_combat_seeking_chance)),
+ "NAVAL_COMBAT_SEEKING_CHANCE_MIN", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_seeking_chance_min)),
+ "NAVAL_COMBAT_SELF_DEFENCE_CHANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_self_defence_chance)),
+ "NAVAL_COMBAT_SHIFT_BACK_ON_NEXT_TARGET", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_shift_back_on_next_target)),
+ "NAVAL_COMBAT_SHIFT_BACK_DURATION_SCALE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_shift_back_duration_scale)),
+ "NAVAL_COMBAT_SPEED_TO_DISTANCE_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_speed_to_distance_factor)),
+ "NAVAL_COMBAT_CHANGE_TARGET_CHANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_change_target_chance)),
+ "NAVAL_COMBAT_DAMAGE_ORG_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_damage_org_mult)),
+ "NAVAL_COMBAT_DAMAGE_STR_MULT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_damage_str_mult)),
+ "NAVAL_COMBAT_DAMAGE_MULT_NO_ORG", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_damage_mult_no_org)),
+ "NAVAL_COMBAT_RETREAT_CHANCE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(naval_combat_retreat_chance)),
+ "NAVAL_COMBAT_RETREAT_STR_ORG_LEVEL", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_retreat_str_org_level)),
+ "NAVAL_COMBAT_RETREAT_SPEED_MOD", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_retreat_speed_mod)),
+ "NAVAL_COMBAT_RETREAT_MIN_DISTANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_retreat_min_distance)),
+ "NAVAL_COMBAT_DAMAGED_TARGET_SELECTION", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_damaged_target_selection)),
+ "NAVAL_COMBAT_STACKING_TARGET_CHANGE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_stacking_target_change)),
+ "NAVAL_COMBAT_STACKING_TARGET_SELECT", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_combat_stacking_target_select)),
+ "NAVAL_COMBAT_MAX_TARGETS", ONE_EXACTLY, expect_uint(assign_variable_callback(naval_combat_max_targets)),
+ "AI_BIGSHIP_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_bigship_proportion)),
+ "AI_LIGHTSHIP_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_lightship_proportion)),
+ "AI_TRANSPORT_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_transport_proportion)),
+ "AI_CAVALRY_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_cavalry_proportion)),
+ "AI_SUPPORT_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_support_proportion)),
+ "AI_SPECIAL_PROPORTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_special_proportion)),
+ "AI_ESCORT_RATIO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_escort_ratio)),
+ "AI_ARMY_TAXBASE_FRACTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_army_taxbase_fraction)),
+ "AI_NAVY_TAXBASE_FRACTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_navy_taxbase_fraction)),
+ "AI_BLOCKADE_RANGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ai_blockade_range)),
+ "RECON_UNIT_RATIO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(recon_unit_ratio)),
+ "ENGINEER_UNIT_RATIO", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(engineer_unit_ratio)),
+ "SIEGE_BRIGADES_MIN", ONE_EXACTLY, expect_uint(assign_variable_callback(siege_brigades_min)),
+ "SIEGE_BRIGADES_MAX", ONE_EXACTLY, expect_uint(assign_variable_callback(siege_brigades_max)),
+ "SIEGE_BRIGADES_BONUS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(siege_brigades_bonus)),
+ "RECON_SIEGE_EFFECT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(recon_siege_effect)),
+ "SIEGE_ATTRITION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(siege_attrition)),
+ "BASE_MILITARY_TACTICS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_military_tactics)),
+ "NAVAL_LOW_SUPPLY_DAMAGE_SUPPLY_STATUS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_low_supply_damage_supply_status)),
+ "NAVAL_LOW_SUPPLY_DAMAGE_DAYS_DELAY", ONE_EXACTLY,
+ expect_days(assign_variable_callback(naval_low_supply_damage_days_delay)),
+ "NAVAL_LOW_SUPPLY_DAMAGE_MIN_STR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_low_supply_damage_min_str)),
+ "NAVAL_LOW_SUPPLY_DAMAGE_PER_DAY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(naval_low_supply_damage_per_day))
+ );
+}
diff --git a/src/openvic-simulation/defines/MilitaryDefines.hpp b/src/openvic-simulation/defines/MilitaryDefines.hpp
new file mode 100644
index 0000000..2921195
--- /dev/null
+++ b/src/openvic-simulation/defines/MilitaryDefines.hpp
@@ -0,0 +1,86 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/pop/Pop.hpp"
+#include "openvic-simulation/types/Date.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct MilitaryDefines {
+ friend struct DefineManager;
+
+ private:
+ Timespan PROPERTY(dig_in_increase_each_days);
+ fixed_point_t PROPERTY(reinforce_speed);
+ fixed_point_t PROPERTY(combat_difficulty_impact);
+ size_t PROPERTY(base_combat_width);
+ Pop::pop_size_t PROPERTY(min_pop_size_for_regiment);
+ Pop::pop_size_t PROPERTY(pop_size_per_regiment);
+ fixed_point_t PROPERTY(soldier_to_pop_damage);
+ fixed_point_t PROPERTY(land_speed_modifier);
+ fixed_point_t PROPERTY(naval_speed_modifier);
+ fixed_point_t PROPERTY(exp_gain_div);
+ fixed_point_t PROPERTY(leader_recruit_cost);
+ fixed_point_t PROPERTY(supply_range);
+ fixed_point_t PROPERTY(pop_size_per_regiment_protectorate_multiplier);
+ fixed_point_t PROPERTY(pop_size_per_regiment_colony_multiplier);
+ fixed_point_t PROPERTY(pop_size_per_regiment_non_core_multiplier);
+ size_t PROPERTY(gas_attack_modifier);
+ fixed_point_t PROPERTY(combatloss_war_exhaustion);
+ fixed_point_t PROPERTY(leader_max_random_prestige);
+ fixed_point_t PROPERTY(leader_age_death_factor);
+ fixed_point_t PROPERTY(leader_prestige_to_morale_factor);
+ fixed_point_t PROPERTY(leader_prestige_to_max_org_factor);
+ fixed_point_t PROPERTY(leader_transfer_penalty_on_country_prestige);
+ fixed_point_t PROPERTY(leader_prestige_land_gain);
+ fixed_point_t PROPERTY(leader_prestige_naval_gain);
+ fixed_point_t PROPERTY(naval_combat_seeking_chance);
+ fixed_point_t PROPERTY(naval_combat_seeking_chance_min);
+ fixed_point_t PROPERTY(naval_combat_self_defence_chance);
+ fixed_point_t PROPERTY(naval_combat_shift_back_on_next_target);
+ fixed_point_t PROPERTY(naval_combat_shift_back_duration_scale);
+ fixed_point_t PROPERTY(naval_combat_speed_to_distance_factor);
+ fixed_point_t PROPERTY(naval_combat_change_target_chance);
+ fixed_point_t PROPERTY(naval_combat_damage_org_mult);
+ fixed_point_t PROPERTY(naval_combat_damage_str_mult);
+ fixed_point_t PROPERTY(naval_combat_damage_mult_no_org);
+ fixed_point_t PROPERTY(naval_combat_retreat_chance);
+ fixed_point_t PROPERTY(naval_combat_retreat_str_org_level);
+ fixed_point_t PROPERTY(naval_combat_retreat_speed_mod);
+ fixed_point_t PROPERTY(naval_combat_retreat_min_distance);
+ fixed_point_t PROPERTY(naval_combat_damaged_target_selection);
+ fixed_point_t PROPERTY(naval_combat_stacking_target_change);
+ fixed_point_t PROPERTY(naval_combat_stacking_target_select);
+ size_t PROPERTY(naval_combat_max_targets);
+ fixed_point_t PROPERTY(ai_bigship_proportion);
+ fixed_point_t PROPERTY(ai_lightship_proportion);
+ fixed_point_t PROPERTY(ai_transport_proportion);
+ fixed_point_t PROPERTY(ai_cavalry_proportion);
+ fixed_point_t PROPERTY(ai_support_proportion);
+ fixed_point_t PROPERTY(ai_special_proportion);
+ fixed_point_t PROPERTY(ai_escort_ratio);
+ fixed_point_t PROPERTY(ai_army_taxbase_fraction);
+ fixed_point_t PROPERTY(ai_navy_taxbase_fraction);
+ fixed_point_t PROPERTY(ai_blockade_range);
+ fixed_point_t PROPERTY(recon_unit_ratio);
+ fixed_point_t PROPERTY(engineer_unit_ratio);
+ size_t PROPERTY(siege_brigades_min);
+ size_t PROPERTY(siege_brigades_max);
+ fixed_point_t PROPERTY(siege_brigades_bonus);
+ fixed_point_t PROPERTY(recon_siege_effect);
+ fixed_point_t PROPERTY(siege_attrition);
+ fixed_point_t PROPERTY(base_military_tactics);
+ fixed_point_t PROPERTY(naval_low_supply_damage_supply_status);
+ Timespan PROPERTY(naval_low_supply_damage_days_delay);
+ fixed_point_t PROPERTY(naval_low_supply_damage_min_str);
+ fixed_point_t PROPERTY(naval_low_supply_damage_per_day);
+
+ MilitaryDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/defines/PopsDefines.cpp b/src/openvic-simulation/defines/PopsDefines.cpp
new file mode 100644
index 0000000..6fc8d21
--- /dev/null
+++ b/src/openvic-simulation/defines/PopsDefines.cpp
@@ -0,0 +1,142 @@
+#include "PopsDefines.hpp"
+
+using namespace OpenVic;
+using namespace OpenVic::NodeTools;
+
+PopsDefines::PopsDefines()
+ : base_clergy_for_literacy {},
+ max_clergy_for_literacy {},
+ literacy_change_speed {},
+ assimilation_scale {},
+ conversion_scale {},
+ immigration_scale {},
+ promotion_scale {},
+ promotion_assimilation_chance {},
+ luxury_threshold {},
+ base_goods_demand {},
+ base_popgrowth {},
+ min_life_rating_for_growth {},
+ life_rating_growth_bonus {},
+ life_need_starvation_limit {},
+ mil_lack_everyday_need {},
+ mil_has_everyday_need {},
+ mil_has_luxury_need {},
+ mil_no_life_need {},
+ mil_require_reform {},
+ mil_ideology {},
+ mil_ruling_party {},
+ mil_reform_impact {},
+ mil_war_exhaustion {},
+ mil_non_accepted {},
+ con_literacy {},
+ con_luxury_goods {},
+ con_poor_clergy {},
+ con_midrich_clergy {},
+ con_reform_impact {},
+ con_colonial_factor {},
+ ruling_party_happy_change {},
+ ruling_party_angry_change {},
+ pdef_base_con {},
+ national_focus_divider {},
+ pop_savings {},
+ state_creation_admin_limit {},
+ mil_to_join_rebel {},
+ mil_to_join_rising {},
+ mil_to_autorise {},
+ reduction_after_riseing {},
+ reduction_after_defeat {},
+ pop_to_leadership {},
+ artisan_min_productivity {},
+ slave_growth_divisor {},
+ mil_hit_from_conquest {},
+ luxury_con_change {},
+ invention_impact_on_demand {},
+ artisan_suppressed_colonial_goods_category {},
+ issue_movement_join_limit {},
+ issue_movement_leave_limit {},
+ movement_con_factor {},
+ movement_lit_factor {},
+ mil_on_reb_move {},
+ population_suppression_factor {},
+ population_movement_radical_factor {},
+ nationalist_movement_mil_cap {},
+ movement_support_uh_factor {},
+ rebel_occupation_strength_bonus {},
+ large_population_limit {},
+ large_population_influence_penalty_chunk {} {}
+
+std::string_view PopsDefines::get_name() const {
+ return "pops";
+}
+
+node_callback_t PopsDefines::expect_defines() {
+ return expect_dictionary_keys(
+ "BASE_CLERGY_FOR_LITERACY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_clergy_for_literacy)),
+ "MAX_CLERGY_FOR_LITERACY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(max_clergy_for_literacy)),
+ "LITERACY_CHANGE_SPEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(literacy_change_speed)),
+ "ASSIMILATION_SCALE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(assimilation_scale)),
+ "CONVERSION_SCALE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(conversion_scale)),
+ "IMMIGRATION_SCALE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(immigration_scale)),
+ "PROMOTION_SCALE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(promotion_scale)),
+ "PROMOTION_ASSIMILATION_CHANCE", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(promotion_assimilation_chance)),
+ "LUXURY_THRESHOLD", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(luxury_threshold)),
+ "BASE_GOODS_DEMAND", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_goods_demand)),
+ "BASE_POPGROWTH", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(base_popgrowth)),
+ "MIN_LIFE_RATING_FOR_GROWTH", ONE_EXACTLY, expect_uint(assign_variable_callback(min_life_rating_for_growth)),
+ "LIFE_RATING_GROWTH_BONUS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(life_rating_growth_bonus)),
+ "LIFE_NEED_STARVATION_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(life_need_starvation_limit)),
+ "MIL_LACK_EVERYDAY_NEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_lack_everyday_need)),
+ "MIL_HAS_EVERYDAY_NEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_has_everyday_need)),
+ "MIL_HAS_LUXURY_NEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_has_luxury_need)),
+ "MIL_NO_LIFE_NEED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_no_life_need)),
+ "MIL_REQUIRE_REFORM", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_require_reform)),
+ "MIL_IDEOLOGY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_ideology)),
+ "MIL_RULING_PARTY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_ruling_party)),
+ "MIL_REFORM_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_reform_impact)),
+ "MIL_WAR_EXHAUSTION", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_war_exhaustion)),
+ "MIL_NON_ACCEPTED", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_non_accepted)),
+ "CON_LITERACY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_literacy)),
+ "CON_LUXURY_GOODS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_luxury_goods)),
+ "CON_POOR_CLERGY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_poor_clergy)),
+ "CON_MIDRICH_CLERGY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_midrich_clergy)),
+ "CON_REFORM_IMPACT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_reform_impact)),
+ "CON_COLONIAL_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(con_colonial_factor)),
+ "RULING_PARTY_HAPPY_CHANGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ruling_party_happy_change)),
+ "RULING_PARTY_ANGRY_CHANGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(ruling_party_angry_change)),
+ "PDEF_BASE_CON", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(pdef_base_con)),
+ "NATIONAL_FOCUS_DIVIDER", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(national_focus_divider)),
+ "POP_SAVINGS", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(pop_savings)),
+ "STATE_CREATION_ADMIN_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(state_creation_admin_limit)),
+ "MIL_TO_JOIN_REBEL", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_to_join_rebel)),
+ "MIL_TO_JOIN_RISING", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_to_join_rising)),
+ "MIL_TO_AUTORISE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_to_autorise)),
+ "REDUCTION_AFTER_RISEING", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(reduction_after_riseing)),
+ "REDUCTION_AFTER_DEFEAT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(reduction_after_defeat)),
+ "POP_TO_LEADERSHIP", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(pop_to_leadership)),
+ "ARTISAN_MIN_PRODUCTIVITY", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(artisan_min_productivity)),
+ "SLAVE_GROWTH_DIVISOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(slave_growth_divisor)),
+ "MIL_HIT_FROM_CONQUEST", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_hit_from_conquest)),
+ "LUXURY_CON_CHANGE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(luxury_con_change)),
+ "INVENTION_IMPACT_ON_DEMAND", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(invention_impact_on_demand)),
+ "ARTISAN_SUPPRESSED_COLONIAL_GOODS_CATEGORY", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(artisan_suppressed_colonial_goods_category)),
+ "ISSUE_MOVEMENT_JOIN_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(issue_movement_join_limit)),
+ "ISSUE_MOVEMENT_LEAVE_LIMIT", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(issue_movement_leave_limit)),
+ "MOVEMENT_CON_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(movement_con_factor)),
+ "MOVEMENT_LIT_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(movement_lit_factor)),
+ "MIL_ON_REB_MOVE", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(mil_on_reb_move)),
+ "POPULATION_SUPPRESSION_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(population_suppression_factor)),
+ "POPULATION_MOVEMENT_RADICAL_FACTOR", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(population_movement_radical_factor)),
+ "NATIONALIST_MOVEMENT_MIL_CAP", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(nationalist_movement_mil_cap)),
+ "MOVEMENT_SUPPORT_UH_FACTOR", ONE_EXACTLY, expect_fixed_point(assign_variable_callback(movement_support_uh_factor)),
+ "REBEL_OCCUPATION_STRENGTH_BONUS", ONE_EXACTLY,
+ expect_fixed_point(assign_variable_callback(rebel_occupation_strength_bonus)),
+ "LARGE_POPULATION_LIMIT", ONE_EXACTLY, expect_uint(assign_variable_callback(large_population_limit)),
+ "LARGE_POPULATION_INFLUENCE_PENALTY_CHUNK", ONE_EXACTLY,
+ expect_uint(assign_variable_callback(large_population_influence_penalty_chunk))
+ );
+}
diff --git a/src/openvic-simulation/defines/PopsDefines.hpp b/src/openvic-simulation/defines/PopsDefines.hpp
new file mode 100644
index 0000000..50d5b79
--- /dev/null
+++ b/src/openvic-simulation/defines/PopsDefines.hpp
@@ -0,0 +1,82 @@
+#pragma once
+
+#include "openvic-simulation/dataloader/NodeTools.hpp"
+#include "openvic-simulation/map/ProvinceInstance.hpp"
+#include "openvic-simulation/pop/Pop.hpp"
+#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
+#include "openvic-simulation/utility/Getters.hpp"
+
+namespace OpenVic {
+ struct DefineManager;
+
+ struct PopsDefines {
+ friend struct DefineManager;
+
+ private:
+ fixed_point_t PROPERTY(base_clergy_for_literacy);
+ fixed_point_t PROPERTY(max_clergy_for_literacy);
+ fixed_point_t PROPERTY(literacy_change_speed);
+ fixed_point_t PROPERTY(assimilation_scale);
+ fixed_point_t PROPERTY(conversion_scale);
+ fixed_point_t PROPERTY(immigration_scale);
+ fixed_point_t PROPERTY(promotion_scale);
+ fixed_point_t PROPERTY(promotion_assimilation_chance);
+ fixed_point_t PROPERTY(luxury_threshold);
+ fixed_point_t PROPERTY(base_goods_demand);
+ fixed_point_t PROPERTY(base_popgrowth);
+ ProvinceInstance::life_rating_t PROPERTY(min_life_rating_for_growth);
+ fixed_point_t PROPERTY(life_rating_growth_bonus);
+ fixed_point_t PROPERTY(life_need_starvation_limit);
+ fixed_point_t PROPERTY(mil_lack_everyday_need);
+ fixed_point_t PROPERTY(mil_has_everyday_need);
+ fixed_point_t PROPERTY(mil_has_luxury_need);
+ fixed_point_t PROPERTY(mil_no_life_need);
+ fixed_point_t PROPERTY(mil_require_reform);
+ fixed_point_t PROPERTY(mil_ideology);
+ fixed_point_t PROPERTY(mil_ruling_party);
+ fixed_point_t PROPERTY(mil_reform_impact);
+ fixed_point_t PROPERTY(mil_war_exhaustion);
+ fixed_point_t PROPERTY(mil_non_accepted);
+ fixed_point_t PROPERTY(con_literacy);
+ fixed_point_t PROPERTY(con_luxury_goods);
+ fixed_point_t PROPERTY(con_poor_clergy);
+ fixed_point_t PROPERTY(con_midrich_clergy);
+ fixed_point_t PROPERTY(con_reform_impact);
+ fixed_point_t PROPERTY(con_colonial_factor);
+ fixed_point_t PROPERTY(ruling_party_happy_change);
+ fixed_point_t PROPERTY(ruling_party_angry_change);
+ fixed_point_t PROPERTY(pdef_base_con);
+ fixed_point_t PROPERTY(national_focus_divider);
+ fixed_point_t PROPERTY(pop_savings);
+ fixed_point_t PROPERTY(state_creation_admin_limit);
+ fixed_point_t PROPERTY(mil_to_join_rebel);
+ fixed_point_t PROPERTY(mil_to_join_rising);
+ fixed_point_t PROPERTY(mil_to_autorise);
+ fixed_point_t PROPERTY(reduction_after_riseing);
+ fixed_point_t PROPERTY(reduction_after_defeat);
+ fixed_point_t PROPERTY(pop_to_leadership);
+ fixed_point_t PROPERTY(artisan_min_productivity);
+ fixed_point_t PROPERTY(slave_growth_divisor);
+ fixed_point_t PROPERTY(mil_hit_from_conquest);
+ fixed_point_t PROPERTY(luxury_con_change);
+ fixed_point_t PROPERTY(invention_impact_on_demand);
+ fixed_point_t PROPERTY(artisan_suppressed_colonial_goods_category);
+ fixed_point_t PROPERTY(issue_movement_join_limit);
+ fixed_point_t PROPERTY(issue_movement_leave_limit);
+ fixed_point_t PROPERTY(movement_con_factor);
+ fixed_point_t PROPERTY(movement_lit_factor);
+ fixed_point_t PROPERTY(mil_on_reb_move);
+ fixed_point_t PROPERTY(population_suppression_factor);
+ fixed_point_t PROPERTY(population_movement_radical_factor);
+ fixed_point_t PROPERTY(nationalist_movement_mil_cap);
+ fixed_point_t PROPERTY(movement_support_uh_factor);
+ fixed_point_t PROPERTY(rebel_occupation_strength_bonus);
+ Pop::pop_size_t PROPERTY(large_population_limit);
+ Pop::pop_size_t PROPERTY(large_population_influence_penalty_chunk);
+
+ PopsDefines();
+
+ std::string_view get_name() const;
+ NodeTools::node_callback_t expect_defines();
+ };
+}
diff --git a/src/openvic-simulation/map/ProvinceInstance.cpp b/src/openvic-simulation/map/ProvinceInstance.cpp
index 64a104b..b3d2df3 100644
--- a/src/openvic-simulation/map/ProvinceInstance.cpp
+++ b/src/openvic-simulation/map/ProvinceInstance.cpp
@@ -1,6 +1,7 @@
#include "ProvinceInstance.hpp"
#include "openvic-simulation/country/CountryInstance.hpp"
+#include "openvic-simulation/defines/Define.hpp"
#include "openvic-simulation/economy/production/ProductionType.hpp"
#include "openvic-simulation/economy/production/ResourceGatheringOperation.hpp"
#include "openvic-simulation/history/ProvinceHistory.hpp"
@@ -9,7 +10,6 @@
#include "openvic-simulation/map/Region.hpp"
#include "openvic-simulation/map/TerrainType.hpp"
#include "openvic-simulation/military/UnitInstanceGroup.hpp"
-#include "openvic-simulation/misc/Define.hpp"
#include "openvic-simulation/modifier/StaticModifierCache.hpp"
#include "openvic-simulation/politics/Ideology.hpp"
#include "openvic-simulation/pop/Pop.hpp"
@@ -184,12 +184,14 @@ void ProvinceInstance::_update_pops(DefineManager const& define_manager) {
max_supported_regiments = 0;
+ MilitaryDefines const& military_defines = define_manager.get_military_defines();
+
using enum colony_status_t;
const fixed_point_t pop_size_per_regiment_multiplier =
- colony_status == PROTECTORATE ? define_manager.get_pop_size_per_regiment_protectorate_multiplier()
- : colony_status == COLONY ? define_manager.get_pop_size_per_regiment_colony_multiplier()
- : is_owner_core() ? fixed_point_t::_1() : define_manager.get_pop_size_per_regiment_non_core_multiplier();
+ colony_status == PROTECTORATE ? military_defines.get_pop_size_per_regiment_protectorate_multiplier()
+ : colony_status == COLONY ? military_defines.get_pop_size_per_regiment_colony_multiplier()
+ : is_owner_core() ? fixed_point_t::_1() : military_defines.get_pop_size_per_regiment_non_core_multiplier();
for (Pop& pop : pops) {
pop.update_gamestate(define_manager, owner, pop_size_per_regiment_multiplier);
diff --git a/src/openvic-simulation/misc/Define.cpp b/src/openvic-simulation/misc/Define.cpp
deleted file mode 100644
index c28aab0..0000000
--- a/src/openvic-simulation/misc/Define.cpp
+++ /dev/null
@@ -1,270 +0,0 @@
-#include "Define.hpp"
-
-#include <openvic-dataloader/v2script/AbstractSyntaxTree.hpp>
-
-#include "openvic-simulation/dataloader/NodeTools.hpp"
-#include "openvic-simulation/types/Date.hpp"
-#include "openvic-simulation/types/IdentifierRegistry.hpp"
-#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
-#include "openvic-simulation/utility/StringUtils.hpp"
-
-using namespace OpenVic;
-using namespace OpenVic::NodeTools;
-
-std::string_view Define::type_to_string(Type type) {
- using enum Type;
-
- switch (type) {
- case Date: return "date";
- case Country: return "country";
- case Economy: return "economy";
- case Military: return "military";
- case Diplomacy: return "diplomacy";
- case Pops: return "pops";
- case Ai: return "ai";
- case Graphics: return "graphics";
- default: return "unknown";
- }
-}
-
-Define::Type Define::string_to_type(std::string_view str) {
- using enum Type;
-
- static const string_map_t<Define::Type> type_map {
- { "country", Country },
- { "economy", Economy },
- { "military", Military },
- { "diplomacy", Diplomacy },
- { "pops", Pops },
- { "ai", Ai },
- { "graphics", Graphics },
- };
-
- const string_map_t<Define::Type>::const_iterator type_it = type_map.find(str);
-
- if (type_it != type_map.end()) {
- return type_it->second;
- } else {
- return Unknown;
- }
-}
-
-Define::Define(std::string_view new_identifier, std::string_view new_value, Type new_type)
- : HasIdentifier { new_identifier }, value { new_value }, type { new_type } {}
-
-Date Define::get_value_as_date(bool* successful) const {
- return Date::from_string(value, successful);
-}
-
-fixed_point_t Define::get_value_as_fp(bool* successful) const {
- return fixed_point_t::parse(value, successful);
-}
-
-int64_t Define::get_value_as_int(bool* successful) const {
- return StringUtils::string_to_int64(value, successful);
-}
-
-uint64_t Define::get_value_as_uint(bool* successful) const {
- return StringUtils::string_to_uint64(value, successful);
-}
-
-std::ostream& OpenVic::operator<<(std::ostream& os, Define::Type type) {
- return os << Define::type_to_string(type);
-}
-
-template<typename T>
-bool DefineManager::load_define(T& value, Define::Type type, std::string_view name) const {
- static_assert(
- std::same_as<T, OpenVic::Date> || std::same_as<T, fixed_point_t> || std::integral<T>
- );
-
- Define const* define = defines.get_item_by_identifier(name);
-
- if (define != nullptr) {
- if (define->type != type) {
- Logger::warning("Mismatched define type for \"", name, "\" - expected ", type, ", got ", define->type);
- }
-
- const auto parse =
- [define, &value, &name]<typename U, U (Define::*Func)(bool*) const>(std::string_view type_name) -> bool {
- bool success = false;
- const U result = (define->*Func)(&success);
- if (success) {
- value = static_cast<T>(result);
- return true;
- } else {
- Logger::error("Failed to parse ", type_name, " \"", define->get_value(), "\" for define \"", name, "\"");
- return false;
- }
- };
-
- if constexpr (std::same_as<T, OpenVic::Date>) {
- return parse.template operator()<Date, &Define::get_value_as_date>("date");
- } else if constexpr (std::same_as<T, fixed_point_t>) {
- return parse.template operator()<fixed_point_t, &Define::get_value_as_fp>("fixed point");
- } else if constexpr (std::signed_integral<T>) {
- return parse.template operator()<int64_t, &Define::get_value_as_int>("signed int");
- } else if constexpr (std::unsigned_integral<T>) {
- return parse.template operator()<uint64_t, &Define::get_value_as_uint>("unsigned int");
- }
- } else {
- Logger::error("Missing define \"", name, "\"");
- return false;
- }
-}
-
-template<Timespan (*Func)(Timespan::day_t)>
-bool DefineManager::_load_define_timespan(Timespan& value, Define::Type type, std::string_view name) const {
- Define const* define = defines.get_item_by_identifier(name);
- if (define != nullptr) {
- if (define->type != type) {
- Logger::warning("Mismatched define type for \"", name, "\" - expected ", type, ", got ", define->type);
- }
- bool success = false;
- const int64_t result = define->get_value_as_int(&success);
- if (success) {
- value = Func(result);
- return true;
- } else {
- Logger::error("Failed to parse days \"", define->get_value(), "\" for define \"", name, "\"");
- return false;
- }
- } else {
- Logger::error("Missing define \"", name, "\"");
- return false;
- }
-}
-
-bool DefineManager::load_define_days(Timespan& value, Define::Type type, std::string_view name) const {
- return _load_define_timespan<Timespan::from_days>(value, type, name);
-}
-
-bool DefineManager::load_define_months(Timespan& value, Define::Type type, std::string_view name) const {
- return _load_define_timespan<Timespan::from_months>(value, type, name);
-}
-
-bool DefineManager::load_define_years(Timespan& value, Define::Type type, std::string_view name) const {
- return _load_define_timespan<Timespan::from_years>(value, type, name);
-}
-
-DefineManager::DefineManager()
- : // Date
- start_date { 1836, 1, 1 },
- end_date { 1936, 1, 1 },
-
- // Country
- great_power_rank { 8 },
- lose_great_power_grace_days { Timespan::from_years(1) },
- secondary_power_rank { 16 },
- country_investment_industrial_score_factor { 1 },
-
- // Economy
-
- // Military
- pop_size_per_regiment { 1000 },
- min_pop_size_for_regiment { 1000 },
- pop_size_per_regiment_protectorate_multiplier { 1 },
- pop_size_per_regiment_colony_multiplier { 1 },
- pop_size_per_regiment_non_core_multiplier { 1 },
-
- // Diplomacy
- disarmed_penalty { 0 }
-
- // Pops
-
- // Ai
-
- // Graphics
-
- {}
-
-bool DefineManager::add_define(std::string_view name, std::string_view value, Define::Type type) {
- if (name.empty()) {
- Logger::error("Invalid define identifier - empty!");
- return false;
- }
-
- if (value.empty()) {
- Logger::error("Invalid define value for \"", name, "\" - empty!");
- return false;
- }
-
- return defines.add_item({ name, value, type }, duplicate_warning_callback);
-}
-
-bool DefineManager::in_game_period(Date date) const {
- return date.in_range(start_date, end_date);
-}
-
-bool DefineManager::load_defines_file(ast::NodeCPtr root) {
- using enum Define::Type;
-
- bool ret = expect_dictionary_keys(
- "defines", ONE_EXACTLY, expect_dictionary([this](std::string_view key, ast::NodeCPtr value) -> bool {
-
- const Define::Type type = Define::string_to_type(key);
-
- if (type != Unknown) {
-
- return expect_dictionary_reserve_length(
- defines,
- [this, type](std::string_view inner_key, ast::NodeCPtr value) -> bool {
- return expect_identifier_or_string(
- [this, &inner_key, type](std::string_view value) -> bool {
- return add_define(inner_key, value, type);
- }
- )(value);
- }
- )(value);
-
- } else if (key == "start_date" || key == "end_date") {
-
- return expect_identifier_or_string(
- [this, &key](std::string_view value) -> bool {
- return add_define(key, value, Date);
- }
- )(value);
-
- } else {
-
- Logger::error("Invalid define type - \"", key, "\"");
- return false;
-
- }
- })
- )(root);
-
- lock_defines();
-
- // Date
- ret &= load_define(start_date, Date, "start_date");
- ret &= load_define(end_date, Date, "end_date");
-
- // Country
- ret &= load_define(great_power_rank, Country, "GREAT_NATIONS_COUNT");
- ret &= load_define_days(lose_great_power_grace_days, Country, "GREATNESS_DAYS");
- ret &= load_define(secondary_power_rank, Country, "COLONIAL_RANK");
- ret &= load_define(country_investment_industrial_score_factor, Country, "INVESTMENT_SCORE_FACTOR");
-
- // Economy
-
- // Military
- ret &= load_define(pop_size_per_regiment, Military, "POP_SIZE_PER_REGIMENT");
- ret &= load_define(min_pop_size_for_regiment, Military, "POP_MIN_SIZE_FOR_REGIMENT");
- ret &= load_define(
- pop_size_per_regiment_protectorate_multiplier, Military, "POP_MIN_SIZE_FOR_REGIMENT_PROTECTORATE_MULTIPLIER"
- );
- ret &= load_define(pop_size_per_regiment_colony_multiplier, Military, "POP_MIN_SIZE_FOR_REGIMENT_COLONY_MULTIPLIER");
- ret &= load_define(pop_size_per_regiment_non_core_multiplier, Military, "POP_MIN_SIZE_FOR_REGIMENT_NONCORE_MULTIPLIER");
-
- // Diplomacy
- ret &= load_define(disarmed_penalty, Diplomacy, "DISARMAMENT_ARMY_HIT");
-
- // Pops
-
- // Ai
-
- // Graphics
-
- return ret;
-}
diff --git a/src/openvic-simulation/misc/Define.hpp b/src/openvic-simulation/misc/Define.hpp
deleted file mode 100644
index 064883c..0000000
--- a/src/openvic-simulation/misc/Define.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-#pragma once
-
-#include "openvic-simulation/pop/Pop.hpp"
-#include "openvic-simulation/types/IdentifierRegistry.hpp"
-#include "openvic-simulation/types/fixed_point/FixedPoint.hpp"
-
-namespace OpenVic {
- struct DefineManager;
-
- struct Define : HasIdentifier {
- friend struct DefineManager;
-
- enum class Type : unsigned char { Unknown, Date, Country, Economy, Military, Diplomacy, Pops, Ai, Graphics };
-
- static std::string_view type_to_string(Type type);
- // This only accepts type names found in defines.lua, so it will never return Type::Date
- static Type string_to_type(std::string_view str);
-
- private:
- std::string PROPERTY(value);
- const Type PROPERTY(type);
-
- Define(std::string_view new_identifier, std::string_view new_value, Type new_type);
-
- public:
- Define(Define&&) = default;
-
- Date get_value_as_date(bool* successful = nullptr) const;
- fixed_point_t get_value_as_fp(bool* successful = nullptr) const;
- int64_t get_value_as_int(bool* successful = nullptr) const;
- uint64_t get_value_as_uint(bool* successful = nullptr) const;
- };
-
- std::ostream& operator<<(std::ostream& os, Define::Type type);
-
- struct DefineManager {
- private:
- IdentifierRegistry<Define> IDENTIFIER_REGISTRY(define);
-
- // Date
- Date PROPERTY(start_date); // start_date
- Date PROPERTY(end_date); // end_date
-
- // Country
- size_t PROPERTY(great_power_rank); // GREAT_NATIONS_COUNT
- Timespan PROPERTY(lose_great_power_grace_days); // GREATNESS_DAYS
- size_t PROPERTY(secondary_power_rank); // COLONIAL_RANK
- fixed_point_t PROPERTY(country_investment_industrial_score_factor); // INVESTMENT_SCORE_FACTOR
-
- // Economy
-
- // Military
- Pop::pop_size_t PROPERTY(pop_size_per_regiment); // POP_SIZE_PER_REGIMENT
- Pop::pop_size_t PROPERTY(min_pop_size_for_regiment); // POP_MIN_SIZE_FOR_REGIMENT
- // POP_MIN_SIZE_FOR_REGIMENT_PROTECTORATE_MULTIPLIER
- fixed_point_t PROPERTY(pop_size_per_regiment_protectorate_multiplier);
- fixed_point_t PROPERTY(pop_size_per_regiment_colony_multiplier); // POP_MIN_SIZE_FOR_REGIMENT_COLONY_MULTIPLIER
- fixed_point_t PROPERTY(pop_size_per_regiment_non_core_multiplier); // POP_MIN_SIZE_FOR_REGIMENT_NONCORE_MULTIPLIER
-
- // Diplomacy
- fixed_point_t PROPERTY(disarmed_penalty); // DISARMAMENT_ARMY_HIT
-
- // Pops
-
- // Ai
-
- // Graphics
-
- template<typename T>
- bool load_define(T& value, Define::Type type, std::string_view name) const;
-
- template<Timespan (*Func)(Timespan::day_t)>
- bool _load_define_timespan(Timespan& value, Define::Type type, std::string_view name) const;
-
- bool load_define_days(Timespan& value, Define::Type type, std::string_view name) const;
- bool load_define_months(Timespan& value, Define::Type type, std::string_view name) const;
- bool load_define_years(Timespan& value, Define::Type type, std::string_view name) const;
-
- public:
- DefineManager();
-
- bool add_define(std::string_view name, std::string_view value, Define::Type type);
-
- bool in_game_period(Date date) const;
-
- bool load_defines_file(ast::NodeCPtr root);
- };
-}
diff --git a/src/openvic-simulation/pop/Pop.cpp b/src/openvic-simulation/pop/Pop.cpp
index 5780450..d92aa24 100644
--- a/src/openvic-simulation/pop/Pop.cpp
+++ b/src/openvic-simulation/pop/Pop.cpp
@@ -2,9 +2,9 @@
#include "openvic-simulation/country/CountryDefinition.hpp"
#include "openvic-simulation/country/CountryInstance.hpp"
+#include "openvic-simulation/defines/Define.hpp"
#include "openvic-simulation/map/ProvinceInstance.hpp"
#include "openvic-simulation/military/UnitType.hpp"
-#include "openvic-simulation/misc/Define.hpp"
#include "openvic-simulation/modifier/ModifierManager.hpp"
#include "openvic-simulation/politics/Ideology.hpp"
#include "openvic-simulation/politics/Issue.hpp"
@@ -144,14 +144,16 @@ void Pop::update_gamestate(
DefineManager const& define_manager, CountryInstance const* owner, const fixed_point_t pop_size_per_regiment_multiplier
) {
if (type->get_can_be_recruited()) {
+ MilitaryDefines const& military_defines = define_manager.get_military_defines();
+
if (
- size < define_manager.get_min_pop_size_for_regiment() || owner == nullptr ||
+ size < military_defines.get_min_pop_size_for_regiment() || owner == nullptr ||
!RegimentType::allowed_cultures_check_culture_in_country(owner->get_allowed_regiment_cultures(), culture, *owner)
) {
max_supported_regiments = 0;
} else {
max_supported_regiments = (fixed_point_t::parse(size) / (
- fixed_point_t::parse(define_manager.get_pop_size_per_regiment()) * pop_size_per_regiment_multiplier
+ fixed_point_t::parse(military_defines.get_pop_size_per_regiment()) * pop_size_per_regiment_multiplier
)).to_int64_t() + 1;
}
}