diff Player.cpp @ 1599:bb2378f58767

Player::GetItemsBonus removed majority of labels
author Grumpy7
date Tue, 10 Sep 2013 08:31:04 +0200
parents 11bb463837b1
children 5ac59bcb68e9
line wrap: on
line diff
--- a/Player.cpp	Tue Sep 10 04:16:54 2013 +0200
+++ b/Player.cpp	Tue Sep 10 08:31:04 2013 +0200
@@ -3108,7 +3108,7 @@
       inv_indx = pEquipment.pIndices[i]  - 1;
       if (enchantmentId == 17)
       {
-        if ((pInventoryItemList[inv_indx].uSpecEnchantmentType==17) || (pInventoryItemList[inv_indx].uItemID == 533)) //Elven Chainmail+Increases rate of Recovery
+        if ((pInventoryItemList[inv_indx].uSpecEnchantmentType == 17) || (pInventoryItemList[inv_indx].uItemID == 533)) //Elven Chainmail+Increases rate of Recovery
           return 50;
       }
       if (enchantmentId == 24) 
@@ -3124,10 +3124,8 @@
 //----- (0048EAAE) --------------------------------------------------------
 int Player::GetItemsBonus( enum CHARACTER_ATTRIBUTE_TYPE attr, bool getOnlyMainHandDmg /*= false*/ )
 {
-  CHARACTER_ATTRIBUTE_TYPE v3; // esi@1
  // signed int v4; // eax@1
   int v5; // edi@1
-  Player *v6; // ebx@1
   Player *v8; // ecx@48
   int v9; // eax@49
   int v10; // edx@49
@@ -3188,61 +3186,57 @@
   unsigned int v65; // [sp+24h] [bp+8h]@95
   bool no_skills;
 
-  v3 = attr;
   v5 = 0;
-  v6 = this;
   v62 = 0;
   v61 = 0;
 
   
   no_skills=false;
   switch (attr)
-      {
-  case  CHARACTER_ATTRIBUTE_SKILL_ALCHEMY:      v58 = PLAYER_SKILL_ALCHEMY;      break;
-  case  CHARACTER_ATTRIBUTE_SKILL_STEALING:     v58 = PLAYER_SKILL_STEALING;     break;
-  case  CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM:  v58 = PLAYER_SKILL_TRAP_DISARM;  break;
-  case  CHARACTER_ATTRIBUTE_SKILL_ITEM_ID:      v58 = PLAYER_SKILL_ITEM_ID;      break;
-  case  CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID:   v58 = PLAYER_SKILL_MONSTER_ID;   break;
-  case  CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER:   v58 = PLAYER_SKILL_ARMSMASTER;   break;
-  case  CHARACTER_ATTRIBUTE_SKILL_DODGE:        v58 = PLAYER_SKILL_DODGE;        break;
-  case  CHARACTER_ATTRIBUTE_SKILL_UNARMED:      v58 = PLAYER_SKILL_UNARMED;      break;
-  case  CHARACTER_ATTRIBUTE_SKILL_FIRE:         v58 = PLAYER_SKILL_FIRE;         break;
-  case  CHARACTER_ATTRIBUTE_SKILL_AIR:          v58 = PLAYER_SKILL_AIR;          break;
-  case  CHARACTER_ATTRIBUTE_SKILL_WATER:        v58 = PLAYER_SKILL_WATER;        break;
-  case  CHARACTER_ATTRIBUTE_SKILL_EARTH:        v58 = PLAYER_SKILL_EARTH;        break;
-  case  CHARACTER_ATTRIBUTE_SKILL_SPIRIT:       v58 = PLAYER_SKILL_SPIRIT;       break;
-  case  CHARACTER_ATTRIBUTE_SKILL_MIND:         v58 = PLAYER_SKILL_MIND;         break;
-  case  CHARACTER_ATTRIBUTE_SKILL_BODY:         v58 = PLAYER_SKILL_BODY;         break;
-  case  CHARACTER_ATTRIBUTE_SKILL_LIGHT:        v58 = PLAYER_SKILL_LIGHT;        break;
-  case  CHARACTER_ATTRIBUTE_SKILL_DARK:         v58 = PLAYER_SKILL_DARK;         break;
-  case  CHARACTER_ATTRIBUTE_SKILL_MEDITATION:   v58 = PLAYER_SKILL_MEDITATION;   break;
-  case  CHARACTER_ATTRIBUTE_SKILL_BOW:          v58 = PLAYER_SKILL_BOW;          break;
-  case  CHARACTER_ATTRIBUTE_SKILL_SHIELD:       v58 = PLAYER_SKILL_SHIELD;       break;
-  case  CHARACTER_ATTRIBUTE_SKILL_LEARNING:     v58 = PLAYER_SKILL_LEARNING;     break;
-  default:
+  {
+    case  CHARACTER_ATTRIBUTE_SKILL_ALCHEMY:      v58 = PLAYER_SKILL_ALCHEMY;      break;
+    case  CHARACTER_ATTRIBUTE_SKILL_STEALING:     v58 = PLAYER_SKILL_STEALING;     break;
+    case  CHARACTER_ATTRIBUTE_SKILL_TRAP_DISARM:  v58 = PLAYER_SKILL_TRAP_DISARM;  break;
+    case  CHARACTER_ATTRIBUTE_SKILL_ITEM_ID:      v58 = PLAYER_SKILL_ITEM_ID;      break;
+    case  CHARACTER_ATTRIBUTE_SKILL_MONSTER_ID:   v58 = PLAYER_SKILL_MONSTER_ID;   break;
+    case  CHARACTER_ATTRIBUTE_SKILL_ARMSMASTER:   v58 = PLAYER_SKILL_ARMSMASTER;   break;
+    case  CHARACTER_ATTRIBUTE_SKILL_DODGE:        v58 = PLAYER_SKILL_DODGE;        break;
+    case  CHARACTER_ATTRIBUTE_SKILL_UNARMED:      v58 = PLAYER_SKILL_UNARMED;      break;
+    case  CHARACTER_ATTRIBUTE_SKILL_FIRE:         v58 = PLAYER_SKILL_FIRE;         break;
+    case  CHARACTER_ATTRIBUTE_SKILL_AIR:          v58 = PLAYER_SKILL_AIR;          break;
+    case  CHARACTER_ATTRIBUTE_SKILL_WATER:        v58 = PLAYER_SKILL_WATER;        break;
+    case  CHARACTER_ATTRIBUTE_SKILL_EARTH:        v58 = PLAYER_SKILL_EARTH;        break;
+    case  CHARACTER_ATTRIBUTE_SKILL_SPIRIT:       v58 = PLAYER_SKILL_SPIRIT;       break;
+    case  CHARACTER_ATTRIBUTE_SKILL_MIND:         v58 = PLAYER_SKILL_MIND;         break;
+    case  CHARACTER_ATTRIBUTE_SKILL_BODY:         v58 = PLAYER_SKILL_BODY;         break;
+    case  CHARACTER_ATTRIBUTE_SKILL_LIGHT:        v58 = PLAYER_SKILL_LIGHT;        break;
+    case  CHARACTER_ATTRIBUTE_SKILL_DARK:         v58 = PLAYER_SKILL_DARK;         break;
+    case  CHARACTER_ATTRIBUTE_SKILL_MEDITATION:   v58 = PLAYER_SKILL_MEDITATION;   break;
+    case  CHARACTER_ATTRIBUTE_SKILL_BOW:          v58 = PLAYER_SKILL_BOW;          break;
+    case  CHARACTER_ATTRIBUTE_SKILL_SHIELD:       v58 = PLAYER_SKILL_SHIELD;       break;
+    case  CHARACTER_ATTRIBUTE_SKILL_LEARNING:     v58 = PLAYER_SKILL_LEARNING;     break;
+    default:
       no_skills=true;
-      }
+  }
   if (!no_skills)
-      {
-      if ( !this->pActiveSkills[v58] )
-        return 0;
-      }
+  {
+    if ( !this->pActiveSkills[v58] )
+      return 0;
+  }
 
   if ( (signed int)attr > 28 )
   {
-    if ( (signed int)attr < 29 )
-      return v5 + v62 + v61;
-    if ( (signed int)attr <= CHARACTER_ATTRIBUTE_RANGED_DMG_BONUS )
+    if ( attr == CHARACTER_ATTRIBUTE_RANGED_DMG_BONUS || attr == CHARACTER_ATTRIBUTE_RANGED_ATTACK)
     {
       if ( HasItemEquipped(EQUIP_BOW) )
-        v5 = pItemsTable->pItems[v6->pOwnItems[v6->pEquipment.uBow-1].uItemID].uDamageMod;
+        v5 = pItemsTable->pItems[this->pOwnItems[this->pEquipment.uBow-1].uItemID].uDamageMod;
       return v5 + v62 + v61;
     }
     if ( attr == CHARACTER_ATTRIBUTE_RANGED_DMG_MIN )
     {
       if ( !HasItemEquipped(EQUIP_BOW) )
         return v5 + v62 + v61;
-      v57 = v6->pOwnItems[v6->pEquipment.uBow-1].uItemID;
+      v57 = this->pOwnItems[this->pEquipment.uBow-1].uItemID;
       v5 = pItemsTable->pItems[v57].uDamageMod;
       v56 = pItemsTable->pItems[v57].uDamageDice;
       v5 += v56;
@@ -3252,11 +3246,9 @@
     {
       if ( !HasItemEquipped(EQUIP_BOW) )
         return v5 + v62 + v61;
-      v20 = v6->pOwnItems[v6->pEquipment.uBow-1].uItemID;
+      v20 = this->pOwnItems[this->pEquipment.uBow-1].uItemID;
       v5 = pItemsTable->pItems[v20].uDamageDice * pItemsTable->pItems[v20].uDamageRoll;
-LABEL_365:
       v56 = pItemsTable->pItems[v20].uDamageMod;
-LABEL_366:
       v5 += v56;
       return v5 + v62 + v61;
     }
@@ -3268,20 +3260,17 @@
     {
       if ( !HasItemEquipped((ITEM_EQUIP_TYPE)v65) )
         goto LABEL_361;
-      v31 = *(&v6->pEquipment.uShield + v65) - 1;
-      if ( v3 == 9 )
+      v31 = this->pEquipment.pIndices[v65] - 1;
+      if ( attr == CHARACTER_ATTRIBUTE_AC_BONUS )
       {
         v32 = GetEquippedItemEquipType((ITEM_EQUIP_TYPE)v65);
-        if ( v32 >= 3 )
+        if ( v32 >= 3 && v32 <= 11 )
         {
-          if ( v32 <= 11 )
-          {
-            v33 = v6->pInventoryItemList[v31].uItemID;
-            v5 += pItemsTable->pItems[v33].uDamageDice + pItemsTable->pItems[v33].uDamageMod;
-          }
+          v33 = this->pInventoryItemList[v31].uItemID;
+          v5 += pItemsTable->pItems[v33].uDamageDice + pItemsTable->pItems[v33].uDamageMod;
         }
       }
-      v63 = (int)((char *)v6 + 36 * v31);
+      v63 = (int)((char *)this + 36 * v31);
       attra = (ItemGen *)(v63 + 532);
       if ( pItemsTable->IsMaterialNonCommon((ItemGen *)(v63 + 532)) == 1
         && !pItemsTable->IsMaterialSpecial(attra) )
@@ -3289,351 +3278,480 @@
         v34 = attra->uItemID;
         switch ( attra->uItemID )
         {
-          case 0x1F4u:
-            v35 = v3 == 5;
-            goto LABEL_105;
-          case 0x1F5u:
-            v36 = v3 == 0;
-            goto LABEL_108;
-          case 0x1F6u:
-            if ( v3 == 21 )
+          case ITEM_ARTIFACT_PUCK:
+            v35 = attr == 5;
+            if ( v35 )
+              v5 += 50;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_IRON_FEATHER:
+            v36 = attr == 0;
+            if ( v36 )
+              v5 += 40;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_WALLACE:
+            if ( attr == 21 )
               v61 += 10;
-            v36 = v3 == 2;
-            goto LABEL_108;
-          case 0x1F7u:
-            if ( v3 == 17 )
-              v61 += 5;
-            if ( v3 == 18 )
+            v36 = attr == 2;
+            if ( v36 )
+              v5 += 40;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_CORSAIR:
+            if ( attr == 17 )
               v61 += 5;
-            v36 = v3 == 6;
-            goto LABEL_108;
-          case 0x1F8u:
-            goto LABEL_118;
-          case 0x1F9u:
-            v40 = v3 == 3;
-            goto LABEL_123;
-          case 0x1FAu:
-            v35 = v3 == 10;
-            goto LABEL_105;
-          case 0x1FEu:
-            v35 = v3 == 4;
-            goto LABEL_105;
-          case 0x1FFu:
-            if ( v3 == 23 )
-              v61 += 10;
-            if ( v3 == 22 )
-              v61 += 10;
-            goto LABEL_361;
-          case 0x200u:
-            if ( v3 == 36 )
-            {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[14]);
-              v62 = ((unsigned int)v34 >> 1) & 0x1F;
-            }
-            v36 = v3 == 5;
-LABEL_108:
+            if ( attr == 18 )
+              v61 += 5;
+            v36 = attr == 6;
             if ( v36 )
               v5 += 40;
             goto LABEL_361;
-          case 0x201u:
-            if ( v3 == 39 )
+          case ITEM_ARTICACT_GOVERNONS_ARMOR:            
+            if (attr <= 6)
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[17]);
+              v5 += 10;
+              goto LABEL_361;
+            }
+          case ITEM_ARTIFACT_YORUBA:
+            v40 = attr == 3;
+            if ( v40 )
+              v5 += 25;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_SPLITTER:
+            v35 = attr == 10;
+            if ( v35 )
+              v5 += 50;
+            goto LABEL_361;
+          case ITEM_ARTEFACT_ULLYSES:
+            v35 = attr == 4;
+            if ( v35 )
+              v5 += 50;
+            goto LABEL_361;
+          case ITEM_ARTEFACT_HANDS_OF_THE_MASTER:
+            if ( attr == 23 )
+              v61 += 10;
+            if ( attr == 22 )
+              v61 += 10;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_LEAGUE_BOOTS:
+            if ( attr == 36 )
+            {
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[14]);
+              v62 = ((unsigned int)v34 >> 1) & 0x1F;
+            }
+            v36 = attr == 5;
+            if ( v36 )
+              v5 += 40;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_RULERS_RING:
+            if ( attr == 39 )
+            {
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[17]);
               v34 = ((unsigned int)v34 >> 1) & 0x1F;
               v62 = v34;
             }
-            goto LABEL_136;
-          case 0x202u:
-            if ( !v3 )
-              v5 += 150;
-            if ( v3 == 1 )
-              v5 -= 40;
-            if ( v3 == 2 )
-              v5 -= 40;
-            goto LABEL_145;
-          case 0x203u:
-            if ( v3 == 42 )
+            if ( attr == 42 )
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[20]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[20]);
               v62 = ((unsigned int)v34 >> 1) & 0x1F;
             }
-            if ( v3 == 43 )
+            goto LABEL_361;
+          case ITEM_RELIC_MASH:
+            if ( !attr )
+              v5 += 150;
+            if ( attr == 1 )
+              v5 -= 40;
+            if ( attr == 2 )
+              v5 -= 40;
+            v41 = attr == 5;
+            if ( v41 )
+              v5 -= 40;
+            goto LABEL_361;
+          case ITEM_RELIC_ETHRICS_STAFF:
+            if ( attr == 42 )
+            {
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[20]);
+              v62 = ((unsigned int)v34 >> 1) & 0x1F;
+            }
+            if ( attr == 43 )
               v61 += 15;
             goto LABEL_361;
-          case 0x204u:
-            if ( v3 == 17 )
+          case ITEM_RELIC_HARECS_LEATHER:
+            if ( attr == 17 )
               v61 += 5;
-            if ( v3 == 18 )
+            if ( attr == 18 )
               v61 += 5;
-            if ( v3 == 6 )
+            if ( attr == 6 )
               v5 += 50;
-            if ( v3 == 11 || v3 == 10 || v3 == 12 || v3 == 13 || v3 == 33 || v3 == 14 )
-              goto LABEL_166;
-            v42 = v3 == 15;
-            goto LABEL_165;
-          case 0x205u:
-            if ( v3 == 18 )
+            if ( attr == 11 || attr == 10 || attr == 12 || attr == 13 || attr == 33 || attr == 14 )
+            {
+                v5 -= 10;
+              goto LABEL_361;
+            }
+            v42 = attr == 15;
+            if ( v42 )
+              v5 -= 10;
+            goto LABEL_361;
+          case ITEM_RELIC_OLD_NICK:
+            if ( attr == 18 )
               v61 += 5;
             goto LABEL_361;
-          case 0x206u:
-            if ( !v3 )
+          case ITEM_RELIC_AMUCK:
+            if ( !attr )
               v5 += 100;
-            if ( v3 == 3 )
+            if ( attr == 3 )
               v5 += 100;
-            v43 = v3 == 9;
-            goto LABEL_174;
-          case 0x207u:
-            if ( v3 == 45 )
+            v43 = attr == 9;
+            if ( v43 )
+              v5 -= 15;
+            goto LABEL_361;
+          case ITEM_RELIC_GLORY_SHIELD:
+            if ( attr == 45 )
               v61 += 5;
-            if ( v3 == 15 )
+            if ( attr == 15 )
               v5 -= 10;
-            v42 = v3 == 14;
-LABEL_165:
+            v42 = attr == 14;
             if ( v42 )
-LABEL_166:
               v5 -= 10;
             goto LABEL_361;
-          case 0x208u:
-            v35 = v3 == 3;
-            goto LABEL_105;
-          case 0x209u:
-            if ( v3 == 2 )
+          case ITEM_RELIC_KELEBRIM:
+            v35 = attr == 3;
+            if ( v35 )
+              v5 += 50;
+            goto LABEL_361;
+          case ITEM_RELIC_TALEDONS_HELM:
+            if ( attr == 2 )
               v5 += 15;
-            if ( !v3 )
+            if ( !attr )
               v5 += 15;
-            v41 = v3 == 6;
-            goto LABEL_146;
-          case 0x20Au:
-            if ( v3 == 46 )
+            v41 = attr == 6;
+            if ( v41 )
+              v5 -= 40;
+            goto LABEL_361;
+          case ITEM_RELIC_SCHOLARS_CAP:
+            if ( attr == 46 )
               v61 += 15;
-            v44 = v3 == 3;
-            goto LABEL_190;
-          case 0x20Bu:
-            if ( v3 == 34 )
+            v44 = attr == 3;
+            if ( v44 )
+              v5 -= 50;
+            goto LABEL_361;
+          case ITEM_RELIC_PHYNAXIAN_CROWN:
+            if ( attr == 34 )
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[12]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[12]);
               v62 = ((unsigned int)v34 >> 1) & 0x1F;
             }
-            if ( v3 == 12 )
+            if ( attr == 12 )
               v5 += 50;
-            if ( v3 == 2 )
+            if ( attr == 2 )
               v5 += 30;
-            v45 = v3 == 9;
-            goto LABEL_199;
-          case 0x20Cu:
-            if ( !v3 )
+            v45 = attr == 9;
+            if ( v45 )
+              v5 -= 20;
+            goto LABEL_361;
+          case ITEM_RILIC_TITANS_BELT:
+            if ( !attr )
               v5 += 75;
-            goto LABEL_145;
-          case 0x20Du:
-            if ( v3 == 5 )
-              v5 += 50;
-            if ( v3 == 6 )
+            v41 = attr == 5;
+            if ( v41 )
+              v5 -= 40;
+            goto LABEL_361;
+          case ITEM_RELIC_TWILIGHT:
+            if ( attr == CHARACTER_ATTRIBUTE_SPEED )
               v5 += 50;
-            if ( v3 == 11 || v3 == 10 || v3 == 12 || v3 == 13 || v3 == 33 || v3 == 14 )
-              goto LABEL_374;
-            v43 = v3 == 15;
-LABEL_174:
+            if ( attr == CHARACTER_ATTRIBUTE_LUCK )
+              v5 += 50;
+            if ( attr == CHARACTER_ATTRIBUTE_RESIST_AIR || attr == CHARACTER_ATTRIBUTE_RESIST_FIRE || attr == CHARACTER_ATTRIBUTE_RESIST_WATER || attr == CHARACTER_ATTRIBUTE_RESIST_EARTH || attr == CHARACTER_ATTRIBUTE_RESIST_SPIRIT || attr == CHARACTER_ATTRIBUTE_RESIST_MIND )
+            {
+              v5 -= 15;
+              goto LABEL_361;
+            }
+            v43 = attr == 15;
             if ( v43 )
-LABEL_374:
               v5 -= 15;
             goto LABEL_361;
-          case 0x20Eu:
-            if ( v3 == 4 )
+          case ITEM_RELIC_ANIA_SELVING:
+            if ( attr == CHARACTER_ATTRIBUTE_ACCURACY )
               v5 += 150;
-            if ( v3 == 44 )
+            if ( attr == CHARACTER_ATTRIBUTE_SKILL_BOW )
               v61 += 5;
-            if ( v3 == 9 )
+            if ( attr == CHARACTER_ATTRIBUTE_AC_BONUS )
               v5 -= 25;
             goto LABEL_361;
-          case 0x20Fu:
-            if ( v3 == 39 )
+          case ITEM_RELIC_JUSTICE:
+            if ( attr == 39 )
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[17]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[17]);
               v34 = ((unsigned int)v34 >> 1) & 0x1F;
               v62 = v34;
             }
-            if ( v3 == 40 )
+            if ( attr == 40 )
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[18]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[18]);
               v62 = ((unsigned int)v34 >> 1) & 0x1F;
             }
-LABEL_145:
-            v41 = v3 == 5;
-LABEL_146:
+            v41 = attr == 5;
             if ( v41 )
               v5 -= 40;
             goto LABEL_361;
-          case 0x210u:
-            if ( v3 == 38 )
+          case ITEM_RELIC_MEKORIGS_HAMMER:
+            if ( attr == 38 )
             {
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[16]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[16]);
               v62 = ((unsigned int)v34 >> 1) & 0x1F;
             }
-            if ( !v3 )
+            if ( !attr )
               v5 += 75;
-            v44 = v3 == 11;
-LABEL_190:
+            v44 = attr == 11;
             if ( v44 )
               v5 -= 50;
             goto LABEL_361;
-          case 0x211u:
-            if ( v3 == 5 )
+          case ITEM_ARTIFACT_HERMES_SANDALS:
+            if ( attr == 5 )
               v5 += 100;
-            if ( v3 == 4 )
+            if ( attr == 4 )
               v5 += 50;
-            v35 = v3 == 11;
-LABEL_105:
+            v35 = attr == 11;
             if ( v35 )
               v5 += 50;
             goto LABEL_361;
-          case 0x212u:
-            if ( v3 == 1 )
+          case ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP:
+            if ( attr == 1 )
               v5 -= 20;
-            v45 = v3 == 2;
-LABEL_199:
+            v45 = attr == 2;
             if ( v45 )
               v5 -= 20;
             goto LABEL_361;
-          case 0x214u:
-            if ( v3 == 1 )
+          case ITEM_ARTIFACT_MINDS_EYE:
+            if ( attr == 1 )
+              v5 += 15;
+            v46 = attr == 2;
+            if ( v46 )
               v5 += 15;
-            v46 = v3 == 2;
-            goto LABEL_240;
-          case 0x215u:
-            if ( v3 == 5 )
+            goto LABEL_361;
+          case ITEM_ELVEN_CHAINMAIL:
+            if ( attr == 5 )
+              v5 += 15;
+            v46 = attr == 4;
+            if ( v46 )
+              v5 += 15;
+            goto LABEL_361;
+          case ITEM_FORGE_GAUNTLETS:
+            if ( attr == 10 )
+              v5 += 30;
+            if ( !attr )
               v5 += 15;
-            v46 = v3 == 4;
-            goto LABEL_240;
-          case 0x216u:
-            if ( v3 == 10 )
-              v5 += 30;
-            if ( !v3 )
+            v46 = attr == 3;
+            if ( v46 )
+              v5 += 15;
+            goto LABEL_361;
+          case ITEM_ARTIFACT_HEROS_BELT:
+            if ( attr == 21 )
+              v61 += 5;
+            if ( !attr )
               v5 += 15;
-            goto LABEL_315;
-          case 0x217u:
-            if ( v3 == 21 )
-              v61 += 5;
-            if ( !v3 )
-              v5 += 15;
-            goto LABEL_253;
-          case 0x218u:
-            goto LABEL_253;
+            if (attr >= 10 && attr <= 15)
+            {
+              v5 += 10;
+            }
+            goto LABEL_361;
+          case ITEM_ARTIFACT_LADYS_ESCORT:
+            if (attr >= 10 && attr <= 15)
+            {
+              v5 += 10;
+              goto LABEL_361;
+            }
           default:
             goto LABEL_361;
         }
         goto LABEL_361;
       }
-      if ( *(int *)(v63 + 536) == v3 + 1 )
+      if ( this->pOwnItems[v65].uEnchantmentType == attr + 1 )
       {
-        if ( (signed int)v3 >= 0 )
+        if ( attr >= CHARACTER_ATTRIBUTE_STRENGTH )
         {
-          if ( (signed int)v3 <= 15 )
+          if ( attr <= CHARACTER_ATTRIBUTE_RESIST_BODY )
           {
-            v5 += *((int *)v6->pConditions + 9 * v31 + 135);
+            v5 += this->pOwnItems[v65].m_enchantmentStrength;
           }
           else
           {
-            if ( (signed int)v3 <= 23 && v5 < *((int *)v6->pConditions + 9 * v31 + 135) )
-              v5 = *((int *)v6->pConditions + 9 * v31 + 135);
+            if ( attr <= CHARACTER_ATTRIBUTE_SKILL_UNARMED && v5 < this->pOwnItems[v65].m_enchantmentStrength )
+              v5 = this->pOwnItems[v65].m_enchantmentStrength;
           }
         }
         goto LABEL_361;
       }
-      v34 = *(int *)(v63 + 544);
+      v34 = this->pOwnItems[v65].uSpecEnchantmentType;
       if ( v34 > 48 )
       {
         switch ( v34 )
         {
           case 54:
-            goto LABEL_315;
+            v46 = attr == 3;
+            if ( v46 )
+              v5 += 15;
+            goto LABEL_361;
           case 49:
-            if ( v3 == 6 )
-              goto LABEL_121;
-            v50 = v3 == 1;
-            goto LABEL_296;
+            if ( attr == 6 )
+            {
+              v5 += 10;
+              goto LABEL_361;
+            }
+            v50 = attr == 1;
+            if (v50)
+              v5 += 10;
+            goto LABEL_361;
           case 51:
-            if ( v3 != 5 && v3 != 1 )
-              goto LABEL_309;
-            goto LABEL_121;
+            if ( attr != 5 && attr != 1 )
+            {
+              v50 = attr == 8;
+              if (v50)
+                v5 += 10;
+              goto LABEL_361;
+            }
+            v5 += 10;
+            goto LABEL_361;
           case 52:
-            if ( v3 == 3 )
-              goto LABEL_121;
-            v50 = v3 == 4;
-            goto LABEL_296;
+            if ( attr == 3 )
+            {
+              v5 += 10;
+              goto LABEL_361;
+            }
+            v50 = attr == 4;
+            if (v50)
+              v5 += 10;
+            goto LABEL_361;
           case 53:
-            if ( !v3 )
-              goto LABEL_121;
-            v50 = v3 == 2;
-            goto LABEL_296;
+            if ( !attr )
+            {
+              v5 += 10;
+              goto LABEL_361;
+            }
+            v50 = attr == 2;
+            if (v50)
+              v5 += 10;
+            goto LABEL_361;
           case 55:
-            v46 = v3 == 6;
-            goto LABEL_240;
+            v46 = attr == 6;
+            if ( v46 )
+              v5 += 15;
+            goto LABEL_361;
           case 56:
-            if ( !v3 )
-              goto LABEL_351;
-            v53 = v3 == 3;
-            goto LABEL_350;
+            if ( !attr )
+            {
+              v5 += 5;
+              goto LABEL_361;
+            }
+            v53 = attr == 3;
+            if ( v53 )
+              v5 += 5;
+            goto LABEL_361;
           case 57:
-            if ( v3 == 1 )
-              goto LABEL_351;
-            v53 = v3 == 2;
-            goto LABEL_350;
+            if ( attr == 1 )
+            {
+              v5 += 5;
+              goto LABEL_361;
+            }
+            v53 = attr == 2;
+            if ( v53 )
+              v5 += 5;
+            goto LABEL_361;
           case 50:
-            if ( v3 == 10 )
+            if ( attr == 10 )
               v5 += 30;
             goto LABEL_361;
           case 60:
-            if ( v3 != 23 )
-              goto LABEL_336;
+            if ( attr != 23 )
+            {
+              v54 = attr == 22;
+              if ( !v54 )
+                goto LABEL_361;
+              if ( v5 >= 3 )
+                goto LABEL_361;
+              v60 = 3;
+              v5 = v60;
+              break;
+            }
             if ( v5 >= 3 )
               goto LABEL_361;
             v5 = 3;
-LABEL_336:
-            v54 = v3 == 22;
-            goto LABEL_345;
-          case 61:
-            if ( v3 != 17 )
-              goto LABEL_340;
-            if ( v5 >= 3 )
-              goto LABEL_361;
-            v5 = 3;
-LABEL_340:
-            v54 = v3 == 18;
-            goto LABEL_345;
-          case 62:
-            if ( v3 != 19 )
-              goto LABEL_344;
-            if ( v5 >= 3 )
-              goto LABEL_361;
-            v5 = 3;
-LABEL_344:
-            v54 = v3 == 20;
-LABEL_345:
+            v54 = attr == 22;
             if ( !v54 )
               goto LABEL_361;
             if ( v5 >= 3 )
               goto LABEL_361;
             v60 = 3;
-            goto LABEL_360;
+            v5 = v60;
+            break;
+          case 61:
+            if ( attr != 17 )
+            {
+              v54 = attr == 18;
+              if ( !v54 )
+                goto LABEL_361;
+              if ( v5 >= 3 )
+                goto LABEL_361;
+              v60 = 3;
+              v5 = v60;
+              break;
+            }
+            if ( v5 >= 3 )
+              goto LABEL_361;
+            v5 = 3;
+            v54 = attr == 18;
+            if ( !v54 )
+              goto LABEL_361;
+            if ( v5 >= 3 )
+              goto LABEL_361;
+            v60 = 3;
+            v5 = v60;
+            break;
+          case 62:
+            if ( attr != 19 )
+            {
+              v54 = attr == 20;
+              if ( !v54 )
+                goto LABEL_361;
+              if ( v5 >= 3 )
+                goto LABEL_361;
+              v60 = 3;
+              v5 = v60;
+              break;
+            }
+            if ( v5 >= 3 )
+              goto LABEL_361;
+            v5 = 3;
+            v54 = attr == 20;
+            if ( !v54 )
+              goto LABEL_361;
+            if ( v5 >= 3 )
+              goto LABEL_361;
+            v60 = 3;
+            v5 = v60;
+            break;
           case 67:
-            v55 = v3 == 18;
-            goto LABEL_357;
+            v55 = attr == 18;
+            if ( v55 && v5 < 2 )
+            {
+              v60 = 2;
+              v5 = v60;
+            }
+            break;
           case 68:
-            v53 = v3 == 9;
-            goto LABEL_350;
+            v53 = attr == 9;
+            if ( v53 )
+              v5 += 5;
+            goto LABEL_361;
           case 69:
-            if ( v3 == 11 )
+            if ( attr == 11 )
               v5 += 20;
             break;
           case 70:
-            if ( v3 == 12 )
+            if ( attr == 12 )
               v5 += 10;
-            v55 = v3 == 16;
-LABEL_357:
+            v55 = attr == 16;
             if ( v55 && v5 < 2 )
             {
               v60 = 2;
-LABEL_360:
               v5 = v60;
             }
             break;
@@ -3644,11 +3762,9 @@
       }
       if ( v34 == 48 )
       {
-        if ( v3 == 9 )
+        if ( attr == 9 )
           v5 += 5;
-LABEL_315:
-        v46 = v3 == 3;
-LABEL_240:
+        v46 = attr == 3;
         if ( v46 )
           v5 += 15;
         goto LABEL_361;
@@ -3660,71 +3776,72 @@
           v51 = v34 - 45;
           if ( !v51 )
           {
-            if ( v3 == 5 )
-              goto LABEL_351;
-            v53 = v3 == 4;
-LABEL_350:
+            if ( attr == 5 )
+              v5 += 5;
+            goto LABEL_361;
+            v53 = attr == 4;
             if ( v53 )
-LABEL_351:
               v5 += 5;
             goto LABEL_361;
           }
           v52 = v51 - 1;
           if ( !v52 )
           {
-            v40 = v3 == 0;
-LABEL_123:
+            v40 = attr == 0;
             if ( v40 )
               v5 += 25;
             goto LABEL_361;
           }
           if ( v52 == 1 )
           {
-LABEL_309:
-            v50 = v3 == 8;
-            goto LABEL_296;
+            v50 = attr == 8;
+            if (v50)
+              v5 += 10;
+            goto LABEL_361;
           }
         }
         else
         {
           if ( v34 == 44 )
           {
-            v50 = v3 == 7;
-            goto LABEL_296;
+            v50 = attr == 7;
+            if (v50)
+              v5 += 10;
+            goto LABEL_361;
           }
           v34 -= 33;
           if ( !v34 )
           {
-            if ( v3 != 38 )
+            if ( attr != 38 )
               goto LABEL_361;
-            LOBYTE(v34) = LOBYTE(v6->pActiveSkills[16]);
-            goto LABEL_138;
+            LOBYTE(v34) = LOBYTE(this->pActiveSkills[16]);
+            v62 = ((unsigned int)v34 >> 1) & 0x1F;
+            goto LABEL_361;
           }
           --v34;
           if ( !v34 )
           {
-            if ( v3 != 36 )
+            if ( attr != 36 )
               goto LABEL_361;
-            LOBYTE(v34) = LOBYTE(v6->pActiveSkills[14]);
-            goto LABEL_138;
+            LOBYTE(v34) = LOBYTE(this->pActiveSkills[14]);
+            v62 = ((unsigned int)v34 >> 1) & 0x1F;
+            goto LABEL_361;
           }
           v49 = v34 - 8;
           if ( !v49 )
           {
-            if ( (signed int)v3 >= 0 && (signed int)v3 <= 15 )
+            if ( (signed int)attr >= 0 && (signed int)attr <= 15 )
               ++v5;
             goto LABEL_361;
           }
           if ( v49 == 1 )
           {
-            if ( v3 != 3 && v3 != 7 )
+            if ( attr != 3 && attr != 7 )
             {
-              v50 = v3 == 9;
-LABEL_296:
+              v50 = attr == 9;
               if ( !v50 )
                 goto LABEL_361;
             }
-LABEL_121:
             v5 += 10;
             goto LABEL_361;
           }
@@ -3734,10 +3851,11 @@
       {
         if ( v34 == 32 )
         {
-          if ( v3 != 39 )
+          if ( attr != 39 )
             goto LABEL_361;
-          LOBYTE(v34) = LOBYTE(v6->pActiveSkills[17]);
-          goto LABEL_138;
+          LOBYTE(v34) = LOBYTE(this->pActiveSkills[17]);
+          v62 = ((unsigned int)v34 >> 1) & 0x1F;
+          goto LABEL_361;
         }
         if ( v34 > 28 )
         {
@@ -3748,32 +3866,31 @@
             if ( v34 )
             {
               --v34;
-              if ( v34 || v3 != 41 )
+              if ( v34 || attr != 41 )
                 goto LABEL_361;
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[19]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[19]);
             }
             else
             {
-              if ( v3 != 34 )
+              if ( attr != 34 )
                 goto LABEL_361;
-              LOBYTE(v34) = LOBYTE(v6->pActiveSkills[12]);
+              LOBYTE(v34) = LOBYTE(this->pActiveSkills[12]);
             }
           }
           else
           {
-            if ( v3 != 37 )
+            if ( attr != 37 )
               goto LABEL_361;
-            LOBYTE(v34) = LOBYTE(v6->pActiveSkills[15]);
+            LOBYTE(v34) = LOBYTE(this->pActiveSkills[15]);
           }
-          goto LABEL_138;
+          v62 = ((unsigned int)v34 >> 1) & 0x1F;
+          goto LABEL_361;
         }
         if ( v34 == 28 )
         {
-LABEL_136:
-          if ( v3 == 42 )
+          if ( attr == 42 )
           {
-            LOBYTE(v34) = LOBYTE(v6->pActiveSkills[20]);
-LABEL_138:
+            LOBYTE(v34) = LOBYTE(this->pActiveSkills[20]);
             v62 = ((unsigned int)v34 >> 1) & 0x1F;
             goto LABEL_361;
           }
@@ -3790,36 +3907,33 @@
               if ( v34 )
               {
                 --v34;
-                if ( v34 || v3 != 40 )
+                if ( v34 || attr != 40 )
                   goto LABEL_361;
-                LOBYTE(v34) = LOBYTE(v6->pActiveSkills[18]);
+                LOBYTE(v34) = LOBYTE(this->pActiveSkills[18]);
               }
               else
               {
-                if ( v3 != 35 )
+                if ( attr != 35 )
                   goto LABEL_361;
-                LOBYTE(v34) = LOBYTE(v6->pActiveSkills[13]);
+                LOBYTE(v34) = LOBYTE(this->pActiveSkills[13]);
               }
-              goto LABEL_138;
+              v62 = ((unsigned int)v34 >> 1) & 0x1F;
+              goto LABEL_361;
             }
-LABEL_118:
-            if ( (signed int)v3 < 0 )
+            if (attr >= 0 && attr <= 6)
+            {
+              v5 += 10;
               goto LABEL_361;
-            v39 = __OFSUB__((int)v3, 6);
-            v37 = v3 == 6;
-            v38 = v3 - 6 < 0;
+            }
           }
           else
           {
-LABEL_253:
-            if ( (signed int)v3 < 10 )
+            if (attr >= 10 && attr <= 15)
+            {
+              v5 += 10;
               goto LABEL_361;
-            v39 = __OFSUB__((int)v3, 15);
-            v37 = v3 == 15;
-            v38 = v3 - 15 < 0;
+            }
           }
-          if ( (unsigned __int8)(v38 ^ v39) | v37 )
-            goto LABEL_121;
         }
       }
 LABEL_361:
@@ -3832,7 +3946,7 @@
   {
     if ( IsUnarmed() != 1 )
     {
-      if ( v6->HasItemEquipped(EQUIP_MAIN_HAND) )
+      if ( this->HasItemEquipped(EQUIP_MAIN_HAND) )
       {
         v22 = this->GetEquippedItemEquipType(EQUIP_MAIN_HAND);
         if ( v22 >= 0 )
@@ -3840,7 +3954,7 @@
           if ( v22 <= 2 )
           {
 			  v23 = this->pOwnItems[this->pEquipment.uMainHand].uItemID;
-            if ( v6->pEquipment.uShield || pItemsTable->pItems[v23].uSkillType != 4 )
+            if ( this->pEquipment.uShield || pItemsTable->pItems[v23].uSkillType != 4 )
             {
               v26 = pItemsTable->pItems[v23].uDamageRoll;
               v25 = pItemsTable->pItems[v23].uDamageDice;
@@ -3855,10 +3969,10 @@
         }
       }
       
-      if ( getOnlyMainHandDmg || !v6->HasItemEquipped(EQUIP_OFF_HAND) )
+      if ( getOnlyMainHandDmg || !this->HasItemEquipped(EQUIP_OFF_HAND) )
           {
 
-          v28 = v6->GetEquippedItemEquipType(EQUIP_OFF_HAND);
+          v28 = this->GetEquippedItemEquipType(EQUIP_OFF_HAND);
           if ((v28 < 0) || v28 > 2 )
               return v5 + v62 + v61;
         }
@@ -3868,7 +3982,6 @@
       return v5 + v62 + v61;
     }
     v59 = 3;
-LABEL_74:
     v5 = v59;
     return v5 + v62 + v61;
   }
@@ -3892,18 +4005,18 @@
       v5 = 0;
       return v5 + v62 + v61;
     }
-    if ( v6->HasItemEquipped(EQUIP_MAIN_HAND) )
+    if ( this->HasItemEquipped(EQUIP_MAIN_HAND) )
     {
       v17 = this->GetEquippedItemEquipType(EQUIP_MAIN_HAND);
       if ( v17 >= 0 )
       {
         if ( v17 <= 2 )
-          v5 = pItemsTable->pItems[v6->pOwnItems[v6->pEquipment.uMainHand-1].uItemID].uDamageMod;
+          v5 = pItemsTable->pItems[this->pOwnItems[this->pEquipment.uMainHand-1].uItemID].uDamageMod;
       }
     }
-    if ( getOnlyMainHandDmg || !v6->HasItemEquipped(EQUIP_OFF_HAND) || (v19 = v6->GetEquippedItemEquipType(EQUIP_OFF_HAND), v19 < 0) || v19 > 2 )
+    if ( getOnlyMainHandDmg || !this->HasItemEquipped(EQUIP_OFF_HAND) || (v19 = this->GetEquippedItemEquipType(EQUIP_OFF_HAND), v19 < 0) || v19 > 2 )
       return v5 + v62 + v61;
-    v20 = v6->pOwnItems[v6->pEquipment.uShield - 1].uItemID;
+    v20 = this->pOwnItems[this->pEquipment.uShield - 1].uItemID;
     v56 = pItemsTable->pItems[v20].uDamageMod;
     v5 += v56;
     return v5 + v62 + v61;
@@ -3915,7 +4028,7 @@
       v5 = 1;
       return v5 + v62 + v61;
     }
-    if ( v6->HasItemEquipped(EQUIP_MAIN_HAND) )
+    if ( this->HasItemEquipped(EQUIP_MAIN_HAND) )
     {
       v9 = this->GetEquippedItemEquipType(EQUIP_MAIN_HAND);
       if ( v9 >= 0 )
@@ -3924,7 +4037,7 @@
         {
           v5 = pItemsTable->pItems[this->pOwnItems[this->pEquipment.uMainHand].uItemID].uDamageDice +
                  pItemsTable->pItems[this->pOwnItems[this->pEquipment.uMainHand].uItemID].uDamageMod;
-          if ( !v6->pEquipment.uShield )
+          if ( !this->pEquipment.uShield )
           {
             if ( pItemsTable->pItems[this->pOwnItems[this->pEquipment.uMainHand].uItemID].uSkillType == 4 )
               ++v5;
@@ -3933,15 +4046,14 @@
       }
     }
     
-    if ( getOnlyMainHandDmg || !v6->HasItemEquipped(EQUIP_OFF_HAND))
+    if ( getOnlyMainHandDmg || !this->HasItemEquipped(EQUIP_OFF_HAND))
         {
-        v12 = v6->GetEquippedItemEquipType(EQUIP_OFF_HAND);
+        v12 = this->GetEquippedItemEquipType(EQUIP_OFF_HAND);
         if  ((v12 < 0) || v12 > 2 )
                 return v5 + v62 + v61;
         }
     v14 = pItemsTable->pItems[this->pOwnItems[this->pEquipment.uShield].uItemID].uDamageMod;
     v15 = pItemsTable->pItems[this->pOwnItems[this->pEquipment.uShield].uItemID].uDamageDice;
-LABEL_88:
     v5 += v15 + v14;
   }
   return v5 + v62 + v61;