Commit Graph

2 Commits

Author SHA1 Message Date
troytt 820ca12221 refactor: split into isolated common/netproto/server/client/baker modules
Split the mixed src/ and scripts/ trees into five compiler-enforced modules
aligned with the 1.13c DLL architecture, plus tools/:

- src/common/   (D2Common/Storm/D2Lang): formats, MPQ, data tables, DRLG,
                items/skills/units metadata, RNG, pack contracts. No DOM/Node.
- src/netproto/ (D2Net/Bnclient/D2MCPClient): BNCS/MCP/D2GS protocol; external
                code imports only src/netproto/index.ts.
- src/server/   (D2Game): authoritative simulation + LocalLoopbackAdapter.
                All 23 reverse deps into client removed; no Math.random /
                Date.now / performance.now.
- src/client/   (D2Client/D2Gfx/D2Win/D2Launch/D2Sound): render, UI, frontend,
                audio, session, toolbar and the play.html entry.
- src/baker/    Node-only offline packers/extractors + unified `npm run bake`.
- tools/        bot, replay, unlock, verify/audit/benchmark CLIs.

play.html is now the only HTML entry; index.html, acts*.html and bnet.html
plus legacy entry glue (src/main.ts, act-scene, net-scene, lockstep src/net)
are removed.

Adds tsconfig.{common,netproto,server,client,baker}.json wired into
`npm run typecheck`, and tests/arch/boundaries.test.ts enforcing the module
boundaries with zero whitelist exceptions.

Verification: typecheck 6/6 clean; vitest 556 files / 6640 tests pass;
npm run build clean; bake --verify (136/136 levels, universal DT1s);
netproto-replay --strict 0 unknown/opaque/errors; d2-bot walk hardSnaps=0;
audit-levels 136/136; verify-play 9/9 gates at 800x600 and 1024x768.
2026-10-01 00:10:18 +00:00
troytt 0aa6c3680d feat(paladin): Milestone M6 — 1.13c Paladin assets packaging & metadata registry
- Update scripts/pack-missiles.ts with Paladin missiles (fistoftheheavensbolt, foa, blessedhammerex, blood1) with trans: 1 and dark border suppression max(r,g,b) <= 4 -> alpha = 0.
- Update scripts/pack-overlays.ts with 16 Paladin combat, cast, hit, and state overlays (charge, conversion, conversioncast, holy_bolt_cast, fist_of_the_heavens_cast, handofgod, sanctuary_knockback, holy_fire_hit, holy_fire_indicate, thorns_hit, thorns_indicate, cast_resistfire, cast_resistcold, cast_resistlight, cast_resistall, stun) with preDraw flags and trans: 3 dark halo thresholding.
- Bake and mirror assets across public/ and samples/d2-packs/.
- Generate compile-time metadata in src/render/missiles-meta.ts and src/render/overlays-meta.ts with zero runtime MPQ invariant.
- Add comprehensive unit tests in tests/skills/pal/pal-assets.test.ts.
- Add adversarial coverage audit tests in tests/skills/pal/adv-pal-assets-audit.test.ts.
- Resolves Gitea issue #445.
2026-09-24 11:30:34 +00:00