56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
# Manual QA — NEO-41 (gather → skill XP via interact)
|
||
|
||
Reference: [implementation plan](../plans/NEO-41-implementation-plan.md), [NEO-38](./NEO-38.md) (skill progression grant), [NEO-9 README — Interaction](../../server/README.md#interaction-neo-9).
|
||
|
||
## 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
|
||
```
|
||
|
||
## Move in range of the prototype resource node
|
||
|
||
Anchor **(12, −6)** on X/Z, radius **3** m. Example 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}}'
|
||
```
|
||
|
||
Expect **HTTP 200**.
|
||
|
||
## Baseline skill progression (optional)
|
||
|
||
```bash
|
||
curl -sS "${BASE}/game/players/${ID}/skill-progression"
|
||
```
|
||
|
||
Note **`salvage`** **`xp`** (often **0** on a fresh store).
|
||
|
||
## Gather interact (prototype)
|
||
|
||
```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**.
|
||
|
||
## Verify XP
|
||
|
||
```bash
|
||
curl -sS "${BASE}/game/players/${ID}/skill-progression"
|
||
```
|
||
|
||
**`salvage`** **`xp`** should increase by **10** per successful gather interact (repeat interact to see cumulative XP).
|
||
|
||
## Control — terminal does not grant gather XP
|
||
|
||
Move near **`prototype_terminal`** (e.g. target **`0.5`, `0.9`, `0.5`**), **`POST …/interact`** with **`prototype_terminal`**, then GET progression: **`salvage`** XP should match whatever you had before this control (no +10 from terminal alone).
|