neon-sprawl/docs/manual-qa/NEO-75.md

48 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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. Scroll **`BodyScroll`** if inventory/skills are below the recipe list (NEO-122 recipes-first order).
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 in **`HudRootScroll`** 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 18 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.