Created
November 28, 2013 16:17
-
-
Save imerr/7694393 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bool __cdecl CHARACTER__AddAffect(CHARACTER *const a1, DWORD dwType, BYTE bApplyOn, __int32 lApplyValue, DWORD dwFlag, __int32 lDuration, __int32 lSPCost, bool bOverride, bool IsCube) | |
{ | |
const char *v9; // eax@3 | |
const char *v10; // eax@3 | |
CAffect *v11; // ebx@4 | |
DESC *v12; // edx@7 | |
unsigned __int16 v13; // di@9 | |
int v14; // ecx@12 | |
bool result; // eax@13 | |
int v16; // edx@16 | |
int v17; // eax@17 | |
int v18; // eax@19 | |
int v19; // eax@22 | |
const char *v20; // eax@28 | |
__int32 duration_; // [sp+34h] [bp-44h]@1 | |
unsigned __int16 v22; // [sp+44h] [bp-34h]@9 | |
char *v23; // [sp+48h] [bp-30h]@18 | |
int v24; // [sp+4Fh] [bp-29h]@25 | |
int v25; // [sp+53h] [bp-25h]@25 | |
char v26; // [sp+57h] [bp-21h]@25 | |
int v27; // [sp+58h] [bp-20h]@25 | |
int v28; // [sp+5Ch] [bp-1Ch]@25 | |
int v29; // [sp+60h] [bp-18h]@25 | |
int v30; // [sp+64h] [bp-14h]@25 | |
int v31; // [sp+68h] [bp-10h]@1 | |
duration_ = lDuration; | |
v31 = *(_DWORD *)_stack_chk_guard; | |
if ( dwType == 223 ) | |
{ | |
if ( lDuration > 1 ) | |
{ | |
v20 = locale_find("+¯+Á++ -ª-ªÀ+ +ñã++¦ ¦¦-"); | |
CHARACTER__ChatPacket(a1, 1, v20); | |
} | |
} | |
if ( !lDuration ) | |
{ | |
sys_err("AddAffect", 542, "Character::AddAffect lDuration == 0 type %d", 0, dwType); | |
duration_ = 1; | |
} | |
v9 = CHARACTER__GetName(a1); | |
sys_log( | |
1, | |
"AddAffect %s type %d apply %d %d flag %u duration %d", | |
v9, | |
dwType, | |
bApplyOn, | |
lApplyValue, | |
dwFlag, | |
duration_); | |
v10 = CHARACTER__GetName(a1); | |
sys_log( | |
0, | |
"AddAffect %s type %d apply %d %d flag %u duration %d", | |
v10, | |
dwType, | |
bApplyOn, | |
lApplyValue, | |
dwFlag, | |
duration_); | |
if ( IsCube ) | |
{ | |
v11 = CHARACTER__FindAffect(a1, dwType, bApplyOn); | |
if ( dwFlag != 6 ) | |
goto LABEL_5; | |
} | |
else | |
{ | |
v11 = CHARACTER__FindAffect(a1, dwType, 0); | |
if ( dwFlag != 6 ) | |
goto LABEL_5; | |
} | |
v16 = a1->CEntity.m_pos.x; | |
if ( a1->m_posDest.x != v16 || a1->m_posDest.y != a1->CEntity.m_pos.y ) | |
{ | |
v17 = a1->CEntity.m_pos.y; | |
a1->m_posStart.x = v16; | |
a1->m_posDest.x = v16; | |
a1->m_posStart.y = v17; | |
a1->m_posDest.y = v17; | |
battle_end(a1); | |
CHARACTER__SyncPacket(a1); | |
} | |
LABEL_5: | |
if ( v11 ) | |
{ | |
if ( bOverride ) | |
{ | |
CHARACTER__ComputeAffect(a1, v11, 0); | |
v12 = a1->CEntity.m_lpDesc; | |
if ( v12 ) | |
SendAffectRemovePacket(v12, a1->m_dwPlayerID, v11->dwType, v11->bApplyOn); | |
goto LABEL_9; | |
} | |
v23 = (char *)&a1->m_list_pkAffect; | |
v11 = CAffect__Acquire(); | |
} | |
else | |
{ | |
v11 = CAffect__Acquire(); | |
v23 = (char *)&a1->m_list_pkAffect; | |
} | |
v18 = operator new(12); | |
if ( v18 != -8 ) | |
*(_DWORD *)(v18 + 8) = v11; | |
std___List_node_base__hook(v18, v23); | |
LABEL_9: | |
v11->dwType = dwType; | |
v11->bApplyOn = bApplyOn; | |
v11->lApplyValue = lApplyValue; | |
v11->dwFlag = dwFlag; | |
v11->lDuration = duration_; | |
v11->lSPCost = lSPCost; | |
v13 = CHARACTER__GetPoint(a1, POINT_MOV_SPEED); | |
v22 = CHARACTER__GetPoint(a1, POINT_ATT_SPEED); | |
CHARACTER__ComputeAffect(a1, v11, 1); | |
if ( v11->dwFlag || v13 != CHARACTER__GetPoint(a1, POINT_MOV_SPEED) || v22 != CHARACTER__GetPoint(a1, POINT_ATT_SPEED) ) | |
CHARACTER__UpdatePacket(a1); | |
CHARACTER__StartAffectEvent(a1); | |
if ( a1->CEntity.m_lpDesc ) | |
{ | |
SendAffectAddPacket(a1->CEntity.m_lpDesc, v11); | |
v19 = v11->dwType; | |
if ( v11->dwType != 222 ) | |
{ | |
if ( v19 != 215 ) | |
{ | |
if ( (unsigned int)(v19 - 500) > 9 ) | |
{ | |
v24 = a1->m_dwPlayerID; | |
v25 = v11->dwType; | |
v26 = v11->bApplyOn; | |
v27 = v11->lApplyValue; | |
v28 = v11->dwFlag; | |
v29 = v11->lDuration; | |
v30 = v11->lSPCost; | |
CLIENT_DESC__DBPacket(db_clientdesc, 0x20u, 0, &v24, 0x19u); | |
} | |
} | |
} | |
} | |
result = 1; | |
if ( *(_DWORD *)_stack_chk_guard != v31 ) | |
__stack_chk_fail(v14); | |
return result; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment