Skip to content

Subsystem map

This map helps locate entry points; it does not replace source inspection. Continue with the nearest AGENTS.md before editing a target path.

Subsystem Primary paths Common adjacent contracts
Character / Avatar src/character*, src/avatar* effects, activities, mutation, save
Items / Inventory / Pockets src/item*, src/inventory*, src/item_pocket* JSON item types, crafting, vehicles
Creatures / Monsters src/creature*, src/monster* monster JSON, effects, map
Map / Mapgen src/map*, src/mapgen* terrain/furniture, overmap, save
Overmap src/overmap* overmap terrain/special, mapgen
Vehicles src/vehicle* vehicle-part JSON, map, activities
Crafting src/crafting*, src/recipe* item IDs, requirements, inventory
Mutation / Effects src/mutation*, src/effect* JSON factories, Character, EOC
Activities src/activity*, src/player_activity* actors, Character, serialization
UI / Input src/*ui*, src/input* SDL/curses, translation, platform
Save src/savegame*, src/save_snapshot* every serialized owner, migration
Mod loading src/mod_manager*, data/mods/ dependencies, JSON load order
Lua bridge src/lua_platform*, data/lua/ ModDefinition, LuaLS, registrations
Localization lang/, src/translations* extraction, PO/MO, UI
Android android/ Gradle, JNI/native build, SDL3

Tests are organised around behaviour rather than mirroring every source directory. Search for the type, registration name, or stable ID, then find the same symbol and user-visible behaviour under tests/. Cross-subsystem changes must state object ownership, lifecycle, serialization, and performance hot paths.