KINBARROW modding reference
v0.2.0+main.e011511f4 dataset 4a103dcdb658a75a

Professions and buildings (ours)

The content tree — the contract for the data/ tree.

  • professions/ mirrors the CANONICAL engine set (crates/engine/src/professions.rs: professions are graph data) — twelve files, same abilities, wage seeds (wage_hours, /0387 §6; only the waged four, in hours of the day: harbormaster 3, fixer 2, guildmaster 4, watch captain 4), and display names (“Harbormaster”, “Watch Captain”). Each adds two slice-two facts: the trade tool as a good id (the PRACTICES key: fisher’s tackle, brewer’s supplies, baker’s cook’s utensils, tanner’s and smith’s kits; the desk-and-title professions carry none), and proficiencies — 2-3 background skills, THE 0066-a GENERATION SOURCE: a career is where a soul’s skill set comes from (fisher → Survival + Athletics; watch captain → Perception + Intimidation + Athletics, the career-guard exemplar; innkeeper → Insight + Persuasion). The picks are ours, noted per file.
  • buildings/ holds building TYPES for worldgen to instantiate — never instances. produces is the PRODUCES relationship as data (rate = units per worked hour, before the work multiplier; raw extraction names no trade tool). stations closes the recipe-station references. build_cost is the construction composition — derives a building’s maximum integrity from it (Σ qty × weight × class integrity_per_lb × material integrity_factor), and building repair re-consumes a damage-proportional fraction of it. Lumber camp and pasture have no canonical profession — open-access labor until the trades exist.

Geography grounds the buildings

Terrain tags are open ids like material classes, resolving against tables/terrain_tags.ron — the vocabulary today: coastal, river, arable, hills, mountains, forest, ore_deposit. Each building type states where it can exist via requires — a CONJUNCTION (all tags must be present; [] = anywhere). The map as landed: dock [coastal]; fields [arable]; pasture [arable]; mine [ore_deposit]; lumber_camp [forest]; tannery [river]; everything else [] — judgment noted per file. Or-semantics (a river-port dock, hill pasture) is a named seam: no speculative requires_any until a consumer needs it.

  • Settlements/regions will carry terrain tags as worldgen data — the engine consumes them in the worldgen slices; this contract defines the data, not the consumer. Building placement validity DERIVES from settlement terrain, and production profiles thereby derive from geography instead of being authored — the two-town divergence generalized: towns differ because their ground does, not because someone wrote two economies.
  • Deposits: the ore_deposit tag is where the material rarity/region hints from the materials work ground out — a region’s deposits determine which ores its mines can produce (the mine type lists mithral_ore; worldgen instantiates that row only where the region says so). Region-side data arrives later; the seam is named now.
  • Constructibility footnote: “raw” ultimately means geography-PERMITTED production. A good producible only by buildings whose terrain no known region provides is a WARNING tier, not an error — regions are data-incomplete until worldgen wiring, so the validator warns on geography-gated raws rather than failing them.