Files
settled-reach/content/global/industrial-zone-spec.ron
T
jpmschweitzerandClaude Opus 4.6 95c0da9cf5 feat(copy): add zone identity specs and Krenn culture profile (#609, #610)
Zone identity specs for the generator spike proof-of-life:
- rural-zone-spec.ron: 4 roles, 3 social sites, density 2, economic 3
- industrial-zone-spec.ron: 4 roles, 3 social sites, density 6, economic 7

Krenn culture profile:
- culture-krenn.ron: 40 given names, 16 family names, speech patterns,
  cultural values (Bold/Honest/Curious/Social favored)

All three files validate against the Rust structs from #611 and produce
visibly differentiated output from the generator spike.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-07 09:27:16 +01:00

117 lines
5.0 KiB
Plaintext

// Zone Identity Spec — Industrial
//
// Schema: server/src/npc/blueprint.rs :: ZoneSpec
// Ticket: #609 (copy team)
// Validate: tooling/validate-ron content/global/industrial-zone-spec.ron zone
//
// Character: freight handling, manufacturing, maintenance. High throughput.
// Shift rhythms. Functional over comfortable. Nobody lingers — unless they're on break.
//
// Generator contrast target: industrial vs rural (Sprint 25 proof).
// If these produce NPCs that look the same, something is wrong.
(
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",
],
),
(
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",
],
),
(
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",
],
),
(
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",
"checks IDs at the freight elevator with a scanner and no eye contact",
"stands post near the restricted equipment bay, back to the wall",
"notes something in a shift log without reacting to it outwardly",
"watches a handover between crews from across the loading floor",
],
),
],
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,
),
],
)