2.5 KiB
Manual QA — NEO-63 (gather via interact → inventory)
Reference: implementation plan, NEO-62 implementation plan gather engine, NEO-55 inventory GET.
Preconditions
- Run
NeonSprawl.Serverfromserver/NeonSprawl.Server(dotnet run; defaulthttp://localhost:5253). - Player
dev-local-1(default seed).
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):
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:
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):
curl -sS "${BASE}/game/players/${ID}/inventory"
Skill progression should show salvage xp +10 per successful gather:
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:
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:)
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.