322 lines
6.5 KiB
Markdown
322 lines
6.5 KiB
Markdown
# Ashen Realms – Playable Slice 0.9
|
||
|
||
## First Quest & Loot-Bag Tutorial
|
||
|
||
**Status:** Implementation Specification
|
||
**Depends on:** Slice 0.8.5
|
||
**Purpose:** Introduce quests, NPC-directed progression, bag capacity and the merchant loop through one small coherent tutorial chain.
|
||
|
||
---
|
||
|
||
## 1. Goal
|
||
|
||
This slice should teach several systems without a conventional tutorial popup sequence.
|
||
|
||
The player learns naturally that:
|
||
|
||
- NPCs provide direction
|
||
- monster goods must be carried
|
||
- carrying capacity matters
|
||
- merchants can help
|
||
- reputation affects relationships/offers
|
||
- hunting goods can later be exchanged for progression
|
||
|
||
The quest should feel like world interaction, not a checklist tutorial.
|
||
|
||
---
|
||
|
||
## 2. Quest Concept
|
||
|
||
Working quest title:
|
||
|
||
**Trouble Beyond the Gate**
|
||
|
||
Quest-giver:
|
||
|
||
**South Gate Warden**
|
||
|
||
Use an existing named gate NPC if one has already been implemented. Do not create a duplicate NPC merely because this document uses a generic title.
|
||
|
||
Merchant:
|
||
|
||
**Borin, Quartermaster** or the existing Graufurt merchant.
|
||
|
||
---
|
||
|
||
## 3. Narrative Flow
|
||
|
||
### Step 1 – Speak with the South Gate Warden
|
||
|
||
The warden is concerned about increasingly aggressive scavengers and raiders beyond the gate.
|
||
|
||
Player-facing English example:
|
||
|
||
> "The road has gone bad. Start small. Bring me five Ashen Pelts from the rats beyond the gate. I want to know what the ash is doing to them."
|
||
|
||
Objective:
|
||
|
||
```text
|
||
Collect 5 Ashen Pelts
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Capacity Problem
|
||
|
||
The player currently has no Hide Bag.
|
||
|
||
Default HIDE capacity is 1.
|
||
|
||
After collecting the first Ashen Pelt:
|
||
|
||
```text
|
||
Ashen Pelts 1 / 1
|
||
Hide capacity reached.
|
||
```
|
||
|
||
The quest remains at `1 / 5`.
|
||
|
||
The game should now provide a clear next action rather than leaving the player confused.
|
||
|
||
Suggested quest update:
|
||
|
||
```text
|
||
You cannot carry enough pelts. Return to the South Gate Warden.
|
||
```
|
||
|
||
Do not secretly increase capacity for the quest.
|
||
|
||
---
|
||
|
||
## 5. Referral to the Merchant
|
||
|
||
On returning, the warden acknowledges the problem and refers the player to Borin.
|
||
|
||
Example:
|
||
|
||
> "Right. You're not equipped for hauling spoils yet. Go see Borin in Graufurt. Tell him I sent you. He'll complain, but he'll give you something useful."
|
||
|
||
Set a persisted unlock/referral flag, for example:
|
||
|
||
```text
|
||
referred-by-south-gate-warden
|
||
```
|
||
|
||
New objective:
|
||
|
||
```text
|
||
Speak with Borin in Graufurt
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Merchant Interaction
|
||
|
||
Borin normally would not provide the bag at the player's current reputation.
|
||
|
||
His dialogue should make the relationship system visible.
|
||
|
||
Example:
|
||
|
||
> "I don't know you, and I don't hand out gear to every wanderer who walks in here."
|
||
|
||
Then after recognizing the referral:
|
||
|
||
> "But the South Gate Warden sent you. Fine. Take this. Bring it back full and make it worth my trouble."
|
||
|
||
Grant:
|
||
|
||
**Basic Hide Bag**
|
||
|
||
```text
|
||
Category: HIDE
|
||
Capacity: 5
|
||
```
|
||
|
||
The grant should use the quest/referral exception supported by Slice 0.8.5.
|
||
|
||
---
|
||
|
||
## 7. Continue the Hunt
|
||
|
||
The player can now carry five HIDE-category goods.
|
||
|
||
Objective returns to:
|
||
|
||
```text
|
||
Collect 5 Ashen Pelts
|
||
```
|
||
|
||
Important:
|
||
|
||
- an already-owned first pelt still counts
|
||
- the player should need four more, not five more
|
||
- the bag capacity view changes immediately to `1 / 5`
|
||
|
||
---
|
||
|
||
## 8. Quest Turn-In
|
||
|
||
The player returns to the South Gate Warden with five Ashen Pelts.
|
||
|
||
The quest consumes the required five pelts.
|
||
|
||
The warden explains the normal long-term loop:
|
||
|
||
> "Good. That's enough for me. From now on, take hides and trophies to Borin. He'll pay for useful spoils, and word gets around when you keep the roads clear."
|
||
|
||
This line connects:
|
||
|
||
- monster loot
|
||
- merchant exchange
|
||
- Silver
|
||
- regional reputation
|
||
- World Renown
|
||
|
||
without needing a separate tutorial screen.
|
||
|
||
---
|
||
|
||
## 9. Quest Rewards
|
||
|
||
The main reward of this quest is the **Basic Hide Bag** and system knowledge.
|
||
|
||
Optional one-time rewards may include:
|
||
|
||
- small regional reputation increase
|
||
- small World Renown milestone increase
|
||
- quest completion flag
|
||
|
||
Avoid a large Silver reward that undermines the merchant trade loop.
|
||
|
||
No XP reward.
|
||
|
||
---
|
||
|
||
## 10. Minimal Quest System Requirements
|
||
|
||
The system must support at least:
|
||
|
||
- quest definition
|
||
- quest acceptance
|
||
- ordered objectives
|
||
- item collection progress
|
||
- NPC interaction objective
|
||
- persisted completion
|
||
- quest flags/unlock flags
|
||
- item consumption on turn-in
|
||
- one-time rewards
|
||
|
||
Do not build a full branching narrative engine.
|
||
|
||
A simple step-based quest state machine is sufficient.
|
||
|
||
---
|
||
|
||
## 11. Quest State Safety
|
||
|
||
The flow must not softlock when:
|
||
|
||
- player already owns one or more Ashen Pelts before accepting
|
||
- player sells/trades pelts while quest is active
|
||
- player disconnects during a quest step
|
||
- bag was already obtained through development data
|
||
- player tries to receive the referral bag twice
|
||
|
||
Define deterministic behavior.
|
||
|
||
Recommended:
|
||
|
||
- objectives derive progress from current owned quantity where appropriate
|
||
- quest item consumption validates quantity at turn-in
|
||
- bag grant is idempotent
|
||
- referral flag persists
|
||
|
||
---
|
||
|
||
## 12. UI Requirements
|
||
|
||
At minimum:
|
||
|
||
### NPC / Local View
|
||
|
||
- quest available marker
|
||
- quest in progress marker
|
||
- quest turn-in marker
|
||
- Talk interaction
|
||
|
||
### Quest UI
|
||
|
||
Show:
|
||
|
||
- title
|
||
- short description
|
||
- current objective
|
||
- progress
|
||
|
||
Example:
|
||
|
||
```text
|
||
Trouble Beyond the Gate
|
||
Collect Ashen Pelts 1 / 5
|
||
|
||
You cannot carry enough pelts. Return to the South Gate Warden.
|
||
```
|
||
|
||
### Bag UI
|
||
|
||
When the bag is granted:
|
||
|
||
```text
|
||
New Loot Bag
|
||
Basic Hide Bag
|
||
Hide Capacity: 5
|
||
```
|
||
|
||
---
|
||
|
||
## 13. Tests
|
||
|
||
- quest can be accepted only once in active state
|
||
- first pelt updates objective to 1/5
|
||
- no bag blocks carrying second HIDE item
|
||
- return step activates correctly
|
||
- referral flag is set
|
||
- merchant grants Basic Hide Bag once
|
||
- capacity becomes 5
|
||
- previously owned pelt remains counted
|
||
- five pelts allow turn-in
|
||
- turn-in consumes five pelts
|
||
- quest completes and cannot reward bag repeatedly
|
||
|
||
---
|
||
|
||
## 14. Acceptance Criteria
|
||
|
||
- [ ] One complete NPC quest chain is playable.
|
||
- [ ] The quest intentionally exposes the default 1-item carrying limit.
|
||
- [ ] The player is directed back instead of softlocked.
|
||
- [ ] A persisted merchant referral is created.
|
||
- [ ] Merchant grants Basic Hide Bag because of the referral.
|
||
- [ ] Hide capacity becomes 5.
|
||
- [ ] Player can collect five Ashen Pelts.
|
||
- [ ] Turn-in consumes the pelts and completes the quest.
|
||
- [ ] NPC explains that future goods should be traded to the merchant.
|
||
- [ ] Quest grants no XP.
|
||
- [ ] All dialogue/UI text is English.
|
||
|
||
---
|
||
|
||
## 15. Out of Scope
|
||
|
||
Do not implement:
|
||
|
||
- branching quest choices
|
||
- voice acting
|
||
- cinematic dialogue
|
||
- daily quests
|
||
- repeatable bounty framework
|
||
- quest sharing
|
||
- party quest progress
|
||
- large quest journal taxonomy
|