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

1.9 KiB

NEO-85 — Manual QA checklist

Field Value
Key NEO-85
Title E5M1-11: Client combat feedback + target HP HUD
Linear https://linear.app/neon-sprawl/issue/NEO-85/e5m1-11-client-combat-feedback-target-hp-hud
Plan docs/plans/NEO-85-implementation-plan.md

1) Server

  • Start server: cd server/NeonSprawl.Server && dotnet run.
  • curl -s http://localhost:5253/health returns JSON with status: ok.
  • Optional reset between runs (Development host): curl -sS -X POST http://localhost:5253/game/__dev/combat-targets-fixture -H 'Content-Type: application/json' -d '{"schemaVersion":1}' returns 200 when the dev fixture route is enabled.

2) Client — combat HUD

  • Open Godot main scene with server running; ensure hotbar slot 0 is bound to prototype_pulse (NEO-29 hydrate or bind via Bruno/API if needed).
  • Tab to lock prototype_target_alpha; CombatTargetHpLabel shows Target HP: prototype_target_alpha 100/100 (or briefly until GET completes).
  • Press 1 (hotbar slot 1 → index 0): CastFeedbackLabel shows Cast: 25 dmg → 75 HP (not Output-only).
  • CombatTargetHpLabel updates to 75/100 after the cast (event-driven GET refresh).
  • Cast three more pulse hits (respect cooldown): feedback steps 50, 25, then Cast: 25 dmg → 0 HP — defeated! on the lethal hit; HP label shows 0/100 (defeated).
  • Press 1 again on the defeated dummy: CastFeedbackLabel shows ability_cast_denied: target_defeated; HP label remains defeated.
  • Esc to clear lock: CombatTargetHpLabel shows Target HP: — (no lock).

3) Regression

  • Cast without lock still shows ability_cast_denied: invalid_target on CastFeedbackLabel (NEO-28).
  • Cooldown HUD still refreshes after accepted casts (NEO-32).