Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bool __thiscall CNWSCreature__DoSpotDetection(int this, int a2, int a3)
- {
- char v3; // cl@1
- int v4; // ebx@1
- int v5; // edi@1
- int v6; // esi@1
- int v7; // edx@1
- float v8; // eax@1
- long double v9; // fst7@1
- int v10; // edx@1
- int v11; // eax@1
- float v12; // ecx@1
- long double v13; // fst7@1
- bool result; // eax@6
- int v15; // eax@9
- long double v16; // fst7@9
- long double v17; // fst7@10
- int v18; // ebx@18
- int v19; // eax@18
- int v20; // ebp@19
- int v21; // eax@19
- int v22; // eax@29
- int v23; // ebp@29
- int v24; // eax@29
- int v25; // ebp@30
- int v26; // eax@30
- int v27; // ebx@31
- int v28; // ecx@32
- int v29; // ebp@32
- unsigned __int16 **v30; // edx@33
- unsigned __int16 v31; // ax@34
- int v32; // ecx@39
- int v33; // ebp@39
- unsigned __int16 **v34; // edx@40
- unsigned __int16 v35; // ax@41
- int v36; // eax@46
- int v37; // ebp@46
- int v38; // eax@49
- int v39; // edx@50
- int v40; // eax@50
- int v41; // eax@51
- int v42; // ecx@51
- int v43; // eax@51
- int v44; // eax@59
- float v45; // [sp+14h] [bp-24h]@1
- float v46; // [sp+18h] [bp-20h]@1
- float v47; // [sp+1Ch] [bp-1Ch]@1
- int v48; // [sp+20h] [bp-18h]@9
- int v49; // [sp+24h] [bp-14h]@9
- int v50; // [sp+28h] [bp-10h]@9
- float v51; // [sp+2Ch] [bp-Ch]@1
- float v52; // [sp+30h] [bp-8h]@1
- float v53; // [sp+34h] [bp-4h]@1
- float v54; // [sp+3Ch] [bp+4h]@9
- v6 = this;
- v7 = *(_DWORD *)(this + 124);
- LODWORD(v8) = *(_DWORD *)(this + 128);
- LODWORD(v51) = *(_DWORD *)(this + 120);
- v5 = a2;
- LODWORD(v52) = v7;
- v53 = v8;
- v9 = v8 + 1.0;
- v10 = *(_DWORD *)(a2 + 120);
- v11 = *(_DWORD *)(a2 + 124);
- LODWORD(v12) = *(_DWORD *)(a2 + 128);
- v53 = v9;
- v47 = v12;
- v13 = v12;
- v3 = *(_BYTE *)(v6 + 2524);
- LODWORD(v45) = v10;
- v4 = 0;
- v47 = v13 + 1.0;
- LODWORD(v46) = v11;
- if ( v3 & 4 || v3 & 0x20 || !(v3 & 0x10) && (!(v3 & 8) || v3 & 2) )
- {
- if ( a3 )
- {
- result = 0;
- }
- else
- {
- v15 = *(_DWORD *)(v6 + 1212);
- *(float *)&v48 = v45 - v51;
- *(float *)&v49 = v46 - v52;
- v16 = v47 - v53;
- *(float *)&v50 = v16;
- v54 = v16 * *(float *)&v50 + *(float *)&v49 * *(float *)&v49 + *(float *)&v48 * *(float *)&v48;
- if ( v15 )
- v17 = *(float *)(v6 + 2584);
- else
- v17 = *(float *)(v6 + 2580);
- if ( v54 <= v17 * v17 )
- {
- if ( v3 & 4 )
- goto LABEL_73;
- if ( v3 & 0x20 && v54 <= *(float *)(v6 + 2596) * *(float *)(v6 + 2596) )
- goto LABEL_73;
- if ( *(_BYTE *)(v5 + 1193) == 1 )
- {
- v18 = *(_DWORD *)(v5 + 3172);
- v19 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 16))(v6);
- v4 = -CNWSCreatureStats__GetSkillRank(v18, 5u, v19, 0) - *(_BYTE *)(v5 + 2600);
- }
- v20 = *(_DWORD *)(v5 + 3172);
- v21 = (*(int (__thiscall **)(int))(*(_DWORD *)v6 + 16))(v6);
- if ( !CNWSCreatureStats__GetSkillRank(v20, 5u, v21, 0) || !*(_BYTE *)(v5 + 1193) )
- {
- LABEL_73:
- result = 1;
- }
- else
- {
- if ( CNWSCreatureStats__HasFeat(*(_DWORD *)(v6 + 3172), 240)
- || (*(_DWORD *)(v6 + 172) || *(_BYTE *)(v6 + 1192) == 1) && *(_BYTE *)(v6 + 1192) == 1
- || !CNWSCreatureStats__HasFeat(*(_DWORD *)(v6 + 3172), 240)
- && (!*(_DWORD *)(v6 + 172) && *(_BYTE *)(v6 + 1192) != 1 || *(_BYTE *)(v6 + 1192) == 2) )
- {
- v25 = *(_DWORD *)(v6 + 3172);
- v26 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 16))(v5);
- v22 = CNWSCreatureStats__GetSkillRank(v25, 0x11u, v26, 0);
- }
- else
- {
- v23 = *(_DWORD *)(v6 + 3172);
- v24 = (*(int (__thiscall **)(int))(*(_DWORD *)v5 + 16))(v5);
- v22 = CNWSCreatureStats__GetSkillRank(v23, 0x11u, v24, 0) / 2;
- }
- v27 = *(_BYTE *)(v6 + 2602) + *(_DWORD *)(CNWSObject__GetArea((void *)v6) + 328) + v22 + v4;
- if ( *(_BYTE *)(CServerExoApp__GetModule(*(_DWORD *)(g_pAppManager + 4)) + 496) == 2 )
- {
- v29 = *(_DWORD *)(v6 + 248);
- v28 = 0;
- if ( v29 <= 0 )
- {
- LABEL_38:
- v27 -= 5;
- }
- else
- {
- v30 = *(unsigned __int16 ***)(v6 + 244);
- while ( 1 )
- {
- v31 = **v30;
- if ( v31 == 182 )
- break;
- if ( v31 >= 0x99u && v31 <= 0xB4u )
- break;
- ++v28;
- ++v30;
- if ( v28 >= v29 )
- goto LABEL_38;
- }
- }
- v33 = *(_DWORD *)(v5 + 248);
- v32 = 0;
- if ( v33 > 0 )
- {
- v34 = *(unsigned __int16 ***)(v5 + 244);
- while ( 1 )
- {
- v35 = **v34;
- if ( v35 >= 0x99u )
- {
- if ( v35 <= 0xB4u )
- break;
- }
- ++v32;
- ++v34;
- if ( v32 >= v33 )
- goto LABEL_46;
- }
- v27 += 10;
- }
- }
- LABEL_46:
- v37 = CServerExoApp__GetClientObjectByObjectId(*(_DWORD *)(g_pAppManager + 4), *(_DWORD *)(v6 + 4));
- v36 = CServerExoApp__GetClientObjectByObjectId(*(_DWORD *)(g_pAppManager + 4), *(_DWORD *)(v5 + 4));
- if ( !v37 )
- {
- if ( v36 )
- {
- LODWORD(v45) = v48;
- LODWORD(v46) = v49;
- LODWORD(v47) = v50;
- if ( v54 <= 0.0 )
- {
- v39 = *(_DWORD *)(v6 + 136);
- v40 = *(_DWORD *)(v6 + 140);
- LODWORD(v45) = *(_DWORD *)(v6 + 132);
- LODWORD(v46) = v39;
- LODWORD(v47) = v40;
- }
- else
- {
- v38 = normalize((int)&v51, (int)&v45);
- LODWORD(v45) = *(_DWORD *)v38;
- LODWORD(v46) = *(_DWORD *)(v38 + 4);
- LODWORD(v47) = *(_DWORD *)(v38 + 8);
- }
- v41 = *(_DWORD *)(v6 + 136);
- v42 = *(_DWORD *)(v6 + 140);
- LODWORD(v51) = *(_DWORD *)(v6 + 132);
- LODWORD(v52) = v41;
- LODWORD(v53) = v42;
- v43 = normalize((int)&v48, (int)&v51);
- if ( v47 * *(float *)(v43 + 8) + v46 * *(float *)(v43 + 4) + v45 * *(float *)v43 <= -0.7070000171661377 )
- v27 -= 5;
- }
- }
- if ( *(_DWORD *)(v6 + 1212) )
- v27 -= 10;
- if ( CNWSObject__AnimationStationary(*(_DWORD *)(v5 + 172)) )
- v27 -= 5;
- if ( CNWSObject__AnimationStationary(*(_DWORD *)(v6 + 172)) )
- v27 += 5;
- v44 = *(_DWORD *)(v5 + 1236) - *(_DWORD *)(v6 + 1236);
- switch ( v44 )
- {
- case -2:
- v27 -= 8;
- break;
- case -1:
- v27 -= 4;
- break;
- case -4294967295:
- v27 += 4;
- break;
- case -4294967294:
- v27 += 8;
- break;
- }
- result = CNWSCreatureStats__GetFavoredEnemyBonus(*(_DWORD *)(v6 + 3172), v5) + v27 > 0;
- }
- }
- else
- {
- result = 0;
- }
- }
- }
- else
- {
- result = 0;
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement