Skip to content

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.