fix(client): restore canonical 1.13c spell visual effects (#550) #554

Merged
troytt merged 2 commits from fix/issue-550-spell-visual-effects into main 2026-10-02 09:28:11 +00:00
Owner

Restores canonical Diablo II v1.13c spell visual effects in the online web client:

  • R1: Attaches canonical 1.13c Skills.txt castoverlay (Overlay.txt) on spell casts as one-shot non-looping visuals with dynamic lighting, deduplicates local player cast visuals against server SkillCast echoes within 250ms, and expires castState back to neutral mode (1).
  • R2: Preserves at, level, and owner in decode0x73CreateMissile and spawns/steps client-side missile units (unitType = "missile") at 25Hz for linear bolts, multi-projectile fans, radial rings, spirals, sub-missile emitters, and ground/skyfall spells.
  • R3: Sweeps sub-tile wall/obstacle and hostile unit collisions along each step (respecting pierce) and spawns canonical 1.13c ExplosionMissile one-shot impact visuals.
  • R4: Includes missile and caster overlay drawables in OnlineSession.buildRenderableUnits(), clamps one-shot frames in unit-drawables.ts and WorldRenderer, and adds automated R1–R4 tests.

Closes #550

Restores canonical Diablo II v1.13c spell visual effects in the online web client: - **R1**: Attaches canonical 1.13c `Skills.txt` `castoverlay` (`Overlay.txt`) on spell casts as one-shot non-looping visuals with dynamic lighting, deduplicates local player cast visuals against server `SkillCast` echoes within 250ms, and expires `castState` back to neutral mode (`1`). - **R2**: Preserves `at`, `level`, and `owner` in `decode0x73CreateMissile` and spawns/steps client-side missile units (`unitType = "missile"`) at 25Hz for linear bolts, multi-projectile fans, radial rings, spirals, sub-missile emitters, and ground/skyfall spells. - **R3**: Sweeps sub-tile wall/obstacle and hostile unit collisions along each step (respecting `pierce`) and spawns canonical 1.13c `ExplosionMissile` one-shot impact visuals. - **R4**: Includes missile and caster overlay drawables in `OnlineSession.buildRenderableUnits()`, clamps one-shot frames in `unit-drawables.ts` and `WorldRenderer`, and adds automated R1–R4 tests. Closes #550
troytt added 1 commit 2026-10-02 09:12:19 +00:00
troytt added 1 commit 2026-10-02 09:28:10 +00:00
troytt merged commit 4a36b692c0 into main 2026-10-02 09:28:11 +00:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: troytt/diablo2-web#554
No description provided.