Commit Graph

842 Commits

Author SHA1 Message Date
troytt 6f9b2e7fb1 docs(skills): add frozen orb skill development guide 2026-09-23 10:33:46 +00:00
troytt 2b6b6d7fd5 feat(skills): full 33 Paladin aura visual overlays & offline UI atlases parity (Fixes #397)
- Implement all 33 Paladin aura overlay targets (13 front/back pairs + 7 full rings) with authentic 1.13c Overlay.txt definitions
- Update offline overlay baking script scripts/pack-overlays.ts and generated metadata src/render/overlays-meta.ts with zero runtime MPQ parsing
- Align baked UI atlases and manifest in public/ui/ and src/ui/baked-ui-meta.ts
- Expand tests/skills/aura-target-parity.test.ts to 7 dimensions including 3D Isometric Aura Ring Sandwich depth layering
- Fix hero class walk offset assertion in tests/hero-classes-art.test.ts
- Add set item icon dye tests in tests/set-items-icons-dye.test.ts
2026-09-23 10:33:34 +00:00
troytt 39c25dfe6f fix(skills): eliminate idle hydra turret inward crossfire self-targeting (Ref #399)
- Remove targetX and targetY from stationary turret projectile definition in castSkill (act-scene.ts)
- Remove idle fallback to projectile.targetX/Y in tickProjectiles (skills.ts) so turrets only fire when an alive target is found within range
- Add negative unit test in Dimension 3 verifying 0 projectiles are spawned over 50 ticks with empty targets array
2026-09-23 09:58:57 +00:00
troytt ebaa1b4df2 feat(skills): implement Hydra (Skill 62) with 1.13c parity and visual assets (Ref #399) 2026-09-23 09:58:57 +00:00
troytt ef2dbcdbdf feat(pipeline): multi-worker concurrency architecture for entity animation packing (Fixes #396) 2026-09-23 09:55:05 +00:00
troytt 806bc9c8bc test(render): tighten assertions and add anti-drift/edge-case tests for Issue #398 2026-09-23 09:25:08 +00:00
troytt e5a34af708 feat(skills): implement Diablo II v1.13c aura skills system with town/wilderness target filtering and visual parity (Fixes #397)
- Implement all 20 Paladin auras (offensive & defensive) with 1.13c MPQ parameters
- Town vs Wilderness filtering: friendly auras buff only self in town, broadcast to allies/mercenaries/summons in wilderness; offensive pulses and redemption suspended in town
- Conviction (#123) asymmetry: caster ring visual only with 0 self debuffs; wilderness enemies receive -Def% and -Res% debuffs with green spikes foot ring; suspended in town
- Holy Freeze (#114) parity: caster displays cyan ring, wilderness enemies take cold pulse damage, item_slow, and blue chill tint with ZERO enemy foot rings
- Offline asset baking: baked 20 aura overlay animations into public/overlays and generated src/render/overlays-meta.ts with zero runtime MPQ parsing
- Full test coverage in tests/skills/aura-target-parity.test.ts passing 6/6 tests and full TypeScript typecheck passing
2026-09-23 09:15:48 +00:00
troytt ce6fdf131e fix(render): animated torches, candles, environmental fires, and DT1 tile sequences (Fixes #398) 2026-09-23 08:58:23 +00:00
troytt c3bb79e403 feat(skills): implement Frozen Orb with 1.13c parity and visual assets 2026-09-23 08:07:47 +00:00
troytt e5c40fa244 fix(inventory): correct Swirling Crystal inventory size to 1x3 and fix Oculus sprite parity
- Correct Swirling Crystal (oba) invWidth from 2 to 1 (1x3) per canonical 1.13c weapons.txt for both The Oculus (STARTER_EQUIPPED_GEAR.weapon1) and Tal Rasha's Lidless Eye (CLASS_EXCLUSIVE_SETS.sor.weapon1)
- Fix The Oculus invFile from invbst (1x4 Battle Staff) to canonical invob5 (1x3 Swirling Crystal sprite)
- Audit all starter item dimensions across all 7 classes against canonical 1.13c weapons.txt, armor.txt, and misc.txt
- Add tests/starter-items-inv-size-parity.test.ts to prevent inventory size regressions
2026-09-23 07:25:25 +00:00
troytt b1479b31ac fix(render): authentic Diablo II v1.13c ground items flippy sprites and clean pickup lifecycle
- Extract and stitch all 213 Blizzard flp*.dc6 resting frames into items-atlas.png
- Support all 4 flpgld gold pile size groups and color dye transforms
- Implement resolveGroundItemSpriteRect() in src/ui/inventory.ts
- Render authentic isometric ground art with contact shadow in drawGroundItem()
- Eliminate synthetic blue boxes, 2D perspective shear hacks, and sparkle white dots
- Fix engine pickup entity matching so picked items are cleanly removed with zero residual dots
- Add tests/ground-items-flippy-parity.test.ts
2026-09-23 07:03:17 +00:00
troytt 807585a615 Merge branch 'issue-393' into main: fix waypoint menu icons parity (#393) 2026-09-23 06:43:24 +00:00
troytt 6cba99f017 fix(ui): waypoint menu icons and click logic 1.13c parity (#393)
- Ground Truth Invariant (D2Client.dll 1.13c at 0x6fb5b2f4-0x6fb5b355 & 0x6fb5a53d):
  - In waygateicons.dc6 (5 frames):
    - Frame 0 (sx=0): Current waypoint unhovered state (blue portal).
    - Frame 1 (sx=30): Current waypoint hovered state (blue portal lit).
    - Frame 3 (sx=90): Activated destination waypoint unhovered state (stone icon).
    - Frame 4 (sx=120): Activated destination waypoint hovered state (stone icon lit).
    - Locked waypoint: Skips sprite draw call completely (je 0x6fb5b355), text drawn in gray.
  - Waypoint click handling:
    - Current waypoint click is a no-op (player already present at location).
    - Locked waypoint click is a no-op.
    - Activated destination waypoint click initiates teleport and closes panel.
- Track current waypoint, current level, and act tab across act-scene and world-panels.
- Update tests in tests/world-panels.test.ts to verify authentic 1.13c behavior.
2026-09-23 06:43:05 +00:00
troytt 263286c0c2 fix(render): isometric grid drop dispersal and authentic ground slanted sprite perspective 2026-09-23 06:23:21 +00:00
troytt 513ad145e8 Merge branch 'issue-386-followup' into main (Fixes #386 follow-up, tracks #395) 2026-09-23 06:14:16 +00:00
troytt 15948eb896 fix(skills): remove translucent solid light boxes during cast overlay animation (#386, #395) 2026-09-23 06:14:11 +00:00
troytt 88bb16238d fix(render): remove duplicate blendMode declaration and add mock activeTexture 2026-09-23 05:56:33 +00:00
troytt da24f9944f Merge branch 'issue-386' into main (Fixes #386) 2026-09-23 05:54:15 +00:00
troytt e3ab3d8552 test: align renderer mock calls in missile-skills test 2026-09-23 05:49:34 +00:00
troytt c814376e8a fix(ground-items): authentic ground item icon sprites and eliminate residual white dot 2026-09-23 05:48:03 +00:00
troytt ff347bb946 Merge branch 'issue-387' into main (Fixes #387) 2026-09-23 05:37:19 +00:00
troytt 6eaeab4619 feat(skills): authentic 1.13c Cast Overlay system and elemental spell animations (Fixes #386) 2026-09-23 03:53:57 +00:00
troytt a31997a2b7 Merge branch 'issue-392' into main (Fixes #392) 2026-09-23 03:22:47 +00:00
troytt ea8644c2ea feat(feedback): authentic inventory full flippy bounce animation & audio-visual refusal (Fixes #392) 2026-09-23 03:22:28 +00:00
troytt 3704e7d088 feat(scene): authentic 1.13c animated map objects and phase staggering (Fixes #387)
- Decode and extract all frames for map objects (DCC/DC6) in scripts/pack-act-assets.ts
- Deduplicate unique member art across object placements and pack into objectPages atlas
- Serialize animatedFrames, frameDelta, frameDurationMs, cycleAnim, and sync from Objects.txt into scene.json
- Support multi-frame MapRuntime ObjectDrawable ticking and rendering in src/scene/act-scene.ts
- Introduce SplitMix64 spatial phase hash (computeObjectPhaseOffsetMs) for non-synced objects to eliminate unnatural mechanical synchronization across scene torches and campfires
- Preserve backward-compatibility for single-frame static objects (Stash B6)
- Add 100% passing test suite in tests/object-animation-113c.test.ts
2026-09-23 03:14:14 +00:00
troytt a1e00c9286 Merge branch 'issue-391' into main (Fixes #391) 2026-09-23 03:13:42 +00:00
troytt 53a9ef3f9b feat(interaction): implement authentic ground item & gold pickup with pathfinding (Fixes #391) 2026-09-23 03:12:06 +00:00
troytt 7d7925ab2b Merge branch 'issue-390' into main (Fixes #390) 2026-09-23 02:36:16 +00:00
troytt ff867a13e3 feat(skills): authentic baked missile DCC atlas and explosion rendering 2026-09-23 02:35:55 +00:00
troytt 30e8ecee5f feat(ui): authentic Alt key ground item floating labels and ladder collision avoidance (Fixes #390) 2026-09-23 02:35:05 +00:00
troytt 2733ba625b feat(render): authentic ground item rendering and glint sparkles (Fixes #389) 2026-09-23 02:27:31 +00:00
troytt 2c5c5855f6 Merge branch 'issue-388' into main (Fixes #388) 2026-09-23 02:19:19 +00:00
troytt 3f78ad782e feat(items): authentic 1.13c ground items entity, safe drop radial search and item/gold dropping (Fixes #388) 2026-09-23 02:19:12 +00:00
troytt 627af83e97 feat(skills): authentic 1.13c Fire Bolt projectile physics from Missiles.txt (Fixes #385) 2026-09-23 02:09:50 +00:00
troytt e033ae53e6 fix(ui): authentic tab indexing for skill tree and waypoint panels 2026-09-23 01:22:51 +00:00
troytt 752d7e8066 feat(map): authentic Diablo II 1.13c shadow layer (type 13) rendering and pack verification 2026-09-23 01:22:51 +00:00
troytt 8f8ee010ca docs: update README with art assets, JSON data specifications, and UI parity 2026-09-22 13:12:25 +00:00
troytt 4f6eadea6c feat(ui): authentic Diablo II 1.13c quickbar cd mask, aura styling, charges and passive filtering (Fixes #382) 2026-09-22 11:35:47 +00:00
troytt 775f4113c9 feat(quest): authentic Diablo II 1.13c quest log tbl strings (Fixes #381) 2026-09-22 11:24:02 +00:00
troytt 090de33935 feat(ui): authentic Diablo II 1.13c skill quickbar & speedbar tooltips (Fixes #380) 2026-09-22 10:57:58 +00:00
troytt 7f810e40e3 feat(class): complete 7-class switching with signature sets and stash treasures (Fixes #379) 2026-09-22 10:45:48 +00:00
troytt fb43185990 Merge branch 'feat/issue-376' into main (Fixes #376) 2026-09-22 10:14:19 +00:00
troytt 67cf0e576b feat(ui): dynamic attack icon (fist/sword) and add throw & unsummon default skills (Fixes #376) 2026-09-22 10:14:11 +00:00
troytt 3b631b4c0c Merge branch 'feat/issue-378' into main (Fixes #378) 2026-09-22 10:00:00 +00:00
troytt 6f3cf6b8bb feat(ui): authentic D2 1.13c waypoint tabs and icons (Fixes #378) 2026-09-22 09:59:54 +00:00
troytt 0c4af3770d feat(ui): replicate authentic D2 1.13c skill tree tabs and skill points banner (Fixes #377) 2026-09-22 09:50:40 +00:00
troytt 43748eac53 feat(inventory): support ring, amulet, jewel, and charm VarInvGfx graphic variants (Fixes #375) 2026-09-22 09:36:29 +00:00
troytt 609149fa5f Merge branch 'issue-153': Widescreen UI panels left/right docking & central vision corridor (Fixes #153) 2026-09-22 07:56:28 +00:00
troytt 82e32a813e feat(ui): implement widescreen left/right panel docking and central vision corridor (Fixes #153) 2026-09-22 07:56:21 +00:00
troytt 0df0dfede2 fix(skills): reconstruct skill tooltips to 1.13c formula and next level preview (Fixes #152) 2026-09-22 07:13:08 +00:00