Quests, NPCs & the World Story
Canon
The quest system is authored NPC questlines: each anchor NPC carries a sequential chain of quests — objectives (gather, kill, reach, deliver, harvest), a dialogue tree, and a reward table — plus a daily board of repeatable quests that resets on a daily timer (owner ruling; a missed day forfeits nothing owned — the board's offers rotate back, inside the ratified no-FOMO edge).
Quest flags are the reserved gate type, now live. Completing a quest sets a permanent per-player flag; flags only accrete, so every gate that reads one stays a stateless monotonic check exactly like skill gates (D-WORLD-SYSTEM-03/04). The sockets pages have been reserving now wire up: island portals may add quest requirements, the mining bands' quest-side soft-gate is Elias's questline, Adathan's tomb entrance opens by quest, Farmer's Island turn-ins are quest objectives.
Rewards draw from a fixed vocabulary: Coins (the authored faucet D-CURRENCY-05 anticipated), skill XP routed through the owner-edited XP-source config (never hardcoded, never a direct component write), items (materials, tools, crates and keys — the crate system itself is its own session), titles and deeds (Almanac writes via the standard hooks), and quest flags. XP Scrolls — consumable items granting skill XP — are allowed: consumption routes through the same XP-source config as any award, magnitudes owner-tuned, tradeable on the bazaar. P2A-clean: speed, never exclusivity.
Dialogue is branching trees with progression checks — responses that appear or change based on flags, levels, deeds, and discoveries; hidden dialogue rewards the curious. The dialogue UI is a client-capability probe before anything is built (the standing visual-evidence rule).
The nine anchor NPCs (V1's authored corpus, adopted as the content-pass seed):
| NPC | Anchor |
|---|---|
| Elias the Lost Miner | Mining — the band-unlock questline; his 13-quest chain seeds the corruption arc |
| Thorn the Lumberjack | Woodcutting / Mistwood |
| Mara the Fisher | Fishing |
| Chef Rosalie | Cooking |
| Keeper Adathan | Desert Island / the Tomb |
| The Enchantress | Enchanting (dungeons session owns her crystal loop) |
| The Bone Collector | Skeleton Zone |
| Arena Master Korr | Arena events (events-world session) |
| Captain Veylor | Pirate Arena social hub / crates (social + crates sessions) |
Every questline's numbers remap to ratified canon at the content pass: Elias's layer names map onto the mining-caves ore bands, his ore order onto the frozen ladder (Steel and Onyxium included), reward values into data files.
The world story: the corruption is the shattering's wound. The crystal corruption spreading beneath the mountain — Elias's journals, the Crystalshroom Caverns, the Heart of the Mountain — is residue of the world's shattering, and every regional mystery is a facet of it: the Skeleton Zone's curse, the Desert ruins' buried history, the volcanic instability, Mistwood's wrongness. The Forger premise gets its antagonist-shaped question, and all nine questlines hang off one spine that ends, someday, at mending it.
Decisions
D-QUESTS-NPCS-01 — quests are authored NPC questlines plus a daily board (proposed)
Sequential chains per anchor NPC (V1's own shape — the corpus is written this way) with a fixed objective/reward vocabulary, plus daily repeatables. No free-floating global quest pool.
Rejected: a global parallel quest log (V1's content is questline-shaped; a pool discards its authored pacing); quest content invented outside the nine anchors before their systems exist.
D-QUESTS-NPCS-02 — quest flags are permanent, monotonic, and the live gate type (proposed)
A completed quest sets a flag that never unsets; gates that read flags stay stateless checks (the D-WORLD-SYSTEM-03 property). Repeatable completions don't set flags — dailies are cooldown state, not gate state. Quest-flag reads are JDK-typed provider API like every cross-mod read.
Rejected: revocable flags (breaks stateless gating corpus-wide); per-system stored unlock components (the rejected alternative of D-WORLD-SYSTEM-03, resurrected — no).
D-QUESTS-NPCS-03 — classic daily-reset board (proposed)
Owner ruling: a daily-reset repeatable board, the familiar shape. The promise line holds because a reset forfeits nothing owned — offers rotate back (the ratified no-FOMO edge: "sooner or later", never "never again"). Streak mechanics are NOT part of this ruling and would need their own promise check.
Rejected: cooldown-based repeatables without a reset clock (the recommended promise-safest shape — owner chose the classic board); no repeatables (loses the steady faucet and retention loop).
D-QUESTS-NPCS-04 — XP Scrolls: allowed, config-routed, tradeable (proposed)
Consumable XP items exist; consumption fires through the owner-edited XP-source config like any award — never a direct component write. Tradeable like any item. Inside the P2A wall by construction: a scroll is speed on a path everyone walks.
Rejected: bound quest-only scrolls (guts crate tables for little audit gain); no XP items (deletes a V1 reward staple; the config route makes them safe).
D-QUESTS-NPCS-05 — the corruption arc is the world's one story (proposed)
Owner ruling: the crystal corruption is the shattering's symptom, and every regional mystery is a facet. One spine for all nine questlines, one long-term narrative payoff aligned with the Forger premise.
Rejected: independent regional stories (no payoff moment; V1's own docs already cross-reference); deferring the spine (the content pass needs it immediately).
D-QUESTS-NPCS-06 — the V1 corpus fate table (proposed)
| V1 idea | Fate |
|---|---|
| Nine NPC dialogue files + reward tables | Adopted as content-pass seeds; numbers remap to canon (frozen ore ladder, band names, data-file values) |
| Reputation-based dialogue/unlocks, faction loyalty/alignment | Dead — no reputation or faction system; resurrect only via a new session |
| Relationship systems, companion NPCs | Parked — future expansion, no owning system |
| Voiced/cinematic dialogue, animated text | Parked — client-capability probes first |
| Hidden NPCs, easter eggs, secret dialogue | Adopted as content flavor — pairs with skill-tree hidden nodes; content pass |
| Wandering/seasonal lore NPCs | Adopted via the markets wandering-variant rule (whatever wanders, returns); seasonal → events session |
| Korr's arena questline | Deferred → events-world session |
| Veylor's Pirate Arena + crate questline | Deferred → social-hubs + crates sessions |
| "Unlock Future Crystal Depths Content" hooks | Adopted as the corruption arc's forward pointer — content lands with expansions |
Rejected: designing deferred questlines now against undesigned systems.
Tuning
data/quests-npcs.json— the NPC registry (anchor, island, questline status), daily-board size/reset/reward ranges, XP Scroll magnitudes, quest reward value tables. Owner-edited; V1 values land here remapped at the content pass.
Implementation
No owning mod yet (hfquests-shaped). Quest state is one per-player component (flags + daily cooldowns + active objectives), single-writer, registered with its codec by its own mod; gates read flags via a JDK-typed provider API; quest XP awards fire through hfskills' config-routed award pipeline; title/deed rewards ride the hfalmanac hooks; Coin rewards ride the currency authority. Dialogue UI blocks on a lib-ui client-capability probe.
Open questions
- Dialogue UI feasibility (branching tree presentation in-client) — probe before any build.
- Daily board size, reset hour, and reward ranges — owner tuning.
- Objective tracking granularity (does "mine 25 Copper" count from quest-accept or retroactively?) — implementation spec decision.
- The corruption arc's endgame shape (can it ever be "mended"? seasonal chapters?) — future narrative session; the spine is set, the ending is not.
- Whether quest flags surface to players as a journal/codex UI — with the dialogue probe.