You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The automap clock overlay is now a single line: SESS: hh:mm:ss (session stopwatch) + SYS: 12:01PM (PC local clock, 12-hour with AM/PM).
The level-name line gains the area's effective level in Blood Moor (3) style (levels.txt MonLvl/MonLvlEx per difficulty). Always-on; plain name in town.
#37: a second Ctrl+Click inside the ~2-frame pick/place window overwrote the parked 0x18 with the hand still full → lost place packet, client/server desync, intermittent crash. Pick/place pairs are now serialized (VPCTRLXFER_PairInFlight, 500 ms staleness cap).
#38: FPS Interpolation still jittered in perspective mode — every layer anchors on the tick-snapped warp origin. The perspective camera now glides itself: the two-sample alpha rides the warp origin in 16.16 precision, so floor/walls/sprites/shadows glide together.
R150 — #37 closed for real + the character joins the glide
#37: the real crash window was the full pick→place round trip. The 0x19 pick echo no longer hands the item client-side (it stays in its source cell until the 0x18 place echo relinks it), and the click guard now spans the whole 500 ms round trip. A click inside the window is a silent no-op.
#38: the local player's sprite, shadow and state overlays now share the origin's glide — the character sits screen-fixed while the world glides.
Page switches bulk-remove page-4 items and the client's REMOVED branch freed item units without unlinking them from the inventory chain — the panel draw's chain walk then dereferenced freed/reused units. Items are now unlinked first (INVENTORY_RemoveItemFromInventory), the GUID is captured before the free, and the retail non-REMOVED path stays byte-identical.
The client frees item units at ~30 sites; R152 fixed one. One VP block in CUnit::RemoveObject now unlinks at the choke point before every free — covers all paths at once, behaviorally invisible. (Closes out the #37 crash family.)
The bottom bar's console frame art (stone behind the globes and belt, chat background, orb sockets), the run button, menu button and hostile indicator are not drawn at all — the world shows through.
Everything functional stays vanilla and interactive: globes, belt, skill buttons, XP/stamina bars, panels, tooltips, automap, chat. Hidden buttons keep their hit areas. Zero renderer code — works identically on every renderer.
Z steps world zoom 1.0 → 1.25 → 1.5 → 1.0, anchored on your character. Field-verified by the owner in D3D.
A world-phase bracket keeps scaling inside the world pass: bottom bar, panels, tooltips, automap and cursor stay pixel-1:1.
The raw cursor pixel is inverse-zoomed before retail projection (hover, selection, walk/cast), so clicks land exactly where the zoomed world shows them.
Zoom level resets to 1.0 on each game join.
R156 — Camera Zoom on Glide (field-verified by the owner)
The R155 D3D site set is mirrored into Glide.cpp: zoom helpers, perspective funnels, top-down sprite quads and the flat subtile builders. Cursor inverse and world-phase bracket are renderer-agnostic and shared.
DDraw/Gdi still clamp to 1.0 with a d2boot.log note.
Known v1 limit: the Glide lightmap halftone lattice stays at retail screen spots while zoomed (soft glow offset) — pending field QA.