changeset 2490:0a0c6d75aabe

two_handed_left_fist
author Ritor1
date Fri, 12 Sep 2014 18:05:26 +0600
parents ceda74e07201
children e9adbbce69f9 85a12b497698
files Actor.cpp GUIWindow.cpp Indoor.cpp Indoor.h Outdoor.cpp Render.cpp SpriteObject.cpp UI/UICharacter.cpp UI/UIHouses.cpp UI/UiGame.cpp
diffstat 10 files changed, 128 insertions(+), 348 deletions(-) [+]
line wrap: on
line diff
--- a/Actor.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/Actor.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -2611,7 +2611,7 @@
     {
       pActors[actor_id].uLastCharacterIDToHit = attacker_id;
       if ( pActors[actor_id].uAIState == Fleeing )
-        pActors[actor_id].uAttributes |= FACE_UNKNOW7;
+        pActors[actor_id].uAttributes |= 0x20000;
       if ( pActors[PID_ID(attacker_id)]._4273BB_DoesHitOtherActor(&pActors[actor_id], v4, 0) )
       {
         dmgToRecv = pActors[PID_ID(attacker_id)]._43B3E0_CalcDamage(a4);
--- a/GUIWindow.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/GUIWindow.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -1902,7 +1902,7 @@
           {
             if ( v26 < 800 )
             {
-              ItemGen2.uAttributes |= 1u;
+              ItemGen2.uAttributes |= 1;
               ItemGen2.uItemID = v26;
               if ( pItemsTable->pItems[v26].uEquipType == 12 )
               {
--- a/Indoor.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/Indoor.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -140,21 +140,6 @@
 void BLVRenderParams::Reset()
 {
   int v7; // eax@1
-//  int v8; // ST08_4@2
-//  int v9; // ST04_4@2
-//  int v10; // ST00_4@2
-//  double v17; // st7@5
-//  int v18; // eax@5
-//  double v19; // st7@5
-//  int v20; // eax@5
-//  double v21; // st7@5
-//  int v22; // eax@5
-//  unsigned int v23; // edx@5
-//  unsigned int v24; // ecx@5
-//  int v25; // eax@5
-//  int v26; // eax@5
-//  signed int v27; // eax@6
-//  int v29; // [sp+24h] [bp+8h]@5
 
   this->field_0_timer_ = pEventTimer->uTotalGameTimeElapsed;
 
@@ -418,39 +403,10 @@
 //----- (004B0A25) --------------------------------------------------------
 void IndoorLocation::ExecDraw_d3d(unsigned int uFaceID, IndoorCameraD3D_Vec4 *pVertices, unsigned int uNumVertices, RenderVertexSoft *pPortalBounding)
 {
-  //unsigned int v4; // esi@1
-//  char *v5; // eax@4
-//  signed int v6; // ecx@4
-//  char *v7; // eax@8
-//  signed int v8; // ecx@8
-  //BLVFace *v9; // esi@13
-  //IndoorCameraD3D *v10; // edi@16
-  //int v11; // ebx@17
-  //Vec3_short_ *v12; // ecx@18
-  //char *v13; // edx@18
-  //int v14; // eax@19
-  //unsigned __int8 v15; // sf@19
-  //unsigned __int8 v16; // of@19
   int v17; // ebx@25
-  //double v18; // st7@27
-  //double v19; // st6@27
-  //double v20; // st5@27
-  //char v21; // dl@27
-  //unsigned int v22; // eax@44
-//  unsigned int v23; // eax@35
-  //DWORD v24; // eax@37
-  //int v25; // eax@38
-  //char *v26; // edi@38
   IDirect3DTexture2 *v27; // eax@42
-  //Texture *v28; // [sp+Ch] [bp-1Ch]@15
-  //int i; // [sp+10h] [bp-18h]@38
-  //LightmapBuilder *pStru4; // [sp+14h] [bp-14h]@16
-  //IndoorCameraD3D *v31; // [sp+18h] [bp-10h]@16
-  //IndoorCameraD3D_Vec4 *a7; // [sp+1Ch] [bp-Ch]@1
-  //unsigned int uFaceID_; // [sp+20h] [bp-8h]@1
   unsigned int uNumVerticesa; // [sp+24h] [bp-4h]@17
   int a4a; // [sp+34h] [bp+Ch]@25
-  //unsigned int a4b; // [sp+34h] [bp+Ch]@38
 
   if (uFaceID >= pIndoor->uNumFaces)
     return;
@@ -468,7 +424,7 @@
     return;
   
   ++pBLVRenderParams->uNumFacesRenderedThisFrame;
-  pFace->uAttributes |= 0x80;
+  pFace->uAttributes |= FACE_UNKNOW4;
 
   if (!pFace->GetTexture())
     return;
@@ -559,14 +515,14 @@
   stru_F8AD28.pDeltaUV[0] = pIndoor->pFaceExtras[pIndoor->pFaces[uFaceID].uFaceExtraID].sTextureDeltaU;
   stru_F8AD28.pDeltaUV[1] = pIndoor->pFaceExtras[pIndoor->pFaces[uFaceID].uFaceExtraID].sTextureDeltaV;
   result = GetTickCount() >> 3;
-  if ( pIndoor->pFaces[uFaceID].uAttributes & 4 )
+  if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_FLOW_DIAGONAL )
     stru_F8AD28.pDeltaUV[1] -= result & pBitmaps_LOD->GetTexture(pIndoor->pFaces[uFaceID].uBitmapID)->uHeightMinus1;
   else
   {
-    if ( pIndoor->pFaces[uFaceID].uAttributes & 0x20 )
+    if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_FLOW_VERTICAL )
       stru_F8AD28.pDeltaUV[1] += result & pBitmaps_LOD->GetTexture(pIndoor->pFaces[uFaceID].uBitmapID)->uHeightMinus1;
   }
-  if ( pIndoor->pFaces[uFaceID].uAttributes & 0x800 )
+  if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_FLOW_HORIZONTAL )
     stru_F8AD28.pDeltaUV[0] -= result & pBitmaps_LOD->GetTexture(pIndoor->pFaces[uFaceID].uBitmapID)->uWidthMinus1;
   else
   {
@@ -579,47 +535,10 @@
 //----- (004B0EA8) --------------------------------------------------------
 void BspRenderer::AddFaceToRenderList_d3d(unsigned int node_id, unsigned int uFaceID)
 {
-  //unsigned int v3; // edx@1
-  //stru170 *v4; // ebx@1
-  //BLVFace *v5; // eax@1
-  //int v6; // ecx@2
   unsigned __int16 pTransitionSector; // ax@11
-//  Vec3_short_ *v8; // esi@15
   int v9; // edx@15
-  //signed int v10; // eax@18
-  //signed int v11; // edi@19
-  //signed int v12; // ecx@19
-  //signed int v13; // esi@19
-//  signed int v14; // edx@20
-//  int v15; // edx@24
-  //int v16; // esi@29
-  //BLVFace *v17; // edi@34
-  //unsigned __int16 v18; // ax@34
-//  char *v19; // eax@38
-//  signed int v20; // ecx@38
-//  char *v21; // eax@42
-//  signed int v22; // ecx@42
-  //signed int v23; // edx@45
-  //char *v24; // ecx@46
-  //int v25; // eax@47
-  //Vec3_short_ *v26; // eax@47
-  //double v27; // st7@47
-  //signed int v28; // ST28_4@47
   char v29; // al@48
-  //signed int v30; // eax@51
-  //int v31; // eax@52
-  //unsigned int v32; // eax@55
-  //__int16 v33; // cx@56
-  //signed int v34; // [sp+Ch] [bp-14h]@18
-  //int a0; // [sp+14h] [bp-Ch]@2
-  //IndoorCameraD3D *a0a; // [sp+14h] [bp-Ch]@36
-  //signed int v37; // [sp+18h] [bp-8h]@19
-  //stru10 *v38; // [sp+18h] [bp-8h]@36
-  //BLVFace *v39; // [sp+1Ch] [bp-4h]@1
-
-  //v3 = uFaceID;
-  //v4 = this;
-  //v5 = &pIndoor->pFaces[uFaceID];
+
   nodes[num_nodes].viewing_portal_id = -1;
   //v39 = &pIndoor->pFaces[uFaceID];
 
@@ -712,9 +631,9 @@
     nodes[num_nodes].uViewportY = pBLVRenderParams->uViewportY;
     nodes[num_nodes].uViewportW = pBLVRenderParams->uViewportW;
     v29 = false;
-    if (nodes[node_id].viewing_portal_id == -1)//первый портал на который я смотрю
+    if (nodes[node_id].viewing_portal_id == -1)//for first portal
       v29 = pGame->pStru10Instance->CalcPortalShape(pFace, nodes[num_nodes].std__vector_0007AC, nodes[num_nodes].pPortalBounding);
-    else//следующие порталы в портале
+    else//for next portals
     {
       static RenderVertexSoft static_subAddFaceToRenderList_d3d_stru_F7AA08[64];
       static RenderVertexSoft static_subAddFaceToRenderList_d3d_stru_F79E08[64];
@@ -762,45 +681,52 @@
 //----- (00498B15) --------------------------------------------------------
 void IndoorLocation::Release()
 {
-  //IndoorLocation *v1; // esi@1
-  //char *v2; // ebp@1
-  //void *v3; // ST00_4@1
-
-  //v1 = this;
-  //v2 = (char *)&this->ptr_0002B4_doors_ddata;
   free(this->ptr_0002B4_doors_ddata);
-  this->ptr_0002B4_doors_ddata = 0;
+  this->ptr_0002B4_doors_ddata = NULL;
+
   free(this->ptr_0002B0_sector_rdata);
-  this->ptr_0002B0_sector_rdata = 0;
+  this->ptr_0002B0_sector_rdata = NULL;
+
   free(this->ptr_0002B8_sector_lrdata);
-  this->ptr_0002B8_sector_lrdata = 0;
+  this->ptr_0002B8_sector_lrdata = NULL;
+
   free(this->pLFaces);
-  this->pLFaces = 0;
+  this->pLFaces = NULL;
+
   free(this->pSpawnPoints);
-  //v3 = this->pVertices;
-  this->pSpawnPoints = 0;
+  this->pSpawnPoints = NULL;
+
   this->uNumSectors = 0;
   this->uNumFaces = 0;
   this->uNumVertices = 0;
   this->uNumNodes = 0;
   this->uNumDoors = 0;
   this->uNumLights = 0;
+
   free(this->pVertices);
+  this->pVertices = NULL;
+
   free(this->pFaces);
+  this->pFaces = NULL;
+
   free(this->pFaceExtras);
+  this->pFaceExtras = NULL;
+
   free(this->pSectors);
+  this->pSectors = NULL;
+
   free(this->pLights);
+  this->pLights = NULL;
+
   free(this->pDoors);
+  this->pDoors = NULL;
+
   free(this->pNodes);
+  this->pNodes = NULL;
+
   free(this->pMapOutlines);
-  this->pVertices = 0;
-  this->pFaces = 0;
-  this->pFaceExtras = 0;
-  this->pSectors = 0;
-  this->pLights = 0;
-  this->pDoors = 0;
-  this->pNodes = 0;
-  this->pMapOutlines = 0;
+  this->pMapOutlines = NULL;
+
   this->bLoaded = 0;
 }
 
@@ -834,9 +760,6 @@
 //----- (00444810) --------------------------------------------------------
 unsigned int IndoorLocation::GetLocationIndex(const char *Str1)
 {
-//  const char *v1; // edi@1
-//  signed int v2; // esi@1
-
   for (uint i = 0; i < 11; ++i)
     if (!_stricmp(Str1, _4E6BDC_loc_names[i]))
       return i + 1;
@@ -849,7 +772,7 @@
   if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && (sLightID <= pIndoor->uNumLights - 1) && (sLightID >= 0) )
   {
     if ( bToggle )
-      pIndoor->pLights[sLightID].uAtributes &= 0xFFFFFFF7u;
+      pIndoor->pLights[sLightID].uAtributes &= 0xFFFFFFF7;
     else
       pIndoor->pLights[sLightID].uAtributes |= 8;
     pParty->uFlags |= 2;
@@ -1675,9 +1598,9 @@
     if (pFaceExtra->uEventID)
     {
       if (pFaceExtra->HasEventint())
-        pFace->uAttributes |= 0x100000;
+        pFace->uAttributes |= FACE_UNKNOW;
       else
-        pFace->uAttributes &= ~0x100000;
+        pFace->uAttributes &= ~FACE_UNKNOW;
     }
   }
 
@@ -1840,7 +1763,7 @@
   void *pRawDLV = nullptr;
   strcpy(&pFilename[strlen(pFilename) - 4], ".dlv");
   File = pNew_LOD->FindContainer(pFilename, 1);//error on D28.dlv
-  fread(&header, 0x10u, 1, File);//(FILE *)v245);
+  fread(&header, 0x10, 1, File);//(FILE *)v245);
   bool _v244 = false;
   if (header.uVersion != 91969 ||
       header.pMagic[0] != 'm'  ||
@@ -1973,9 +1896,9 @@
     if (pFaceExtra->uEventID)
     {
       if (pFaceExtra->HasEventint())
-        pFace->uAttributes |= 0x100000;
+        pFace->uAttributes |= FACE_UNKNOW;
       else
-        pFace->uAttributes &= ~0x100000;
+        pFace->uAttributes &= ~FACE_UNKNOW;
     }
   }
 
@@ -2169,59 +2092,17 @@
 int IndoorLocation::GetSector(int sX, int sY, int sZ)
 {
   int v4; // esi@1
-  //unsigned __int8 v5; // zf@1
-  //unsigned __int8 v6; // sf@1
-  //unsigned __int8 v7; // of@1
-  //BLVSector *v8; // eax@3
-  //int v9; // edi@9
-  //int v10; // eax@9
-  //int v11; // edx@9
-  //int v12; // eax@10
-  //unsigned __int16 v13; // ax@12
-  //int v14; // edi@14
-  //BLVFace *v15; // eax@14
-  //BLVFace *v16; // edi@14
-  //PolygonType v17; // al@14
-  //unsigned __int16 *pVertexIDs; // esi@16
-  //Vec3_short_ *v19; // eax@16
-  //int v20; // edx@16
-  //unsigned __int16 *v21; // esi@17
-  //int v22; // edi@19
-  //int v23; // edi@20
-  //Vec3_short_ *v24; // edx@20
   signed int v25; // edx@21
   int v26; // ebx@23
-  //int v27; // edx@26
-  //signed __int64 v28; // qtt@26
-  ///Vec3_short_ *v29; // eax@26
-  //Vec3_short_ *v30; // edx@26
-  //int v31; // edx@26
-  //signed int v32; // edi@27
-//  signed __int64 v33; // qtt@27
-  //Vec3_short_ *v34; // edx@27
-  //int v35; // edx@32
   int v37; // edi@38
   int pSectorID; // ebx@40
   int v39; // eax@41
-//  BLVFace *pFace; // esi@42
-//  PolygonType pPolygonType; // dl@42
-//  int v42; // edx@43
   int v43[50]; // [sp+Ch] [bp-108h]@1
-  //int v44; // [sp+D4h] [bp-40h]@9
-  //int v45; // [sp+D8h] [bp-3Ch]@14
-  //int v46; // [sp+DCh] [bp-38h]@14
-  //int v47; // [sp+E0h] [bp-34h]@19
-  //int v48; // [sp+E4h] [bp-30h]@9
-  //Vec3_short_ *v49; // [sp+E8h] [bp-2Ch]@19
   bool v50; // [sp+ECh] [bp-28h]@19
   int v51; // [sp+F0h] [bp-24h]@9
-  //unsigned int v52; // [sp+F4h] [bp-20h]@2
   int v53; // [sp+F8h] [bp-1Ch]@10
   int v54; // [sp+FCh] [bp-18h]@16
   int v55; // [sp+100h] [bp-14h]@1
-//  int v56; // [sp+104h] [bp-10h]@1
-//  int v57; // [sp+108h] [bp-Ch]@16
-  //Vec3_short_ *v58; // [sp+10Ch] [bp-8h]@20
   int v59; // [sp+110h] [bp-4h]@16
 
   v4 = 0;
@@ -2424,13 +2305,13 @@
 
   }
 //LABEL_12:
-  if ( this->uAttributes & 0x800000 )
+  if ( this->uAttributes & FACE_UNKNOW3 )
   {
     a2->x = -a2->x;
     a2->y = -a2->y;
     a2->z = -a2->z;
   }
-  if ( this->uAttributes & 0x1000000 )
+  if ( this->uAttributes & FACE_UNKNOW4 )
   {
     a3->x = -a3->x;
     a3->y = -a3->y;
@@ -2475,9 +2356,6 @@
   int v25; // eax@25
   signed __int64 v27; // qtt@27
   BLVFaceExtra *v28; // esi@32
-//  int v29; // ecx@34
-//  int v30; // edx@34
-//  unsigned __int64 v31; // qax@34
   int v32; // eax@34
   Vec3_short_ *v34; // eax@35
   int v35; // ecx@35
@@ -2487,11 +2365,6 @@
   int v39; // eax@35
   int v40; // edx@35
   Vec3_short_ *v43; // edi@36
-//  unsigned int v49; // ecx@46
-//  unsigned __int16 v50; // ax@48
-//  unsigned int v51; // eax@51
-//  unsigned __int16 v52; // ax@54
-//  int v56; // ecx@58
   int v57; // eax@58
   Vec3_int_ v67;
   Vec3_int_ v70;
@@ -2502,7 +2375,6 @@
   int v82; // [sp+44h] [bp-20h]@35
   int v83; // [sp+48h] [bp-1Ch]@34
   int v84; // [sp+4Ch] [bp-18h]@34
-//  int v85; // [sp+50h] [bp-14h]@19
   SoundID eDoorSoundID; // [sp+54h] [bp-10h]@1
   int v88; // [sp+5Ch] [bp-8h]@18
   int v89; // [sp+60h] [bp-4h]@6
@@ -2524,11 +2396,11 @@
       {
         v89 = door->uMoveLength;
         door->uState = BLVDoor::Open;
-        if ( !(door->uAttributes & 6) && door->uNumVertices != 0)
+        if ( !(door->uAttributes & FACE_UNKNOW5) && door->uNumVertices != 0)
           pAudioPlayer->PlaySound((SoundID)((int)eDoorSoundID + 1), PID(OBJECT_BLVDoor,i), 0, -1, 0, 0, 0, 0);
         //goto LABEL_18;
       }
-	  else if (!(door->uAttributes & 6) && door->uNumVertices)
+	  else if (!(door->uAttributes & FACE_UNKNOW5) && door->uNumVertices)
 		  pAudioPlayer->PlaySound(eDoorSoundID, PID(OBJECT_BLVDoor, i), 1, -1, 0, 0, 0, 0);
     }
     else
@@ -2538,14 +2410,14 @@
       {
         v89 = 0;
         door->uState = BLVDoor::Closed;
-        if ( !(door->uAttributes & 6) && door->uNumVertices != 0)
+        if ( !(door->uAttributes & FACE_UNKNOW5) && door->uNumVertices != 0)
           pAudioPlayer->PlaySound((SoundID)((int)eDoorSoundID + 1), PID(OBJECT_BLVDoor,i), 0, -1, 0, 0, 0, 0);
         //goto LABEL_18;
       }
 	  else
 	  {
 		  v89 = door->uMoveLength - v5;
-		  if (!(door->uAttributes & 6) && door->uNumVertices)
+		  if (!(door->uAttributes & FACE_UNKNOW5) && door->uNumVertices)
 			  pAudioPlayer->PlaySound(eDoorSoundID, PID(OBJECT_BLVDoor, i), 1, -1, 0, 0, 0, 0);
 	  }
     }
@@ -2633,7 +2505,7 @@
         face->pVertexUIDs[j] = v76;
         face->pVertexVIDs[j] = v77;
       }
-      if ( face->uAttributes & FACE_UNKNOW3 )
+      if ( face->uAttributes & FACE_HAS_EVENT )
         v28->sTextureDeltaU -= v39;
       else
       {
@@ -2643,11 +2515,11 @@
             v28->sTextureDeltaU -= v84 + pBitmaps_LOD->pTextures[face->uBitmapID].uTextureWidth;
         }
       }
-      if ( face->uAttributes & 8 )
+      if ( face->uAttributes & FACE_UNKNOW6 )
         v28->sTextureDeltaV -= v40;
       else
       {
-        if ( face->uAttributes & FACE_UNKNOW7 )
+        if ( face->uAttributes & FACE_INDOOR_DOOR )
         {
           if ( face->uBitmapID != -1 )
             v28->sTextureDeltaV -= v82 + pBitmaps_LOD->GetTexture(face->uBitmapID)->uTextureHeight;
@@ -2684,21 +2556,9 @@
   int v4; // eax@8
   __int16 v5; // ax@11
   signed int v6; // ebx@14
-//  signed __int16 v9; // ax@17
   signed __int64 v10; // qax@18
-//  int v12; // eax@29
-//  unsigned __int64 v13; // qax@29
-//  int v14; // eax@30
-//  unsigned __int64 v15; // qax@30
-//  BLVFace *v17; // edx@33
-//  int v18; // ecx@33
-//  BLVFace *v19; // eax@34
-//  int v20; // ecx@46
   int v22; // edi@46
-//  int v23; // eax@48
   unsigned int v24; // eax@51
-//  int v25; // eax@52
-//  int v26; // ebx@54
   int v27; // ST08_4@54
   int v28; // edi@54
   int v29; // eax@54
@@ -2706,21 +2566,11 @@
   int v31; // ebx@62
   int v32; // eax@62
   int v33; // eax@64
-//  unsigned int v34; // ecx@64
-//  int v35; // ecx@64
   signed int v37; // ebx@85
-//  int v39; // ecx@90
-//  int v40; // ebx@90
-//  PolygonType v41; // al@94
-//  int v42; // eax@96
-//  __int16 v43; // dx@96
   int v44; // ecx@96
   int v45; // edi@101
-//  unsigned __int8 v49; // zf@103
-//  unsigned __int8 v50; // sf@103
   AIDirection v52; // [sp+0h] [bp-60h]@75
   AIDirection v53; // [sp+1Ch] [bp-44h]@116
-//  int v54; // [sp+38h] [bp-28h]@53
   unsigned int uSectorID; // [sp+3Ch] [bp-24h]@6
   int v56; // [sp+40h] [bp-20h]@6
   unsigned int _this; // [sp+44h] [bp-1Ch]@51
@@ -3022,7 +2872,7 @@
 							  pActors[actor_id].uYawAngle = stru_5C6E00->Atan2(pActors[actor_id].vVelocity.x, pActors[actor_id].vVelocity.y);
 						  }
 					  }
-					  if (pIndoor->pFaces[v37].uAttributes & 0x8000000)
+					  if (pIndoor->pFaces[v37].uAttributes & FACE_UNKNOW1)
 						  EventProcessor(pIndoor->pFaceExtras[pIndoor->pFaces[v37].uFaceExtraID].uEventID, 0, 1);
 				  }
 				  pActors[actor_id].vVelocity.x = fixpoint_mul(58500, pActors[actor_id].vVelocity.x);
@@ -3084,11 +2934,8 @@
   unsigned int map_id; // eax@8
   MapInfo *map_info; // edi@9
   int v4; // eax@11
-//  char *v14; // esi@49
   DecorationDesc *decoration; // eax@54
-//  char v22; // cl@64
   char v28; // zf@81
-//  __int16 v29; // ax@85
   signed int v30; // edi@94
   int v34[4]; // [sp+3E8h] [bp-2Ch]@96
   int v35; // [sp+3F8h] [bp-1Ch]@1
@@ -3335,23 +3182,10 @@
   int v13; // ecx@13
   signed int v14; // ebx@14
   int v15; // eax@16
-  //int v16; // edx@19
-  //int v17; // ST18_4@19
-  //signed int v18; // edx@19
-  //signed __int64 v19; // qtt@19
   int v21; // eax@27
-  //int v22; // ecx@29
   signed int v28; // eax@45
   int v29; // ebx@47
-//  int v30; // edx@49
-  //int v31; // ST10_4@49
-  //signed int v32; // edx@49
-//  signed __int64 v33; // qtt@49
-  //signed int v34; // eax@54
-  //signed int v35; // esi@56
-  //int result; // eax@57
   int v38; // edx@62
-  //int v44; // [sp+20h] [bp-20h]@10
   bool v47; // [sp+24h] [bp-1Ch]@43
   bool current_vertices_Y; // [sp+28h] [bp-18h]@10
   bool v49; // [sp+28h] [bp-18h]@41
@@ -3557,26 +3391,15 @@
 //----- (0043FDED) --------------------------------------------------------
 void PrepareActorRenderList_BLV()
 {
-//  unsigned __int16 v3; // ax@3
   unsigned int v4; // eax@5
   int v6; // esi@5
-//  unsigned int v7; // eax@7
   int v8; // eax@10
   SpriteFrame *v9; // eax@16
   int v12; // ecx@28
   signed __int64 v18; // qtt@36
-//  int v19; // ST5C_4@36
-//  signed __int64 v20; // qtt@37
-//  int v21; // ST5C_4@37
-//  signed __int16 v22; // cx@39
-//  int v23; // ST50_4@40
-//  signed int v24; // ecx@40
   int v25; // edx@44
   __int16 v26; // ax@44
-//  unsigned __int8 v30; // sf@44
-//  int a3; // [sp+20h] [bp-34h]@5
   int a5a; // [sp+2Ch] [bp-28h]@36
-//  int a5b; // [sp+2Ch] [bp-28h]@40
   __int16 v41; // [sp+3Ch] [bp-18h]@18
   int a6; // [sp+40h] [bp-14h]@34
   int v43; // [sp+44h] [bp-10h]@34
@@ -3702,12 +3525,7 @@
   unsigned int v6; // eax@12
   int v7; // ecx@12
   int v9; // ecx@12
-//  unsigned __int16 v10; // ax@12
-  //int *v11; // eax@20
   __int64 v18; // ST5C_4@27
-//  signed __int64 v19; // qtt@28
-//  int v20; // ST5C_4@28
-//  __int16 v22; // ax@29
   int a6; // [sp+2Ch] [bp-30h]@12
   int v31; // [sp+38h] [bp-24h]@27
   signed __int16 v34; // [sp+44h] [bp-18h]@14
@@ -3848,8 +3666,6 @@
   int v7; // ebp@10
   int v8; // ebx@10
   __int16 v9; // di@18
-  //int v10; // [sp+10h] [bp-Ch]@1
-  //bool v11; // [sp+14h] [bp-8h]@5
   BspRenderer_stru0 *node; // [sp+18h] [bp-4h]@1
 
   //Log::Warning(L"sub_4406BC(%u, %u)", a1, uFirstNode);
@@ -3902,9 +3718,7 @@
   int v9; // edi@5
   int v10; // eax@7
   SpriteFrame *v11; // eax@7
-//  char v16; // zf@18
   signed __int64 v20; // qtt@19
-//  signed __int64 v21; // qtt@20
   Particle_sw particle; // [sp+Ch] [bp-A0h]@3
   int v30; // [sp+8Ch] [bp-20h]@7
   int a5; // [sp+94h] [bp-18h]@17
@@ -4057,31 +3871,14 @@
 //----- (0048653D) --------------------------------------------------------
 void stru149::_48653D_frustum_blv(int a2, int a3, int a4, int a5, int a6, int a7)//portal frustum culling
 {
-  //stru149 *v7; // esi@1
   int v8; // edi@1
   int v9; // eax@1
-  //int v10; // edx@1
-  //int v11; // ecx@1
-  //int v12; // eax@1
-  //int v13; // ebx@2
-  //int v14; // ecx@2
-  //int v15; // eax@2
   int v16; // ST14_4@3
   int v17; // ST10_4@3
-  //int v18; // eax@5
   int v19; // ST10_4@6
-  //int v20; // eax@8
   int v21; // ST10_4@9
-  //int v22; // eax@10
-  //int v23; // ecx@10
-  //int v24; // eax@10
-  //int result; // eax@10
-  //int v26; // [sp+14h] [bp-14h]@1
-  //int v27; // [sp+18h] [bp-10h]@1
   int v28; // [sp+1Ch] [bp-Ch]@1
   int v29; // [sp+24h] [bp-4h]@1
-  //int v30; // [sp+30h] [bp+8h]@10
-  //int v31; // [sp+3Ch] [bp+14h]@10
 
   v8 = stru_5C6E00->Cos(pGame->pIndoorCameraD3D->sRotationY);
   v29 = stru_5C6E00->Sin(pGame->pIndoorCameraD3D->sRotationY);
@@ -4251,7 +4048,6 @@
   int v_4a; // [sp+8Ch] [bp+10h]@65
   int v_4b; // [sp+8Ch] [bp+10h]@136
   int v_4c; // [sp+8Ch] [bp+10h]@141
-//  int v_8; // [sp+90h] [bp+14h]@53
 
   //__debugbreak();срабатывает при стрельбе огненным шаром
 
@@ -4292,13 +4088,9 @@
     for ( a5b = 0; a5b < 2; a5b++ )
     {
       if ( a5b )
-      {
 		v59 = pIndoor->GetSector(sX, sY, sZ);
-      }
       else
-      {
 		v59 = pIndoor->GetSector(outx, outy, outz);
-      }
       //v60 = pIndoor->pSectors;
       //v61 = 116 * v59;
       //i = 116 * v59;
@@ -4776,14 +4568,9 @@
   int v22; // edi@46
   int v24; // edx@48
   int v26; // eax@55
-//  signed int v27; // edi@55
   int v29; // edx@57
   int v31; // eax@64
-//  signed int v32; // edi@64
-//  int v34; // eax@66
-//  int v35; // dx@66
   __int16 v36; // dx@67
-  //__int16 v37; // di@67
   __int16 v38; // dx@67
   int v46; // edx@87
   int v49; // esi@93
@@ -5045,16 +4832,10 @@
   signed int right_num_vertices; // ebx@41
   signed int top_num_vertices; // edi@51
   int bottom_num_vertices; // ebx@61
-//  signed int v62; // edx@75
-//  int v63; // ecx@76
-//  int v64; // esi@76
-//  int v65; // ecx@83
-//  signed int v71; // [sp+14h] [bp-14h]@75
   bool current_vertices_flag; // [sp+18h] [bp-10h]@9
-//  int thisf; // [sp+18h] [bp-10h]@74
   signed int depth_num_vertices; // [sp+1Ch] [bp-Ch]@9
-//  int v80; // [sp+1Ch] [bp-Ch]@76
   bool next_vertices_flag; // [sp+20h] [bp-8h]@10
+
   //Доп инфо "Программирование трёхмерных игр для windows" Ламот стр 910
 
   pFace = &pIndoor->pFaces[uFaceID];
@@ -5506,20 +5287,6 @@
   int v1; // ebx@1
   int v2; // edi@1
   double v10; // st7@27
-//  unsigned int v12; // eax@49
-//  double v13; // st7@50
-//  int v17; // eax@62
-//  double v18; // st7@62
-//  int v19; // ST40_4@62
-//  int v20; // eax@65
-//  double v21; // st7@65
-//  int v22; // ST40_4@65
-//  int v23; // eax@66
-//  double v24; // st7@66
-//  int v25; // ST40_4@66
-//  int v26; // eax@67
-//  double v27; // st7@67
-//  int v28; // ST40_4@67
   int new_party_z; // esi@96
   int v38; // eax@96
   int v39; // ecx@106
@@ -5529,8 +5296,6 @@
   int v46; // ecx@133
   int v52; // eax@140
   int v54; // ebx@146
-//  int v63; // [sp-8h] [bp-68h]@75
-//  int v65; // [sp-4h] [bp-64h]@75
   unsigned int uFaceEvent; // [sp+14h] [bp-4Ch]@1
   bool party_running_flag; // [sp+1Ch] [bp-44h]@1
   bool bFeatherFall; // [sp+24h] [bp-3Ch]@15
@@ -5994,7 +5759,7 @@
       {
         if ( on_water )
           pAudioPlayer->PlaySound(SOUND_RunAlongWater, 804, 1, -1, 0, 0, 0, 0);
-        else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_UNKNOW6 )//по ковру
+        else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_CARPET )//по ковру
           pAudioPlayer->PlaySound((SoundID)50, 804, 1, -1, 0, 0, 0, 0);
         else
           pAudioPlayer->PlaySound(SOUND_RunAlong3DModel, 804, 1, -1, 0, 0, 0, 0);
@@ -6007,7 +5772,7 @@
       {
         if ( on_water )
           pAudioPlayer->PlaySound(SOUND_WalkAlongWater, 804, 1, -1, 0, 0, 0, 0);
-        else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_UNKNOW6 )//по ковру
+        else if ( pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_CARPET )//по ковру
           pAudioPlayer->PlaySound((SoundID)89, 804, 1, -1, 0, 0, 0, 0);
         else
           pAudioPlayer->PlaySound(SOUND_WalkAlong3DModel, 804, 1, -1, 0, 0, 0, 0);
@@ -6022,13 +5787,13 @@
     pParty->uFlags &= ~PARTY_FLAGS_1_FALLING;
   else
     pParty->uFlags |= PARTY_FLAGS_1_FALLING;
-  pParty->uFlags &= ~0x200;
+  pParty->uFlags &= ~PARTY_FLAGS_1_BURNING;
   pParty->vPosition.x = new_party_x;
   pParty->vPosition.z = new_party_z;
   pParty->vPosition.y = new_party_y;
   //pParty->uFallSpeed = v89;
-  if ( !hovering && pIndoor->pFaces[uFaceID].uAttributes & FACE_UNKNOW5 )
-    pParty->uFlags |= 0x200;
+  if ( !hovering && pIndoor->pFaces[uFaceID].uAttributes & FACE_INDOOR_LAVA )
+    pParty->uFlags |= PARTY_FLAGS_1_BURNING;//0x200
   if (uFaceEvent)
     EventProcessor(uFaceEvent, 0, 1);
 }
--- a/Indoor.h	Thu Sep 11 17:30:59 2014 +0600
+++ b/Indoor.h	Fri Sep 12 18:05:26 2014 +0600
@@ -463,30 +463,35 @@
 
 #define FACE_PORTAL             0x00000001 // portal/two-sided
 #define FACE_CAN_SATURATE_COLOR 0x00000002
-#define FACE_UNKNOW8            0x00000004
+#define FACE_FLOW_DIAGONAL      0x00000004 // Diagonal flow of the lava or water
+#define FACE_UNKNOW5            0x00000006
+#define FACE_UNKNOW6            0x00000008
 #define FACE_FLUID              0x00000010 // wavy animated water or lava
-#define FACE_UNKNOW9            0x00000020
+#define FACE_FLOW_VERTICAL      0x00000020 // Vertical flow of the lava or water
 #define FACE_DONT_CACHE_TEXTURE 0x00000040 // do not load face texture if it isn't loaded already
 #define FACE_UNKNOW4            0x00000080
 #define FACE_XY_PLANE           0x00000100
 #define FACE_XZ_PLANE           0x00000200
 #define FACE_YZ_PLANE           0x00000400
-#define FACE_UNKNOW10           0x00000800
-#define FACE_UNKNOW3            0x00001000
+#define FACE_FLOW_HORIZONTAL    0x00000800 // Horizontal flow of the lava or water
+#define FACE_HAS_EVENT          0x00001000
 #define FACE_INVISIBLE          0x00002000
 #define FACE_TEXTURE_FRAME      0x00004000 // Texture ID is a frameset from TextureFrameTable, otherwise BitmapID
 #define FACE_OUTLINED           0x00010000 // outline face edges
-#define FACE_UNKNOW7            0x00020000
+#define FACE_INDOOR_DOOR        0x00020000
 #define FACE_TEXTURE_FLOW       0x00040000 // The texture moves slowly. For horizontal facets only.
 #define FACE_UNKNOW             0x00100000
-#define FACE_UNKNOW6            0x00200000
+#define FACE_INDOOR_CARPET      0x00200000
 #define FACE_INDOOR_SKY         0x00400000
+#define FACE_UNKNOW3            0x00800000
+#define FACE_UNKNOW4            0x01000000
 #define FACE_CLICKABLE          0x02000000 // Event can be triggered by clicking on the facet.
 #define FACE_PRESSURE_PLATE     0x04000000 // Event can be triggered by stepping on the facet.
 #define FACE_INDICATE           0x06000000 // Event can be triggered by indicating on the facet.
+#define FACE_UNKNOW1            0x08000000
 #define FACE_UNKNOW2            0x10000000
 #define FACE_ETHEREAL           0x20000000 // Untouchable. You can pass through it.
-#define FACE_UNKNOW5            0x40000000
+#define FACE_INDOOR_LAVA        0x40000000
 #define FACE_PICKED             0x80000000
 
 /*   93 */
--- a/Outdoor.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/Outdoor.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -35,6 +35,7 @@
 #include "GUIWindow.h"
 #include "Level/Decoration.h"
 #include "ZlibWrapper.h"
+#include "MMT.h"
 
 MapStartPoint uLevel_StartingPointType; // weak
 
@@ -2018,7 +2019,7 @@
       if (face.sCogTriggeredID)
       {
         if (face.HasEventHint())
-          face.uAttributes |= FACE_UNKNOW3;
+          face.uAttributes |= FACE_HAS_EVENT;
         else
           face.uAttributes &= 0xFFFFEFFFu;
       }
@@ -4763,7 +4764,11 @@
 	{
 		if (pWeather->bNight) // night-time fog
 		{
-			__debugbreak(); // decompilation can be inaccurate, please send savegame to Nomad
+          if (for_refactoring)
+           {
+              MessageBoxA(nullptr, "Nomad: decompilation can be inaccurate, please send savegame to Nomad", "", 0);
+              __debugbreak();
+           }
 			v2 = -(pWeather->bNight != 1);
 			return (v2 & 0xE0E0E1) - 0xE0E0E1;
 		}
--- a/Render.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/Render.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -8473,19 +8473,19 @@
               array_77EC08[pODMRenderParams->uNumPolygons].flags |= 2;
             if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_INDOOR_SKY )
               HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 4;
-            if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW8 )
+            if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_FLOW_DIAGONAL )
               HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 4;
             else
             {
-              if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW9 )
+              if ( pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_FLOW_VERTICAL )
                 HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 8;
             }
-            if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_UNKNOW10)
+            if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_FLOW_HORIZONTAL)
               array_77EC08[pODMRenderParams->uNumPolygons].flags |= 0x2000;
             else
             {
               if (pOutdoor->pBModels[model_id].pFaces[face_id].uAttributes & FACE_DONT_CACHE_TEXTURE)
-                HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 0x10u;
+                HIBYTE(array_77EC08[pODMRenderParams->uNumPolygons].flags) |= 0x10;
             }
             array_77EC08[pODMRenderParams->uNumPolygons].sTextureDeltaU = pOutdoor->pBModels[model_id].pFaces[face_id].sTextureDeltaU;
             array_77EC08[pODMRenderParams->uNumPolygons].sTextureDeltaV = pOutdoor->pBModels[model_id].pFaces[face_id].sTextureDeltaV;
@@ -10490,7 +10490,7 @@
 	v6 = fixpoint_mul(a2->z, v4->pFacePlane_old.vNormal.z);
 	v7 = v5 + v6 + a4b;
 	//(v16 = v5 + v6 + a4b) == 0;
-	if (a4->uAttributes & 0x20000000 || !v7 || v7 > 0 && !v4->Portal())
+	if (a4->uAttributes & FACE_ETHEREAL || !v7 || v7 > 0 && !v4->Portal())
 		return 0;
 	v8 = v4->pFacePlane_old.vNormal.z * a1->z;
 	v9 = -(v4->pFacePlane_old.dist + v8 + a1->y * v4->pFacePlane_old.vNormal.y + a1->x * v4->pFacePlane_old.vNormal.x);
--- a/SpriteObject.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/SpriteObject.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -413,8 +413,25 @@
       {
         bmodel = &pOutdoor->pBModels[(signed int)stru_721530.uFaceID >> 9];
         face = &bmodel->pFaces[PID_ID(stru_721530.uFaceID) & 0x3F];
-        if ( face->uPolygonType != POLYGON_Floor )
+        if ( face->uPolygonType == POLYGON_Floor )
         {
+          pSpriteObjects[uLayingItemID].vPosition.z = bmodel->pVertices.pVertices[face->pVertexIDs[0]].z + 1;
+          if ( pSpriteObjects[uLayingItemID].vVelocity.x * pSpriteObjects[uLayingItemID].vVelocity.x
+             + pSpriteObjects[uLayingItemID].vVelocity.y * pSpriteObjects[uLayingItemID].vVelocity.y >= 400 )
+          {
+            if ( face->uAttributes & FACE_UNKNOW2 )
+              EventProcessor(face->sCogTriggeredID, 0, 1);
+          }
+		  else
+		  {
+            LOWORD(v35) = 0;
+            pSpriteObjects[uLayingItemID].vVelocity.z = 0;
+            pSpriteObjects[uLayingItemID].vVelocity.x = 0;
+            pSpriteObjects[uLayingItemID].vVelocity.y = v35;
+		  }
+        }
+		else
+		{
           v56 = abs(face->pFacePlane.vNormal.x * pSpriteObjects[uLayingItemID].vVelocity.x
                   + face->pFacePlane.vNormal.y * pSpriteObjects[uLayingItemID].vVelocity.y
                   + face->pFacePlane.vNormal.z * pSpriteObjects[uLayingItemID].vVelocity.z) >> 16;
@@ -435,22 +452,9 @@
             v37 = fixpoint_mul(32000, v36);
           }
           pSpriteObjects[uLayingItemID].vVelocity.z += v37;
-          if ( BYTE3(face->uAttributes) & 0x10 )
+          if ( face->uAttributes & FACE_UNKNOW2 )
             EventProcessor(face->sCogTriggeredID, 0, 1);
-          goto LABEL_74;
-        }
-        pSpriteObjects[uLayingItemID].vPosition.z = bmodel->pVertices.pVertices[face->pVertexIDs[0]].z + 1;
-        if ( pSpriteObjects[uLayingItemID].vVelocity.x * pSpriteObjects[uLayingItemID].vVelocity.x
-           + pSpriteObjects[uLayingItemID].vVelocity.y * pSpriteObjects[uLayingItemID].vVelocity.y >= 400 )
-        {
-          if ( face->uAttributes & 0x10000000 )
-            EventProcessor(face->sCogTriggeredID, 0, 1);
-          goto LABEL_74;
-        }
-        LOWORD(v35) = 0;
-        pSpriteObjects[uLayingItemID].vVelocity.z = 0;
-        pSpriteObjects[uLayingItemID].vVelocity.x = 0;
-        pSpriteObjects[uLayingItemID].vVelocity.y = v35;
+		}
       }
 LABEL_74:
       pSpriteObjects[uLayingItemID].vVelocity.x = fixpoint_mul(58500, pSpriteObjects[uLayingItemID].vVelocity.x);
--- a/UI/UICharacter.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/UI/UICharacter.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -747,7 +747,7 @@
   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
+  bool two_handed_left_fist; // [sp+34h] [bp-18h]@361
   signed int IsDwarf; // [sp+40h] [bp-Ch]@4
 
   pIcons_LOD->LoadTexture("sptext01", TEXTURE_16BIT_PALETTE);
@@ -1129,15 +1129,7 @@
           }
         }
       }
-      //---------------------------------------------(Hand2/Рука2)--------------------------------------------------
-      if ( player->GetItem(&PlayerEquipment::uMainHand) )
-      {
-        if ( player->GetMainHandItem()->GetItemEquipType() == EQUIP_TWO_HANDED
-             || player->GetMainHandItem()->GetPlayerSkillType() == PLAYER_SKILL_SPEAR
-             && !player->GetItem(&PlayerEquipment::uShield) )
-          pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0],
-                     pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1]));
-      }
+
       //--------------------------------(Shoulder/Плечи)---------------------------------------------
       if (player->GetItem(&PlayerEquipment::uArmor))
       {
@@ -1458,7 +1450,7 @@
       {
         //v151 = item->uItemID - 400;
         item_X = 596;
-        v245 = 1;
+        two_handed_left_fist = true;
         switch ( item->uItemID )
         {
           case 400:
@@ -1479,7 +1471,7 @@
       }
       else
       {
-        v245 = 0;
+        two_handed_left_fist = false;
         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;
       }
@@ -1492,7 +1484,7 @@
         {
           //v160 = (char *)pIcons_LOD->GetTexture(v153);
           if ( !(item->uAttributes & ITEM_IDENTIFIED) )
-          pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
+            pRenderer->DrawTransparentGreenShade(item_X, item_Y, pIcons_LOD->GetTexture(v153));
           else
             pRenderer->DrawTextureTransparent(item_X, item_Y, pIcons_LOD->GetTexture(v153));
         }
@@ -1516,17 +1508,26 @@
         }
         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],
+      }
+      if ( two_handed_left_fist )//two-handed - left fist/двуручие - левая кисть
+        pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdollLeftEmptyHand[pBodyComplection][0],
                  pPaperdoll_BodyY + pPaperdollLeftEmptyHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlhs[uPlayerID - 1]));
-      }
       if ( !bRingsShownInCharScreen )
         pRenderer->DrawMaskToZBuffer(item_X, item_Y, pIcons_LOD->GetTexture(v153), player->pEquipment.uShield);
     }
   }
-  //--------------------------------------------------------(RightHand/Правая рука)--------------------------------------------------
+  //--------------------------------------------------------(RightHand/Правая кисть)--------------------------------------------------
   pRenderer->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_RightHand[pBodyComplection][0], pPaperdoll_BodyY + pPaperdoll_RightHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_drhs[uPlayerID - 1]));
-  //--------------------------------------------------------(LeftHand/Левая рука)----------------------------------------------------
+  //---------------------------------------------(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->DrawTextureTransparent(pPaperdoll_BodyX + pPaperdoll_SecondLeftHand[pBodyComplection][0],
+                 pPaperdoll_BodyY + pPaperdoll_SecondLeftHand[pBodyComplection][1], pIcons_LOD->GetTexture(papredoll_dlaus[uPlayerID - 1]));
+  }
+  //--------------------------------------------------------(two-handed - fist/двуручие - кисть)----------------------------------------------------
   if ( player->GetItem(&PlayerEquipment::uMainHand))
   {
     item = player->GetMainHandItem();
--- a/UI/UIHouses.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/UI/UIHouses.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -56,8 +56,8 @@
 };
 #pragma pack(pop)
 stru365_travel_info transport_schedule[35] =  // 004F09B0
-{
-  {MAP_STEADWICK,       {1, 0, 1, 0, 1, 0, 0},  2,  -18048,    4636,   833,  1536,  0},
+{// location name                              days    x        y       z     
+  {MAP_STEADWICK,       {1, 0, 1, 0, 1, 0, 0},  2,  -18048,    4636,   833,  1536,  0},//for stable
   {MAP_PIERPONT,        {0, 1, 0, 1, 0, 1, 0},  2,   -2527,   -6773,  1153,   896,  0},
   {MAP_TATALIA,         {1, 0, 1, 0, 1, 0, 0},  2,    4730,  -10580,   320,  1024,  0},
   {MAP_HARMONDALE,      {0, 1, 0, 1, 0, 1, 0},  2,   -5692,   11137,     1,  1024,  0},
@@ -71,7 +71,7 @@
   {MAP_STEADWICK,       {1, 0, 1, 0, 1, 0, 1},  3,  -18048,    4636,   833,  1536,  0},
   {MAP_HARMONDALE,      {0, 1, 0, 0, 0, 1, 0},  5,   -5692,   11137,     1,  1024,  0},
   {MAP_STEADWICK,       {0, 1, 0, 1, 0, 1, 0},  2,  -18048,    4636,   833,  1536,  0},
-  {MAP_PIERPONT,        {0, 1, 0, 1, 0, 1, 0},  3,   -2527,  -16007,  1153,   896,  0},
+  {MAP_PIERPONT,        {0, 1, 0, 1, 0, 1, 0},  3,   -2527,   -6773,  1153,   896,  0},
   {MAP_DEYJA,           {0, 0, 1, 0, 0, 0, 1},  5,    7227,  -16007,  2625,   640,  0},
   {MAP_TATALIA,         {0, 1, 0, 1, 0, 1, 0},  2,   -2183,   -6941,    97,     0,  0},
   {MAP_AVLEE,           {1, 0, 0, 0, 1, 0, 0},  4,    7913,    9476,   193,     0,  0},
@@ -80,7 +80,7 @@
   {MAP_AVLEE,           {0, 1, 0, 1, 0, 1, 0},  3,    7913,    9476,   193,     0,  0},
   {MAP_BRAKADA_DESERT,  {1, 0, 1, 0, 0, 0, 0},  6,   19171,  -19722,   193,  1024,  0},
   {MAP_TATALIA,         {1, 0, 1, 0, 1, 0, 0},  4,   -2183,   -6941,    97,     0,  0},
-  {MAP_PIERPONT,        {0, 0, 0, 0, 0, 1, 0},  6,    -709,  -14087,   193,  1024,  0},
+  {MAP_PIERPONT,        {0, 0, 0, 0, 0, 1, 0},  6,    -709,  -14087,   193,  1024,  0},//for boat
   {MAP_STEADWICK,       {0, 0, 0, 0, 0, 0, 1},  6,  -10471,   13497,   193,  1536,  0},
   {MAP_EVENMORN_ISLE,   {0, 1, 0, 1, 0, 0, 0},  1,   15616,    6390,   193,  1536,  PARTY_QUEST_EVENMORN_MAP_FOUND},
   {MAP_BRAKADA_DESERT,  {0, 1, 0, 1, 0, 0, 0},  1,   19171,  -19722,   193,  1024,  0},
@@ -91,7 +91,7 @@
   {MAP_STEADWICK,       {0, 1, 0, 0, 0, 1, 0},  4,  -10471,   13497,   193,  1536,  0},
   {MAP_PIERPONT,        {1, 0, 1, 0, 1, 0, 0},  3,    -709,  -14087,   193,  1024,  0},
   {MAP_TATALIA,         {0, 0, 0, 1, 0, 0, 0},  5,   -2183,   -6941,    97,     0,  0},
-  {MAP_ARENA,           {0, 0, 0, 0, 0, 0, 1},  4,    3844,    2906,   193,  512,   0}
+  {MAP_ARENA,           {0, 0, 0, 0, 0, 0, 1},  4,    3844,    2906,   193,   512,  0}
 };
 
 unsigned char transport_routes[20][4] =
--- a/UI/UiGame.cpp	Thu Sep 11 17:30:59 2014 +0600
+++ b/UI/UiGame.cpp	Fri Sep 12 18:05:26 2014 +0600
@@ -1261,7 +1261,7 @@
           else
           {
             pFace = &pIndoor->pFaces[pickedObjectID];
-            if ( BYTE3(pFace->uAttributes) & 6 )
+            if ( pFace->uAttributes & FACE_INDICATE )
             {
               unsigned short eventId = pIndoor->pFaceExtras[pFace->uFaceExtraID].uEventID;
               if (eventId != 0)
@@ -1290,7 +1290,7 @@
       }
       else if ( PID_TYPE(pickedObjectPID) == OBJECT_Actor )
       {          
-        if ( pickedObjectPID >= 0x2000000u )
+        if ( pickedObjectPID >= 0x2000000 )
         {
           pMouse->uPointingObjectID = 0;
           if ( uLastPointedObjectID != 0 )