2010-07-30, 07:58 PM
I also found the function for min HP/MP. Coming soon...
CUIStatChange::IsUnderMinHP
Code:
signed int __stdcall CUIStatChange__IsUnderMinHP(SecondaryStat *curHP)
{
int v1; // esi@1
signed int v2; // ecx@3
int minHP; // eax@6
signed int v4; // eax@7
int v5; // edx@16
int v7; // eax@28
int v8; // eax@40
char v9; // [sp+Ch] [bp-8h]@1
int v10; // [sp+10h] [bp-4h]@1
v1 = *(CWvsContext__GetCharacterData(*TSingleton_CWvsContext___ms_pInstance, &v9) + 4);
if ( v10 )
{
ZRef_CharacterData____ReleaseRaw(0);
v10 = 0;
}
v2 = SecondaryStat->nJob;
if ( v2 / 100 != 22 && v2 != 2001 || SecondaryStat->nJob == 2001 )
{
v4 = SecondaryStat->nJob;
if ( v4 == 3200 )
{
minHP = 34 * SecondaryStat->nLevel - 32;
return curHP < minHP;
}
if ( v4 > 3209 )
{
if ( v4 <= 3212 )
{
minHP = 34 * SecondaryStat->nLevel + 168;
return curHP < minHP;
}
if ( v4 == 3300 )
{
minHP = 20 * SecondaryStat->nLevel + 108;
return curHP < minHP;
}
if ( v4 > 3309 && v4 <= 3312 )
{
minHP = 20 * SecondaryStat->nLevel + 258;
return curHP < minHP;
}
}
v5 = SecondaryStat->nJob % 1000;
if ( v5 <= 300 )
{
if ( v5 != 300 )
{
if ( v5 <= 132 )
{
if ( v5 < 130 )
{
if ( v5 < 0 )
return 0;
if ( v5 <= 1 )
{
v7 = 12 * SecondaryStat->nLevel + 38;
goto LABEL_30;
}
if ( v5 != 100 )
{
if ( v5 <= 109 )
return 0;
if ( v5 <= 112 )
{
v7 = 24 * SecondaryStat->nLevel + 418;
goto LABEL_30;
}
if ( v5 <= 119 || v5 > 122 )
return 0;
}
}
v7 = 24 * SecondaryStat->nLevel + 118;
LABEL_30:
if ( curHP < v7 )
return 1;
return 0;
}
if ( v5 != 200 && (v5 <= 209 || v5 > 212 && (v5 <= 219 || v5 > 222 && (v5 <= 229 || v5 > 232))) )
return 0;
v8 = 10 * SecondaryStat->nLevel + 54;
LABEL_41:
if ( curHP < v8 )
return 1;
return 0;
}
LABEL_53:
v8 = 20 * SecondaryStat->nLevel + 58;
goto LABEL_41;
}
if ( v5 > 422 )
{
if ( v5 < 430 )
return 0;
if ( v5 <= 434 )
{
v8 = 20 * SecondaryStat->nLevel + 808;
}
else
{
if ( v5 == 500 )
{
v8 = 22 * SecondaryStat->nLevel + 38;
}
else
{
if ( v5 <= 509 || v5 > 512 && (v5 <= 519 || v5 > 522) )
return 0;
v8 = 22 * SecondaryStat->nLevel + 338;
}
}
goto LABEL_41;
}
if ( v5 < 420 )
{
if ( v5 < 310 )
return 0;
if ( v5 > 312 )
{
if ( v5 <= 319 )
return 0;
if ( v5 > 322 )
{
if ( v5 == 400 )
goto LABEL_53;
if ( v5 <= 409 || v5 > 412 )
return 0;
}
}
}
v8 = 20 * SecondaryStat->nLevel + 358;
goto LABEL_41;
}
minHP = 16 * SecondaryStat->nLevel - 2;
return curHP < minHP;
}
CUIStatChange::IsUnderMinMP
Code:
signed int __stdcall CUIStatChange__IsUnderMinMP(int curMP)
{
int v1; // esi@1
signed int v2; // ecx@3
int v3; // edi@6
int v4; // eax@11
signed int v5; // eax@12
int v6; // edx@21
int v8; // eax@33
int v9; // eax@45
char v10; // [sp+Ch] [bp-8h]@1
int v11; // [sp+10h] [bp-4h]@1
v1 = *(CWvsContext__GetCharacterData(*TSingleton_CWvsContext___ms_pInstance, &v10) + 4);
if ( v11 )
{
ZRef_CharacterData____ReleaseRaw(0);
v11 = 0;
}
v2 = SecondaryStat->nJob;
if ( (v2 / 100 == 22 || v2 == 2001) && SecondaryStat->nJob != 2001 )
{
v3 = 150;
if ( SecondaryStat->nJob < 2210 || SecondaryStat->nJob > 2214 )
{
if ( SecondaryStat->nJob >= 2215 )
v3 = 650;
}
else
{
v3 = 100 * SecondaryStat->nJob % 10 + 250;
}
v4 = 35 * SecondaryStat->nLevel + v3 - 275;
return curMP < v4;
}
v5 = SecondaryStat->nJob;
if ( v5 == 3200 )
{
v4 = 22 * SecondaryStat->nLevel + 43;
return curMP < v4;
}
if ( v5 <= 3209 )
goto LABEL_75;
if ( v5 <= 3212 )
{
v4 = 22 * SecondaryStat->nLevel + 143;
return curMP < v4;
}
if ( v5 == 3300 )
{
v4 = 14 * SecondaryStat->nLevel + 23;
return curMP < v4;
}
if ( v5 <= 3309 || v5 > 3312 )
{
LABEL_75:
v6 = SecondaryStat->nJob % 1000;
if ( v6 <= 300 )
{
if ( v6 != 300 )
{
if ( v6 <= 132 )
{
if ( v6 < 130 )
{
if ( v6 < 0 )
return 0;
if ( v6 <= 1 )
{
v8 = 10 * SecondaryStat->nLevel - 5;
goto LABEL_35;
}
if ( v6 == 100 )
goto LABEL_76;
if ( v6 <= 109 )
return 0;
if ( v6 <= 112 )
{
LABEL_76:
v8 = 4 * SecondaryStat->nLevel + 55;
goto LABEL_35;
}
if ( v6 <= 119 || v6 > 122 )
return 0;
}
v8 = 4 * SecondaryStat->nLevel + 155;
LABEL_35:
if ( curMP < v8 )
return 1;
return 0;
}
if ( v6 == 200 )
{
v9 = 22 * SecondaryStat->nLevel - 1;
}
else
{
if ( v6 <= 209 || v6 > 212 && (v6 <= 219 || v6 > 222 && (v6 <= 229 || v6 > 232)) )
return 0;
v9 = 22 * SecondaryStat->nLevel + 449;
}
LABEL_47:
if ( curMP < v9 )
return 1;
return 0;
}
LABEL_59:
v9 = 14 * SecondaryStat->nLevel - 15;
goto LABEL_47;
}
if ( v6 > 422 )
{
if ( v6 < 430 )
return 0;
if ( v6 <= 434 )
{
v9 = 14 * SecondaryStat->nLevel + 355;
}
else
{
if ( v6 == 500 )
{
v9 = 18 * SecondaryStat->nLevel - 55;
}
else
{
if ( v6 <= 509 || v6 > 512 && (v6 <= 519 || v6 > 522) )
return 0;
v9 = 18 * SecondaryStat->nLevel + 95;
}
}
goto LABEL_47;
}
if ( v6 < 420 )
{
if ( v6 < 310 )
return 0;
if ( v6 > 312 )
{
if ( v6 <= 319 )
return 0;
if ( v6 > 322 )
{
if ( v6 == 400 )
goto LABEL_59;
if ( v6 <= 409 || v6 > 412 )
return 0;
}
}
}
v9 = 14 * SecondaryStat->nLevel + 135;
goto LABEL_47;
}
v4 = 14 * SecondaryStat->nLevel + 123;
return curMP < v4;
}