74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
# Manual QA — NEO-63 (gather via interact → inventory)
|
||
|
||
Reference: [implementation plan](../plans/NEO-63-implementation-plan.md), [NEO-62 implementation plan](../plans/NEO-62-implementation-plan.md) gather engine, [NEO-55](./NEO-55.md) inventory GET.
|
||
|
||
## Preconditions
|
||
|
||
- Run `NeonSprawl.Server` from `server/NeonSprawl.Server` (`dotnet run`; default `http://localhost:5253`).
|
||
- Player **`dev-local-1`** (default seed).
|
||
|
||
```bash
|
||
BASE=http://localhost:5253
|
||
ID=dev-local-1
|
||
```
|
||
|
||
## Happy path — gather → inventory + XP
|
||
|
||
Move in range of **`prototype_resource_node_alpha`** (anchor **12, −6**; stand at **10, −6**):
|
||
|
||
```bash
|
||
curl -sS -i -X POST "${BASE}/game/players/${ID}/move" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"schemaVersion":1,"target":{"x":10,"y":0.9,"z":-6}}'
|
||
```
|
||
|
||
Interact:
|
||
|
||
```bash
|
||
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"schemaVersion":1,"interactableId":"prototype_resource_node_alpha"}'
|
||
```
|
||
|
||
Expect **HTTP 200**, **`allowed`:** **true**.
|
||
|
||
Inventory should show **`scrap_metal_bulk`** quantity **1** (or +1 per repeat):
|
||
|
||
```bash
|
||
curl -sS "${BASE}/game/players/${ID}/inventory"
|
||
```
|
||
|
||
Skill progression should show **`salvage`** **`xp`** **+10** per successful gather:
|
||
|
||
```bash
|
||
curl -sS "${BASE}/game/players/${ID}/skill-progression"
|
||
```
|
||
|
||
## Depletion deny
|
||
|
||
Uses **`prototype_urban_bulk_delta`** (anchor **18, 0**) so earlier Bruno interaction requests on alpha do not pre-deplete capacity in the shared CI Postgres store. Move in range (**16, 0**), exhaust with **10** successful interacts on delta, then interact again:
|
||
|
||
```bash
|
||
curl -sS -i -X POST "${BASE}/game/players/${ID}/move" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"schemaVersion":1,"target":{"x":16,"y":0.9,"z":0}}'
|
||
```
|
||
|
||
(Repeat interact on **`prototype_urban_bulk_delta`** ten times with **`allowed: true`**, then:)
|
||
|
||
```bash
|
||
curl -sS -i -X POST "${BASE}/game/players/${ID}/interact" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"schemaVersion":1,"interactableId":"prototype_urban_bulk_delta"}'
|
||
```
|
||
|
||
Expect **HTTP 200**, **`allowed`:** **false**, **`reasonCode`:** **`node_depleted`**. Inventory and XP totals unchanged on that denied request.
|
||
|
||
## Control — terminal
|
||
|
||
Move near **`prototype_terminal`**, interact with **`prototype_terminal`**: **`allowed`:** **true**; no **`scrap_metal_bulk`** added; no gather XP from terminal alone.
|
||
|
||
## Bruno
|
||
|
||
Run folder `bruno/neon-sprawl-server/interaction/` — **`Post interact gather then get inventory.bru`** and **`Post interact depleted node deny.bru`**.
|