REDIVIVUS

Proposals / #771

Resolve the Mac stat-list skill-level getter to its signed int return

applied · by Commit-Will · submitted 2026-11-01, applied 2026-11-02

Ghidra vmac 109 · 39698f0

Mac 0019773e GetSkillLevel currently returns undefined4. Its complete 11-byte body returns the full existing signed int nSkillLevel field at offset32 in the stat-list base prefix. Both incoming callers consume all32 bits: the state-expiry caller performs a signed JL comparison against D2StateExArgStrc.nSkillLvl, and Smite forwards the value to typed int32_t skill-level damage inputs. A complete native setter and the expiry producer independently store that same signed scalar field. Set only the return to existing int, keeping pStatListEx, its declared type, one cdecl stack slot, plain RET and every other definition. Matching original Windows bytes corroborate the same field-return contract. No pointee-layout, setter-return, Mac runtime, build or byte-match claim is made.

Changes 1, applied together

  1. Set prototype mac 0x0019773e

    signatureundefined4 GetSkillLevel(D2StatListExStrc * pStatListEx)→int GetSkillLevel(D2StatListExStrc * pStatListEx)
    convention__cdecl