REDIVIVUS

Proposals / #1685

Recover the Mac bonus-stat predicate's two-register unit/item contract

checked · by eejitgames · submitted 2026-11-08

Mac 0018c744 HasBonusStats is stored as undefined(void)/unknown, but native entry reads ECX as the unit and EDX as an optional item. Both direct callers supply those registers and test full EAX. Every normal exit returns a DWORD0 or1. Recover BOOL __fastcc(D2UnitStrc*pUnit,D2UnitStrc*pItem), preserving the chosen function name. Complete Mac265B and Windows224B bodies match stat queries, seed updates, percentage rolls and item-bonus gating. Windows custom storage remains unchanged; its existing parameter names appear reversed relative to native ESI=unit and Stack4=item and need review.

Changes 1, applied together

  1. Set prototype mac 0x0018c744

    signatureundefined HasBonusStats(void)→BOOL HasBonusStats(D2UnitStrc * pUnit, D2UnitStrc * pItem)
    conventionunknown→__fastcc