Advertisement
Guest User

CNWSCreatureStats__GetDamageBonus

a guest
Oct 19th, 2011
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 24.30 KB | None | 0 0
  1. void __thiscall CNWSCreatureStats__GetDamageBonus(int this, int a2, int a3)
  2. {
  3.   signed int v3; // edi@1
  4.   int v4; // esi@1
  5.   int v5; // eax@1
  6.   unsigned __int8 v6; // cl@1
  7.   void *v7; // eax@1
  8.   int v8; // eax@1
  9.   void *v9; // ecx@1
  10.   int v10; // eax@1
  11.   char v11; // al@2
  12.   int v12; // ebx@3
  13.   int v13; // eax@6
  14.   signed int v14; // ST0C_4@7
  15.   signed int v15; // eax@7
  16.   int v16; // ecx@9
  17.   int v17; // eax@9
  18.   void *v18; // ecx@9
  19.   const char **v19; // ST0C_4@9
  20.   int v20; // eax@9
  21.   int v21; // ebx@10
  22.   int v22; // ebp@10
  23.   unsigned __int8 v23; // dl@11
  24.   int v24; // ecx@11
  25.   int v25; // ecx@12
  26.   char v26; // al@14
  27.   int v27; // ebx@15
  28.   int v28; // eax@18
  29.   signed int v29; // ST0C_4@19
  30.   signed int v30; // eax@19
  31.   int v31; // eax@21
  32.   void *v32; // ecx@21
  33.   const char **v33; // ST0C_4@21
  34.   int v34; // eax@21
  35.   int v35; // eax@24
  36.   int v36; // eax@30
  37.   char v37; // al@33
  38.   unsigned __int16 v38; // ax@36
  39.   int v39; // eax@41
  40.   signed int v40; // ST0C_4@42
  41.   signed int v41; // eax@42
  42.   int v42; // eax@44
  43.   void *v43; // ecx@44
  44.   const char **v44; // ST0C_4@44
  45.   int v45; // eax@44
  46.   signed int v46; // ebp@46
  47.   int v47; // ecx@49
  48.   int v48; // edx@49
  49.   int v49; // eax@49
  50.   int v50; // ecx@49
  51.   int v51; // edx@49
  52.   __int16 v52; // fps@49
  53.   unsigned __int8 v53; // c0@49
  54.   unsigned __int8 v54; // c3@49
  55.   int v55; // eax@53
  56.   signed int v56; // ST0C_4@54
  57.   signed int v57; // eax@54
  58.   int v58; // eax@56
  59.   void *v59; // ecx@56
  60.   const char **v60; // ST0C_4@56
  61.   int v61; // eax@56
  62.   signed int v62; // ebp@58
  63.   int v63; // eax@59
  64.   int v64; // eax@103
  65.   signed int v65; // ST0C_4@104
  66.   signed int v66; // eax@104
  67.   int v67; // eax@106
  68.   void *v68; // ecx@106
  69.   const char **v69; // ST0C_4@106
  70.   int v70; // eax@106
  71.   int v71; // ebx@107
  72.   int v72; // ebp@107
  73.   int v73; // eax@114
  74.   signed int v74; // ST0C_4@116
  75.   signed int v75; // eax@116
  76.   int v76; // eax@116
  77.   void *v77; // ecx@116
  78.   const char **v78; // ST0C_4@116
  79.   int v79; // eax@116
  80.   int v80; // eax@116
  81.   int v81; // ecx@118
  82.   signed int v82; // ST0C_4@118
  83.   signed int v83; // eax@118
  84.   int v84; // eax@118
  85.   void *v85; // ecx@118
  86.   const char **v86; // ST0C_4@118
  87.   int v87; // eax@118
  88.   int v88; // eax@120
  89.   void *v89; // ecx@120
  90.   const char **v90; // ST0C_4@120
  91.   int v91; // eax@120
  92.   int v92; // eax@120
  93.   int v93; // eax@122
  94.   void *v94; // ecx@122
  95.   const char **v95; // ST0C_4@122
  96.   int v96; // eax@122
  97.   int v97; // eax@123
  98.   int v98; // eax@125
  99.   signed int v99; // ebp@125
  100.   int v100; // eax@131
  101.   signed int v101; // ST0C_4@132
  102.   signed int v102; // eax@132
  103.   int v103; // eax@134
  104.   void *v104; // ecx@134
  105.   const char **v105; // ST0C_4@134
  106.   int v106; // eax@134
  107.   unsigned int v107; // ebp@135
  108.   int v108; // eax@137
  109.   signed int v109; // ST0C_4@138
  110.   signed int v110; // eax@138
  111.   int v111; // [sp+10h] [bp-58h]@23
  112.   bool v112; // [sp+14h] [bp-54h]@1
  113.   int v113; // [sp+18h] [bp-50h]@1
  114.   int v114; // [sp+20h] [bp-48h]@1
  115.   int v115; // [sp+24h] [bp-44h]@6
  116.   char v116; // [sp+34h] [bp-34h]@6
  117.   int v117; // [sp+44h] [bp-24h]@9
  118.   int v118; // [sp+48h] [bp-20h]@49
  119.   int v119; // [sp+4Ch] [bp-1Ch]@49
  120.   int v120; // [sp+50h] [bp-18h]@49
  121.   int v121; // [sp+54h] [bp-14h]@49
  122.   int v122; // [sp+58h] [bp-10h]@49
  123.   int v123; // [sp+64h] [bp-4h]@6
  124.  
  125.   v4 = this;
  126.   v5 = *(_DWORD *)(this + 36);
  127.   v6 = *(_BYTE *)(*(_DWORD *)(v5 + 2760) + 8468);
  128.   v7 = *(void **)(v5 + 2760);
  129.   LOBYTE(v114) = v6;
  130.   v3 = v6;
  131.   v8 = CNWSCombatRound__GetAttack(v7, v6);
  132.   v9 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  133.   v113 = *(_DWORD *)(v8 + 52);
  134.   v112 = *(_BYTE *)(CNWSCombatRound__GetAttack(v9, v3) + 80) == 3;
  135.   v10 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  136.   v114 = CNWSCombatRound__GetCurrentAttackWeapon(*(void **)(*(_DWORD *)(v4 + 36) + 2760), *(_BYTE *)(v10 + 48));
  137.   if ( a3 )
  138.   {
  139.     v11 = *(_BYTE *)(v4 + 1017);
  140.     if ( v11 <= 0 )
  141.       v12 = v11;
  142.     else
  143.       v12 = (signed __int64)((long double)v11 * 0.5);
  144.     if ( g_bEnableCombatDebugging )
  145.     {
  146.       v13 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  147.       CExoString__CExoString(&v116, (const char **)(v13 + 112));
  148.       v123 = 0;
  149.       CNWSpellArray__CNWSpellArray(&v115);
  150.       LOBYTE(v123) = 1;
  151.       if ( v112 )
  152.       {
  153.         v14 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  154.         v15 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  155.         CExoString__Format((int)&v115, " + %d (Offhand Strength Bonus) (Critical x%d)", v12 * v15, v14);
  156.       }
  157.       else
  158.       {
  159.         CExoString__Format((int)&v115, " + %d (Offhand Strength Bonus)", v12);
  160.       }
  161.       v17 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  162.       v18 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  163.       v19 = (const char **)v17;
  164.       LOBYTE(v123) = 2;
  165.       v20 = CNWSCombatRound__GetAttack(v18, v3);
  166.       CExoString__operator_(v20 + 112, v19);
  167.       LOBYTE(v123) = 1;
  168.       CExoString___CExoString((int)&v117);
  169.       LOBYTE(v123) = 0;
  170.       CExoString___CExoString((int)&v115);
  171.       v123 = -1;
  172.       v16 = (int)&v116;
  173. LABEL_45:
  174.       CExoString___CExoString(v16);
  175.       goto LABEL_46;
  176.     }
  177.     goto LABEL_46;
  178.   }
  179.   v22 = 0;
  180.   v21 = CNWSInventory__GetItemInSlot(*(void **)(*(_DWORD *)(v4 + 36) + 2924), 0x10u);
  181.   if ( v21
  182.     && (v22 = CNWBaseItemArray__GetBaseItem(*(_DWORD *)(g_pRules + 24), *(_DWORD *)(v21 + 12)),
  183.         v23 = *(_BYTE *)(v22 + 25),
  184.         v24 = *(_DWORD *)(*(_DWORD *)(v4 + 36) + 1236),
  185.         v115 = *(_DWORD *)(v4 + 36),
  186.         v23 - v24 == 1) )
  187.   {
  188.     v25 = v113;
  189.     if ( !v113 && *(_BYTE *)(v22 + 8) != 8 )
  190.     {
  191.       v26 = *(_BYTE *)(v4 + 1017);
  192.       if ( v26 <= 0 )
  193.         v27 = v26;
  194.       else
  195.         v27 = (signed __int64)((long double)v26 * 1.5);
  196.       if ( g_bEnableCombatDebugging )
  197.       {
  198.         v28 = CNWSCombatRound__GetAttack(*(void **)(v115 + 2760), v3);
  199.         CExoString__CExoString(&v116, (const char **)(v28 + 112));
  200.         v123 = 3;
  201.         CNWSpellArray__CNWSpellArray(&v115);
  202.         LOBYTE(v123) = 4;
  203.         if ( v112 )
  204.         {
  205.           v29 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, 0);
  206.           v30 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, 0);
  207.           CExoString__Format((int)&v115, " + %d (Two Handed Strength Bonus) (Critical x%d)", v27 * v30, v29);
  208.         }
  209.         else
  210.         {
  211.           CExoString__Format((int)&v115, " + %d (Two Handed Strength Bonus)", v27);
  212.         }
  213.         v31 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  214.         v32 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  215.         v33 = (const char **)v31;
  216.         LOBYTE(v123) = 5;
  217.         v34 = CNWSCombatRound__GetAttack(v32, v3);
  218.         CExoString__operator_(v34 + 112, v33);
  219.         LOBYTE(v123) = 4;
  220.         CExoString___CExoString((int)&v117);
  221.         LOBYTE(v123) = 3;
  222.         CExoString___CExoString((int)&v115);
  223.         v123 = -1;
  224.         v16 = (int)&v116;
  225.         goto LABEL_45;
  226.       }
  227. LABEL_46:
  228.       v46 = 0;
  229.       if ( v113 )
  230.       {
  231.         if ( CNWSCreatureStats__HasFeat(v4, 27) )
  232.         {
  233.           if ( a2 )
  234.           {
  235.             v47 = *(_DWORD *)(a2 + 120);
  236.             v48 = *(_DWORD *)(a2 + 124);
  237.             v119 = *(_DWORD *)(a2 + 128);
  238.             v49 = *(_DWORD *)(v4 + 36) + 120;
  239.             v117 = v47;
  240.             v50 = *(_DWORD *)v49;
  241.             v118 = v48;
  242.             v51 = *(_DWORD *)(v49 + 4);
  243.             v122 = *(_DWORD *)(v49 + 8);
  244.             v121 = v51;
  245.             v120 = v50;
  246.             UNDEF(v52);
  247.             if ( v53 | v54 )
  248.               v46 = 1;
  249.           }
  250.         }
  251.       }
  252.       if ( g_bEnableCombatDebugging )
  253.       {
  254.         if ( v46 )
  255.         {
  256.           v55 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  257.           CExoString__CExoString(&v116, (const char **)(v55 + 112));
  258.           v123 = 9;
  259.           CNWSpellArray__CNWSpellArray(&v115);
  260.           LOBYTE(v123) = 10;
  261.           if ( v112 )
  262.           {
  263.             v56 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  264.             v57 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  265.             CExoString__Format((int)&v115, " + %d (Point Blank Shot Damage Bonus) (Critical x%d)", v46 * v57, v56);
  266.           }
  267.           else
  268.           {
  269.             CExoString__Format((int)&v115, " + %d (Point Blank Shot Damage Bonus)", v46);
  270.           }
  271.           v58 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  272.           v59 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  273.           v60 = (const char **)v58;
  274.           LOBYTE(v123) = 11;
  275.           v61 = CNWSCombatRound__GetAttack(v59, v3);
  276.           CExoString__operator_(v61 + 112, v60);
  277.           LOBYTE(v123) = 10;
  278.           CExoString___CExoString((int)&v117);
  279.           LOBYTE(v123) = 9;
  280.           CExoString___CExoString((int)&v115);
  281.           v123 = -1;
  282.           CExoString___CExoString((int)&v116);
  283.         }
  284.       }
  285.       if ( v113 )
  286.       {
  287.         v62 = 0;
  288.         if ( v114 )
  289.         {
  290.           v63 = *(_DWORD *)(v114 + 12);
  291.           if ( v63 == 11 || v63 == 8 )
  292.           {
  293.             if ( CNWSCreatureStats__HasFeat(v4, 1059) )
  294.             {
  295.               v62 = 20;
  296.             }
  297.             else
  298.             {
  299.               if ( CNWSCreatureStats__HasFeat(v4, 1058) )
  300.               {
  301.                 v62 = 19;
  302.               }
  303.               else
  304.               {
  305.                 if ( CNWSCreatureStats__HasFeat(v4, 1057) )
  306.                 {
  307.                   v62 = 18;
  308.                 }
  309.                 else
  310.                 {
  311.                   if ( CNWSCreatureStats__HasFeat(v4, 1056) )
  312.                   {
  313.                     v62 = 17;
  314.                   }
  315.                   else
  316.                   {
  317.                     if ( CNWSCreatureStats__HasFeat(v4, 1055) )
  318.                     {
  319.                       v62 = 16;
  320.                     }
  321.                     else
  322.                     {
  323.                       if ( CNWSCreatureStats__HasFeat(v4, 1054) )
  324.                       {
  325.                         v62 = 15;
  326.                       }
  327.                       else
  328.                       {
  329.                         if ( CNWSCreatureStats__HasFeat(v4, 1053) )
  330.                         {
  331.                           v62 = 14;
  332.                         }
  333.                         else
  334.                         {
  335.                           if ( CNWSCreatureStats__HasFeat(v4, 1052) )
  336.                           {
  337.                             v62 = 13;
  338.                           }
  339.                           else
  340.                           {
  341.                             if ( CNWSCreatureStats__HasFeat(v4, 1051) )
  342.                             {
  343.                               v62 = 12;
  344.                             }
  345.                             else
  346.                             {
  347.                               if ( CNWSCreatureStats__HasFeat(v4, 1050) )
  348.                               {
  349.                                 v62 = 11;
  350.                               }
  351.                               else
  352.                               {
  353.                                 if ( CNWSCreatureStats__HasFeat(v4, 1049) )
  354.                                 {
  355.                                   v62 = 10;
  356.                                 }
  357.                                 else
  358.                                 {
  359.                                   if ( CNWSCreatureStats__HasFeat(v4, 1048) )
  360.                                   {
  361.                                     v62 = 9;
  362.                                   }
  363.                                   else
  364.                                   {
  365.                                     if ( CNWSCreatureStats__HasFeat(v4, 1047) )
  366.                                     {
  367.                                       v62 = 8;
  368.                                     }
  369.                                     else
  370.                                     {
  371.                                       if ( CNWSCreatureStats__HasFeat(v4, 1046) )
  372.                                       {
  373.                                         v62 = 7;
  374.                                       }
  375.                                       else
  376.                                       {
  377.                                         if ( CNWSCreatureStats__HasFeat(v4, 1045) )
  378.                                         {
  379.                                           v62 = 6;
  380.                                         }
  381.                                         else
  382.                                         {
  383.                                           if ( CNWSCreatureStats__HasFeat(v4, 449) )
  384.                                           {
  385.                                             v62 = 5;
  386.                                           }
  387.                                           else
  388.                                           {
  389.                                             if ( CNWSCreatureStats__HasFeat(v4, 448) )
  390.                                             {
  391.                                               v62 = 4;
  392.                                             }
  393.                                             else
  394.                                             {
  395.                                               if ( CNWSCreatureStats__HasFeat(v4, 447) )
  396.                                               {
  397.                                                 v62 = 3;
  398.                                               }
  399.                                               else
  400.                                               {
  401.                                                 if ( CNWSCreatureStats__HasFeat(v4, 446) )
  402.                                                 {
  403.                                                   v62 = 2;
  404.                                                 }
  405.                                                 else
  406.                                                 {
  407.                                                   if ( CNWSCreatureStats__HasFeat(v4, 445) )
  408.                                                     v62 = 1;
  409.                                                 }
  410.                                               }
  411.                                             }
  412.                                           }
  413.                                         }
  414.                                       }
  415.                                     }
  416.                                   }
  417.                                 }
  418.                               }
  419.                             }
  420.                           }
  421.                         }
  422.                       }
  423.                     }
  424.                   }
  425.                 }
  426.               }
  427.             }
  428.           }
  429.         }
  430.         if ( g_bEnableCombatDebugging )
  431.         {
  432.           if ( v62 )
  433.           {
  434.             v64 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  435.             CExoString__CExoString(&v116, (const char **)(v64 + 112));
  436.             v123 = 12;
  437.             CNWSpellArray__CNWSpellArray(&v115);
  438.             LOBYTE(v123) = 13;
  439.             if ( v112 )
  440.             {
  441.               v65 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  442.               v66 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  443.               CExoString__Format((int)&v115, " + %d (Enchant Arrow Damage Bonus) (Critical x%d)", v62 * v66, v65);
  444.             }
  445.             else
  446.             {
  447.               CExoString__Format((int)&v115, " + %d (Enchant Arrow Damage Bonus)", v62);
  448.             }
  449.             v67 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  450.             v68 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  451.             v69 = (const char **)v67;
  452.             LOBYTE(v123) = 14;
  453.             v70 = CNWSCombatRound__GetAttack(v68, v3);
  454.             CExoString__operator_(v70 + 112, v69);
  455.             LOBYTE(v123) = 13;
  456.             CExoString___CExoString((int)&v117);
  457.             LOBYTE(v123) = 12;
  458.             CExoString___CExoString((int)&v115);
  459.             v123 = -1;
  460.             CExoString___CExoString((int)&v116);
  461.           }
  462.         }
  463.       }
  464.       v72 = 0;
  465.       v71 = 0;
  466.       if ( a2 )
  467.       {
  468.         v72 = CNWSCreatureStats__GetFavoredEnemyBonus(v4, a2);
  469.         if ( v72 > 0 )
  470.         {
  471.           if ( CNWSCreatureStats__HasFeat(v4, 855) )
  472.             v71 = (unsigned __int16)CNWRules__RollDice(2u, 6);
  473.         }
  474.       }
  475.       if ( !g_bEnableCombatDebugging || !v72 && !v71 )
  476.       {
  477. LABEL_125:
  478.         v98 = *(_DWORD *)(v4 + 36);
  479.         v99 = 0;
  480.         if ( *(_BYTE *)(v98 + 1195) == 2 )
  481.           v99 = 5;
  482.         if ( *(_BYTE *)(v98 + 1195) == 3 )
  483.           v99 = 10;
  484.         if ( g_bEnableCombatDebugging )
  485.         {
  486.           if ( v99 )
  487.           {
  488.             v100 = CNWSCombatRound__GetAttack(*(void **)(v98 + 2760), v3);
  489.             CExoString__CExoString(&v116, (const char **)(v100 + 112));
  490.             v123 = 21;
  491.             CNWSpellArray__CNWSpellArray(&v115);
  492.             LOBYTE(v123) = 22;
  493.             if ( v112 )
  494.             {
  495.               v101 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  496.               v102 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  497.               CExoString__Format(
  498.                 (int)&v115,
  499.                 " + %d (Power/Improved Power Attack Damage Bonus) (Critical x%d)",
  500.                 v99 * v102,
  501.                 v101);
  502.             }
  503.             else
  504.             {
  505.               CExoString__Format((int)&v115, " + %d (Power/Improved Power Attack Damage Bonus)", v99);
  506.             }
  507.             v103 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  508.             v104 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  509.             v105 = (const char **)v103;
  510.             LOBYTE(v123) = 23;
  511.             v106 = CNWSCombatRound__GetAttack(v104, v3);
  512.             CExoString__operator_(v106 + 112, v105);
  513.             LOBYTE(v123) = 22;
  514.             CExoString___CExoString((int)&v117);
  515.             LOBYTE(v123) = 21;
  516.             CExoString___CExoString((int)&v115);
  517.             v123 = -1;
  518.             CExoString___CExoString((int)&v116);
  519.           }
  520.         }
  521.         v107 = 0;
  522.         if ( *(_BYTE *)(*(_DWORD *)(v4 + 36) + 1195) == 10 )
  523.           v107 = (unsigned __int16)CNWRules__RollDice(1u, 4);
  524.         JUMPOUT(g_bEnableCombatDebugging, 0, *(unsigned int *)loc_47419F);
  525.         JUMPOUT(v107, 0, *(unsigned int *)loc_47419F);
  526.         v108 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  527.         CExoString__CExoString(&v116, (const char **)(v108 + 112));
  528.         v123 = 24;
  529.         CNWSpellArray__CNWSpellArray(&v115);
  530.         LOBYTE(v123) = 25;
  531.         if ( v112 )
  532.         {
  533.           v109 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  534.           v110 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  535.           CExoString__Format((int)&v115, " + %d (Dirty Fighting Damage Bonus) (Critical x%d)", v107 * v110, v109);
  536.         }
  537.         else
  538.         {
  539.           CExoString__Format((int)&v115, " + %d (Dirty Fighting Damage Bonus)", v107);
  540.         }
  541.         CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  542.         JUMPOUT(*(int *)sub_474154);
  543.       }
  544.       v73 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  545.       CExoString__CExoString(&v113, (const char **)(v73 + 112));
  546.       v123 = 15;
  547.       CNWSpellArray__CNWSpellArray(&v115);
  548.       LOBYTE(v123) = 16;
  549.       if ( v112 )
  550.       {
  551.         if ( v72 )
  552.         {
  553.           v74 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  554.           v75 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  555.           CExoString__Format((int)&v115, " + %d (Favored Enemy Bonus Damage) (Critical x%d)", v72 * v75, v74);
  556.           v76 = CExoString__operator_(&v113, (int)&v117, (const char **)&v115);
  557.           v77 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  558.           v78 = (const char **)v76;
  559.           LOBYTE(v123) = 17;
  560.           v79 = CNWSCombatRound__GetAttack(v77, v3);
  561.           CExoString__operator_(v79 + 112, v78);
  562.           LOBYTE(v123) = 16;
  563.           CExoString___CExoString((int)&v117);
  564.           v80 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  565.           CExoString__operator_((int)&v113, (const char **)(v80 + 112));
  566.         }
  567.         if ( !v71 )
  568.           goto LABEL_124;
  569.         v82 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  570.         v83 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, a3);
  571.         CExoString__Format((int)&v115, " + %d (Bane Of Enemies Bonus Damage) (Critical x%d)", v71 * v83, v82);
  572.         v84 = CExoString__operator_(&v113, (int)&v117, (const char **)&v115);
  573.         v85 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  574.         v86 = (const char **)v84;
  575.         LOBYTE(v123) = 18;
  576.         v87 = CNWSCombatRound__GetAttack(v85, v3);
  577.         CExoString__operator_(v87 + 112, v86);
  578.         LOBYTE(v123) = 16;
  579.         v81 = (int)&v117;
  580.       }
  581.       else
  582.       {
  583.         if ( v72 )
  584.         {
  585.           CExoString__Format((int)&v115, " + %d (Favored Enemy Bonus Damage)", v72);
  586.           v88 = CExoString__operator_(&v113, (int)&v117, (const char **)&v115);
  587.           v89 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  588.           v90 = (const char **)v88;
  589.           LOBYTE(v123) = 19;
  590.           v91 = CNWSCombatRound__GetAttack(v89, v3);
  591.           CExoString__operator_(v91 + 112, v90);
  592.           LOBYTE(v123) = 16;
  593.           CExoString___CExoString((int)&v117);
  594.           v92 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  595.           CExoString__operator_((int)&v113, (const char **)(v92 + 112));
  596.         }
  597.         if ( !v71 )
  598.           goto LABEL_124;
  599.         CExoString__Format((int)&v115, " + %d (Bane Of Enemies Bonus Damage)", v71);
  600.         v93 = CExoString__operator_(&v113, (int)&v117, (const char **)&v115);
  601.         v94 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  602.         v95 = (const char **)v93;
  603.         LOBYTE(v123) = 20;
  604.         v96 = CNWSCombatRound__GetAttack(v94, v3);
  605.         CExoString__operator_(v96 + 112, v95);
  606.         LOBYTE(v123) = 16;
  607.         v81 = (int)&v117;
  608.       }
  609.       CExoString___CExoString(v81);
  610.       v97 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  611.       CExoString__operator_((int)&v113, (const char **)(v97 + 112));
  612. LABEL_124:
  613.       LOBYTE(v123) = 15;
  614.       CExoString___CExoString((int)&v115);
  615.       v123 = -1;
  616.       CExoString___CExoString((int)&v113);
  617.       goto LABEL_125;
  618.     }
  619.   }
  620.   else
  621.   {
  622.     v25 = v113;
  623.   }
  624.   v111 = 0;
  625.   if ( v21 )
  626.   {
  627.     if ( *(_BYTE *)(v22 + 8) == 11 && *(_DWORD *)(v21 + 12) != 59 || !v25 )
  628.     {
  629.       v111 = *(_BYTE *)(v4 + 1017);
  630. LABEL_40:
  631.       if ( !g_bEnableCombatDebugging )
  632.         goto LABEL_46;
  633.       v39 = CNWSCombatRound__GetAttack(*(void **)(*(_DWORD *)(v4 + 36) + 2760), v3);
  634.       CExoString__CExoString(&v116, (const char **)(v39 + 112));
  635.       v123 = 6;
  636.       CNWSpellArray__CNWSpellArray(&v115);
  637.       LOBYTE(v123) = 7;
  638.       if ( v112 )
  639.       {
  640.         v40 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, 0);
  641.         v41 = CNWSCreatureStats__GetCriticalHitMultiplier((void *)v4, 0);
  642.         CExoString__Format((int)&v115, " + %d (Strength Bonus) (Critical x%d)", v111 * v41, v40);
  643.       }
  644.       else
  645.       {
  646.         CExoString__Format((int)&v115, " + %d (Strength Bonus)", v111);
  647.       }
  648.       v42 = CExoString__operator_(&v116, (int)&v117, (const char **)&v115);
  649.       v43 = *(void **)(*(_DWORD *)(v4 + 36) + 2760);
  650.       v44 = (const char **)v42;
  651.       LOBYTE(v123) = 8;
  652.       v45 = CNWSCombatRound__GetAttack(v43, v3);
  653.       CExoString__operator_(v45 + 112, v44);
  654.       LOBYTE(v123) = 7;
  655.       CExoString___CExoString((int)&v117);
  656.       LOBYTE(v123) = 6;
  657.       CExoString___CExoString((int)&v115);
  658.       v123 = -1;
  659.       v16 = (int)&v116;
  660.       goto LABEL_45;
  661.     }
  662.     if ( v25 != 1 )
  663.       goto LABEL_40;
  664.     v36 = *(_DWORD *)(v21 + 12);
  665.     if ( v36 != 7 )
  666.     {
  667.       if ( v36 != 6 )
  668.       {
  669.         if ( v36 != 59 )
  670.         {
  671.           v37 = *(_BYTE *)(v4 + 1017);
  672.           if ( v37 < 0 )
  673.             v111 = v37;
  674.         }
  675.       }
  676.     }
  677.     if ( !CNWSItem__GetPropertyByType(v21, (int)&v115, 45, 0) )
  678.       goto LABEL_40;
  679.     v38 = *(_WORD *)(v115 + 6);
  680.     if ( *(_BYTE *)(v4 + 1017) < (signed int)*(_WORD *)(v115 + 6) )
  681.       v38 = *(_BYTE *)(v4 + 1017);
  682.     v35 = v38;
  683.   }
  684.   else
  685.   {
  686.     v35 = *(_BYTE *)(v4 + 1017);
  687.   }
  688.   v111 = v35;
  689.   goto LABEL_40;
  690. }
  691.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement