Files
settled-reach/content/global/krenn-industrial-zone.ron
T
jpmschweitzerandClaude Opus 4.6 9fbad37701 feat(copy): rename zone specs to location-specific, expand behavior pools (#630)
Rename rural-zone-spec.ron → krenn-rural-zone.ron and
industrial-zone-spec.ron → krenn-industrial-zone.ron to reflect that
these are culture×zone specific content, not reusable templates.

Add ~108 new typical_behaviors across all roles:
- Rural: farmer +20 (incl tavern/off-duty), mechanic +15 (incl tavern),
  trader +10 (observable stage directions), militia +5
- Industrial: dock_worker +20 (incl break room), technician +19
  (incl break room), foreman +14 (person-beneath-the-role),
  security +5

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 11:29:41 +01:00

187 lines
11 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Krenn Industrial Zone — location-specific zone content
//
// Schema: server/src/npc/blueprint.rs :: ZoneSpec
// Ticket: #609, #630 (copy team)
// Validate: tooling/validate-ron content/global/krenn-industrial-zone.ron zone
//
// This is content for a specific location: a Krenn industrial district.
// Behaviors, roles, and social sites are culture×zone specific — not reusable
// templates. See Q-057 for the composable behavior generation design that
// will replace hand-authored pools with assembled primitives.
//
// Character: freight handling, manufacturing, maintenance. High throughput.
// Shift rhythms. Functional over comfortable. Nobody lingers — unless they're on break.
(
zone_type: "industrial",
label: "Industrial Zone",
description: "Freight handling, manufacturing, and maintenance. High throughput, shift-based work rhythms, functional over comfortable. Faces are known by role and bay number more than name. The work doesn't stop between shifts — people do.",
// 1-10. Industrial Krenn: steady credit flow, but it all goes somewhere.
economic_level: 7,
// 1-10. Dense. Multiple shifts overlap. Crowds at handover.
population_density: 6,
roles: [
(
id: "dock_worker",
label: "Dock Worker",
// Most common. The zone runs on their backs.
weight: 5,
skill_focus: ["technical"],
combat_eligible: false,
typical_behaviors: [
"guides a freight container into position with hand signals",
"checks a manifest against a handheld scanner, lips moving",
"waits at the loading bay apron with arms crossed, watching the clock",
"calls bay numbers to a colleague across the noise of the floor",
"hooks a cargo sling and steps clear before signaling the lift",
"stacks empty pallets against a wall with mechanical efficiency",
"wipes sweat from her face with a forearm and keeps moving",
"slumps into a break room chair and stares at nothing for a full minute before reaching for a drink",
// on-shift
"drags a heavy case along the deck plating one-handed, leaning hard into the weight",
"re-checks a seal on a container door after a colleague already checked it",
"flags a damaged pallet to the foreman without stopping the line",
"shoulders a cargo rig harness and clips in without looking down",
"sweeps debris off the loading apron with a long push broom",
"braces a container with a boot while reaching for the locking pin",
"reads the load ticket twice, then flips the handheld over to check the back",
"waves off a crane operator when the angle is wrong, holds up a fist",
"steps over a bundled cable run without breaking stride",
"peels off a work glove with his teeth to check a handheld display",
"trades a quick look with a colleague when the foreman walks by",
// off-shift / break room
"unwraps a meal packet in the break room and eats standing at the counter",
"passes a drink to the person next to her without being asked",
"leans back in a break room chair with eyes closed, boots crossed at the ankle",
"laughs at something across the break room table, loud enough to carry",
"shows something on a handheld to a colleague and both of them look at it for a moment",
"sits with elbows on knees, turning an empty cup in both hands",
"splashes water on his face at the sink and stands there a moment before turning off the tap",
"talks over the break room noise at volume, gesturing with a fork",
"falls asleep in a break room chair, chin on chest, arms folded",
],
),
(
id: "technician",
label: "Systems Technician",
// Keeps the infrastructure running. Never enough of them.
weight: 4,
skill_focus: ["technical"],
combat_eligible: false,
typical_behaviors: [
"runs a diagnostic routine on a floor console, eyes on the readout",
"traces a conduit run along the ceiling with a handheld light",
"swaps a panel module with practiced speed and no wasted motion",
"logs a fault code into a datapad before moving on",
"presses an ear to a vibrating duct and listens",
"argues quietly with a display that isn't giving the right numbers",
"queries a fault log through her insert without touching the terminal, eyes briefly unfocused",
"stretches both arms overhead in the break room doorway, blocking it without noticing",
// on-shift
"taps a wrench against a junction box lid to test for rattle",
"pulls a burnt relay from a panel and holds it up to the light",
"clips a sensor lead to two terminals and watches the readout settle",
"photographs a fault site with a handheld before touching anything",
"threads a cable through a conduit run without looking, hands working by feel",
"checks a pressure gauge by putting a thumb on the dial housing and reading the needle",
"labels a repaired junction with tape and a marker, block letters",
"reads a service manual on a battered datapad, scrolling with one finger",
"kneels under a raised floor panel with a light between her teeth",
"closes a maintenance hatch and shoulder-checks it twice",
"stands on the second rung of a ladder and reaches without climbing higher",
// off-shift / break room
"sits sideways in a break room chair, back against the wall, feet on the seat beside her",
"pulls up a schematic on a personal handheld and looks at it between bites",
"refills someone else's cup from the urn without commenting on it",
"puts her boots on the break room table and doesn't move them when the foreman walks in",
"describes a problem to a dock worker who doesn't follow it but nods anyway",
"argues a point at the break room table, tapping the surface for emphasis",
"reads something on a personal device with his head tipped back and the screen held at arm's length",
"laughs until he has to set down his drink",
],
),
(
id: "foreman",
label: "Shift Foreman",
// Fewer of them. High visibility. Everyone knows where they are.
weight: 2,
skill_focus: ["observation", "persuasion"],
combat_eligible: false,
typical_behaviors: [
"walks the floor with a datapad under one arm and says nothing",
"pulls a worker aside for a quiet word near the far wall",
"marks a line off a production board and moves to the next one",
"stands at the mezzanine rail watching throughput without expression",
"reviews shift handover notes and circles something with a stylus",
"speaks to a dock crew in a low voice — they listen without nodding",
"sits alone in the break room rubbing the back of her neck, datapad face-down on the table",
"laughs at something a technician says, then catches herself and goes quiet",
// the person beneath the role
"covers a worker's absence from the shift log by redistributing the bay assignments",
"eats lunch standing at a wall terminal so she can watch the floor at the same time",
"takes the call herself instead of forwarding it, one hand pressed to her other ear against the noise",
"corrects a dock worker's form on the cargo rig harness without making it a lesson",
"walks a new hire through the handover checklist once, point by point, no shortcuts",
"keeps a junior worker between herself and the inspection team as the inspectors pass through",
"finds a reason to be nearby when a new worker makes her first solo lift",
"absorbs a production shortfall report without passing the frustration down the line",
"hands a dock worker an extra meal packet and walks away without explaining it",
"sits next to a technician in the break room and doesn't talk, just sits",
"makes a note in the shift log that takes longer to write than it takes to read",
"tells a bad joke to nobody in particular while marking off the production board",
"signs off on a repair she didn't inspect, because she knows who did it",
"stands at the edge of the loading floor for a long moment before walking back",
],
),
(
id: "security",
label: "Facility Security",
// Present, watchful. Not looking for trouble — cataloguing it.
weight: 2,
skill_focus: ["combat", "observation"],
combat_eligible: true,
typical_behaviors: [
"sweeps the access corridor on a timed circuit, same path each time",
"waves a regular through the checkpoint on sight — scans the one behind them out of procedure",
"leans at the restricted bay entrance, arms folded — been watching this corridor since the shift started",
"notes something in a shift log without reacting to it outwardly",
"watches a handover between crews from across the loading floor",
"stops at a junction, looks both ways, and picks the longer route",
"runs an ID check on someone whose face she recognizes, procedure is procedure",
"stands with her back to a structural column where both exits are visible",
"glances at a badge without stopping the person wearing it",
"checks the restricted bay door seal before settling in to watch the corridor",
],
),
],
social_sites: [
(
site_type: "break_room",
label: "Worker Break Room",
// Between shifts. Decompression. People stop performing for a moment.
roles: ["dock_worker", "technician", "foreman"],
min_npcs: 2,
max_npcs: 5,
),
(
site_type: "maintenance_bay",
label: "Maintenance Bay",
// Active work site. Technicians and dock workers cross paths here.
roles: ["technician", "dock_worker"],
min_npcs: 2,
max_npcs: 4,
),
(
site_type: "loading_platform",
label: "Loading Platform",
// The operational center. Busy, loud, coordinated.
roles: ["dock_worker", "foreman", "security"],
min_npcs: 3,
max_npcs: 8,
),
],
)