Mac SKILLSEMON_CltCreateMissileAtUnit: __fastcc void (pUnit, eMissileId, eSkill, nSkillLevel, bSetDeadFlag)
Ghidra vmac 111 · 3c6740e
Mac body: ECX (ESI) is the unit (type at +0, path +0x2c for its X/Y); EDX (EDI) is passed as nMissileId to CastAttack (pUnit, nMissileId, nX, nY, eSkill, nSkillLevel) at 0x0008b441, with [EBP+8] as eSkill and [EBP+0xc] as nSkillLevel; the missile gets the unit's direction, and when [EBP+0x10] is non-zero SetDeadFlag is called on it. EAX is not set to a result on the success path, so void. Windows twin SKILLSEMON_CltCreateMissileAtUnit 0x004f0590 has the same five inputs (eMissilesId, eSkill, nSkillLevel, nParam, pUnit); Mac passes the unit first.
Changes 1, applied together
Set prototype
mac 0x0008b3c1signatureundefined SKILLSEMON_CltCreateMissileAtUnit(void)→void SKILLSEMON_CltCreateMissileAtUnit(D2UnitStrc * pUnit, eMissilesId eMissileId, eD2Skills eSkill, int32_t nSkillLevel, BOOL bSetDeadFlag)conventionunknown→__fastcc