Skip to content

D2VP Vanilla+QoL-0.0.7-R108

Latest

Choose a tag to compare

@VTSTech VTSTech released this 04 Nov 19:32
· 2 commits to main since this release
08d9f2a
image image image

Vanilla+ 0.0.7 — Release Notes R104–R108

--

R104 — 2026-11-04 (self-ID Vanilla+0.0.7-R104)

Vanilla+0.0.7-R104 — build fixes, fork-surface sweep, full smoke pass GREEN

  • Build fixes (second post-R102 break): upstream's per-TU restructure
    (962f88d5) made shared globals TU-private and left five fork anchors
    dangling — SCmd.cpp's roster-state mark now includes Roster.data.h, and
    the esc-menu tables, the font cache, the palette-transpose base and the
    glide sprite buffer are read through new VP accessors instead of globals.
    The options-table sizeof assert became a runtime count check.
  • New audit tool: fork_surface_syntax_sweep.sh — compiles 90 TUs
    three-ways (fork vs upstream vs merge) and baseline-diffs the errors:
    0 semantic errors, 6 noise-only flags (host-shim types present in the
    upstream bodies too).
  • Field-verified: the R104 build carried the FULL smoke belt green —
    owner: "R104 fully smoke tested. passed." ([issue #28]) — including the
    standing §L asks (unit-lock re-checks, perspective-off, both-panels, the
    D3D toggle re-check).
  • Housekeeping in the same window: the repository is renamed
    D2LoD-libslang-vk → D2VP-QoL (old URLs redirect), and the
    Glide3xVK wrapper spins out to its own repo,
    VTSTech/Glide3xVK.
  • Gates 380/380.

R105 — 2026-11-04 (self-ID Vanilla+0.0.7-R105)

Vanilla+0.0.7-R105 — the sixth upstream sync (Ghidra DB → 1894)

  • Merge of six upstream commits (cc23648d..e2e9ec61), 124 files,
    +1,732/−2,059. Byte-match now 6,560 of 14,642 functions (44.8%) / 21.14%
    of bytes
    .
  • Structural: the D2Multi launcher file folds into ChatDlg (deleted
    D2Multi/Launcher.{cpp,h}); verified no fork surface referenced the
    launcher before staging.
  • Four conflicts resolved per docs/merge-upstream.md:
    • Pet recolor (issue #8): upstream's new per-call-local shape taken,
      fork's field-verified raw polarity kept (dated supersession notes at both
      sites; gate re-pinned).
    • Party.cpp site-6: the resolution-mode offset term re-planted onto
      upstream's inlined call shape.
    • GetGuildName: upstream's plain strcpy shape not taken — the
      rev35 bounded copy stays (a corrupt 32+-byte guild name would run off the
      packet area).
    • README: fork Verification section kept, upstream evidence numbers
      absorbed.
  • Audit battery all green: gates 380/380, rev47 marker audit zero losses,
    rev48 zero dead stores, d2boot ALL VISIBLE, merge-site sweep 29 TUs clean.
  • No owner-visible behavior change intended.

R106 (self-ID Vanilla+0.0.7-R106 window)

Vanilla+0.0.7-R106 — the seventh upstream sync (Ghidra DB → 1908) + build fix

  • Merge of fifteen upstream commits (e2e9ec61..7df6ad0e), 437 files, six
    evidence rounds. Evidence now 6,733 functions (46.03%) / 21.87% of
    bytes
    .
  • Notable upstream landings: nine more VC8 codegen shapes; Storm TSList
    head terminator typed as one link and UnlinkAll copied as template
    members; MCP one-byte requests build the byte in a byte buffer; packet-flag
    and quest-execute types taken from the asm; PKWARE filed under its
    IMPLODE.LIB names; the old Game.exe Main.cpp filed as Game/Main.cpp
    and the Engine/Application scaffolding retired.
  • Build fix: the first post-sync owner build broke on Draw.cpp's stale
    D2Client/D2GfxHelperStrc.h include (left behind by the upstream refile) —
    dropped, build green.

R107 — 2026-11-04 (self-ID Vanilla+0.0.7-R107)

Vanilla+0.0.7-R107 — the Mana Burn fix (mana_burn_fix)

  • The bug (retail 1.14d, verified in-tree): monsters with the Mana Burn
    affix drain 256x the intended mana with melee hits — 512x in Hell —
    emptying a mana pool in one blow. Root cause: the affix stores its drain
    stats already in the mana 1/256 fixed point, and the melee drain roll
    shifted them another 8 bits (a helper built for the plain-point
    fire/cold/lightning stats); the missile path read the stats raw and was
    always correct. Community record: Amazon Basin wiki — "it is multiplied by
    256 when applied by a melee attack. Fixed in D2R."
  • The fix (opt-in): with [features] mana_burn_fix=1 in d2vp.ini, a
    Mana Burn melee hit drains the designed amount instead — 66–100% of the
    monster's level damage (33–50% for Nightmare/Hell minions). Default OFF =
    retail byte-for-byte.
  • D2R 2.4 parity: Nightmare/Hell still drain x1.4/x2 — the difficulty
    resist penalty is retail behavior and is left alone, exactly like D2R after
    its own 2.4 fix.
  • Scope: server-side, so it applies in single player and in TCP-IP games
    hosted from this exe. New fork-owned gate TU
    (D2Game/UNIT/VanillaPlusCombat.{h,cpp}, 2 s ini hot-read) + a VP-marked
    drain-roll shim and three marked call sites in SUnitDmg.cpp (the
    life/stamina drain sites share the latent double-scale and are covered for
    consistency). Key documented in the auto-created d2vp.ini template.
  • Exit check: a Hell Mana Burn unique with monlvl DM 40 drains 26–40 mana
    per hit (not 13,517–20,480).

R108 — 2026-11-05 (self-ID Vanilla+0.0.7-R108)

Vanilla+0.0.7-R108 — Mana Burn Fix joins the Vanilla+ Options panel

  • Esc → Options → Vanilla+ Options grows an eighth row, Mana Burn Fix —
    the R107 toggle is no longer ini-only. Same key, same bridge as the other
    seven rows; a fresh d2vp.ini already carries it.
  • Instant in the panel, ≤ 2 s in the game: the page re-reads the ini every
    frame, so the On/Off flip shows same-frame; the server gate keeps its 2 s
    hot-read, so the drain behavior follows on the next poll — the same latency
    as an external ini edit.
  • Layout: the eighth row moved the Previous Menu row down one pitch
    (0x144 → 0x164) and grew the panel box (0x171 → 0x191, same bottom margin);
    verified to fit 640x480.
  • Housekeeping: the build self-ID gate re-pinned (the R107 round never
    re-pinned it), row-count/back-row gates re-pinned, +1 row-present gate —
    suite 387/387.

Full Changelog: R106...R108