Commit Graph

2 Commits

Author SHA1 Message Date
troytt 13b2a4c326 refactor(client): remove leftover single-player client code
Delete the 29 src/client files that were no longer reachable from
src/client/main.ts (launcher/play-entry, world/act-runtime, the SP scene
modules, sim/*, cull/roofs/unit-sprites/animation/char-appearance,
ground-labels, browser-mpq-source, and the dead barrels/re-export shims).

Strip the GameEngine coupling from the online HUD: HudManager no longer
binds/syncs an engine (bindEngine, syncFromEngine, switchClass,
classProfiles, grantExperience/takeDamage/heal, pickupGroundGold, ...) or
publishes window.__d2webHud/__d2webHudInstance; inventory/world-panels drop
_boundEngine; globes stop writing __d2webHud. world-renderer,
lighting-presets and ground-item-renderer keep only the online halves.

Remove demo-only exports from src/common and src/client
(DEFAULT_UNIVERSAL/SORCERESS_SKILLS, STARTER_EQUIPPED_GEAR/BAG_ITEMS,
DEFAULT_BELT_POTIONS, BeltModel.seedDefaultPotions,
createStarterProfileForClass, CLASS_DEFAULT_SKILLS). The data now lives in
tests/fixtures/demo-profile-data.ts. Tables re-exported by
src/server/world/class-starter-profiles.ts are kept.

Tests: retarget imports of re-exported helpers to their origin modules;
delete cases that only covered removed SP code; rewrite surviving
behavior against GameEngine / common data (p0-520, p0-521, p0-528,
starter-items, issue-503/506, class-switching, glacial-spike,
skill-quickbar-tooltip, monster-target-bar MonUMod). e2e-module-split now
targets src/client/main.ts instead of play-entry. Tools that imported
deleted modules are removed or trimmed (verify-renderer-lifecycle).
2026-10-01 06:03:55 +00:00
troytt 7db8c3c9b8 fix(client): neutral not-ready HUD state and server-authoritative HUD commands (P1/P2)
- Stats 6-11 decoded per ItemStatCost ValShift 8 (unconditional >>8, no
  magnitude heuristic); evidence in self.ts doc (capture 1e 07 00 32 = 50<<8).
- Neutral defaults: no Sorceress/lvl85/850k gold/starter gear/belt potions/
  quests/waypoints; class null until server assigns it; XP from
  D2_EXPERIENCE_TABLE_99; no 'Wanderer'/'Player'/'sor'/||100 fallbacks.
- HudCommandSink: HudManager routes stat/skill alloc, skill select, belt use,
  weapon swap, item pick/place/equip/unequip/drop/use, gold drop, transmute and
  waypoint to HudModel commands with no local mutation; render stamina tick
  removed; fabricated skill damage strings removed.
- HudModel.syncFromWorld rebuilds skills/quickbar/containers/waypoints/quests
  unconditionally; derived stats via derived-stats.ts; BeltUse uses real ids.
- netproto: C2S 0x50 DropGold command + encoder.
- ClientWorld: waypoint unitId from 0x63, 0x79 self/partner trade gold split,
  pseudo StatSet ids (>0x1ff) never enter StatLists.
- Tests migrated to explicit demo fixtures (tests/fixtures/hud-demo-state.ts)
  plus new hud-server-authority / drop-gold regression tests.
2026-10-01 01:41:13 +00:00