EvilQuest shipped a client bundle update that breaks the EvilLite client.
Symptoms
- After login: no player position, no live NPCs, map follow + click-to-move dead, Collection Log doesn't load. Effectively the whole client is non-functional on the new bundle.
Root cause (diagnosed live)
window.gm was removed. EQ no longer assigns the game manager to window.gm (confirmed: window.gm = appears 0 times in the captured bundle). Our Reflector parse poller in client.ts was gated on window.gm existing, so it never parsed → zero hooks bound → gameHooks empty → plugins never start.
- Managers were renamed/refactored wholesale. Of ~25 class signatures, only
GameManager and EntityManager still match; ~23 others + all enums no longer match (e.g. SocketManager → gm.network ctor ft with openSockets/sendFrame; context menus moved onto GameManager + a new class). This is a core/reflector signature refresh (separate, larger).
Fix in this PR (client-side, unblocks the client)
client.ts: the Reflector parse gate no longer requires window.gm; it keys off "GameManager's source is present in the captured bundle" (window.gm-independent), so the Reflector parses, binds GameManager/EntityManager, captures the instance, and plugins start. Verified live: player position, follow, NPCs, click-to-move, terrain, and Collection Log all restored.
CollectionLogPlugin.ts: item icons now use EQ's items/3d/<id>.png endpoint (EQ added it this update — the inventory renders model-only items from exactly this URL), fixing missing icons for model-only items (Raw Chicken, Raw Rat Meat, Log, Coins) without relying on inventory harvesting.
Follow-up (core, Oni)
The ~23 stale manager signatures + enums need re-deriving in packages/core/src/reflector/signatures.ts, and the context-menu integration needs rewriting to EQ's new structure. Our plugins use only GameManager + EntityManager (+ DOM), so they work with this PR; core features (context menus, etc.) need that refresh.
EvilQuest shipped a client bundle update that breaks the EvilLite client.
Symptoms
Root cause (diagnosed live)
window.gmwas removed. EQ no longer assigns the game manager towindow.gm(confirmed:window.gm =appears 0 times in the captured bundle). Our Reflector parse poller inclient.tswas gated onwindow.gmexisting, so it never parsed → zero hooks bound →gameHooksempty → plugins never start.GameManagerandEntityManagerstill match; ~23 others + all enums no longer match (e.g. SocketManager →gm.networkctorftwithopenSockets/sendFrame; context menus moved onto GameManager + a new class). This is a core/reflector signature refresh (separate, larger).Fix in this PR (client-side, unblocks the client)
client.ts: the Reflector parse gate no longer requireswindow.gm; it keys off "GameManager's source is present in the captured bundle" (window.gm-independent), so the Reflector parses, binds GameManager/EntityManager, captures the instance, and plugins start. Verified live: player position, follow, NPCs, click-to-move, terrain, and Collection Log all restored.CollectionLogPlugin.ts: item icons now use EQ'sitems/3d/<id>.pngendpoint (EQ added it this update — the inventory renders model-only items from exactly this URL), fixing missing icons for model-only items (Raw Chicken, Raw Rat Meat, Log, Coins) without relying on inventory harvesting.Follow-up (core, Oni)
The ~23 stale manager signatures + enums need re-deriving in
packages/core/src/reflector/signatures.ts, and the context-menu integration needs rewriting to EQ's new structure. Our plugins use only GameManager + EntityManager (+ DOM), so they work with this PR; core features (context menus, etc.) need that refresh.