Wiki / Player Guide / Labor

Labor

How Akhenaten builds the city worker pool, how buildings take staff, and what the Enhanced Features options change.

Worker pool (original formula)

By default the available workforce is derived from demographics, then restricted to commoners (plebs):

  1. Count citizens of working age (ages 20–49, or 20–59 with Retire at 60).
  2. Take 60% of that age band.
  3. Scale by the share of population that are commoners (not patricians).

Workers are then allocated across labor categories (food, industry, government, …) based on building demand and road access. Unemployment and labor shortages affect production and services.

Enhanced Features (do not confuse these)

OptionWhat it doesWhat it does not do
Fixed worker pool Sets available workers to 38% of commoners (plebs). Age pyramid and retirement age no longer change the pool size. Patricians still do not work. Does not change how buildings recruit locally, nor merge labor categories.
Global labour pool Buildings no longer need nearby housing / labor seekers for access — coverage is treated as global. Does not change the size of the worker pool (fixed or OG).
Labor category split Splits Storage & distribution (storage yards, docks) from Industry in the Overseer of Workers, so each can have its own priority. Does not add per-building-type priority inside a category (later). Granaries stay Infrastructure; bazaars stay Food.

Fixed and Global can be enabled together: Fixed sets how many workers exist; Global changes how buildings reach them. Category split is independent. They appear under Features → Gameplay changes.

Building staffing display

Building info panels show current staff and laborers needed (for example 5 Employee ( 10 needed )). Hovering the worker icon shows a short N / max tooltip with the same numbers. Buildings that take no laborers (plazas, gardens, statues, …) do not show a fake staffing row.

Developer Reference

Flags: gameplay_change_fixed_workers, gameplay_fixed_worker_percent (default 38), gameplay_change_global_labour, gameplay_enhanced_labor_category_split.

Pool calc / categories: src/city/city_labor.cpp (calc_fixed_workers_available, calculate_workers, category_for_building).

Info staffing / tooltip: src/window/window_building_info.cpp, src/window/window_info.cpp (draw_tooltip), image hover in src/graphics/elements/ui.cpp (eimg; hit-box must match fit/centering — WR9).

Tests: tests/67_fixed_workers.js, tests/70_workers_staffing_ui.js, tests/160_labor_category_split.js.

Open follow-ups (tracker): map/ghost staffing (WR5), chrome ids (WR6), percent UI (WR7), RE 40% check (WR8), eimg hit-box (WR9), integral restore (IT1); within-category type priority LC2.