Mac SKILLSCLT_CreateMultiMissileDirected: __fastcc void (pUnit, pSkillsTxt, eSkill, nSkillLevel)
Ghidra vmac 111 · 3c6740e
Mac body: ECX (ESI) is the owner unit (RNG seed at +0x20/+0x24 advanced, unit type at +0, path at +0x2c for the spawn position); EDX (EBX) is the skill record whose words +0xea/+0xec/+0xee give the three candidate missile ids and +0x118 the calc index; [EBP+8] and [EBP+0xc] are passed as the eSkill and nSkillLvl arguments of D2GetSkillCalc (0x0008a1a0), and [EBP+0xc] is also stored in the skill-arg block. Windows twin SKILLSCLT_CreateMultiMissileDirected 0x004f1a30 is void (D2SkillsTxt * pSkillsTxt, eD2Skills eSkill, int32_t nParam2, D2UnitStrc * pUnit); Mac passes the unit first and the generic nParam2 is the skill level.
Changes 1, applied together
Set prototype
mac 0x0008a007signatureundefined SKILLSCLT_CreateMultiMissileDirected(void)→void SKILLSCLT_CreateMultiMissileDirected(D2UnitStrc * pUnit, D2SkillsTxt * pSkillsTxt, eD2Skills eSkill, int32_t nSkillLevel)conventionunknown→__fastcc