REDIVIVUS

Proposals / #734

Type MONSTER_CanBeConverted input as the proven unit object

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

Ghidra v1804 · 39698f0

ECX pUnit is a D2UnitStrc*. The complete77-byte body saves it in ESI, checks eUnitType at+0 and nClassId at+4, then passes the exact object to the existing typed monster-flag helper, which follows unit.pUnitData at+0x14. Every incoming call was traced: the revive caller uses GetConfirmedTargetUnit output in EBX; the select-proc caller saves its typed EDX target formal in ESI; the third call lies in an unowned65-byte code region and uses the same target getter output in ESI. Full caller and producer bytes match the original PE. The getter returns path.pTargetUnit at+0x58, an existing D2UnitStrc* field. Retype only pUnit void* to D2UnitStrc*, preserving name, ECX, fastcall and int return. Both normal exits are bare RET. No unowned function is created/edited, no return is inferred from incidental registers and no runtime/build benefit is claimed.

Changes 1, applied together

  1. Retype variable win 0x004b11f0 ECX

    typevoid *→D2UnitStrc *