-- Communicates current population to mountainhomes to avoid cap overshooting. -- The reason for population cap problems is that the population value it -- is compared against comes from the last dwarven caravan that successfully -- left for mountainhomes. This script instantly updates it. -- Note that a migration wave can still overshoot the limit by 1-2 dwarves because -- of the last migrant bringing his family. Likewise, king arrival ignores cap. local args = {...} local ui = df.global.ui local ui_stats = ui.tasks local civ = df.historical_entity.find(ui.civ_id) if not civ then qerror('No active fortress.') end local civ_stats = civ.activity_stats if not civ_stats then if args[1] ~= 'force' then qerror('No caravan report object; use "fix/population-cap force" to create one') end print('Creating an empty statistics structure...') civ.activity_stats = { new = true, created_weapons = { resize = #ui_stats.created_weapons }, discovered_creature_foods = { resize = #ui_stats.discovered_creature_foods }, discovered_creatures = { resize = #ui_stats.discovered_creatures }, discovered_plant_foods = { resize = #ui_stats.discovered_plant_foods }, discovered_plants = { resize = #ui_stats.discovered_plants }, } civ_stats = civ.activity_stats end -- Use max to keep at least some of the original caravan communication idea civ_stats.population = math.max(civ_stats.population, ui_stats.population) print('Home civ notified about current population.')