48 lines
3.2 KiB
Markdown
48 lines
3.2 KiB
Markdown
# NEO-75 — Manual QA checklist
|
||
|
||
| Field | Value |
|
||
|-------|-------|
|
||
| Key | NEO-75 |
|
||
| Title | E3: Playable gather→refine→make loop in client (E3S5-04) |
|
||
| Linear | https://linear.app/neon-sprawl/issue/NEO-75/e3-playable-gatherrefinemake-loop-in-client-e3s5-04 |
|
||
| Plan | `docs/plans/NEO-75-implementation-plan.md` |
|
||
| Branch | `NEO-75-e3-playable-gather-refine-make-loop` |
|
||
|
||
## Preconditions
|
||
|
||
- **Fresh dev player:** stop any running server, then start a new instance so in-memory **`dev-local-1`** inventory, skills, and resource-node depletion reset.
|
||
- **No Bruno/curl seeding** for this checklist — all materials come from in-client gather (**R**).
|
||
- NEO-72 inventory HUD, NEO-73 gather feedback, NEO-74 craft UI landed on the same branch or `main`.
|
||
|
||
## Material math
|
||
|
||
| Step | Action | Scrap | Plates | Result |
|
||
|------|--------|-------|--------|--------|
|
||
| Gather ×4 | **R** at four anchors (below) | **+11** | — | 11 scrap |
|
||
| Refine #1 | Craft **`refine_scrap_standard`** | −5 | +1 | 6 scrap, 1 plate |
|
||
| Refine #2 | Craft **`refine_scrap_standard`** | −5 | +1 | 1 scrap, 2 plates |
|
||
| Make | Craft **`make_field_stim_mk0`** | −1 | −2 | **`field_stim_mk0` ×1** |
|
||
|
||
## Checklist
|
||
|
||
1. Start server: `cd server/NeonSprawl.Server && dotnet run`.
|
||
2. Run Godot main scene (**F5**). Confirm **`Economy HUD`** toggle is **on**; **`InventoryLabel`** shows empty bag; **`SkillProgressionLabel`** shows **`salvage`** and **`refine`** rows.
|
||
3. **WASD** to **`prototype_resource_node_alpha`** anchor **(12, −6)**. Press **R** once. **`GatherFeedbackLabel`** shows **`+1`** scrap delta; inventory scrap updates without **I**; **`salvage`** xp increases.
|
||
4. Walk to **`prototype_subsurface_vein_beta`** **(18, −6)**; press **R** (**+2** scrap). Repeat at **`prototype_bio_mat_gamma`** **(12, 0)** (**+3**) and **`prototype_urban_bulk_delta`** **(18, 0)** (**+5**). Inventory shows **11** scrap total.
|
||
5. In the recipe panel, click **Craft** on **`refine_scrap_standard`**. **`CraftFeedbackLabel`** shows success; inventory shows **6** scrap and **1** **`refined_plate_stock`**; **`refine`** xp increases.
|
||
6. Click **Craft** on **`refine_scrap_standard`** again. Inventory shows **1** scrap and **2** plates.
|
||
7. Click **Craft** on **`make_field_stim_mk0`**. Success feedback shows **`field_stim_mk0`** output; **`InventoryLabel`** lists **`Field Stim Mk0`** (or agreed display name) with quantity **≥ 1**; **`refine`** xp increases again.
|
||
8. Uncheck **`Economy HUD`** — inventory, skills, and recipe panel hide; gather/craft feedback labels above remain visible. Check **`Economy HUD`** again — panel repopulates with current data.
|
||
|
||
## Notes
|
||
|
||
- **R** posts the **nearest in-range** `resource_node`; walk to each anchor before pressing **R** (see [NEO-73 manual QA](NEO-73.md) for anchor coords).
|
||
- Re-run this checklist after a **server restart** (nodes deplete; inventory persists only in memory).
|
||
- Combat **use** of **`field_stim_mk0`** is out of scope (E5 follow-up).
|
||
|
||
## Acceptance
|
||
|
||
- [ ] Steps 1–8 completable in one session without Bruno/curl.
|
||
- [ ] **`field_stim_mk0`** quantity **≥ 1** in inventory at step 7.
|
||
- [ ] **Salvage** xp moved after gather; **refine** xp moved after each successful craft.
|