Content files (RON templates, YAML campaigns, gauntlet data) are consumed exclusively by the server. Colocate them at server/content/ and update all path references in Rust source, tooling scripts, and schema files. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
98 lines
3.1 KiB
Plaintext
98 lines
3.1 KiB
Plaintext
// Zone Identity Spec — example file
|
|
//
|
|
// Schema: server/src/npc/blueprint.rs :: ZoneSpec
|
|
// Real content: ticket #609 (copy team fills this)
|
|
// Validate: tooling/validate-ron content/global/zone-identity-spec.example.ron zone
|
|
//
|
|
// One file per zone type. The generator reads this to decide NPC count,
|
|
// role distribution, and social site placement.
|
|
//
|
|
// Format: RON (Rusty Object Notation) — the Rust structs ARE the schema.
|
|
// Comments are allowed. Trailing commas are allowed.
|
|
|
|
(
|
|
zone_type: "rural",
|
|
label: "Rural Settlement",
|
|
description: "Scattered homesteads, small workshops, and communal gathering spots. Low population density, strong community bonds, subsistence-plus economy.",
|
|
|
|
// 1-10 scale. Rural = low economic activity, mostly self-sufficient.
|
|
economic_level: 3,
|
|
// 1-10 scale. Rural = sparse, everyone knows everyone.
|
|
population_density: 2,
|
|
|
|
roles: [
|
|
(
|
|
id: "farmer",
|
|
label: "Farmer",
|
|
weight: 5,
|
|
skill_focus: ["technical"],
|
|
combat_eligible: false,
|
|
typical_behaviors: [
|
|
"tends crops in the field",
|
|
"hauls produce to the market stall",
|
|
"repairs equipment by hand",
|
|
],
|
|
),
|
|
(
|
|
id: "mechanic",
|
|
label: "Settlement Mechanic",
|
|
weight: 3,
|
|
skill_focus: ["technical"],
|
|
combat_eligible: false,
|
|
typical_behaviors: [
|
|
"works on machinery with focused intensity",
|
|
"wipes grease on coveralls between tasks",
|
|
"explains repairs in terse technical shorthand",
|
|
],
|
|
),
|
|
(
|
|
id: "trader",
|
|
label: "Itinerant Trader",
|
|
weight: 2,
|
|
skill_focus: ["persuasion", "observation"],
|
|
combat_eligible: false,
|
|
typical_behaviors: [
|
|
"arranges goods on a portable display",
|
|
"haggles with quiet persistence",
|
|
"watches foot traffic from market stall",
|
|
],
|
|
),
|
|
(
|
|
id: "militia",
|
|
label: "Settlement Militia",
|
|
weight: 1,
|
|
skill_focus: ["combat", "observation"],
|
|
combat_eligible: true,
|
|
typical_behaviors: [
|
|
"patrols the settlement perimeter",
|
|
"checks credentials at the gate",
|
|
"leans on rifle while scanning the horizon",
|
|
],
|
|
),
|
|
],
|
|
|
|
social_sites: [
|
|
(
|
|
site_type: "tavern",
|
|
label: "Local Tavern",
|
|
roles: ["farmer", "mechanic", "trader", "militia"],
|
|
min_npcs: 3,
|
|
max_npcs: 6,
|
|
),
|
|
(
|
|
site_type: "workshop",
|
|
label: "Community Workshop",
|
|
roles: ["mechanic", "farmer"],
|
|
min_npcs: 2,
|
|
max_npcs: 4,
|
|
),
|
|
(
|
|
site_type: "market_stall",
|
|
label: "Market Stall",
|
|
roles: ["trader", "farmer"],
|
|
min_npcs: 1,
|
|
max_npcs: 3,
|
|
),
|
|
],
|
|
)
|