// 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, ), ], )