From 01d6d8f7b9810d964e3215b7fd0e53ce27cf0ee0 Mon Sep 17 00:00:00 2001 From: ineveraskedforthis Date: Tue, 11 Aug 2026 07:34:16 +0300 Subject: [PATCH] clamp estimation with actual budget --- src/economy/national_budget.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/economy/national_budget.cpp b/src/economy/national_budget.cpp index ff01b247e..0e677cbdb 100644 --- a/src/economy/national_budget.cpp +++ b/src/economy/national_budget.cpp @@ -23,7 +23,13 @@ float estimate_education_spending(sys::state& state, dcon::nation_id n, float bu auto local_hire = state.world.province_get_advanced_province_building_national_size(p, advanced_province_buildings::list::schools_and_universities); auto local_wage = state.world.province_get_labor_price(p, def.throughput_labour_type); auto sat = state.world.province_get_labor_demand_satisfaction(p, def.throughput_labour_type); - total = total + std::max(0.f, local_hire * sat * local_wage); + + auto total_population = state.world.nation_get_demographics(n, demographics::primary_or_accepted); + auto local_population = state.world.province_get_demographics(p, demographics::primary_or_accepted); + auto weight = total_population == 0.f ? 0.f : local_population / total_population; + float local_education_budget = weight * budget; + + total = total + std::max(0.f, std::min(local_education_budget, local_hire * local_wage) * sat); }); return total; }