REDIVIVUS

Proposals / #829

Name the Properties.txt dispatch record pointer pProperty across the ITEMPROP_ family

applied · by jaenster · submitted 2026-11-02, applied 2026-11-02

Ghidra v1809 · 9528519

All 25 ITEMPROP_ handlers are slots of the fpProperties *[37] table at 0x007462f8, so they share one signature. ITEMMOD_ApplyPropertyToUnitStatsExpansion (0065fd70) dispatches through it and passes its own pSetsTxtF, a D2SetsTxtFStrc *, as the 4th argument (Stack[0x8]). ITEMPROP_AddStat_Simple proves the type by dereferencing that slot: at 0065f2d1 and 0065f2d4 it loads +0xc and +0x8 (D2SetsTxtFStrc.fmax and .fmin) and passes them to ITEMMOD_RollRandomValue(pUnit, nMin, nMax) at 0065f2da. Two siblings already reviewed, ITEMPROP_AddSkillCharges (0065f470, verified-2026-10-25) and ITEMPROP_AddSkillOnEvent (0065f6a0), already name this slot pProperty; this brings the other 22 into line and gives the slot its real struct type instead of uint32_t. ITEMPROP_AddStat_WithMaxDurabilityReset keeps its chosen name nPropPtr and is only retyped. The two already-named siblings are left untouched.

Changes 45, applied together

  1. Rename variable win 0x0065eb30 Stack[0x8]

    namenParam12→pProperty
  2. Retype variable win 0x0065eb30 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  3. Rename variable win 0x0065eba0 Stack[0x8]

    namenParam1→pProperty
  4. Retype variable win 0x0065eba0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  5. Rename variable win 0x0065ec10 Stack[0x8]

    namenParam12→pProperty
  6. Retype variable win 0x0065ec10 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  7. Rename variable win 0x0065ec80 Stack[0x8]

    namenParam1→pProperty
  8. Retype variable win 0x0065ec80 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  9. Rename variable win 0x0065ecf0 Stack[0x8]

    namenParam1→pProperty
  10. Retype variable win 0x0065ecf0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  11. Rename variable win 0x0065ee80 Stack[0x8]

    namenParam1→pProperty
  12. Retype variable win 0x0065ee80 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  13. Rename variable win 0x0065f010 Stack[0x8]

    namenParam1→pProperty
  14. Retype variable win 0x0065f010 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  15. Rename variable win 0x0065f2b0 Stack[0x8]

    namenParam1→pProperty
  16. Retype variable win 0x0065f2b0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  17. Rename variable win 0x0065f310 Stack[0x8]

    namenParam1→pProperty
  18. Retype variable win 0x0065f310 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  19. Rename variable win 0x0065f390 Stack[0x8]

    namenParam1→pProperty
  20. Retype variable win 0x0065f390 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  21. Rename variable win 0x0065f3f0 Stack[0x8]

    namenParam1→pProperty
  22. Retype variable win 0x0065f3f0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  23. Rename variable win 0x0065f590 Stack[0x8]

    namenParam1→pProperty
  24. Retype variable win 0x0065f590 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  25. Rename variable win 0x0065f870 Stack[0x8]

    namenParam1→pProperty
  26. Retype variable win 0x0065f870 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  27. Rename variable win 0x0065f960 Stack[0x8]

    namenParam1→pProperty
  28. Retype variable win 0x0065f960 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  29. Rename variable win 0x0065f9d0 Stack[0x8]

    namenParam1→pProperty
  30. Retype variable win 0x0065f9d0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  31. Rename variable win 0x0065fa40 Stack[0x8]

    namenParam1→pProperty
  32. Retype variable win 0x0065fa40 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  33. Rename variable win 0x0065fae0 Stack[0x8]

    namenParam1→pProperty
  34. Retype variable win 0x0065fae0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  35. Rename variable win 0x0065fb50 Stack[0x8]

    namenParam1→pProperty
  36. Retype variable win 0x0065fb50 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  37. Rename variable win 0x0065fba0 Stack[0x8]

    namenParam1→pProperty
  38. Retype variable win 0x0065fba0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  39. Rename variable win 0x0065fbf0 Stack[0x8]

    namenParam1→pProperty
  40. Retype variable win 0x0065fbf0 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  41. Rename variable win 0x0065fc40 Stack[0x8]

    namenParam1→pProperty
  42. Retype variable win 0x0065fc40 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  43. Retype variable win 0x0065fc90 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *
  44. Rename variable win 0x0065fd20 Stack[0x8]

    namenParam1→pProperty
  45. Retype variable win 0x0065fd20 Stack[0x8]

    typeuint32_t→D2SetsTxtFStrc *