// 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. // // Heritage roots (D-104/D-105) overlay these base specs at generation time, // modifying role weights, social site composition, and behavioral flavoring. ( 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", ], ), ( 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", ], ), ( 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", ], ), ( 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", ], ), ], 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, ), ], )