So IDA gives following for address 0x0056CA50:
Code:
int __thiscall CGUnit_C__GetAura(int this, unsigned int a2)
{
unsigned int v2; // edx@2
int result; // eax@6
if ( *(_DWORD *)(this + 3536) == -1 )
v2 = *(_DWORD *)(this + 3156);
else
v2 = *(_DWORD *)(this + 3536);
if ( a2 >= v2 )
{
result = 0;
}
else
{
if ( *(_DWORD *)(this + 3536) == -1 )
result = *(_DWORD *)(this + 3160) + 24 * a2;
else
result = this + 24 * a2 + 3152;
}
return result;
}
I am guessing that in reality the return value is a pointer to an Aura struct (probably very similar to the one given via the Lua_UnitAura() function). And the "int a2" argument is the index into the Aura array which you can for loop over and max at the Num of Auras as reported by function at address 0x0049E830:
Code:
int __thiscall CGUnit_C__GetAuraCount(int this)
{
int result; // eax@1
result = *(_DWORD *)(this + 3536);
if ( result == -1 )
result = *(_DWORD *)(this + 3156);
return result;
}
Am I correct? currently unable to verify this by just running wow... don't ask.