changeset 1455:bfe342ae0c1f

DrawPaperdoll cleaning
author Ritor1
date Fri, 09 Aug 2013 17:30:33 +0600
parents 7d3bed7772cb
children 9dc33590f93e b330df6a2183 cfd99b6177a3
files CastSpellInfo.cpp CastSpellInfo.h GUIButton.cpp Items.h Player.cpp Render.cpp Render.h UI/Books/UISpellBook.cpp UI/UIBooks.cpp UI/UICharacter.cpp mm7_5.cpp mm7_data.h
diffstat 12 files changed, 518 insertions(+), 756 deletions(-) [+]
line wrap: on
line diff
--- a/CastSpellInfo.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/CastSpellInfo.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -4386,7 +4386,7 @@
         ++pIcons_LOD->uTexturePacksCount;
         if ( !pIcons_LOD->uNumPrevLoadedFiles )
           pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-        pGUIWindow_Settings = pCastSpellInfo[result].sub_4219BE();
+        pGUIWindow_Settings = pCastSpellInfo[result].GetCastSpellInInventoryWindow();
         unk_50C9A0 = 1;
         some_active_character = uActiveCharacter;
         sub_421B2C_PlaceInInventory_or_DropPickedItem();
--- a/CastSpellInfo.h	Thu Aug 08 16:34:37 2013 +0600
+++ b/CastSpellInfo.h	Fri Aug 09 17:30:33 2013 +0600
@@ -19,7 +19,7 @@
 
   void _427D48(unsigned int uPlayerID);
   unsigned int PushCastSpellInfo(__int16 a2, __int16 uPlayerID, __int16 skill_level, __int16 a5, int sound_id);
-  struct GUIWindow *sub_4219BE();
+  struct GUIWindow *GetCastSpellInInventoryWindow();
   void _427E01_cast_spell();
 
   __int16 spellnum;
--- a/GUIButton.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/GUIButton.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -208,25 +208,25 @@
   }
 }
 //----- (00419220) --------------------------------------------------------
-void __cdecl sub_419220()
+void __cdecl CreateAwardsScrollBar()
 {
-  GUIButton *i; // eax@2
+  GUIButton *pButton; // eax@2
 
   if ( !dword_507CBC )
   {
     dword_507CBC = 1;
-    for ( i = pGUIWindow_CurrentMenu->pControlsHead; i; i = i->pNext )
+    for ( pButton = pGUIWindow_CurrentMenu->pControlsHead; pButton; pButton = pButton->pNext )
     {
-      if ( i->msg == UIMSG_InventoryLeftClick )
+      if ( pButton->msg == UIMSG_InventoryLeftClick )
       {
-        dword_50698C_uX = i->uX;
-        dword_506988_uY = i->uY;
-        dword_506984_uZ = i->uZ;
-        dword_506980_uW = i->uW;
-        i->uW = 0;
-        i->uZ = 0;
-        i->uY = 0;
-        i->uX = 0;
+        dword_50698C_uX = pButton->uX;
+        dword_506988_uY = pButton->uY;
+        dword_506984_uZ = pButton->uZ;
+        dword_506980_uW = pButton->uW;
+        pButton->uW = 0;
+        pButton->uZ = 0;
+        pButton->uY = 0;
+        pButton->uX = 0;
       }
     }
     pBtn_Up = pGUIWindow_CurrentMenu->CreateButton(438, 46,
--- a/Items.h	Thu Aug 08 16:34:37 2013 +0600
+++ b/Items.h	Fri Aug 09 17:30:33 2013 +0600
@@ -23,10 +23,10 @@
   ITEM_IDENTIFIED = 0x1,
   ITEM_BROKEN = 0x2,
   ITEM_TEMP_BONUS = 0x8,
-  ITEM_AURA_EFFECT_RED = 0x10,
-  ITEM_AURA_EFFECT_BLUE = 0x20,
-  ITEM_AURA_EFFECT_GREEN = 0x40,
-  ITEM_AURA_EFFECT_PURPLE = 0x80,
+  ITEM_AURA_EFFECT_RED = 0x10,//16
+  ITEM_AURA_EFFECT_BLUE = 0x20,//32
+  ITEM_AURA_EFFECT_GREEN = 0x40,//64
+  ITEM_AURA_EFFECT_PURPLE = 0x80,//128
   ITEM_STOLEN = 0x100,
   ITEM_ENCHANTED = 0x200,
 };
@@ -67,7 +67,8 @@
   ITEM_DEVIL_ICHOR = 0xD6,
   ITEM_OOZE_ECTOPLASM_BOTTLE = 0xD9,
   ITEM_POTION_BOTTLE = 0xDC,
-  ITEM_SPELLBOOK_FIRE_STRIKE = 0x191,
+  ITEM_SPELLBOOK_TORCHLIGHT = 400,//0x190
+  ITEM_SPELLBOOK_FIRE_STRIKE = 401,//0x191,
   ITEM_SPELLBOOK_AIR_FEATHER_FALL = 0x19C,
   ITEM_SPELLBOOK_WATER_POISON_SPRAY = 0x1A7,
   ITEM_SPELLBOOK_EARTH_SLOW = 0x1B2,
@@ -79,7 +80,7 @@
   ITEM_SPELLBOOK_LIGHT_LIGHT_BOLT = 0x1DD,
   ITEM_SPELLBOOK_LIGHT_SUN_BURST = 0x1E6,
   ITEM_SPELLBOOK_LIGHT_DIVINE_INTERVENTION = 0x1E7,
-  ITEM_ARTIFACT_PUCK = 0x1F4,
+  ITEM_ARTIFACT_PUCK = 500,//0x1F4,
   ITEM_ARTICACT_GOVERNONS_ARMOR = 504,//1F8
   ITEM_ARTIFACT_YORUBA = 505,//1F9
   ITEM_ARTIFACT_SPLITTER = 506,//1FA
--- a/Player.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/Player.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -7047,7 +7047,7 @@
           || var_type > VAR_History_28
           || (v22 = var_type - 276, pParty->field_3C.field_4F0[2 * v22 + 1] | pParty->field_3C.field_4F0[2 * v22])
           || (pParty->field_3C.field_4F0[2 * (var_type - 276)] = LODWORD(pParty->uTimePlayed),
-              v23 = pStorylineText->StoreLine[v22].pText==0,//*(&pStorylineText->field_0 + 3 * v22) == 0,
+              v23 = pStorylineText->StoreLine[v22].pText == 0,//*(&pStorylineText->field_0 + 3 * v22) == 0,
               pParty->field_3C.field_4F0[2 * (var_type - 276) + 1] = HIDWORD(pParty->uTimePlayed),
               v23) )
           return;
--- a/Render.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/Render.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -7842,7 +7842,7 @@
 }
 
 //----- (004A63E6) --------------------------------------------------------
-void Render::_4A63E6(unsigned int a2, unsigned int a3, Texture *a4, Texture *a5, int a6, int a7, int a8)
+void Render::DrawAura(unsigned int a2, unsigned int a3, Texture *a4, Texture *a5, int a6, int a7, int a8)
 {
   Texture *v8; // eax@2
   Texture *v9; // ebx@4
--- a/Render.h	Thu Aug 08 16:34:37 2013 +0600
+++ b/Render.h	Fri Aug 09 17:30:33 2013 +0600
@@ -344,7 +344,7 @@
   void ZBuffer_Fill_2(signed int a2, signed int a3, struct Texture *pTexture, int a5);
   void DrawMaskToZBuffer(signed int uOutX, unsigned int uOutY, struct Texture *pTexture, int zVal);
   void DrawTextureTransparent(unsigned int uX, unsigned int uY, struct Texture *pTexture);
-  void _4A63E6(unsigned int a2, unsigned int a3, struct Texture *a4, struct Texture *a5, int a6, int a7, int a8);
+  void DrawAura(unsigned int a2, unsigned int a3, struct Texture *a4, struct Texture *a5, int a6, int a7, int a8);
   void _4A65CC(unsigned int x, unsigned int y, struct Texture *a4, struct Texture *a5, int a6, int a7, int a8);
   void DrawTransparentRedShade(unsigned int a2, unsigned int a3, struct Texture *a4);
   void DrawTransparentGreenShade(signed int a2, signed int a3, struct Texture *pTexture);
--- a/UI/Books/UISpellBook.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/UI/Books/UISpellBook.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -3,7 +3,6 @@
 #endif
 
 #include <assert.h>
-
 #include "..\..\MM7.h"
 #include "..\..\Render.h"
 #include "..\..\Mouse.h"
@@ -16,10 +15,8 @@
 #include "..\..\Allocator.h"
 #include "..\..\Viewport.h"
 #include "..\..\texts.h"
-//
 #include "..\..\mm7_data.h"
 
-
 std::array<char *, 9> spellbook_texture_filename_suffices = {{"f", "a", "w", "e", "s", "m", "b", "l", "d"}}; // weak
 
 //----- (00411300) --------------------------------------------------------
@@ -66,12 +63,10 @@
 //----- (00412AF9) --------------------------------------------------------
 static void BookUI_Spellbook_DrawCurrentSchoolBackground()
 {
-  int v0; // ecx@1
-
-  v0 = 0;
+  int pTexID = 0;
   if ( uActiveCharacter )
-    v0 = pParty->pPlayers[uActiveCharacter - 1].lastOpenedSpellbookPage;//*((char *)&pParty->pPartyBuffs[5].uExpireTime + 6972 * uActiveCharacter + 2);
-  pRenderer->DrawTextureIndexed(8, 8, pSpellBookPagesTextr[v0]);
+    pTexID = pParty->pPlayers[uActiveCharacter - 1].lastOpenedSpellbookPage;
+  pRenderer->DrawTextureIndexed(8, 8, pSpellBookPagesTextr[pTexID]);
   pRenderer->DrawTextureIndexed(476, 450, pSBQuickSpellBtnTextr);
   pRenderer->DrawTextureIndexed(561, 450, pSpellBookCloseBtnTextr);
 }
--- a/UI/UIBooks.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/UI/UIBooks.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -3,9 +3,7 @@
 #endif
 
 #include <assert.h>
-
 #include "..\MM7.h"
-
 #include "UIBooks.h"
 #include "..\Render.h"
 #include "..\GUIWindow.h"
@@ -13,15 +11,8 @@
 #include "..\AudioPlayer.h"
 #include "..\LOD.h"
 #include "..\Allocator.h"
-
-
 #include "..\mm7_data.h"
 
-
-
-
-
-
 //----- (00413CC6) --------------------------------------------------------
 void BookUI_Draw(WindowType book)
 {
@@ -42,20 +33,16 @@
 //----- (0041192C) --------------------------------------------------------
 void InitializeBookTextures()
 {
-
   pAudioPlayer->StopChannels(-1, -1);
-
   ++pIcons_LOD->uTexturePacksCount;
   if ( !pIcons_LOD->uNumPrevLoadedFiles )
     pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-
   pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
   pSpellBookPagesTextr_9 = pIcons_LOD->LoadTexturePtr("book", TEXTURE_16BIT_PALETTE);
   pTexture_pagemask = pIcons_LOD->LoadTexturePtr("pagemask", TEXTURE_16BIT_PALETTE);
   pSpellBookCloseBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m5-u", TEXTURE_16BIT_PALETTE);
   pSpellBookClickCloseBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m5-d", TEXTURE_16BIT_PALETTE);
   pSBQuickSpellBtnTextr   = pIcons_LOD->LoadTexturePtr("ib-m6-u",TEXTURE_16BIT_PALETTE);
-  //v0 = 1;
 
   static const char *texNames[9] = // 004E24EC
   {
@@ -64,13 +51,12 @@
   };
 
   pSBClickQuickSpellBtnTextr = pIcons_LOD->LoadTexturePtr("ib-m6-d",TEXTURE_16BIT_PALETTE);
-  for (uint i = 0; i < 9; ++i)
+  for ( uint i = 0; i < 9; ++i )
   {
     pSpellBookPagesTextr[i] = pIcons_LOD->LoadTexturePtr(texNames[i], TEXTURE_16BIT_PALETTE);
-
-    sprintf(pTmpBuf.data(), "tab%da", i+1);
+    sprintf(pTmpBuf.data(), "tab%da", i + 1);
     pTextures_tabs[i][0] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE);
-    sprintf(pTmpBuf.data(), "tab%db", i+1);
+    sprintf(pTmpBuf.data(), "tab%db", i + 1);
     pTextures_tabs[i][1] = pIcons_LOD->LoadTexturePtr(pTmpBuf.data(), TEXTURE_16BIT_PALETTE);
   }
 }
@@ -79,11 +65,9 @@
 void InitializeBookFonts()
 {
   pAudioPlayer->StopChannels(-1, -1);
-
   ++pIcons_LOD->uTexturePacksCount;
   if ( !pIcons_LOD->uNumPrevLoadedFiles )
     pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-
   pAudioPlayer->PlaySound(SOUND_OpenBook, 0, 0, -1, 0, 0, 0, 0);
   pTexture_mapbordr = pIcons_LOD->LoadTexturePtr("mapbordr", TEXTURE_16BIT_PALETTE);
   pBookFont = LoadFont("book.fnt", "FONTPAL", NULL);
@@ -96,7 +80,6 @@
 void OnCloseSpellBookPage()
 {
   GUIButton *pNextButton; // esi@4
-
   for ( uint i = 1; i <= 11; i++ )
   {
     SBPageCSpellsTextureList[i]->Release();
@@ -124,7 +107,7 @@
   pTexture_pagemask->Release();
   pSpellBookCloseBtnTextr->Release();
   pSBQuickSpellBtnTextr->Release();
-  for (uint i = 0; i < 9; ++i)
+  for ( uint i = 0; i < 9; ++i )
   {
     pSpellBookPagesTextr[i]->Release();
     pTextures_tabs[i][0]->Release();
--- a/UI/UICharacter.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/UI/UICharacter.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -3,11 +3,8 @@
 #endif
 
 #include <assert.h>
-
 #include <algorithm> 
-
 #include "..\MM7.h"
-
 #include "..\MapInfo.h"
 #include "..\Game.h"
 #include "..\GUIWindow.h"
@@ -23,7 +20,6 @@
 #include "..\Awards.h"
 #include "..\CastSpellInfo.h"
 #include "..\texts.h"
-
 #include "..\mm7_data.h"
 #include "..\Mouse.h"
 #include "..\Allocator.h"
@@ -31,7 +27,6 @@
 
 int bRingsShownInCharScreen; // 5118E0
 
-
 unsigned int ui_mainmenu_copyright_color;
 
 unsigned int ui_character_tooltip_header_default_color;
@@ -91,7 +86,6 @@
 unsigned int ui_house_player_cant_interact_color;
 
 
-
 void set_default_ui_skin()
 {
   ui_mainmenu_copyright_color = TargetColor(255, 255, 255);
@@ -202,7 +196,6 @@
 int paperdoll_helm_texture[2][16]; //511698
 int paperdoll_belt_texture[4][7];  //511718
 
-
 const int paperdoll_Weapon[4][16][2] = {//4E4C30
     {{128, 205},  {30, 144},  {88,  85},  {0, 0},  {0, 0},  {0, 0},  {17, 104},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0}},
     {{131, 201},  {38, 158},  {98,  87},  {0, 0},  {0, 0},  {0, 0},  {21, 100},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0},  {0, 0}},
@@ -210,8 +203,6 @@
     {{123, 216},  {35, 184},  {98, 119},  {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}},
     };
 
-
-
 const int paperdoll_Boot[4][7][2] = //4E5490
     {
     0xE, 0x11D,    0xD, 0x11D,    0xC, 0x10A,    0xA, 0xFF,    0xD, 0xF9,    0xD, 0x137,   0xC, 0x10E,
@@ -379,7 +370,6 @@
 const  int pMagicSkills[9]  = {PLAYER_SKILL_FIRE,    PLAYER_SKILL_AIR,        PLAYER_SKILL_WATER,        PLAYER_SKILL_EARTH,   PLAYER_SKILL_SPIRIT,    
     PLAYER_SKILL_MIND,     PLAYER_SKILL_BODY,        PLAYER_SKILL_LIGHT,      PLAYER_SKILL_DARK};
 
-
 //----- (00421626) --------------------------------------------------------
 GUIWindow *CharacterUI_Initialize(unsigned int _this)
 {
@@ -441,29 +431,29 @@
 }
 
 //----- (004219BE) --------------------------------------------------------
-GUIWindow *CastSpellInfo::sub_4219BE()
+GUIWindow *CastSpellInfo::GetCastSpellInInventoryWindow()
 {
-  GUIWindow *v2; // ebx@1
+  GUIWindow *CS_inventory_window; // ebx@1
 
   pEventTimer->Pause();
   pAudioPlayer->StopChannels(-1, -1);
   bRingsShownInCharScreen = 0;
   CharacterUI_LoadPaperdollTextures();
   pCurrentScreen = SCREEN_CASTING;
-  v2 = GUIWindow::Create(0, 0, 640, 480, WINDOW_CastSpell_InInventory, (int)this, 0);
-  pCharacterScreen_ExitBtn = v2->CreateButton(394, 318, 75, 33, 1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0,
+  CS_inventory_window = GUIWindow::Create(0, 0, 640, 480, WINDOW_CastSpell_InInventory, (int)this, 0);
+  pCharacterScreen_ExitBtn = CS_inventory_window->CreateButton(394, 318, 75, 33, 1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0,
                  pGlobalTXT_LocalizationStrings[79], // Close
                  pIcons_LOD->GetTexture(papredoll_dbrds[2]),
                  pIcons_LOD->GetTexture(papredoll_dbrds[1]), 0);
-  v2->CreateButton(0, 0, 0x1DCu, 0x159u, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0);
-  pCharacterScreen_DollBtn = v2->CreateButton(0x1DCu, 0, 0xA4u, 0x159u, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0);
+  CS_inventory_window->CreateButton(0, 0, 0x1DCu, 0x159u, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0);
+  pCharacterScreen_DollBtn = CS_inventory_window->CreateButton(0x1DCu, 0, 0xA4u, 0x159u, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0);
 
-  v2->CreateButton( 61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
-  v2->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
-  v2->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
-  v2->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
+  CS_inventory_window->CreateButton( 61, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 1, '1', "", 0);
+  CS_inventory_window->CreateButton(177, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 2, '2', "", 0);
+  CS_inventory_window->CreateButton(292, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 3, '3', "", 0);
+  CS_inventory_window->CreateButton(407, 424, 31, 0, 2, 94, UIMSG_SelectCharacter, 4, '4', "", 0);
 
-  return v2;
+  return CS_inventory_window;
 }
 
 static int CharacterUI_SkillsTab_Draw__DrawSkillTable(Player *player, int x, int y, const int *skill_list, int skill_list_size, int right_margin, const char *skill_group_name)
@@ -474,7 +464,7 @@
   pGUIWindow_CurrentMenu->DrawText(pFontArrus, x, y, ui_character_header_text_color, pTmpBuf.data(), 0, 0, 0);
 
   int num_skills_drawn = 0;
-  for (uint i = 0; i < skill_list_size; ++i)
+  for (int i = 0; i < skill_list_size; ++i)
   {
     auto skill = (PLAYER_SKILL_TYPE)skill_list[i];
     for (uint j = 0; j < pGUIWindow_CurrentMenu->uNumControls; ++j)
@@ -528,7 +518,6 @@
 
         if (!skill_mastery_color)
           skill_mastery_color = ui_character_header_text_color;
-
         sprintfex(pTmpBuf.data(), "%s \f%05d%s\f%05d\r%03d%2d", pSkillNames[skill], skill_mastery_color, skill_level_str, skill_color, right_margin, skill_level);
         pGUIWindow_CurrentMenu->DrawText(pFontLucida, x, v8->uY, skill_color, pTmpBuf.data(), 0, 0, 0);
       }
@@ -544,8 +533,6 @@
   return y_offset;
 }
 
-
-
 //----- (00419719) --------------------------------------------------------
 void CharacterUI_SkillsTab_Draw(Player *player)
 {
@@ -573,40 +560,13 @@
   y = CharacterUI_SkillsTab_Draw__DrawSkillTable(player, 248, y, pMiscSkills, 12, 177, pGlobalTXT_LocalizationStrings[143]); //"Misc"
 }
 
-
-
-
-
-
-
-
-
-
 //----- (0041A000) --------------------------------------------------------
 void CharacterUI_AwardsTab_Draw(Player *player)
 {
-    //unsigned int v1; // esi@1
-    //unsigned int v2; // ebx@1
-    //unsigned int award_texture_id; // eax@1
-    unsigned int result; // eax@1
-    int v5; // eax@15
-    char *v6; // ebx@15
-    int v7; // eax@23
-    int v8; // eax@24
-    int v9; // eax@25
-    //int v10; // eax@27
-    int v11; // eax@32
-    int v12; // eax@33
-    int v13; // eax@34
-    //signed int v14; // eax@43
-    //unsigned int v15; // eax@43
-    //int v16; // eax@43
-    //int v17; // [sp-4h] [bp-D4h]@16
-    char Source[100]; // [sp+Ch] [bp-C4h]@1
-    GUIWindow a1; // [sp+70h] [bp-60h]@1
-    //unsigned int v20; // [sp+C4h] [bp-Ch]@15
-    //int v21; // [sp+C8h] [bp-8h]@14
-    //int v22; // [sp+CCh] [bp-4h]@40
+  unsigned int result; // eax@1
+  char *v6; // ebx@15
+  char Source[100]; // [sp+Ch] [bp-C4h]@1
+  GUIWindow awards_window; // [sp+70h] [bp-60h]@1
 
   pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_award", TEXTURE_16BIT_PALETTE));
   sprintfex(pTmpBuf.data(), "%s \f%05d", pGlobalTXT_LocalizationStrings[LOCSTR_AVARDS_FOR], ui_character_header_text_color);
@@ -616,12 +576,12 @@
 
   pGUIWindow_CurrentMenu->DrawText(pFontArrus, 24, 18, 0, pTmpBuf.data(), 0, 0, 0);
   result = books_primary_item_per_page;
-  a1.uFrameX = 12;
-  a1.uFrameY = 48;
-  a1.uFrameWidth = 424;
-  a1.uFrameHeight = 290;
-  a1.uFrameZ = 435;
-  a1.uFrameW = 337;
+  awards_window.uFrameX = 12;
+  awards_window.uFrameY = 48;
+  awards_window.uFrameWidth = 424;
+  awards_window.uFrameHeight = 290;
+  awards_window.uFrameZ = 435;
+  awards_window.uFrameW = 337;
   if (BtnDown_flag && num_achieved_awards + books_primary_item_per_page < full_num_items_in_book)
     result = books_primary_item_per_page++ + 1;
   if (BtnUp_flag && result)
@@ -630,70 +590,60 @@
     books_primary_item_per_page = result;
   }
 
-    if ( books_page_number < 0 )
-        {
-        result += num_achieved_awards;
-        books_primary_item_per_page = result;
-        if ( (signed int)(num_achieved_awards + result) > full_num_items_in_book )
-            {
-            result = full_num_items_in_book - num_achieved_awards;
-            books_primary_item_per_page = result;
-            }
-        }
-    else if ( books_page_number > 0 )
-        {
-        result -= num_achieved_awards;
-        books_primary_item_per_page = result;
-        if ( (result & 0x80000000u) != 0 )
-            {
-            result = 0;
-            books_primary_item_per_page = result;
-            }
-        }
-    //LABEL_14:
-    BtnDown_flag = 0;
-    BtnUp_flag = 0;
-    num_achieved_awards = 0;
-    books_page_number = 0;
-
-
-    for (uint i = result; i < full_num_items_in_book; ++i)
+  if ( books_page_number < 0 )
+  {
+    result += num_achieved_awards;
+    books_primary_item_per_page = result;
+    if ( (signed int)(num_achieved_awards + result) > full_num_items_in_book )
     {
-      v5 = achieved_awards[i];
-      v6 = (char *)pAwards[v5].pText;//(char *)dword_723E80_award_related[v20 / 4];
+      result = full_num_items_in_book - num_achieved_awards;
+      books_primary_item_per_page = result;
+    }
+  }
+  else if ( books_page_number > 0 )
+  {
+    result -= num_achieved_awards;
+    books_primary_item_per_page = result;
+    if ( (result & 0x80000000u) != 0 )
+    {
+      result = 0;
+      books_primary_item_per_page = result;
+    }
+  }
+  BtnDown_flag = 0;
+  BtnUp_flag = 0;
+  num_achieved_awards = 0;
+  books_page_number = 0;
 
-            pTmpBuf[0] = 0;
-            switch (v5)
-            {
-              case Award_Arena_PageWins:    sprintf(pTmpBuf.data(), v6, pParty->uNumArenaPageWins);     break;
-              case Award_Arena_SquireWins:  sprintf(pTmpBuf.data(), v6, pParty->uNumArenaSquireWins);   break;
-              case Award_Arena_KnightWins:  sprintf(pTmpBuf.data(), v6, pParty->uNumArenaKnightWins);   break;
-              case Award_Arena_LordWins:    sprintf(pTmpBuf.data(), v6, pParty->uNumArenaLordWins);     break;
-              case Award_ArcomageWins:      sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageWins);      break;
-              case Award_ArcomageLoses:     sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageLoses);     break;
-              case Award_Deaths:            sprintf(pTmpBuf.data(), v6, pParty->uNumDeaths);            break;
-              case Award_BountiesCollected: sprintf(pTmpBuf.data(), v6, pParty->uNumBountiesCollected); break;
-              case Award_Fine:              sprintf(pTmpBuf.data(), v6, pParty->uFine);                 break;
-              case Award_PrisonTerms:       sprintf(pTmpBuf.data(), v6, pParty->uNumPrisonTerms);       break;
-            }
+  for ( int i = result; i < full_num_items_in_book; ++i)
+  {
+    v6 = (char *)pAwards[achieved_awards[i]].pText;//(char *)dword_723E80_award_related[v20 / 4];
+    pTmpBuf[0] = 0;
+    switch (achieved_awards[i])
+    {
+        case Award_Arena_PageWins:    sprintf(pTmpBuf.data(), v6, pParty->uNumArenaPageWins);     break;
+        case Award_Arena_SquireWins:  sprintf(pTmpBuf.data(), v6, pParty->uNumArenaSquireWins);   break;
+        case Award_Arena_KnightWins:  sprintf(pTmpBuf.data(), v6, pParty->uNumArenaKnightWins);   break;
+        case Award_Arena_LordWins:    sprintf(pTmpBuf.data(), v6, pParty->uNumArenaLordWins);     break;
+        case Award_ArcomageWins:      sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageWins);      break;
+        case Award_ArcomageLoses:     sprintf(pTmpBuf.data(), v6, pParty->uNumArcomageLoses);     break;
+        case Award_Deaths:            sprintf(pTmpBuf.data(), v6, pParty->uNumDeaths);            break;
+        case Award_BountiesCollected: sprintf(pTmpBuf.data(), v6, pParty->uNumBountiesCollected); break;
+        case Award_Fine:              sprintf(pTmpBuf.data(), v6, pParty->uFine);                 break;
+        case Award_PrisonTerms:       sprintf(pTmpBuf.data(), v6, pParty->uNumPrisonTerms);       break;
+    }
 
-            if (*pTmpBuf.data())
-              v6 = pTmpBuf.data();
-
-
-            a1.DrawText(pFontArrus, 0, 0, ui_character_award_color[pAwards[v5].uPriority % 6], v6, 0, 0, 0);
-            a1.uFrameY = pFontArrus->CalcTextHeight(v6, &a1, 0, 0) + a1.uFrameY + 4;
-            if (a1.uFrameY > a1.uFrameHeight)
-              break;
+    if (*pTmpBuf.data())
+      v6 = pTmpBuf.data();
 
-            ++num_achieved_awards;
-        }
- }
+    awards_window.DrawText(pFontArrus, 0, 0, ui_character_award_color[pAwards[achieved_awards[i]].uPriority % 6], v6, 0, 0, 0);
+    awards_window.uFrameY = pFontArrus->CalcTextHeight(v6, &awards_window, 0, 0) + awards_window.uFrameY + 8;
+    if (awards_window.uFrameY > awards_window.uFrameHeight)
+      break;
 
-
-
-
-
+    ++num_achieved_awards;
+  }
+}
 
 //----- (0041A2C1) --------------------------------------------------------
 unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels)
@@ -703,15 +653,12 @@
   return ((signed int)(uNumPixels - 14) >> 5) + 1;
 }
 
-
-
 //----- (0041A556) --------------------------------------------------------
 void draw_leather()
 {
   pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather));
 }
 
-
 //----- (0041ABFD) --------------------------------------------------------
 void CharacterUI_CharacterScreen_Draw(Player *player)
 {
@@ -743,7 +690,7 @@
     case WINDOW_CharacterWindow_Awards:                                // awards
       CharacterUI_ReleaseButtons();
       sub_419379();
-      sub_419220();
+      CreateAwardsScrollBar();
       CharacterUI_AwardsTab_Draw(player);
       pRenderer->DrawTextureIndexed(pCharacterScreen_AwardsBtn->uX,
                                     pCharacterScreen_AwardsBtn->uY,
@@ -771,155 +718,22 @@
 //----- (0043CC7C) --------------------------------------------------------
 void CharacterUI_DrawPaperdoll(Player *player)
 {
-  //signed int pSex; // eax@1
-  unsigned int v6; // ecx@9
-  int v7; // ecx@10
-  unsigned int pMainHandNum4; // eax@14
-  ItemGen *item_MainHand4; // eax@15
-  int v10; // edx@15
-  unsigned int pX_MainHand4; // edi@15
-  unsigned int v14; // ebx@18
-  Texture *v16; // ebp@27
-  double v17; // st7@29
-  int v18; // edi@30
-  char *v19; // eax@30
-  unsigned int pBowNum; // eax@37
-  ItemGen *itemBow; // edi@38
-  int pX_Bow; // ebx@38
-  double v28; // st7@51
-  char *v30; // eax@54
-  unsigned int pCloakNum; // eax@59
-  ItemGen *item_Cloak; // edx@60
-  int v33; // eax@65
-  int v34; // eax@74
-  int v35; // ebx@74
-  LODFile_IconsBitmaps *v38; // ecx@78
-  Texture *v39; // edi@85
-  double v40; // st7@87
-  int v41; // edi@88
-  unsigned int pArmorNum; // eax@93
-  ItemGen *item_Armor; // edx@94
-  int v45; // eax@98
-  int v48; // ebx@106
-  LODFile_IconsBitmaps *v50; // ecx@110
-  Texture *v51; // edi@117
-  double v52; // st7@119
-  int v53; // edi@120
-  char *v55; // eax@122
-  unsigned int pBootNum; // eax@127
-  ItemGen *item_Boot; // edi@128
+  ItemGen *item; // edi@38
+  int item_X; // ebx@38
+  int index; // eax@65
   int v59; // ebx@129
-  int v60; // ecx@132
-  Texture *v63; // edi@145
-  double v64; // st7@147
-  int v65; // edi@148
-  char *v66; // eax@148
-  unsigned int pMainHandNum; // edx@155
-  int v70; // edx@156
-  unsigned int pBeltNum; // eax@160
-  ItemGen *item_Belt; // edi@161
-  int v73; // edx@163
   unsigned int v75; // ebx@170
-  Texture *v77; // edi@181
-  double v78; // st7@183
-  int v79; // edi@184
-  char *v80; // eax@184
-  unsigned int pMainHandNum2; // eax@192
-  int v83; // eax@193
   int pArmorShoulderNum; // eax@197
-  int v87; // eax@197
-  int v88; // eax@198
-  int v89; // eax@199
   int v94; // ebx@214
-  int v95; // eax@214
-  char *v96; // edi@226
-  double v97; // st7@228
-  int v98; // edi@229
-  char *v99; // eax@229
-  int pX_ArmorShoulder; // eax@237
-  int pY_ArmorShoulder; // ecx@237
-  int v106; // edx@238
-  int v107; // edx@239
-  int v108; // edx@240papredoll_flying_feet
-  int v109; // edi@250
-  char *v110; // edx@250
-  unsigned int pCloakCollarNum; // eax@259
-  ItemGen *item_CloakCollar; // eax@260
-  int v114; // eax@265
-  int v116; // ebx@274
-        double v118; // st7@286
-        int v119; // edi@287
-        char *v120; // eax@287
-        unsigned int v122; // edi@295
-        int pHelmNum; // ebx@297
-        ItemGen *item_Helm; // edi@298
-        int v125; // ecx@303
-        unsigned int v127; // ebx@314
-        Texture *v129; // edi@325
-        double v130; // st7@327
-        int v131; // edi@328
-        char *v132; // eax@328
-        unsigned int pMainHandNum3; // eax@335
-        ItemGen *item_MainHand3; // eax@336
-        unsigned int v138; // ebx@339
-        Texture *v140; // edi@348
-        double v141; // st7@350
-        int v142; // edi@351
-        char *v143; // eax@351
-        unsigned int pShieldNum; // eax@358
-        ItemGen *item_Shield; // eax@359
-        int v149; // edx@359
-        int pX_Shield; // ebx@362
-        int v151; // ecx@363
-        int v152; // ecx@364
-        unsigned int v153; // eax@370
-        Texture *v157; // ebp@381
-        double v158; // st7@383
-        char *v160; // eax@386
-        unsigned int pMainHandNum5; // eax@393
-        ItemGen *item_MainHand5; // eax@394
-        char *v166; // [sp-8h] [bp-54h]@16
-        const char *v167; // [sp-8h] [bp-54h]@23
-        const char *v168; // [sp-8h] [bp-54h]@43
-        const char *v169; // [sp-8h] [bp-54h]@79
-        const char *v170; // [sp-8h] [bp-54h]@111
-        const char *v171; // [sp-8h] [bp-54h]@141
-        const char *v172; // [sp-8h] [bp-54h]@177
-        const char *v173; // [sp-8h] [bp-54h]@222
-        const char *v178; // [sp-8h] [bp-54h]@242
-        const char *v179; // [sp-8h] [bp-54h]@280
-        const char *v180; // [sp-8h] [bp-54h]@321
-        char *v181; // [sp-8h] [bp-54h]@337
-        const char *v182; // [sp-8h] [bp-54h]@344
-        const char *v183; // [sp-8h] [bp-54h]@375
-        signed int v186; // [sp-4h] [bp-50h]@202
-        signed int v191; // [sp-4h] [bp-50h]@266
-        signed int v192; // [sp-4h] [bp-50h]@304
-        int pY_MainHand4; // [sp+10h] [bp-3Ch]@15
-        int pY_Bow; // [sp+10h] [bp-3Ch]@38
-        unsigned int pY_Cloak; // [sp+10h] [bp-3Ch]@74
-        unsigned int pY_Armor; // [sp+10h] [bp-3Ch]@106
-        int pY_Boot; // [sp+10h] [bp-3Ch]@129
-        int pY_Belt; // [sp+10h] [bp-3Ch]@168
-        unsigned int pY_shoulder; // [sp+10h] [bp-3Ch]@216
-        unsigned int pY_CloakCollar; // [sp+10h] [bp-3Ch]@274
-        int pY_Helm; // [sp+10h] [bp-3Ch]@312
-        int pY_MainHand3; // [sp+10h] [bp-3Ch]@336
-        int pY_Shield; // [sp+10h] [bp-3Ch]@362
-        Texture *a2b; // [sp+14h] [bp-38h]@49
-        int pX_Cloak; // [sp+14h] [bp-38h]@74
-        int pX_Armor; // [sp+14h] [bp-38h]@106
-        int pX_Boot; // [sp+14h] [bp-38h]@129
-        int pX_Belt; // [sp+14h] [bp-38h]@168
-        int pX_shoulder; // [sp+14h] [bp-38h]@214
-        int pX_CloakCollar; // [sp+14h] [bp-38h]@274
-        Texture *a2i; // [sp+14h] [bp-38h]@284
-        int pX_Helm; // [sp+14h] [bp-38h]@312
-        int pX_MainHand3; // [sp+14h] [bp-38h]@336
-        int pBodyComplection; // [sp+24h] [bp-28h]@6
-        unsigned int pBowTextureNum; // [sp+2Ch] [bp-20h]@38
-        signed int v245; // [sp+34h] [bp-18h]@361
-        signed int IsDwarf; // [sp+40h] [bp-Ch]@4
+  unsigned int v127; // ebx@314
+  unsigned int v153; // eax@370
+  char *v166; // [sp-8h] [bp-54h]@16
+  const char *container; // [sp-8h] [bp-54h]@79
+  char *v181; // [sp-8h] [bp-54h]@337
+  int item_Y; // [sp+10h] [bp-3Ch]@38
+  int pBodyComplection; // [sp+24h] [bp-28h]@6
+  signed int v245; // [sp+34h] [bp-18h]@361
+  signed int IsDwarf; // [sp+40h] [bp-Ch]@4
 
   pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
   if (player->GetRace() == CHARACTER_RACE_DWARF)
@@ -948,760 +762,735 @@
     pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]));
     if ( !bRingsShownInCharScreen )
       pRenderer->DrawMaskToZBuffer(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]), player->pEquipment.uArmor);
-    v6 = player->pEquipment.uMainHand;
-    if ( !v6 || (v7 = *(int *)&pPlayers[uPlayerID]->pInventoryItemList[v6-1], pItemsTable->pItems[v7].uEquipType != 1)
-         && (pItemsTable->pItems[v7].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) )
-         pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
-         pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
-    pMainHandNum4 = pPlayers[uPlayerID]->pEquipment.uMainHand;
-    if ( pMainHandNum4 )
+    //Рука не занята или ...
+    if ( !player->pEquipment.uMainHand
+         || ( pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[player->pEquipment.uMainHand - 1].uItemID].uEquipType != EQUIP_MAIN_HAND)
+         && (pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[player->pEquipment.uMainHand - 1].uItemID].uSkillType != PLAYER_SKILL_SPEAR
+         || pPlayers[uPlayerID]->pEquipment.uShield) )
+      pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
+                                        pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
+    //-----------------------------------------------------(Hand/Рука)---------------------------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uMainHand )
     {
-      item_MainHand4 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum4 - 1];
-      pX_MainHand4 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipX;
-      pY_MainHand4 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand4->uItemID].uEquipY;
-      if ( item_MainHand4->uItemID == 64 )  //blaster
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand - 1];
+      item_X = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item->uItemID].uEquipX;
+      item_Y = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item->uItemID].uEquipY;
+      if ( item->uItemID == 64 )  //blaster
         v166 = "item64v1";
       else
-        v166 = pItemsTable->pItems[item_MainHand4->uItemID].pIconName;
-      v14 = pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE);
-      if ( !( item_MainHand4->uAttributes & 0xF0 ) )
+        v166 = pItemsTable->pItems[item->uItemID].pIconName;
+      if ( !( item->uAttributes & 0xF0 ) )
       {
-        v18 = v14 + 1;
-        v19 = (char *)pIcons_LOD->GetTexture(v14);
-        if ( item_MainHand4->uAttributes & 2 )
-          pRenderer->DrawTransparentRedShade(pX_MainHand4, pY_MainHand4, (Texture *)v19);
+        if ( item->uAttributes & 2 )
+          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
         else
         {
-          if ( item_MainHand4->uAttributes & 1 )
-            pRenderer->DrawTextureTransparent(pX_MainHand4, pY_MainHand4, (Texture *)v19);
+          if ( item->uAttributes & 1 )
+            pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
           else
-            pRenderer->DrawTransparentGreenShade(pX_MainHand4, pY_MainHand4, (Texture *)v19);
+            pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
         }
       }
-      if ( item_MainHand4->uAttributes & 0xF0 )
+      if ( item->uAttributes & 0xF0 )
       {
-        if ( ( item_MainHand4->uAttributes & 0xF0) == 16 )
-          v167 = "sptext01";
-        if ( ( item_MainHand4->uAttributes & 0xF0) == 32 )
-          v167 = "sp28a";
-        if ( (item_MainHand4->uAttributes & 0xF0) == 64 )
-          v167 = "sp30a";
-        if ( (item_MainHand4->uAttributes & 0xF0) == 128 )
-          v167 = "sp91a";
-        v16 = pIcons_LOD->LoadTexturePtr(v167, TEXTURE_16BIT_PALETTE);
+        if ( ( item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+          container = "sptext01";
+        if ( ( item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+          container = "sp28a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+          container = "sp30a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+          container = "sp91a";
         _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
         if ( _50C9A8_item_enchantment_timer <= 0 )
         {
           _50C9A8_item_enchantment_timer = 0;
-          item_MainHand4->uAttributes &= 0xFFFFFF0Fu;
+          item->uAttributes &= 0xFFFFFF0Fu;
           ptr_50C9A4 = 0;
         }
-        v17 = (double)GetTickCount() * 0.1;
-        pRenderer->_4A63E6(pX_MainHand4, pY_MainHand4, pIcons_LOD->GetTexture(v14), v16, (signed __int64)v17, 0, 255);
+        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)),
+                           pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
       }
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(pX_MainHand4, pY_MainHand4, (Texture *)v19, pMainHandNum4);
+        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)), pPlayers[uPlayerID]->pEquipment.uMainHand);
     }
   }
   else// без акваланга
   {
-    pBowNum = pPlayers[uPlayerID]->pEquipment.uBow; //сначала рисуется лук
-    if ( pBowNum )
+    //----------------(Bow/ Лук)-------------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uBow )
     {
-      itemBow = &pPlayers[uPlayerID]->pInventoryItemList[pBowNum - 1];
-      pX_Bow = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[itemBow->uItemID].uEquipX;
-      pY_Bow = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[itemBow->uItemID].uEquipY;
-      pBowTextureNum = pIcons_LOD->LoadTexture(pItemsTable->pItems[itemBow->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
-      if ( !(itemBow->uAttributes & 0xF0) )// если не применён закл
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uBow - 1];
+      item_X = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][2][0] - pItemsTable->pItems[item->uItemID].uEquipX;
+      item_Y = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][2][1] - pItemsTable->pItems[item->uItemID].uEquipY;
+      if ( !(item->uAttributes & 0xF0) )// если не применён закл
       {
-        if ( itemBow->uAttributes & 2 )
-          pRenderer->DrawTransparentRedShade(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum));
+        if ( item->uAttributes & 2 )
+          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)));
         else
         {
-          v30 = (char *)pIcons_LOD->GetTexture(pBowTextureNum);
-          if ( !(itemBow->uAttributes & 1) )//не опознанный лук зелёный
-            pRenderer->DrawTransparentGreenShade(pX_Bow, pY_Bow, (Texture *)v30);
+          if ( !(item->uAttributes & 1) )//не опознанный лук зелёный
+            pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)));
           else // опознанный лук
-            pRenderer->DrawTextureTransparent(pX_Bow, pY_Bow, (Texture *)v30);
+            pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)));
         }
       }
       else
       {
-        if ( (itemBow->uAttributes & 0xF0) == 16 )
-          v168 = "sptext01";
-        if ( (itemBow->uAttributes & 0xF0) == 32 )
-          v168 = "sp28a";
-        if ( (itemBow->uAttributes & 0xF0) == 64 )
-          v168 = "sp30a";
-        if ( (itemBow->uAttributes & 0xF0) == 128 )
-          v168 = "sp91a";
-        a2b = pIcons_LOD->LoadTexturePtr(v168, TEXTURE_16BIT_PALETTE);
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+          container = "sptext01";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+          container = "sp28a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+          container = "sp30a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+          container = "sp91a";
         _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
         if ( _50C9A8_item_enchantment_timer <= 0 )
         {
           _50C9A8_item_enchantment_timer = 0;
-          itemBow->uAttributes &= 0xFFFFFF0Fu;
+          item->uAttributes &= 0xFFFFFF0Fu;
           ptr_50C9A4 = 0;
         }
-        v28 = (double)GetTickCount() * 0.1;
-        pRenderer->_4A63E6(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum), a2b, (signed __int64)v28, 0, 255);
+        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)),
+                  pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                           GetTickCount() * 0.1, 0, 255);
       }
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(pX_Bow, pY_Bow, pIcons_LOD->GetTexture(pBowTextureNum), pBowNum);
+        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE)),
+                pPlayers[uPlayerID]->pEquipment.uBow);
     }
-    pCloakNum = pPlayers[uPlayerID]->pEquipment.uCloak;// потом плащ
-    if ( pCloakNum )
+    //-----------------------------(Cloak/Плащ)---------------------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uCloak )
     {
-      item_Cloak = &pPlayers[uPlayerID]->pInventoryItemList[pCloakNum - 1];
-      switch ( item_Cloak->uItemID )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uCloak - 1];
+      switch ( item->uItemID )
       {
         case ITEM_RELIC_TWILIGHT:
-          v33 = 5;
+          index = 5;
           break;
         case ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP:
-          v33 = 6;
+          index = 6;
           break;
         case ITEM_RARE_SUN_CLOAK:
-          v33 = 7;
+          index = 7;
           break;
         case ITEM_RARE_MOON_CLOAK:
-          v33 = 8;
+          index = 8;
           break;
         case ITEM_RARE_VAMPIRES_CAPE:
-          v33 = 9;
+          index = 9;
           break;
         default:
-          v33 = item_Cloak->uItemID - 105;
+          index = item->uItemID - 105;
           break;
       }
-      if ( v33 >= 0 && v33 < 10 )
+      if ( index >= 0 && index < 10 )
       {
-        v35 = paperdoll_cloak_texture[pBodyComplection][v33];//Texture_Cloak
-        pX_Cloak = pPaperdoll_BodyX + paperdoll_Cloak[pBodyComplection][v33][0];
-        pY_Cloak = pPaperdoll_BodyY + paperdoll_Cloak[pBodyComplection][v33][1];
-        if ( !(item_Cloak->uAttributes & 0xF0) )
+        item_X = pPaperdoll_BodyX + paperdoll_Cloak[pBodyComplection][index][0];
+        item_Y = pPaperdoll_BodyY + paperdoll_Cloak[pBodyComplection][index][1];
+        if ( !(item->uAttributes & 0xF0) )
         {
-          v41 = v35 + 1;
-          if ( item_Cloak->uAttributes & 2 )
-            pRenderer->DrawTransparentRedShade(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35));
+          if ( item->uAttributes & 2 )
+            pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]));
           else
-            pRenderer->DrawTextureTransparent(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35));
+            pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]));
         }
         else
         {
-          if ( (item_Cloak->uAttributes & 0xF0) == 16 )
-            v169 = "sptext01";
-          if ( (item_Cloak->uAttributes & 0xF0) == 32 )
-            v169 = "sp28a";
-          if ( (item_Cloak->uAttributes & 0xF0) != 64 )
-            v169 = "sp30a";
-          if ( (item_Cloak->uAttributes & 0xF0) == 128 )
-            v169 = "sp91a";
-          v39 = pIcons_LOD->LoadTexturePtr(v169, TEXTURE_16BIT_PALETTE);
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+            container = "sptext01";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+            container = "sp28a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+            container = "sp30a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+            container = "sp91a";
           _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
           if ( _50C9A8_item_enchantment_timer <= 0 )
           {
             _50C9A8_item_enchantment_timer = 0;
-            item_Cloak->uAttributes &= 0xFFFFFF0Fu;
+            item->uAttributes &= 0xFFFFFF0Fu;
             ptr_50C9A4 = 0;
           }
-          v40 = (double)GetTickCount() * 0.1;
-          pRenderer->_4A63E6(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35), v39, (signed __int64)v40, 0, 255);
+          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]),
+                           pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
         }
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(pX_Cloak, pY_Cloak, pIcons_LOD->GetTexture(v35), pCloakNum);
+          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]),
+                                       pPlayers[uPlayerID]->pEquipment.uCloak);
       }
     }
-    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY,//рисуется кукла
-            pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]));
-    pArmorNum = pPlayers[uPlayerID]->pEquipment.uArmor;// потом броня
-    if ( pArmorNum )
+    //-------------------------------(Paperdoll/Кукла)-------------------------------------------
+    pRenderer->DrawTextureTransparent(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]));
+    //-------------------------------(Armor/Броня)-----------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uArmor )
     {
-      item_Armor = &pPlayers[uPlayerID]->pInventoryItemList[pArmorNum - 1];
-      switch ( item_Armor->uItemID )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uArmor - 1];
+      switch ( item->uItemID )
       {
-        case 504:
-          v45 = 15;
+        case ITEM_ARTICACT_GOVERNONS_ARMOR:
+          index = 15;
           break;
         case ITEM_ARTIFACT_YORUBA:
-          v45 = 14;
+          index = 14;
           break;
         case ITEM_RELIC_HARECS_LEATHER:
-          v45 = 13;
+          index = 13;
           break;
         case ITEM_ELVEN_CHAINMAIL:
-          v45 = 16;
+          index = 16;
           break;
         default:
-          v45 = item_Armor->uItemID - 66;
+          index = item->uItemID - 66;
           break;
       }
-      if ( v45 >= 0 && v45 < 17 )
+      if ( index >= 0 && index < 17 )
       {
-        pX_Armor = pPaperdoll_BodyX + paperdoll_Armor[pBodyComplection][v45][0];
-        pY_Armor = pPaperdoll_BodyY + paperdoll_Armor[pBodyComplection][v45][1];
-        v48 = paperdoll_armor_texture[pBodyComplection][v45][0];
-        if ( !(item_Armor->uAttributes & 0xF0) )
+        item_X = pPaperdoll_BodyX + paperdoll_Armor[pBodyComplection][index][0];
+        item_Y = pPaperdoll_BodyY + paperdoll_Armor[pBodyComplection][index][1];
+        if ( !(item->uAttributes & 0xF0) )
         {
-          v53 = v48 + 1;
-          if ( item_Armor->uAttributes & 2 )
-            pRenderer->DrawTransparentRedShade(pX_Armor, pY_Armor, pIcons_LOD->GetTexture(v48));
+          if ( item->uAttributes & 2 )
+            pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][0]));
           else
           {
-            v55 = (char *)&pIcons_LOD->pTextures[v48];
-            if ( !(item_Armor->uAttributes & 1) )
-              pRenderer->DrawTransparentGreenShade(pX_Armor, pY_Armor, (Texture *)v55);
+            if ( !(item->uAttributes & 1) )
+              pRenderer->DrawTransparentGreenShade(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]]);
             else
-              pRenderer->DrawTextureTransparent(pX_Armor, pY_Armor, (Texture *)v55);
+              pRenderer->DrawTextureTransparent(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]]);
           }
         }
         else
         {
-          if ( (item_Armor->uAttributes & 0xF0) == 16 )
-            v170 = "sptext01";
-          if ( (item_Armor->uAttributes & 0xF0) == 32 )
-            v170 = "sp28a";
-          if ( (item_Armor->uAttributes & 0xF0) == 64 )
-            v170 = "sp30a";
-          if ( (item_Armor->uAttributes & 0xF0) == 128 )
-            v170 = "sp91a";
-          v51 = pIcons_LOD->LoadTexturePtr(v170, TEXTURE_16BIT_PALETTE);
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+            container = "sptext01";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+            container = "sp28a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+            container = "sp30a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+            container = "sp91a";
           _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
           if ( _50C9A8_item_enchantment_timer <= 0 )
           {
             _50C9A8_item_enchantment_timer = 0;
-            item_Armor->uAttributes &= 0xFFFFFF0Fu;
+            item->uAttributes &= 0xFFFFFF0Fu;
             ptr_50C9A4 = 0;
           }
-          v52 = (double)GetTickCount() * 0.1;
-          pRenderer->_4A63E6(pX_Armor, pY_Armor, pIcons_LOD->GetTexture(v48), v51, (signed __int64)v52, 0, 255);
+          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][0]),
+                          pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
         }
-        if ( pPlayers[uPlayerID]->pEquipment.uMainHand //далее плечи брони
+        //--------------------------------(Shoulder/Плечи)---------------------------------------------
+        if ( pPlayers[uPlayerID]->pEquipment.uMainHand
           && (pPlayers[uPlayerID]->GetEquippedItemEquipType(EQUIP_MAIN_HAND) == EQUIP_MAIN_HAND ||
            pPlayers[uPlayerID]->GetEquippedItemSkillType(EQUIP_MAIN_HAND) == EQUIP_SHIELD &&
-          !pPlayers[uPlayerID]->pEquipment.uShield) )
+          !pPlayers[uPlayerID]->pEquipment.uShield) )//без щита
         {
-          v94 = paperdoll_armor_texture[pBodyComplection][v45][2];
-          if ( v94 == pIcons_LOD->FindTextureByName("pending") )
+          v94 = paperdoll_armor_texture[pBodyComplection][index][2];
+          if ( paperdoll_armor_texture[pBodyComplection][index][2] == pIcons_LOD->FindTextureByName("pending") )
           {
-            v94 = paperdoll_armor_texture[pBodyComplection][v45][1];
-            pX_shoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0];
-            pY_shoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1];
+            v94 = paperdoll_armor_texture[pBodyComplection][index][1];
+            item_X = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][index][0];
+            item_Y = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][index][1];
           }
           else
           {
-            pX_shoulder = pPaperdoll_BodyX + dword_4E5270[v45][0];
-            pY_shoulder = pPaperdoll_BodyY + dword_4E5270[v45][1];
+            item_X = pPaperdoll_BodyX + dword_4E5270[index][0];
+            item_Y = pPaperdoll_BodyY + dword_4E5270[index][1];
           }
-          if ( !(item_Armor->uAttributes & 0xF0) )
+          if ( !(item->uAttributes & 0xF0) )
           {
-            v98 = v94 + 1;
-            v99 = (char *)pIcons_LOD->GetTexture(v94);
-            if ( item_Armor->uAttributes & 2 )
-              pRenderer->DrawTransparentRedShade(pX_shoulder, pY_shoulder, (Texture *)v99);
+            //v98 = v94 + 1;
+            if ( item->uAttributes & 2 )
+              pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v94));
             else
             {
-              if ( item_Armor->uAttributes & 1 )
-                pRenderer->DrawTextureTransparent(pX_shoulder, pY_shoulder, (Texture *)v99);
+              if ( item->uAttributes & 1 )
+                pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v94));
               else
-                pRenderer->DrawTransparentGreenShade(pX_shoulder, pY_shoulder, (Texture *)v99);
+                pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v94));
             }
           }
           else
           {
-            if ( v94 != pIcons_LOD->FindTextureByName("pending") )
+            if ( paperdoll_armor_texture[pBodyComplection][index][2] != pIcons_LOD->FindTextureByName("pending") )
             {
-              if ( item_Armor->uAttributes & 0xF0 )
+              if ( item->uAttributes & 0xF0 )
               {
-                if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
-                  v173 = "sptext01";
-                if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
-                  v173 = "sp28a";
-                if ( ( item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
-                  v173 = "sp30a";
-                if ( (item_Armor->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
-                  v173 = "sp91a";
-                v96 = (char *)pIcons_LOD->LoadTexturePtr(v173, TEXTURE_16BIT_PALETTE);
+                if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+                  container = "sptext01";
+                if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+                  container = "sp28a";
+                if ( ( item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+                  container = "sp30a";
+                if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+                  container = "sp91a";
                 _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
                 if ( _50C9A8_item_enchantment_timer <= 0 )
                 {
                   _50C9A8_item_enchantment_timer = 0;
-                  item_Armor->uAttributes &= 0xFFFFFF0Fu;
+                  item->uAttributes &= 0xFFFFFF0Fu;
                   ptr_50C9A4 = 0;
                 }
-                v97 = (double)GetTickCount();
-                pRenderer->_4A63E6(pX_shoulder, pY_shoulder, pIcons_LOD->GetTexture(v94), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255);
+                pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v94), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                              GetTickCount() * 0.1, 0, 255);
               }
             }
           }
         }
-        else
+        else//с щитом
         {
-          v94 = paperdoll_armor_texture[pBodyComplection][v45][1];
-          if ( v94 != pIcons_LOD->FindTextureByName("pending") )
+          //v94 = paperdoll_armor_texture[pBodyComplection][index][1];
+          if ( paperdoll_armor_texture[pBodyComplection][index][1] != pIcons_LOD->FindTextureByName("pending") )
           {
-            pX_ArmorShoulder = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][v45][0];
-            pY_ArmorShoulder = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][v45][1];
-            if ( !(item_Armor->uAttributes & 0xF0) )
+            item_X = pPaperdoll_BodyX + paperdoll_shoulder[pBodyComplection][index][0];
+            item_Y = pPaperdoll_BodyY + paperdoll_shoulder[pBodyComplection][index][1];
+            if ( !(item->uAttributes & 0xF0) )
             {
-              v109 = v94 + 1;
-              v110 = (char *)pIcons_LOD->GetTexture(v94);
-              if ( item_Armor->uAttributes & 2 )
-                pRenderer->DrawTransparentRedShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110);
+              if ( item->uAttributes & 2 )
+                pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][2]));
               else
               {
-                if ( item_Armor->uAttributes & 1 )
-                  pRenderer->DrawTextureTransparent(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110);
+                if ( item->uAttributes & 1 )
+                  pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][2]));
                 else
-                  pRenderer->DrawTransparentGreenShade(pX_ArmorShoulder, pY_ArmorShoulder, (Texture *)v110);
+                  pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][2]));
               }
             }
             else
             {
-              if ( (item_Armor->uAttributes & 0xF0) == 16 )
-                v178 = "sptext01";
-              if ( (item_Armor->uAttributes & 0xF0) == 32 )
-                v178 = "sp28a";
-              if ( (item_Armor->uAttributes & 0xF0) == 64 )
-                v178 = "sp30a";
-              if ( (item_Armor->uAttributes & 0xF0) == 128 )
-                v178 = "sp91a";
-              v96 = (char *)pIcons_LOD->LoadTexturePtr(v178, TEXTURE_16BIT_PALETTE);
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+                container = "sptext01";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+                container = "sp28a";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+                container = "sp30a";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+                container = "sp91a";
               _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
               if ( _50C9A8_item_enchantment_timer <= 0 )
               {
                 _50C9A8_item_enchantment_timer = 0;
-                item_Armor->uAttributes &= 0xFFFFFF0Fu;
+                item->uAttributes &= 0xFFFFFF0Fu;
                 ptr_50C9A4 = 0;
               }
-              v97 = (double)GetTickCount();
-              pRenderer->_4A63E6(pX_ArmorShoulder, pY_ArmorShoulder, pIcons_LOD->GetTexture(v94), (Texture *)v96, (signed __int64)(v97 * 0.1), 0, 255);
+              pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][1]),
+                    pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
             }
           }
         }
+
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(pX_Armor, pY_Armor, (Texture *)v55, pArmorNum);
+          pRenderer->DrawMaskToZBuffer(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]],
+                                       pPlayers[uPlayerID]->pEquipment.uArmor);
       }
     }
-    pBootNum = pPlayers[uPlayerID]->pEquipment.uBoot;//далее обувь
-    if ( pBootNum )
+    //----------------------------------(End of Armor/Конец Брони)------------------------------------------
+    //----------------------------------(Boot/Обувь)--------------------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uBoot )
     {
-      item_Boot = &pPlayers[uPlayerID]->pInventoryItemList[pBootNum - 1];
-      switch ( item_Boot->uItemID )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uBoot - 1];
+      switch ( item->uItemID )
       {
-        case 529:
-          v60 = 5;
+        case ITEM_ARTIFACT_HERMES_SANDALS:
+          index = 5;
           v59 = papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace];
           break;
-        case 512:
-          v60 = 6;
+        case ITEM_ARTIFACT_LEAGUE_BOOTS:
+          index = 6;
           v59 = paperdoll_boots_texture[pBodyComplection][5];
           break;
         default:
-          v60 = item_Boot->uItemID - 115;
-          v59 = paperdoll_boots_texture[pBodyComplection][v60];
+          index = item->uItemID - 115;
+          v59 = paperdoll_boots_texture[pBodyComplection][index];
           break;
       }
-      if ( v60 >= 0 && v60 < 7 )
+      if ( index >= 0 && index < 7 )
       {
-        pX_Boot = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][v60][0];
-        pY_Boot = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][v60][1];
-        if ( !(item_Boot->uAttributes & 0xF0) )
+        item_X = pPaperdoll_BodyX + paperdoll_Boot[pBodyComplection][index][0];
+        item_Y = pPaperdoll_BodyY + paperdoll_Boot[pBodyComplection][index][1];
+        if ( !(item->uAttributes & 0xF0) )
         {
-          v65 = v59 + 1;
-          v66 = (char *)pIcons_LOD->GetTexture(v59);
-          if ( item_Boot->uAttributes & 2 )
-            pRenderer->DrawTransparentRedShade(pX_Boot, pY_Boot, (Texture *)v66);
+          if ( item->uAttributes & 2 )
+            pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v59));
           else
           {
-            if ( item_Boot->uAttributes & 1 )
-              pRenderer->DrawTextureTransparent(pX_Boot, pY_Boot, (Texture *)v66);
+            if ( item->uAttributes & 1 )
+              pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v59));
             else
-              pRenderer->DrawTransparentGreenShade(pX_Boot, pY_Boot, (Texture *)v66);
+              pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v59));
           }
         }
         else
         {
-          if ( (item_Boot->uAttributes & 0xF0) == 16 )
-            v171 = "sptext01";
-          if ( (item_Boot->uAttributes & 0xF0) == 32 )
-            v171 = "sp28a";
-          if ( (item_Boot->uAttributes & 0xF0) == 64 )
-            v171 = "sp30a";
-          if ( (item_Boot->uAttributes & 0xF0) == 128 )
-            v171 = "sp91a";
-          v63 = pIcons_LOD->LoadTexturePtr(v171, TEXTURE_16BIT_PALETTE);
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+            container = "sptext01";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+            container = "sp28a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+            container = "sp30a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+            container = "sp91a";
           _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
           if ( _50C9A8_item_enchantment_timer <= 0 )
           {
             _50C9A8_item_enchantment_timer = 0;
-            item_Boot->uAttributes &= 0xFFFFFF0Fu;
+            item->uAttributes &= 0xFFFFFF0Fu;
             ptr_50C9A4 = 0;
           }
-          v64 = (double)GetTickCount() * 0.1;
-          pRenderer->_4A63E6(pX_Boot, pY_Boot, pIcons_LOD->GetTexture(v59), v63, (signed __int64)v64, 0, 255);
+          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v59), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                  GetTickCount() * 0.1, 0, 255);
         }
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(pX_Boot, pY_Boot, (Texture *)v66, pBootNum);
+          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v59), pPlayers[uPlayerID]->pEquipment.uBoot);
       }
     }
-    pMainHandNum = pPlayers[uPlayerID]->pEquipment.uMainHand;
-    if ( !pMainHandNum || (v70 = *(int *)&pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum -1], pItemsTable->pItems[v70].uEquipType != 1)
-        && (pItemsTable->pItems[v70].uSkillType != 4 || pPlayers[uPlayerID]->pEquipment.uShield) )
-                pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
-                                                  pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
-                                                   pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
-        pBeltNum = pPlayers[uPlayerID]->pEquipment.uBelt;// далее пояс
-        if ( pBeltNum )
-        {
-          item_Belt = &pPlayers[uPlayerID]->pInventoryItemList[pBeltNum - 1];
-        switch ( item_Belt->uItemID )
+    //--------------------------------------------(Hand/Рука)------------------------------------------------------
+    if ( !pPlayers[uPlayerID]->pEquipment.uMainHand
+        || ( pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand -1].uItemID].uEquipType != EQUIP_MAIN_HAND)
+        && (pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand -1].uItemID].uSkillType != PLAYER_SKILL_SPEAR
+        || pPlayers[uPlayerID]->pEquipment.uShield) )
+      pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
+                            pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
+    //--------------------------------------------(Belt/Пояс)-------------------------------------------------------
+      if ( pPlayers[uPlayerID]->pEquipment.uBelt )
+      {
+        item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uBelt - 1];
+        switch ( item->uItemID )
         {
           case ITEM_RILIC_TITANS_BELT:
-            v73 = 5;
+            index = 5;
             break;
           case ITEM_ARTIFACT_HEROS_BELT:
-            v73 = 6;
+            index = 6;
             break;
           default:
-            v73 = item_Belt->uItemID - 100;
+            index = item->uItemID - 100;
             break;
         }
-        if ( v73 >= 0 && v73 < 7 )
+        if ( index >= 0 && index < 7 )
         {
-          pX_Belt = pPaperdoll_BodyX + paperdoll_Belt[pBodyComplection][v73][0];
-          pY_Belt = pPaperdoll_BodyY + paperdoll_Belt[pBodyComplection][v73][1];
-          if ( IsDwarf != 1 || v73 == 5 )
-            v75 = paperdoll_belt_texture[pBodyComplection][v73];
+          item_X = pPaperdoll_BodyX + paperdoll_Belt[pBodyComplection][index][0];
+          item_Y = pPaperdoll_BodyY + paperdoll_Belt[pBodyComplection][index][1];
+          if ( IsDwarf != 1 || index == 5 )
+            v75 = paperdoll_belt_texture[pBodyComplection][index];
           else
-           v75 = paperdoll_belt_texture[pBodyComplection - 2][v73];
-          if ( !(item_Belt->uAttributes & 0xF0) )
+            v75 = paperdoll_belt_texture[pBodyComplection - 2][index];
+          if ( !(item->uAttributes & 0xF0) )
           {
-            v79 = v75 + 1;
-            v80 = (char *)pIcons_LOD->GetTexture(v75);
-            if ( item_Belt->uAttributes & 2 )
-              pRenderer->DrawTransparentRedShade(pX_Belt, pY_Belt, (Texture *)v80);
+            if ( item->uAttributes & 2 )
+              pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v75));
             else
             {
-              if ( item_Belt->uAttributes & 1 )
-                pRenderer->DrawTextureTransparent(pX_Belt, pY_Belt, (Texture *)v80);
+              if ( item->uAttributes & 1 )
+                pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v75));
               else
-                pRenderer->DrawTransparentGreenShade(pX_Belt, pY_Belt, (Texture *)v80);
+                pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v75));
             }
             if ( !bRingsShownInCharScreen )
-              pRenderer->DrawMaskToZBuffer(pX_Belt, pY_Belt, (Texture *)v80, pBeltNum);
+              pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v75), pPlayers[uPlayerID]->pEquipment.uBelt);
           }
           else
           {
-            if ( (item_Belt->uAttributes & 0xF0) == 16 )
-              v172 = "sptext01";
-            if ( (item_Belt->uAttributes & 0xF0) == 32 )
-              v172 = "sp28a";
-            if ( (item_Belt->uAttributes & 0xF0) == 64 )
-              v172 = "sp30a";
-            if ( (item_Belt->uAttributes & 0xF0) == 128 )
-              v172 = "sp91a";
-            v77 = pIcons_LOD->LoadTexturePtr(v172, TEXTURE_16BIT_PALETTE);
+            if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+              container = "sptext01";
+            if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+              container = "sp28a";
+            if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+              container = "sp30a";
+            if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+              container = "sp91a";
             _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
             if ( _50C9A8_item_enchantment_timer <= 0 )
             {
               _50C9A8_item_enchantment_timer = 0;
-              item_Belt->uAttributes &= 0xFFFFFF0Fu;
+              item->uAttributes &= 0xFFFFFF0Fu;
               ptr_50C9A4 = 0;
             }
-            v78 = (double)GetTickCount() * 0.1;
-            pRenderer->_4A63E6(pX_Belt, pY_Belt, pIcons_LOD->GetTexture(v75), v77, (signed __int64)v78, 0, 255);
+            pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v75), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                        GetTickCount() * 0.1, 0, 255);
           }
         }
       }
-      pMainHandNum2 = pPlayers[uPlayerID]->pEquipment.uMainHand;
-      if ( pMainHandNum2 )
+      //---------------------------------------------(Hand2/Рука2)--------------------------------------------------
+      if ( pPlayers[uPlayerID]->pEquipment.uMainHand )
       {
-        v83 = pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum2 - 1].uItemID;
-        if ( pItemsTable->pItems[v83].uEquipType == 1
-             || pItemsTable->pItems[v83].uSkillType == PLAYER_SKILL_SPEAR && !pPlayers[uPlayerID]->pEquipment.uShield )
+        if ( pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand - 1].uItemID].uEquipType == EQUIP_MAIN_HAND
+             || pItemsTable->pItems[pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand - 1].uItemID].uSkillType == PLAYER_SKILL_SPEAR
+             && !pPlayers[uPlayerID]->pEquipment.uShield )
           pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0],
-                                            pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1],
-                                            pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1]));
+                     pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1]));
       }
-      pCloakCollarNum = pPlayers[uPlayerID]->pEquipment.uCloak;//далее воротник плаща
-      if ( pCloakCollarNum )
+      //----------------------------------------------(Cloak collar/воротник плаща)-------------------------------------
+      if ( pPlayers[uPlayerID]->pEquipment.uCloak )
       {
-        item_CloakCollar = &pPlayers[uPlayerID]->pInventoryItemList[pCloakCollarNum - 1];
-        switch ( item_CloakCollar->uItemID )
+        item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uCloak - 1];
+        switch ( item->uItemID )
         {
-          case 525:
-            v114 = 5;
+          case ITEM_RELIC_TWILIGHT:
+            index = 5;
             break;
-          case 530:
-            v114 = 6;
+          case ITEM_ARTIFACT_CLOAK_OF_THE_SHEEP:
+            index = 6;
             break;
-          case 547:
-            v114 = 7;
+          case ITEM_RARE_SUN_CLOAK:
+            index = 7;
             break;
-          case 548:
-            v114 = 8;
+          case ITEM_RARE_MOON_CLOAK:
+            index = 8;
             break;
-          case 550:
-            v114 = 9;
+          case ITEM_RARE_VAMPIRES_CAPE:
+            index = 9;
             break;
           default:
-            v114 = item_CloakCollar->uItemID - 105;
+            index = item->uItemID - 105;
         }
-        if ( v114 >= 0 && v114 < 10 )
+        if ( index >= 0 && index < 10 )
         {
-          v116 = paperdoll_cloak_collar_texture[pBodyComplection][v114];
-          pX_CloakCollar = pPaperdoll_BodyX + paperdoll_CloakCollar[pBodyComplection][v114][0];
-          pY_CloakCollar = pPaperdoll_BodyY + paperdoll_CloakCollar[pBodyComplection][v114][1];
-          if ( v116 != pIcons_LOD->FindTextureByName("pending") )
+          item_X = pPaperdoll_BodyX + paperdoll_CloakCollar[pBodyComplection][index][0];
+          item_Y = pPaperdoll_BodyY + paperdoll_CloakCollar[pBodyComplection][index][1];
+          if ( paperdoll_cloak_collar_texture[pBodyComplection][index] != pIcons_LOD->FindTextureByName("pending") )
           {
-            if ( !(item_CloakCollar->uAttributes & 0xF0) )
+            if ( !(item->uAttributes & 0xF0) )
             {
-              v119 = v116 + 1;
-              v120 = (char *)pIcons_LOD->GetTexture(v116);
-              if ( item_CloakCollar->uAttributes & 2 )
-                pRenderer->DrawTransparentRedShade(pX_CloakCollar, pY_CloakCollar, (Texture *)v120);
+              if ( item->uAttributes & 2 )
+                pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]));
               else
-                pRenderer->DrawTextureTransparent(pX_CloakCollar, pY_CloakCollar, (Texture *)v120);
+                pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]));
               if ( !bRingsShownInCharScreen )
-                pRenderer->DrawMaskToZBuffer(pX_CloakCollar, pY_CloakCollar, (Texture *)v120, pCloakCollarNum);
+                pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]),
+                             pPlayers[uPlayerID]->pEquipment.uCloak);
             }
             else
             {
-              if ( (item_CloakCollar->uAttributes & 0xF0) == 16 )
-                v179 = "sptext01";
-              if ( (item_CloakCollar->uAttributes & 0xF0) == 32 )
-                v179 = "sp28a";
-              if ( (item_CloakCollar->uAttributes & 0xF0) == 64 )
-                v179 = "sp30a";
-              if ( (item_CloakCollar->uAttributes & 0xF0) == 128 )
-                v179 = "sp91a";
-              a2i = pIcons_LOD->LoadTexturePtr(v179, TEXTURE_16BIT_PALETTE);
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+                container = "sptext01";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+                container = "sp28a";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+                container = "sp30a";
+              if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+                container = "sp91a";
               _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
               if ( _50C9A8_item_enchantment_timer <= 0 )
               {
                 _50C9A8_item_enchantment_timer = 0;
-                item_CloakCollar->uAttributes &= 0xFFFFFF0Fu;
+                item->uAttributes &= 0xFFFFFF0Fu;
                 ptr_50C9A4 = 0;
               }
-              v118 = (double)GetTickCount() * 0.1;
-              pRenderer->_4A63E6(pX_CloakCollar, pY_CloakCollar, pIcons_LOD->GetTexture(v116), a2i, (signed __int64)v118, 0, 255);
+              pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]),
+                            pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
             }
           }
         }
       }
+      //--------------------------------------------(Beards/Борода)-------------------------------------------------------
       if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 )
       {
-        v122 = papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace];
-        if ( v122 != pIcons_LOD->FindTextureByName("Pending") )
+        if ( papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] != pIcons_LOD->FindTextureByName("Pending") )
           pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uCurrentFace - 24],
                      pPaperdoll_BodyY + pPaperdoll_Beards[2 * pPlayers[uPlayerID]->uCurrentFace - 23],
-                     pIcons_LOD->GetTexture(v122));
+                     pIcons_LOD->GetTexture(papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace]));
       }
-    pHelmNum = pPlayers[uPlayerID]->pEquipment.uHelm;//далее шлем
-    if ( pHelmNum )
+    //--------------------------------------------(Helm/Шлем)------------------------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uHelm )
     {
-      item_Helm = &pPlayers[uPlayerID]->pInventoryItemList[pHelmNum-1];
-      switch ( item_Helm->uItemID )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uHelm - 1];
+      switch ( item->uItemID )
       {
-        case 521:
-          v125 = 11;
+        case ITEM_RELIC_TALEDONS_HELM:
+          index = 11;
           break;
-        case 522:
-          v125 = 12;
+        case ITEM_RELIC_SCHOLARS_CAP:
+          index = 12;
           break;
-        case 523:
-          v125 = 13;
+        case ITEM_RELIC_PHYNAXIAN_CROWN:
+          index = 13;
           break;
-        case 532:
-          v125 = 14;
+        case ITEM_ARTIFACT_MINDS_EYE:
+          index = 14;
           break;
-        case 544:
-          v125 = 15;
+        case ITEM_RARE_SHADOWS_MASK:
+          index = 15;
           break;
         default:
-          v125 = item_Helm->uItemID - 89;
+          index = item->uItemID - 89;
       }
-      if ( v125 >= 0 && v125 < 16 )
+      if ( index >= 0 && index < 16 )
       {
-        pX_Helm = pPaperdoll_BodyX + paperdoll_Helm[pBodyComplection][v125][0];
-        pY_Helm = pPaperdoll_BodyY + paperdoll_Helm[pBodyComplection][v125][1];
-        if ( IsDwarf != 1 || item_Helm->uItemID != 92 )
-          v127 = paperdoll_helm_texture[player->GetSexByVoice()][v125];
+        item_X = pPaperdoll_BodyX + paperdoll_Helm[pBodyComplection][index][0];
+        item_Y = pPaperdoll_BodyY + paperdoll_Helm[pBodyComplection][index][1];
+        if ( IsDwarf != 1 || item->uItemID != 92 )
+          v127 = paperdoll_helm_texture[player->GetSexByVoice()][index];
         else
           v127 = papredoll_dbrds[11];
-        if ( item_Helm->uAttributes & 0xF0 )
+        if ( item->uAttributes & 0xF0 )
         {
-          if ( (item_Helm->uAttributes & 0xF0) == 16 )
-            v180 = "sptext01";
-          if ( (item_Helm->uAttributes & 0xF0) == 32 )
-            v180 = "sp28a";
-          if ( (item_Helm->uAttributes & 0xF0) == 64 )
-            v180 = "sp30a";
-          if ( (item_Helm->uAttributes & 0xF0) == 128 )
-            v180 = "sp91a";
-          v129 = pIcons_LOD->LoadTexturePtr(v180, TEXTURE_16BIT_PALETTE);
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+            container = "sptext01";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+            container = "sp28a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+            container = "sp30a";
+          if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+            container = "sp91a";
           _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
           if ( _50C9A8_item_enchantment_timer <= 0 )
           {
             _50C9A8_item_enchantment_timer = 0;
-            item_Helm->uAttributes &= 0xFFFFFF0Fu;
+            item->uAttributes &= 0xFFFFFF0Fu;
             ptr_50C9A4 = 0;
           }
-          v130 = (double)GetTickCount() * 0.1;
-          pRenderer->_4A63E6(pX_Helm, pY_Helm, pIcons_LOD->GetTexture(v127), v129, (signed __int64)v130, 0, 255);
+          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v127), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                        GetTickCount() * 0.1, 0, 255);
         }
         else
         {
-          v131 = v127 + 1;
-          v132 = (char *)pIcons_LOD->GetTexture(v127);
-          if ( item_Helm->uAttributes & 2 )
-            pRenderer->DrawTransparentRedShade(pX_Helm, pY_Helm, (Texture *)v132);
+          if ( item->uAttributes & 2 )
+            pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v127));
           else
           {
-            if ( item_Helm->uAttributes & 1 )
-              pRenderer->DrawTextureTransparent(pX_Helm, pY_Helm, (Texture *)v132);
+            if ( item->uAttributes & 1 )
+              pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v127));
             else
-              pRenderer->DrawTransparentGreenShade(pX_Helm, pY_Helm, (Texture *)v132);
+              pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v127));
           }
         }
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(pX_Helm, pY_Helm, (Texture *)v132, pHelmNum);
+          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v127), pPlayers[uPlayerID]->pEquipment.uHelm);
       }
     }
-    pMainHandNum3 = pPlayers[uPlayerID]->pEquipment.uMainHand;//weapon in right hand
-    if ( pMainHandNum3 )
+    //------------------------------------------------(Hand3/Рука3)-------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uMainHand )
     {
-      item_MainHand3 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum3 - 1];
-      pX_MainHand3 = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipX;
-      pY_MainHand3 = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item_MainHand3->uItemID].uEquipY;
-      if ( item_MainHand3->uItemID == 64 )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand - 1];
+      item_X = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][1][0] - pItemsTable->pItems[item->uItemID].uEquipX;
+      item_Y = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][1][1] - pItemsTable->pItems[item->uItemID].uEquipY;
+      if ( item->uItemID == 64 )
         v181 = "item64v1";
       else
-        v181 = pItemsTable->pItems[item_MainHand3->uItemID].pIconName;
-      v138 = pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE);
-      if ( !(item_MainHand3->uAttributes & 0xF0) )
+        v181 = pItemsTable->pItems[item->uItemID].pIconName;
+      if ( !(item->uAttributes & 0xF0) )
       {
-        v142 = v138 + 1;
-        v143 = (char *)pIcons_LOD->GetTexture(v138);
-        if ( item_MainHand3->uAttributes & 2 )
-          pRenderer->DrawTransparentRedShade(pX_MainHand3, pY_MainHand3, (Texture *)v143);
+        if ( item->uAttributes & 2 )
+          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
         else
         {
-          if ( item_MainHand3->uAttributes & 1 )
-            pRenderer->DrawTextureTransparent(pX_MainHand3, pY_MainHand3, (Texture *)v143);
+          if ( item->uAttributes & 1 )
+            pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
           else
-            pRenderer->DrawTransparentGreenShade(pX_MainHand3, pY_MainHand3, (Texture *)v143);
+            pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
         }
       }
       else
       {
-        if ( (item_MainHand3->uAttributes & 0xF0) == 16 )
-          v182 = "sptext01";
-        if ( (item_MainHand3->uAttributes & 0xF0) == 32 )
-          v182 = "sp28a";
-        if ( (item_MainHand3->uAttributes & 0xF0) == 64 )
-           v182 = "sp30a";
-        if ( (item_MainHand3->uAttributes & 0xF0) == 128 )
-          v182 = "sp91a";
-        v140 = pIcons_LOD->LoadTexturePtr(v182, TEXTURE_16BIT_PALETTE);
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+          container = "sptext01";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+          container = "sp28a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+           container = "sp30a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+          container = "sp91a";
         _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
         if ( _50C9A8_item_enchantment_timer <= 0 )
         {
           _50C9A8_item_enchantment_timer = 0;
-          item_MainHand3->uAttributes &= 0xFFFFFF0Fu;
+          item->uAttributes &= 0xFFFFFF0Fu;
           ptr_50C9A4 = 0;
         }
-        v141 = (double)GetTickCount() * 0.1;
-        pRenderer->_4A63E6(pX_MainHand3, pY_MainHand3, pIcons_LOD->GetTexture(v138), v140, (signed __int64)v141, 0, 255);
+        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)),
+                   pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
       }
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(pX_MainHand3, pY_MainHand3, (Texture *)v143, pMainHandNum3);
+        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)),
+                    pPlayers[uPlayerID]->pEquipment.uMainHand);
     }
-    pShieldNum = pPlayers[uPlayerID]->pEquipment.uShield;// далее щит
-    if ( pShieldNum )
+    //--------------------------------------------------(Shield/Щит)---------------------------------------------
+    if ( pPlayers[uPlayerID]->pEquipment.uShield )
     {
-      item_Shield = &pPlayers[uPlayerID]->pInventoryItemList[pShieldNum - 1];
-      v149 = pItemsTable->pItems[item_Shield->uItemID].uSkillType;
-      if ( v149 == 2 || v149 == 1 )
+      item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uShield - 1];
+      if ( pItemsTable->pItems[item->uItemID].uSkillType == PLAYER_SKILL_DAGGER
+        || pItemsTable->pItems[item->uItemID].uSkillType == PLAYER_SKILL_SWORD )
       {
-        v151 = item_Shield->uItemID - 400;
-        pX_Shield = 596;
+        //v151 = item->uItemID - 400;
+        item_X = 596;
         v245 = 1;
-        switch ( item_Shield->uItemID )
+        switch ( item->uItemID )
         {
           case 400:
-            pY_Shield = 86;
+            item_Y = 86;
             break;
           case 403:
-            pY_Shield = 28;
+            item_Y = 28;
             break;
           case 415:
-            pX_Shield = 595;
-            pY_Shield = 33;
+            item_X = 595;
+            item_Y = 33;
             break;
           default:
-            pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX;
-            pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY;
+            item_X = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item->uItemID].uEquipX;
+            item_Y = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item->uItemID].uEquipY;
             break;
         }
       }
       else
       {
         v245 = 0;
-        pX_Shield = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item_Shield->uItemID].uEquipX;
-        pY_Shield = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item_Shield->uItemID].uEquipY;
+        item_X = pPaperdoll_BodyX + paperdoll_Weapon[pBodyComplection][0][0] - pItemsTable->pItems[item->uItemID].uEquipX;
+        item_Y = pPaperdoll_BodyY + paperdoll_Weapon[pBodyComplection][0][1] - pItemsTable->pItems[item->uItemID].uEquipY;
       }
-      v153 = pIcons_LOD->LoadTexture(pItemsTable->pItems[item_Shield->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
-      if ( !(item_Shield->uAttributes & 0xF0) )
+      v153 = pIcons_LOD->LoadTexture(pItemsTable->pItems[item->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
+      if ( !(item->uAttributes & 0xF0) )
       {
-        if ( item_Shield->uAttributes & 2 )
-          pRenderer->DrawTransparentRedShade(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153));
+        if ( item->uAttributes & 2 )
+          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
         else
         {
-          v160 = (char *)pIcons_LOD->GetTexture(v153);
-          if ( !(item_Shield->uAttributes & 1) )
-          pRenderer->DrawTransparentGreenShade(pX_Shield, pY_Shield, (Texture *)v160);
+          //v160 = (char *)pIcons_LOD->GetTexture(v153);
+          if ( !(item->uAttributes & 1) )
+          pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
           else
-            pRenderer->DrawTextureTransparent(pX_Shield, pY_Shield, (Texture *)v160);
+            pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v153));
         }
       }
       else
       {
-        if ( (item_Shield->uAttributes & 0xF0) == 16 )
-          v183 = "sptext01";
-        if ( (item_Shield->uAttributes & 0xF0) == 32 )
-          v183 = "sp28a";
-        if ( (item_Shield->uAttributes & 0xF0) == 64 )
-          v183 = "sp30a";
-        if ( (item_Shield->uAttributes & 0xF0) == 128 )
-          v183 = "sp91a";
-        v157 = pIcons_LOD->LoadTexturePtr(v183, TEXTURE_16BIT_PALETTE);
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_RED )
+          container = "sptext01";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_BLUE )
+          container = "sp28a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_GREEN )
+          container = "sp30a";
+        if ( (item->uAttributes & 0xF0) == ITEM_AURA_EFFECT_PURPLE )
+          container = "sp91a";
         _50C9A8_item_enchantment_timer -= pEventTimer->uTimeElapsed;
         if ( _50C9A8_item_enchantment_timer <= 0 )
         {
           _50C9A8_item_enchantment_timer = 0;
-          item_Shield->uAttributes &= 0xFFFFFF0Fu;
+          item->uAttributes &= 0xFFFFFF0Fu;
           ptr_50C9A4 = 0;
         }
-        v158 = (double)GetTickCount() * 0.1;
-        pRenderer->_4A63E6(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153), v157, (signed __int64)v158, 0, 255);
+        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v153), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                     GetTickCount() * 0.1, 0, 255);
         if ( v245 )
           pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0],
                  pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlhs[uPlayerID - 1]));
       }
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(pX_Shield, pY_Shield, pIcons_LOD->GetTexture(v153), pShieldNum);
+        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v153), pPlayers[uPlayerID]->pEquipment.uShield);
     }
   }
+  //--------------------------------------------------------(RightHand/Правая рука)--------------------------------------------------
   pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_drhs[uPlayerID - 1]));
-  pMainHandNum5 = pPlayers[uPlayerID]->pEquipment.uMainHand;
-  if ( pMainHandNum5 )
+  //--------------------------------------------------------(LeftHand/Левая рука)----------------------------------------------------
+  if ( pPlayers[uPlayerID]->pEquipment.uMainHand )
   {
-    item_MainHand5 = &pPlayers[uPlayerID]->pInventoryItemList[pMainHandNum5 - 1];
-    if ( pItemsTable->pItems[item_MainHand5->uItemID].uEquipType == 1 || 
-        pItemsTable->pItems[item_MainHand5->uItemID].uSkillType == PLAYER_SKILL_SPEAR && 
-         !pPlayers[uPlayerID]->pEquipment.uShield )
+    item = &pPlayers[uPlayerID]->pInventoryItemList[pPlayers[uPlayerID]->pEquipment.uMainHand - 1];
+    if ( pItemsTable->pItems[item->uItemID].uEquipType == EQUIP_MAIN_HAND
+        || pItemsTable->pItems[item->uItemID].uSkillType == PLAYER_SKILL_SPEAR
+        && !pPlayers[uPlayerID]->pEquipment.uShield )
       pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0], 
                                         pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], 
                                         pIcons_LOD->GetTexture(papredoll_dlhus[uPlayerID - 1]));
@@ -1711,12 +1500,6 @@
   pRenderer->DrawTextureTransparent(468, 0, pIcons_LOD->GetTexture(uTextureID_right_panel_loop));//обрамление
 }
 
-
-
-
-
-
-
 //----- (0041A2D1) --------------------------------------------------------
 void CharacterUI_InventoryTab_Draw(Player *player, bool a2)
 {
@@ -1784,7 +1567,7 @@
         ptr_50C9A4 = 0;
       }
 
-      pRenderer->_4A63E6(uCellX, uCellY, v7, pTexture, GetTickCount() * 0.1, 0, 255);
+      pRenderer->DrawAura(uCellX, uCellY, v7, pTexture, GetTickCount() * 0.1, 0, 255);
       ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, item_idx);
     }
     else
@@ -1829,7 +1612,7 @@
       item->uAttributes &= 0xFFFFFF0F;
       ptr_50C9A4 = 0;
     }
-    pRenderer->_4A63E6(x, y, item_texture, enchantment_texture, GetTickCount() * 0.1, 0, 255);
+    pRenderer->DrawAura(x, y, item_texture, enchantment_texture, GetTickCount() * 0.1, 0, 255);
   }
   else
   {
--- a/mm7_5.cpp	Thu Aug 08 16:34:37 2013 +0600
+++ b/mm7_5.cpp	Fri Aug 09 17:30:33 2013 +0600
@@ -2930,7 +2930,7 @@
         case UIMSG_ClickAwardsBtn:
           sub_419379();
           CharacterUI_ReleaseButtons();
-          sub_419220();
+          CreateAwardsScrollBar();
           pWindowList_at_506F50_minus1_indexing_buttons____and_an_int_[0] = 102;
           GUIWindow::Create(pCharacterScreen_AwardsBtn->uX, pCharacterScreen_AwardsBtn->uY, 0, 0, WINDOW_CharactersPressedButton, (int)pCharacterScreen_AwardsBtn, 0);
           FillAwardsData();
--- a/mm7_data.h	Thu Aug 08 16:34:37 2013 +0600
+++ b/mm7_data.h	Fri Aug 09 17:30:33 2013 +0600
@@ -1118,7 +1118,7 @@
 unsigned int __fastcall UI_GetHealthManaStringColor(signed int a1, signed int a2);
 signed int __thiscall GetConditionDrawColor(unsigned int uConditionIdx); // idb
 void FillAwardsData();
-void sub_419220();
+void CreateAwardsScrollBar();
 void sub_419379();
 unsigned int __fastcall GetSizeInInventorySlots(unsigned int uNumPixels);
 struct GUIButton *__fastcall GUI_HandleHotkey(unsigned __int8 uHotkey); // idb
@@ -1135,7 +1135,7 @@
 void __fastcall party_finds_gold(unsigned int uNumGold, int _1_dont_share_with_followers___2_the_same_but_without_a_message__else_normal); // idb
 void OnChestLeftClick();
 void __cdecl GameUI_WritePointedObjectStatusString();
-//struct GUIWindow *__thiscall sub_4219BE(void *a4);
+//struct GUIWindow *__thiscall GetCastSpellInInventoryWindow(void *a4);
 bool __cdecl sub_421B2C_PlaceInInventory_or_DropPickedItem();
 void __fastcall GameUI_OnPlayerPortraitLeftClick(unsigned int uPlayerID); // idb
 void OnInventoryLeftClick();