// Zone Identity Spec — Rural // // Schema: server/src/npc/blueprint.rs :: ZoneSpec // Ticket: #609 (copy team) // Validate: tooling/validate-ron content/global/rural-zone-spec.ron zone // // Character: scattered homesteads and small workshops. Unhurried. Community-bound. // Low throughput, high familiarity. Everyone knows who belongs here. // // Generator contrast target: rural vs industrial (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: "rural", label: "Rural Settlement", description: "Scattered homesteads, small workshops, and communal gathering points. Low population density, strong community bonds, subsistence-plus economy. Work is seasonal and visible — everyone knows what everyone else is doing.", // 1-10. Rural Krenn: self-sufficient, low cash flow, barter supplements credits. economic_level: 3, // 1-10. Sparse. Faces are familiar. Strangers stand out. population_density: 2, roles: [ ( id: "farmer", label: "Farmer", // Most common. The settlement runs on food production. weight: 5, skill_focus: ["technical"], combat_eligible: false, typical_behaviors: [ "tends rows of low-growing crops with a long-handled hoe", "lifts a crate of produce onto a flatbed with practiced ease", "checks the section's light cycle timer before deciding whether to water", "patches a cracked irrigation pipe with strips of bonding tape", "calls across a field to a neighbor without looking up from work", "hauls produce to the market stall before the morning exchange opens", "checks seedling trays in a low prefab greenhouse", ], ), ( id: "mechanic", label: "Settlement Mechanic", // One or two per settlement. Everyone knows who to call. weight: 3, skill_focus: ["technical"], combat_eligible: false, typical_behaviors: [ "pulls a drive unit from a tiller and examines the worn housing", "wipes grease on the thigh of her coveralls between jobs", "explains a repair in clipped shorthand without looking up", "lines up salvaged parts on a workbench and assesses them", "welds a seam on a cracked water tank with slow, careful strokes", "borrows a tool from a neighbor and returns it without being asked", ], ), ( id: "trader", label: "Itinerant Trader", // Passes through. Outsider-familiar — not local, not stranger. weight: 2, skill_focus: ["persuasion", "observation"], combat_eligible: false, typical_behaviors: [ "squares goods on a fold-out portable display with deliberate care", "leans back on a stool and watches the foot traffic", "flicks credit chits across the counter with one thumb, barely glancing down", "holds eye contact through a long pause, waiting for the price to land", "watches a regular browse the same shelf as last time and says nothing", "packs unsold goods with no visible frustration", ], ), ( id: "militia", label: "Settlement Militia", // Rare. Part-time. Knows everyone, trusted because of it. weight: 1, skill_focus: ["combat", "observation"], combat_eligible: true, typical_behaviors: [ "walks the fence line at a measured, unhurried pace", "leans on the gate post with rifle slung, watching the road", "waves a familiar face through without checking credentials", "sits in the shade of the gatehouse with a local newsline", "stops to talk with a passing farmer, eyes still scanning the perimeter", ], ), ], social_sites: [ ( site_type: "tavern", label: "Local Tavern", // The Last Shift equivalent for rural Krenn: functional, familiar, slow. roles: ["farmer", "mechanic", "trader", "militia"], min_npcs: 3, max_npcs: 6, ), ( site_type: "workshop", label: "Community Workshop", // Shared space. People fix things together. roles: ["mechanic", "farmer"], min_npcs: 2, max_npcs: 4, ), ( site_type: "market_stall", label: "Settlement Market", // Weekly or daily trading post. Commerce and gossip combined. roles: ["trader", "farmer"], min_npcs: 1, max_npcs: 3, ), ], )