diff GUI/UI/UICharacter.cpp @ 2574:dd36326a9994

More texture refactoring GetLeather -> DrawTextureCustomHeight
author a.parshin
date Mon, 07 Mar 2016 03:48:40 +0200
parents 0c67be4ec900
children a76d408c5132
line wrap: on
line diff
--- a/GUI/UI/UICharacter.cpp	Sat Mar 05 16:25:53 2016 +0200
+++ b/GUI/UI/UICharacter.cpp	Mon Mar 07 03:48:40 2016 +0200
@@ -7,7 +7,9 @@
 #include "Engine/Engine.h"
 #include "Engine/AssetsManager.h"
 
-#include "UICharacter.h"
+#include "GUI/GUIWindow.h"
+#include "GUI/UI/UICharacter.h"
+
 #include "..\../Engine/MapInfo.h"
 #include "..\../GUI/GUIWindow.h"
 #include "..\../GUI/GUIFont.h"
@@ -192,21 +194,20 @@
   ui_house_player_cant_interact_color = Color16(255, 255, 155);
 }
 
-std::array<unsigned int, 16> papredoll_dbrds;
-unsigned int papredoll_drhs[4];
-unsigned int papredoll_dlhus[4];
-unsigned int papredoll_dlhs[4];
-unsigned int papredoll_dbods[5];
-int paperdoll_armor_texture[4][17][3];//0x511294
+Image *papredoll_drhs[4];
+Image *papredoll_dlhus[4];
+Image *papredoll_dlhs[4];
+Image *papredoll_dbods[5];
+Image *paperdoll_armor_texture[4][17][3];//0x511294
 //int paperdoll_array_51132C[165];
-unsigned int papredoll_dlaus[5];
-unsigned int papredoll_dlads[4];
-int papredoll_flying_feet[22]; // 005115E0
-int paperdoll_boots_texture[4][6];//511638
-int paperdoll_cloak_collar_texture[4][10]; // weak
-int paperdoll_cloak_texture[4][10];
-int paperdoll_helm_texture[2][16]; //511698
-int paperdoll_belt_texture[4][7];  //511718
+Image *papredoll_dlaus[5];
+Image *papredoll_dlads[4];
+Image *papredoll_flying_feet[22]; // 005115E0
+Image *paperdoll_boots_texture[4][6];//511638
+Image *paperdoll_cloak_collar_texture[4][10]; // weak
+Image *paperdoll_cloak_texture[4][10];
+Image *paperdoll_helm_texture[2][16]; //511698
+Image *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}},
@@ -400,11 +401,33 @@
     PLAYER_SKILL_UNARMED,
     PLAYER_SKILL_BLASTER
 };
-const  int pMiscSkills[12]  = {PLAYER_SKILL_ALCHEMY, PLAYER_SKILL_ARMSMASTER, PLAYER_SKILL_BODYBUILDING, PLAYER_SKILL_ITEM_ID, PLAYER_SKILL_MONSTER_ID, 
-    PLAYER_SKILL_LEARNING, PLAYER_SKILL_TRAP_DISARM, PLAYER_SKILL_MEDITATION, PLAYER_SKILL_MERCHANT, PLAYER_SKILL_PERCEPTION,
-    PLAYER_SKILL_REPAIR, PLAYER_SKILL_STEALING};
-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};
+const int pMiscSkills[12] =
+{
+    PLAYER_SKILL_ALCHEMY,
+    PLAYER_SKILL_ARMSMASTER,
+    PLAYER_SKILL_BODYBUILDING,
+    PLAYER_SKILL_ITEM_ID,
+    PLAYER_SKILL_MONSTER_ID, 
+    PLAYER_SKILL_LEARNING,
+    PLAYER_SKILL_TRAP_DISARM,
+    PLAYER_SKILL_MEDITATION,
+    PLAYER_SKILL_MERCHANT,
+    PLAYER_SKILL_PERCEPTION,
+    PLAYER_SKILL_REPAIR,
+    PLAYER_SKILL_STEALING
+};
+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
+};
 
 
 
@@ -419,6 +442,10 @@
 Image *ui_character_inventory_paperdoll_rings_close = nullptr;
 
 
+std::array<Image *, 16> paperdoll_dbrds;
+
+
+
 GUIWindow_CharacterRecord::GUIWindow_CharacterRecord(unsigned int uActiveCharacter, enum CURRENT_SCREEN screen) :
     GUIWindow(0, 0, window->GetWidth(), window->GetHeight(), uActiveCharacter, nullptr)
 {
@@ -438,35 +465,35 @@
 
   //auto wnd = new GUIWindow_CharacterRecord(0, 0, window->GetWidth(), window->GetHeight(), uActiveCharacter, 0);
   pCharacterScreen_StatsBtn = CreateButton(pViewport->uViewportTL_X + 12, pViewport->uViewportTL_Y + 308,
-                                pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureWidth,
-                                pIcons_LOD->GetTexture(papredoll_dbrds[9])->uTextureHeight,
+                                paperdoll_dbrds[9]->GetWidth(),
+                                paperdoll_dbrds[9]->GetHeight(),
                                 1, 0, UIMSG_ClickStatsBtn, 0, 'S', pGlobalTXT_LocalizationStrings[216],// Stats
-                                pIcons_LOD->GetTexture(papredoll_dbrds[10]),
-                                pIcons_LOD->GetTexture(papredoll_dbrds[9]), 0);
+                                paperdoll_dbrds[10],
+                                paperdoll_dbrds[9], 0);
   pCharacterScreen_SkillsBtn = CreateButton(pViewport->uViewportTL_X + 102, pViewport->uViewportTL_Y + 308,
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureWidth,
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[7])->uTextureHeight,
+                                 paperdoll_dbrds[7]->GetWidth(),
+                                 paperdoll_dbrds[7]->GetHeight(),
                                  1, 0, UIMSG_ClickSkillsBtn, 0, 'K', pGlobalTXT_LocalizationStrings[205],//Skills
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[8]),
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[7]), 0);
+                                 paperdoll_dbrds[8],
+                                 paperdoll_dbrds[7], 0);
   pCharacterScreen_InventoryBtn = CreateButton(pViewport->uViewportTL_X + 192, pViewport->uViewportTL_Y + 308,
-                                    pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureWidth,
-                                    pIcons_LOD->GetTexture(papredoll_dbrds[5])->uTextureHeight,
+                                    paperdoll_dbrds[5]->GetWidth(),
+                                    paperdoll_dbrds[5]->GetHeight(),
                                     1, 0, UIMSG_ClickInventoryBtn, 0, 'I', pGlobalTXT_LocalizationStrings[120], //Inventory
-                                    pIcons_LOD->GetTexture(papredoll_dbrds[6]),
-                                    pIcons_LOD->GetTexture(papredoll_dbrds[5]), 0);
+                                    paperdoll_dbrds[6],
+                                    paperdoll_dbrds[5], 0);
   pCharacterScreen_AwardsBtn = CreateButton(pViewport->uViewportTL_X + 282, pViewport->uViewportTL_Y + 308,
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureWidth,
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[3])->uTextureHeight,
+                                 paperdoll_dbrds[3]->GetWidth(),
+                                 paperdoll_dbrds[3]->GetHeight(),
                                  1, 0, UIMSG_ClickAwardsBtn, 0, 'A', pGlobalTXT_LocalizationStrings[22], //Awards
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[4]),
-                                 pIcons_LOD->GetTexture(papredoll_dbrds[3]), 0);
+                                 paperdoll_dbrds[4],
+                                 paperdoll_dbrds[3], 0);
   pCharacterScreen_ExitBtn = CreateButton(pViewport->uViewportTL_X + 371, pViewport->uViewportTL_Y + 308,
-                 pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureWidth,
-                 pIcons_LOD->GetTexture(papredoll_dbrds[1])->uTextureHeight,
+                 paperdoll_dbrds[1]->GetWidth(),
+                 paperdoll_dbrds[1]->GetHeight(),
                  1, 0, UIMSG_ClickExitCharacterWindowBtn, 0, 0, pGlobalTXT_LocalizationStrings[79],//Exit
-                 pIcons_LOD->GetTexture(papredoll_dbrds[2]),
-                 pIcons_LOD->GetTexture(papredoll_dbrds[1]), 0);
+                 paperdoll_dbrds[2],
+                 paperdoll_dbrds[1], 0);
   CreateButton(0, 0, 476, 345, 1, 122, UIMSG_InventoryLeftClick, 0, 0, "", 0);
   pCharacterScreen_DetalizBtn = CreateButton(600, 300, 30, 30, 1, 0, UIMSG_ChangeDetaliz, 0, 0, pGlobalTXT_LocalizationStrings[64], 0);
   pCharacterScreen_DollBtn = CreateButton(476, 0, 164, 345, 1, 0, UIMSG_ClickPaperdoll, 0, 0, "", 0);
@@ -653,8 +680,8 @@
   CS_inventory_window = new GUIWindow_Inventory_CastSpell(0, 0, window->GetWidth(), window->GetHeight(), (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);
+                 paperdoll_dbrds[2],
+                 paperdoll_dbrds[1], 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);
 
@@ -867,7 +894,7 @@
 //----- (0041A556) --------------------------------------------------------
 void draw_leather()
 {
-  pRenderer->DrawTextureTransparentColorKey(8, 8, pIcons_LOD->GetTexture(uTextureID_Leather));
+  pRenderer->DrawTextureNew(8/640.0f, 8/480.0f, ui_leather_mm7);
 }
 
 
@@ -877,11 +904,11 @@
   ItemGen *item; // edi@38
   int item_X; // ebx@38
   int index; // eax@65
-  int v59; // ebx@129
-  unsigned int v75; // ebx@170
-  int v94; // ebx@214
-  unsigned int v127; // ebx@314
-  unsigned int v153; // eax@370
+  Image *v59; // ebx@129
+  Image *v75; // ebx@170
+  Image *v94; // ebx@214
+  Image *v127; // ebx@314
+  Image *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
@@ -914,16 +941,19 @@
   pRenderer->DrawTextureAlphaNew(467/640.0f, 0, ui_character_inventory_paperdoll_background);
   if ( IsPlayerWearingWatersuit[uPlayerID] )//акваланг
   {
-    pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]));
+    pRenderer->DrawTextureAlphaNew(pPaperdoll_BodyX/640.0f, pPaperdoll_BodyY/480.0f, papredoll_dbods[uPlayerID - 1]);
     if ( !bRingsShownInCharScreen )
-      pRenderer->DrawMaskToZBuffer(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]), player->pEquipment.uArmor);
+      pRenderer->ZDrawTextureAlpha(pPaperdoll_BodyX/640.0f, pPaperdoll_BodyY/480.0f, papredoll_dbods[uPlayerID - 1], player->pEquipment.uArmor);
+
     //Рука не занята или ...
     if ( !player->GetItem(&PlayerEquipment::uMainHand)
          || ( player->GetMainHandItem()->GetItemEquipType() != EQUIP_TWO_HANDED)
          && (player->GetMainHandItem()->GetItemEquipType() != PLAYER_SKILL_SPEAR
          || player->GetItem(&PlayerEquipment::uShield)) )
-      pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1],
-                                        pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
+      pRenderer->DrawTextureAlphaNew(
+          (pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0])/640.0f,
+          (pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1])/480.0f,
+          papredoll_dlads[uPlayerID - 1]);
     //-----------------------------------------------------(Hand/Рука)---------------------------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uMainHand) )
     {
@@ -935,6 +965,8 @@
       else
         v166 = item->GetIconName();
 
+      auto texture = assets->GetImage_16BitAlpha(v166);
+
       if ( item->ItemEnchanted() )
       {
         if ( item->AuraEffectRed() )
@@ -952,18 +984,17 @@
           item->ResetEnchantAnimation();
           ptr_50C9A4_ItemToEnchant = nullptr;
         }
-        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);
+        pRenderer->BlendTextures(item_X, item_Y, texture, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
       }
 	  else if ( item->uAttributes & ITEM_BROKEN )
-        pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, texture);
       else if ( item->uAttributes & ITEM_IDENTIFIED )
-        pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, texture);
       else
-        pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, texture);
 
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v166, TEXTURE_16BIT_PALETTE)), player->pEquipment.uMainHand);
+        pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, texture, player->pEquipment.uMainHand);
     }
   }
   else// без акваланга
@@ -975,6 +1006,7 @@
       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;
 
+      auto texture = assets->GetImage_16BitAlpha(item->GetIconName());
       if ( item->ItemEnchanted() )// применён закл
       {
         if ( item->AuraEffectRed() )
@@ -992,19 +1024,20 @@
           item->ResetEnchantAnimation();
           ptr_50C9A4_ItemToEnchant = nullptr;
         }
-        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE)),
-                  pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),GetTickCount() * 0.1, 0, 255);
+        pRenderer->BlendTextures(item_X, item_Y, texture, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),GetTickCount() * 0.1, 0, 255);
       }
 	  else if ( item->uAttributes & ITEM_BROKEN )
-        pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE)));
-      else if ( !(item->uAttributes & ITEM_IDENTIFIED) )//не опознанный лук зелёный
-        pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, texture);
+      else if ( !(item->uAttributes & ITEM_IDENTIFIED) )
+        pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, texture);
       else // опознанный лук
-        pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, texture);
 
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE)),
-                player->pEquipment.uBow);
+        pRenderer->ZDrawTextureAlpha(
+            item_X/640.0f, item_Y/480.0f,
+            texture,
+            player->pEquipment.uBow);
     }
     //-----------------------------(Cloak/Плащ)---------------------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uCloak) )
@@ -1053,21 +1086,20 @@
             item->ResetEnchantAnimation();//~0x000000F0
             ptr_50C9A4_ItemToEnchant = nullptr;
           }
-          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]),
+          pRenderer->BlendTextures(item_X, item_Y, paperdoll_cloak_texture[pBodyComplection][index],
                            pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
         }
 	    else if ( item->uAttributes & ITEM_BROKEN )
-          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]));
+          pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_texture[pBodyComplection][index]);
         else
-          pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]));
+          pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_texture[pBodyComplection][index]);
 
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_texture[pBodyComplection][index]),
-                                       player->pEquipment.uCloak);
+          pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_texture[pBodyComplection][index], player->pEquipment.uCloak);
       }
     }
     //-------------------------------(Paperdoll/Кукла)-------------------------------------------
-    pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX, pPaperdoll_BodyY, pIcons_LOD->GetTexture(papredoll_dbods[uPlayerID - 1]));
+    pRenderer->DrawTextureAlphaNew(pPaperdoll_BodyX/640.0f, pPaperdoll_BodyY/480.0f, papredoll_dbods[uPlayerID - 1]);
     //-------------------------------(Armor/Броня)-----------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uArmor) )
     {
@@ -1112,19 +1144,18 @@
             item->ResetEnchantAnimation();//~0x000000F0
             ptr_50C9A4_ItemToEnchant = nullptr;
           }
-          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][0]),
+          pRenderer->BlendTextures(item_X, item_Y, paperdoll_armor_texture[pBodyComplection][index][0],
                           pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
         }
 	    else if ( item->uAttributes & ITEM_BROKEN )
-          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][0]));
+          pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][0]);
         else if ( !(item->uAttributes & ITEM_IDENTIFIED) )
-          pRenderer->DrawTransparentGreenShade(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]]);
+          pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][0]);
         else
-          pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]]);
+          pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][0]);
 
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(item_X, item_Y, &pIcons_LOD->pTextures[paperdoll_armor_texture[pBodyComplection][index][0]],
-                                       player->pEquipment.uArmor);
+          pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][0], player->pEquipment.uArmor);
       }
     }
     //----------------------------------(Boot/Обувь)--------------------------------------------------------
@@ -1168,18 +1199,18 @@
             item->ResetEnchantAnimation();//~0x000000F0
             ptr_50C9A4_ItemToEnchant = nullptr;
           }
-          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v59), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+          pRenderer->BlendTextures(item_X, item_Y, v59, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
                   GetTickCount() * 0.1, 0, 255);
         }
 		else if ( item->uAttributes & ITEM_BROKEN )
-          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v59));
+          pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, v59);
         else if ( item->uAttributes & ITEM_IDENTIFIED )
-          pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(v59));
+          pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, v59);
         else
-          pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v59));
+          pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, v59);
 
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v59), player->pEquipment.uBoot);
+          pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, v59, player->pEquipment.uBoot);
       }
     }
     //--------------------------------------------(Hand/Рука)------------------------------------------------------
@@ -1187,8 +1218,10 @@
         || ( player->GetMainHandItem()->GetItemEquipType() != EQUIP_TWO_HANDED)
         && (player->GetMainHandItem()->GetPlayerSkillType() != PLAYER_SKILL_SPEAR
         || player->GetItem(&PlayerEquipment::uShield)) )
-      pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0],
-                            pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlads[uPlayerID - 1]));
+      pRenderer->DrawTextureAlphaNew(
+          (pPaperdoll_BodyX + pPaperdoll_LeftHand[pBodyComplection][0])/640.0f,
+          (pPaperdoll_BodyY + pPaperdoll_LeftHand[pBodyComplection][1])/480.0f,
+          papredoll_dlads[uPlayerID - 1]);
     //--------------------------------------------(Belt/Пояс)-------------------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uBelt))
     {
@@ -1231,18 +1264,18 @@
             item->ResetEnchantAnimation();//~0x000000F0
             ptr_50C9A4_ItemToEnchant = nullptr;
           }
-          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v75), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+          pRenderer->BlendTextures(item_X, item_Y, v75, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
                       GetTickCount() * 0.1, 0, 255);
         }
 		else if ( item->uAttributes & ITEM_BROKEN )
-          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v75));
+          pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, v75);
         else if ( item->uAttributes & ITEM_IDENTIFIED )
-          pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(v75));
+          pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, v75);
         else
-          pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v75));
+          pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, v75);
 
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v75), player->pEquipment.uBelt);
+          pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, v75, player->pEquipment.uBelt);
       }
     }
     //--------------------------------(Shoulder/Плечи)---------------------------------------------
@@ -1274,7 +1307,7 @@
           && !player->GetItem(&PlayerEquipment::uShield) ))//без щита
         {
           v94 = paperdoll_armor_texture[pBodyComplection][index][2];
-          if ( paperdoll_armor_texture[pBodyComplection][index][2] == pIcons_LOD->FindTextureByName("pending") )
+          if ( paperdoll_armor_texture[pBodyComplection][index][2] )
           {
             v94 = paperdoll_armor_texture[pBodyComplection][index][1];
             item_X = pPaperdoll_BodyX + paperdoll_shoulder_coord[pBodyComplection][index][0];
@@ -1285,11 +1318,11 @@
             item_X = pPaperdoll_BodyX + paperdoll_shoulder_second_coord[pBodyComplection][index][0];
             item_Y = pPaperdoll_BodyY + paperdoll_shoulder_second_coord[pBodyComplection][index][1];
           }
-          if ( v94 != pIcons_LOD->FindTextureByName("pending") )
+          if ( v94 )
           {
             if ( item->ItemEnchanted() )
             {
-              if ( paperdoll_armor_texture[pBodyComplection][index][2] != pIcons_LOD->FindTextureByName("pending") )
+              if ( paperdoll_armor_texture[pBodyComplection][index][2] )
               {
                 if ( item->AuraEffectRed() )
                   container = "sptext01";
@@ -1306,23 +1339,23 @@
                   item->ResetEnchantAnimation();//~0x000000F0
                   ptr_50C9A4_ItemToEnchant = nullptr;
                 }
-                pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v94), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+                pRenderer->BlendTextures(item_X, item_Y, v94, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
                     GetTickCount() * 0.1, 0, 255);
               }
             }
 		    else if ( item->uAttributes & ITEM_BROKEN )
-              pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v94));
+              pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, v94);
             else if ( item->uAttributes & ITEM_IDENTIFIED )
-              pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(v94));
+              pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, v94);
             else
-              pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v94));
+              pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, v94);
 
           }
         }
         else//без ничего или с щитом
         {
           //v94 = paperdoll_armor_texture[pBodyComplection][index][1];
-          if ( paperdoll_armor_texture[pBodyComplection][index][1] != pIcons_LOD->FindTextureByName("pending") )
+          if ( paperdoll_armor_texture[pBodyComplection][index][1] )
           {
             item_X = pPaperdoll_BodyX + paperdoll_shoulder_coord[pBodyComplection][index][0];
             item_Y = pPaperdoll_BodyY + paperdoll_shoulder_coord[pBodyComplection][index][1];
@@ -1344,16 +1377,15 @@
                 item->ResetEnchantAnimation();//~0x000000F0
                 ptr_50C9A4_ItemToEnchant = nullptr;
               }
-              pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][1]),
+              pRenderer->BlendTextures(item_X, item_Y, paperdoll_armor_texture[pBodyComplection][index][1],
                 pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
             }
 			else if ( item->uAttributes & ITEM_BROKEN )
-              pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][1]));
+              pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][1]);
             else if ( item->uAttributes & ITEM_IDENTIFIED )
-              pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][1]));
+              pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][1]);
             else
-              pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_armor_texture[pBodyComplection][index][1]));
-
+              pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, paperdoll_armor_texture[pBodyComplection][index][1]);
           }
         }
       }
@@ -1388,7 +1420,7 @@
           item_Y = pPaperdoll_BodyY + paperdoll_CloakCollar[pBodyComplection][index][1];
 		  signed int r = pIcons_LOD->FindTextureByName("item325v2a1");
 
-          if ( paperdoll_cloak_collar_texture[pBodyComplection][index] != pIcons_LOD->FindTextureByName("pending") )
+          if ( paperdoll_cloak_collar_texture[pBodyComplection][index] )
           {
             if ( item->ItemEnchanted() )
             {
@@ -1407,16 +1439,16 @@
                 item->ResetEnchantAnimation();//~0x000000F0
                 ptr_50C9A4_ItemToEnchant = nullptr;
               }
-              pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]),
+              pRenderer->BlendTextures(item_X, item_Y, paperdoll_cloak_collar_texture[pBodyComplection][index],
                             pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
             }
 		    else if ( item->uAttributes & ITEM_BROKEN )
-              pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]));
+              pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_collar_texture[pBodyComplection][index]);
             else
-              pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]));
+              pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_collar_texture[pBodyComplection][index]);
 
             if ( !bRingsShownInCharScreen )
-              pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(paperdoll_cloak_collar_texture[pBodyComplection][index]),
+              pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, paperdoll_cloak_collar_texture[pBodyComplection][index],
                              player->pEquipment.uCloak);
           }
         }
@@ -1424,10 +1456,11 @@
       //--------------------------------------------(Beards/Борода)-------------------------------------------------------
       if ( player->uCurrentFace == 12 || player->uCurrentFace == 13 )
       {
-        if ( papredoll_dbrds[player->uCurrentFace] != pIcons_LOD->FindTextureByName("Pending") )
-          pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_Beards[2 * player->uCurrentFace - 24],
-                     pPaperdoll_BodyY + pPaperdoll_Beards[2 * player->uCurrentFace - 23],
-                     pIcons_LOD->GetTexture(papredoll_dbrds[player->uCurrentFace]));
+        if ( paperdoll_dbrds[player->uCurrentFace])
+          pRenderer->DrawTextureAlphaNew(
+              (pPaperdoll_BodyX + pPaperdoll_Beards[2 * player->uCurrentFace - 24])/640.0f,
+              (pPaperdoll_BodyY + pPaperdoll_Beards[2 * player->uCurrentFace - 23])/480.0f,
+              paperdoll_dbrds[player->uCurrentFace]);
       }
     //--------------------------------------------(Helm/Шлем)------------------------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uHelm) )
@@ -1457,10 +1490,10 @@
       {
         item_X = pPaperdoll_BodyX + paperdoll_Helm[pBodyComplection][index][0];
         item_Y = pPaperdoll_BodyY + paperdoll_Helm[pBodyComplection][index][1];
-        if ( IsDwarf != 1 || item->uItemID != 92 )
+        if ( IsDwarf != 1 || item->uItemID != ITEM_92)
           v127 = paperdoll_helm_texture[player->GetSexByVoice()][index];
         else
-          v127 = papredoll_dbrds[11];
+          v127 = paperdoll_dbrds[11];
 
         if ( item->ItemEnchanted() )
         {
@@ -1479,18 +1512,18 @@
             item->ResetEnchantAnimation();
             ptr_50C9A4_ItemToEnchant = nullptr;
           }
-          pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v127), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+          pRenderer->BlendTextures(item_X, item_Y, v127, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
                         GetTickCount() * 0.1, 0, 255);
         }
         else if ( item->uAttributes & ITEM_BROKEN )
-          pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v127));
+          pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, v127);
         else if ( item->uAttributes & ITEM_IDENTIFIED )
-          pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(v127));
+          pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, v127);
         else
-          pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v127));
+          pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, v127);
 
         if ( !bRingsShownInCharScreen )
-          pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v127), player->pEquipment.uHelm);
+          pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, v127, player->pEquipment.uHelm);
       }
     }
     //------------------------------------------------(Hand3/Рука3)-------------------------------------------
@@ -1504,6 +1537,8 @@
       else
         v181 = item->GetIconName();
 
+      auto texture = assets->GetImage_16BitAlpha(v181);
+
       if ( item->ItemEnchanted() )
       {
         if ( item->AuraEffectRed() )
@@ -1521,19 +1556,18 @@
           item->ResetEnchantAnimation();
           ptr_50C9A4_ItemToEnchant = nullptr;
         }
-        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)),
+        pRenderer->BlendTextures(item_X, item_Y, texture,
                    pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE), GetTickCount() * 0.1, 0, 255);
       }
 	  else if ( item->uAttributes & ITEM_BROKEN )
-        pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, texture);
       else if ( item->uAttributes & ITEM_IDENTIFIED )
-        pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, texture);
       else
-        pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)));
+        pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, texture);
 
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(pIcons_LOD->LoadTexture(v181, TEXTURE_16BIT_PALETTE)),
-                    player->pEquipment.uMainHand);
+        pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, texture, player->pEquipment.uMainHand);
     }
     //--------------------------------------------------(Shield/Щит)---------------------------------------------
     if ( player->GetItem(&PlayerEquipment::uShield) )
@@ -1569,7 +1603,8 @@
         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(item->GetIconName(), TEXTURE_16BIT_PALETTE);
+      //v153 = pIcons_LOD->LoadTexture(item->GetIconName(), TEXTURE_16BIT_PALETTE);
+      v153 = assets->GetImage_16BitAlpha(item->GetIconName());
 
        if ( item->ItemEnchanted() )
       {
@@ -1588,33 +1623,40 @@
           item->ResetEnchantAnimation();
           ptr_50C9A4_ItemToEnchant = nullptr;
         }
-        pRenderer->DrawAura(item_X, item_Y, pIcons_LOD->GetTexture(v153), pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
+        pRenderer->BlendTextures(item_X, item_Y, v153, pIcons_LOD->LoadTexturePtr(container, TEXTURE_16BIT_PALETTE),
                      GetTickCount() * 0.1, 0, 255);
       }
 	  else if ( item->uAttributes & ITEM_BROKEN )
-        pRenderer->DrawTransparentRedShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
+        pRenderer->DrawTransparentRedShade(item_X/640.0f, item_Y/480.0f, v153);
       else if ( !(item->uAttributes & ITEM_IDENTIFIED) )
-        pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
+        pRenderer->DrawTransparentGreenShade(item_X/640.0f, item_Y/480.0f, v153);
       else
-        pRenderer->DrawTextureIndexedAlpha(item_X, item_Y, pIcons_LOD->GetTexture(v153));
+        pRenderer->DrawTextureAlphaNew(item_X/640.0f, item_Y/480.0f, v153);
 
       if ( two_handed_left_fist )//two-handed - left fist/двуручие - левая кисть
-        pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0],
-                 pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlhs[uPlayerID - 1]));
+        pRenderer->DrawTextureAlphaNew(
+            (pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0])/640.0f,
+            (pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1])/480.0f,
+            papredoll_dlhs[uPlayerID - 1]);
       if ( !bRingsShownInCharScreen )
-        pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v153), player->pEquipment.uShield);
+        pRenderer->ZDrawTextureAlpha(item_X/640.0f, item_Y/480.0f, v153, player->pEquipment.uShield);
     }
   }
   //--------------------------------------------------------(RightHand/Правая кисть)--------------------------------------------------
-  pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_drhs[uPlayerID - 1]));
+  pRenderer->DrawTextureAlphaNew(
+      (pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0])/640.0f,
+      (pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1])/480.0f,
+      papredoll_drhs[uPlayerID - 1]);
   //---------------------------------------------(two-handed - hand/Двуручие - рука)--------------------------------------------------
   if ( player->GetItem(&PlayerEquipment::uMainHand) )
   {
     if ( player->GetMainHandItem()->GetItemEquipType() == EQUIP_TWO_HANDED
          || player->GetMainHandItem()->GetPlayerSkillType() == PLAYER_SKILL_SPEAR
          && !player->GetItem(&PlayerEquipment::uShield) )
-      pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0],
-                 pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1]));
+      pRenderer->DrawTextureAlphaNew(
+          (pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0])/640.0f,
+          (pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1])/480.0f,
+          papredoll_dlaus[uPlayerID - 1]);
   }
   //--------------------------------------------------------(two-handed - fist/двуручие - кисть)----------------------------------------------------
   if ( player->GetItem(&PlayerEquipment::uMainHand))
@@ -1623,21 +1665,22 @@
     if ( item->GetItemEquipType() == EQUIP_TWO_HANDED
         || item->GetPlayerSkillType() == PLAYER_SKILL_SPEAR
         && !player->GetItem(&PlayerEquipment::uShield) )
-      pRenderer->DrawTextureIndexedAlpha(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0], 
-                                        pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], 
-                                        pIcons_LOD->GetTexture(papredoll_dlhus[uPlayerID - 1]));
+      pRenderer->DrawTextureAlphaNew(
+          (pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0])/640.0f,
+          (pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1])/480.0f,
+          papredoll_dlhus[uPlayerID - 1]);
   }
 
   if ( !bRingsShownInCharScreen )//рисование лупы
     pRenderer->DrawTextureAlphaNew(603/640.0f, 299/480.0f, ui_character_inventory_magnification_glass);
 
-  pRenderer->DrawTextureAlphaNew(468 / 640.0f, 0, game_ui_right_panel_frame);
+  pRenderer->DrawTextureAlphaNew(468/640.0f, 0, game_ui_right_panel_frame);
 }
 
 //----- (0041A2D1) --------------------------------------------------------
 void CharacterUI_InventoryTab_Draw(Player *player, bool a2)
 {
-  Texture *pTexture; // esi@6
+  Image *pTexture; // esi@6
   unsigned int v17; // edi@15
   unsigned int uCellX; // [sp+30h] [bp-8h]@5
   unsigned int uCellY; // [sp+34h] [bp-4h]@5
@@ -1654,22 +1697,28 @@
       continue;
     uCellY = 32 * (i / 14) + 17;
     uCellX = 32 * (i % 14) + 14;
-    uint item_texture_id = pIcons_LOD->LoadTexture(player->pInventoryItemList[player->pInventoryMatrix[i] - 1].GetIconName(), TEXTURE_16BIT_PALETTE);
-    pTexture = pIcons_LOD->GetTexture(item_texture_id);
-    if (pTexture->uTextureWidth < 14)
-      pTexture->uTextureWidth = 14;
-    if ( (pTexture->uTextureWidth - 14) / 32 == 0 && pTexture->uTextureWidth < 32)
-      uCellX += (32 - pTexture->uTextureWidth) / 2;
-    //v13 = pTexture->uTextureWidth - 14;
-    //LOBYTE(v13) = v13 & 0xE0;
-    //v15 = v13 + 32;
-    if (pTexture->uTextureHeight < 14 )
-      pTexture->uTextureHeight = 14;
-    v17 = uCellX + (( (int)((pTexture->uTextureWidth - 14) & 0xE0) + 32 - pTexture->uTextureWidth) / 2)
-       + pSRZBufferLineOffsets[uCellY + (( (int)((pTexture->uTextureHeight - 14) & 0xFFFFFFE0) - pTexture->uTextureHeight + 32) / 2)];   //added typecast. without it the value in the brackets got cat to unsigned which messed stuff up
+
+    //uint item_texture_id = pIcons_LOD->LoadTexture(player->pInventoryItemList[player->pInventoryMatrix[i] - 1].GetIconName(), TEXTURE_16BIT_PALETTE);
+    //pTexture = pIcons_LOD->GetTexture(item_texture_id);
+    pTexture = assets->GetImage_16BitAlpha(player->pInventoryItemList[player->pInventoryMatrix[i] - 1].GetIconName());
+
+    //if (pTexture->uTextureWidth < 14)
+    //  pTexture->uTextureWidth = 14;
+    int width = pTexture->GetWidth();
+    if (width < 14)
+        width = 14;
+
+    if ( (width - 14) / 32 == 0 && width < 32)
+      uCellX += (32 - width) / 2;
+
+    int height = pTexture->GetHeight();
+    if (height < 14 )
+        height = 14;
+    v17 = uCellX + (( (int)((width - 14) & 0xE0) + 32 - width) / 2)
+       + pSRZBufferLineOffsets[uCellY + (( (int)((height - 14) & 0xFFFFFFE0) - height + 32) / 2)];   //added typecast. without it the value in the brackets got cat to unsigned which messed stuff up
     if (player->pInventoryItemList[player->pInventoryMatrix[i] - 1].uAttributes & ITEM_ENCHANT_ANIMATION)
     {
-      Texture *loadedTextureptr = nullptr;
+      Texture_MM7 *loadedTextureptr = nullptr;
       switch (player->pInventoryItemList[player->pInventoryMatrix[i] - 1].uAttributes & ITEM_ENCHANT_ANIMATION)
       {
         case ITEM_AURA_EFFECT_RED:    loadedTextureptr = pIcons_LOD->LoadTexturePtr("sptext01", TEXTURE_16BIT_PALETTE); break;
@@ -1685,21 +1734,21 @@
         ptr_50C9A4_ItemToEnchant = nullptr;
       }
 
-      pRenderer->DrawAura(uCellX, uCellY, pTexture, loadedTextureptr, GetTickCount() * 0.1, 0, 255);
-      ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, player->pInventoryMatrix[i]);
+      pRenderer->BlendTextures(uCellX, uCellY, pTexture, loadedTextureptr, GetTickCount() * 0.1, 0, 255);
+      //ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, player->pInventoryMatrix[i]);
     }
     else
     {
       if (player->pInventoryItemList[player->pInventoryMatrix[i] - 1].IsIdentified() || current_screen_type != SCREEN_HOUSE)
       {
         if (player->pInventoryItemList[player->pInventoryMatrix[i] - 1].IsBroken())
-          pRenderer->DrawTransparentRedShade(uCellX, uCellY, pTexture);
+          pRenderer->DrawTransparentRedShade(uCellX/640.0f, uCellY/480.0f, pTexture);
         else
-          pRenderer->DrawTextureIndexedAlpha(uCellX, uCellY, pTexture);
+          pRenderer->DrawTextureAlphaNew(uCellX/640.0f, uCellY/480.0f, pTexture);
       }
       else
-        pRenderer->DrawTransparentGreenShade(uCellX, uCellY, pTexture);
-      ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, player->pInventoryMatrix[i]);
+        pRenderer->DrawTransparentGreenShade(uCellX/640.0f, uCellY/480.0f, pTexture);
+      //ZBuffer_Fill(&pRenderer->pActiveZBuffer[v17], item_texture_id, player->pInventoryMatrix[i]);
       continue;
     }
   }
@@ -1707,11 +1756,12 @@
 
 static void CharacterUI_DrawItem(int x, int y, ItemGen *item, int id)
 {
-  Texture* item_texture = pIcons_LOD->LoadTexturePtr(item->GetIconName(), TEXTURE_16BIT_PALETTE);
+  //Texture_MM7* item_texture = pIcons_LOD->LoadTexturePtr(item->GetIconName(), TEXTURE_16BIT_PALETTE);
+    auto item_texture = assets->GetImage_16BitAlpha(item->GetIconName());
 
   if (item->uAttributes & ITEM_ENCHANT_ANIMATION) // enchant animation
   {
-    Texture *enchantment_texture = nullptr;
+    Texture_MM7 *enchantment_texture = nullptr;
     switch (item->uAttributes & ITEM_ENCHANT_ANIMATION)
     {
       case ITEM_AURA_EFFECT_RED:    enchantment_texture = pIcons_LOD->LoadTexturePtr("sptext01", TEXTURE_16BIT_PALETTE); break;
@@ -1727,16 +1777,16 @@
       item->uAttributes &= 0xFFFFFF0F;
       ptr_50C9A4_ItemToEnchant = nullptr;
     }
-    pRenderer->DrawAura(x, y, item_texture, enchantment_texture, GetTickCount() * 0.1, 0, 255);
+    pRenderer->BlendTextures(x, y, item_texture, enchantment_texture, GetTickCount() * 0.1, 0, 255);
   }
   else
   {
     if (item->IsBroken())
-      pRenderer->DrawTransparentRedShade(x, y, item_texture);
+      pRenderer->DrawTransparentRedShade(x/640.0f, y/480.0f, item_texture);
     else if (!item->IsIdentified())
-      pRenderer->DrawTransparentGreenShade(x, y, item_texture);
+      pRenderer->DrawTransparentGreenShade(x/640.0f, y/480.0f, item_texture);
     else
-      pRenderer->DrawTextureIndexedAlpha(x, y, item_texture);
+      pRenderer->DrawTextureAlphaNew(x/640.0f, y/480.0f, item_texture);
 
     pRenderer->ZBuffer_Fill_2(x, y, item_texture, id);
   }
@@ -1796,51 +1846,57 @@
       else
         v3 = (pPlayers[i + 1]->GetSexByVoice() != 0) + 1;
       wsprintfA(pContainer, "pc23v%dBod", v3);
-      papredoll_dbods[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Body texture
+      papredoll_dbods[i] = assets->GetImage_16BitAlpha(pContainer);//Body texture
       wsprintfA(pContainer, "pc23v%dlad", v3);
-      papredoll_dlads[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand
+      papredoll_dlads[i] = assets->GetImage_16BitAlpha(pContainer);// Left Hand
       wsprintfA(pContainer, "pc23v%dlau", v3);
-      papredoll_dlaus[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Hand2
+      papredoll_dlaus[i] = assets->GetImage_16BitAlpha(pContainer);// Left Hand2
       wsprintfA(pContainer, "pc23v%drh", v3);
-      papredoll_drhs[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Right Hand
+      papredoll_drhs[i] = assets->GetImage_16BitAlpha(pContainer);// Right Hand
       wsprintfA(pContainer, "pc23v%dlh", v3);
-      papredoll_dlhs[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// Left Fist
+      papredoll_dlhs[i] = assets->GetImage_16BitAlpha(pContainer);// Left Palm
       wsprintfA(pContainer, "pc23v%dlhu", v3);
-      papredoll_dlhus[i] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE); // Left Fist 2
+      papredoll_dlhus[i] = assets->GetImage_16BitAlpha(pContainer); // Left Fist
       pPlayer = pPlayers[i + 1];
+
       if ( pPlayer->uCurrentFace == 12 || pPlayer->uCurrentFace == 13 )
-        papredoll_dbrds[(char)pPlayer->uCurrentFace] = 0;
-      papredoll_flying_feet[pPlayer->uCurrentFace] = 0;
-      IsPlayerWearingWatersuit[i + 1] = 1;
+        paperdoll_dbrds[(char)pPlayer->uCurrentFace] = nullptr;
+      papredoll_flying_feet[pPlayer->uCurrentFace] = nullptr;
+
+      IsPlayerWearingWatersuit[i + 1] = true;
     }
     else
     {
-      papredoll_dbods[i] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-      papredoll_dlads[i] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-      papredoll_dlaus[i] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-      papredoll_drhs[i] = pIcons_LOD->LoadTexture(drh_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-      papredoll_dlhs[i] = pIcons_LOD->LoadTexture(dlh_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-      papredoll_dlhus[i] = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[i + 1]->uCurrentFace], TEXTURE_16BIT_PALETTE);
+      papredoll_dbods[i] = assets->GetImage_16BitAlpha(dbod_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+      papredoll_dlads[i] = assets->GetImage_16BitAlpha(dlad_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+      papredoll_dlaus[i] = assets->GetImage_16BitAlpha(dlau_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+      papredoll_drhs[i] = assets->GetImage_16BitAlpha(drh_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+      papredoll_dlhs[i] = assets->GetImage_16BitAlpha(dlh_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+      papredoll_dlhus[i] = assets->GetImage_16BitAlpha(dlhu_texnames_by_face[pPlayers[i + 1]->uCurrentFace]);
+
+      wchar_t name[1024];
       if ( pPlayers[i + 1]->uCurrentFace == 12 || pPlayers[i + 1]->uCurrentFace == 13 )
       {
-        wsprintfA(pContainer, "pc%02dbrd", pPlayers[i + 1]->uCurrentFace + 1);
-        papredoll_dbrds[pPlayers[i + 1]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        wsprintfW(name, L"pc%02dbrd", pPlayers[i + 1]->uCurrentFace + 1);
+        paperdoll_dbrds[pPlayers[i + 1]->uCurrentFace] = assets->GetImage_16BitAlpha(name);
       }
-      wsprintfA(pContainer, "item281pc%02d", pPlayers[i + 1]->uCurrentFace + 1);
-      papredoll_flying_feet[pPlayers[i + 1]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      wsprintfW(name, L"item281pc%02d", pPlayers[i + 1]->uCurrentFace + 1);
+      papredoll_flying_feet[pPlayers[i + 1]->uCurrentFace] = assets->GetImage_16BitAlpha(name);
       IsPlayerWearingWatersuit[i + 1] = 0;
     }
   }
 
-  uTextureID_ar_up_up = pIcons_LOD->LoadTexture("ar_up_up", TEXTURE_16BIT_PALETTE);
-  uTextureID_ar_up_dn = pIcons_LOD->LoadTexture("ar_up_dn", TEXTURE_16BIT_PALETTE);
-  uTextureID_ar_dn_up = pIcons_LOD->LoadTexture("ar_dn_up", TEXTURE_16BIT_PALETTE);
-  uTextureID_ar_dn_dn = pIcons_LOD->LoadTexture("ar_dn_dn", TEXTURE_16BIT_PALETTE);
-  papredoll_dbrds[9] = pIcons_LOD->LoadTexture("ib-cd1-d", TEXTURE_16BIT_PALETTE);
-  papredoll_dbrds[7] = pIcons_LOD->LoadTexture("ib-cd2-d", TEXTURE_16BIT_PALETTE);
-  papredoll_dbrds[5] = pIcons_LOD->LoadTexture("ib-cd3-d", TEXTURE_16BIT_PALETTE);
-  papredoll_dbrds[3] = pIcons_LOD->LoadTexture("ib-cd4-d", TEXTURE_16BIT_PALETTE);
-  papredoll_dbrds[1] = pIcons_LOD->LoadTexture("ib-cd5-d", TEXTURE_16BIT_PALETTE);
+  ui_ar_up_up = assets->GetImage_16BitAlpha(L"ar_up_up");
+  ui_ar_up_dn = assets->GetImage_16BitAlpha(L"ar_up_dn");
+  ui_ar_dn_up = assets->GetImage_16BitAlpha(L"ar_dn_up");
+  ui_ar_dn_dn = assets->GetImage_16BitAlpha(L"ar_dn_dn");
+
+  paperdoll_dbrds[9] = assets->GetImage_16BitAlpha(L"ib-cd1-d");
+  paperdoll_dbrds[7] = assets->GetImage_16BitAlpha(L"ib-cd2-d");
+  paperdoll_dbrds[5] = assets->GetImage_16BitAlpha(L"ib-cd3-d");
+  paperdoll_dbrds[3] = assets->GetImage_16BitAlpha(L"ib-cd4-d");
+  paperdoll_dbrds[1] = assets->GetImage_16BitAlpha(L"ib-cd5-d");
+
   for ( uint i = 0; i < 54; ++i )// test equipment
   {
     party_has_equipment[i] = 0;
@@ -1882,27 +1938,28 @@
     for ( uint j = 0; j < 5; ++j )//Belt
     {
       GetItemTextureFilename(pContainer, j + 100, i + 1, 0);
-      paperdoll_belt_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_belt_texture[i][j] = assets->GetImage_16BitAlpha(pContainer);
     }
     GetItemTextureFilename(pContainer, 535, i + 1, 0);
-    paperdoll_belt_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_belt_texture[i][6] = assets->GetImage_16BitAlpha(pContainer);
     for ( uint j = 0; j < 11; ++j )//Helm
     {
       GetItemTextureFilename(pContainer, j + 89, i + 1, 0);
-      paperdoll_helm_texture[i][j] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_helm_texture[i][j] = assets->GetImage_16BitAlpha(pContainer);
     }
     GetItemTextureFilename(pContainer, 521, i + 1, 0);
-    paperdoll_helm_texture[i][11] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_helm_texture[i][11] = assets->GetImage_16BitAlpha(pContainer);
     GetItemTextureFilename(pContainer, 522, i + 1, 0);
-    paperdoll_helm_texture[i][12] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_helm_texture[i][12] = assets->GetImage_16BitAlpha(pContainer);
     GetItemTextureFilename(pContainer, 523, i + 1, 0);
-    paperdoll_helm_texture[i][13] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_helm_texture[i][13] = assets->GetImage_16BitAlpha(pContainer);
     GetItemTextureFilename(pContainer, 532, i + 1, 0);
-    paperdoll_helm_texture[i][14] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_helm_texture[i][14] = assets->GetImage_16BitAlpha(pContainer);
     GetItemTextureFilename(pContainer, 544, i + 1, 0);
-    paperdoll_helm_texture[i][15] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    paperdoll_helm_texture[i][15] = assets->GetImage_16BitAlpha(pContainer);
+
     if ( IsDwarfPresentInParty(true) )          //the phynaxian helm uses a slightly different graphic for dwarves
-      papredoll_dbrds[11] = pIcons_LOD->LoadTexture("item092v3", TEXTURE_16BIT_PALETTE);
+      paperdoll_dbrds[11] = assets->GetImage_16BitAlpha(L"item092v3");
   }
   //v43 = 0;
   for (uint i = 0; i < 4; ++i)
@@ -1910,76 +1967,77 @@
     if ( ShouldLoadTexturesForRaceAndGender(i) )
     {
       GetItemTextureFilename(pContainer, 524, i + 1, 0);
-      paperdoll_belt_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);//Titans belt
+      paperdoll_belt_texture[i][5] = assets->GetImage_16BitAlpha(pContainer);//Titans belt
       pItemTXTNum = 66;
       for ( v32 = 0; v32 < 13; ++v32 )//simple armor
       {
         GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 0);
-        paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// armor
+        paperdoll_armor_texture[i][v32][0] = assets->GetImage_16BitAlpha(pContainer);// armor
         GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 1);
-        paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// shoulder 1
+        paperdoll_armor_texture[i][v32][1] = assets->GetImage_16BitAlpha(pContainer);// shoulder 1
         GetItemTextureFilename(pContainer, pItemTXTNum, i + 1, 2);
-        paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);// shoulder 2
+        paperdoll_armor_texture[i][v32][2] = assets->GetImage_16BitAlpha(pContainer);// shoulder 2
         pItemTXTNum++;
       }
       GetItemTextureFilename(pContainer, 516, i + 1, 0);//artefacts
-      paperdoll_armor_texture[i][v32][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32][0] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 516, i + 1, 1);
-      paperdoll_armor_texture[i][v32][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32][1] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 516, i + 1, 2);
-      paperdoll_armor_texture[i][v32][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32][2] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 505, i + 1, 0);
-      paperdoll_armor_texture[i][v32 + 1][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 1][0] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 505, i + 1, 1);
-      paperdoll_armor_texture[i][v32 + 1][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 1][1] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 505, i + 1, 2);
-      paperdoll_armor_texture[i][v32 + 1][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 1][2] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 504, i + 1, 0);
-      paperdoll_armor_texture[i][v32 + 2][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 2][0] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 504, i + 1, 1);
-      paperdoll_armor_texture[i][v32 + 2][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 2][1] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 504, i + 1, 2);
-      paperdoll_armor_texture[i][v32 + 2][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 2][2] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 533, i + 1, 0);
-      paperdoll_armor_texture[i][v32 + 3][0] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 3][0] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 533, i + 1, 1);
-      paperdoll_armor_texture[i][v32 + 3][1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 3][1] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 533, i + 1, 2);
-      paperdoll_armor_texture[i][v32 + 3][2] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_armor_texture[i][v32 + 3][2] = assets->GetImage_16BitAlpha(pContainer);
       for ( v33 = 0; v33 < 5; ++v33 )//boots
       {
         GetItemTextureFilename(pContainer, v33 + 115, i + 1, 0);
-        paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        paperdoll_boots_texture[i][v33] = assets->GetImage_16BitAlpha(pContainer);
       }
       GetItemTextureFilename(pContainer, 512, i + 1, 0);
-      paperdoll_boots_texture[i][v33] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_boots_texture[i][v33] = assets->GetImage_16BitAlpha(pContainer);
       for ( v38 = 0; v38 < 5; ++v38 )//Cloak
       {
         GetItemTextureFilename(pContainer, v38 + 105, i + 1, 0);
-        paperdoll_cloak_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        paperdoll_cloak_texture[i][v38] = assets->GetImage_16BitAlpha(pContainer);
         GetItemTextureFilename(pContainer, v38 + 105, i + 1, 1);
-        paperdoll_cloak_collar_texture[i][v38] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+        paperdoll_cloak_collar_texture[i][v38] = assets->GetImage_16BitAlpha(pContainer);
       }
+
       GetItemTextureFilename(pContainer, 525, i + 1, 0);
-      paperdoll_cloak_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_texture[i][5] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 530, i + 1, 0);
-      paperdoll_cloak_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_texture[i][6] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 547, i + 1, 0);
-      paperdoll_cloak_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_texture[i][7] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 548, i + 1, 0);
-      paperdoll_cloak_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_texture[i][8] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 550, i + 1, 0);
-      paperdoll_cloak_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_texture[i][9] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 525, i + 1, 1);
-      paperdoll_cloak_collar_texture[i][5] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_collar_texture[i][5] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 530, i + 1, 1);
-      paperdoll_cloak_collar_texture[i][6] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_collar_texture[i][6] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 547, i + 1, 1);
-      paperdoll_cloak_collar_texture[i][7] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_collar_texture[i][7] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 548, i + 1, 1);
-      paperdoll_cloak_collar_texture[i][8] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_collar_texture[i][8] = assets->GetImage_16BitAlpha(pContainer);
       GetItemTextureFilename(pContainer, 550, i + 1, 1);
-      paperdoll_cloak_collar_texture[i][9] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      paperdoll_cloak_collar_texture[i][9] = assets->GetImage_16BitAlpha(pContainer);
     }
     //else
     //{
@@ -2364,23 +2422,25 @@
       texture_num = (player_sex != 0) + 3;
     else 
       texture_num = (player_sex != 0) + 1;
+
     wsprintfA(pContainer, "pc23v%dBod", texture_num);
-    papredoll_dbods[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_dbods[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
     wsprintfA(pContainer, "pc23v%dlad", texture_num);
-    papredoll_dlads[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_dlads[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
     wsprintfA(pContainer, "pc23v%dlau", texture_num);
-    papredoll_dlaus[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_dlaus[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
     wsprintfA(pContainer, "pc23v%drh", texture_num);
-    papredoll_drhs[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_drhs[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
     wsprintfA(pContainer, "pc23v%dlh", texture_num);
-    papredoll_dlhs[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_dlhs[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
     wsprintfA(pContainer, "pc23v%dlhu", texture_num);
-    papredoll_dlhus[uPlayerID - 1] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+    papredoll_dlhus[uPlayerID - 1] = assets->GetImage_16BitAlpha(pContainer);
 
     if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 )
-      papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = 0;
-    papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = 0;
-    IsPlayerWearingWatersuit[uPlayerID] = 1;
+      paperdoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = nullptr;
+    papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = nullptr;
+
+    IsPlayerWearingWatersuit[uPlayerID] = true;
   }
 }
 
@@ -2391,21 +2451,24 @@
 
   if (uPlayerID > 0 )
   {
-    papredoll_dbods[uPlayerID - 1] = pIcons_LOD->LoadTexture(dbod_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-    papredoll_dlads[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlad_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-    papredoll_dlaus[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlau_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-    papredoll_drhs [uPlayerID - 1] = pIcons_LOD->LoadTexture(drh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-    papredoll_dlhs [uPlayerID - 1] = pIcons_LOD->LoadTexture(dlh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
-    papredoll_dlhus[uPlayerID - 1] = pIcons_LOD->LoadTexture(dlhu_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace], TEXTURE_16BIT_PALETTE);
+    papredoll_dbods[uPlayerID - 1] = assets->GetImage_16BitAlpha(dbod_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace]);
+    papredoll_dlads[uPlayerID - 1] = assets->GetImage_16BitAlpha(dlad_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace]);
+    papredoll_dlaus[uPlayerID - 1] = assets->GetImage_16BitAlpha(dlau_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace]);
+    papredoll_drhs [uPlayerID - 1] = assets->GetImage_16BitAlpha(drh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace]);
+    papredoll_dlhs [uPlayerID - 1] = assets->GetImage_16BitAlpha(dlh_texnames_by_face [pPlayers[uPlayerID]->uCurrentFace]);
+    papredoll_dlhus[uPlayerID - 1] = assets->GetImage_16BitAlpha(dlhu_texnames_by_face[pPlayers[uPlayerID]->uCurrentFace]);
 
+    wchar_t name[1024];
     if ( pPlayers[uPlayerID]->uCurrentFace == 12 || pPlayers[uPlayerID]->uCurrentFace == 13 )
     {
-      wsprintfA(pContainer, "pc%02dbrd", pPlayers[uPlayerID]->uCurrentFace + 1);
-      papredoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+      wsprintfW(name, L"pc%02dbrd", pPlayers[uPlayerID]->uCurrentFace + 1);
+      paperdoll_dbrds[pPlayers[uPlayerID]->uCurrentFace] = assets->GetImage_16BitAlpha(name);
     }
-    wsprintfA(pContainer, "item281pc%02d", pPlayers[uPlayerID]->uCurrentFace + 1);
-    papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
-    IsPlayerWearingWatersuit[uPlayerID] = 0;
+
+    wsprintfW(name, L"item281pc%02d", pPlayers[uPlayerID]->uCurrentFace + 1);
+    papredoll_flying_feet[pPlayers[uPlayerID]->uCurrentFace] = assets->GetImage_16BitAlpha(name);
+
+    IsPlayerWearingWatersuit[uPlayerID] = false;
   }
 }