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 ff2d091254 feat(paladin): implement Milestone M8 Paladin Offensive Auras tree
- Implement 1.13c exact calculators for all 10 Paladin Offensive Auras in skills.ts:
  - Might (98): Party physical %ED (40% + 10%/lvl)
  - Holy Fire (102): Radial fire pulse + weapon added fire damage, Resist Fire (+18%) and Salvation (+6%) synergies
  - Thorns (103): Melee physical reflection (250% + 40%/lvl), physical resistance mitigation, PvP 1/4th penalty
  - Blessed Aim (108): Active party %AR, +5% passive AR per hard point even when inactive
  - Concentration (113): Party %ED, 20% uninterrupted attack chance, +50% Blessed Hammer synergy
  - Holy Freeze (114): Continuous enemy slow (25%..54%), CBF bypass, cold pulse + weapon cold damage, synergies
  - Holy Shock (118): Radial lightning pulse (1..max), weapon lightning damage, Resist Lightning (+12%) and Salvation (+4%) synergies
  - Sanctuary (119): Radial magic pulse + knockback vs Undead, sets Undead physical resistance to 0%, %ED vs Undead
  - Fanaticism (122): Caster IAS, %AR, asymmetric caster %ED vs ally %ED (strictly half)
  - Conviction (123): Enemy defense % and elemental resistance reduction (-30%..-150%), 1/5th immunity breaking (-6%..-30%), zero impact on Poison/Magic, caster immunity
- Engine integrations:
  - stat-list.ts: Blessed Aim passive AR (blvl * 5%)
  - combat-pipeline.ts: Sanctuary Undead phys res zeroing, Thorns PvP reflection, Fanaticism caster/ally split, Concentration uninterrupted chance, added weapon elemental damage
  - state-bus.ts: Thorns melee reflection trigger
  - aura-scanner.ts: 50-tick cadence in 2:1 isometric ground space
  - per-skill modules: re-export calculators for skills 98-123
- Add comprehensive test suites:
  - tests/skills/pal/offensive-auras.test.ts (21 tests)
  - tests/skills/pal/adv-pal-auras-stress.test.ts (5 adversarial scenarios)
- Preserve BATCH1_SKILLS length invariant strictly at 38 skills
2026-09-24 14:34:31 +00:00