changeset 487:d5da524ec901

shop entering fixed
author Gloval
date Wed, 27 Feb 2013 22:48:10 +0400
parents 7887a9cf9e7b
children c92dd0242fb6 0e27362ac1d9
files Party.cpp mm7_4.cpp mm7_data.cpp stru159.h
diffstat 4 files changed, 360 insertions(+), 362 deletions(-) [+]
line wrap: on
line diff
--- a/Party.cpp	Wed Feb 27 17:29:05 2013 +0200
+++ b/Party.cpp	Wed Feb 27 22:48:10 2013 +0400
@@ -770,6 +770,7 @@
   _449B7E_toggle_bit(_quest_bits, 5, 1);
   _449B7E_toggle_bit(_quest_bits, 6, 1);
 
+  memset(field_3C._shop_ban_times,0,53*sizeof(__int64));
 
   memcpy(pNPCStats->pNewNPCData, pNPCStats->pNPCData, 0x94BCu);
   memcpy(pNPCStats->pGroups_copy, pNPCStats->pGroups, 0x66u);
--- a/mm7_4.cpp	Wed Feb 27 17:29:05 2013 +0200
+++ b/mm7_4.cpp	Wed Feb 27 22:48:10 2013 +0400
@@ -8918,9 +8918,9 @@
     if ( v5 > 4000000 )
       pParty->uFine = 4000000;
   }
-  v6 = pParty->uTimePlayed + 368640;
-  pParty->field_3C._shop_ban_times[2 * a1] = LODWORD(pParty->uTimePlayed) + 368640;
-  pParty->field_3C._shop_ban_times[2 * a1 + 1] = HIDWORD(v6);
+
+  pParty->field_3C._shop_ban_times[a1] = pParty->uTimePlayed + 368640;
+ 
 LABEL_13:
   pParty->InTheShopFlags[a1] = 1;
   if ( v3 )
@@ -9262,10 +9262,10 @@
 void __fastcall HousePlaySomeSound(unsigned int uHouseID, int a2)
 {
   //if ( BYTE1(pAnimatedRooms[p2DEvents_minus1___02[26 * uHouseID]].field_C) )
-  if ( BYTE1(pAnimatedRooms[p2DEvents[uHouseID - 1].uAnimationID].uBuildingType) )
+  if ( pAnimatedRooms[p2DEvents[uHouseID - 1].uAnimationID].field_d )
     pAudioPlayer->PlaySound(
       //(SoundID)(a2 + 100 * (BYTE1(pAnimatedRooms[p2DEvents_minus1___02[26 * uHouseID]].field_C) + 300)),
-      (SoundID)(a2 + 100 * (BYTE1(pAnimatedRooms[p2DEvents[uHouseID - 1].uAnimationID].uBuildingType) + 300)),
+      (SoundID)(a2 + 100 * (pAnimatedRooms[p2DEvents[uHouseID - 1].uAnimationID].field_d) + 300),
       806,
       0,
       -1,
@@ -14197,7 +14197,7 @@
 LABEL_20:
   pDialogueWindow = GUIWindow::Create(0, 0, 640, 480, (enum WindowType)26, 0, (int)sHouseName);
   //if ( BYTE1(pAnimatedRooms[p2DEvents_minus1___02[26 * v9]].field_C) )
-  if ( BYTE1(pAnimatedRooms[p2DEvents[v9 - 1].uAnimationID].uBuildingType) )
+  if ( pAnimatedRooms[p2DEvents[v9 - 1].uAnimationID].field_d )
     HousePlaySomeSound(v9, 1);
   if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30 )
     pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
@@ -14332,163 +14332,157 @@
 
 //----- (0044622E) --------------------------------------------------------
 bool  EnterHouse(enum HOUSE_ID uHouseID)
-{
-  //enum HOUSE_ID v1; // edi@1
-  //int v2; // edi@5
-  signed int uOpenTime; // eax@5
-  signed int uCloseTime; // esi@5
-  unsigned int v5; // esi@5
-  int v6; // edx@5
-  signed int am_pm_flag_open; // ecx@10
-  signed int am_pm_flag_close; // eax@10
-  int v9; // esi@10
-  //unsigned int v10; // esi@16
-  int v11; // ecx@17
-  unsigned int v12; // kr00_4@25
-  //Player *v13; // esi@25
-  int v14; // eax@25
-  //Player *v15; // esi@27
-  //signed int v16; // eax@32
-  unsigned int v17; // eax@37
-  signed int v18; // edi@37
-  signed int v19; // edi@41
-  //unsigned int v20; // ecx@41
-  //const char *v22; // [sp-4h] [bp-40h]@33
-  char pContainer[40]; // [sp+Ch] [bp-30h]@32
-  unsigned int v24; // [sp+34h] [bp-8h]@5
-  //enum HOUSE_ID v25; // [sp+38h] [bp-4h]@1
-
-  //v1 = uHouseID;
-  //v25 = uHouseID;
-  GameUI_StatusBar_TimedString[0] = 0;
-  pStatusBarString[0] = 0;
-  ShowStatusBarString("", 2u);
-  if ( pMessageQueue_50CBD0->uNumMessages )
-	  pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
-  viewparams->bRedrawGameUI = 1;
-  uDialogueType = 0;
-  pKeyActionMap->_459ED1(3);
-  pKeyActionMap->ResetKeys();
-  if (uHouseID == HOUSE_600 || uHouseID == HOUSE_601)
-	  {
-	  GameOverMenu(0);
-	  return 0;
-	  }
-  uOpenTime = p2DEvents[uHouseID - 1].uOpenTime;
-  uCloseTime = p2DEvents[uHouseID - 1].uCloseTime;
-  ptr_F8B1E8 = 0;
-  dword_F8B1E4 = 0;
-  dword_F8B1F4 = 0;
-  memset(byte_F8B1F0, 0, 4);
-  memset(byte_F8B148, 0, 16);
-  pRenderer->ClearZBuffer(0, 479);
-  if ( uCloseTime - 1 <= uOpenTime )
-	  {
-	  if ( pParty->uCurrentHour >= uOpenTime )
-		  {
-		  //v10 = uHouseID;
-		  if ( (signed int)uHouseID < 53 )
-			  {
-			  if ( !(pParty->field_3C._shop_ban_times[uHouseID])
-				  ||  (pParty->field_3C._shop_ban_times[uHouseID] <= pParty->uTimePlayed) )
-				  {
-				  pParty->field_3C._shop_ban_times[uHouseID] = 0;
-
-				  }
-			  else
-				  {
-				  ShowStatusBarString(pGlobalTXT_LocalizationStrings[191], 2u);// "You've been banned from this shop!"
-				  return 0;
-				  }
-			  }
-		  if ( !start_event_seq_number )
-			  pAudioPlayer->StopChannels(-1, -1);
-
-		  uCurrentHouse_Animation = p2DEvents[uHouseID - 1].uAnimationID;
-		  in_current_building_type = pAnimatedRooms[uCurrentHouse_Animation].uBuildingType;
-		  if ( in_current_building_type == BildingType_20 && pParty->uFine )   // going 2 jail
-			  {
-			  uCurrentHouse_Animation = (signed __int16)p2DEvents[186].uAnimationID;
-			  uHouseID = HOUSE_JAIL;
-			  pParty->uTimePlayed = pParty->uTimePlayed+ 0x7620000;
-			  in_current_building_type = pAnimatedRooms[p2DEvents[HOUSE_LORD_AND_JUDGE].uAnimationID].uBuildingType;
-			  ++pParty->uNumPrisonTerms;
-			  pParty->uFine = 0;
-			  for (uint i = 0; i < 4; ++i)
-				  {
-				  pParty->pPlayers[i].uTimeToRecovery = 0;
-				  pParty->pPlayers[i].uNumDivineInterventionCastsThisDay = 0;
-				  pParty->pPlayers[i].SetVariable(VAR_Award, 87);
-				  }
-			  }
-		  ++pIcons_LOD->uTexturePacksCount;
-		  if ( !pIcons_LOD->uNumPrevLoadedFiles )
-			  pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
-
-		  switch (pParty->alignment)
-			  {
-		  case PartyAlignment_Good:    sprintf(pContainer, "evt%02d-b", const_2()); break;
-		  case PartyAlignment_Neutral: sprintf(pContainer, "evt%02d", const_2()); break;
-		  case PartyAlignment_Evil:    sprintf(pContainer, "evt%02d-c", const_2()); break;
-		  default: assert(false);
-			  }
-
-		  v17 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
-		  pDialogueNPCCount = 0;
-		  pTexture_Dialogue_Background = &pIcons_LOD->pTextures[v17];
-		  uTextureID_507B04 = uTextureID_right_panel;
-		  PrepareHouse(uHouseID);
-		  v18 = 1;
-		  uTextureID_507B04 = uTextureID_right_panel;
-		  if ( uNumDialogueNPCPortraits == 1 )
-			  pDialogueNPCCount = 1;
-		  pVideoPlayer->_4BF28F(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1u);  
-		  dword_5C35D4 = 1;
-		  if ( (signed int)uHouseID < 139 || (signed int)uHouseID > 172 )
-			  {
-			  if ( (signed int)uHouseID >= 54 && (signed int)uHouseID <= 73 && !sub_4B68EA(uHouseID - 54) )
-				  {
-				  return 1;
-				  }
-			  }
-		  else
-			  { //guilds
-			  v19 = word_4F0704[uHouseID-139] - 1; //some gild flag check
-			  //v20 = uHouseID;
-			  if ( !((unsigned __int8)(0x80u >> v19 % 8) & pPlayers[uActiveCharacter]->_guilds_member_bits[v19 /8]) )
-				  {
-				  HousePlaySomeSound(uHouseID, 3);
-				  return 1;
-				  }
-			  }
-		  HousePlaySomeSound(uHouseID, 1);
-		  dword_5C35D4 = 1;
-		  return 1;
-		  }
-	  }
-  else
-	  {
-	  if (( pParty->uCurrentHour < uOpenTime)||( pParty->uCurrentHour > uCloseTime - 1 ))
-		  {
-		  am_pm_flag_open = 0;
-		  am_pm_flag_close = 0;
-		  if (uOpenTime > 12 )
-			  {
-			  uOpenTime -= 12;
-			  am_pm_flag_open = 1;
-			  }
-		  if ( uCloseTime > 12 )
-			  {
-			  uCloseTime -= 12;
-			  am_pm_flag_close = 1;
-			  }
-		  sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[414], uOpenTime, aAMPMNames[am_pm_flag_open], 
-			  uCloseTime, aAMPMNames[am_pm_flag_close]); //"This place is open from %d%s to %d%s"
-		  ShowStatusBarString(pTmpBuf, 2u);
-		  if ( uActiveCharacter )
-			  pPlayers[uActiveCharacter]->PlaySound(SPEECH_3, 0);
-		  return 0;
-		  }
-	  }
-
-}
+	{
+	//enum HOUSE_ID v1; // edi@1
+	//int v2; // edi@5
+	signed int uOpenTime; // eax@5
+	signed int uCloseTime; // esi@5
+	unsigned int v5; // esi@5
+	int v6; // edx@5
+	signed int am_pm_flag_open; // ecx@10
+	signed int am_pm_flag_close; // eax@10
+	int v9; // esi@10
+	//unsigned int v10; // esi@16
+	int v11; // ecx@17
+	unsigned int v12; // kr00_4@25
+	//Player *v13; // esi@25
+	int v14; // eax@25
+	//Player *v15; // esi@27
+	//signed int v16; // eax@32
+	unsigned int v17; // eax@37
+	signed int v18; // edi@37
+	signed int v19; // edi@41
+	//unsigned int v20; // ecx@41
+	//const char *v22; // [sp-4h] [bp-40h]@33
+	char pContainer[40]; // [sp+Ch] [bp-30h]@32
+	unsigned int v24; // [sp+34h] [bp-8h]@5
+	//enum HOUSE_ID v25; // [sp+38h] [bp-4h]@1
+
+	//v1 = uHouseID;
+	//v25 = uHouseID;
+	GameUI_StatusBar_TimedString[0] = 0;
+	pStatusBarString[0] = 0;
+	ShowStatusBarString("", 2u);
+	if ( pMessageQueue_50CBD0->uNumMessages )
+		pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
+	viewparams->bRedrawGameUI = 1;
+	uDialogueType = 0;
+	pKeyActionMap->_459ED1(3);
+	pKeyActionMap->ResetKeys();
+	if (uHouseID == HOUSE_600 || uHouseID == HOUSE_601)
+		{
+		GameOverMenu(0);
+		return 0;
+		}
+	uOpenTime = p2DEvents[uHouseID - 1].uOpenTime;
+	uCloseTime = p2DEvents[uHouseID - 1].uCloseTime;
+	ptr_F8B1E8 = 0;
+	dword_F8B1E4 = 0;
+	dword_F8B1F4 = 0;
+	memset(byte_F8B1F0, 0, 4);
+	memset(byte_F8B148, 0, 16);
+	pRenderer->ClearZBuffer(0, 479);
+
+	if (((uCloseTime - 1 <= uOpenTime)&&((pParty->uCurrentHour >=uOpenTime)||(pParty->uCurrentHour <=(uCloseTime - 1))))||
+		((uCloseTime - 1 >  uOpenTime)&&((pParty->uCurrentHour < uOpenTime)||(pParty->uCurrentHour > (uCloseTime - 1))))) 
+
+		{
+		am_pm_flag_open = 0;
+		am_pm_flag_close = 0;
+		if (uOpenTime > 12 )
+			{
+			uOpenTime -= 12;
+			am_pm_flag_open = 1;
+			}
+		if ( uCloseTime > 12 )
+			{
+			uCloseTime -= 12;
+			am_pm_flag_close = 1;
+			}
+		sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[414], uOpenTime, aAMPMNames[am_pm_flag_open], 
+			uCloseTime, aAMPMNames[am_pm_flag_close]); //"This place is open from %d%s to %d%s"
+		ShowStatusBarString(pTmpBuf, 2u);
+		if ( uActiveCharacter )
+			pPlayers[uActiveCharacter]->PlaySound(SPEECH_3, 0);
+		return 0;
+		}
+	else
+		{
+		//v10 = uHouseID;
+		if ( (signed int)uHouseID < 53 ) //entering shops and guilds
+			{
+			if ( !(pParty->field_3C._shop_ban_times[uHouseID])
+				||  (pParty->field_3C._shop_ban_times[uHouseID] <= pParty->uTimePlayed) )
+				{
+				pParty->field_3C._shop_ban_times[uHouseID] = 0;
+				}
+			else
+				{
+				ShowStatusBarString(pGlobalTXT_LocalizationStrings[191], 2u);// "You've been banned from this shop!"
+				return 0;
+				}
+			}
+		if ( !start_event_seq_number )
+			pAudioPlayer->StopChannels(-1, -1);
+
+		uCurrentHouse_Animation = p2DEvents[uHouseID - 1].uAnimationID;
+		in_current_building_type = pAnimatedRooms[uCurrentHouse_Animation].uBuildingType;
+		if ( in_current_building_type == BildingType_20 && pParty->uFine )   // going 2 jail
+			{
+			uCurrentHouse_Animation = (signed __int16)p2DEvents[186].uAnimationID;
+			uHouseID = HOUSE_JAIL;
+			pParty->uTimePlayed = pParty->uTimePlayed+ 0x7620000;
+			in_current_building_type = pAnimatedRooms[p2DEvents[HOUSE_LORD_AND_JUDGE].uAnimationID].uBuildingType;
+			++pParty->uNumPrisonTerms;
+			pParty->uFine = 0;
+			for (uint i = 0; i < 4; ++i)
+				{
+				pParty->pPlayers[i].uTimeToRecovery = 0;
+				pParty->pPlayers[i].uNumDivineInterventionCastsThisDay = 0;
+				pParty->pPlayers[i].SetVariable(VAR_Award, 87);
+				}
+			}
+		++pIcons_LOD->uTexturePacksCount;
+		if ( !pIcons_LOD->uNumPrevLoadedFiles )
+			pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
+		switch (pParty->alignment)
+			{
+		case PartyAlignment_Good:    sprintf(pContainer, "evt%02d-b", const_2()); break;
+		case PartyAlignment_Neutral: sprintf(pContainer, "evt%02d", const_2()); break;
+		case PartyAlignment_Evil:    sprintf(pContainer, "evt%02d-c", const_2()); break;
+		default: assert(false);
+			}
+
+		v17 = pIcons_LOD->LoadTexture(pContainer, TEXTURE_16BIT_PALETTE);
+		pDialogueNPCCount = 0;
+		pTexture_Dialogue_Background = &pIcons_LOD->pTextures[v17];
+		uTextureID_507B04 = uTextureID_right_panel;
+		PrepareHouse(uHouseID);
+		v18 = 1;
+		uTextureID_507B04 = uTextureID_right_panel;
+		if ( uNumDialogueNPCPortraits == 1 )
+			pDialogueNPCCount = 1;
+		pVideoPlayer->_4BF28F(pAnimatedRooms[uCurrentHouse_Animation].video_name, 1u);  
+		dword_5C35D4 = 1;
+		if ( (signed int)uHouseID < 139 || (signed int)uHouseID > 172 )
+			{
+			if ( (signed int)uHouseID >= 54 && (signed int)uHouseID <= 73 && !sub_4B68EA(uHouseID - 54) )
+				{
+				return 1;
+				}
+			}
+		else
+			{ //guilds
+			v19 = word_4F0704[uHouseID-139] - 1; //some gild flag check
+			//v20 = uHouseID;
+			if ( !((unsigned __int8)(0x80u >> v19 % 8) & pPlayers[uActiveCharacter]->_guilds_member_bits[v19 /8]) )
+				{
+				HousePlaySomeSound(uHouseID, 3);
+				return 1;
+				}
+			}
+		HousePlaySomeSound(uHouseID, 1);
+		dword_5C35D4 = 1;
+		return 1;
+		}
+	}
--- a/mm7_data.cpp	Wed Feb 27 17:29:05 2013 +0200
+++ b/mm7_data.cpp	Wed Feb 27 22:48:10 2013 +0400
@@ -69,201 +69,202 @@
 #include "stru159.h"
 stru159 pAnimatedRooms[196] = //0x4E5F70
 {
- "",                            0x4, 0x1F4, 0,
- "Human Armor01",               0x20, 0x2C0, 0x3A02,
- "Necromancer Armor01",         0x20, 0x2D7, 0x4602,
- "Dwarven Armor01",             0x20, 0x2EE, 0x502,
- "Wizard Armor",                0x20, 0x3BD, 0x1302,
- "Warlock Armor",               0x20, 0x2D6, 0x2302,
- "Elf Armor",                   0x20, 0x2BC, 0x4F02,
- "Human Alchemisht01",          0xE, 0x2BE, 0x5F04,
- "Necromancer Alchemist01",     0xE, 0x2D6, 0x4504,
- "Dwarven Achemist01",          0xE, 0x387, 0x404,
- "Wizard Alchemist",            0xE, 0x232, 0x1904,
- "Warlock Alchemist",           0xE, 0x2BE, 0x2A04,
- "Elf Alchemist",               0xE, 0x38A, 0x5404,
- "Human Bank01",                0x6, 0x384, 0x3416,
- "Necromancer Bank01",          0x6, 0x2D8, 0x4716,
- "Dwarven Bank",                0x6, 0x2F3, 0x616,
- "Wizard Bank",                 0x6, 0x3BA, 0x1416,
- "Warlock Bank",                0x6, 0x39F, 0x2416,
- "Elf Bank",                    0x6, 0x2BC, 0x4716,
- "Boat01",                      0xF, 0x4C, 0x3351C,
- "Boat01d",                     0xF, 0x4C, 0x3351C,
- "Human Magic Shop01",          0xA, 0x2C8, 0x3603,
- "Necromancer Magic Shop01",    0xE, 0x2DC, 0x4203,
- "Dwarven Magic Shop01",        0x2A, 0x2EF, 0x5B03,
- "Wizard Magic Shop",           0x1E, 0x2DF, 0xF03,
- "Warlock Magic Shop",          0x7, 0x3B9, 0x1F03,
- "Elf Magic Shop",              0x24, 0x2CC, 0x5203,
- "Human Stables01",             0x21, 0x31, 0x3301B,
- "Necromancer Stables",         0x21, 0x2DD, 0x3431B,
- "",                            0x21, 0x2F0, 0x35B1B,
- "Wizard Stables",              0x21, 0x3BA, 0x3101B,
- "Warlock Stables",             0x21, 0x181, 0x3201B,
- "Elf Stables",                 0x21, 0x195, 0x34D1B,
- "Human Tavern01",              0xD, 0x2C2, 0x3115,
- "Necromancer Tavern01",       0xD, 0x3B0, 0x3915,
- "Dwarven Tavern01",            0xD, 0x2FE, 0x5E15,
- "Wizard Tavern",               0xD, 0x3BB, 0x1115,
- "Warlock Tavern",              0xD, 0x3A8, 0x2115,
- "Elf Tavern",                  0xD, 0x2CD, 0x4E15,
- "Human Temple01",              0x24, 0x2DB, 0x33217,
- "Necromancer Temple",          0x24, 0x2DF, 0x33C17,
- "Dwarven Temple01",            0x24, 0x2F1, 0x35617,
- "Wizard Temple",               0x24, 0x2E0, 0x30A17,
- "Warlock Temple",              0x24, 0x3A4, 0x31B17,
- "Elf Temple",                  0x24, 0x2CE, 0x34817,
- "Human Town Hall",             0x10, 0x39C, 0xE11,
- "Necromancer Town Hall01",     0x10, 0x3A4, 0x3D11,
- "Dwarven Town Hall",           0x10, 0x2DB, 0x5811,
- "Wizard Town Hall",            0x10, 0x3BD, 0xB11,
- "Warlock Town Hall",           0x10, 0x2DB, 0x1C11,
- "Elf Town Hall",               0x10, 0x27A, 0x4911,
- "Human Training Ground01",     0x18, 0x2C7, 0x2C1E,
- "Necromancer Training Ground", 0x18, 0x3AD, 0x3E1E,
- "Dwarven Training Ground",     0x18, 0x2F2, 0x591E,
- "Wizard Training Ground",      0x18, 0x3A3, 0xC1E,
- "Warlock Training Ground",     0x18, 0x3A6, 0x1D1E,
- "Elf Training Ground",         0x18, 0x19F, 0x4A1E,
- "Human Weapon Smith01",        0x16, 0x2C1, 0x42D01,
- "Necromancer Weapon Smith01",  0x16, 0x2D9, 0x43F01,
- "Dwarven Weapon Smith01",      0x16, 0x2EE, 0x45201,
- "Wizard Weapon Smith",         0x16, 0x2D5, 0x40D01,
- "Warlock Weapon Smith",        0x16, 0x2D7, 0x41701,
- "Elf Weapon Smith",            0x16, 0x2CA, 0x44B01,
- "Air Guild",                   0x1D, 0xA4, 0x30106,
- "Body Guild",                  0x19, 0x3BF, 0x20B,
- "DarkGuild",                   0x19, 0x2D1, 0x30D,
- "EarthGuild",                  0x19, 0x2CB, 0x5308,
- "Fire Guild",                  0x1C, 0x2BF, 0x3805,
- "Light Guild",                 0x1C, 0x2D5, 0x2E0C,
- "Mind Guild",                  0x1C, 0xE5, 0x280A,
- "Spirit Guild",                0x1C, 0x2D2, 0x2909,
- "Water Guild",                 0x1B, 0x2D3, 0x1807,
- "Lord And Judge Out01",        1, 0, 0x271D,
- "Human Poor House 1",          8, 0, 0x1D,
- "Human Poor House 2",          8, 0, 0x1D,
- "Human Poor House 3",          8, 0, 0x1D,
- "Human Medium House 1",        8, 0, 0x1D,
- "Human Medium House 2",        8, 0, 0x1D,
- "Human Medium House 3",        8, 0, 0x1D,
- "Human Rich House 1",          8, 0, 0x1D,
- "Human Rich House 2",          8, 0, 0x1D,
- "Human Rich House 3",          8, 0, 0x1D,
- "Elven Poor House 1",          8, 0, 0x1D,
- "Elven Poor House 2",          8, 0, 0x1D,
- "Elven Poor House 3",          8, 0, 0x1D,
- "Elven Medium House 1",        8, 0, 0x1D,
- "Elven Medium House 2",        8, 0, 0x1D,
- "Elven Medium House 3",        8, 0, 0x1D,
- "Elven Rich House 1",          8, 0, 0x1D,
- "Elven Rich House 2",          8, 0, 0x1D,
- "Elven Rich House 3",          8, 0, 0x1D,
- "Dwarven Poor House 1",        8, 0, 0x1D,
- "Dwarven Poor House 2",        8, 0, 0x1D,
- "Dwarven Poor House 3",        8, 0, 0x1D,
- "Dwarven Medium House 1",      8, 0, 0x1D,
- "Dwarven Medium house 2",      8, 0, 0x1D,
- "Dwarven Medium House 3",      8, 0, 0x1D,
- "Dwarven Rich House 1",        8, 0, 0x1D,
- "Dwarven Rich House 2",        8, 0, 0x1D,
- "Dwarven Rich House 3",        8, 0, 0x1D,
- "Wizard Poor House 1",         8, 0, 0x1D,
- "Wizard Poor House 2",         8, 0, 0x1D,
- "Wizard Poor House 3",         8, 0, 0x1D,
- "Wizard Medium House 1",       8, 0, 0x1D,
- "Wizard Medium House 2",       8, 0, 0x1D,
- "Wizard Mdeium House 3",       8, 0, 0x1D,
- "Wizard Rich House 1",         8, 0, 0x1D,
- "Wizard Rich House 2",         8, 0, 0x1D,
- "Wizard Rich House 3",         8, 0, 0x1D,
- "Necromancer Poor House 1",    8, 0, 0x1D,
- "Necromancer Poor House 2",    8, 0, 0x1D,
- "Necromancer Poor House 3",    8, 0, 0x1D,
- "Necromancer Medium House 1",  8, 0, 0x1D,
- "Necromancer Medium House 2",  8, 0, 0x1D,
- "Necromancer Mdeium House 3",  8, 0, 0x1D,
- "Necromancer Rich House 1",    8, 0, 0x1D,
- "Necromancer Rich House 2",    8, 0, 0x1D,
- "Necromancer Rich House 3",    8, 0, 0x1D,
- "Warlock Poor House 1",        8, 0, 0x1D,
- "Warlock Poor House 2",        8, 0, 0x1D,
- "Warlock Poor House 3",        8, 0, 0x1D,
- "Warlock Medium House 1",      8, 0, 0x1D,
- "Warlock Medium House 2",      8, 0, 0x1D,
- "Warlock Mdeium House 3",      8, 0, 0x1D,
- "Warlock Rich House 1",        8, 0, 0x1D,
- "Warlock Rich House 2",        8, 0, 0x1D,
- "Warlock Rich House 3",        8, 0, 0x1D,
- "Out01 Temple of the Moon",    0x24, 0, 0x19,
- "Out01 Dragon Cave",           0x24, 0, 0x19,
- "Out02 Castle Harmondy",       0x24, 0, 0x19,
- "Out02 White Cliff Cave",      0x24, 0, 0x19,
- "Out03 Erathian Sewer",        0x24, 0, 0x19,
- "Out03 Fort Riverstride",      0x24, 0, 0x19,
- "Out03 Castle Gryphonheart",   0x24, 0, 0x19,
- "Out04 Elf Castle",            0x24, 0, 0x19,
- "Out04 Tularean Caves",        0x24, 0, 0x19,
- "Out04 Clanker's Laboratory",  0x24, 0, 0x19,
- "Out05 Hall of the Pit",       0x24, 0, 0x19,
- "Out05 Watchtower 6",          0x24, 0, 0x19,
- "Out06 School of Sorcery",     0x24, 0, 0x19,
- "Out06 Red Dwarf Mines",       0x24, 0, 0x19,
- "Out07 Castle Lambert",        0x24, 0, 0x19,
- "Out07 Walls of Mist",         0x24, 0, 0x19,
- "Out07 Temple of the Light",   0x24, 0, 0x19,
- "Out08 Evil Entrance",         0x24, 0, 0x19,
- "Out08 Breeding Zone",         0x24, 0, 0x19,
- "Out08 Temple of the Dark",    0x24, 0, 0x19,
- "Out09 Grand Temple of the Moon", 0x24, 0, 0x19,
- "Out09 Grand Tempple of the Sun", 0x24, 0, 0x19,
- "Out10 Thunderfist Mountain",  0x24, 0, 0x19,
- "Out10 The Maze",              0x24, 0, 0x19,
- "Out10 Connecting Tunnel Cave #1", 0x24, 0, 0x19,
- "",                            0x24, 0, 0x19,
- "",                            0x24, 0, 0x19,
- "Out11 Stone City",            0x24, 0, 0x19,
- "",                            0x24, 0, 0x19,
- "Out12 Colony Zod",            0x24, 0, 0x19,
- "Out12 Connecting Tunnel Cave #1", 0x24, 0, 0x19,
- "",                            0x24, 0, 0x19,
- "",                            0x24, 0, 0x19,
- "Out13 Mercenary Guild",       0x24, 0, 0x19,
- "Out13 Tidewater Caverns",     0x24, 0, 0x19,
- "Out13 Wine Cellar",           0x24, 0, 0x19,
- "Out14 Titan's Stronghold",    0x24, 0, 0x19,
- "Out14 Temple Of Baa",         0x24, 0, 0x19,
- "Out14 Hall under the Hill",   0x24, 0, 0x19,
- "Out15 The Linclon",           0x24, 0, 0x19,
- "Jail",                        0x24, 0, 0x1F,
- "Harmondale Throne Room",      0x24, 0, 0x1D,
- "Gryphonheart Throne Room",    0x24, 0, 0x14,
- "Elf Castle Throne Room",      0x24, 0, 0x14,
- "Wizard Castle Throne Room",   0x24, 0, 0x14,
- "Necromancer Casstle Trone Room", 0x24, 0, 0x14,
- "Master Thief",                0x24, 0, 0x1D,
- "Dwarven King",                0x24, 0, 0x14,
- "Arms Master",                 0x24, 0, 0x1D,
- "Warlock",                     0x24, 0, 0x1D,
- "Lord Markam",                 0x24, 0, 0x14,
- "Arbiter Neutral Town",        0x24, 0, 0x1D,
- "Arbiter Good Town",           0x24, 0, 0x1D,
- "Arbiter Evil Town",           0x24, 0, 0x1D,
- "Necromancer Throne Room Empty", 0x24, 0, 0x14,
- "",                            0x24, 0, 0x1D,
- "",                            0x24, 0, 0x1D,
- "",                            0x24, 0, 0x1D,
- "",                            0x24, 0, 0x1D,
- "Boat01",                      0xF, 0, 0x3351D,
- "",                            0x24, 0, 0x1C,
- "",                            0x24, 0, 0x1D,
- "",                            0x24, 0, 0x1D,
- "Arbiter Room Neutral",        0x24, 0, 0x1D,
- "Out02 Castle Harmondy Abandoned", 0x24, 0, 0x19,
- "Human Temple02",              0x24, 0x3AB, 0x1B17,
- "Player Castle Good",          0x24, 0, 0x19,
- "Player Castle Bad",           0x24, 0, 0x19,
+	{"",                            0x4, 0x1F4, 0, 0, 0},
+	{"Human Armor01",               0x20, 0x2C0, 2, 58, 0},
+{"Necromancer Armor01",         0x20, 0x2D7, 2, 70, 0 },
+{"Dwarven Armor01",             0x20, 0x2EE, 2,  5, 0 },
+{"Wizard Armor",                0x20, 0x3BD, 2, 19, 0 },
+{"Warlock Armor",               0x20, 0x2D6, 2, 35, 0 },
+{"Elf Armor",                   0x20, 0x2BC, 2, 79, 0 },
+{"Human Alchemisht01",          0xE,  0x2BE, 4, 95, 0 },
+{"Necromancer Alchemist01",     0xE,  0x2D6, 4, 69, 0 },
+{"Dwarven Achemist01",          0xE,  0x387, 4,  4, 0 },
+{"Wizard Alchemist",            0xE,  0x232, 4, 25, 0 },
+{"Warlock Alchemist",           0xE,  0x2BE, 4, 42, 0 },
+{"Elf Alchemist",               0xE,  0x38A, 4, 84, 0 },
+{"Human Bank01",                0x6, 0x384, 22, 52, 0 },
+{"Necromancer Bank01",          0x6, 0x2D8, 22, 71, 0 },
+{"Dwarven Bank",                0x6, 0x2F3, 22,  6, 0 },
+{"Wizard Bank",                 0x6, 0x3BA, 22, 20, 0 },
+{"Warlock Bank",                0x6, 0x39F, 22, 36, 0 },
+{"Elf Bank",                    0x6, 0x2BC, 22, 71, 0 },
+{"Boat01",                      0xF,  0x4C, 28, 53, 3 },
+{"Boat01d",                     0xF,  0x4C, 28, 53, 3 },
+{"Human Magic Shop01",          0xA, 0x2C8,  3, 54, 0 },
+{"Necromancer Magic Shop01",    0xE, 0x2DC,  3, 66, 0 },
+{"Dwarven Magic Shop01",        0x2A, 0x2EF, 3, 91, 0 },
+{"Wizard Magic Shop",           0x1E, 0x2DF, 3, 15, 0 },
+{"Warlock Magic Shop",          0x7,  0x3B9, 3, 15, 0 },
+{"Elf Magic Shop",              0x24, 0x2CC, 3, 82, 0 },
+{"Human Stables01",             0x21, 0x31,  27, 48, 3 },
+{"Necromancer Stables",         0x21, 0x2DD, 27, 67, 3 },
+{"",                            0x21, 0x2F0, 27, 91, 3 },
+{"Wizard Stables",              0x21, 0x3BA, 27, 16, 3 },
+{"Warlock Stables",             0x21, 0x181, 27, 77, 3 },
+{"Elf Stables",                 0x21, 0x195, 27, 77, 3 },
+{"Human Tavern01",              0xD, 0x2C2,  21, 49, 0 },
+{"Necromancer Tavern01",        0xD, 0x3B0,  21, 57, 0 },
+{"Dwarven Tavern01",            0xD, 0x2FE,  21, 94, 0 },
+{"Wizard Tavern",               0xD, 0x3BB,  21, 17, 0 },
+{"Warlock Tavern",              0xD, 0x3A8,  21, 33, 0 },
+{"Elf Tavern",                  0xD, 0x2CD,  21, 78, 0 },
+{"Human Temple01",              0x24, 0x2DB, 23, 50, 3 },
+{"Necromancer Temple",          0x24, 0x2DF, 23, 60, 3 },
+{"Dwarven Temple01",            0x24, 0x2F1, 23, 86, 3 },
+{"Wizard Temple",               0x24, 0x2E0, 23, 10, 3 },
+{"Warlock Temple",              0x24, 0x3A4, 23, 27, 3 },
+{"Elf Temple",                  0x24, 0x2CE, 23, 72, 3 },
+{"Human Town Hall",             0x10, 0x39C, 17, 14, 0 },
+{"Necromancer Town Hall01",     0x10, 0x3A4, 17, 61, 0 },
+{"Dwarven Town Hall",           0x10, 0x2DB, 17, 88, 0 },
+{"Wizard Town Hall",            0x10, 0x3BD, 17, 11, 0 },
+{"Warlock Town Hall",           0x10, 0x2DB, 17, 28, 0 },
+{"Elf Town Hall",               0x10, 0x27A, 17, 73, 0 },
+{"Human Training Ground01",     0x18, 0x2C7, 30, 44, 0 },
+{"Necromancer Training Ground", 0x18, 0x3AD, 30, 62, 0 },
+{"Dwarven Training Ground",     0x18, 0x2F2, 30, 89, 0 },
+{"Wizard Training Ground",      0x18, 0x3A3, 30, 12, 0 },
+{"Warlock Training Ground",     0x18, 0x3A6, 30, 29, 0 },
+{"Elf Training Ground",         0x18, 0x19F, 30, 74, 0 },
+{"Human Weapon Smith01",        0x16, 0x2C1, 1, 45, 4 },
+{"Necromancer Weapon Smith01",  0x16, 0x2D9, 1, 63, 4 },
+{"Dwarven Weapon Smith01",      0x16, 0x2EE, 1, 82, 4 },
+{"Wizard Weapon Smith",         0x16, 0x2D5, 1, 13, 4 },
+{"Warlock Weapon Smith",        0x16, 0x2D7, 1, 23, 4 },
+{"Elf Weapon Smith",            0x16, 0x2CA, 1, 75, 4 },
+{"Air Guild",                   0x1D, 0xA4,   6, 1, 3 },
+{"Body Guild",                  0x19, 0x3BF, 11, 2, 0 },
+{"DarkGuild",                   0x19, 0x2D1, 13, 3, 0 },
+{"EarthGuild",                  0x19, 0x2CB, 8, 83, 0 },
+{"Fire Guild",                  0x1C, 0x2BF, 5, 56, 0 },
+{"Light Guild",                 0x1C, 0x2D5, 12, 46, 0 },
+{"Mind Guild",                  0x1C, 0xE5,  10, 40, 0 },
+{"Spirit Guild",                0x1C, 0x2D2,  9, 41, 0 },
+{"Water Guild",                 0x1B, 0x2D3,  7, 24, 0 },
+{"Lord And Judge Out01",        1, 0,        29, 39, 0 },
+{"Human Poor House 1",          8, 0,        29,  0, 0 },
+{"Human Poor House 2",          8, 0,        29,  0, 0 },
+{"Human Poor House 3",          8, 0,        29,  0, 0 },
+{"Human Medium House 1",        8, 0,        29,  0, 0 },
+{"Human Medium House 2",        8, 0,        29,  0, 0 },
+{"Human Medium House 3",        8, 0,        29,  0, 0 },
+{"Human Rich House 1",          8, 0,        29,  0, 0 },
+{"Human Rich House 2",          8, 0,        29,  0, 0 },
+{"Human Rich House 3",          8, 0,        29,  0, 0 },
+{"Elven Poor House 1",          8, 0,        29,  0, 0 },
+{"Elven Poor House 2",          8, 0,        29,  0, 0 },
+{"Elven Poor House 3",          8, 0,        29,  0, 0 },
+{"Elven Medium House 1",        8, 0,        29,  0, 0 },
+{"Elven Medium House 2",        8, 0,        29,  0, 0 },
+{"Elven Medium House 3",        8, 0,        29,  0, 0 },
+{"Elven Rich House 1",          8, 0,        29,  0, 0 },
+{"Elven Rich House 2",          8, 0,        29,  0, 0 },
+{"Elven Rich House 3",          8, 0,        29,  0, 0 },
+{"Dwarven Poor House 1",        8, 0,        29,  0, 0 },
+{"Dwarven Poor House 2",        8, 0,        29,  0, 0 },
+{"Dwarven Poor House 3",        8, 0,        29,  0, 0 },
+{"Dwarven Medium House 1",      8, 0,        29,  0, 0 },
+{"Dwarven Medium house 2",      8, 0,        29,  0, 0 },
+{"Dwarven Medium House 3",      8, 0,        29,  0, 0 },
+{"Dwarven Rich House 1",        8, 0,        29,  0, 0 },
+{"Dwarven Rich House 2",        8, 0,        29,  0, 0 },
+{"Dwarven Rich House 3",        8, 0,        29,  0, 0 },
+{"Wizard Poor House 1",         8, 0,        29,  0, 0 },
+{"Wizard Poor House 2",         8, 0,        29,  0, 0 },
+{"Wizard Poor House 3",         8, 0,        29,  0, 0 },
+{"Wizard Medium House 1",       8, 0,        29,  0, 0 },
+{"Wizard Medium House 2",       8, 0,        29,  0, 0 },
+{"Wizard Mdeium House 3",       8, 0,        29,  0, 0 },
+{"Wizard Rich House 1",         8, 0,        29,  0, 0 },
+{"Wizard Rich House 2",         8, 0,        29,  0, 0 },
+{"Wizard Rich House 3",         8, 0,        29,  0, 0 },
+{"Necromancer Poor House 1",    8, 0,        29,  0, 0 },
+{"Necromancer Poor House 2",    8, 0,        29,  0, 0 },
+{"Necromancer Poor House 3",    8, 0,        29,  0, 0 },
+{"Necromancer Medium House 1",  8, 0,        29,  0, 0 },
+{"Necromancer Medium House 2",  8, 0,        29,  0, 0 },
+{"Necromancer Mdeium House 3",  8, 0,        29,  0, 0 },
+{"Necromancer Rich House 1",    8, 0,        29,  0, 0 },
+{"Necromancer Rich House 2",    8, 0,        29,  0, 0 },
+{"Necromancer Rich House 3",    8, 0,        29,  0, 0 },
+{"Warlock Poor House 1",        8, 0,        29,  0, 0 },
+{"Warlock Poor House 2",        8, 0,        29,  0, 0 },
+{"Warlock Poor House 3",        8, 0,        29,  0, 0 },
+{"Warlock Medium House 1",      8, 0,        29,  0, 0 },
+{"Warlock Medium House 2",      8, 0,        29,  0, 0 },
+{"Warlock Mdeium House 3",      8, 0,        29,  0, 0 },
+{"Warlock Rich House 1",        8, 0,        29,  0, 0 },
+{"Warlock Rich House 2",        8, 0,        29,  0, 0 },
+{"Warlock Rich House 3",        8, 0,        29,  0, 0 },
+{"Out01 Temple of the Moon",    0x24, 0,     25,  0, 0 },
+{"Out01 Dragon Cave",           0x24, 0,     25,  0, 0 },
+{"Out02 Castle Harmondy",       0x24, 0,     25,  0, 0 },
+{"Out02 White Cliff Cave",      0x24, 0,     25,  0, 0 },
+{"Out03 Erathian Sewer",        0x24, 0,     25,  0, 0 },
+{"Out03 Fort Riverstride",      0x24, 0,     25,  0, 0 },
+{"Out03 Castle Gryphonheart",   0x24, 0,     25,  0, 0 },
+{"Out04 Elf Castle",            0x24, 0,     25,  0, 0 },
+{"Out04 Tularean Caves",        0x24, 0,     25,  0, 0 },
+{"Out04 Clanker's Laboratory",  0x24, 0,     25,  0, 0 },
+{"Out05 Hall of the Pit",       0x24, 0,     25,  0, 0 },
+{"Out05 Watchtower 6",          0x24, 0,     25,  0, 0 },
+{"Out06 School of Sorcery",     0x24, 0,     25,  0, 0 },
+{"Out06 Red Dwarf Mines",       0x24, 0,     25,  0, 0 },
+{"Out07 Castle Lambert",        0x24, 0,     25,  0, 0 },
+{"Out07 Walls of Mist",         0x24, 0,     25,  0, 0 },
+{"Out07 Temple of the Light",   0x24, 0,     25,  0, 0 },
+{"Out08 Evil Entrance",         0x24, 0,     25,  0, 0 },
+{"Out08 Breeding Zone",         0x24, 0,     25,  0, 0 },
+{"Out08 Temple of the Dark",    0x24, 0,     25,  0, 0 },
+{"Out09 Grand Temple of the Moon", 0x24, 0,     25,  0, 0 },
+{"Out09 Grand Tempple of the Sun", 0x24, 0,     25,  0, 0 },
+{"Out10 Thunderfist Mountain",  0x24, 0,     25,  0, 0 },
+{"Out10 The Maze",              0x24, 0,     25,  0, 0 },
+{"Out10 Connecting Tunnel Cave #1", 0x24, 0,     25,  0, 0 },
+{"",                            0x24, 0,     25,  0, 0 },
+{"",                            0x24, 0,     25,  0, 0 },
+{"Out11 Stone City",            0x24, 0,     25,  0, 0 },
+{"",                            0x24, 0,     25,  0, 0 },
+{"Out12 Colony Zod",            0x24, 0,     25,  0, 0 },
+{"Out12 Connecting Tunnel Cave #1", 0x24, 0,     25,  0, 0 },
+{"",                            0x24, 0,     25,  0, 0 },
+{"",                            0x24, 0,     25,  0, 0 },
+{"Out13 Mercenary Guild",       0x24, 0,     25,  0, 0 },
+{"Out13 Tidewater Caverns",     0x24, 0,     25,  0, 0 },
+{"Out13 Wine Cellar",           0x24, 0,     25,  0, 0 },
+{"Out14 Titan's Stronghold",    0x24, 0,     25,  0, 0 },
+{"Out14 Temple Of Baa",         0x24, 0,     25,  0, 0 },
+{"Out14 Hall under the Hill",   0x24, 0,     25,  0, 0 },
+{"Out15 The Linclon",           0x24, 0,     25,  0, 0 },
+{"Jail",                        0x24, 0, 31, 0, 0 },
+{"Harmondale Throne Room",      0x24, 0, 29, 0, 0 },
+{"Gryphonheart Throne Room",    0x24, 0, 20, 0, 0 },
+{"Elf Castle Throne Room",      0x24, 0, 20, 0, 0 },
+{"Wizard Castle Throne Room",   0x24, 0, 20, 0, 0 },
+{"Necromancer Casstle Trone Room", 0x24, 0, 20, 0, 0 },
+{"Master Thief",                0x24, 0, 29, 0, 0 },
+{"Dwarven King",                0x24, 0, 20, 0, 0 },
+{"Arms Master",                 0x24, 0, 29, 0, 0 },
+{"Warlock",                     0x24, 0, 29, 0, 0 },
+{"Lord Markam",                 0x24, 0, 20, 0, 0 },
+{"Arbiter Neutral Town",        0x24, 0, 29, 0, 0 },
+{"Arbiter Good Town",           0x24, 0, 29, 0, 0 },
+{"Arbiter Evil Town",           0x24, 0, 29, 0, 0 },
+{"Necromancer Throne Room Empty", 0x24, 0, 20, 0, 0 },
+{"",                            0x24, 0, 29, 0, 0 },
+{"",                            0x24, 0, 29, 0, 0 },
+{"",                            0x24, 0, 29, 0, 0 },
+{"",                            0x24, 0, 29, 0, 0 },
+{"Boat01",                      0xF, 0, 29, 53, 3 },
+{"",                            0x24, 0, 28, 0, 0 },
+{"",                            0x24, 0, 28, 0, 0 },
+{"",                            0x24, 0, 28, 0, 0 },
+{"",                            0x24, 0, 29, 0, 0 },
+{"Arbiter Room Neutral",        0x24, 0, 29, 0, 0 },
+{"Out02 Castle Harmondy Abandoned", 0x24, 0, 25, 0, 0 },
+{"Human Temple02",              0x24, 0x3AB, 23, 27, 0 },
+{"Player Castle Good",          0x24, 0, 25, 0, 0 },
+{"Player Castle Bad",           0x24, 0, 25, 0, 0}
 };
 
 #include "stru160.h"
--- a/stru159.h	Wed Feb 27 17:29:05 2013 +0200
+++ b/stru159.h	Wed Feb 27 22:48:10 2013 +0400
@@ -9,7 +9,9 @@
   char *video_name;
   int field_4;
   int field_8;
-  int uBuildingType;
+  unsigned __int8 uBuildingType;
+  unsigned __int8 field_d;
+  unsigned __int16 padding_e;
 };
 #pragma pack(pop)
 extern stru159 pAnimatedRooms[196];
\ No newline at end of file