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>
171 lines
9.5 KiB
Plaintext
171 lines
9.5 KiB
Plaintext
// Krenn Rural Zone — location-specific zone content
|
||
//
|
||
// Schema: server/src/npc/blueprint.rs :: ZoneSpec
|
||
// Ticket: #609, #630 (copy team)
|
||
// Validate: tooling/validate-ron content/global/krenn-rural-zone.ron zone
|
||
//
|
||
// This is content for a specific location: a Krenn rural settlement.
|
||
// 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: scattered homesteads and small workshops. Unhurried. Community-bound.
|
||
// Low throughput, high familiarity. Everyone knows who belongs here.
|
||
|
||
(
|
||
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",
|
||
"runs a thumb along the edge of a cracked irrigation seal, then sets it aside",
|
||
"stacks empty crates at the end of a row and knocks dirt off her boots",
|
||
"drags a length of hose to a dry section and clamps the fitting by hand",
|
||
"kneels at the base of a struggling plant and parts the soil with two fingers",
|
||
"leans on a fence post and watches the sky before going back to the row",
|
||
"refills a handheld sprayer from a standing drum without spilling",
|
||
"ties a row marker to a stake with a short length of wire",
|
||
"wipes sweat from her forehead with the back of a gloved hand",
|
||
"loads a wheelbarrow and tips it into a compost bin at the field edge",
|
||
"pulls a dead plant by the roots and carries it to the burn pile",
|
||
"tests soil moisture by pressing a thumb into the ground beside a seedling",
|
||
"walks the perimeter of a field and checks the wire for breaks",
|
||
"sets two crates down on the market floor and counts the lids twice",
|
||
// tavern / off-duty
|
||
"nurses a drink at the end of the bar with both hands wrapped around the glass",
|
||
"trades short words with the mechanic at the next seat without turning fully around",
|
||
"sits with boots off under the table, socked feet flat on the floor",
|
||
"refills a neighbor's cup from her own jug without being asked",
|
||
"plays a slow tile game with two others at the corner table",
|
||
"slides a credit chit across the bar and waits for change without counting it",
|
||
"leans back in the chair and stares at the ceiling for a long moment",
|
||
],
|
||
),
|
||
(
|
||
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",
|
||
"taps a seized bolt with a mallet twice before reaching for a longer bar",
|
||
"threads a wire through a conduit clip and bites the insulation back with her teeth",
|
||
"sets a part down, picks up the spec card beside it, and reads it once",
|
||
"uses a straight edge to check the flatness of a repaired flange",
|
||
"drains a coolant line into a catch tray and marks the container",
|
||
"torques a fastener by feel and then confirms it with a wrench click",
|
||
"stacks finished repairs in a corner and photographs them with a handheld",
|
||
"jots a note on a strip of tape and sticks it to a part's casing",
|
||
"squeezes into a narrow access panel and works by touch",
|
||
"straightens up and rolls her neck once before kneeling back down",
|
||
// tavern / off-duty
|
||
"rinses her hands twice at the basin before sitting down at the bar",
|
||
"drops her toolkit bag under the stool and orders without looking at the board",
|
||
"listens to a farmer's complaint about a tiller and nods once or twice",
|
||
"draws a rough diagram on a napkin to explain something, then folds it away",
|
||
"buys a round for the table and returns to her seat before anyone can thank her",
|
||
],
|
||
),
|
||
(
|
||
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",
|
||
"unrolls a cloth display on the counter and weights the corners with small stones",
|
||
"lifts a sample item and sets it in the light where a browser can see it clearly",
|
||
"rewraps an unsold item and tucks it back in the case with a specific order",
|
||
"counts coins into a small tray and slides it across the counter",
|
||
"pulls a ledger from the bag, checks one line, and closes it",
|
||
"marks a price down on the board with a grease stylus and steps back",
|
||
"holds a cracked tool up to show the seller where it failed before handing it back",
|
||
"folds the portable display flat and straps it to the pack in two moves",
|
||
"lays two items side by side on the counter for a customer to compare",
|
||
"wipes down the counter surface with a cloth before setting out the next goods",
|
||
],
|
||
),
|
||
(
|
||
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",
|
||
"checks the charge on a handheld scanner and clips it back to the belt",
|
||
"props a boot on the lower fence rail and scans the far end of the road",
|
||
"nods to a passing trader and tracks the cart until it clears the gate",
|
||
"marks a log entry on a handheld at the end of a perimeter pass",
|
||
"steps out of the gatehouse at the sound of an approaching engine",
|
||
],
|
||
),
|
||
],
|
||
|
||
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,
|
||
),
|
||
],
|
||
)
|