Files
settled-reach/content/global/krenn-rural-zone.ron
T
jpmschweitzerandClaude Opus 4.6 9fbad37701 feat(copy): rename zone specs to location-specific, expand behavior pools (#630)
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>
2026-03-07 11:29:41 +01:00

171 lines
9.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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,
),
],
)