REDIVIVUS

Proposals / #968

Mac SKILLSEMON_CltCreateMissileAtUnit: __fastcc void (pUnit, eMissileId, eSkill, nSkillLevel, bSetDeadFlag)

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

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

  1. Set prototype mac 0x0008b3c1

    signatureundefined SKILLSEMON_CltCreateMissileAtUnit(void)→void SKILLSEMON_CltCreateMissileAtUnit(D2UnitStrc * pUnit, eMissilesId eMissileId, eD2Skills eSkill, int32_t nSkillLevel, BOOL bSetDeadFlag)
    conventionunknown→__fastcc