content: spec/vocabulary edits — minPlayers docs, vocabulary locations, clock-maker passive reveals

User-authored content edits (schema-validated: 543 unit tests pass):
- specs: explicit minPlayers on mawfang-pursuit (2), old-friend-bad-timing (3),
  the-clock-maker (1) — documents author intent per Feature D.
- the-clock-maker: passiveReveals section + a skillChecks note on the optional
  Feature A timer for the returning-customer deadline.
- lore/vocabulary.yaml: curated locations (inn, village, road) + a new forest
  category.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Kaysser Kayyali
2026-06-22 22:13:02 +00:00
parent fdf1d705d1
commit 3f426de6a4
4 changed files with 81 additions and 18 deletions

View File

@@ -141,7 +141,7 @@ locations:
- Bridgefoot Square
inn:
- The Broken Compass
- The Willowing Pig
- The Crooked Lantern
- The Mended Drum
- The Dusty Heel
@@ -151,22 +151,21 @@ locations:
- The Ember & Stone
village:
- Cinder Ford
- Greymoss Crossing
- Tallow's End
- Ashwick
- Breckfen
- Moldvale
- Harrow's Gate
- Dunford
- Saltmere
- Edgemarsh
- Mardsville
- Barristown
- Veldra's Maw
- Mardonar City
- Wildwood Forest
road:
- the Pilgrim's Switchback
- the Ridge Road
- the Goat Track
- the Sheercliff Path
- the High Drove
- the Ironway
- the Mossback Trail
- the King's Road
- the Vampires Trail
- 3 Heads Crossing
- Gloaming Pass
forest:
- Wildwood Forest
- The Whispering Woods
- The Gloaming Thicket
- The Shadowgrove
- The Eldertree Vale

View File

@@ -1,5 +1,10 @@
encounterId: "mawfang-pursuit-001"
title: "Unwelcome Guests"
# Group encounters (Feature D) — solo scene, explicit for documentation.
# Default would be 1; explicit value documents the author's intent.
minPlayers: 2
tone: "tense"
setting:

View File

@@ -25,6 +25,10 @@ encounterId: "old-friend-bad-timing"
title: "Old Friend, Bad Timing"
# Group encounters (Feature D) — solo scene, explicit for documentation.
# Default would be 1; explicit value documents the author's intent.
minPlayers: 3
setting:
location: "Lonespear Tavern — Barristown's harbor quarter"
mood: >

View File

@@ -18,6 +18,10 @@ title: "The Clock Maker"
# tone — LLM READS (narration flavor) + BOT ENFORCES (drop-notice string).
tone: "grim"
# Group encounters (Feature D) — solo scene, explicit for documentation.
# Default would be 1; explicit value documents the author's intent.
minPlayers: 1
# setting — LLM READS. Three strings grounding the scene.
setting:
# location — where the scene happens. One line.
@@ -147,6 +151,38 @@ skillChecks:
it alone — the party must find the right action first; this is the
resolution roll once they have.
# The returning customer's 15-minute deadline (see Hale / persona) is a
# narrative urgency cue by default. If the LLM wants it as a real
# engine-driven timer (Feature A), it may emit skill_check_emit with
# durationSeconds: 900 against calm_returning_customer — the timeout
# path then becomes bot-enforced auto-fail, not a narration-only beat.
# Spec-author opt-in; not required.
# Passive skill reveals (Feature B) — bot-applied at encounter start,
# group-visible, attributed to the qualifying player. threshold is a passive
# DC (integer); revealText is outcome prose only — no dice results (the bot
# owns dice). Thresholds gate roughly half the party, consistent with the PRD
# Feature B tone for the clock-maker's "something is wrong" entry point.
passiveReveals:
- skill: "Perception"
threshold: 13
revealText: >
Notices the clocks in the shop are not keeping the same time. Three of
them are five minutes apart, and a fourth has stopped — but its second
hand is still moving.
- skill: "Insight"
threshold: 14
revealText: >
Reads something rehearsed in the clock-maker's warmth. He is performing
friendliness the way a stage magician performs ease with the deck.
- skill: "Investigation"
threshold: 12
revealText: >
Spots a thin line of dust on the shelf where a clock once sat. The empty
place is the size of a pocket-watch. The shop keeps no receipts.
# randomizable — BOT ENFORCES. Fields that vary per run. Name draws bind to
# npc.nameKey (fresh names each run); cursed_ware seeds the specific ware.
# source: vocabulary + category route name draws to the vocabulary namespace.
@@ -180,6 +216,9 @@ tools:
- goal_register # LLM emits to add an off-rails goal mid-encounter.
- foundry_lookup # LLM emits to surface a linked player's live Foundry stats.
- foundry_reward # LLM emits to award XP/items via the Foundry relay.
# NOTE: skill_check_group_emit (Feature C) is intentionally absent. The
# clock-maker is a solo scene (minPlayers: 1); there is no group to check
# against. The timed-check opt-in on break_curse_note uses the solo emit.
# dmNotes — LLM READS. Author framing for the DM's intent (stakes, feel,
# escalation). Not rules the LLM mechanically follows.
@@ -196,5 +235,21 @@ dmNotes: >
return a lethal clock; use them to break the dithering and raise the stakes.
Their fifteen-minute deadline is urgency to narrate, not a real-time timer.
NEW CAPABILITIES (group-encounters feature set, 2026-06-20):
The opening beat of the clock-maker scene is a "something is wrong"
pre-roll moment; lean on the three passiveReveals above (Perception,
Insight, Investigation) to surface clues in the opening lines without
waiting for the LLM-emitted checks. Bot applies them automatically at
encounter start, group-visible, attributed to the qualifying player —
the LLM should weave their revealText into the scene as it unfolds,
not announce them as a list.
For the returning customer's deadline: the original framing is "urgency
to narrate, not a real-time timer," and that remains the default. The
LLM may, at its discretion, opt into the new timed-skill-check path
(durationSeconds: 900 on calm_returning_customer) if the table wants
the deadline to be engine-enforced rather than narrative-pace. The
spec does not require it; it gives the LLM permission.
# xpReward — BOT ENFORCES. Flat XP to all participants on resolution.
xpReward: 50