2.2 KiB
2.2 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/healthreturns JSON withstatus: 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; after hotbar sync, slot 0 auto-binds to
prototype_pulsewhen empty (NEO-85 dev bootstrap — same as BrunoPost hotbar bind slot0 pulse). - Locate combat dummies near spawn: orange capsule "Dummy α" at
(-3, -3)(west of player) and purple "Dummy β" at(3, 3); each has a flat lock ring on the ground. Walk toward the orange dummy if needed. - Tab to lock
prototype_target_alpha— dummy brightens;CombatTargetHpLabelshowsTarget HP: prototype_target_alpha 100/100(or…briefly until GET completes). - Press 1 (hotbar slot 1 → index 0):
CastFeedbackLabelshowsCast: 25 dmg → 75 HP(not Output-only). CombatTargetHpLabelupdates to75/100after the cast (event-driven GET refresh).- Cast three more pulse hits (respect cooldown): feedback steps
50,25, thenCast: 25 dmg → 0 HP — defeated!on the lethal hit; HP label shows0/100 (defeated). - Press 1 again on the defeated dummy:
CastFeedbackLabelshowsability_cast_denied: target_defeated; HP label remains defeated. - Esc to clear lock:
CombatTargetHpLabelshowsTarget HP: — (no lock).
3) Regression
- Cast without lock still shows
ability_cast_denied: invalid_targetonCastFeedbackLabel(NEO-28). - Cooldown HUD still refreshes after accepted casts (NEO-32).