changeset 304:f16ac5e65438

Merge
author Nomad
date Tue, 19 Feb 2013 15:40:11 +0200
parents 3dcc9d945eeb (current diff) 0f2541245f65 (diff)
children cc8e4dc397ec 72faa54ff319 72de4ad353c6
files Player.h mm7_4.cpp mm7_5.cpp
diffstat 6 files changed, 679 insertions(+), 319 deletions(-) [+]
line wrap: on
line diff
--- a/MM7.h	Tue Feb 19 15:39:50 2013 +0200
+++ b/MM7.h	Tue Feb 19 15:40:11 2013 +0200
@@ -281,43 +281,9 @@
 
 /*  369 */
 #pragma pack(push, 1)
-struct stru329
-{
-  int field_0;
-  float field_4;
-  int field_8;
-  int field_C;
-  int equip_x;
-  int equip_y;
-  int field_18;
-  int field_1C;
-  int field_20;
-  int field_24;
-  int field_28;
-  int field_2C;
-  int field_30;
-  int field_34;
-  int field_38;
-  int field_3C;
-  int field_40;
-  int field_44;
-  int field_48;
-  int field_4C;
-  int field_50;
-  int field_54;
-  int field_58;
-  int field_5C;
-  int field_60;
-  int field_64;
-  int field_68;
-  int field_6C;
-  int field_70;
-  int field_74;
-  int field_78;
-  int field_7C;
-};
+
 #pragma pack(pop)
-extern stru329 array_4E4C30[4];
+extern int paperdoll_Weapon[4][16][2];
 
 /*  371 */
 #pragma pack(push, 1)
--- a/Player.cpp	Tue Feb 19 15:39:50 2013 +0200
+++ b/Player.cpp	Tue Feb 19 15:40:11 2013 +0200
@@ -6818,18 +6818,18 @@
 }
 
 //----- (004907E7) --------------------------------------------------------
-__int16 Player::GetStatColor(unsigned int uStat)
+unsigned int Player::GetStatColor(int uStat)
 {
   __int16 uWhite; // si@1
   int attribute_value; // edx@1
-  unsigned __int8 v8; // of@1
+  unsigned __int8 pBaseAttrValue; // of@1
   __int16 uGreen; // [sp+8h] [bp-8h]@1
   __int16 uRed; // [sp+Ch] [bp-4h]@1
 
   uRed = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0x23u, 0);
   uGreen = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0, 0xFFu, 0);
   uWhite = GenerateColorAsCloseAsPossibleToR8G8B8InTargetFormat(0xFFu, 0xFFu, 0xFFu);
-  v8 = StatTable[GetRace()][uStat].uBaseValue;
+  pBaseAttrValue = StatTable[GetRace()][uStat].uBaseValue;
 
   switch (uStat)
   {
@@ -6842,9 +6842,9 @@
     case 6:  attribute_value = uLuck;         break;
   };
 
-  if ( attribute_value == v8 )
+  if ( attribute_value == pBaseAttrValue )
     return uWhite;
-  else if ( attribute_value > v8 )
+  else if ( attribute_value > pBaseAttrValue )
     return uGreen;
   else
     return uRed;
--- a/Player.h	Tue Feb 19 15:39:50 2013 +0200
+++ b/Player.h	Tue Feb 19 15:40:11 2013 +0200
@@ -514,7 +514,7 @@
   void DecreaseAttribute(int eAttribute);
   int IncreaseAttribute(int eAttribute);
   void Player::Zero();
-  __int16 GetStatColor(unsigned int uStat);
+  unsigned int GetStatColor(int uStat);
   bool DiscardConditionIfLastsLongerThan(unsigned int uCondition, unsigned __int64 uTime);
   int _490EEE(ItemGen *pItem, int a3, int a4, int a5);
   int GetBodybuilding();
--- a/mm7_5.cpp	Tue Feb 19 15:39:50 2013 +0200
+++ b/mm7_5.cpp	Tue Feb 19 15:40:11 2013 +0200
@@ -6466,7 +6466,6 @@
   return v6;
 }
 
-
 //----- (0043BCA7) --------------------------------------------------------
 int __cdecl CharacterUI_LoadPaperdollTextures()
 {
@@ -7303,8 +7302,8 @@
     v230 = pPlayer->pEquipment.uBow;
     v22 = (int)&v217->pInventoryItems[v21-1];
     v23 = *(int *)v22;
-    v24 = pPaperdoll_BodyX + array_4E4C30[pBodyComplection].equip_x - pItemsTable->pItems[v23].uEquipX;
-    a3b = pPaperdoll_BodyY + array_4E4C30[pBodyComplection].equip_y - pItemsTable->pItems[v23].uEquipY;
+    v24 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[v23].uEquipX;
+    a3b = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[v23].uEquipY;
     v241 = pIcons_LOD->LoadTexture(pItemsTable->pItems[v23].pIconName, TEXTURE_16BIT_PALETTE);
     v25 = *(int *)(v22 + 20);
     if ( !(*(int *)(v22 + 20) & 0xF0) )
@@ -7361,9 +7360,9 @@
                 goto LABEL_93;
 LABEL_74:
               v34 = v33 + 10 * pBodyComplection;
-              v35 = paperdoll_array_511828[0][v34];
-              a2c = pPaperdoll_BodyX + paperdoll_array_4E5570[0][v34][0];// TODO indexing
-              v36 = pPaperdoll_BodyY + paperdoll_array_4E5570[0][v34][1];
+              v35 = paperdoll_array_511828[0][v34];//Texture_Cloak
+              a2c = pPaperdoll_BodyX + paperdoll_Cloak[0][v34][0];
+              v36 = pPaperdoll_BodyY + paperdoll_Cloak[0][v34][1];
               v37 = *(int *)(v32 + 20);
               a3c = v36;
               if ( !(v37 & 0xF0) )
@@ -7413,9 +7412,9 @@
                           goto LABEL_127;
 LABEL_106:
                         v46 = 17 * pBodyComplection + v45;
-                        a2d = pPaperdoll_BodyX + paperdoll_array_4E4E30[0][v46][0];// TODO indexing
-                        v47 = pPaperdoll_BodyY + paperdoll_array_4E4E30[0][v46][1];
-                        v48 = paperdoll_array_511290[0][v46][0];
+                        a2d = pPaperdoll_BodyX + paperdoll_Armor[0][v46][0];
+                        v47 = pPaperdoll_BodyY + paperdoll_Armor[0][v46][1];
+                        v48 = paperdoll_array_511290[0][v46][0];//Texture_Armor
                         v49 = *(int *)(v44 + 20);
                         a3d = v47;
                         if ( !(v49 & 0xF0) )
@@ -7453,16 +7452,16 @@
                           v58 = *(int *)v57;
                           if ( *(int *)v57 == 529 )
                           {
-                            a3e = pPaperdoll_BodyY + paredoll_array_4E54B8[pBodyComplection][1];
-                            a2e = pPaperdoll_BodyX + paredoll_array_4E54B8[pBodyComplection][0];
+                            a3e = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][5][1];
+                            a2e = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][5][0];
                             v59 = papredoll_flying_feet[v244];
                           }
                           else
                           {
                             if ( v58 == 512 )
                             {
-                              a3e = pPaperdoll_BodyY + paredoll_array_4E54B8[pBodyComplection][3];
-                              a2e = pPaperdoll_BodyX + paredoll_array_4E54B8[pBodyComplection][2];
+                              a3e = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][6][1];
+                              a2e = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][6][0];
                               v59 = dword_511638[pBodyComplection][5];
                             }
                             else
@@ -7477,8 +7476,8 @@
                               else
                               {
                                 v61 = v60 + 7 * pBodyComplection;
-                                a3e = pPaperdoll_BodyY + dword_4E5490[0][v61][1];
-                                a2e = pPaperdoll_BodyX + dword_4E5490[0][v61][0];
+                                a3e = pPaperdoll_BodyY + paperdoll_Boot[0][v61][1];
+                                a2e = pPaperdoll_BodyX + paperdoll_Boot[0][v61][0];
                                 v59 = dword_511638[0][v60 + 6 * pBodyComplection];
                               }
                             }
@@ -7512,11 +7511,10 @@
                             v68 = v217;
                             v69 = v217->pEquipment.uMainHand;
                             uPlayerID_a = 2 * pBodyComplection;
-                            if ( !v69 || (v70 = *(int *)&v217->pInventoryItems[v69-1],
-                                  pItemsTable->pItems[v70].uEquipType != 1)
+                            if ( !v69 || (v70 = *(int *)&v217->pInventoryItems[v69-1], pItemsTable->pItems[v70].uEquipType != 1)
                               && (pItemsTable->pItems[v70].uSkillType != 4 || v217->pEquipment.uOffHand) )
-                              pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[2 * pBodyComplection],
-                                pPaperdoll_BodyY + pPaperdoll_LeftHand[2 * pBodyComplection + 1],
+                              pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
+                                pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
                                 (Texture *)(*(unsigned int *)((char *)papredoll_dlads + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlads + v240)] : 0));
                             v71 = v217->pEquipment.uBelt;
                             if ( v71 )
@@ -7541,8 +7539,8 @@
                               {
 LABEL_168:
                                 v74 = 7 * pBodyComplection + v73;
-                                a2f = pPaperdoll_BodyX + dword_4E57F0[0][v74][0];
-                                a3f = pPaperdoll_BodyY + dword_4E57F0[0][v74][1];
+                                a2f = pPaperdoll_BodyX + paperdoll_Belt[0][v74][0];
+                                a3f = pPaperdoll_BodyY + paperdoll_Belt[0][v74][1];
                                 if ( IsDwarf != 1 || v73 == 5 )
                                   v75 = stru_511718.texids[v74];
                                 else
@@ -7572,24 +7570,30 @@
                                   }
                                   if ( !bRingsShownInCharScreen )
                                     pRenderer->_4A612A(a2f, a3f, v81, v234);
-                                  goto LABEL_191;
+                                    v68 = v217;
+                                    goto LABEL_192;
                                 }
                                 if ( (*(int *)&v217->field_1F5[36 * v71 + 15] & 0xF0) != 16 )
                                 {
                                   if ( (*(int *)&v217->field_1F5[36 * v71 + 15] & 0xF0) == 32 )
                                   {
                                     v172 = "sp28a";
-                                    goto LABEL_181;
+                                    v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                    if ( dword_50C9A8 <= 0 )
+                                    {
+                                      dword_50C9A8 = 0;
+                                      *(char *)(v222 + 20) &= 0xFu;
+                                      ptr_50C9A4 = 0;
+                                    }
+                                    v78 = (double)GetTickCount() * 0.1;
+                                    pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                    v68 = v217;
+                                    goto LABEL_192;
                                   }
                                   if ( (*(int *)&v217->field_1F5[36 * v71 + 15] & 0xF0) == 64 )
                                   {
                                     v172 = "sp30a";
-                                    goto LABEL_181;
-                                  }
-                                  if ( (*(int *)&v217->field_1F5[36 * v71 + 15] & 0xF0) == 128 )
-                                  {
-                                    v172 = "sp91a";
-LABEL_181:
                                     v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
                                     dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                     if ( dword_50C9A8 <= 0 )
@@ -7599,15 +7603,40 @@
                                       ptr_50C9A4 = 0;
                                     }
                                     v78 = (double)GetTickCount() * 0.1;
-                                    pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0),
-                                      v77, (signed __int64)v78, 0, 255);
-LABEL_191:
+                                    pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                    v68 = v217;
+                                    goto LABEL_192;
+                                  }
+                                  if ( (*(int *)&v217->field_1F5[36 * v71 + 15] & 0xF0) == 128 )
+                                  {
+                                    v172 = "sp91a";
+                                    v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                    if ( dword_50C9A8 <= 0 )
+                                    {
+                                      dword_50C9A8 = 0;
+                                      *(char *)(v222 + 20) &= 0xFu;
+                                      ptr_50C9A4 = 0;
+                                    }
+                                    v78 = (double)GetTickCount() * 0.1;
+                                    pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
                                     v68 = v217;
                                     goto LABEL_192;
                                   }
                                 }
                                 v172 = "sptext01";
-                                goto LABEL_181;
+                                v77 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v172, TEXTURE_16BIT_PALETTE)];
+                                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                if ( dword_50C9A8 <= 0 )
+                                {
+                                  dword_50C9A8 = 0;
+                                  *(char *)(v222 + 20) &= 0xFu;
+                                  ptr_50C9A4 = 0;
+                                }
+                                v78 = (double)GetTickCount() * 0.1;
+                                pRenderer->_4A63E6(a2f, a3f, (Texture *)(v75 != -1 ? (int)&pIcons_LOD->pTextures[v75] : 0), v77, (signed __int64)v78, 0, 255);
+                                v68 = v217;
+                                goto LABEL_192;
                               }
                             }
 LABEL_192:
@@ -7617,8 +7646,8 @@
                               v83 = *(int *)&v68->pInventoryItems[v82-1];
                               if ( pItemsTable->pItems[v83].uEquipType == 1
                                 || pItemsTable->pItems[v83].uSkillType == 4 && !v68->pEquipment.uOffHand )
-                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[uPlayerID_a],
-                                  pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[uPlayerID_a + 1],
+                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[0][uPlayerID_a],
+                                  pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[0][uPlayerID_a + 1],
                                   (Texture *)(*(unsigned int *)((char *)papredoll_dlaus + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlaus + v240)] : 0));
                             }
                             v84 = v68->pEquipment.uBody;
@@ -7685,9 +7714,8 @@
                                                 {
                                                   v122 = papredoll_dbrds[v244];
                                                   if ( v122 != pIcons_LOD->FindTextureByName("Pending") )
-                                                    pRenderer->DrawTextureTransparent(
-                                                      pPaperdoll_BodyX + dword_4E5AD0[2 * v244 - 24],
-                                                      pPaperdoll_BodyY + dword_4E5AD4[2 * v244 - 24],
+                                                    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_Beards[2 * v244 - 24],
+                                                      pPaperdoll_BodyY + pPaperdoll_Beards[2 * v244 - 23],
                                                       (Texture *)(v122 != -1 ? (int)&pIcons_LOD->pTextures[v122] : 0));
                                                 }
                                                 v123 = v68->pEquipment.uHelm;
@@ -7713,7 +7741,6 @@
                                                       if ( *(int *)v124 != 544 )
                                                       {
                                                         v125 = *(int *)v124 - 89;
-LABEL_310:
                                                         if ( v125 < 0 || v125 >= 16 )
                                                           goto LABEL_335;
                                                         goto LABEL_312;
@@ -7738,17 +7765,22 @@
                                                       if ( (*(int *)(v124 + 20) & 0xF0) == 32 )
                                                       {
                                                         v180 = "sp28a";
-                                                        goto LABEL_325;
+                                                        v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                        if ( dword_50C9A8 <= 0 )
+                                                        {
+                                                          dword_50C9A8 = 0;
+                                                          *(char *)(v226 + 20) &= 0xFu;
+                                                          ptr_50C9A4 = 0;
+                                                        }
+                                                        v130 = (double)GetTickCount() * 0.1;
+                                                        pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                          v129, (signed __int64)v130, 0, 255);
+                                                        goto LABEL_335;
                                                       }
                                                       if ( (*(int *)(v124 + 20) & 0xF0) == 64 )
                                                       {
                                                         v180 = "sp30a";
-                                                        goto LABEL_325;
-                                                      }
-                                                      if ( (*(int *)(v124 + 20) & 0xF0) == 128 )
-                                                      {
-                                                        v180 = "sp91a";
-LABEL_325:
                                                         v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
                                                         dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                                         if ( dword_50C9A8 <= 0 )
@@ -7758,19 +7790,40 @@
                                                           ptr_50C9A4 = 0;
                                                         }
                                                         v130 = (double)GetTickCount() * 0.1;
-                                                        pRenderer->_4A63E6(
-                                                          a2j,
-                                                          a3i,
-                                                          (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
-                                                          v129,
-                                                          (signed __int64)v130,
-                                                          0,
-                                                          255);
+                                                        pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                          v129, (signed __int64)v130, 0, 255);
+                                                        goto LABEL_335;
+                                                      }
+                                                      if ( (*(int *)(v124 + 20) & 0xF0) == 128 )
+                                                      {
+                                                        v180 = "sp91a";
+                                                        v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                        if ( dword_50C9A8 <= 0 )
+                                                        {
+                                                          dword_50C9A8 = 0;
+                                                          *(char *)(v226 + 20) &= 0xFu;
+                                                          ptr_50C9A4 = 0;
+                                                        }
+                                                        v130 = (double)GetTickCount() * 0.1;
+                                                        pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                          v129, (signed __int64)v130, 0, 255);
                                                         goto LABEL_335;
                                                       }
                                                     }
                                                     v180 = "sptext01";
-                                                    goto LABEL_325;
+                                                    v129 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v180, TEXTURE_16BIT_PALETTE)];
+                                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                    if ( dword_50C9A8 <= 0 )
+                                                    {
+                                                      dword_50C9A8 = 0;
+                                                      *(char *)(v226 + 20) &= 0xFu;
+                                                      ptr_50C9A4 = 0;
+                                                    }
+                                                    v130 = (double)GetTickCount() * 0.1;
+                                                    pRenderer->_4A63E6(a2j, a3i, (Texture *)(v127 != -1 ? (int)&pIcons_LOD->pTextures[v127] : 0),
+                                                      v129, (signed __int64)v130, 0, 255);
+                                                    goto LABEL_335;
                                                   }
                                                   v131 = v127 + 1;
                                                   v132 = (char *)&pIcons_LOD->pTextures[v127];
@@ -7803,12 +7856,8 @@
                                                   v227 = v135;
                                                   v136 = *(int *)v135;
                                                   v137 = *(int *)v135;
-                                                  a2k = pPaperdoll_BodyX
-                                                      + array_4E4C30[pBodyComplection].field_8
-                                                      - pItemsTable->pItems[v137].uEquipX;
-                                                  a3j = pPaperdoll_BodyY
-                                                      + array_4E4C30[pBodyComplection].field_C
-                                                      - pItemsTable->pItems[v137].uEquipY;
+                                                  a2k = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[v137].uEquipX;
+                                                  a3j = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[v137].uEquipY;
                                                   if ( v136 == 64 )
                                                     v181 = "item64v1";
                                                   else
@@ -7852,13 +7901,8 @@
                                                     if ( v149 != 2 && v149 != 1 )
                                                     {
                                                       v245 = 0;
-LABEL_362:
-                                                      v150 = pPaperdoll_BodyX
-                                                           + array_4E4C30[pBodyComplection].field_0
-                                                           - pItemsTable->pItems[v148].uEquipX;
-                                                      a3k = pPaperdoll_BodyY
-                                                          + LODWORD(array_4E4C30[pBodyComplection].field_4)
-                                                          - pItemsTable->pItems[v148].uEquipY;
+                                                      v150 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[v148].uEquipX;
+                                                      a3k = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[v148].uEquipY;
                                                       goto LABEL_370;
                                                     }
                                                     v151 = v147 - 400;
@@ -7869,7 +7913,11 @@
                                                       if ( v152 )
                                                       {
                                                         if ( v152 != 12 )
-                                                          goto LABEL_362;
+                                                        {
+                                                          v150 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[v148].uEquipX;
+                                                          a3k = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[v148].uEquipY;
+                                                          goto LABEL_370;
+                                                        }
                                                         v150 = 595;
                                                         a3k = 33;
 LABEL_370:
@@ -7891,23 +7939,22 @@
                                                             if ( v29 )
                                                             {
                                                               v159 = (Texture *)(v243 != -1 ? (int)v160 : 0);
-                                                              pRenderer->DrawTransparentGreenShade(
-                                                                v150,
-                                                                a3k,
-                                                                (Texture *)(v243 != -1 ? (int)v160 : 0));
+                                                              pRenderer->DrawTransparentGreenShade(v150, a3k, (Texture *)(v243 != -1 ? (int)v160 : 0));
                                                             }
                                                             else
                                                             {
                                                               v159 = (Texture *)(v243 != -1 ? (int)v160 : 0);
-                                                              pRenderer->DrawTextureTransparent(
-                                                                v150,
-                                                                a3k,
-                                                                (Texture *)(v243 != -1 ? (int)v160 : 0));
+                                                              pRenderer->DrawTextureTransparent(v150, a3k, (Texture *)(v243 != -1 ? (int)v160 : 0));
                                                             }
                                                           }
                                                           if ( !bRingsShownInCharScreen )
                                                             pRenderer->_4A612A(v150, a3k, v159, v249);
-                                                          goto LABEL_391;
+                                                          if ( v245 )
+                                                            pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                              pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                              (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                              + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                           goto LABEL_393;
                                                         }
                                                         if ( (*(int *)(v228 + 20) & 0xF0) != 16 )
                                                         {
@@ -7923,10 +7970,7 @@
                                                               if ( (*(int *)(v228 + 20) & 0xF0) == 128 )
                                                               {
                                                                 v183 = "sp91a";
-LABEL_381:
-                                                                v157 = &pIcons_LOD->pTextures[v156->LoadTexture(
-                                                                                               v183,
-                                                                                               TEXTURE_16BIT_PALETTE)];
+                                                                v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
                                                                 dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                                                 if ( dword_50C9A8 <= 0 )
                                                                 {
@@ -7935,34 +7979,74 @@
                                                                   ptr_50C9A4 = 0;
                                                                 }
                                                                 v158 = (double)GetTickCount() * 0.1;
-                                                                pRenderer->_4A63E6(
-                                                                  v150,
-                                                                  a3k,
-                                                                  (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
-                                                                  v157,
-                                                                  (signed __int64)v158,
-                                                                  0,
-                                                                  255);
-LABEL_391:
+                                                                pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                  v157, (signed __int64)v158, 0, 255);
                                                                 if ( v245 )
-                                                                  pRenderer->DrawTextureTransparent(pPaperdoll_BodyX
-                                                                  + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                  pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
                                                                     pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
                                                                     (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
                                                                                                 + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
                                                                 goto LABEL_393;
                                                               }
-LABEL_380:
                                                               v183 = "sptext01";
-                                                              goto LABEL_381;
+                                                              v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                              if ( dword_50C9A8 <= 0 )
+                                                              {
+                                                                dword_50C9A8 = 0;
+                                                                *(char *)(v228 + 20) &= 0xFu;
+                                                                ptr_50C9A4 = 0;
+                                                              }
+                                                              v158 = (double)GetTickCount() * 0.1;
+                                                              pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                                v157, (signed __int64)v158, 0, 255);
+                                                              if ( v245 )
+                                                                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                                  pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                                  (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                              + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                              goto LABEL_393;
                                                             }
                                                             v183 = "sp30a";
                                                           }
                                                           v156 = pIcons_LOD;
-                                                          goto LABEL_381;
+                                                          v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                          if ( dword_50C9A8 <= 0 )
+                                                          {
+                                                            dword_50C9A8 = 0;
+                                                            *(char *)(v228 + 20) &= 0xFu;
+                                                            ptr_50C9A4 = 0;
+                                                          }
+                                                          v158 = (double)GetTickCount() * 0.1;
+                                                          pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                            v157, (signed __int64)v158, 0, 255);
+                                                          if ( v245 )
+                                                            pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                              pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                              (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                           + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                          goto LABEL_393;
                                                         }
                                                         v156 = pIcons_LOD;
-                                                        goto LABEL_380;
+                                                        v183 = "sptext01";
+                                                        v157 = &pIcons_LOD->pTextures[v156->LoadTexture(v183, TEXTURE_16BIT_PALETTE)];
+                                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                        if ( dword_50C9A8 <= 0 )
+                                                        {
+                                                          dword_50C9A8 = 0;
+                                                          *(char *)(v228 + 20) &= 0xFu;
+                                                          ptr_50C9A4 = 0;
+                                                        }
+                                                        v158 = (double)GetTickCount() * 0.1;
+                                                        pRenderer->_4A63E6(v150, a3k, (Texture *)(v154 != -1 ? (int)&pIcons_LOD->pTextures[v154] : 0),
+                                                        v157, (signed __int64)v158, 0, 255);
+                                                        if ( v245 )
+                                                          pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[uPlayerID_a],
+                                                            pPaperdoll_BodyY + pPaperdollLeftEmptyHand[uPlayerID_a + 1],
+                                                             (Texture *)(*(unsigned int *)((char *)papredoll_dlhs
+                                                                                         + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhs + v240)] : 0));
+                                                        goto LABEL_393;
                                                       }
                                                       a3k = 28;
                                                     }
@@ -7978,17 +8062,38 @@
                                                     if ( (*(int *)(v227 + 20) & 0xF0) == 32 )
                                                     {
                                                       v182 = "sp28a";
-                                                      goto LABEL_348;
+                                                      v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                      dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                      if ( dword_50C9A8 <= 0 )
+                                                      {
+                                                        dword_50C9A8 = 0;
+                                                        *(char *)(v227 + 20) &= 0xFu;
+                                                        ptr_50C9A4 = 0;
+                                                      }
+                                                      v141 = (double)GetTickCount() * 0.1;
+                                                      pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                        v140, (signed __int64)v141, 0, 255);
+                                                      goto LABEL_358;
                                                     }
                                                     if ( (*(int *)(v227 + 20) & 0xF0) == 64 )
                                                     {
                                                       v182 = "sp30a";
-                                                      goto LABEL_348;
+                                                      v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                      dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                      if ( dword_50C9A8 <= 0 )
+                                                      {
+                                                        dword_50C9A8 = 0;
+                                                        *(char *)(v227 + 20) &= 0xFu;
+                                                        ptr_50C9A4 = 0;
+                                                      }
+                                                      v141 = (double)GetTickCount() * 0.1;
+                                                      pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                        v140, (signed __int64)v141, 0, 255);
+                                                      goto LABEL_358;
                                                     }
                                                     if ( (*(int *)(v227 + 20) & 0xF0) == 128 )
                                                     {
                                                       v182 = "sp91a";
-LABEL_348:
                                                       v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
                                                       dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                                       if ( dword_50C9A8 <= 0 )
@@ -8004,10 +8109,23 @@
                                                     }
                                                   }
                                                   v182 = "sptext01";
-                                                  goto LABEL_348;
+                                                  v140 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v182, TEXTURE_16BIT_PALETTE)];
+                                                  dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                  if ( dword_50C9A8 <= 0 )
+                                                  {
+                                                    dword_50C9A8 = 0;
+                                                    *(char *)(v227 + 20) &= 0xFu;
+                                                    ptr_50C9A4 = 0;
+                                                  }
+                                                  v141 = (double)GetTickCount() * 0.1;
+                                                  pRenderer->_4A63E6(a2k, a3j, (Texture *)(v138 != -1 ? (int)&pIcons_LOD->pTextures[v138] : 0),
+                                                    v140, (signed __int64)v141, 0, 255);
+                                                  goto LABEL_358;
                                                 }
                                                 v125 = 11;
-                                                goto LABEL_310;
+                                                if ( v125 < 0 || v125 >= 16 )
+                                                  goto LABEL_335;
+                                                goto LABEL_312;
                                               }
                                               if ( !(*(int *)(v225 + 20) & 0xF0) )
                                               {
@@ -8032,17 +8150,22 @@
                                                 if ( (*(int *)(v225 + 20) & 0xF0) == 32 )
                                                 {
                                                   v179 = "sp28a";
-                                                  goto LABEL_284;
+                                                  a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                  dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                  if ( dword_50C9A8 <= 0 )
+                                                  {
+                                                    dword_50C9A8 = 0;
+                                                    *(char *)(v225 + 20) &= 0xFu;
+                                                    ptr_50C9A4 = 0;
+                                                  }
+                                                  v118 = (double)GetTickCount() * 0.1;
+                                                  pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                    a2i, (signed __int64)v118, 0, 255);
+                                                  goto LABEL_292;
                                                 }
                                                 if ( (*(int *)(v225 + 20) & 0xF0) == 64 )
                                                 {
                                                   v179 = "sp30a";
-                                                  goto LABEL_284;
-                                                }
-                                                if ( (*(int *)(v225 + 20) & 0xF0) == 128 )
-                                                {
-                                                  v179 = "sp91a";
-LABEL_284:
                                                   a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
                                                   dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                                   if ( dword_50C9A8 <= 0 )
@@ -8052,19 +8175,40 @@
                                                     ptr_50C9A4 = 0;
                                                   }
                                                   v118 = (double)GetTickCount() * 0.1;
-                                                  pRenderer->_4A63E6(
-                                                    v117,
-                                                    a3h,
-                                                    (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
-                                                    a2i,
-                                                    (signed __int64)v118,
-                                                    0,
-                                                    255);
+                                                  pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                    a2i, (signed __int64)v118, 0, 255);
+                                                  goto LABEL_292;
+                                                }
+                                                if ( (*(int *)(v225 + 20) & 0xF0) == 128 )
+                                                {
+                                                  v179 = "sp91a";
+                                                  a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                                  dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                                  if ( dword_50C9A8 <= 0 )
+                                                  {
+                                                    dword_50C9A8 = 0;
+                                                    *(char *)(v225 + 20) &= 0xFu;
+                                                    ptr_50C9A4 = 0;
+                                                  }
+                                                  v118 = (double)GetTickCount() * 0.1;
+                                                  pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                    a2i, (signed __int64)v118, 0, 255);
                                                   goto LABEL_292;
                                                 }
                                               }
                                               v179 = "sptext01";
-                                              goto LABEL_284;
+                                              a2i = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v179, TEXTURE_16BIT_PALETTE)];
+                                              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                              if ( dword_50C9A8 <= 0 )
+                                              {
+                                                dword_50C9A8 = 0;
+                                                *(char *)(v225 + 20) &= 0xFu;
+                                                ptr_50C9A4 = 0;
+                                              }
+                                              v118 = (double)GetTickCount() * 0.1;
+                                              pRenderer->_4A63E6(v117, a3h, (Texture *)(v116 != -1 ? (int)&pIcons_LOD->pTextures[v116] : 0),
+                                                a2i, (signed __int64)v118, 0, 255);
+                                              goto LABEL_292;
                                             }
                                             v191 = 9;
                                             break;
@@ -8088,8 +8232,8 @@
                                       {
                                         v93 = 2 * v91;
                                         v94 = paperdoll_array_511290[0][v92][1];
-                                        a2g = pPaperdoll_BodyX + dword_4E5050[v93];
-                                        v95 = dword_4E5050[v93 + 1];
+                                        a2g = pPaperdoll_BodyX + paperdoll_shoulder[0][0][v93];
+                                        v95 = paperdoll_shoulder[0][0][v93 + 1];
                                       }
                                       else
                                       {
@@ -8099,7 +8243,10 @@
                                       }
                                       a3g = pPaperdoll_BodyY + v95;
                                       if ( v94 == pIcons_LOD->FindTextureByName("pending") )
-                                        goto LABEL_258;
+                                      {
+                                        v68 = v217;
+                                        goto LABEL_259;
+                                      }
                                       if ( *(int *)(v242 + 516) & 0xF0 )
                                       {
                                         if ( (*(int *)(v242 + 516) & 0xF0) != 16 )
@@ -8107,17 +8254,44 @@
                                           if ( (*(int *)(v242 + 516) & 0xF0) == 32 )
                                           {
                                             v173 = "sp28a";
-                                            goto LABEL_226;
+                                            v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                            if ( dword_50C9A8 <= 0 )
+                                            {
+                                              dword_50C9A8 = 0;
+                                              *(char *)(v242 + 516) &= 0xFu;
+                                              ptr_50C9A4 = 0;
+                                            }
+                                            v187 = 255;
+                                            v174 = 0;
+                                            v97 = (double)GetTickCount();
+                                            pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                              (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                            v68 = v217;
+                                            goto LABEL_259;
                                           }
                                           if ( (*(int *)(v242 + 516) & 0xF0) == 64 )
                                           {
                                             v173 = "sp30a";
-                                            goto LABEL_226;
+                                            v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                            dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                            if ( dword_50C9A8 <= 0 )
+                                            {
+                                              dword_50C9A8 = 0;
+                                              *(char *)(v242 + 516) &= 0xFu;
+                                              ptr_50C9A4 = 0;
+                                            }
+                                            v187 = 255;
+                                            v174 = 0;
+                                            v97 = (double)GetTickCount();
+                                            pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                              (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                            v68 = v217;
+                                            goto LABEL_259;
                                           }
                                           if ( (*(int *)(v242 + 516) & 0xF0) == 128 )
                                           {
                                             v173 = "sp91a";
-LABEL_226:
                                             v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
                                             dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                             if ( dword_50C9A8 <= 0 )
@@ -8129,14 +8303,28 @@
                                             v187 = 255;
                                             v174 = 0;
                                             v97 = (double)GetTickCount();
-LABEL_249:
                                             pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
                                               (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
-                                            goto LABEL_258;
+                                            v68 = v217;
+                                            goto LABEL_259;
                                           }
                                         }
                                         v173 = "sptext01";
-                                        goto LABEL_226;
+                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v173, TEXTURE_16BIT_PALETTE)];
+                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                        if ( dword_50C9A8 <= 0 )
+                                        {
+                                          dword_50C9A8 = 0;
+                                          *(char *)(v242 + 516) &= 0xFu;
+                                          ptr_50C9A4 = 0;
+                                        }
+                                        v187 = 255;
+                                        v174 = 0;
+                                        v97 = (double)GetTickCount();
+                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                          (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                       v98 = v94 + 1;
                                       v99 = (char *)&pIcons_LOD->pTextures[v94];
@@ -8147,9 +8335,11 @@
                                         v188 = v101;
                                         v175 = a3g;
                                         v163 = a2g;
-LABEL_231:
                                         v100->_4A6776(v163, v175, v188);
-                                        goto LABEL_256;
+                                        if ( !bRingsShownInCharScreen )
+                                          pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                       if ( *(char *)(v242 + 516) & 1 )
                                       {
@@ -8157,30 +8347,35 @@
                                         v189 = v101;
                                         v176 = a3g;
                                         v164 = a2g;
-LABEL_234:
                                         pRenderer->DrawTextureTransparent(v164, v176, v189);
-                                        goto LABEL_256;
+                                        if ( !bRingsShownInCharScreen )
+                                          pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                       v101 = (Texture *)(v98 != 0 ? (int)v99 : 0);
                                       v190 = v101;
                                       v177 = a3g;
                                       v165 = a2g;
-                                      goto LABEL_255;
+                                      pRenderer->DrawTransparentGreenShade(v165, v177, v190);
+                                      if ( !bRingsShownInCharScreen )
+                                        pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                      v68 = v217;
+                                      goto LABEL_259;
                                     }
                                     v102 = 17 * pBodyComplection + v90;
                                     v94 = paperdoll_array_511290[0][v102][1];
                                     if ( v94 == pIcons_LOD->FindTextureByName("pending") )
                                     {
-LABEL_258:
                                       v68 = v217;
                                       goto LABEL_259;
                                     }
-                                    v103 = pPaperdoll_BodyX + dword_4E5050[2 * v102];
-                                    v104 = pPaperdoll_BodyY + dword_4E5050[2 * v102 + 1];
+                                    v103 = pPaperdoll_BodyX + paperdoll_shoulder[0][v102][0];
+                                    v104 = pPaperdoll_BodyY + paperdoll_shoulder[0][v102][1];
                                     v224 = *(int *)(v242 + 516);
                                     v105 = *(int *)(v242 + 516) & 0xF0;
-                                    a2g = pPaperdoll_BodyX + dword_4E5050[2 * v102];
-                                    a3g = pPaperdoll_BodyY + dword_4E5050[2 * v102 + 1];
+                                    a2g = pPaperdoll_BodyX + paperdoll_shoulder[0][v102][0];
+                                    a3g = pPaperdoll_BodyY + paperdoll_shoulder[0][v102][1];
                                     if ( !v105 )
                                     {
                                       v109 = v94 + 1;
@@ -8192,7 +8387,11 @@
                                         v175 = v104;
                                         v163 = v103;
                                         v100 = pRenderer;
-                                        goto LABEL_231;
+                                        v100->_4A6776(v163, v175, v188);
+                                        if ( !bRingsShownInCharScreen )
+                                          pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                       if ( v224 & 1 )
                                       {
@@ -8201,19 +8400,22 @@
                                         v176 = v104;
                                         v164 = v103;
                                         v100 = pRenderer;
-                                        goto LABEL_234;
+                                        pRenderer->DrawTextureTransparent(v164, v176, v189);
+                                        if ( !bRingsShownInCharScreen )
+                                          pRenderer->_4A612A(a2g, a3g, v101, v235);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                       v101 = (Texture *)(v109 != 0 ? (int)v110 : 0);
                                       v190 = v101;
                                       v177 = v104;
                                       v165 = v103;
                                       v100 = pRenderer;
-LABEL_255:
                                       pRenderer->DrawTransparentGreenShade(v165, v177, v190);
-LABEL_256:
                                       if ( !bRingsShownInCharScreen )
                                         pRenderer->_4A612A(a2g, a3g, v101, v235);
-                                      goto LABEL_258;
+                                      v68 = v217;
+                                      goto LABEL_259;
                                     }
                                     v106 = v105 - 16;
                                     if ( v106 )
@@ -8222,18 +8424,6 @@
                                       if ( !v107 )
                                       {
                                         v178 = "sp28a";
-                                        goto LABEL_246;
-                                      }
-                                      v108 = v107 - 32;
-                                      if ( !v108 )
-                                      {
-                                        v178 = "sp30a";
-                                        goto LABEL_246;
-                                      }
-                                      if ( v108 == 64 )
-                                      {
-                                        v178 = "sp91a";
-LABEL_246:
                                         v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
                                         dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                         if ( dword_50C9A8 <= 0 )
@@ -8245,11 +8435,67 @@
                                         v187 = 255;
                                         v174 = 0;
                                         v97 = (double)GetTickCount();
-                                        goto LABEL_249;
+                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                          (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                        v68 = v217;
+                                        goto LABEL_259;
+                                      }
+                                      v108 = v107 - 32;
+                                      if ( !v108 )
+                                      {
+                                        v178 = "sp30a";
+                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                        if ( dword_50C9A8 <= 0 )
+                                        {
+                                          dword_50C9A8 = 0;
+                                          *(char *)(v242 + 516) &= 0xFu;
+                                          ptr_50C9A4 = 0;
+                                        }
+                                        v187 = 255;
+                                        v174 = 0;
+                                        v97 = (double)GetTickCount();
+                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                          (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                        v68 = v217;
+                                        goto LABEL_259;
+                                      }
+                                      if ( v108 == 64 )
+                                      {
+                                        v178 = "sp91a";
+                                        v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                        if ( dword_50C9A8 <= 0 )
+                                        {
+                                          dword_50C9A8 = 0;
+                                          *(char *)(v242 + 516) &= 0xFu;
+                                          ptr_50C9A4 = 0;
+                                        }
+                                        v187 = 255;
+                                        v174 = 0;
+                                        v97 = (double)GetTickCount();
+                                        pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                          (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                        v68 = v217;
+                                        goto LABEL_259;
                                       }
                                     }
                                     v178 = "sptext01";
-                                    goto LABEL_246;
+                                    v96 = (char *)&pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v178, TEXTURE_16BIT_PALETTE)];
+                                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                                    if ( dword_50C9A8 <= 0 )
+                                    {
+                                      dword_50C9A8 = 0;
+                                      *(char *)(v242 + 516) &= 0xFu;
+                                      ptr_50C9A4 = 0;
+                                    }
+                                    v187 = 255;
+                                    v174 = 0;
+                                    v97 = (double)GetTickCount();
+                                    pRenderer->_4A63E6(a2g, a3g, (Texture *)(v94 != -1 ? (int)&pIcons_LOD->pTextures[v94] : 0),
+                                      (Texture *)v96, (signed __int64)(v97 * 0.1), v174, v187);
+                                    v68 = v217;
+                                    goto LABEL_259;
                                   }
                                   v186 = 16;
                                 }
@@ -8273,17 +8519,22 @@
                             if ( (*(int *)(v57 + 20) & 0xF0) == 32 )
                             {
                               v171 = "sp28a";
-                              goto LABEL_145;
+                              v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                              if ( dword_50C9A8 <= 0 )
+                              {
+                                dword_50C9A8 = 0;
+                                *(char *)(v221 + 20) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                              }
+                              v64 = (double)GetTickCount() * 0.1;
+                              pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                (signed __int64)v64, 0, 255);
+                              goto LABEL_155;
                             }
                             if ( (*(int *)(v57 + 20) & 0xF0) == 64 )
                             {
                               v171 = "sp30a";
-                              goto LABEL_145;
-                            }
-                            if ( (*(int *)(v57 + 20) & 0xF0) == 128 )
-                            {
-                              v171 = "sp91a";
-LABEL_145:
                               v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
                               dword_50C9A8 -= pEventTimer->uTimeElapsed;
                               if ( dword_50C9A8 <= 0 )
@@ -8293,19 +8544,40 @@
                                 ptr_50C9A4 = 0;
                               }
                               v64 = (double)GetTickCount() * 0.1;
-                              pRenderer->_4A63E6(
-                                a2e,
-                                a3e,
-                                (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0),
-                                v63,
-                                (signed __int64)v64,
-                                0,
-                                255);
+                              pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                (signed __int64)v64, 0, 255);
+                              goto LABEL_155;
+                            }
+                            if ( (*(int *)(v57 + 20) & 0xF0) == 128 )
+                            {
+                              v171 = "sp91a";
+                              v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                              if ( dword_50C9A8 <= 0 )
+                              {
+                                dword_50C9A8 = 0;
+                                *(char *)(v221 + 20) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                              }
+                              v64 = (double)GetTickCount() * 0.1;
+                              pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                                (signed __int64)v64, 0, 255);
                               goto LABEL_155;
                             }
                           }
                           v171 = "sptext01";
-                          goto LABEL_145;
+                          v63 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v171, TEXTURE_16BIT_PALETTE)];
+                          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                          if ( dword_50C9A8 <= 0 )
+                          {
+                            dword_50C9A8 = 0;
+                            *(char *)(v221 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                          }
+                          v64 = (double)GetTickCount() * 0.1;
+                          pRenderer->_4A63E6(a2e, a3e, (Texture *)(v59 != -1 ? (int)&pIcons_LOD->pTextures[v59] : 0), v63,
+                           (signed __int64)v64, 0, 255);
+                          goto LABEL_155;
                         }
                         if ( (*(int *)(v44 + 20) & 0xF0) != 16 )
                         {
@@ -8321,7 +8593,6 @@
                               if ( (*(int *)(v44 + 20) & 0xF0) == 128 )
                               {
                                 v170 = "sp91a";
-LABEL_117:
                                 v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
                                 dword_50C9A8 -= pEventTimer->uTimeElapsed;
                                 if ( dword_50C9A8 <= 0 )
@@ -8335,17 +8606,50 @@
                                   v51, (signed __int64)v52, 0, 255);
                                 goto LABEL_127;
                               }
-LABEL_116:
                               v170 = "sptext01";
-                              goto LABEL_117;
+                              v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                              if ( dword_50C9A8 <= 0 )
+                              {
+                                dword_50C9A8 = 0;
+                                *(char *)(v220 + 20) &= 0xFu;
+                                ptr_50C9A4 = 0;
+                              }
+                              v52 = (double)GetTickCount() * 0.1;
+                              pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                                v51, (signed __int64)v52, 0, 255);
+                              goto LABEL_127;
                             }
                             v170 = "sp30a";
                           }
                           v50 = pIcons_LOD;
-                          goto LABEL_117;
+                          v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                          if ( dword_50C9A8 <= 0 )
+                          {
+                            dword_50C9A8 = 0;
+                            *(char *)(v220 + 20) &= 0xFu;
+                            ptr_50C9A4 = 0;
+                          }
+                          v52 = (double)GetTickCount() * 0.1;
+                          pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                          v51, (signed __int64)v52, 0, 255);
+                          goto LABEL_127;
                         }
                         v50 = pIcons_LOD;
-                        goto LABEL_116;
+                        v170 = "sptext01";
+                        v51 = &pIcons_LOD->pTextures[v50->LoadTexture(v170, TEXTURE_16BIT_PALETTE)];
+                        dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                        if ( dword_50C9A8 <= 0 )
+                        {
+                          dword_50C9A8 = 0;
+                          *(char *)(v220 + 20) &= 0xFu;
+                          ptr_50C9A4 = 0;
+                        }
+                        v52 = (double)GetTickCount() * 0.1;
+                        pRenderer->_4A63E6(a2d, a3d, (Texture *)(v48 != -1 ? (int)&pIcons_LOD->pTextures[v48] : 0),
+                        v51, (signed __int64)v52, 0, 255);
+                        goto LABEL_127;
                       }
                       v185 = 16;
                     }
@@ -8370,7 +8674,6 @@
                     if ( (*(int *)(v32 + 20) & 0xF0) == 128 )
                     {
                       v169 = "sp91a";
-LABEL_85:
                       v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
                       dword_50C9A8 -= pEventTimer->uTimeElapsed;
                       if ( dword_50C9A8 <= 0 )
@@ -8380,27 +8683,54 @@
                         ptr_50C9A4 = 0;
                       }
                       v40 = (double)GetTickCount() * 0.1;
-                      pRenderer->_4A63E6(
-                        a2c,
-                        a3c,
-                        (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0),
-                        v39,
-                        (signed __int64)v40,
-                        0,
-                        255);
+                      pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                        (signed __int64)v40, 0, 255);
                       goto LABEL_93;
                     }
-LABEL_84:
                     v169 = "sptext01";
-                    goto LABEL_85;
+                    v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                    if ( dword_50C9A8 <= 0 )
+                    {
+                      dword_50C9A8 = 0;
+                      *(char *)(v219 + 20) &= 0xFu;
+                      ptr_50C9A4 = 0;
+                    }
+                    v40 = (double)GetTickCount() * 0.1;
+                    pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                      (signed __int64)v40, 0, 255);
+                    goto LABEL_93;
                   }
                   v169 = "sp30a";
                 }
                 v38 = pIcons_LOD;
-                goto LABEL_85;
+                v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+                dword_50C9A8 -= pEventTimer->uTimeElapsed;
+                if ( dword_50C9A8 <= 0 )
+                {
+                  dword_50C9A8 = 0;
+                  *(char *)(v219 + 20) &= 0xFu;
+                  ptr_50C9A4 = 0;
+                }
+                v40 = (double)GetTickCount() * 0.1;
+                pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                  (signed __int64)v40, 0, 255);
+                goto LABEL_93;
               }
               v38 = pIcons_LOD;
-              goto LABEL_84;
+              v169 = "sptext01";
+              v39 = &pIcons_LOD->pTextures[v38->LoadTexture(v169, TEXTURE_16BIT_PALETTE)];
+              dword_50C9A8 -= pEventTimer->uTimeElapsed;
+              if ( dword_50C9A8 <= 0 )
+              {
+                dword_50C9A8 = 0;
+                *(char *)(v219 + 20) &= 0xFu;
+                ptr_50C9A4 = 0;
+              }
+              v40 = (double)GetTickCount() * 0.1;
+              pRenderer->_4A63E6(a2c, a3c, (Texture *)(v35 != -1 ? (int)&pIcons_LOD->pTextures[v35] : 0), v39,
+                (signed __int64)v40, 0, 255);
+              goto LABEL_93;
             }
             v184 = 9;
             break;
@@ -8425,7 +8755,6 @@
           if ( (*(int *)(v22 + 20) & 0xF0) == 128 )
           {
             v168 = "sp91a";
-LABEL_49:
             a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
             dword_50C9A8 -= pEventTimer->uTimeElapsed;
             if ( dword_50C9A8 <= 0 )
@@ -8439,33 +8768,58 @@
             pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
             goto LABEL_57;
           }
-LABEL_48:
           v168 = "sptext01";
-          goto LABEL_49;
+          a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+          if ( dword_50C9A8 <= 0 )
+          {
+            dword_50C9A8 = 0;
+            *(char *)(v22 + 20) &= 0xFu;
+            ptr_50C9A4 = 0;
+          }
+          v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+          v28 = (double)GetTickCount() * 0.1;
+          pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+          goto LABEL_57;
         }
         v168 = "sp30a";
       }
       v26 = pIcons_LOD;
-      goto LABEL_49;
+      a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+      dword_50C9A8 -= pEventTimer->uTimeElapsed;
+      if ( dword_50C9A8 <= 0 )
+      {
+        dword_50C9A8 = 0;
+        *(char *)(v22 + 20) &= 0xFu;
+        ptr_50C9A4 = 0;
+      }
+      v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+      v28 = (double)GetTickCount() * 0.1;
+      pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+      goto LABEL_57;
     }
     v26 = pIcons_LOD;
-    goto LABEL_48;
+    v168 = "sptext01";
+    a2b = &pIcons_LOD->pTextures[v26->LoadTexture(v168, TEXTURE_16BIT_PALETTE)];
+    dword_50C9A8 -= pEventTimer->uTimeElapsed;
+    if ( dword_50C9A8 <= 0 )
+    {
+      dword_50C9A8 = 0;
+      *(char *)(v22 + 20) &= 0xFu;
+      ptr_50C9A4 = 0;
+    }
+    v27 = (Texture *)(v241 != -1 ? (int)&pIcons_LOD->pTextures[v241] : 0);
+    v28 = (double)GetTickCount() * 0.1;
+    pRenderer->_4A63E6(v24, a3b, v27, a2b, (signed __int64)v28, 0, 255);
+    goto LABEL_57;;
   }
   a3 = pPaperdoll_BodyY;
   a2 = pPaperdoll_BodyX;
   v240 = 4 * uPlayerID_ - 4;
   pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,
     (Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dbods + v240)] : 0));
-    //(Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? 72
-    //                                                                    * *(unsigned int *)((char *)papredoll_dbods
-    //                                                                                      + v240)
-    //                                                                    + 7145548 : 0));
   if ( !bRingsShownInCharScreen )
     pRenderer->_4A612A(a2, a3,
-      //(Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? 72
-      //                                                                    * *(unsigned int *)((char *)papredoll_dbods
-      //                                                                                      + v240)
-      //                                                                    + 7145548 : 0),
       (Texture *)(*(unsigned int *)((char *)papredoll_dbods + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dbods + v240)] : 0),
       pPlayer->pEquipment.uBody);
   uPlayerID_a = 2 * v5;
@@ -8473,12 +8827,8 @@
   if ( !v6
     || (v7 = *(int *)&pPlayer->pInventoryItems[v6-1], pItemsTable->pItems[v7].uEquipType != 1)
     && (pItemsTable->pItems[v7].uSkillType != 4 || pPlayer->pEquipment.uOffHand) )
-    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[2 * v5], pPaperdoll_BodyY + pPaperdoll_LeftHand[2 * v5 + 1],
+    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[v5][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[v5][1],
       (Texture *)(*(unsigned int *)((char *)papredoll_dlads + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlads + v240)] : 0));
-      //(Texture *)(*(unsigned int *)((char *)papredoll_dlads + v240) != -1 ? 72
-      //                                                                    * *(unsigned int *)((char *)papredoll_dlads
-      //                                                                                      + v240)
-      //                                                                    + 7145548 : 0));
   v8 = pPlayer->pEquipment.uMainHand;
   if ( v8 )
   {
@@ -8488,9 +8838,9 @@
     v218 = v9;
     v11 = *(int *)v9;
     v12 = *(int *)v9;
-    v13 = pPaperdoll_BodyX + array_4E4C30[v5].field_8 - pItemsTable->pItems[v12].uEquipX;
+    v13 = pPaperdoll_BodyX + paperdoll_Weapon[v5][1][0] - pItemsTable->pItems[v12].uEquipX;
     a2a = v13;
-    a3a = pPaperdoll_BodyY + *(int *)((char *)&array_4E4C30[0].field_C + v10) - pItemsTable->pItems[v12].uEquipY;
+    a3a = pPaperdoll_BodyY + *(int *)((char *)&paperdoll_Weapon[0][1][1] + v10) - pItemsTable->pItems[v12].uEquipY;
     if ( v11 == 64 )
       v166 = "item64v1";
     else
@@ -8504,20 +8854,24 @@
         if ( (*(int *)(v218 + 20) & 0xF0) == 32 )
         {
           v167 = "sp28a";
-          goto LABEL_27;
+          //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+          v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+          if ( dword_50C9A8 <= 0 )
+          {
+            dword_50C9A8 = 0;
+            *(char *)(v218 + 20) &= 0xFu;
+            ptr_50C9A4 = 0;
+          }
+          v17 = (double)GetTickCount() * 0.1;
+          pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+          goto LABEL_393;;
         }
         if ( (*(int *)(v218 + 20) & 0xF0) == 64 )
         {
           v167 = "sp30a";
-          goto LABEL_27;
-        }
-        if ( (*(int *)(v218 + 20) & 0xF0) == 128 )
-        {
-          v167 = "sp91a";
-LABEL_27:
           //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
           v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
-
           dword_50C9A8 -= pEventTimer->uTimeElapsed;
           if ( dword_50C9A8 <= 0 )
           {
@@ -8526,19 +8880,39 @@
             ptr_50C9A4 = 0;
           }
           v17 = (double)GetTickCount() * 0.1;
-          pRenderer->_4A63E6(
-            v13,
-            a3a,
-            (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0),
-            v16,
-            (signed __int64)v17,
-            0,
-            255);
+          pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+          goto LABEL_393;
+        }
+        if ( (*(int *)(v218 + 20) & 0xF0) == 128 )
+        {
+          v167 = "sp91a";
+          //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+          v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+          dword_50C9A8 -= pEventTimer->uTimeElapsed;
+          if ( dword_50C9A8 <= 0 )
+          {
+            dword_50C9A8 = 0;
+            *(char *)(v218 + 20) &= 0xFu;
+            ptr_50C9A4 = 0;
+          }
+          v17 = (double)GetTickCount() * 0.1;
+          pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
           goto LABEL_393;
         }
       }
       v167 = "sptext01";
-      goto LABEL_27;
+      //v16 = (Texture *)(72 * pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE) + 7145548);
+      v16 = &pIcons_LOD->pTextures[pIcons_LOD->LoadTexture(v167, TEXTURE_16BIT_PALETTE)];
+      dword_50C9A8 -= pEventTimer->uTimeElapsed;
+      if ( dword_50C9A8 <= 0 )
+      {
+        dword_50C9A8 = 0;
+        *(char *)(v218 + 20) &= 0xFu;
+        ptr_50C9A4 = 0;
+      }
+      v17 = (double)GetTickCount() * 0.1;
+      pRenderer->_4A63E6(v13, a3a, (Texture *)(v14 != -1 ? (int)&pIcons_LOD->pTextures[v14] : 0), v16, (signed __int64)v17, 0, 255);
+      goto LABEL_393;
     }
     v18 = v14 + 1;
     v19 = (char *)&pIcons_LOD->pTextures[v14];
@@ -8567,22 +8941,14 @@
   pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[uPlayerID_a],
     pPaperdoll_BodyY + pPaperdoll_RightHand[uPlayerID_a + 1],
     (Texture *)(*(unsigned int *)((char *)papredoll_drhs + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_drhs + v240)] : 0));
-    //(Texture *)(*(unsigned int *)((char *)papredoll_drhs + v240) != -1 ? 72
-    //                                                                   * *(unsigned int *)((char *)papredoll_drhs + v240)
-    //                                                                   + 7145548 : 0));
   v161 = v217->pEquipment.uMainHand;
   if ( v161 )
   {
     v162 = *(int *)&v217->pInventoryItems[v161-1];
-    if ( pItemsTable->pItems[v162].uEquipType == 1
-      || pItemsTable->pItems[v162].uSkillType == 4 && !v217->pEquipment.uOffHand )
-      pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[uPlayerID_a],
-        pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[uPlayerID_a + 1],
+    if ( pItemsTable->pItems[v162].uEquipType == 1 || pItemsTable->pItems[v162].uSkillType == 4 && !v217->pEquipment.uOffHand )
+      pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[0][uPlayerID_a],
+        pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[0][uPlayerID_a + 1],
         (Texture *)(*(unsigned int *)((char *)papredoll_dlhus + v240) != -1 ? (int)&pIcons_LOD->pTextures[*(unsigned int *)((char *)papredoll_dlhus + v240)] : 0));
-        //(Texture *)(*(unsigned int *)((char *)papredoll_dlhus + v240) != -1 ? 72
-        //                                                                    * *(unsigned int *)((char *)papredoll_dlhus
-        //                                                                                      + v240)
-        //                                                                    + 7145548 : 0));
   }
   if ( !bRingsShownInCharScreen )
     pRenderer->DrawTextureTransparent(0x25Bu, 0x12Bu,
--- a/mm7_data.cpp	Tue Feb 19 15:39:50 2013 +0200
+++ b/mm7_data.cpp	Tue Feb 19 15:40:11 2013 +0200
@@ -281,11 +281,11 @@
 #include "MM7.h"
 stru161 stru_4ECBB8[6];
 stru289 stru_6BE158;
-stru329 array_4E4C30[4] ={
-	{0x80, 0xCD, 0x1E, 0x90, 0x58, 0x55, 0, 0, 0, 0, 0, 0, 0x11, 0x68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-	{0x83, 0xC9, 0x26, 0x9E, 0x62, 0x57, 0, 0, 0, 0, 0, 0, 0x15, 0x64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-	{0x83, 0xD8, 0x1D, 0xBA, 0x58, 0x77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0},
-	{0x7B, 0xD8, 0x23, 0xB8, 0x62, 0x77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
+int paperdoll_Weapon[4][16][2] = {//4E4C30
+  0x80, 0xCD,  0x1E, 0x90,  0x58, 0x55,  0, 0,  0, 0,  0, 0,  0x11, 0x68,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,
+  0x83, 0xC9,  0x26, 0x9E,  0x62, 0x57,  0, 0,  0, 0,  0, 0,  0x15, 0x64,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,
+  0x83, 0xD8,  0x1D, 0xBA,  0x58, 0x77,  0, 0,  0, 0,  0, 0,  0, 0,        0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,
+  0x7B, 0xD8,  0x23, 0xB8,  0x62, 0x77,  0, 0,  0, 0,  0, 0,  0, 0,        0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,  0, 0,
 };
 stru332 stru_511698;
 stru333 stru_511718;
@@ -650,45 +650,74 @@
 char aErrorNoMouseFo[22]; // weak
 int pPaperdoll_BodyX = 481;
 int pPaperdoll_BodyY = 0;
-int paperdoll_array_4E4E30[4][17][2] =
+int paperdoll_Armor[4][17][2] = //0x4E4E30
 {
-0x2C, 0x67, 0x30, 0x69, 0x2D, 0x67, 0x2C, 0x64, 0x14, 0x66, 0x22,
-0x67, 0x20, 0x66, 0x25, 0x66, 0x12, 0x66, 0x0A, 0x66, 0x13, 0x64,
-0x0E, 0x64, 0x0A, 0x63, 0x14, 0x66, 0x0A, 0x63, 0x0A, 0x66, 0x25,
-0x66, 0x32, 0x68, 0x32, 0x69, 0x35, 0x69, 0x33, 0x68, 0x24, 0x67,
-0x30, 0x69, 0x33, 0x68, 0x31, 0x69, 0x19, 0x69, 0x19, 0x6A, 0x16,
-0x66, 0x16, 0x65, 0x0F, 0x6B, 0x24, 0x67, 0x0F, 0x6B, 0x19, 0x6A,
-0x31, 0x69, 0x2A, 0x8C, 0x29, 0x8C, 0x2A, 0x89, 0x29, 0x86, 0x12,
-0x87, 0x2D, 0x89, 0x2A, 0x88, 0x25, 0x87, 0x12, 0x8B, 0x12, 0x8B,
-0x11, 0x8A, 0x15, 0x87, 0x09, 0x89, 0x12, 0x87, 0x09, 0x89, 0x12, 0x8B,
-0x25, 0x87, 0x33, 0x90, 0x32, 0x90, 0x34, 0x91, 0x32, 0x8E, 0x21,
-0x8B, 0x31, 0x8B, 0x33, 0x8E, 0x2F, 0x8F, 0x16, 0x8D, 0x18, 0x8C,
-0x19, 0x8C, 0x1B, 0x8E, 0x0C, 0x8C, 0x21, 0x8B, 0x0C, 0x8C, 0x18,
-0x8C, 0x2F, 0x8F
+// X     Y
+  0x2C, 0x67,  0x30, 0x69,  0x2D, 0x67,  0x2C, 0x64,  0x14, 0x66,  0x22, 0x67,  0x20, 0x66,  0x25, 0x66,  0x12, 0x66,//Human
+  0x0A, 0x66,  0x13, 0x64,  0x0E, 0x64,  0x0A, 0x63,  0x14, 0x66,  0x0A, 0x63,  0x0A, 0x66,  0x25, 0x66,
+
+  0x32, 0x68,  0x32, 0x69,  0x35, 0x69,  0x33, 0x68,  0x24, 0x67,  0x30, 0x69,  0x33, 0x68,  0x31, 0x69,  0x19, 0x69,
+  0x19, 0x6A,  0x16, 0x66,  0x16, 0x65,  0x0F, 0x6B,  0x24, 0x67,  0x0F, 0x6B,  0x19, 0x6A,  0x31, 0x69,
+
+  0x2A, 0x8C,  0x29, 0x8C,  0x2A, 0x89,  0x29, 0x86,  0x12, 0x87,  0x2D, 0x89,  0x2A, 0x88,  0x25, 0x87,  0x12, 0x8B,
+  0x12, 0x8B,  0x11, 0x8A,  0x15, 0x87,  0x09, 0x89,  0x12, 0x87,  0x09, 0x89,  0x12, 0x8B,  0x25, 0x87,
+
+  0x33, 0x90,  0x32, 0x90,  0x34, 0x91,  0x32, 0x8E,  0x21, 0x8B,  0x31, 0x8B,  0x33, 0x8E,  0x2F, 0x8F,  0x16, 0x8D,
+  0x18, 0x8C,  0x19, 0x8C,  0x1B, 0x8E,  0x0C, 0x8C,  0x21, 0x8B,  0x0C, 0x8C,  0x18, 0x8C,  0x2F, 0x8F,
 };
-int dword_4E5050[8] = 
+int paperdoll_shoulder[4][17][2] = 
 {
-0x64, 0x67, 0x61, 0x67, 0x65, 0x68, 0x6E, 0x74
+  0x64, 0x67,  0x61, 0x67,  0x65, 0x68,  0x6E, 0x74,  0x6C, 0x68,  0x61, 0x67,  0x66, 0x68,  0x6C, 0x6A,  0x6E, 0x6D,
+  0x67, 0x69,  0x70, 0x67,  0x6E, 0x6D,  0x6C, 0x6F,  0x6C, 0x68,  0x6C, 0x6F,  0x67, 0x69,  0x6C, 0x6A,
+
+  0x60, 0x6B,  0x60, 0x6C,  0x60, 0x6B,  0x61, 0x6A,  0x60, 0x69,  0x60, 0x6A,  0x60, 0x6A,  0x61, 0x69,  0x63, 0x6A,
+  0x64, 0x6A,  0x61, 0x66,  0x66, 0x67,  0x64, 0x6C,  0x60, 0x69,  0x64, 0x6C,  0x64, 0x6A,  0x61, 0x69,
+
+  0x6D, 0x8C,  0x75, 0x8C,  0, 0,        0x72, 0x8D,  0x6A, 0x89,  0, 0,        0x73, 0x8C,  0x69, 0x8C,  0x6E, 0x8D,
+  0x71, 0x8D,  0x70, 0x8D,  0x72, 0x8D,  0x74, 0x8E,  0x6A, 0x89,  0x74, 0x8E,  0x71, 0x8D,  0x69, 0x8C,
+
+  0x72, 0x91,  0x72, 0x91,  0, 0,        0x6E, 0x92,  0x6F, 0x91,  0, 0,        0, 0,        0x6E, 0x91,  0x71, 0x90,
+  0x72, 0x8D,  0x72, 0x90,  0x73, 0x93,  0x73, 0x90,  0x6F, 0x91,  0x73, 0x90,  0x72, 0x8D,  0x6E, 0x91,
 };
 int dword_4E5270[8];
-int dword_4E5490[4][7][2];
-int paredoll_array_4E54B8[3][14];
-int paperdoll_array_4E5570[4][10][2];
+int paperdoll_Boot[4][7][2] = //4E5490
+{
+  0xE, 0x11D,    0xD, 0x11D,    0xC, 0x10A,    0xA, 0xFF,    0xD, 0xF9,    0xD, 0x137,   0xC, 0x10E,
+  0x14, 0x125,   0x13, 0x122,   0x15, 0x120,   0x15, 0x114,  0x13, 0x10A,  0x11, 0x13E,  0x11, 0x116,
+  0x1D, 0x121,   0x1C, 0x11F,   0x1B, 0x11B,   0x1C, 0x117,  0x16, 0x116,  0x1B, 0x137,  0x1B, 0x11B,
+  0x1F, 0x127,   0x1F, 0x122,   0x1B, 0x11B,   0x1D, 0x117,  0x1D, 0x116,  0x1D, 0x137,  0x1B, 0x11F,
+};
+int paperdoll_Cloak[4][10][2] = //0x4E5570
+{
+  0x11, 0x68,  0xF, 0x68,  0x14, 0x71,  0x19, 0x6B,  0x21, 0x6F,  0x5, 0x68,  0x5, 0x68,  0x14, 0x71,  0x3, 0x6B,  0xF, 0x6F,
+  0x15, 0x64,  0xB, 0x6B,  0xE, 0x67,   0x15, 0x6B,  0x1B, 0x6F,  0x3, 0x6B,  0, 0x6B,    0xE, 0x67,   0, 0x6B,    0x3, 0x6F,
+  0x10, 0x8A,  0x9, 0x8B,  0x18, 0x98,  0x25, 0x91,  0x29, 0x90,  0x8, 0x8A,  0x9, 0x8B,  0x18, 0x98,  0x3, 0x91,  0x3, 0x90,
+  0x14, 0x92,  0x10, 0x92, 0x15, 0x98,  0x1F, 0x91,  0x22, 0x90,  0x8, 0x92,  0xC, 0x92,  0x15, 0x98,  0x3, 0x91,  0x3, 0x90,
+};
 int dword_4E56B0; // weak
 int dword_4E56B4; // weak
-int dword_4E57F0[4][7][2];
-int dword_4E58D0[777]; // weak
-int dword_4E58D4[777]; // weak
-int dword_4E5AD0[777]; // weak  52
+int paperdoll_Belt[4][7][2] = //0x4E57F0
+{
+  0x3A, 0xB6,  0x37, 0xB2,  0x34, 0xB9,  0x3A, 0xB9,  0x37, 0xB7,  0x38, 0xAC,  0x37, 0xB7,
+  0x3E, 0xAD,  0x3A, 0xAC,  0x37, 0xB0,  0x3A, 0xB1,  0x39, 0xB0,  0x3C, 0xA5,  0x39, 0xB0,
+  0x3B, 0xD5,  0x37, 0xD2,  0x31, 0xD5,  0x39, 0xD6,  0x37, 0xD8,  0x37, 0xD1,  0x37, 0xD8,
+  0x42, 0xD2,  0x3F, 0xD0,  0x3B, 0xD7,  0x3C, 0xD5,  0x3B, 0xD6,  0x3E, 0xCF,  0x36, 0xD6,
+};
+int dword_4E58D0[777]; // HelmX 62 maybe array???
+int dword_4E58D4[777]; // HelmY 31
+int pPaperdoll_Beards[4] = //0x4E5AD0
+{
+ 52, 130, 56, 136,
+};
 int dword_4E5AD4[777]; // weak
-int pPaperdoll_LeftHand[8] =
+int pPaperdoll_LeftHand[4][2] =
 {
   0x67, 0x6A,
   0x65, 0x6C,
   0x74, 0x8D,
   0x74, 0x93,
 };
-int pPaperdoll_SecondLeftHand[8] =
+int pPaperdoll_SecondLeftHand[4][2] =
 {
   0x1A, 0x6B,
   0x28, 0x6D,
--- a/mm7_data.h	Tue Feb 19 15:39:50 2013 +0200
+++ b/mm7_data.h	Tue Feb 19 15:40:11 2013 +0200
@@ -629,21 +629,20 @@
 extern char aErrorNoMouseFo[22]; // weak
 extern int pPaperdoll_BodyX; // weak
 extern int pPaperdoll_BodyY; // weak
-extern int paperdoll_array_4E4E30[4][17][2];
-extern int dword_4E5050[8];
+extern int paperdoll_Armor[4][17][2];
+extern int paperdoll_shoulder[4][17][2];
 extern int dword_4E5270[8];
-extern int dword_4E5490[4][7][2];
-extern int paredoll_array_4E54B8[3][14];
-extern int paperdoll_array_4E5570[4][10][2];
+extern int paperdoll_Boot[4][7][2];
+extern int paperdoll_Cloak[4][10][2];
 extern int dword_4E56B0; // weak
 extern int dword_4E56B4; // weak
-extern int dword_4E57F0[4][7][2];
+extern int paperdoll_Belt[4][7][2];
 extern int dword_4E58D0[]; // weak
 extern int dword_4E58D4[]; // weak
-extern int dword_4E5AD0[]; // weak
+extern int pPaperdoll_Beards[4]; // weak
 extern int dword_4E5AD4[]; // weak
-extern int pPaperdoll_LeftHand[8];
-extern int pPaperdoll_SecondLeftHand[8];
+extern int pPaperdoll_LeftHand[4][2];
+extern int pPaperdoll_SecondLeftHand[4][2];
 extern int pPaperdoll_RightHand[8];
 extern int pPaperdollLeftEmptyHand[8];
 extern int pPaperdollRingsX[6];