inventory

This commit is contained in:
Bastian Wagner
2026-08-21 12:52:44 +02:00
parent a376fb7128
commit 987242541d
34 changed files with 3569 additions and 1814 deletions

View File

@@ -0,0 +1,321 @@
# 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