docs: record the Slice 0.9 quest system and its deviations
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -314,9 +314,85 @@ Hide Capacity: 5
|
||||
- [ ] Quest grants no XP.
|
||||
- [ ] All dialogue/UI text is English.
|
||||
|
||||
### Verification status
|
||||
|
||||
Every criterion above is covered by automated tests: the quest chain in
|
||||
`quest-state.spec.ts` and `quest.service.spec.ts`, the content in
|
||||
`vertical-slice.seed.spec.ts`, the markers in `npc.service.spec.ts`, and the
|
||||
three UI requirements of §12 in the web specs for the journal, the NPC screen
|
||||
and the location hotspots.
|
||||
|
||||
The boxes stay unticked because two things have not been run: the migration and
|
||||
seed against a real PostgreSQL database, and a hand-played pass through the
|
||||
chain in the running app. Neither was possible in the environment this slice was
|
||||
built in — no database was reachable. Do both before ticking, following the
|
||||
walkthrough in the implementation plan
|
||||
(`docs/superpowers/plans/2026-08-22-first-quest-and-bag-tutorial.md`, Task 13).
|
||||
|
||||
---
|
||||
|
||||
## 15. Out of Scope
|
||||
## 15. Implementation Decisions
|
||||
|
||||
Recorded here rather than only in the implementation plan, so the next slice
|
||||
reads them from the specification.
|
||||
|
||||
### D1 — The Basic Hide Bag is granted, not sold
|
||||
|
||||
§6 has Borin say "Take this" while also describing the Slice 0.8.5 offer, which
|
||||
costs 35 Silver. A player standing at that step has close to none, so the
|
||||
purchase path alone would stall the chain.
|
||||
|
||||
Borin's quest step therefore hands the bag over directly and idempotently. The
|
||||
referral flag is still written to the character's Borin state, so the 0.8.5
|
||||
`bypassConditions` gate opens the offer as well — a visible consequence, and a
|
||||
way back to a bag that is somehow lost. Nothing about reputation changes.
|
||||
|
||||
### D2 — No World Renown milestone
|
||||
|
||||
§9 lists one as optional. The demo character sits at Renown 1 and the first
|
||||
trade-in takes them to 2; a quest milestone would reach 3 and unlock Borin's
|
||||
Bandit Blade, which Slice 0.8.5 deliberately placed out of reach until Slice
|
||||
0.11. The quest pays regional reputation instead: **+10 Border Watch**.
|
||||
|
||||
### D3 — No Silver reward
|
||||
|
||||
§9 warns against a Silver reward that undermines the merchant trade loop, and
|
||||
names the bag and system knowledge as the point of the chain. `rewardSilver` is
|
||||
a content column set to 0, so retuning it later is a seed change.
|
||||
|
||||
### D4 — Quest steps use their own endpoints
|
||||
|
||||
NPC spec §40 asked Slice 0.9 to also wire the `START_QUEST` / `COMPLETE_QUEST`
|
||||
dialogue actions. There is no dialogue-response endpoint at all, and building
|
||||
one plus an action executor is the branching narrative engine §10 rules out.
|
||||
|
||||
Steps run through `POST /api/npcs/:npcKey/quests/:questKey/{accept,advance}`.
|
||||
Neither takes a body — which step is current, what it grants and what it
|
||||
consumes are the server's to decide. The line an NPC speaks for a step is
|
||||
content on the objective. Recorded as Abweichung 4 in the NPC specification.
|
||||
|
||||
### D5 — The demo character starts with no loot bag
|
||||
|
||||
The vertical-slice seed handed over a free Basic Hide Bag as a stopgap between
|
||||
Slices 0.8.5 and 0.9, with a note to remove it once a quest could grant one.
|
||||
That is done: the bagless HIDE capacity of 1 is the whole premise of §4. The
|
||||
migration also clears that one row for the demo character on databases seeded
|
||||
before this change.
|
||||
|
||||
### Addition — a hint for the second pelt hunt
|
||||
|
||||
Not in the specification, but the same courtesy §4 asks for. The Hide Bag holds
|
||||
five of *any* hide, so Tough Hides can crowd out the fifth Ashen Pelt. That step
|
||||
must not give up the way the first one does — it is meant to be finished (§7) —
|
||||
so it carries a hint instead:
|
||||
|
||||
```text
|
||||
Your hide bag is full of other goods. Trade some to Borin to make room for pelts.
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 16. Out of Scope
|
||||
|
||||
Do not implement:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user