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

3.7 KiB
Raw Blame History

NEO-110 — Manual QA checklist

Field Value
Key NEO-110
Title E5M3-11: Client encounter progress + loot feedback HUD
Linear https://linear.app/neon-sprawl/issue/NEO-110/e5m3-11-client-encounter-progress-loot-feedback-hud
Plan docs/plans/NEO-110-implementation-plan.md
Branch NEO-110-client-encounter-progress-loot-feedback-hud

Preconditions

  • Fresh dev player: stop any running server, then start a new instance so in-memory encounter progress, NPC HP, and inventory reset.
  • No Bruno/curl for this checklist — defeat chain uses Godot Tab + 1 only.
  • NEO-108 encounter-progress GET and NEO-106 combat wiring landed on main.
  • Economy HUD toggle on for inventory verification (step 8).

Archetype reference (defeat order flexible)

Archetype Instance id Marker Pulses to defeat
Melee prototype_npc_melee orange west (-3, -3) 4
Ranged prototype_npc_ranged purple SE (3, 3) 4
Elite prototype_npc_elite gold origin (0, 0) 8

Player casts prototype_pulse (25 damage, ~3 s cooldown).

Expected encounter HUD progression

After EncounterProgressLabel EncounterCompleteLabel
Boot (no engagement) prototype_combat_pocket: not started (0/3) Loot: —
1st NPC defeated prototype_combat_pocket: 1/3 Loot: —
2nd NPC defeated prototype_combat_pocket: 2/3 Loot: —
3rd NPC defeated prototype_combat_pocket: completed (3/3) scrap_metal_bulk ×10 and contract_handoff_token ×1 (display names when item defs loaded)

Checklist

  1. Start server: cd server/NeonSprawl.Server && dotnet run.
  2. Run Godot main scene (F5). Confirm boot lines: Encounter: … not started (0/3) and Loot: — on EncounterProgressLabel / EncounterCompleteLabel (in HudRootScroll, below PlayerCombatHpLabel). Scroll HudRootScroll if the debug stack is taller than the viewport.
  3. Defeat prototype_npc_melee: walk to orange marker, Tab lock, press 1 until Cast: … — defeated!. Verify EncounterProgressLabel shows 1/3 (may lag one GET behind cast — wait ~1 s or defeat next NPC).
  4. Defeat prototype_npc_ranged: lock at SE marker, cast until defeated. Verify 2/3.
  5. Defeat prototype_npc_elite: lock at origin, cast until defeated (8 pulses). Verify completed (3/3) and EncounterCompleteLabel lists scrap_metal_bulk ×10 and contract_handoff_token ×1 (or raw ids if defs still loading).
  6. Open Economy HUD body: InventoryLabel shows scrap_metal_bulk and contract_handoff_token without pressing I (auto-refresh on completion GET).
  7. Defeat any already-defeated NPC again (optional): encounter row stays completed (3/3); loot lines unchanged.
  8. Regression: GigXpLabel still updates per defeat (NEO-86); CastFeedbackLabel still shows deny on re-cast (target_defeated).

Notes

  • Defeat order may differ from table — server tracks order-independent subset; count is defeatedTargetIds.size().
  • Capstone baseline prefers server restart over mid-session fixture POST.
  • Full three-NPC loop + idempotency capstone: NEO-111 manual QA.
  • Component combat regression: NEO-98 manual QA.

Acceptance

  • Steps 18 completable in one session without Bruno/curl.
  • Progress label shows 1/3, 2/3, then completed (3/3) after defeats.
  • Loot label matches server grant summary; inventory reflects grants without I.