Name pool fixes: - Remove "Korr" from given_names (duplicate with family_names), replace with "Tork" - Replace "Narek" with "Sorek" (real-world Armenian name, IP concern) - Replace soft "-ael" endings (Vael→Vrek, Rael→Rask) to match naming rules - Update comment: "no soft endings" → "hard endings preferred" - Add 2 family names (Tollek, Dass) to balance pool ratio (now 40/18) Voice fixes: - Replace "same drill" (not an exclamation) with "cold vacuum" - Rewrite 3 trader behaviors as observable stage directions - Add 2 foreman off-duty behaviors (person beneath the role) - Add break room behaviors to dock_worker, technician, foreman Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
120 lines
5.0 KiB
Plaintext
120 lines
5.0 KiB
Plaintext
// 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,
|
|
),
|
|
],
|
|
)
|