changeset 208:07eb7d649bd5

Слияние
author Ritor1
date Sat, 16 Feb 2013 08:42:58 +0600
parents f96601c7e503 (current diff) 4813b57396ba (diff)
children 29545d87e11d
files LayingItem.cpp Outdoor.cpp
diffstat 33 files changed, 2000 insertions(+), 1090 deletions(-) [+]
line wrap: on
line diff
--- a/Actor.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Actor.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -155,9 +155,9 @@
   int v10; // eax@11
   GUIWindow *v11; // ecx@19
   signed int v12; // eax@21
-  int v13; // [sp-8h] [bp-44h]@34
+  //int v13; // [sp-8h] [bp-44h]@34
   const char *v14; // [sp-4h] [bp-40h]@4
-  int v15; // [sp-4h] [bp-40h]@34
+  //int v15; // [sp-4h] [bp-40h]@34
   signed int v16; // [sp-4h] [bp-40h]@35
   int v17; // [sp+10h] [bp-2Ch]@1
   char pContainer[32]; // [sp+14h] [bp-28h]@3
@@ -271,21 +271,14 @@
   pDialogueWindow->CreateButton(407u, 424u, 0x1Fu, 0x28u, 2, 94, 0x6Eu, 4u, 0x34u, "", 0);
   if ( v17 && uActiveCharacter && !(v5->uFlags & 0x80) )
   {
-    if ( pParty->uCurrentHour < 5 || pParty->uCurrentHour > 0x15 )
-    {
-      v15 = 0;
-      v13 = 23;
-    }
+    if (pParty->uCurrentHour < 5 || pParty->uCurrentHour > 21)
+      pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodEvening, 0);
     else
-    {
-      v15 = 0;
-      v13 = 22;
-    }
-    pPlayers[uActiveCharacter]->PlaySound(v13, v15);
+      pPlayers[uActiveCharacter]->PlaySound(SPEECH_GoodDay, 0);
   }
 }
 
-
+  
 //----- (0040894B) --------------------------------------------------------
 bool Actor::CanAct()
 {
--- a/Arcomage.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Arcomage.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -13,7 +13,7 @@
 #include "Events2D.h"
 #include "stru272.h"
 #include "VectorTypes.h"
-
+#include "texts.h"
 #include "mm7_data.h"
 
 
--- a/AudioPlayer.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/AudioPlayer.h	Sat Feb 16 08:42:58 2013 +0600
@@ -77,6 +77,7 @@
   SOUND_EnteringAHouse = 0x6,
   SOUND_8 = 0x8,
   SOUND_27 = 0x1B,
+  SOUND_Button = 66,
   SOUND_Arcomage_LoseResources = 0x78,
   SOUND_Arcomage_AddResources = 0x79,
   SOUND_Arcomage_TowerWallDamage = 0x7A,
--- a/GUIFont.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/GUIFont.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -21,6 +21,10 @@
 struct GUIFont *pFontComic;
 struct GUIFont *pFontSmallnum;
 
+char temp_string[2048];
+
+char pTmpBuf3[2048];
+
 //----- (0044C448) --------------------------------------------------------
 GUIFont *LoadFont(const char *pFontFile, const char *pFontPalette, ...)
 	{
@@ -605,10 +609,10 @@
 //----- (0044C59D) --------------------------------------------------------
 int GUIFont::CalcTextHeight(const char *pString, GUIWindow *pWindow, int uXOffset, int a5)
 	{ 
-	int uAllHeght; // esi@3
-	unsigned int uStringLen; // eax@3
-	char c; // cl@4
-	char *test_string; // [sp+14h] [bp+Ch]@3
+	int uAllHeght; 
+	unsigned int uStringLen; 
+	char c; 
+	char *test_string; 
 
 	if (!pString)
 		return 0;
@@ -694,147 +698,97 @@
 //----- (0044C768) --------------------------------------------------------
 char * FitTextInAWindow(const char *pInString, GUIFont *pFont, GUIWindow *pWindow, unsigned int uX, int a5)
 	{
-	const char *v5; // edi@1
-	GUIFont *v6; // esi@1
-	unsigned int v8; // eax@3
-	int v9; // edi@3
-	unsigned __int8 v10; // cl@4
-	int v11; // edx@10
-	GUICharMetric *v12; // ecx@10
-	int v13; // edx@11
-	int v14; // edx@12
-	int v15; // edx@13
-	unsigned int v16; // esi@15
-	unsigned int v17; // edx@15
-	unsigned int v18; // ecx@15
-	int v19; // ebx@16
-	unsigned __int8 v20; // zf@16
-	char v21; // sf@16
-	unsigned __int8 v22; // of@16
-	int v23; // edi@16
-	unsigned __int8 v24; // dl@17
-	int v25; // edi@39
-	int v26; // eax@42
-	std::string v27; // [sp-18h] [bp-40h]@2
-	const char *v28; // [sp-8h] [bp-30h]@2
-	int v29; // [sp-4h] [bp-2Ch]@2
-	const char *v30; // [sp+Ch] [bp-1Ch]@1
-	char Str[3]; // [sp+10h] [bp-18h]@42
-	char v32; // [sp+13h] [bp-15h]@42
-	size_t v33; // [sp+14h] [bp-14h]@3
-	unsigned int v34; // [sp+18h] [bp-10h]@3
-	GUIFont *v35; // [sp+1Ch] [bp-Ch]@1
-	int v36; // [sp+20h] [bp-8h]@3
-	int v37; // [sp+24h] [bp-4h]@3
+	unsigned char c;
+	unsigned int uInStrLen;
+	char digits[4];
+	int possible_transition_point;
+	int string_pixel_Width;
+	int start_pixel_offset;
 
-	v5 = pInString;
-	v6 = pFont;
-	v30 = pInString;
-	v35 = pFont;
-	if ( !pInString )
+	if (!pInString)
 		{
 		MessageBoxW(nullptr, L"Invalid string passed !", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Font.cpp:445", 0);
 		return 0;
 		}
-	v33 = strlen(pInString);
-	strcpy(pTmpBuf3, v5);
-	v8 = uX;
-	v9 = 0;
-	v36 = 0;
-	v34 = uX;
-	v37 = 0;
-	if ( (signed int)v33 > 0 )
+	uInStrLen = strlen(pInString);
+	strcpy(&temp_string[0], pInString);
+	if (uInStrLen==0)
+		return &temp_string[0];
+
+	start_pixel_offset=string_pixel_Width=uX;
+	possible_transition_point=0;
+	for(int i=0; i<uInStrLen; ++i) 
 		{
-		while ( 1 )
+		c=temp_string[i];
+		if (pFont->IsCharValid(c))
 			{
-			v10 = pTmpBuf3[v9];
-			if ((v10 < v6->cFirstChar || v10 > v6->cLastChar)
-				&& v10 != '\f' && v10 != '\r' && v10 != '\t' && v10 != '\n' )
-				goto LABEL_34;
-			v11 = v10 - 9;
-			v12 = &v6->pMetrics[v10];
-			if ( !v11 )
+			switch (c)
+				{
+			case '\t':	// Horizontal tab 09
+				{
+				strncpy(digits, &temp_string[i+1],3);
+				digits[3]=0;
+				string_pixel_Width= atoi(digits)+uX;
+				i+=3;
+				break;
+				}
+			case  '\n':	//Line Feed 0A 10
+				{
+				string_pixel_Width=start_pixel_offset;
+				possible_transition_point=i;
+				break;
+				}
+			case  '\f':   //Form Feed, page eject  0C 12
 				{
-				strncpy(Str, &pTmpBuf3[v9 + 1], 3u);
-				v32 = 0;
-				v26 = atoi(Str);
-				v8 = uX + v26;
-				v25 = v9 + 3;
-				v34 = v8;
-				goto LABEL_43;
+				i+=5;  
+				break;
 				}
-			v13 = v11 - 1;
-			if ( !v13 )
+			case  '\r':   //Carriage Return 0D 13
+				{
+				if (!a5)
+					return (char*)pInString;
 				break;
-			v14 = v13 - 2;
-			if ( !v14 )
+				}
+			case ' ' :
 				{
-				v25 = v9 + 5;
-LABEL_43:
-				v37 = v25;
-				goto LABEL_34;
+				string_pixel_Width+=pFont->pMetrics[c].uWidth;
+				possible_transition_point=i;
+				break;
 				}
-			v15 = v14 - 1;
-			if ( v15 )
-				{
-				if ( v15 != 19 )
+			default:
+
+				if ((string_pixel_Width+pFont->pMetrics[c].uWidth+ pFont->pMetrics[c].uLeftSpacing+
+					pFont->pMetrics[c].uRightSpacing)<pWindow->uFrameWidth)
 					{
-					v16 = v12->uRightSpacing;
-					v17 = v12->uWidth;
-					v18 = v12->uLeftSpacing;
-					if ( v8 + v16 + v18 + v17 < pWindow->uFrameWidth )
+					if(i>possible_transition_point)
+						string_pixel_Width+=pFont->pMetrics[c].uLeftSpacing;
+					string_pixel_Width+=pFont->pMetrics[c].uWidth;
+					if (i<uInStrLen)
+						string_pixel_Width+=pFont->pMetrics[c].uRightSpacing;
+					}
+				else
+					{
+					temp_string[possible_transition_point]='\n';
+					string_pixel_Width=start_pixel_offset;
+					if (i>possible_transition_point)
 						{
-						if ( v37 > v36 )
-							v8 += v18;
-						v8 += v17;
-						if ( v37 < (signed int)v33 )
-							v8 += v16;
-						v6 = v35;
-						}
-					else
-						{
-						v19 = v36;
-						v8 = v34;
-						v22 = v36 > v37;
-						v20 = v36 == v37;
-						v21 = v36 - v37 < 0;
-						v6 = v35;
-						pTmpBuf3[v36] = 10;
-						v23 = v19;
-						if ( (unsigned __int8)(v21 ^ v22) | v20 )
+						for(int j=possible_transition_point;j<i; ++j ) 
 							{
-							do
+							c=temp_string[j];
+							if (pFont->IsCharValid(c))
 								{
-								v24 = pTmpBuf3[v23];
-								if ( v24 >= v6->cFirstChar && v24 <= v6->cLastChar || v24 == 12 || v24 == 13 || v24 == 9 || v24 == 10 )
-									{
-									if ( v23 > v19 )
-										v8 += v6->pMetrics[v24].uLeftSpacing;
-									v8 += *((int *)&v6->cFirstChar + 3 * v24 + 9);
-									if ( v23 < v37 )
-										v8 += v6->pMetrics[v24].uRightSpacing;
-									}
-								++v23;
+								if(j>possible_transition_point)
+									string_pixel_Width+=pFont->pMetrics[c].uLeftSpacing;
+								string_pixel_Width+=pFont->pMetrics[c].uWidth;
+								if (j<i)
+									string_pixel_Width+=pFont->pMetrics[c].uRightSpacing;
+
 								}
-								while ( v23 <= v37 );
-							}
+							}  
 						}
-					goto LABEL_34;
 					}
-				v8 += v12->uWidth;
-				goto LABEL_41;
 				}
-			if ( !a5 )
-				return (char *)v30;
-LABEL_34:
-			v9 = v37++ + 1;
-			if ( v37 >= (signed int)v33 )
-				return pTmpBuf3;
 			}
-		v8 = v34;
-LABEL_41:
-		v36 = v9;
-		goto LABEL_34;
 		}
-	return pTmpBuf3;
+	return &temp_string[0];
 	}
--- a/GUIFont.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/GUIFont.h	Sat Feb 16 08:42:58 2013 +0600
@@ -17,7 +17,7 @@
 {
 	
 //----- (0044C4DE) --------------------------------------------------------
-  bool IsCharValid(char c) {	return (c >= cFirstChar) && (c <= cLastChar) || (c == '\f') || (c == '\r') || (c == '\t') || (c == '\n');}
+  bool IsCharValid(unsigned char c) {	return (c >= cFirstChar) && (c <= cLastChar) || (c == '\f') || (c == '\r') || (c == '\t') || (c == '\n');}
   int AlignText_Center(unsigned int uCenterX, const char *pString);
   int GetLineWidth(const char *pString);
   int CalcTextHeight(const char *pString, struct GUIWindow *pWindow, int a4, int a5);
--- a/GUIWindow.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/GUIWindow.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -20,6 +20,7 @@
 #include "FactionTable.h"
 #include "StorylineTextTable.h"
 #include "Events2D.h"
+#include "texts.h"
 #include "Autonotes.h"
 
 
@@ -240,8 +241,8 @@
     v29 = pSpellStats->pInfos[v28].pShortName;
   else
     v29 = pGlobalTXT_LocalizationStrings[153];
-  sprintf(pTmpBuf2, "%s: %s", pGlobalTXT_LocalizationStrings[172], v29);
-  strcat(pTmpBuf, pTmpBuf2);
+  sprintf((char*)pTmpBuf2, "%s: %s", (char*)pGlobalTXT_LocalizationStrings[172], v29);
+  strcat((char*)pTmpBuf, (char*)pTmpBuf2);
   DrawText(pFontArrus, 120, 22, 0, pTmpBuf, 0, 0, 0);
 
   uFramesetIDa = 0;
@@ -1321,7 +1322,8 @@
 
 
 //----- (0044D406) --------------------------------------------------------
-char *GUIWindow::DrawTitleText(GUIFont *a2, unsigned int uHorizontalMargin, unsigned int uVerticalMargin, unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing)
+char *GUIWindow::DrawTitleText(GUIFont *a2, unsigned int uHorizontalMargin, unsigned int uVerticalMargin, 
+	        unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing)
 {
   GUIWindow *pWindow; // esi@1
   unsigned int v8; // ebx@1
@@ -1698,18 +1700,20 @@
 }
 
 //----- (0041D12F) --------------------------------------------------------
-GUIButton *GUIWindow::CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, int a6, int a7, unsigned int uControlID, unsigned int uControlParam, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...)
+GUIButton *GUIWindow::CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, 
+	int a6, int a7, unsigned int uControlID, unsigned int uControlParam, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...)
 {
   GUIButton *pButton; // esi@1
   unsigned int v13; // eax@1
   unsigned int v14; // ebx@4
   unsigned int v15; // eax@4
-  unsigned int pTextureNum; // ebx@4
+  unsigned int TextureNum=0; // ebx@4
   unsigned int v17; // eax@4
   Texture *v18; // eax@4
   Texture **v19; // ecx@5
   Texture **v20; // edx@5
   GUIButton *v21; // eax@7
+  va_list texturs_ptr;
 
   pButton = (GUIButton *)pAllocator->AllocNamedChunk(0, 0xBCu, "BUTTON");
   pButton->pParent = this;
@@ -1723,7 +1727,6 @@
   v14 = pButton->uX;
   pButton->uButtonType = a6;
   v15 = v14 + uWidth - 1;
-  pTextureNum = 0;
   pButton->uZ = v15;
   v17 = pButton->uY;
   pButton->field_2C = 0;
@@ -1734,25 +1737,16 @@
   pButton->uHotkey = uHotkey;
   strlen(pName);
   strcpy(pButton->pButtonName, pName);
-  v18 = pTextures;
-  if ( pTextures )
+  va_start(texturs_ptr, pName);
+  while  (NULL!=(pTextures=va_arg(texturs_ptr, Texture *)))
   {
-    v19 = &pTextures;
-    v20 = pButton->pTextures;
-    do
-    {
-      ++v19;
-      *v20 = v18;
-      ++pTextureNum;
-      ++v20;
-      v18 = *v19;
-    }
-    while ( *v19 );
+	pButton->pTextures[TextureNum]=pTextures;
+	++TextureNum;	
   }
-  pButton->uNumTextures = pTextureNum;
-  v21 = this->pControlsTail;
-  if ( v21 )
-    v21->pNext = pButton;
+  va_end(texturs_ptr);
+  pButton->uNumTextures = TextureNum;
+  if ( this->pControlsTail )
+    this->pControlsTail->pNext = pButton;
   else
     this->pControlsHead = pButton;
   pButton->pPrev = this->pControlsTail;
@@ -1979,7 +1973,7 @@
         if ( v26 + 1 == v25 && uHouse_ExitPic )
         {
           v30 = pMapStats->pInfos[uHouse_ExitPic].pName;
-          v29 = pGlobalTXT_LocalizationStrings[411];//  ^Pv[%s]
+          v29 = (char*)pGlobalTXT_LocalizationStrings[411];//  ^Pv[%s]
         }
         else
         {
@@ -1989,7 +1983,7 @@
             //v27 = (char *)p2DEvents_minus1_::08[13 * a4];
             v27 = (char *)p2DEvents[pButton - 1].pProprieterName;
           v30 = v27;
-          v29 = pGlobalTXT_LocalizationStrings[435];//  ^Pt[%s]
+          v29 = (char*)pGlobalTXT_LocalizationStrings[435];//  ^Pt[%s]
         }
         sprintf(&byte_591180[100 * v26], v29, v30);
         array_5913D8[v26 + 7] = (NPCData *)pWindow->CreateButton(*(&pNPCPortraits_x + v26 + 6 * uNumDialogueNPCPortraits - 6),
--- a/GUIWindow.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/GUIWindow.h	Sat Feb 16 08:42:58 2013 +0600
@@ -67,7 +67,7 @@
   WINDOW_59 = 0x59,
   WINDOW_5A = 0x5A,
   WINDOW_5B = 0x5B,
-  WINDOW_5C = 0x5C,
+  WINDOW_VoiceSwitcherButton = 0x5C,
   WINDOW_5D = 0x5D,
   WINDOW_5E = 0x5E,
   WINDOW_5F = 0x5F,
@@ -94,11 +94,13 @@
 #pragma pack(push, 1)
 struct GUIWindow
 {
-  GUIButton *CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, int a6, int a7, unsigned int uControlID, unsigned int uControlParam, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...);
+  GUIButton *CreateButton(unsigned int uX, unsigned int uY, unsigned int uWidth, unsigned int uHeight, int a6, int a7, 
+	         unsigned int uControlID, unsigned int uControlParam, unsigned __int8 uHotkey, const char *pName, Texture *pTextures, ...);
   void DrawFlashingInputCursor(signed int a3, int a4, struct GUIFont *a2);
   int DrawTextInRect(GUIFont *a2, unsigned int uX, unsigned int uY, unsigned int uColor, const char *Str1, int Source, int a8);
   char DrawText(GUIFont *a2, signed int uX, int uY, unsigned int uFontColor, const char *Str, int a7, int a8, unsigned int uFontShadowColor);
-  char *DrawTitleText(GUIFont *a2, unsigned int uHorizontalMargin, unsigned int uVerticalMargin, unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing);
+  char *DrawTitleText(GUIFont *a2, unsigned int uHorizontalMargin, unsigned int uVerticalMargin, 
+	            unsigned __int16 uDefaultColor, const char *pInString, unsigned int uLineSpacing);
   char *_4B1854(__int64 a2);
   void _4B3157();
   GUIButton *OpenSpellBook();
@@ -207,7 +209,7 @@
   UIMSG_73 = 0x73,
   UIMSG_74 = 0x74,
   UIMSG_75 = 0x75,
-  UIMSG_PlayerCreationSelectQuality = 0x76,
+  UIMSG_PlayerCreation_SelectAttribute = 0x76,
   UIMSG_InventoryLeftClick = 0x78,
   UIMSG_SkillUp = 0x79,
   UIMSG_7A = 0x7A,
@@ -227,8 +229,8 @@
   UIMSG_8D = 0x8D,
   UIMSG_8E = 0x8E,
   UIMSG_8F = 0x8F,
-  UIMSG_PlayerCreationVoiceBack = 0x90,
-  UIMSG_PlayerCreationVoiceForward = 0x91,
+  UIMSG_PlayerCreation_VoicePrev = 0x90,
+  UIMSG_PlayerCreation_VoiceNext = 0x91,
   UIMSG_92 = 0x92,
   UIMSG_StartNPCDialogue = 0xA1,
   UIMSG_ArrowUp = 0xA2,
@@ -240,8 +242,8 @@
   UIMSG_A8 = 0xA8,
   UIMSG_A9 = 0xA9,
   UIMSG_AA = 0xAA,
-  UIMSG_SelectFacePlayerBack = 0xAB,
-  UIMSG_SelectFacePlayerForward = 0xAC,
+  UIMSG_PlayerCreation_FacePrev = 0xAB,
+  UIMSG_PlayerCreation_FaceNext = 0xAC,
   UIMSG_AD = 0xAD,
   UIMSG_AE = 0xAE,
   UIMSG_AF = 0xAF,
--- a/Game.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Game.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -21,6 +21,7 @@
 #include "Bink_Smacker.h"
 #include "Events.h"
 #include "Arcomage.h"
+#include "texts.h"
 
 //#include "MM7.h"
 
@@ -470,7 +471,7 @@
       if ( v11 )
       {
         v12 = rand();
-        pPlayers[v17[v12 % v11]]->PlaySound(99, 0);
+        pPlayers[v17[v12 % v11]]->PlaySound(SPEECH_99, 0);
       }
       ShowStatusBarString(pGlobalTXT_LocalizationStrings[524], 2u);// "Once again you've cheated death!.." "   ! "
       uGameState = 0;
--- a/GameUIs.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/GameUIs.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -7,6 +7,7 @@
 #include "LOD.h"
 #include "SaveLoad.h"
 #include "Render.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
--- a/Items.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Items.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -9,7 +9,7 @@
 #include "Party.h"
 #include "FactionTable.h"
 #include "StorylineTextTable.h"
-
+#include "texts.h"
 #include "mm7_data.h"
 
 
--- a/LayingItem.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/LayingItem.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -13,7 +13,7 @@
 
 
 //----- (00438E35) --------------------------------------------------------
-__int16 LayingItem::_438E35()
+void LayingItem::_438E35()
 {
   LayingItem *v1; // edi@1
   MapInfo *pMapInfo; // esi@1
@@ -85,9 +85,9 @@
         v18 = 2;
         break;
       default:
-        LOWORD(v10) = v1->uItemType - 814;
+        //LOWORD(v10) = v1->uItemType - 814;
         if ( v1->uItemType != 814 )
-          return v10;
+          return;
         v18 = 8;
         break;
     }
@@ -95,14 +95,13 @@
     do
     {
       if ( (*v12)->CanAct() && (v13 = (*v12)->GetPerception() + 20, rand() % v13 > 20) )
-        LOWORD(v10) = (*v12)->PlaySound(6, 0);
+        (*v12)->PlaySound(SPEECH_6, 0);
       else
-        LOWORD(v10) = (*v12)->ReceiveDamage(v11, v18);
+        (*v12)->ReceiveDamage(v11, v18);
       ++v12;
     }
     while ( (signed int)v12 <= (signed int)&pPlayers[4] );
   }
-  return v10;
 }
 
 
--- a/LayingItem.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/LayingItem.h	Sat Feb 16 08:42:58 2013 +0600
@@ -10,7 +10,7 @@
   LayingItem();
   int Create(int yaw, int pitch, int a4, int a5);
   void _46BEF1_apply_spells();
-  __int16 _438E35();
+  void _438E35();
 
   static void UpdateObject_fn0_BLV(unsigned int uLayingItemID);
   static void UpdateObject_fn0_ODM(unsigned int uLayingItemID);
--- a/MM7.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/MM7.h	Sat Feb 16 08:42:58 2013 +0600
@@ -225,15 +225,6 @@
 
 
 
-/*  301 */
-enum PlayerSpeech
-{
-  SPEECH_Yell = 0x41,
-};
-
-
-
-
 
 
 
--- a/Monsters.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Monsters.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -6,7 +6,7 @@
 #include "FrameTableInc.h"
 #include "Allocator.h"
 #include "LOD.h"
-
+#include "texts.h"
 #include "mm7_data.h"
 
 
--- a/NPC.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/NPC.h	Sat Feb 16 08:42:58 2013 +0600
@@ -19,7 +19,7 @@
 {
   char *pName;
   unsigned int uPortraitID;
-  unsigned int uFlags;
+  unsigned int uFlags;         // & 0x80    no greeting on dialogue start
   int fame;
   int rep;
   int house;
--- a/Outdoor.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Outdoor.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -2009,8 +2009,7 @@
       header.pMagic[2] != 'i' ||
       header.pMagic[3] != 'i' )
   {
-    MessageBoxW(nullptr, L"Can't load file!",
-                L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:746", 0);
+    MessageBoxW(nullptr, L"Can't load file!", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\Odmap.cpp:746", 0);
     Str2 = (char *)1;
   }
   //v74 = 0;
--- a/Party.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Party.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -12,6 +12,7 @@
 #include "Viewport.h"
 #include "Actor.h"
 #include "GUIWindow.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
--- a/Player.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Player.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -1,5 +1,6 @@
+#include <assert.h>
+
 #include "OSAPI.h"
-
 #include "Player.h"
 #include "PlayerFrameTable.h"
 #include "Texture.h"
@@ -20,6 +21,7 @@
 #include "StorylineTextTable.h"
 #include "Autonotes.h"
 #include "Awards.h"
+#include "texts.h"
 #include "mm7_data.h"
 
 
@@ -569,43 +571,44 @@
 }
 
 //----- (004948B1) --------------------------------------------------------
-__int16 Player::PlaySound(int a2, int a3)
-{
-  Player *pPlayer; // edi@1
-  int v4; // eax@4
+void Player::PlaySound(PlayerSpeech speech, int a3)
+{
+  //Player *pPlayer; // edi@1
+  //int v4; // eax@4
   signed int v5; // esi@4
-  short *v6; // ebx@4
+  char *v6; // ebx@4
   signed int v7; // ecx@5
   unsigned __int8 v8; // al@6
   int v9; // eax@10
-  unsigned int pVoiceID; // ecx@10
+  //unsigned int pVoiceID; // ecx@10
   int v11; // esi@10
   signed int v12; // eax@11
   signed int v13; // esi@12
   int v14; // eax@12
-  int v15; // eax@17
+  //int v15; // eax@17
   int pExpression; // ebx@17
   signed int v17; // ecx@19
   char *pSoundID; // edi@20
   int v20[5]; // [sp+Ch] [bp-1Ch]@7
-  Player *pPlayer2; // [sp+20h] [bp-8h]@1
+  //Player *pPlayer2; // [sp+20h] [bp-8h]@1
   int pPlayerNum; // [sp+24h] [bp-4h]@1
   int pSoundId; // [sp+30h] [bp+8h]@4
 
-  pPlayer = this;
-  pPlayer2 = this;
+  //pPlayer = this;
+  //pPlayer2 = this;
+
   pPlayerNum = 1;
-  do
-  {
-    if ( this == pPlayers[pPlayerNum] )
+  for (int i = 0; i < 4; ++i)
+    if (&pParty->pPlayers[i] == this)
+    {
+      pPlayerNum = i + 1;
       break;
-    ++pPlayerNum;
-  }
-  while ( pPlayerNum <= 4 );
-  v4 = a2;//102
+    }
+
+  //v4 = a2;//102
   v5 = 0;
   pSoundId = 0;
-  v6 = &SoundSetAction[8 * v4];//byte_4ED280 &byte_4ED3D8[4 * v4] ???
+  v6 = (char *)&SoundSetAction[4 * speech];//byte_4ED280 &byte_4ED3D8[4 * v4] ???
   if ( uVoicesVolumeMultiplier )
   {
     v7 = 0;
@@ -620,15 +623,15 @@
     if ( v5 )
     {
       v9 = rand();
-      pVoiceID = pPlayer->uVoiceID;
+      //pVoiceID = uVoiceID;
       v11 = v20[v9 % v5];
-      if ( LOBYTE((&(&dlhu_texnames_by_face[19])[25 * v11 + 3])[pVoiceID]) )
-      {
-        pSoundId = rand() % SLOBYTE((&(&dlhu_texnames_by_face[19])[25 * v11 + 3])[pVoiceID])
-            + 2 * (v11 + 50 * pPlayer2->uVoiceID)
+      if ( LOBYTE((&(&dlhu_texnames_by_face[19])[25 * v11 + 3])[uVoiceID]) )
+      {
+        pSoundId = rand() % SLOBYTE((&(&dlhu_texnames_by_face[19])[25 * v11 + 3])[uVoiceID])
+            + 2 * (v11 + 50 * uVoiceID)
             + 4998;
         v12 = 8 * pPlayerNum + 312;
-        LOBYTE(v12) = v12 | 4;
+        LOBYTE(v12) = v12 | OBJECT_Player;
         pAudioPlayer->PlaySound((SoundID)pSoundId, v12, 0, -1, 0, 0, (pSoundVolumeLevels[uVoicesVolumeMultiplier] * 128.0), 0);
       }
     }
@@ -644,9 +647,8 @@
   while ( -3 - (signed int)v6 + v14 < 5 );
   if ( v13 )
   {
-    v15 = rand();
     pPlayerNum = 0;
-    pExpression = v20[v15 % v13];
+    pExpression = v20[rand() % v13];
     if ( pExpression == 21 && pSoundId )
     {
       v17 = 0;
@@ -669,26 +671,27 @@
       if ( pSoundList->pSounds[v17].pSoundData[0] )
         pPlayerNum = (sLastTrackLengthMS << 7) / 1000;
     }
-    LOWORD(v14) = pPlayer2->PlayEmotion((CHARACTER_EXPRESSION_ID)pExpression, pPlayerNum);
-  }
-  return v14;
+    /*LOWORD(v14) = */PlayEmotion((CHARACTER_EXPRESSION_ID)pExpression, pPlayerNum);
+  }
+  //return v14;
 }
 // 4948B1: using guessed type int var_1C[5];
 
 //----- (00494A25) --------------------------------------------------------
-__int16 Player::PlayEmotion(CHARACTER_EXPRESSION_ID expr, int a3)
-{
-  signed int v3; // eax@1
-  CHARACTER_EXPRESSION_ID v4; // dx@1
+void Player::PlayEmotion(CHARACTER_EXPRESSION_ID new_expression, int a3)
+{
+  //signed int v3; // eax@1
+  //CHARACTER_EXPRESSION_ID v4; // dx@1
   signed int v5; // edi@15
   PlayerFrame *v6; // esi@17
   signed int v7; // eax@20
 
-  LOWORD(v3) = this->expression;
-  v4 = expr;
-  if ( (short)v3 != 4 && (short)v3 != 12 || expr != 58 )
-  {
-    v3 = (unsigned __int16)v3;
+  //LOWORD(v3) = this->expression;
+  //v4 = expr;
+  if (expression != CHARACTER_EXPRESSION_SLEEP &&
+      expression != CHARACTER_EXPRESSION_PERTIFIED || new_expression != CHARACTER_EXPRESSION_58)
+  {
+    int v3 = (unsigned)expression;
     if ( (signed int)(unsigned __int16)v3 >= 2 )
     {
       if ( v3 <= 7 )
@@ -697,19 +700,19 @@
       {
         if ( v3 > 11 )
         {
-          if ( v3 == 12 || v3 > 97 && v3 <= 99 )
-            return v3;
+          if ( v3 == CHARACTER_EXPRESSION_PERTIFIED || v3 > 97 && v3 <= 99 )
+            return;
           goto LABEL_15;
         }
 LABEL_12:
-        if ( expr != 34 && expr != 35 && expr != 36 )
-          return v3;
+        if (new_expression != CHARACTER_EXPRESSION_34 && new_expression != CHARACTER_EXPRESSION_35 && new_expression != CHARACTER_EXPRESSION_36)
+          return;
         goto LABEL_15;
       }
     }
   }
 LABEL_15:
-  LOWORD(v3) = a3;
+  //LOWORD(v3) = a3;
   v5 = 0;
   this->uExpressionTimeLength = a3;
   this->uExpressionTimePassed = 0;
@@ -723,7 +726,7 @@
     else
     {
       v6 = pPlayerFrameTable->pFrames;
-      while ( v6->expression != expr )
+      while ( v6->expression != new_expression )
       {
         ++v5;
         ++v6;
@@ -732,13 +735,11 @@
       }
       v7 = v5;
     }
-    v4 = expr;
-    LOWORD(v3) = 8 * pPlayerFrameTable->pFrames[v3].uAnimLength;
-    this->uExpressionTimeLength = v3;
-  }
-  this->expression = v4;
+    //v4 = expr;
+    this->uExpressionTimeLength = 8 * pPlayerFrameTable->pFrames[a3].uAnimLength;
+  }
+  expression = new_expression;
   viewparams->bRedrawGameUI = 1;
-  return v3;
 }
 
 //----- (0049327B) --------------------------------------------------------
@@ -1237,7 +1238,7 @@
           goto LABEL_76;
         goto LABEL_82;
       case 0xDu:
-        v3->PlaySound(32, 0);
+        v3->PlaySound(SPEECH_32, 0);
         v13 = (char *)&v3->sHealth;
         goto LABEL_70;
       case 0xEu:
@@ -1268,9 +1269,9 @@
           goto LABEL_76;
         }
         v28 = 0;
-        v25 = 35;
+        v25 = SPEECH_35;
 LABEL_67:
-        v3->PlaySound(v25, v28);
+        v3->PlaySound((PlayerSpeech)v25, v28);
         if ( v3->sHealth > 0 )
           v3->sHealth = 0;
         v13 = (char *)&v3->sMana;
@@ -1295,7 +1296,7 @@
         if ( v30 == 2 )
         {
           if ( v31 == 1 )
-            pPlayers[v21]->PlaySound(107, 0);
+            pPlayers[v21]->PlaySound(SPEECH_107, 0);
         }
         result = 1;
         break;
@@ -1345,11 +1346,11 @@
         }
         v26 = 0;
         v20 = (v18 != 0) + 23;
-        v23 = 99;
+        v23 = SPEECH_99;
         v3->uFace = v20;
         v3->uVoiceID = v20;
 LABEL_81:
-        v3->PlaySound(v23, v26);
+        v3->PlaySound((PlayerSpeech)v23, v26);
         goto LABEL_82;
       default:
         goto LABEL_82;
@@ -1462,7 +1463,7 @@
   if ( v12 == -1 )
   {
     if ( uActiveCharacter )
-      pPlayers[uActiveCharacter]->PlaySound(15, 0);
+      pPlayers[uActiveCharacter]->PlaySound(SPEECH_15, 0);
     result = 0;
   }
   else
@@ -2332,10 +2333,10 @@
   std::string v12; // [sp-18h] [bp-40h]@9
   const char *v13; // [sp-8h] [bp-30h]@9
   int v14; // [sp-4h] [bp-2Ch]@9
-  int v15; // [sp+Ch] [bp-1Ch]@3
-  int v16; // [sp+10h] [bp-18h]@3
-  int v17; // [sp+14h] [bp-14h]@3
-  int v18; // [sp+18h] [bp-10h]@3
+  int v15[4] = {0, 1, 2, 3}; // [sp+Ch] [bp-1Ch]@3
+  //int v16; // [sp+10h] [bp-18h]@3
+  //int v17; // [sp+14h] [bp-14h]@3
+  //int v18; // [sp+18h] [bp-10h]@3
   Player *v19; // [sp+1Ch] [bp-Ch]@9
   Party *v20; // [sp+20h] [bp-8h]@1
   int v21; // [sp+24h] [bp-4h]@10
@@ -2346,17 +2347,17 @@
   v2 = pItem->uItemID;
   if ( !BYTE2(pItemsTable->pItems[v2 + 1].uItemID) )
     pItem->uAttributes |= 1u;
-  v15 = 0;
-  v16 = 1;
-  v18 = 3;
-  v17 = 2;
+  ///v15 = 0;
+  //v16 = 1;
+  //v18 = 3;
+  //v17 = 2;
   if ( uActiveCharacter )
   {
     v3 = uActiveCharacter - 1;
     v4 = 0;
     do
     {
-      *(&v15 + v4++) = v3++;
+      v15[v4++] = v3++;
       if ( (signed int)v3 >= 4 )
         v3 = 0;
     }
@@ -2366,13 +2367,13 @@
   if ( v5 )
   {
     v6 = pIcons_LOD->LoadTexture(v5, TEXTURE_16BIT_PALETTE);
-    v7 = (Texture *)(v6 != -1 ? (int)&pIcons_LOD->pTextures[v6] : 0);
+    v7 = (Texture *)(v6 != -1 ? &pIcons_LOD->pTextures[v6] : 0);
     v21 = areWeLoadingTexture;
     v8 = 0;
     while ( 1 )
     {
-      v9 = &v20->pPlayers[*(&v15 + v8)];
-      v19 = &v20->pPlayers[*(&v15 + v8)];
+      v9 = &v20->pPlayers[v15[v8]];
+      v19 = &v20->pPlayers[v15[v8]];
       v10 = v19->AddItem(0xFFFFFFFFu, pItem->uItemID);
       if ( v10 )
         break;
@@ -2390,7 +2391,7 @@
     memcpy(&v9->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * v10 + 5], pItem, 0x24u);
     pItem->Reset();
     pAudioPlayer->PlaySound(SOUND_GoldReceived, 0, 0, -1, 0, 0, 0, 0);
-    v19->PlaySound(60, 0);
+    v19->PlaySound(SPEECH_60, 0);
     if ( !v21 )
     {
       v7->Release();
@@ -3666,13 +3667,13 @@
   unsigned int v7; // eax@8
   char *v8; // ecx@9
   int v9; // eax@9
-  signed int typea; // [sp+14h] [bp+8h]@1
+  //signed int typea; // [sp+14h] [bp+8h]@1
 
   v3 = this;
   this->pConditions[2] = 0i64;
   v4 = CalculateIncommingDamage(resistance, type);
   v3->sHealth -= v4;
-  typea = v4;
+  //typea = v4;
   v5 = v3->sHealth;
   v6 = v5 < -10;
   LOBYTE(v6) = v5 <= -10;
@@ -3705,9 +3706,9 @@
       }
     }
   }
-  if ( typea && CanAct() )
-    PlaySound(24, 0);
-  return typea;
+  if ( v4 && CanAct() )
+    PlaySound(SPEECH_24, 0);
+  return v4;
 }
 
 //----- (0048DCF6) --------------------------------------------------------
@@ -4018,11 +4019,11 @@
         v26 = v48;
         if ( *(char *)(v48 + 21) & 2 )
           goto LABEL_84;
-        PlaySound(40, 0);
+        PlaySound(SPEECH_40, 0);
         *(int *)(v26 + 20) |= 2u;
         goto LABEL_79;
       case 20:
-        PlaySound(40, 0);
+        PlaySound(SPEECH_40, 0);
         v27 = pActor->array_000234;
         if ( pActor->array_000234[0].uItemID )
         {
@@ -4044,11 +4045,11 @@
         v30 = (SoundID)47;
         goto LABEL_83;
       case 21:
-        PlaySound(42, 0);
+        PlaySound(SPEECH_42, 0);
         ++v5->sAgeModifier;
         goto LABEL_82;
       case 22:
-        PlaySound(41, 0);
+        PlaySound(SPEECH_41, 0);
         v5->sMana = 0;
 LABEL_82:
         v42 = 0;
@@ -6407,7 +6408,7 @@
 }
 
 //----- (00490141) --------------------------------------------------------
-int Player::GetSexByVoice()
+PLAYER_SEX Player::GetSexByVoice()
 {
   signed int result; // eax@1
 
@@ -6426,8 +6427,8 @@
     case 0x11u:
     case 0x14u:
     case 0x17u:
-      result = 0;
-      break;
+      return SEX_MALE;
+
     case 4u:
     case 5u:
     case 6u:
@@ -6440,12 +6441,11 @@
     case 0x13u:
     case 0x15u:
     case 0x18u:
-      result = 1;
-      break;
+      return SEX_FEMALE;
+
     default:
-      return result;
-  }
-  return result;
+      assert(false);
+  }
 }
 
 //----- (00490188) --------------------------------------------------------
@@ -7006,7 +7006,7 @@
         pParty->pPlayers[a2-1].Heal(v69);//((Player *)&stru_AA1058[3].pSounds[6972 * a2 + 40552])->Heal(v69);
       }
 LABEL_112:
-      v3->PlaySound(36, 0);
+      v3->PlaySound(SPEECH_36, 0);
       goto LABEL_173;
     }
 LABEL_172:
@@ -7448,7 +7448,7 @@
               ShowStatusBarString(pTmpBuf, 2u);
               pMouse->RemoveHoldingItem();
               pGame->pStru6Instance->SetPlayerBuffAnim(0x97u, a2 - 1);
-              v3->PlaySound(93, 0);
+              v3->PlaySound(SPEECH_93, 0);
               pAudioPlayer->PlaySound((SoundID)(SOUND_Bell|0x2), 0, 0, -1, 0, 0, 0, 0);
               if ( pParty->uDaysPlayed == 6 || pParty->uDaysPlayed == 20 )
               {
@@ -7551,9 +7551,9 @@
       {
         sub_467F48(pParty->pPickedItem.uItemID);
         v65 = 0;
-        v56 = 37;
+        v56 = SPEECH_37;
 LABEL_67:
-        v3->PlaySound(v56, v65);
+        v3->PlaySound((PlayerSpeech)v56, v65);
         return;
       }
 LABEL_89:
@@ -7623,7 +7623,7 @@
               goto LABEL_67;
             }
             *v72 = 1;
-            v3->PlaySound(21, 0);
+            v3->PlaySound(SPEECH_21, 0);
             v73 = 0;
 LABEL_173:
             v36 = pItemsTable->pItems[pParty->pPickedItem.uItemID].uEquipType;
@@ -8434,7 +8434,7 @@
     {
       v20 = pPlayers[v3 + 1];
       v30 = 1;
-      v20->PlaySound(96, 0);
+      v20->PlaySound(SPEECH_96, 0);
 	  v21 = pAutonoteTxt[a3-1].eType;// dword_72371C[2 * a3];
       bFlashAutonotesBook = 1;
       dword_506568 = v21;
@@ -8505,7 +8505,7 @@
             v12 = pPlayers[v3 + 1];
             v30 = 1;
             v31 = 1;
-            v12->PlaySound(96, 0);
+            v12->PlaySound(SPEECH_96, 0);
           }
           v13 = v4->field_152;
           goto LABEL_51;
@@ -8521,7 +8521,7 @@
             bFlashQuestBook = 1;
             v30 = 1;
             v31 = 1;
-            v14->PlaySound(93, 0);
+            v14->PlaySound(SPEECH_93, 0);
           }
           v13 = (char *)pParty->_award_bits;
 LABEL_51:
@@ -8621,11 +8621,11 @@
     this->uMightBonus = (unsigned __int8)a3;
 LABEL_111:
     v28 = 0;
-    v26 = 91;
+    v26 = SPEECH_91;
 LABEL_112:
     v19 = pPlayers[v3 + 1];
     v31 = 1;
-    v19->PlaySound(v26, v28);
+    v19->PlaySound((PlayerSpeech)v26, v28);
     goto LABEL_169;
   }
   if ( var <= VAR_FireResistanceBonus )
@@ -8934,7 +8934,7 @@
                 v14 = pPlayers[uPlayerIdx + 1];
                 v34 = 1;
                 v3 = 1;
-                v14->PlaySound(96, 0);
+                v14->PlaySound(SPEECH_96, 0);
               }
               v15 = v4->field_152;
               goto LABEL_44;
@@ -8954,7 +8954,7 @@
                 bFlashQuestBook = 1;
                 v34 = 1;
                 v3 = 1;
-                v17->PlaySound(93, 0);
+                v17->PlaySound(SPEECH_93, 0);
               }
               v15 = (char *)pParty->_award_bits;
 LABEL_44:
@@ -9105,10 +9105,10 @@
         if ( *v19 > 255 )
           *v19 = 255;
         v31 = 0;
-        v29 = 91;
+        v29 = SPEECH_91;
 LABEL_116:
         v3 = 1;
-        pPlayers[uPlayerIdx + 1]->PlaySound(v29, v31);
+        pPlayers[uPlayerIdx + 1]->PlaySound((PlayerSpeech)v29, v31);
         goto _play_anim_and_maybe_sound;
       }
       if ( var <= VAR_DisarmTrapSkill )
@@ -9217,7 +9217,7 @@
     {
       v23 = pPlayers[uPlayerIdx + 1];
       v34 = 1;
-      v23->PlaySound(96, 0);
+      v23->PlaySound(SPEECH_96, 0);
 	  v24 = pAutonoteTxt[val-1].eType;//dword_72371C[2 * val];
       bFlashAutonotesBook = 1;
       dword_506568 = v24;
@@ -9565,7 +9565,7 @@
           goto LABEL_17;
         case VAR_QBits_QuestsDone:
           _449B7E_toggle_bit(pParty->_award_bits, (__int16)a3, 0);
-          pPlayers[v4 + 1]->PlaySound(96, 0);
+          pPlayers[v4 + 1]->PlaySound(SPEECH_96, 0);
           return;
         case VAR_PlayerItemInHands:
           v15 = (char *)this->pInventoryIndices;
@@ -9688,9 +9688,9 @@
           this->sResMagicBonus -= (signed __int16)a3;
 LABEL_72:
           v25 = 0;
-          v23 = 91;
+          v23 = SPEECH_91;
 LABEL_73:
-          pPlayers[v4 + 1]->PlaySound(v23, v25);
+          pPlayers[v4 + 1]->PlaySound((PlayerSpeech)v23, v25);
           goto LABEL_17;
         case VAR_FixedFood:
           Party::TakeFood((unsigned int)a3);
--- a/Player.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/Player.h	Sat Feb 16 08:42:58 2013 +0600
@@ -6,6 +6,124 @@
 
 
 
+
+
+/*  301 */
+enum PlayerSpeech
+{
+  SPEECH_1 = 1,
+  SPEECH_2 = 2,
+  SPEECH_3 = 3,
+  SPEECH_4 = 4,
+  SPEECH_5 = 5,
+  SPEECH_6 = 6,
+  SPEECH_7 = 7,
+  SPEECH_8 = 8,
+  SPEECH_9 = 9,
+  SPEECH_10 = 10,
+  SPEECH_11 = 11,
+  SPEECH_12 = 12,
+  SPEECH_14 = 14,
+  SPEECH_15 = 15,
+  SPEECH_16 = 16,
+  SPEECH_17 = 17,
+  SPEECH_18 = 18,
+  SPEECH_19 = 19,
+  SPEECH_20 = 20,
+  SPEECH_21 = 21,
+  SPEECH_GoodDay = 22,
+  SPEECH_GoodEvening = 23,
+  SPEECH_24 = 24,
+  SPEECH_25 = 25,
+  SPEECH_26 = 26,
+  SPEECH_27 = 27,
+  SPEECH_28 = 28,
+  SPEECH_29 = 29,
+  SPEECH_30 = 30,
+  SPEECH_31 = 31,
+  SPEECH_32 = 32,
+  SPEECH_33 = 33,
+  SPEECH_34 = 34,
+  SPEECH_35 = 35,
+  SPEECH_36 = 36,
+  SPEECH_37 = 37,
+  SPEECH_38 = 38,
+  SPEECH_39 = 39,
+  SPEECH_40 = 40,
+  SPEECH_41 = 41,
+  SPEECH_42 = 42,
+  SPEECH_43 = 43,
+  SPEECH_44 = 44,
+  SPEECH_45 = 45,
+  SPEECH_46 = 46,
+  SPEECH_47 = 47,
+  SPEECH_48 = 48,
+  SPEECH_49 = 49,
+  SPEECH_50 = 50,
+  SPEECH_51 = 51,
+  SPEECH_52 = 52,
+  SPEECH_53 = 53,
+  SPEECH_54 = 54,
+  SPEECH_55 = 55,
+  SPEECH_56 = 56,
+  SPEECH_57 = 57,
+  SPEECH_58 = 58,
+  SPEECH_59 = 59,
+  SPEECH_60 = 60,
+  SPEECH_61 = 61,
+  SPEECH_62 = 62,
+  SPEECH_63 = 63,
+  SPEECH_64 = 64,
+  SPEECH_Yell = 65,
+  SPEECH_66 = 66,
+  SPEECH_67 = 67,
+  SPEECH_68 = 68,
+  SPEECH_69 = 69,
+  SPEECH_70 = 70,
+  SPEECH_71 = 71,
+  SPEECH_72 = 72,
+  SPEECH_73 = 73,
+  SPEECH_74 = 74,
+  SPEECH_75 = 75,
+  SPEECH_76 = 76,
+  SPEECH_77 = 77,
+  SPEECH_78 = 78,
+  SPEECH_79 = 79,
+  SPEECH_80 = 80,
+  SPEECH_81 = 81,
+  SPEECH_82 = 82,
+  SPEECH_83 = 83,
+  SPEECH_84 = 84,
+  SPEECH_85 = 85,
+  SPEECH_86 = 86,
+  SPEECH_87 = 87,
+  SPEECH_88 = 88,
+  SPEECH_89 = 89,
+  SPEECH_90 = 90,
+  SPEECH_91 = 91,
+  SPEECH_92 = 92,
+  SPEECH_93 = 93,
+  SPEECH_94 = 94,
+  SPEECH_95 = 95,
+  SPEECH_96 = 96,
+  SPEECH_97 = 97,
+  SPEECH_98 = 98,
+  SPEECH_99 = 99,
+  SPEECH_100 = 100,
+  SPEECH_101 = 101,
+  SPEECH_PickMe = 102,
+  SPEECH_103 = 103,
+  SPEECH_104 = 104,
+  SPEECH_105 = 105,
+  SPEECH_106 = 106,
+  SPEECH_107 = 107,
+  SPEECH_108 = 108,
+  SPEECH_109 = 109,
+  SPEECH_110 = 110,
+};
+
+
+
 /*  339 */
 enum CHARACTER_RACE
 {
@@ -255,6 +373,7 @@
   CHARACTER_EXPRESSION_55 = 55,
   CHARACTER_EXPRESSION_56 = 56,
   CHARACTER_EXPRESSION_57 = 57,
+  CHARACTER_EXPRESSION_58 = 58,
 
   // ?
 
@@ -363,7 +482,7 @@
   char GetActualSkillLevel(enum PLAYER_SKILL_TYPE uSkillType);
   int GetSkillBonus(enum CHARACTER_ATTRIBUTE_TYPE a2);
   enum CHARACTER_RACE GetRace();
-  int GetSexByVoice();
+  PLAYER_SEX GetSexByVoice();
   void SetInitialStats();
   int SetSexByVoice();
   void Reset(PLAYER_CLASS_TYPE classType);
@@ -397,8 +516,8 @@
   bool CanEquip_RaceAndAlignmentCheck(unsigned int uItemID);
   int SetCondition(unsigned int uConditionIdx, int a3);
   int _49327B(unsigned int uClass, int a3);
-  __int16 PlaySound(int a2, int a3);
-  __int16 PlayEmotion(CHARACTER_EXPRESSION_ID expression, int a3);
+  void PlaySound(PlayerSpeech speech, int a3);
+  void PlayEmotion(CHARACTER_EXPRESSION_ID expression, int a3);
   char _4160CA(int a2);
   unsigned int GetItemIDAtInventoryIndex(int *a2);
   int _4B6FF9();
--- a/Render.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Render.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -21,6 +21,7 @@
 #include "Actor.h"
 #include "Log.h"
 #include "TileFrameTable.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
--- a/SaveLoad.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/SaveLoad.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -17,6 +17,7 @@
 #include "LayingItem.h"
 #include "Viewport.h"
 #include "stru123.h"
+#include "texts.h"
 #include "Log.h"
 
 #include "mm7_data.h"
--- a/Spells.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/Spells.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -5,6 +5,7 @@
 #include "Allocator.h"
 #include "LOD.h"
 #include "stru123.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
@@ -26,12 +27,7 @@
 //----- (0042EB31) --------------------------------------------------------
 bool SpellBuff::NotExpired()
 {
-  bool result; // eax@1
-
-  result = 0;
-  if ( (signed __int64)this->uExpireTime > 0 )
-    result = 1;
-  return result;
+  return (signed __int64)this->uExpireTime > 0 ? true:false;
 }
 
 
@@ -41,18 +37,16 @@
   SpellBuff *v1; // esi@1
   unsigned __int16 v2; // ax@1
 
-  v1 = this;
-  v2 = this->uOverlayID;
   this->uSkill = 0;
   this->uPower = 0;
   this->uExpireTime = 0i64;
   this->uCaster = 0;
   this->uFlags = 0;
-  if ( v2 )
+  if ( this->uOverlayID )
   {
-    ((OtherOverlay *)&stru_5E4C90._decor_events[20 * v2 + 105])->Reset();
+    ((OtherOverlay *)&stru_5E4C90._decor_events[20 * this->uOverlayID + 105])->Reset();
     pOtherOverlayList->bRedraw = true;
-    v1->uOverlayID = 0;
+    this->uOverlayID = 0;
   }
 }
 
@@ -113,201 +107,169 @@
 
 //----- (0045384A) --------------------------------------------------------
 void SpellStats::Initialize()
-{
-  SpellStats *v1; // esi@1
-  const char *v2; // ebp@3
-  char *v3; // edi@3
-  signed int v4; // ebx@4
-  char *v5; // esi@4
-  char v6; // cl@5
-  int v7; // eax@5
-  size_t v8; // ebp@40
-  int v9; // eax@41
-  int v10; // eax@42
-  int v11; // eax@43
-  char *v12; // [sp+10h] [bp-10h]@3
-  signed int v13; // [sp+14h] [bp-Ch]@4
-  signed int v14; // [sp+18h] [bp-8h]@3
-  int v15; // [sp+1Ch] [bp-4h]@9
+	{
+
+	int decode_step;
+	char* test_string;
+	bool break_loop;
+	unsigned char c;
+	unsigned int temp_str_len;
+	char* tmp_pos;
+
+	if ( pSpellsTXT_Raw )
+		pAllocator->FreeChunk(pSpellsTXT_Raw);
+	pSpellsTXT_Raw = NULL;
 
-  v1 = this;
-  if ( pSpellsTXT_Raw )
-    pAllocator->FreeChunk(pSpellsTXT_Raw);
-  pSpellsTXT_Raw = 0;
-  v2 = "\r";
-  pSpellsTXT_Raw = (char *)pEvents_LOD->LoadRaw("spells.txt", 0);
-  strtok(pSpellsTXT_Raw, "\r");
-  strtok(0, "\r");
-  v14 = 1;
-  v12 = (char *)&pSpellDatas[1].field_10;
-  v3 = (char *)&v1->pInfos[1].uSchool;
-  do
-  {
-    v4 = 0;
-    v5 = strtok(0, v2) + 1;
-    v13 = 0;
-    do
-    {
-      v6 = *v5;
-      v7 = 0;
-      while ( v6 != 9 && v6 )
-      {
-        ++v7;
-        v6 = v5[v7];
-      }
-      v15 = (int)&v5[v7];
-      if ( !v5[v7] )
-        v13 = 1;
-      v5[v7] = 0;
-      if ( v7 )
-      {
-        switch ( v4 )
-        {
-          case 2:
-            *((char **)v3 - 7) = RemoveQuotes(v5);
-            break;
-          case 3:
-            *v3 = 4;
-            if ( _strcmpi("fire", v5) )
-            {
-              if ( _strcmpi("air", v5) )
-              {
-                if ( _strcmpi("water", v5) )
-                {
-                  if ( _strcmpi("earth", v5) )
-                  {
-                    if ( _strcmpi("spirit", v5) )
-                    {
-                      if ( _strcmpi("mind", v5) )
-                      {
-                        if ( _strcmpi("body", v5) )
-                        {
-                          if ( _strcmpi("light", v5) )
-                          {
-                            if ( _strcmpi("dark", v5) )
-                            {
-                              if ( !_strcmpi("magic", v5) )
-                                *v3 = 5;
-                            }
-                            else
-                            {
-                              *v3 = 10;
-                            }
-                          }
-                          else
-                          {
-                            *v3 = 9;
-                          }
-                        }
-                        else
-                        {
-                          *v3 = 8;
-                        }
-                      }
-                      else
-                      {
-                        *v3 = 7;
-                      }
-                    }
-                    else
-                    {
-                      *v3 = 6;
-                    }
-                  }
-                  else
-                  {
-                    *v3 = 3;
-                  }
-                }
-                else
-                {
-                  *v3 = 2;
-                }
-              }
-              else
-              {
-                *v3 = 1;
-              }
-            }
-            else
-            {
-              *v3 = 0;
-            }
-            break;
-          case 4:
-            *((char **)v3 - 6) = RemoveQuotes(v5);
-            break;
-          case 5:
-            *((char **)v3 - 5) = RemoveQuotes(v5);
-            break;
-          case 6:
-            *((char **)v3 - 4) = RemoveQuotes(v5);
-            break;
-          case 7:
-            *((char **)v3 - 3) = RemoveQuotes(v5);
-            break;
-          case 8:
-            *((char **)v3 - 2) = RemoveQuotes(v5);
-            break;
-          case 9:
-            *((char **)v3 - 1) = RemoveQuotes(v5);
-            break;
-          case 10:
-            v4 = 0;
-            v8 = strlen(v5);
-            if ( (signed int)v8 > 0 )
-            {
-              do
-              {
-                v9 = tolower((unsigned __int8)v5[v4]) - 99;
-                if ( v9 )
-                {
-                  v10 = v9 - 2;
-                  if ( v10 )
-                  {
-                    v11 = v10 - 8;
-                    if ( v11 )
-                    {
-                      if ( v11 == 11 )
-                        *v12 |= 8u;
-                    }
-                    else
-                    {
-                      *v12 |= 1u;
-                    }
-                  }
-                  else
-                  {
-                    *v12 |= 2u;
-                  }
-                }
-                else
-                {
-                  *v12 |= 4u;
-                }
-                ++v4;
-              }
-              while ( v4 < (signed int)v8 );
-            }
-            v2 = "\r";
-            break;
-          default:
-            break;
-        }
-      }
-      else
-      {
-        v13 = 1;
-      }
-      ++v4;
-      v5 = (char *)(v15 + 1);
-    }
-    while ( v4 - 1 <= 10 && !v13 );
-    if ( !(v14 % 11) )
-      strtok(0, v2);
-    v12 += 20;
-    ++v14;
-    v3 += 36;
-  }
-  while ( (signed int)v12 <= (signed int)&pSpellDatas[90].field_12 );
-}
\ No newline at end of file
+	pSpellsTXT_Raw = (char *)pEvents_LOD->LoadRaw("spells.txt", 0);
+	strtok(pSpellsTXT_Raw, "\r");
+	strtok(NULL, "\r");
+	v14 = 1;
+	for(int i=1; i<100; ++i) 
+		{
+		test_string=strtok(NULL, "\r")+1;
+		decode_step =0;
+		break_loop=false;
+		do 
+			{
+			c = *(unsigned char*)test_string;
+			temp_str_len = 0;
+			while((c!='\t')&&(c>0))
+				{
+				++temp_str_len;
+				c=test_string[temp_str_len];
+				}		
+			tmp_pos=test_string+temp_str_len;
+			if (*tmp_pos == 0)
+				break_loop = true;
+			*tmp_pos = 0;
+			if (temp_str_len)
+				{		
+				switch (decode_step)
+					{	
+				case 2:
+					pInfos[i].pName=RemoveQuotes(test_string);
+					break;
+				case 3:
+					pInfos[i].uSchool = 4;
+					if (!_strcmpi("fire", test_string) )
+						{
+						pInfos[i].uSchool =0;
+						break;
+						}
+					if ( !_strcmpi("air", test_string) )	
+						{
+						pInfos[i].uSchool = 1;
+						break;
+						}
+					if ( !_strcmpi("water", test_string))	
+						{
+						pInfos[i].uSchool = 2;
+						break;
+						}	
+					if ( !_strcmpi("earth", test_string))	
+						{
+						pInfos[i].uSchool = 3;
+						break;
+						}	
+					if ( !_strcmpi("spirit", test_string))	
+						{
+						pInfos[i].uSchool = 6;
+						break;
+						}
+					if ( !_strcmpi("mind", test_string))	
+						{
+						pInfos[i].uSchool = 7;
+						break;
+						}
+					if ( !_strcmpi("body", test_string) )	
+						{
+						pInfos[i].uSchool = 8;
+						break;
+						}			
+					if ( !_strcmpi("light", test_string) )	
+						{
+						pInfos[i].uSchool = 9;
+						break;
+						}					
+					if ( !_strcmpi("dark", test_string))	
+						{
+						pInfos[i].uSchool = 10;
+						break;
+						}					
+
+					if ( !_strcmpi("magic", test_string))	
+						{
+						pInfos[i].uSchool = 5;
+						break;
+						}								
+
+					break;
+				case 4:
+					pInfos[i].pShortName=RemoveQuotes(test_string);
+					break;
+				case 5:
+					pInfos[i].pDescription=RemoveQuotes(test_string);
+					break;
+				case 6:
+					pInfos[i].pBasicSkillDesc=RemoveQuotes(test_string);
+					break;
+				case 7:
+					pInfos[i].pExpertSkillDesc=RemoveQuotes(test_string);
+					break;
+				case 8:
+					pInfos[i].pMasterSkillDesc=RemoveQuotes(test_string);
+					break;
+				case 9:
+					pInfos[i].pGrandmasterSkillDesc=RemoveQuotes(test_string);
+					break;
+				case 10:
+					int in_string_pos=0;
+					int in_str_len=strlen(test_string);
+					/*v4 = 0; fix_me
+					v8 = strlen(v5);
+					if ( (signed int)v8 > 0 )
+					{
+					do
+					{
+					v9 = tolower((unsigned __int8)v5[v4]) - 99;
+					if ( v9 )
+					{
+					v10 = v9 - 2;
+					if ( v10 )
+					{
+					v11 = v10 - 8;
+					if ( v11 )
+					{
+					if ( v11 == 11 )
+					*v12 |= 8u;
+					}
+					else
+					{
+					*v12 |= 1u;
+					}
+					}
+					else
+					{
+					*v12 |= 2u;
+					}
+					}
+					else
+					{
+					*v12 |= 4u;
+					}
+					++v4;
+					}
+					while ( v4 < (signed int)v8 );*/
+					break;
+					}
+				}
+			else
+				break_loop=true;
+			++decode_step;
+			test_string=tmp_pos+1;	
+			} while ((decode_step<11)&&!break_loop);
+			if ((i%11)==0)
+				strtok(NULL, "\r");
+		}
+
+	}
\ No newline at end of file
--- a/Spells.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/Spells.h	Sat Feb 16 08:42:58 2013 +0600
@@ -74,7 +74,7 @@
   char *pExpertSkillDesc;
   char *pMasterSkillDesc;
   char *pGrandmasterSkillDesc;
-  unsigned int uSchool;
+  int uSchool;
   int field_20;
 };
 #pragma pack(pop)
@@ -122,7 +122,7 @@
   __int16 field_10;
   char field_12;
   char field_13;
-  __int16 field_14;
+ // __int16 field_14;
 };
 #pragma pack(pop)
 
--- a/mm7_1.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_1.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -48,6 +48,7 @@
 #include "stru298.h"
 #include "StorylineTextTable.h"
 #include "Events2D.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
@@ -2081,7 +2082,7 @@
       pWindowList[v3].pCurrentPosActiveItem -= v12;
       if ( v8 )
       {
-        pAudioPlayer->PlaySound((SoundID)66, v1, v1, -1, v1, v1, v1, v1);
+        pAudioPlayer->PlaySound(SOUND_Button, v1, v1, -1, v1, v1, v1, v1);
         v2 = pMessageQueue_50CBD0->uNumMessages;
       }
     }
@@ -2121,7 +2122,7 @@
         pWindowList[v3].pCurrentPosActiveItem = v7;
         if ( v8 )
         {
-          pAudioPlayer->PlaySound((SoundID)66, v1, v1, -1, v1, v1, v1, v1);
+          pAudioPlayer->PlaySound(SOUND_Button, v1, v1, -1, v1, v1, v1, v1);
           v2 = pMessageQueue_50CBD0->uNumMessages;
         }
       }
@@ -2450,13 +2451,13 @@
         }
         else
         {
-          v83 = (char *)8;
+          v83 = (char *)SPEECH_8;
           if ( _this->GetValue() < 100 * (pPlayers[uActiveCharacter]->uLevel + 5) )
-            v83 = (char *)7;
+            v83 = (char *)SPEECH_7;
         }
         if ( dword_4E455C )
         {
-          pPlayers[uActiveCharacter]->PlaySound((int)v83, 0);
+          pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0);
           dword_4E455C = 0;
         }
       }
@@ -2468,14 +2469,14 @@
         if ( v10 )
           _this->uAttributes = _this->uAttributes & 0xFFFFFFFD | 1;
         v10 = (v12->uAttributes & 2) == 0;
-        v83 = (char *)11;
+        v83 = (char *)SPEECH_11;
         if ( v10 )
-          v83 = (char *)10;
+          v83 = (char *)SPEECH_10;
         else
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[448], 2u);
         if ( dword_4E455C )
         {
-          pPlayers[uActiveCharacter]->PlaySound((int)v83, 0);
+          pPlayers[uActiveCharacter]->PlaySound((PlayerSpeech)(int)v83, 0);
           dword_4E455C = 0;
         }
       }
@@ -3263,15 +3264,15 @@
     if ( v119 | v116 | i | (unsigned int)v112 )
     {
       if ( v121->pMonsterInfo.uLevel >= v47->uLevel - 5 )
-        v73 = 105;
+        v73 = SPEECH_105;
       else
-        v73 = 104;
+        v73 = SPEECH_104;
     }
     else
     {
-      v73 = 106;
-    }
-    v47->PlaySound(v73, 0);
+      v73 = SPEECH_106;
+    }
+    v47->PlaySound((PlayerSpeech)v73, 0);
   }
 LABEL_84:
   a2 = pParty->pPlayers;
@@ -4089,7 +4090,7 @@
     if ( v22 == v5 )
     {
       if ( uActiveCharacter )
-        pPlayers[uActiveCharacter]->PlaySound(15, 0);
+        pPlayers[uActiveCharacter]->PlaySound(SPEECH_15, 0);
       return 0;
     }
     v7 = pIcons_LOD->LoadTexture(pItemsTable->pItems[v4->uItemID].pIconName, TEXTURE_16BIT_PALETTE);
@@ -4519,7 +4520,7 @@
   if ( *(float *)&sRotY != 0.0 )
   {
     if ( !dword_507CD8 )
-      pPlayers[uActiveCharacter]->PlaySound(4, 0);
+      pPlayers[uActiveCharacter]->PlaySound(SPEECH_4, 0);
   }
   dword_507CD8 = 0;
   v3 = GUIWindow::Create(0, 0, 640u, 480u, WINDOW_Chest, a4, 0);
@@ -5756,7 +5757,7 @@
         goto LABEL_9;
       v4 = pPlayers[uActiveCharacter];
     }
-    v4->PlaySound(15, 0);
+    v4->PlaySound(SPEECH_15, 0);
   }
 LABEL_9:
   if ( !pCurrentScreen )
--- a/mm7_2.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_2.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -51,6 +51,7 @@
 #include "Events2D.h"
 #include "stru159.h"
 #include "Log.h"
+#include "texts.h"
 
 #include "mm7_data.h"
 
@@ -243,7 +244,7 @@
         if ( pParty->uFine < 0 )
           pParty->uFine = 0;
         if ( uActiveCharacter )
-          pPlayers[uActiveCharacter]->PlaySound(81, 0);
+          pPlayers[uActiveCharacter]->PlaySound(SPEECH_81, 0);
         v0 = ptr_507BC0;
       }
       else
@@ -347,7 +348,7 @@
             Party::TakeGold(v7);
             pParty->uNumGoldInBank += v7;
             if ( uActiveCharacter )
-              pPlayers[uActiveCharacter]->PlaySound(81, 0);
+              pPlayers[uActiveCharacter]->PlaySound(SPEECH_81, 0);
           }
           v0 = ptr_507BC0;
 LABEL_16:
@@ -743,7 +744,7 @@
         {
           ShowStatusBarString(pGlobalTXT_LocalizationStrings[140], 2u);
           if ( uActiveCharacter )
-            pPlayers[uActiveCharacter]->PlaySound(67, 0);
+            pPlayers[uActiveCharacter]->PlaySound(SPEECH_67, 0);
           goto LABEL_43;
         }
         if ( pParty->uNumGold >= v7 )
@@ -4188,7 +4189,7 @@
                     Party::TakeGold(v37);
                     dword_F8B1E4 = 1;
                     *(short *)v38 = 1;
-                    v35->PlaySound(78, 0);
+                    v35->PlaySound(SPEECH_78, 0);
                   }
                 }
               }
@@ -4599,7 +4600,7 @@
       memcpy(&v0->spellbook.pDarkSpellbook.bIsSpellAvailable[36 * v25 + 5], v20, 0x24u);
       goto LABEL_42;
     }
-    v0->PlaySound(15, 0);
+    v0->PlaySound(SPEECH_15, 0);
     v54 = 5;
 LABEL_70:
     v9 = pGlobalTXT_LocalizationStrings[563];   // "Pack is Full!"
@@ -4689,12 +4690,12 @@
       pRenderer->ClearZBuffer(0, 479);
       v27 = v77;
       v53 = 0;
-      v51 = 75;
+      v51 = SPEECH_75;
 LABEL_81:
-      v27->PlaySound(v51, v53);
+      v27->PlaySound((PlayerSpeech)v51, v53);
       return;
     }
-    v0->PlaySound(15, 0);
+    v0->PlaySound(SPEECH_15, 0);
     v54 = 2;
     goto LABEL_70;
   }
@@ -4717,7 +4718,7 @@
       v51 = 77;
       goto LABEL_80;
     }
-    v0->PlaySound(79, 0);
+    v0->PlaySound(SPEECH_79, 0);
     v56 = 0;
     v52 = 0;
     v50 = 0;
@@ -4753,7 +4754,7 @@
                 dword_F8B1E4 = 1;
                 Party::TakeGold(v80);
                 *(int *)(v12 + 20) |= 1u;
-                v0->PlaySound(73, 0);
+                v0->PlaySound(SPEECH_73, 0);
                 v9 = pGlobalTXT_LocalizationStrings[569];
                 goto LABEL_25;
               }
@@ -4806,7 +4807,7 @@
                   v8 = *(int *)(v3 + 20);
                   LOBYTE(v8) = v8 & 0xFD;
                   *(int *)(v3 + 20) = v8 | 1;
-                  v0->PlaySound(74, 0);
+                  v0->PlaySound(SPEECH_74, 0);
                   v9 = pGlobalTXT_LocalizationStrings[570];
 LABEL_25:
                   v54 = 2;
@@ -9238,330 +9239,6 @@
 }
 
 
-//----- (00452B95) --------------------------------------------------------
-void __cdecl SetSomeItemsNames()
-{
-  pSomeItemsNames[0] = pGlobalTXT_LocalizationStrings[568];
-  pSomeItemsNames[1] = pGlobalTXT_LocalizationStrings[271];
-  pSomeItemsNames[2] = pGlobalTXT_LocalizationStrings[272];
-  pSomeItemsNames[3] = pGlobalTXT_LocalizationStrings[273];
-  pSomeItemsNames[4] = pGlobalTXT_LocalizationStrings[274];
-  pSomeItemsNames[5] = pGlobalTXT_LocalizationStrings[275];
-  pSomeItemsNames[6] = pGlobalTXT_LocalizationStrings[276];
-  pSomeItemsNames[7] = pGlobalTXT_LocalizationStrings[277];
-  pSomeItemsNames[8] = pGlobalTXT_LocalizationStrings[278];
-  pSomeItemsNames[9] = pGlobalTXT_LocalizationStrings[279];
-  pSomeItemsNames[10] = pGlobalTXT_LocalizationStrings[280];
-  pSomeItemsNames[11] = pGlobalTXT_LocalizationStrings[281];
-  pSomeItemsNames[12] = pGlobalTXT_LocalizationStrings[282];
-  pSomeItemsNames[13] = pGlobalTXT_LocalizationStrings[143];
-  memset(&stru_5E4C50, 0, sizeof(stru_5E4C50));
-}
-
-//----- (00452C30) --------------------------------------------------------
-char *RemoveQuotes(char *Str)
-{
-  char *v1; // esi@1
-
-  v1 = Str;
-  if ( *Str == '"' )
-  {
-    Str[strlen(Str) - 1] = 0;
-    v1 = Str + 1;
-  }
-  return v1;
-}
-
-//----- (00452C49) --------------------------------------------------------
-void InitializeGameText()
-{
-  //char *v0; // ebx@1
-  char *v1; // eax@3
-  int v2; // ebp@4
-  char v3; // dl@5
-  char *v4; // ecx@5
-  int v5; // esi@9
-  //char **v6; // [sp+10h] [bp-8h]@3
-  signed int v7; // [sp+14h] [bp-4h]@4
-
-  //v0 = 0;
-  if (pGlobalTXT_Raw)
-    pAllocator->FreeChunk(pGlobalTXT_Raw);
-
-  pGlobalTXT_Raw = nullptr;
-  pGlobalTXT_Raw = (char *)pEvents_LOD->LoadRaw("global.txt", 0);
-
-  strtok(pGlobalTXT_Raw, "\r");
-  strtok(nullptr, "\r");
-  v1 = strtok(nullptr, "\r") + 1;
-
-  for (uint i = 0; i < 677; ++i)
-  {
-    char *p = v1;
-    while (*++p != '\t' && *p);
-
-    pGlobalTXT_LocalizationStrings[i] = RemoveQuotes(p + 1);
-
-    v1 = strtok(nullptr, "\r") + 1;
-  }
-
-  aMonthNames[0] = pGlobalTXT_LocalizationStrings[415];
-  aMonthNames[1] = pGlobalTXT_LocalizationStrings[416];
-  aMonthNames[2] = pGlobalTXT_LocalizationStrings[417];
-  pSomeItemsNames[10] = pGlobalTXT_LocalizationStrings[280];
-  aMonthNames[3] = pGlobalTXT_LocalizationStrings[418];
-  pSomeItemsNames[11] = pGlobalTXT_LocalizationStrings[281];
-  aMonthNames[4] = pGlobalTXT_LocalizationStrings[419];
-  pSomeItemsNames[12] = pGlobalTXT_LocalizationStrings[282];
-  aMonthNames[5] = pGlobalTXT_LocalizationStrings[420];
-  pSomeItemsNames[13] = pGlobalTXT_LocalizationStrings[143];
-  aMonthNames[6] = pGlobalTXT_LocalizationStrings[421];
-  aCharacterConditionNames[0] = pGlobalTXT_LocalizationStrings[52];
-  aMonthNames[7] = pGlobalTXT_LocalizationStrings[422];
-  aCharacterConditionNames[1] = pGlobalTXT_LocalizationStrings[241];
-  aMonthNames[8] = pGlobalTXT_LocalizationStrings[423];
-  aCharacterConditionNames[2] = pGlobalTXT_LocalizationStrings[14];
-  aMonthNames[9] = pGlobalTXT_LocalizationStrings[424];
-  aCharacterConditionNames[3] = pGlobalTXT_LocalizationStrings[4];
-  aMonthNames[10] = pGlobalTXT_LocalizationStrings[425];
-  aCharacterConditionNames[4] = pGlobalTXT_LocalizationStrings[69];
-  aMonthNames[11] = pGlobalTXT_LocalizationStrings[426];
-  aCharacterConditionNames[5] = pGlobalTXT_LocalizationStrings[117];
-  pSomeItemsNames[0] = pGlobalTXT_LocalizationStrings[568];
-  aCharacterConditionNames[6] = pGlobalTXT_LocalizationStrings[166];
-  aCharacterConditionNames[8] = pGlobalTXT_LocalizationStrings[166];
-  aCharacterConditionNames[10] = pGlobalTXT_LocalizationStrings[166];
-  pSomeItemsNames[5] = pGlobalTXT_LocalizationStrings[275];
-  aCharacterConditionNames[12] = pGlobalTXT_LocalizationStrings[162];
-  pSomeItemsNames[6] = pGlobalTXT_LocalizationStrings[276];
-  aCharacterConditionNames[13] = pGlobalTXT_LocalizationStrings[231];
-  pSomeItemsNames[7] = pGlobalTXT_LocalizationStrings[277];
-  aCharacterConditionNames[14] = pGlobalTXT_LocalizationStrings[58];
-  pSomeItemsNames[8] = pGlobalTXT_LocalizationStrings[278];
-  aCharacterConditionNames[15] = pGlobalTXT_LocalizationStrings[220];
-  pSomeItemsNames[1] = pGlobalTXT_LocalizationStrings[271];
-  pSomeItemsNames[2] = pGlobalTXT_LocalizationStrings[272];
-  pSomeItemsNames[3] = pGlobalTXT_LocalizationStrings[273];
-  pSomeItemsNames[4] = pGlobalTXT_LocalizationStrings[274];
-  pSomeItemsNames[9] = pGlobalTXT_LocalizationStrings[279];
-  aCharacterConditionNames[7] = pGlobalTXT_LocalizationStrings[65];
-  aCharacterConditionNames[9] = pGlobalTXT_LocalizationStrings[65];
-  aCharacterConditionNames[11] = pGlobalTXT_LocalizationStrings[65];
-  aCharacterConditionNames[16] = pGlobalTXT_LocalizationStrings[76];
-  pClassNames[9] = pGlobalTXT_LocalizationStrings[26];
-  pClassNames[10] = pGlobalTXT_LocalizationStrings[432];
-  pClassNames[11] = pGlobalTXT_LocalizationStrings[27];
-  pClassNames[12] = pGlobalTXT_LocalizationStrings[262];
-  pClassNames[13] = pGlobalTXT_LocalizationStrings[263];
-  pClassNames[14] = pGlobalTXT_LocalizationStrings[264];
-  pClassNames[15] = pGlobalTXT_LocalizationStrings[28];
-  pClassNames[16] = pGlobalTXT_LocalizationStrings[265];
-  pClassNames[17] = pGlobalTXT_LocalizationStrings[267];
-  pClassNames[18] = pGlobalTXT_LocalizationStrings[119];
-  pClassNames[19] = pGlobalTXT_LocalizationStrings[124];
-  pClassNames[20] = pGlobalTXT_LocalizationStrings[31];
-  pClassNames[21] = pGlobalTXT_LocalizationStrings[370];
-  pClassNames[22] = pGlobalTXT_LocalizationStrings[33];
-  aCharacterConditionNames[17] = pGlobalTXT_LocalizationStrings[601];
-  pClassNames[23] = pGlobalTXT_LocalizationStrings[40];
-  aCharacterConditionNames[18] = pGlobalTXT_LocalizationStrings[98];
-  pClassNames[24] = pGlobalTXT_LocalizationStrings[256];
-  pClassNames[0] = pGlobalTXT_LocalizationStrings[253];
-  pClassNames[25] = pGlobalTXT_LocalizationStrings[257];
-  pClassNames[1] = pGlobalTXT_LocalizationStrings[254];
-  pClassNames[26] = pGlobalTXT_LocalizationStrings[44];
-  pClassNames[2] = pGlobalTXT_LocalizationStrings[255];
-  pClassNames[27] = pGlobalTXT_LocalizationStrings[46];
-  pClassNames[3] = pGlobalTXT_LocalizationStrings[2];
-  pClassNames[28] = pGlobalTXT_LocalizationStrings[268];
-  pClassNames[4] = pGlobalTXT_LocalizationStrings[307];
-  pClassNames[29] = pGlobalTXT_LocalizationStrings[269];
-  pClassNames[5] = pGlobalTXT_LocalizationStrings[114];
-  pClassNames[30] = pGlobalTXT_LocalizationStrings[270];
-  pClassNames[6] = pGlobalTXT_LocalizationStrings[3];
-  pClassNames[31] = pGlobalTXT_LocalizationStrings[48];
-  pClassNames[7] = pGlobalTXT_LocalizationStrings[13];
-  pClassNames[32] = pGlobalTXT_LocalizationStrings[259];
-  pClassNames[8] = pGlobalTXT_LocalizationStrings[21];
-  pClassNames[33] = pGlobalTXT_LocalizationStrings[260];
-  pClassNames[34] = pGlobalTXT_LocalizationStrings[261];
-  pClassNames[35] = pGlobalTXT_LocalizationStrings[49];
-  pSkillNames[0] = pGlobalTXT_LocalizationStrings[271];
-  pSkillNames[1] = pGlobalTXT_LocalizationStrings[272];
-  pSkillNames[2] = pGlobalTXT_LocalizationStrings[273];
-  pSkillNames[3] = pGlobalTXT_LocalizationStrings[274];
-  pSkillNames[4] = pGlobalTXT_LocalizationStrings[275];
-  pSkillNames[5] = pGlobalTXT_LocalizationStrings[276];
-  pSkillNames[6] = pGlobalTXT_LocalizationStrings[277];
-  pSkillNames[7] = pGlobalTXT_LocalizationStrings[278];
-  pSkillNames[23] = pGlobalTXT_LocalizationStrings[294];
-  pSkillNames[9] = pGlobalTXT_LocalizationStrings[280];
-  pSkillNames[24] = pGlobalTXT_LocalizationStrings[295];
-  pSkillNames[10] = pGlobalTXT_LocalizationStrings[281];
-  pSkillNames[25] = pGlobalTXT_LocalizationStrings[296];
-  pSkillNames[11] = pGlobalTXT_LocalizationStrings[282];
-  pSkillNames[26] = pGlobalTXT_LocalizationStrings[297];
-  pSkillNames[12] = pGlobalTXT_LocalizationStrings[283];
-  pSkillNames[27] = pGlobalTXT_LocalizationStrings[298];
-  pSkillNames[13] = pGlobalTXT_LocalizationStrings[284];
-  pSkillNames[28] = pGlobalTXT_LocalizationStrings[299];
-  pSkillNames[14] = pGlobalTXT_LocalizationStrings[285];
-  pSkillNames[29] = pGlobalTXT_LocalizationStrings[300];
-  pSkillNames[15] = pGlobalTXT_LocalizationStrings[286];
-  pSkillNames[30] = pGlobalTXT_LocalizationStrings[50];
-  pSkillNames[16] = pGlobalTXT_LocalizationStrings[289];
-  pSkillNames[31] = pGlobalTXT_LocalizationStrings[77];
-  aDayNames[0] = pGlobalTXT_LocalizationStrings[145];
-  pSkillNames[17] = pGlobalTXT_LocalizationStrings[290];
-  pSkillNames[32] = pGlobalTXT_LocalizationStrings[88];
-  aDayNames[1] = pGlobalTXT_LocalizationStrings[230];
-  pSkillNames[18] = pGlobalTXT_LocalizationStrings[291];
-  pSkillNames[33] = pGlobalTXT_LocalizationStrings[89];
-  aDayNames[2] = pGlobalTXT_LocalizationStrings[243];
-  pSkillNames[19] = pGlobalTXT_LocalizationStrings[287];
-  pSkillNames[34] = pGlobalTXT_LocalizationStrings[90];
-  aDayNames[3] = pGlobalTXT_LocalizationStrings[227];
-  pSkillNames[20] = pGlobalTXT_LocalizationStrings[288];
-  pSkillNames[35] = pGlobalTXT_LocalizationStrings[95];
-  aDayNames[4] = pGlobalTXT_LocalizationStrings[91];
-  pSkillNames[21] = pGlobalTXT_LocalizationStrings[292];
-  pSkillNames[36] = pGlobalTXT_LocalizationStrings[301];
-  aDayNames[5] = pGlobalTXT_LocalizationStrings[188];
-  pSkillNames[8] = pGlobalTXT_LocalizationStrings[279];
-  pSkillNames[22] = pGlobalTXT_LocalizationStrings[293];
-  pSkillNames[37] = pGlobalTXT_LocalizationStrings[153];
-  aDayNames[6] = pGlobalTXT_LocalizationStrings[222];
-  aNPCProfessionNames[0] = pGlobalTXT_LocalizationStrings[153];
-  aNPCProfessionNames[1] = pGlobalTXT_LocalizationStrings[308];
-  aNPCProfessionNames[2] = pGlobalTXT_LocalizationStrings[309];
-  aNPCProfessionNames[3] = pGlobalTXT_LocalizationStrings[7];
-  aNPCProfessionNames[4] = pGlobalTXT_LocalizationStrings[306];
-  aNPCProfessionNames[5] = pGlobalTXT_LocalizationStrings[310];
-  aNPCProfessionNames[6] = pGlobalTXT_LocalizationStrings[311];
-  aNPCProfessionNames[7] = pGlobalTXT_LocalizationStrings[312];
-  aSpellSchoolNames[0] = pGlobalTXT_LocalizationStrings[87];
-  aNPCProfessionNames[8] = pGlobalTXT_LocalizationStrings[313];
-  aSpellSchoolNames[1] = pGlobalTXT_LocalizationStrings[6];
-  aNPCProfessionNames[9] = pGlobalTXT_LocalizationStrings[314];
-  aNPCProfessionNames[21] = pGlobalTXT_LocalizationStrings[293];
-  aNPCProfessionNames[10] = pGlobalTXT_LocalizationStrings[105];
-  aSpellSchoolNames[2] = pGlobalTXT_LocalizationStrings[240];
-  aNPCProfessionNames[11] = pGlobalTXT_LocalizationStrings[315];
-  aNPCProfessionNames[22] = pGlobalTXT_LocalizationStrings[324];
-  aNPCProfessionNames[12] = pGlobalTXT_LocalizationStrings[316];
-  aSpellSchoolNames[3] = pGlobalTXT_LocalizationStrings[70];
-  aNPCProfessionNames[13] = pGlobalTXT_LocalizationStrings[317];
-  aNPCProfessionNames[23] = pGlobalTXT_LocalizationStrings[498];
-  aSpellSchoolNames[4] = pGlobalTXT_LocalizationStrings[214];
-  aNPCProfessionNames[14] = pGlobalTXT_LocalizationStrings[115];
-  aNPCProfessionNames[24] = pGlobalTXT_LocalizationStrings[525];
-  aSpellSchoolNames[5] = pGlobalTXT_LocalizationStrings[142];
-  aNPCProfessionNames[15] = pGlobalTXT_LocalizationStrings[318];
-  aNPCProfessionNames[25] = pGlobalTXT_LocalizationStrings[327];
-  aSpellSchoolNames[6] = pGlobalTXT_LocalizationStrings[29];
-  aNPCProfessionNames[16] = pGlobalTXT_LocalizationStrings[319];
-  aNPCProfessionNames[26] = pGlobalTXT_LocalizationStrings[328];
-  aSpellSchoolNames[7] = pGlobalTXT_LocalizationStrings[133];
-  aNPCProfessionNames[17] = pGlobalTXT_LocalizationStrings[320];
-  aNPCProfessionNames[27] = pGlobalTXT_LocalizationStrings[329];
-  aSpellSchoolNames[8] = pGlobalTXT_LocalizationStrings[54];
-  aNPCProfessionNames[18] = pGlobalTXT_LocalizationStrings[321];
-  aNPCProfessionNames[28] = pGlobalTXT_LocalizationStrings[330];
-  aAMPMNames[0] = pGlobalTXT_LocalizationStrings[472];
-  aNPCProfessionNames[19] = pGlobalTXT_LocalizationStrings[322];
-  aNPCProfessionNames[29] = pGlobalTXT_LocalizationStrings[331];
-  aAMPMNames[1] = pGlobalTXT_LocalizationStrings[473];
-  aNPCProfessionNames[20] = pGlobalTXT_LocalizationStrings[323];
-  aNPCProfessionNames[30] = pGlobalTXT_LocalizationStrings[332];
-  aNPCProfessionNames[31] = pGlobalTXT_LocalizationStrings[333];
-  aNPCProfessionNames[32] = pGlobalTXT_LocalizationStrings[334];
-  aNPCProfessionNames[33] = pGlobalTXT_LocalizationStrings[335];
-  aNPCProfessionNames[34] = pGlobalTXT_LocalizationStrings[336];
-  aNPCProfessionNames[35] = pGlobalTXT_LocalizationStrings[337];
-  aNPCProfessionNames[36] = pGlobalTXT_LocalizationStrings[338];
-  aNPCProfessionNames[37] = pGlobalTXT_LocalizationStrings[339];
-  aNPCProfessionNames[38] = pGlobalTXT_LocalizationStrings[340];
-  aNPCProfessionNames[39] = pGlobalTXT_LocalizationStrings[341];
-  aNPCProfessionNames[40] = pGlobalTXT_LocalizationStrings[342];
-  aNPCProfessionNames[56] = pGlobalTXT_LocalizationStrings[21];
-  aNPCProfessionNames[41] = pGlobalTXT_LocalizationStrings[343];
-  aNPCProfessionNames[57] = pGlobalTXT_LocalizationStrings[600];
-  aNPCProfessionNames[42] = pGlobalTXT_LocalizationStrings[596];
-  aNPCProfessionNames[58] = pGlobalTXT_LocalizationStrings[370];
-  aNPCProfessionNames[43] = pGlobalTXT_LocalizationStrings[345];
-  aMoonPhaseNames[0] = pGlobalTXT_LocalizationStrings[150];
-  aNPCProfessionNames[44] = pGlobalTXT_LocalizationStrings[346];
-  aMoonPhaseNames[1] = pGlobalTXT_LocalizationStrings[171];
-  aNPCProfessionNames[45] = pGlobalTXT_LocalizationStrings[347];
-  aMoonPhaseNames[2] = pGlobalTXT_LocalizationStrings[102];
-  aNPCProfessionNames[46] = pGlobalTXT_LocalizationStrings[348];
-  aMoonPhaseNames[3] = pGlobalTXT_LocalizationStrings[169];
-  aNPCProfessionNames[47] = pGlobalTXT_LocalizationStrings[349];
-  aMoonPhaseNames[4] = pGlobalTXT_LocalizationStrings[92];
-  aNPCProfessionNames[48] = pGlobalTXT_LocalizationStrings[350];
-  aAttributeNames[0] = pGlobalTXT_LocalizationStrings[144];
-  aNPCProfessionNames[49] = pGlobalTXT_LocalizationStrings[597];
-  aAttributeNames[1] = pGlobalTXT_LocalizationStrings[116];
-  aNPCProfessionNames[50] = pGlobalTXT_LocalizationStrings[352];
-  aAttributeNames[2] = pGlobalTXT_LocalizationStrings[163];
-  aNPCProfessionNames[51] = pGlobalTXT_LocalizationStrings[353];
-  aAttributeNames[3] = pGlobalTXT_LocalizationStrings[75];
-  aNPCProfessionNames[52] = pGlobalTXT_LocalizationStrings[598];
-  aAttributeNames[4] = pGlobalTXT_LocalizationStrings[1];
-  aNPCProfessionNames[53] = pGlobalTXT_LocalizationStrings[344];
-  aAttributeNames[5] = pGlobalTXT_LocalizationStrings[211];
-  aNPCProfessionNames[54] = pGlobalTXT_LocalizationStrings[26];
-  aAttributeNames[6] = pGlobalTXT_LocalizationStrings[136];
-  aNPCProfessionNames[55] = pGlobalTXT_LocalizationStrings[599];
-  aSpellNames[14] = pGlobalTXT_LocalizationStrings[279];
-  aSpellNames[33] = pGlobalTXT_LocalizationStrings[279];
-  aSpellNames[9] = pGlobalTXT_LocalizationStrings[440];
-  aSpellNames[34] = pGlobalTXT_LocalizationStrings[442];
-  aSpellNames[0] = pGlobalTXT_LocalizationStrings[202];
-  aSpellNames[10] = pGlobalTXT_LocalizationStrings[218];
-  aSpellNames[20] = pGlobalTXT_LocalizationStrings[202];
-  aSpellNames[35] = pGlobalTXT_LocalizationStrings[235];
-  aSpellNames[11] = pGlobalTXT_LocalizationStrings[217];
-  aSpellNames[21] = pGlobalTXT_LocalizationStrings[443];
-  aSpellNames[36] = pGlobalTXT_LocalizationStrings[246];
-  aSpellNames[12] = pGlobalTXT_LocalizationStrings[213];
-  aSpellNames[24] = pGlobalTXT_LocalizationStrings[221];
-  aSpellNames[37] = pGlobalTXT_LocalizationStrings[247];
-  aSpellNames[13] = pGlobalTXT_LocalizationStrings[462];
-  aSpellNames[26] = pGlobalTXT_LocalizationStrings[228];
-  aSpellNames[38] = pGlobalTXT_LocalizationStrings[248];
-  aSpellNames[15] = pGlobalTXT_LocalizationStrings[442];
-  aSpellNames[28] = pGlobalTXT_LocalizationStrings[440];
-  aSpellNames[39] = pGlobalTXT_LocalizationStrings[674];
-  aSpellNames[16] = pGlobalTXT_LocalizationStrings[452];
-  aSpellNames[29] = pGlobalTXT_LocalizationStrings[213];
-  aSpellNames[40] = pGlobalTXT_LocalizationStrings[249];
-  aSpellNames[2] = pGlobalTXT_LocalizationStrings[219];
-  aSpellNames[17] = pGlobalTXT_LocalizationStrings[194];
-  aSpellNames[30] = pGlobalTXT_LocalizationStrings[229];
-  aSpellNames[41] = pGlobalTXT_LocalizationStrings[258];
-  aSpellNames[5] = pGlobalTXT_LocalizationStrings[454];
-  aSpellNames[3] = pGlobalTXT_LocalizationStrings[215];
-  aSpellNames[7] = pGlobalTXT_LocalizationStrings[455];
-  aSpellNames[18] = pGlobalTXT_LocalizationStrings[456];
-  aSpellNames[31] = pGlobalTXT_LocalizationStrings[233];
-  aSpellNames[42] = pGlobalTXT_LocalizationStrings[194];
-  aSpellNames[6] = pGlobalTXT_LocalizationStrings[24];
-  aSpellNames[25] = pGlobalTXT_LocalizationStrings[24];
-  aSpellNames[1] = pGlobalTXT_LocalizationStrings[204];
-  aSpellNames[4] = pGlobalTXT_LocalizationStrings[208];
-  aSpellNames[8] = pGlobalTXT_LocalizationStrings[441];
-  aSpellNames[19] = pGlobalTXT_LocalizationStrings[453];
-  aSpellNames[22] = pGlobalTXT_LocalizationStrings[204];
-  aSpellNames[23] = pGlobalTXT_LocalizationStrings[208];
-  aSpellNames[27] = pGlobalTXT_LocalizationStrings[441];
-  aSpellNames[32] = pGlobalTXT_LocalizationStrings[234];
-  aSpellNames[43] = pGlobalTXT_LocalizationStrings[657];
-}
-
-
-
-
 
 
 
@@ -15119,7 +14796,7 @@
         if ( (signed int)SkillToMastery(v5) < 3 )
         {
 LABEL_8:
-          v0->PlaySound(39, 0);
+          v0->PlaySound(SPEECH_39, 0);
           return;
         }
         v3 = pParty->pPickedItem.uItemID;
--- a/mm7_3.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_3.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -41,6 +41,7 @@
 #include "stru176.h"
 #include "stru159.h"
 #include "stru298.h"
+#include "texts.h"
 #include "Log.h"
 
 #include "mm7_data.h"
@@ -2676,7 +2677,7 @@
         if ( !uActiveCharacter )
           goto LABEL_87;
         v65 = 0;
-        v63 = 63;
+        v63 = SPEECH_63;
         goto LABEL_76;
       case PARTY_LookDown:
         __debugbreak();
@@ -2687,9 +2688,9 @@
         if ( uActiveCharacter )
         {
           v65 = 0;
-          v63 = 64;
+          v63 = SPEECH_64;
 LABEL_76:
-          pPlayers[v35]->PlaySound(v63, v65);
+          pPlayers[v35]->PlaySound((PlayerSpeech)v63, v65);
         }
         break;
       case PARTY_CenterView:
@@ -3507,7 +3508,7 @@
         if ( _angle_x > 128 )
           _angle_x = 128;
         if (uActiveCharacter)
-          pPlayers[uActiveCharacter]->PlaySound(63, 0);
+          pPlayers[uActiveCharacter]->PlaySound(SPEECH_63, 0);
       break;
 
       case PARTY_LookDown:
@@ -3515,7 +3516,7 @@
         if ( _angle_x < -128 )
           _angle_x = -128;
         if (uActiveCharacter)
-          pPlayers[uActiveCharacter]->PlaySound(64, 0);
+          pPlayers[uActiveCharacter]->PlaySound(SPEECH_64, 0);
       break;
 
       case PARTY_Jump:
@@ -3623,7 +3624,7 @@
       {
         auto player = pParty->pPlayers + i;
         if (!player->HasEnchantedItemEquipped(72) && !player->WearsItem(529, 8) && player->CanAct())
-          player->PlaySound(66, 0);
+          player->PlaySound(SPEECH_66, 0);
       }
     }
   }
@@ -16510,42 +16511,39 @@
     {
       sprintf(v4, pGlobalTXT_LocalizationStrings[576], dword_F8B1B4);// "Congratulations on your win: here's your stuff: %u gold."
       pInString = v4;
-      v8 = 0;
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
     if ( uDialogueType == DIALOGUE_ARENA_ALREADY_WON )
     {
-      v7 = pGlobalTXT_LocalizationStrings[582]; // "You already won this trip to the Arena:"
-      v8 = 0;
-      pInString = v7;
+      pInString = pGlobalTXT_LocalizationStrings[582]; // "You already won this trip to the Arena:"
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
   }
@@ -16554,45 +16552,43 @@
     if ( uDialogueType == DIALOGUE_ARENA_WELCOME )
     {
       v7 = pGlobalTXT_LocalizationStrings[574]; // "Welcome to the Arena of Life and Death.  Remember, you are only allowed one arena combat per visit.  To fight an arena battle, select the option that best describes your abilities and return to me- if you survive:"
-      v8 = 0;
       pInString = v7;
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
     if ( uDialogueType == DIALOGUE_13 )
     {
       v5 = 5 * pNPC->uProfession;
       v6 = (char *)*(&pNPCStats->field_13A64 + v5);
-      v8 = 0;
       v7 = sub_495461(v6, uActiveCharacter - 1, 0, 0, 0, 0);
       pInString = v7;
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
     if ( (signed int)uDialogueType > DIALOGUE_18 )
@@ -16605,65 +16601,62 @@
           if ( byte_F8B1EC )
           {
             v6 = (char *)*(&pNPCStats->field_13A5C + 5 * pNPC->uProfession);
-            v8 = 0;
             v7 = sub_495461(v6, uActiveCharacter - 1, 0, 0, 0, 0);
             pInString = v7;
             pWindow.uFrameWidth = 460;
             pWindow.uFrameZ = 452;
             pOutString = pFontArrus;
-            v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+            v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
             if ( 352 - v12 < 8 )
             {
               pOutString = pFontCreate;
-              v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+              v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
             }
             pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
                               (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
             pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-            v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-            pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+            v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+            pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
             goto LABEL_42;
           }
           if ( pNPC->uFlags & 0x80 )
           {
             v6 = (char *)*(&pNPCStats->field_13A68 + 5 * pNPC->uProfession);
-            v8 = 0;
             v7 = sub_495461(v6, uActiveCharacter - 1, 0, 0, 0, 0);
             pInString = v7;
             pWindow.uFrameWidth = 460;
             pWindow.uFrameZ = 452;
             pOutString = pFontArrus;
-            v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+            v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
             if ( 352 - v12 < 8 )
             {
               pOutString = pFontCreate;
-              v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+              v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
             }
             pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
                                (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
             pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-            v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-            pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+            v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+            pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
             goto LABEL_42;
           }
           v6 = (char *)*(&pNPCStats->field_13A64 + v5);
-          v8 = 0;
           v7 = sub_495461(v6, uActiveCharacter - 1, 0, 0, 0, 0);
           pInString = v7;
           pWindow.uFrameWidth = 460;
           pWindow.uFrameZ = 452;
           pOutString = pFontArrus;
-          v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+          v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
           if ( 352 - v12 < 8 )
           {
             pOutString = pFontCreate;
-            v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+            v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
           }
           pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
                                      (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
           pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-          v13 = FitTextInAWindow(pInString, pOutString,  &pWindow, 0xDu, v8);
-          pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+          v13 = FitTextInAWindow(pInString, pOutString,  &pWindow, 0xDu, 0);
+          pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
           goto LABEL_42;
         }
         goto LABEL_24;
@@ -16671,22 +16664,21 @@
       if ( byte_5B0938[0] )
         goto LABEL_24;
       v7 = (char *)ptr_F8B1E8;
-      v8 = 0;
       pInString = v7;
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
   }
@@ -16705,30 +16697,29 @@
   {
     if ( *(int *)v54 == 2 )
     {
-      v8 = 0;
       if ( pNPC->uFlags & 0x80 )
         v9 = (char *)pNPCStats->pProfessions[pNPC->uProfession].pDismissText;
       else
         v9 = (char *)pNPCStats->pProfessions[pNPC->uProfession].pJoinText; //"Invalid String Passed"
-      v10 = sub_495461(v9, uActiveCharacter - 1, 0, 0, 0, 0);
+       pInString = sub_495461(v9, uActiveCharacter - 1, 0, 0, 0, 0);
 LABEL_32:
-      pInString = v10;
-      if ( v10 == (char *)v8 )
+
+      if (  pInString == NULL )
         goto LABEL_42;
       pWindow.uFrameWidth = 460;
       pWindow.uFrameZ = 452;
       pOutString = pFontArrus;
-      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+      v12 = pFontArrus->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       if ( 352 - v12 < 8 )
       {
         pOutString = pFontCreate;
-        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, v8) + 7;
+        v12 = pFontCreate->CalcTextHeight(pInString, &pWindow, 13, 0) + 7;
       }
       pRenderer->_4A6A68(8, 352 - v12, (Texture *)(uTextureID_Leather != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_Leather] : 0),
         (uTextureID_Leather != -1 ? pIcons_LOD->pTextures[uTextureID_Leather].uTextureHeight : 26) - v12);
       pRenderer->DrawTextureIndexed(8u, 347 - v12, pTexture_591428);
-      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, v8);
-      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, v8, v13, v8, v8, v8);
+      v13 = FitTextInAWindow(pInString, pOutString, &pWindow, 0xDu, 0);
+      pDialogueWindow->DrawText(pOutString, 13, 354 - v12, 0, v13, 0, 0, 0);
       goto LABEL_42;
     }
   }
@@ -16794,7 +16785,7 @@
       {
         if ( pNPC->uFlags & 0x80 )
         {
-          sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[408], pNPC->pName);
+          sprintf(pTmpBuf, (const char*)pGlobalTXT_LocalizationStrings[408], pNPC->pName);
           v24 = pTmpBuf;
           goto LABEL_79;
         }
@@ -18141,7 +18132,7 @@
 LABEL_119:
               v56 = &pParty->pPlayers[v57];
 LABEL_120:
-              v56->PlaySound(v114, v118);
+              v56->PlaySound((PlayerSpeech)v114, v118);
               ++v122;
               //v4 = v124;
               //v5 = pSomeEVT;
@@ -18150,12 +18141,12 @@
               break;
             }
             v55 = pParty->pPlayers;
-            do
-            {
-              v55->PlaySound(_evt->v6, 0);
+            for (int iii = 0; iii < 4; ++iii)
+            {
+              v55->PlaySound((PlayerSpeech)_evt->v6, 0);
               ++v55;
             }
-            while ( (signed int)v55 < (signed int)pParty->pHirelings );
+            //while ( (signed int)v55 < (signed int)pParty->pHirelings );
             ++v122;
             //v4 = v124;
             //v5 = pSomeEVT;
--- a/mm7_4.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_4.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -49,6 +49,7 @@
 #include "stru351.h"
 #include "Events2D.h"
 #include "stru159.h"
+#include "texts.h"
 #include "Log.h"
 
 #include "mm7_data.h"
@@ -3147,7 +3148,7 @@
     if ( qword_A750D8 <= 0 )
     {
       if ( pPlayers[word_A750E2]->CanAct() )
-        pPlayers[word_A750E2]->PlaySound(word_A750E0, 0);
+        pPlayers[word_A750E2]->PlaySound((PlayerSpeech)word_A750E0, 0);
       qword_A750D8 = 0i64;
     }
   }
@@ -9565,7 +9566,7 @@
                 v13[1] |= 1u;
                 break;
             }
-            pPlayers[uActiveCharacter]->PlaySound(85, 0);
+            pPlayers[uActiveCharacter]->PlaySound(SPEECH_85, 0);
           }
           if ( (signed int)pMessageQueue_50CBD0->uNumMessages < 40 )
           {
@@ -9635,9 +9636,9 @@
           if ( uActiveCharacter )
           {
             v25 = 0;
-            v23 = 86;
+            v23 = SPEECH_86;
 LABEL_50:
-            pPlayers[v11]->PlaySound(v23, v25);
+            pPlayers[v11]->PlaySound((PlayerSpeech)v23, v25);
             goto _return;
           }
         }
@@ -9664,7 +9665,7 @@
       ptr_F8B1E8 = (char *)*(&pNPCStats->field_13A64 + 5 * v2->uProfession);
       ptr_F8B1E8 = sub_495461((char *)ptr_F8B1E8, uActiveCharacter - 1, 0, 0, 0, 0);
       if ( uActiveCharacter )
-        pPlayers[uActiveCharacter]->PlaySound(38, 0);
+        pPlayers[uActiveCharacter]->PlaySound(SPEECH_38, 0);
       v19 = pGlobalTXT_LocalizationStrings[155];
       goto LABEL_77;
     }
@@ -11762,7 +11763,7 @@
               if ( uCurrentlyLoadedLevelType == LEVEL_Outdoor )
                 pOutdoor->SetFog();
             }
-            v0->PlaySound(87, 0);
+            v0->PlaySound(SPEECH_87, 0);
             sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[430], v0->pName, v0->uLevel, v0->uLevel / 10 + 5);// 
                                                 // "%s is now Level %lu and has earned %lu Skill Points!"
             ShowStatusBarString(pTmpBuf, 2u);
@@ -12692,7 +12693,7 @@
         byte_F8B1EC = 0;
         uDialogueType = 13;
         if ( uActiveCharacter )
-          pPlayers[uActiveCharacter]->PlaySound(38, 0);
+          pPlayers[uActiveCharacter]->PlaySound(SPEECH_38, 0);
         v7 = pGlobalTXT_LocalizationStrings[155];
         goto LABEL_64;
       }
@@ -12724,7 +12725,7 @@
     if ( (uDialogue_SpeakingActorNPC_ID & 0x80000000u) == 0 )
       pDialogue_SpeakingActor->uAIState = Removed;
     if ( uActiveCharacter )
-      pPlayers[uActiveCharacter]->PlaySound(61, 0);
+      pPlayers[uActiveCharacter]->PlaySound(SPEECH_61, 0);
     goto LABEL_87;
   }
   if ( v3 == 22 )
@@ -13496,7 +13497,7 @@
           }
         }
         ++byte_F8B1EF[v29];
-        v1->PlaySound(83, 0);
+        v1->PlaySound(SPEECH_83, 0);
         ShowStatusBarString(pGlobalTXT_LocalizationStrings[527], 2u);
         goto LABEL_46;
       }
@@ -13557,7 +13558,7 @@
     HIDWORD(v1->pConditions[17]) = (int)v39;
 LABEL_63:
     pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|0x2), -1, 0, -1, 0, 0, 0, 0);
-    v1->PlaySound(82, 0);
+    v1->PlaySound(SPEECH_82, 0);
     pOtherOverlayList->_4418B1(20, uActiveCharacter + 99, 0, 65536);
 LABEL_46:
     result = pMessageQueue_50CBD0->uNumMessages;
@@ -14220,7 +14221,7 @@
         v12 = (unsigned __int8)v5[8];
         if ( (signed int)ptr_507BC0->ptr_1C >= 63 )
         {
-          v63 = 72;
+          v63 = SPEECH_72;
           v13 = 2500;
           if ( CheckHiredNPCSpeciality(8u) )
             v12 -= 2;
@@ -14230,7 +14231,7 @@
         }
         else
         {
-          v63 = 71;
+          v63 = SPEECH_71;
           v13 = 1500;
           v47[1] = (const char *)35;
         }
@@ -14241,7 +14242,7 @@
         if ( v12 < 1 )
           v12 = 1;
         RestAndHeal(1440 * v12);
-        v61->PlaySound(v63, 0);
+        v61->PlaySound((PlayerSpeech)v63, 0);
         v14 = GetTickCount();
         v15 = v14 + v13;
         if ( v15 < v14 )
@@ -14900,7 +14901,7 @@
   if ( BYTE1(pAnimatedRooms[p2DEvents[v9 - 1].uAnimationID].field_C) )
     HousePlaySomeSound(v9, 1);
   if ( uCurrentlyLoadedLevelType == LEVEL_Indoor && uActiveCharacter && pParty->uFlags & 0x30 )
-    pPlayers[uActiveCharacter]->PlaySound(47, 0);
+    pPlayers[uActiveCharacter]->PlaySound(SPEECH_47, 0);
   result = v23;
   if ( v23 )
     uCurrentHouse_Animation = v23;
@@ -15106,7 +15107,7 @@
       sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[414], v6, aAMPMNames[v7], v9, aAMPMNames[v8]);
       ShowStatusBarString(pTmpBuf, 2u);
       if ( uActiveCharacter )
-        pPlayers[uActiveCharacter]->PlaySound(3, 0);
+        pPlayers[uActiveCharacter]->PlaySound(SPEECH_3, 0);
       return 0;
     }
   }
--- a/mm7_5.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_5.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -41,6 +41,7 @@
 #include "stru298.h"
 #include "StorylineTextTable.h"
 #include "Events2D.h"
+#include "texts.h"
 #include "Log.h"
 
 #include "mm7_data.h"
@@ -2879,9 +2880,9 @@
             {
               v89 = uActiveCharacter;
               v176 = 0;
-              v160 = 108;
+              v160 = SPEECH_108;
 LABEL_619:
-              pPlayers[v89]->PlaySound(v160, v176);
+              pPlayers[v89]->PlaySound((PlayerSpeech)v160, v176);
             }
           }
           else
@@ -3022,7 +3023,7 @@
           pPlayers[uActiveCharacter]->uQuickSpell = v99;
           stru_A750F8[uActiveCharacter + 3]._494836(v99, uActiveCharacter);
           if ( uActiveCharacter )
-            pPlayer10->PlaySound(12, 0);
+            pPlayer10->PlaySound(SPEECH_12, 0);
           byte_506550 = 0;
           continue;
         case UIMSG_33:
@@ -3243,7 +3244,7 @@
           pRenderer->SavePCXImage("gamma.pcx", (char *)uNumSeconds, 155, 117);
           free((void *)uNumSeconds);
           stru_506E40._40E55E("gamma.pcx", 0);
-          GUIWindow::Create(0x25Au, 0x1C2u, 0, 0, (enum WindowType)92, (int)pBtn_GameSettings, 0);
+          GUIWindow::Create(0x25Au, 0x1C2u, 0, 0, WINDOW_VoiceSwitcherButton, (int)pBtn_GameSettings, 0);
 //LABEL_453:
           if ( (signed int)pMessageQueue_50CBD0->uNumMessages >= 40 )
             continue;
@@ -3342,7 +3343,7 @@
             {
               *(short *)v105 = uNumSeconds + 1;
               pPlayer4->uSkillPoints -= pPlayer4->pActiveSkills[uMessageParam] & 0x3F;
-              pPlayer4->PlaySound(14, 0);
+              pPlayer4->PlaySound(SPEECH_14, 0);
               v165 = 0;
               v151 = 0;
               v144 = 0;
@@ -3744,11 +3745,11 @@
   enum PLAYER_SKILL_TYPE v6; // edi@37
   GUIWindow *pWindow; // eax@56
   unsigned int v8; // edx@56
-  Player *pCurrentPlayer; // edi@57
+  //Player *pCurrentPlayer; // edi@57
   signed int v10; // eax@58
   GUIButton *pButton; // eax@59
-  unsigned __int8 v12; // sf@62
-  signed int v13; // eax@64
+  //unsigned __int8 v12; // sf@62
+  //signed int v13; // eax@64
   unsigned int v14; // eax@66
   int v15; // edi@70
   char v16; // zf@73
@@ -3777,7 +3778,7 @@
   int v43; // [sp-10h] [bp-20h]@56
   int uNum; // [sp+4h] [bp-Ch]@3
   UIMessageType pUIMessageType; // [sp+8h] [bp-8h]@3
-  int pSex; // [sp+Ch] [bp-4h]@3
+  //int pSex; // [sp+Ch] [bp-4h]@3
   Player *pPlayer;
 
   if ( pMessageQueue_50CBD0->uNumMessages )
@@ -3787,7 +3788,9 @@
     pPlayer = pParty->pPlayers;
     do
     {
-      pMessageQueue_50CBD0->PopMessage(&pUIMessageType, &uNum, &pSex);
+      int param2;
+      pMessageQueue_50CBD0->PopMessage(&pUIMessageType, &uNum, &param2);
+
       switch (pUIMessageType) // For buttons of window MainMenu
       {
         case UIMSG_MainMenu_ShowPartyCreationWnd:
@@ -3816,6 +3819,99 @@
         continue;
       }
 
+      
+      switch (pUIMessageType) // For buttons of Party Creation Window
+      {
+        case UIMSG_PlayerCreation_SelectAttribute:
+        {
+            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
+                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
+            uPlayerCreationUI_SelectedCharacter = uNum;
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+        }
+        continue;
+
+        case UIMSG_PlayerCreation_VoicePrev:
+        {
+            auto player = &pParty->pPlayers[uNum];
+            auto sex = player->GetSexByVoice();
+            do
+            {
+              if (player->uVoiceID == 0)
+                player->uVoiceID = 19;
+              else --player->uVoiceID;
+            }
+            while (player->GetSexByVoice() != sex);
+
+            pButton = pCreationUI_BtnPressLeft2[uNum];
+            GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, WINDOW_VoiceSwitcherButton, (int)pButton, 1);
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+            player->PlaySound(SPEECH_PickMe, 0);
+        }
+        continue;
+
+        case UIMSG_PlayerCreation_VoiceNext:
+        {
+            auto player = &pParty->pPlayers[uNum];
+            auto sex = player->GetSexByVoice();
+            do
+            {
+              player->uVoiceID = (player->uVoiceID + 1) % 20;
+            }
+            while (player->GetSexByVoice() != sex);
+
+            pButton = pCreationUI_BtnPressRight2[uNum];
+            GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, WINDOW_VoiceSwitcherButton, (int)pButton, 1);
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+            player->PlaySound(SPEECH_PickMe, 0);
+        }
+        continue;
+
+        case UIMSG_PlayerCreation_FacePrev:
+        {
+            pPlayer = &pParty->pPlayers[uNum];
+            unsigned char v12 = (char)((int)pPlayer->uFace - 1) < 0;
+            --pPlayer->uFace;
+            if ( v12 )
+              pPlayer->uFace = 19;
+            pPlayer->uVoiceID = pPlayer->uFace;
+            pPlayer->SetInitialStats();
+            pPlayer->SetSexByVoice();
+            pPlayer->RandomizeName();
+            v25 = uNum;
+            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
+                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
+            uPlayerCreationUI_SelectedCharacter = v25;
+            GUIWindow::Create(pCreationUI_BtnPressLeft[v25]->uX, pCreationUI_BtnPressLeft[v25]->uY, 0, 0, WINDOW_VoiceSwitcherButton, (int)pCreationUI_BtnPressLeft[v25], 1);
+            //v0 = pAudioPlayer;
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0.0, 0);
+            pPlayer->PlaySound(SPEECH_PickMe, 0);
+            //v1 = (char *)pParty->pPlayers;
+        }
+        continue;
+
+        case UIMSG_PlayerCreation_FaceNext:
+        {
+            pPlayer = &pParty->pPlayers[uNum];
+            v20 = (char)((int)pPlayer->uFace + 1) % 20;
+            pPlayer->uFace = v20;
+            pPlayer->uVoiceID = v20;
+            pPlayer->SetInitialStats();
+            pPlayer->SetSexByVoice();
+            pPlayer->RandomizeName();
+            v21 = uNum;
+            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
+                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
+            uPlayerCreationUI_SelectedCharacter = v21;
+            GUIWindow::Create(pCreationUI_BtnPressRight[v21]->uX, pCreationUI_BtnPressRight[v21]->uY, 0, 0, WINDOW_VoiceSwitcherButton, (int)pCreationUI_BtnPressRight[v21], 1);
+            //v0 = pAudioPlayer;
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
+            pPlayer->PlaySound(SPEECH_PickMe, 0);
+            //v1 = (char *)pParty->pPlayers;
+        }
+        continue;
+      }
+
       switch (pUIMessageType) // For buttons of window LoadGame
       {
         case UIMSG_LoadGame:
@@ -3887,50 +3983,6 @@
       {
         if ( pUIMessageType > UIMSG_DownArrow )
         {
-          if ( pUIMessageType == UIMSG_SelectFacePlayerBack )
-          {
-            pPlayer = &pParty->pPlayers[uNum];
-            v12 = (char)((int)pPlayer->uFace - 1) < 0;
-            --pPlayer->uFace;
-            if ( v12 )
-              pPlayer->uFace = 19;
-            pPlayer->uVoiceID = pPlayer->uFace;
-            pPlayer->SetInitialStats();
-            pPlayer->SetSexByVoice();
-            pPlayer->RandomizeName();
-            v25 = uNum;
-            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
-                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
-            uPlayerCreationUI_SelectedCharacter = v25;
-            GUIWindow::Create(pCreationUI_BtnPressLeft[v25]->uX, pCreationUI_BtnPressLeft[v25]->uY, 0, 0,
-              (enum WindowType)92, (int)pCreationUI_BtnPressLeft[v25], 1);
-            //v0 = pAudioPlayer;
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0.0, 0);
-            pPlayer->PlaySound(102, 0);
-            //v1 = (char *)pParty->pPlayers;
-            continue;
-          }
-          if ( pUIMessageType == UIMSG_SelectFacePlayerForward )
-          {
-            pPlayer = &pParty->pPlayers[uNum];
-            v20 = (char)((int)pPlayer->uFace + 1) % 20;
-            pPlayer->uFace = v20;
-            pPlayer->uVoiceID = v20;
-            pPlayer->SetInitialStats();
-            pPlayer->SetSexByVoice();
-            pPlayer->RandomizeName();
-            v21 = uNum;
-            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
-                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
-            uPlayerCreationUI_SelectedCharacter = v21;
-            GUIWindow::Create(pCreationUI_BtnPressRight[v21]->uX, pCreationUI_BtnPressRight[v21]->uY, 0, 0, (enum WindowType)92,
-            (int)pCreationUI_BtnPressRight[v21], 1);
-            //v0 = pAudioPlayer;
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0, 0);
-            pPlayer->PlaySound(102, 0);
-            //v1 = (char *)pParty->pPlayers;
-            continue;
-          }
           if ( pUIMessageType == UIMSG_AD )//unknow
           {
             __debugbreak();
@@ -3957,7 +4009,7 @@
             pCurrentScreen = SCREEN_GAME;
             viewparams->bRedrawGameUI = 1;
           }
-          GUIWindow::Create(602, 450, 0, 0, (enum WindowType)92, (int)pBtn_GameSettings, 0);
+          GUIWindow::Create(602, 450, 0, 0, WINDOW_VoiceSwitcherButton, (int)pBtn_GameSettings, 0);
           if ( (signed int)pMessageQueue_50CBD0->uNumMessages >= 40 )
             continue;
           pMessageQueue_50CBD0->pMessages[pMessageQueue_50CBD0->uNumMessages].eType = UIMSG_Escape;
@@ -4045,50 +4097,6 @@
             //VideoPlayer::dtor();
           }
         }
-        else
-        {
-          if ( pUIMessageType == UIMSG_PlayerCreationSelectQuality )
-          {
-            pGUIWindow_CurrentMenu->pCurrentPosActiveItem = (pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem)
-                                                      % 7 + pGUIWindow_CurrentMenu->pStartingPosActiveItem + 7 * uNum;
-            uPlayerCreationUI_SelectedCharacter = uNum;
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0, 0);
-            continue;
-          }
-          if ( pUIMessageType == UIMSG_PlayerCreationVoiceBack )//    
-          {
-            pCurrentPlayer = &pPlayer[uNum];
-            pSex = pCurrentPlayer->GetSexByVoice();
-            do
-            {
-              v12 = (pCurrentPlayer->uVoiceID-- - 1) == 0;
-              if ( v12 )
-                pCurrentPlayer->uVoiceID = 19;
-              v13 = pCurrentPlayer->GetSexByVoice();
-            }
-            while ( v13 != pSex );
-            pButton = pCreationUI_BtnPressLeft2[uNum];
-            GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, (enum WindowType)92, (int)pButton, 1);
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0, 0);
-            pCurrentPlayer->PlaySound(102, 0);
-            continue;
-          }
-          if ( pUIMessageType == UIMSG_PlayerCreationVoiceForward )
-          {
-            pCurrentPlayer = &pPlayer[uNum];
-            pSex = pCurrentPlayer->GetSexByVoice();
-            do
-            {
-              pCurrentPlayer->uVoiceID = (signed int)(pCurrentPlayer->uVoiceID + 1) % 20;
-            }
-            while ( pCurrentPlayer->GetSexByVoice() != pSex );
-            pButton = pCreationUI_BtnPressRight2[uNum];
-            GUIWindow::Create(pButton->uX, pButton->uY, 0, 0, (enum WindowType)92, (int)pButton, 1);
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0, 0);
-            pCurrentPlayer->PlaySound(102, 0);
-            continue;
-          }
-        }
       }
       else
       {
@@ -4133,7 +4141,7 @@
           if ( pUIMessageType == UIMSG_PlayerCreationSelectClass )
           {
             pPlayer[uPlayerCreationUI_SelectedCharacter].Reset((PLAYER_CLASS_TYPE)uNum);
-            pAudioPlayer->PlaySound((SoundID)66, 0, 0, -1, 0, 0, 0, 0);
+            pAudioPlayer->PlaySound(SOUND_Button, 0, 0, -1, 0, 0, 0, 0);
             continue;
           }
           if ( pUIMessageType == UIMSG_PlayerCreationClickOK )
@@ -4156,7 +4164,7 @@
             {
               uPlayerCreationUI_SelectedCharacter = uNum;
               v4 = pGUIWindow_CurrentMenu->pCurrentPosActiveItem - pGUIWindow_CurrentMenu->pStartingPosActiveItem;
-              pSex = pGUIWindow_CurrentMenu->pStartingPosActiveItem;
+              int pSex = pGUIWindow_CurrentMenu->pStartingPosActiveItem;
               v41 = 2;
               v5 = v4 % 7 + pSex + 7 * uNum;
               pGUIWindow_CurrentMenu->pCurrentPosActiveItem = v5;
@@ -5127,7 +5135,7 @@
 // 50FE08: using guessed type stru298 stru_50FE08;
 
 //----- (00439474) --------------------------------------------------------
-bool __fastcall DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, Vec3_int_ *pVelocity)
+void DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, Vec3_int_ *pVelocity)
 {
   signed int v3; // eax@1
   LayingItem *v4; // ebx@1
@@ -5212,8 +5220,8 @@
   }
   v5 = v3 & 7;
   uPlayerID = v3 >> 3;
-  if ( v5 != 4 )
-    return uPlayerID;
+  if (v5 != OBJECT_Player)
+    return;
   pPlayer = &pParty->pPlayers[uPlayerID];
   if ( uPlayerID < 0 && uPlayerID > 3 )
   {
@@ -5222,7 +5230,7 @@
   pMonster = &pActors[uActorID_Monster_];
   uPlayerID = pMonster->IsAlive();
   if ( uPlayerID )
-    return uPlayerID;
+    return;
   BYTE1(pMonster->uAttributes) |= 0xC0u;
   if ( pMonster->uAIState == Fleeing )
     pMonster->uAttributes |= 0x20000u;
@@ -5311,7 +5319,7 @@
     if ( uPlayerID >= 2560 )
     {
       if ( v61 >= 5120 && !(BYTE1(pMonster->uAttributes) & 4) )
-        return uPlayerID;
+        return;
       v61 = 2;
     }
     else
@@ -5363,8 +5371,8 @@
       if ( !stru_50C198.PlayerHitOrMiss(pPlayer, pMonster, v61, a4) )
       {
 LABEL_68:
-        LOWORD(uPlayerID) = pPlayer->PlaySound(52, 0);
-        return uPlayerID;
+        pPlayer->PlaySound(SPEECH_52, 0);
+        return;
       }
       goto LABEL_69;
     }
@@ -5515,10 +5523,10 @@
     Actor::_43AC45(uActorID_Monster_, 1);
     if ( pMonster->pMonsterInfo.uExp )
       sub_4269A2_GivePartyExp(pMonsterStats->pInfos[pMonster->pMonsterInfo.uID].uExp);
-    v40 = 51;
+    v40 = SPEECH_51;
     if ( rand() % 100 < 20 )
       v40 = ((signed int)pMonster->pMonsterInfo.uHP >= 100) + 1;
-    pPlayer->PlaySound(v40, 0);
+    pPlayer->PlaySound((PlayerSpeech)v40, 0);
     v41 = 0;
     if ( bShowDamage )
     {
@@ -5585,7 +5593,7 @@
     pMonster->vVelocity.y = 50 * LOWORD(pVelocity->y);
     pMonster->vVelocity.z = 50 * LOWORD(pVelocity->z);
   }
-  return Actor::AddBloodsplatOnDamageOverlay(uActorID_Monster_, 1, v61);
+  Actor::AddBloodsplatOnDamageOverlay(uActorID_Monster_, 1, v61);
 }
 // 4D864C: using guessed type char byte_4D864C;
 
@@ -5832,10 +5840,10 @@
                 Actor::_43AC45(uActorID, 1);
                 if ( v7->pMonsterInfo.uExp )
                   sub_4269A2_GivePartyExp(pMonsterStats->pInfos[v7->pMonsterInfo.uID].uExp);
-                v34 = 51;
+                v34 = SPEECH_51;
                 if ( rand() % 100 < 20 )
                   v34 = ((signed int)v7->pMonsterInfo.uHP >= 100) + 1;
-                v6->PlaySound(v34, 0);
+                v6->PlaySound((PlayerSpeech)v34, 0);
               }
             }
           }
@@ -5860,7 +5868,7 @@
         if ( v6->sHealth > 0 )
         {
           if ( (double)v6->GetMaxHealth() * 0.25 >= (double)v6->sHealth )
-            v6->PlaySound(48, 0);
+            v6->PlaySound(SPEECH_48, 0);
         }
       }
     }
@@ -5892,7 +5900,7 @@
       {
 		  sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[637], v45->pName);
         ShowStatusBarString(pTmpBuf, 2u);
-        v45->PlaySound(6, 0);
+        v45->PlaySound(SPEECH_6, 0);
         return;
       }
     }
@@ -6018,10 +6026,10 @@
                       Actor::_43AC45(uActorID, 1);
                       if ( v44->pMonsterInfo.uExp )
                         sub_4269A2_GivePartyExp(pMonsterStats->pInfos[v44->pMonsterInfo.uID].uExp);
-                      v64 = 51;
+                      v64 = SPEECH_51;
                       if ( rand() % 100 < 20 )
                         v64 = ((signed int)v44->pMonsterInfo.uHP >= 100) + 1;
-                      v45->PlaySound(v64, 0);
+                      v45->PlaySound((PlayerSpeech)v64, 0);
                     }
                   }
                 }
@@ -12794,7 +12802,7 @@
     pTmpBuf,
     "%s\n%d",
     pGlobalTXT_LocalizationStrings[522],
-    *(&pSpellDatas[0].field_14
+    *(&pSpellDatas[0].field_12 //temp_fix field_14
     + ((unsigned int)LOBYTE(v1->pActiveSkills[v1->pNumSpellBookPage + 12]) >> 6)
     + 10 * (int)((char *)v10 + 11 * v1->pNumSpellBookPage)));
   a1.DrawTitleText(pFontComic, 0xCu, a1.uFrameHeight - LOBYTE(pFontComic->uFontHeight) - 16, 0, pTmpBuf, 3u);
@@ -15294,7 +15302,7 @@
           continue;
         }
         v18 = v17 - 1;
-        if ( pWindowType == WINDOW_5C ) // Change page in AutonotesBook
+        if ( pWindowType == WINDOW_VoiceSwitcherButton ) // Change page in AutonotesBook
         {
           if ( pWindow->Hint != (char *)1 )
             pAudioPlayer->PlaySound((SoundID)75, 0, 0, -1, 0, 0, 0, 0);
@@ -15890,7 +15898,7 @@
                 *(int *)(v22 + 552) |= 1u;
               if ( !dword_4E455C )
                 goto LABEL_92;
-              v0->PlaySound(16, 0);
+              v0->PlaySound(SPEECH_16, 0);
               goto LABEL_91;
             }
             if ( v45 )
@@ -15931,7 +15939,7 @@
     if ( dword_4E455C )
     {
       if ( v0->CanAct() )
-        v0->PlaySound(17, 0);
+        v0->PlaySound(SPEECH_17, 0);
       ShowStatusBarString(pGlobalTXT_LocalizationStrings[444], 2u);
 LABEL_91:
       dword_4E455C = 0;
@@ -15979,7 +15987,7 @@
   dword_50CDCC = 1;
   if ( dword_4E455C )
   {
-    v0->PlaySound(16, 0);
+    v0->PlaySound(SPEECH_16, 0);
     dword_4E455C = 0;
   }
 }
--- a/mm7_6.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_6.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -39,6 +39,7 @@
 #include "Weather.h"
 #include "stru272.h"
 #include "stru298.h"
+#include "texts.h"
 #include "StorylineTextTable.h"
 #include "Events2D.h"
 
@@ -1415,9 +1416,9 @@
     Dst.uItemID = pActor->uCarriedItemID;
     v9 = pItemsTable->pItems[Dst.uItemID].pUnidentifiedName;
     if ( v14 )
-      sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[490], v14, v9);
+      sprintf(pTmpBuf2, (char*)pGlobalTXT_LocalizationStrings[490], v14, v9);
     else
-      sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[471], v9);
+      sprintf(pTmpBuf2, (char*)pGlobalTXT_LocalizationStrings[471], v9);
     ShowStatusBarString(pTmpBuf2, 2u);
     v4 = Dst.uItemID;
     v5 = Dst.uItemID;
@@ -4071,7 +4072,7 @@
                       }
                       if ( v727 != 0.0 )
                       {
-                        pPlayer->PlaySound(49, 0);
+                        pPlayer->PlaySound(SPEECH_49, 0);
                         goto LABEL_1162;
                       }
                     }
@@ -5312,7 +5313,7 @@
             pAudioPlayer->PlaySound(SOUND_PlayerCantCastSpell, v1, v1, -1, v1, v1, v1, v1);
             v318 = v726;
             v3->spellnum = v1;
-            v318->PlaySound(43, v1);
+            v318->PlaySound(SPEECH_43, v1);
           }
           goto LABEL_83;
         }
@@ -6089,7 +6090,7 @@
           || HIDWORD(pParty->pPlayers[v396].pConditions[14]) | LODWORD(pParty->pPlayers[v396].pConditions[14]) )
         {
           if ( !(HIDWORD(pParty->pPlayers[v396].pConditions[1]) | LODWORD(pParty->pPlayers[v396].pConditions[1])) )
-            pParty->pPlayers[v396].PlaySound(25, v1);
+            pParty->pPlayers[v396].PlaySound(SPEECH_25, v1);
           if ( v731 == 4 )
           {
             v397 = v3->uPlayerID_2;
@@ -6424,7 +6425,7 @@
         if ( HIDWORD(pParty->pPlayers[v440].pConditions[5]) | LODWORD(pParty->pPlayers[v440].pConditions[5]) )
         {
           if ( !(HIDWORD(pParty->pPlayers[v440].pConditions[1]) | LODWORD(pParty->pPlayers[v440].pConditions[1])) )
-            pParty->pPlayers[v440].PlaySound(25, v1);
+            pParty->pPlayers[v440].PlaySound(SPEECH_25, v1);
           if ( v731 == 4 )
           {
             v441 = v3->uPlayerID_2;
@@ -6475,7 +6476,7 @@
           }
           else
           {
-            sprintf(pTmpBuf2, pGlobalTXT_LocalizationStrings[471], pItemsTable->pItems[v450].pUnidentifiedName);
+            sprintf(pTmpBuf2, (char*)pGlobalTXT_LocalizationStrings[471], pItemsTable->pItems[v450].pUnidentifiedName);
             ShowStatusBarString(pTmpBuf2, 2u);
             if ( !pParty->AddItem(&pLayingItems[v445].stru_24) )
               pParty->SetHoldingItem(&pLayingItems[v445].stru_24);
@@ -7740,7 +7741,7 @@
         v222 = (char *)HIDWORD(v733);
         if ( v223 )
 LABEL_439:
-          ((Player *)v222)->PlaySound(103, v1);
+          ((Player *)v222)->PlaySound(SPEECH_103, v1);
       }
       v222 += 6972;
       HIDWORD(v733) = (int)v222;
@@ -8049,7 +8050,7 @@
         else
         {
           v34 = 5;
-          v1->PlaySound(50, v3);
+          v1->PlaySound(SPEECH_50, v3);
         }
         switch ( v34 )
         {
@@ -9110,14 +9111,12 @@
             v5->Add(partyAction);
             break;
           case INPUT_Yell:
-            //__debugbreak();
-            if ( !pCurrentScreen
-              && uActiveCharacter )
+            if (!pCurrentScreen && uActiveCharacter)
             {
               pParty->Yell();
-              pPlayers[uActiveCharacter]->PlaySound(65, 0);
+              pPlayers[uActiveCharacter]->PlaySound(SPEECH_Yell, 0);
             }
-            break;
+          break;
           case INPUT_Pass:
             //__debugbreak();
             if ( pCurrentScreen )
--- a/mm7_data.cpp	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_data.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -542,7 +542,7 @@
 char aS100S[777]; // idb
 char aS100D[777]; // idb
 char aS180[6]; // idb
-const char *format_4E2E68 = "%s\f%05u\t180%d\f00000 / %d\d";
+const char *format_4E2E68 = "%s\f%05u\t180%d\f00000 / %d\n";
 char aS_6[2]; // idb
 char aSS_0[777]; // idb
 char aS_5[4]; // idb
@@ -1094,7 +1094,7 @@
   "pc19lhu", "pc20lhu", "pc21lhu", "pc22lhu", "pc23lhu", "pc24lhu",
   "pc25lhu"
 };
-short SoundSetAction[192]=
+short SoundSetAction[192]= // 4ED3D8
 {
 	0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 37, 38, 45, 0, 0, 37, 0, 0, 47, 53, 0, 0, 0, 2, 0, 0, 25, 0, 0, 0, 0, 1, 0, 0, 47, 0,
 	0, 0, 0, 3, 0, 0, 41, 42, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 5, 0, 0, 21, 22, 23, 24, 45, 6, 0, 0, 47, 0, 0, 0, 0, 7, 0,
@@ -1530,7 +1530,7 @@
 int dword_5C35D4; // weak
 char *aAMPMNames[2];
 char byte_5C45AF[777]; // weak
-char pTmpBuf3[2048];
+
 char pFinalMessage[4096]; // idb
 char pTmpBuf[2000];
 char pTmpBuf2[2000];
@@ -1571,10 +1571,10 @@
 struct StorylineText *pStorylineText;
 struct FactionTable *pFactionTable;
 char byte_5C8D1A[777]; // weak
-char *pGlobalTXT_LocalizationStrings[677];
+
 char byte_5E4C15[777]; // weak
 char *pSomeItemsNames[14];
-char *pGlobalTXT_Raw;
+
 char *pMonstersTXT_Raw;
 char *pMonsterPlacementTXT_Raw;
 char *pSpellsTXT_Raw;
--- a/mm7_data.h	Sat Feb 16 08:42:43 2013 +0600
+++ b/mm7_data.h	Sat Feb 16 08:42:58 2013 +0600
@@ -1415,10 +1415,10 @@
 extern struct StorylineText *pStorylineText;
 extern struct FactionTable *pFactionTable;
 extern char byte_5C8D1A[]; // weak
-extern char *pGlobalTXT_LocalizationStrings[677];
+
 extern char byte_5E4C15[]; // weak
 extern char *pSomeItemsNames[14];
-extern char *pGlobalTXT_Raw;
+
 extern char *pMonstersTXT_Raw;
 extern char *pMonsterPlacementTXT_Raw;
 extern char *pSpellsTXT_Raw;
@@ -2078,9 +2078,7 @@
 inline void __fastcall j_memset32(int a2, void *a1, unsigned int a3) {memset32(a1, a2, a3);}
 // int __cdecl crt_452B74();
 int __cdecl j_SetSomeItemsNames();
-void __cdecl SetSomeItemsNames();
-char *RemoveQuotes(char *Str);
-void __cdecl InitializeGameText();
+
 unsigned int __fastcall ParseSpellType(struct FrameTableTxtLine *, int a2);
 int __thiscall ParseAttackType(unsigned __int8 *_this);
 char __fastcall ParseDamage(const char *Str, int a2, int a3, int a4);
@@ -2386,7 +2384,7 @@
 int /*__usercall*/ sr_sub_4D72EC/*<eax>*/(int a1/*<ebp>*/);
 int /*__usercall*/ sr_sub_4D73DF/*<eax>*/(int a1/*<ebp>*/);
 signed int __fastcall SpawnRandomTreasure(struct MapInfo *a1, struct SpawnPointMM7 *a2);
-bool __fastcall DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, struct Vec3_int_ *pVelocity);
+void DamageMonsterFromParty(signed int a1, unsigned int uActorID_Monster, struct Vec3_int_ *pVelocity);
 
 
 #define ErrD3D(hr) do {extern void ErrHR(HRESULT, const char *, const char *, const char *, int); ErrHR(hr, "Direct3D", __FUNCTION__, __FILE__, __LINE__);} while(0)
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/texts.cpp	Sat Feb 16 08:42:58 2013 +0600
@@ -0,0 +1,377 @@
+
+#include <string.h>
+#include "Allocator.h"
+#include "stru287.h"
+#include "LOD.h"
+#include "mm7_data.h"
+#include "texts.h"
+
+
+
+
+
+static char *pGlobalTXT_Raw=NULL;
+
+char *pGlobalTXT_LocalizationStrings[MAX_LOC_STRINGS];
+
+
+//----- (00452B95) --------------------------------------------------------
+void __cdecl SetSomeItemsNames()
+	{
+	pSomeItemsNames[0] = pGlobalTXT_LocalizationStrings[568];
+	pSomeItemsNames[1] = pGlobalTXT_LocalizationStrings[271];
+	pSomeItemsNames[2] = pGlobalTXT_LocalizationStrings[272];
+	pSomeItemsNames[3] = pGlobalTXT_LocalizationStrings[273];
+	pSomeItemsNames[4] = pGlobalTXT_LocalizationStrings[274];
+	pSomeItemsNames[5] = pGlobalTXT_LocalizationStrings[275];
+	pSomeItemsNames[6] = pGlobalTXT_LocalizationStrings[276];
+	pSomeItemsNames[7] = pGlobalTXT_LocalizationStrings[277];
+	pSomeItemsNames[8] = pGlobalTXT_LocalizationStrings[278];
+	pSomeItemsNames[9] = pGlobalTXT_LocalizationStrings[279];
+	pSomeItemsNames[10] = pGlobalTXT_LocalizationStrings[280];
+	pSomeItemsNames[11] = pGlobalTXT_LocalizationStrings[281];
+	pSomeItemsNames[12] = pGlobalTXT_LocalizationStrings[282];
+	pSomeItemsNames[13] = pGlobalTXT_LocalizationStrings[143];
+	memset(&stru_5E4C50, 0, sizeof(stru_5E4C50));
+	}
+
+//----- (00452C30) --------------------------------------------------------
+char *RemoveQuotes(char *pStr)
+	{
+	if ( *pStr == '"' )
+		{
+		pStr[strlen(pStr) - 1] = 0;
+		return pStr + 1;
+		}
+	return pStr;
+	}
+
+//----- (00452C49) --------------------------------------------------------
+void InitializeGameText()
+	{
+	//char *v0; // ebx@1
+	/*char *v1; // eax@3
+	int v2; // ebp@4
+	char v3; // dl@5
+	char *v4; // ecx@5
+	int v5; // esi@9
+	//char **v6; // [sp+10h] [bp-8h]@3
+	signed int v7; // [sp+14h] [bp-4h]@4*/
+	char *test_string; // eax@3
+	char *tmp_pos; // eax@3
+	int step; // ebp@4
+	unsigned char c; // dl@5
+	int temp_str_len; // ecx@5
+	bool string_end; // [sp+14h] [bp-4h]@4
+	//v0 = 0;
+	if (pGlobalTXT_Raw)
+		pAllocator->FreeChunk(pGlobalTXT_Raw);
+	pGlobalTXT_Raw = (char *)pEvents_LOD->LoadRaw("global.txt", 0);
+
+/*	strtok(pGlobalTXT_Raw, "\r");
+	strtok(nullptr, "\r");
+	v1 = strtok(nullptr, "\r") + 1;
+
+	for (uint i = 0; i < 677; ++i)
+		{
+		char *p = v1;
+		while (*++p != '\t' && *p);
+
+		pGlobalTXT_LocalizationStrings[i] = RemoveQuotes(p + 1);
+
+		v1 = strtok(nullptr, "\r") + 1;
+		}*/
+	strtok((char *)pGlobalTXT_Raw, "\r");	   //Carriage Return 0D 13
+	strtok(NULL, "\r");					   	  //Carriage Return 0D 13
+	test_string = strtok(NULL, "\r") + 1;	 //Carriage Return 0D 13
+
+	for (int i = 0; i < MAX_LOC_STRINGS; ++i)
+		{
+		step = 0;
+		string_end = false;
+		do
+			{
+			c = *(unsigned char*)test_string;
+			temp_str_len = 0;
+			if (c!= '\t' )	// Horizontal tab 09 
+				{
+				do
+					{
+					if ( !c )
+						break; 
+					c = *(test_string+temp_str_len+1);
+					temp_str_len++;    
+					}
+				while ( c != '\t' );	// Horizontal tab 09 
+				}
+			tmp_pos=test_string+temp_str_len;
+			if (*tmp_pos == 0)
+				string_end = true;
+			*tmp_pos = 0;
+			if ( temp_str_len == 0)
+				string_end = true;
+			else
+				{
+				if ( step == 1 )
+					pGlobalTXT_LocalizationStrings[i] = RemoveQuotes(test_string);
+				}
+			++step;
+			test_string=tmp_pos+1;
+			}
+		while ( step <= 2 && !string_end);  
+
+		test_string = strtok(NULL, "\r") + 1;  //Carriage Return 0D 13
+		}	
+
+	aMonthNames[0] = pGlobalTXT_LocalizationStrings[415];  aMonthNames[1] = pGlobalTXT_LocalizationStrings[416];
+	aMonthNames[2] = pGlobalTXT_LocalizationStrings[417];  aMonthNames[3] = pGlobalTXT_LocalizationStrings[418];
+	aMonthNames[4] = pGlobalTXT_LocalizationStrings[419];  aMonthNames[5] = pGlobalTXT_LocalizationStrings[420];
+	aMonthNames[6] = pGlobalTXT_LocalizationStrings[421];  aMonthNames[7] = pGlobalTXT_LocalizationStrings[422];
+	aMonthNames[8] = pGlobalTXT_LocalizationStrings[423];  aMonthNames[9] = pGlobalTXT_LocalizationStrings[424];
+	aMonthNames[10] = pGlobalTXT_LocalizationStrings[425]; aMonthNames[11] = pGlobalTXT_LocalizationStrings[426];
+
+	aDayNames[0] = pGlobalTXT_LocalizationStrings[145];  aDayNames[1] = pGlobalTXT_LocalizationStrings[230];
+	aDayNames[2] = pGlobalTXT_LocalizationStrings[243];  aDayNames[3] = pGlobalTXT_LocalizationStrings[227];
+	aDayNames[4] = pGlobalTXT_LocalizationStrings[91];   aDayNames[5] = pGlobalTXT_LocalizationStrings[188];
+	aDayNames[6] = pGlobalTXT_LocalizationStrings[222];
+
+	
+	pClassNames [0] = pGlobalTXT_LocalizationStrings[LOCSTR_KNIGHT];
+	pClassNames [1] = pGlobalTXT_LocalizationStrings[LOCSTR_CAVALIER];
+	pClassNames [2] = pGlobalTXT_LocalizationStrings[LOCSTR_CHAMPION];
+	pClassNames [3] = pGlobalTXT_LocalizationStrings[LOCSTR_BLK_KNIGHT];
+
+	pClassNames [4] = pGlobalTXT_LocalizationStrings[LOCSTR_THIEF];
+	pClassNames [5] = pGlobalTXT_LocalizationStrings[LOCSTR_ROGUE];
+	pClassNames [6] = pGlobalTXT_LocalizationStrings[LOCSTR_SPY];
+	pClassNames [7] = pGlobalTXT_LocalizationStrings[LOCSTR_ASSASIN];
+
+	pClassNames [8] = pGlobalTXT_LocalizationStrings[LOCSTR_MONK];
+	pClassNames [9] = pGlobalTXT_LocalizationStrings[26];
+	pClassNames [10] = pGlobalTXT_LocalizationStrings[432];
+	pClassNames [11] = pGlobalTXT_LocalizationStrings[27];
+
+	pClassNames [12] = pGlobalTXT_LocalizationStrings[LOCSTR_PALADIN];
+	pClassNames [13] = pGlobalTXT_LocalizationStrings[263];
+	pClassNames [14] = pGlobalTXT_LocalizationStrings[264];
+	pClassNames [15] = pGlobalTXT_LocalizationStrings[28];
+
+	pClassNames [16] = pGlobalTXT_LocalizationStrings[LOCSTR_ARCHER];
+	pClassNames [17] = pGlobalTXT_LocalizationStrings[267];
+	pClassNames [18] = pGlobalTXT_LocalizationStrings[119];
+	pClassNames [19] = pGlobalTXT_LocalizationStrings[124];
+
+	pClassNames [20] = pGlobalTXT_LocalizationStrings[LOCSTR_RANGER];
+	pClassNames [21] = pGlobalTXT_LocalizationStrings[370];
+	pClassNames [22] = pGlobalTXT_LocalizationStrings[33];
+	pClassNames [23] = pGlobalTXT_LocalizationStrings[40];
+
+	pClassNames [24] = pGlobalTXT_LocalizationStrings[LOCSTR_CLERIC];
+	pClassNames [25] = pGlobalTXT_LocalizationStrings[257];
+	pClassNames [26] = pGlobalTXT_LocalizationStrings[44];
+	pClassNames [27] = pGlobalTXT_LocalizationStrings[46];
+
+	pClassNames [28] = pGlobalTXT_LocalizationStrings[LOCSTR_DRUID];
+	pClassNames [29] = pGlobalTXT_LocalizationStrings[269];
+	pClassNames [30] = pGlobalTXT_LocalizationStrings[270];
+	pClassNames [31] = pGlobalTXT_LocalizationStrings[48];
+
+	pClassNames [32] = pGlobalTXT_LocalizationStrings[LOCSTR_SORCERER];
+	pClassNames [33] = pGlobalTXT_LocalizationStrings[260];
+	pClassNames [34] = pGlobalTXT_LocalizationStrings[261];
+	pClassNames [35] = pGlobalTXT_LocalizationStrings[49];
+
+	aCharacterConditionNames[0] = pGlobalTXT_LocalizationStrings[52];
+	aCharacterConditionNames[1] = pGlobalTXT_LocalizationStrings[241];
+	aCharacterConditionNames[2] = pGlobalTXT_LocalizationStrings[14];
+	aCharacterConditionNames[3] = pGlobalTXT_LocalizationStrings[4];
+	aCharacterConditionNames[4] = pGlobalTXT_LocalizationStrings[69];
+	aCharacterConditionNames[5] = pGlobalTXT_LocalizationStrings[117];
+	aCharacterConditionNames[6] = pGlobalTXT_LocalizationStrings[166];
+	aCharacterConditionNames[7] = pGlobalTXT_LocalizationStrings[65];
+	aCharacterConditionNames[8] = pGlobalTXT_LocalizationStrings[166];
+	aCharacterConditionNames[9] = pGlobalTXT_LocalizationStrings[65];
+	aCharacterConditionNames[10] = pGlobalTXT_LocalizationStrings[166];
+	aCharacterConditionNames[11] = pGlobalTXT_LocalizationStrings[65];
+	aCharacterConditionNames[12] = pGlobalTXT_LocalizationStrings[162];
+	aCharacterConditionNames[13] = pGlobalTXT_LocalizationStrings[231];
+	aCharacterConditionNames[14] = pGlobalTXT_LocalizationStrings[58];
+	aCharacterConditionNames[15] = pGlobalTXT_LocalizationStrings[220];
+	aCharacterConditionNames[16] = pGlobalTXT_LocalizationStrings[76];
+	aCharacterConditionNames[17] = pGlobalTXT_LocalizationStrings[601];
+	aCharacterConditionNames[18] = pGlobalTXT_LocalizationStrings[98];
+
+	pSkillNames[0] = pGlobalTXT_LocalizationStrings[271];
+	pSkillNames[1] = pGlobalTXT_LocalizationStrings[272];
+	pSkillNames[2] = pGlobalTXT_LocalizationStrings[273];
+	pSkillNames[3] = pGlobalTXT_LocalizationStrings[274];
+	pSkillNames[4] = pGlobalTXT_LocalizationStrings[275];
+	pSkillNames[5] = pGlobalTXT_LocalizationStrings[276];
+	pSkillNames[6] = pGlobalTXT_LocalizationStrings[277];
+	pSkillNames[7] = pGlobalTXT_LocalizationStrings[278];
+	pSkillNames[8] = pGlobalTXT_LocalizationStrings[279];
+	pSkillNames[9] = pGlobalTXT_LocalizationStrings[280];
+	pSkillNames[10] = pGlobalTXT_LocalizationStrings[281];
+	pSkillNames[11] = pGlobalTXT_LocalizationStrings[282];
+	pSkillNames[12] = pGlobalTXT_LocalizationStrings[283];
+	pSkillNames[13] = pGlobalTXT_LocalizationStrings[284];
+	pSkillNames[14] = pGlobalTXT_LocalizationStrings[285];
+	pSkillNames[15] = pGlobalTXT_LocalizationStrings[286];
+	pSkillNames[16] = pGlobalTXT_LocalizationStrings[289];
+	pSkillNames[17] = pGlobalTXT_LocalizationStrings[290];
+	pSkillNames[18] = pGlobalTXT_LocalizationStrings[291];
+	pSkillNames[19] = pGlobalTXT_LocalizationStrings[287];
+	pSkillNames[20] = pGlobalTXT_LocalizationStrings[288];
+	pSkillNames[21] = pGlobalTXT_LocalizationStrings[292];
+	pSkillNames[22] = pGlobalTXT_LocalizationStrings[293];
+	pSkillNames[23] = pGlobalTXT_LocalizationStrings[294];
+	pSkillNames[24] = pGlobalTXT_LocalizationStrings[295];
+	pSkillNames[25] = pGlobalTXT_LocalizationStrings[296];
+	pSkillNames[26] = pGlobalTXT_LocalizationStrings[297];
+	pSkillNames[27] = pGlobalTXT_LocalizationStrings[298];
+	pSkillNames[28] = pGlobalTXT_LocalizationStrings[299];
+	pSkillNames[29] = pGlobalTXT_LocalizationStrings[300];
+	pSkillNames[30] = pGlobalTXT_LocalizationStrings[50];
+	pSkillNames[31] = pGlobalTXT_LocalizationStrings[77];
+	pSkillNames[32] = pGlobalTXT_LocalizationStrings[88];
+	pSkillNames[33] = pGlobalTXT_LocalizationStrings[89];
+	pSkillNames[34] = pGlobalTXT_LocalizationStrings[90];
+	pSkillNames[35] = pGlobalTXT_LocalizationStrings[95];
+	pSkillNames[36] = pGlobalTXT_LocalizationStrings[301];
+	pSkillNames[37] = pGlobalTXT_LocalizationStrings[153];
+
+	aSpellSchoolNames[0] = pGlobalTXT_LocalizationStrings[87];
+	aSpellSchoolNames[1] = pGlobalTXT_LocalizationStrings[6];
+	aSpellSchoolNames[2] = pGlobalTXT_LocalizationStrings[240];
+	aSpellSchoolNames[3] = pGlobalTXT_LocalizationStrings[70];
+	aSpellSchoolNames[4] = pGlobalTXT_LocalizationStrings[214];
+	aSpellSchoolNames[5] = pGlobalTXT_LocalizationStrings[142];
+	aSpellSchoolNames[6] = pGlobalTXT_LocalizationStrings[29];
+	aSpellSchoolNames[7] = pGlobalTXT_LocalizationStrings[133];
+	aSpellSchoolNames[8] = pGlobalTXT_LocalizationStrings[54];
+
+	aAttributeNames[0] = pGlobalTXT_LocalizationStrings[144];
+	aAttributeNames[1] = pGlobalTXT_LocalizationStrings[116];
+	aAttributeNames[2] = pGlobalTXT_LocalizationStrings[163];
+	aAttributeNames[3] = pGlobalTXT_LocalizationStrings[75];
+	aAttributeNames[4] = pGlobalTXT_LocalizationStrings[1];
+	aAttributeNames[5] = pGlobalTXT_LocalizationStrings[211];
+	aAttributeNames[6] = pGlobalTXT_LocalizationStrings[136];
+
+	aAMPMNames[0] = pGlobalTXT_LocalizationStrings[472];
+	aAMPMNames[1] = pGlobalTXT_LocalizationStrings[473];
+
+	aNPCProfessionNames[0] = pGlobalTXT_LocalizationStrings[153];
+	aNPCProfessionNames[1] = pGlobalTXT_LocalizationStrings[308];
+	aNPCProfessionNames[2] = pGlobalTXT_LocalizationStrings[309];
+	aNPCProfessionNames[3] = pGlobalTXT_LocalizationStrings[7];
+	aNPCProfessionNames[4] = pGlobalTXT_LocalizationStrings[306];
+	aNPCProfessionNames[5] = pGlobalTXT_LocalizationStrings[310];
+	aNPCProfessionNames[6] = pGlobalTXT_LocalizationStrings[311];
+	aNPCProfessionNames[7] = pGlobalTXT_LocalizationStrings[312];
+	aNPCProfessionNames[8] = pGlobalTXT_LocalizationStrings[313];
+	aNPCProfessionNames[9] = pGlobalTXT_LocalizationStrings[314];
+	aNPCProfessionNames[10] = pGlobalTXT_LocalizationStrings[105];
+	aNPCProfessionNames[11] = pGlobalTXT_LocalizationStrings[315];
+	aNPCProfessionNames[12] = pGlobalTXT_LocalizationStrings[316];
+	aNPCProfessionNames[13] = pGlobalTXT_LocalizationStrings[317];
+	aNPCProfessionNames[14] = pGlobalTXT_LocalizationStrings[115];
+	aNPCProfessionNames[15] = pGlobalTXT_LocalizationStrings[318];
+	aNPCProfessionNames[16] = pGlobalTXT_LocalizationStrings[319];
+	aNPCProfessionNames[17] = pGlobalTXT_LocalizationStrings[320];
+	aNPCProfessionNames[18] = pGlobalTXT_LocalizationStrings[321];
+	aNPCProfessionNames[19] = pGlobalTXT_LocalizationStrings[322];
+	aNPCProfessionNames[20] = pGlobalTXT_LocalizationStrings[323];
+	aNPCProfessionNames[21] = pGlobalTXT_LocalizationStrings[293];
+	aNPCProfessionNames[22] = pGlobalTXT_LocalizationStrings[324];
+	aNPCProfessionNames[23] = pGlobalTXT_LocalizationStrings[498];
+	aNPCProfessionNames[24] = pGlobalTXT_LocalizationStrings[525];
+	aNPCProfessionNames[25] = pGlobalTXT_LocalizationStrings[327];
+	aNPCProfessionNames[26] = pGlobalTXT_LocalizationStrings[328];
+	aNPCProfessionNames[27] = pGlobalTXT_LocalizationStrings[329];
+	aNPCProfessionNames[28] = pGlobalTXT_LocalizationStrings[330];
+	aNPCProfessionNames[29] = pGlobalTXT_LocalizationStrings[331];
+	aNPCProfessionNames[20] = pGlobalTXT_LocalizationStrings[332];
+	aNPCProfessionNames[31] = pGlobalTXT_LocalizationStrings[333];
+	aNPCProfessionNames[32] = pGlobalTXT_LocalizationStrings[334];
+	aNPCProfessionNames[33] = pGlobalTXT_LocalizationStrings[335];
+	aNPCProfessionNames[34] = pGlobalTXT_LocalizationStrings[336];
+	aNPCProfessionNames[35] = pGlobalTXT_LocalizationStrings[337];
+	aNPCProfessionNames[36] = pGlobalTXT_LocalizationStrings[338];
+	aNPCProfessionNames[37] = pGlobalTXT_LocalizationStrings[339];
+	aNPCProfessionNames[38] = pGlobalTXT_LocalizationStrings[340];
+	aNPCProfessionNames[39] = pGlobalTXT_LocalizationStrings[341];
+	aNPCProfessionNames[40] = pGlobalTXT_LocalizationStrings[342];
+	aNPCProfessionNames[41] = pGlobalTXT_LocalizationStrings[343];
+	aNPCProfessionNames[42] = pGlobalTXT_LocalizationStrings[596];
+	aNPCProfessionNames[43] = pGlobalTXT_LocalizationStrings[345];
+	aNPCProfessionNames[44] = pGlobalTXT_LocalizationStrings[346];
+	aNPCProfessionNames[45] = pGlobalTXT_LocalizationStrings[347];
+	aNPCProfessionNames[46] = pGlobalTXT_LocalizationStrings[348];
+	aNPCProfessionNames[47] = pGlobalTXT_LocalizationStrings[349];  
+	aNPCProfessionNames[48] = pGlobalTXT_LocalizationStrings[350];
+	aNPCProfessionNames[49] = pGlobalTXT_LocalizationStrings[597];
+	aNPCProfessionNames[50] = pGlobalTXT_LocalizationStrings[352];
+	aNPCProfessionNames[51] = pGlobalTXT_LocalizationStrings[353];
+	aNPCProfessionNames[52] = pGlobalTXT_LocalizationStrings[598];
+	aNPCProfessionNames[53] = pGlobalTXT_LocalizationStrings[344];
+	aNPCProfessionNames[54] = pGlobalTXT_LocalizationStrings[26];
+	aNPCProfessionNames[55] = pGlobalTXT_LocalizationStrings[599];
+	aNPCProfessionNames[56] = pGlobalTXT_LocalizationStrings[21];
+	aNPCProfessionNames[57] = pGlobalTXT_LocalizationStrings[600];
+	aNPCProfessionNames[58] = pGlobalTXT_LocalizationStrings[370];
+
+	aMoonPhaseNames[0] = pGlobalTXT_LocalizationStrings[150];
+	aMoonPhaseNames[1] = pGlobalTXT_LocalizationStrings[171];
+	aMoonPhaseNames[2] = pGlobalTXT_LocalizationStrings[102];
+	aMoonPhaseNames[3] = pGlobalTXT_LocalizationStrings[169];
+	aMoonPhaseNames[4] = pGlobalTXT_LocalizationStrings[92];
+
+	aSpellNames[0] = pGlobalTXT_LocalizationStrings[202];
+	aSpellNames[1] = pGlobalTXT_LocalizationStrings[204];
+	aSpellNames[2] = pGlobalTXT_LocalizationStrings[219];
+	aSpellNames[3] = pGlobalTXT_LocalizationStrings[215];
+	aSpellNames[4] = pGlobalTXT_LocalizationStrings[208];
+	aSpellNames[5] = pGlobalTXT_LocalizationStrings[454];
+	aSpellNames[6] = pGlobalTXT_LocalizationStrings[24];
+	aSpellNames[7] = pGlobalTXT_LocalizationStrings[455];
+	aSpellNames[8] = pGlobalTXT_LocalizationStrings[441];
+	aSpellNames[9] = pGlobalTXT_LocalizationStrings[440];
+	aSpellNames[10] = pGlobalTXT_LocalizationStrings[218];
+	aSpellNames[11] = pGlobalTXT_LocalizationStrings[217];
+	aSpellNames[12] = pGlobalTXT_LocalizationStrings[213];
+	aSpellNames[13] = pGlobalTXT_LocalizationStrings[462];
+	aSpellNames[14] = pGlobalTXT_LocalizationStrings[279];
+	aSpellNames[15] = pGlobalTXT_LocalizationStrings[442];
+	aSpellNames[16] = pGlobalTXT_LocalizationStrings[452];
+	aSpellNames[17] = pGlobalTXT_LocalizationStrings[194];
+	aSpellNames[18] = pGlobalTXT_LocalizationStrings[456];
+	aSpellNames[19] = pGlobalTXT_LocalizationStrings[453];
+	aSpellNames[20] = pGlobalTXT_LocalizationStrings[202];
+	aSpellNames[21] = pGlobalTXT_LocalizationStrings[443];
+	aSpellNames[22] = pGlobalTXT_LocalizationStrings[204];
+	aSpellNames[23] = pGlobalTXT_LocalizationStrings[208];
+	aSpellNames[24] = pGlobalTXT_LocalizationStrings[221];
+	aSpellNames[25] = pGlobalTXT_LocalizationStrings[24];
+	aSpellNames[26] = pGlobalTXT_LocalizationStrings[228];
+	aSpellNames[27] = pGlobalTXT_LocalizationStrings[441];
+	aSpellNames[28] = pGlobalTXT_LocalizationStrings[440];
+	aSpellNames[29] = pGlobalTXT_LocalizationStrings[213];
+	aSpellNames[30] = pGlobalTXT_LocalizationStrings[229];
+	aSpellNames[31] = pGlobalTXT_LocalizationStrings[233];
+	aSpellNames[32] = pGlobalTXT_LocalizationStrings[234];
+	aSpellNames[33] = pGlobalTXT_LocalizationStrings[279];
+	aSpellNames[34] = pGlobalTXT_LocalizationStrings[442];
+	aSpellNames[35] = pGlobalTXT_LocalizationStrings[235];
+	aSpellNames[36] = pGlobalTXT_LocalizationStrings[246];
+	aSpellNames[37] = pGlobalTXT_LocalizationStrings[247];
+	aSpellNames[38] = pGlobalTXT_LocalizationStrings[248];
+	aSpellNames[39] = pGlobalTXT_LocalizationStrings[674];
+	aSpellNames[40] = pGlobalTXT_LocalizationStrings[249];
+	aSpellNames[41] = pGlobalTXT_LocalizationStrings[258];
+	aSpellNames[42] = pGlobalTXT_LocalizationStrings[194];
+	aSpellNames[43] = pGlobalTXT_LocalizationStrings[657];
+	}
+
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/texts.h	Sat Feb 16 08:42:58 2013 +0600
@@ -0,0 +1,839 @@
+
+#pragma once
+
+void __cdecl SetSomeItemsNames();
+char *RemoveQuotes(char *Str);
+void __cdecl InitializeGameText();
+
+
+enum GLOBAL_LOCALIZ_INDEX
+	{
+
+	LOCSTR_AC     =                             0,		//"AC"	
+	LOCSTR_ACCURACY 	=						1,		//"Accuracy"	
+	LOCSTR_BLK_KNIGHT =							2,		//"Black Knight"
+	LOCSTR_SPY  	=						    3,		// "Spy"
+
+	LOCSTR_TOWN_PORTAL		   =                 10, // "Town Portal"	
+
+	LOCSTR_ASSASIN             =        		13,	// "Assassin"
+
+	LOCSTR_AUTOSAVE            =        		16,	// "Autosave"
+
+	LOCSTR_ATTACK             =         		18, // "Attack"	
+	LOCSTR_AVAILABLE           =                19, //"Available"
+
+	LOCSTR_MONK                 =       		21, //"Monk"	
+
+	LOCSTR_AVARDS_FOR            =      		23, //"Awards for"
+
+
+	LOCSTR_RANGER		           =             31, //"Ranger"
+
+	LOCSTR_CANCEL		            =            34, //"Cancel"	
+
+
+	LOCSTR_SELECT_TGT               =   		39,	 ///"Select Target"
+
+	LOCSTR_CLASS                     =  		41,	// "Class"
+
+	LOCSTR_CONDITION                  = 		47,	//"Condition"
+
+	LOCSTR_CREATE_PARTY                =  		51,   //"C R E A T E   P A R T Y"	
+
+	LOCSTR_DAWN                       =         55, //"Dawn"	
+	LOCSTR_DAY                         = 		56,	//"Day"	
+	LOCSTR_DAYS                        =		57,	/// "Days"	
+
+	LOCSTR_PRESS_ESCAPE                =		61,	// "Press Escape"	
+
+	LOCSTR_TROUBLE_LOAD                 =		63,//"Might and Magic VII is having trouble loading files. 
+	// Please re-install to fix this problem. Note: Re-installing will not destroy your save games."	
+	LOCSTR_DETAIL_TOGGLE              = 		64,	 //"Detail Toggle"	
+
+	LOCSTR_DMG                   =   		    66,	 /// "Dmg"	
+
+	LOCSTR_EMPTY                  =     		72, // "Empty"	
+
+	LOCSTR_EXIT                    =    		79,	// "Exit"	
+	LOCSTR_EXIT_BLDNG               =   		80,   // "Exit Building"
+
+	LOCSTR_EXPIRIENCE		          =          83, //"Experience"	
+
+	LOCSTR_GRAND		               =         96,	// "Grand"
+
+	LOCSTR_HP                          =		107,	// "HP"	
+	LOCSTR_HIT_POINTS		             =       108,	// "Hit Points"	
+	LOCSTR_HOUR                         =		109,	//"Hour"	
+	LOCSTR_HOURS		                  =      110, //"Hours"	
+
+	LOCSTR_ROGUE                 =          	114,	 //"Rogue"
+
+	LOCSTR_LEVEL                =        		131,   // "Level"	
+
+	LOCSTR_LOADING               =      		135,  //"Loading"	
+
+	LOCSTR_MIGHT		           =             144,	 //"Might"
+
+	LOCSTR_NAME		            =            149,	// "Name"	
+
+	LOCSTR_YOU_TO_TRAIN             =      		147, // "You are eligible to train to %u."	
+
+	LOCSTR_STAY_IN_AREA		      =          156,  //"Stay in this Area"	
+	LOCSTR_3DO_COPYRHT			=				157,	  // "" 1999 The 3DO Company.
+
+	LOCSTR_PLEASE_WAIT          =       		165,	// "Please Wait"
+
+	LOCSTR_REPUTATION            =      		180,	 //"Reputation"
+
+	LOCSTR_REST_HEAL_8            =             183, //"Rest & Heal 8 Hours"	
+
+	LOCSTR_TIME_ERATHIA            =    		186, // "Time in Erathia"	
+
+	LOCSTR_SAVING                   =   		190,  // "Saving"	
+
+	LOCSTR_SKILL_POINTS		      =          207, /// "Skill Points"	
+
+	LOCSTR_KNIGHT                     = 		253,  //"Knight"	
+	LOCSTR_CAVALIER		            =        254,  //"Cavalier"	
+	LOCSTR_CHAMPION		             =       255,  //"Champion"	
+	LOCSTR_CLERIC		                  =      256,  //"Cleric"	
+	LOCSTR_PRIEST		                   =     257,  //"Priest"	
+
+	LOCSTR_SORCERER		                =    259,  // "Sorcerer"	
+
+	LOCSTR_PALADIN                   =  		262, // "Paladin"
+
+	LOCSTR_ARCHER		               =         265,   /// "Archer"
+
+	LOCSTR_DRUID		            =            268, // "Druid"	
+
+	LOCSTR_THIEF                    =   		307, //"Thief"
+
+	LOCSTR_SET_BEACON                =  		375, // "Set Beacon"
+
+	LOCSTR_HATED                      =  		379,// "Hated"
+
+	LOCSTR_UNFRENDLY		            =        392,	 //"Unfriendly"	
+
+	LOCSTR_NEITRAL                     =		399,  // "Neutral"	
+
+	LOCSTR_FRENDLY                     =		402, // "Friendly"	
+
+	LOCSTR_D_DAYS_TO_S                  =		404,   //"%d days to %s"	
+	LOCSTR_TRAVEL_COST                   =      405,    //"Travel Cost %d gold"	
+
+	LOCSTR_ENTER_S		                   =     411, // "Enter %s"	
+
+	LOCSTR_IS_IN_NO_COND		            =    427,	// "%s is in no condition to %s"	
+
+	LOCSTR_S_THE_S                          =   429,    //"%s the %s"
+
+	LOCSTR_NORMAL               =       		431,	//"Normal"
+	LOCSTR_MASTER		          =              432,	//"Master"	
+	LOCSTR_EXPERT		          =              433,	//"Expert"
+	LOCSTR_LIKED		          =              434, //"Liked"	
+
+	LOCSTR_ACTIVE_SPELL           =     		450,	// "Active Spells: %s"	
+
+	LOCSTR_READING                 =        	505, ///"Reading..."	
+
+	LOCSTR_NOTHING_HERE             =    		521, // "Nothing here"	
+
+	LOCSTR_SP_COST                   =   		522, //"SP Cost"
+	LOCSTR_RECALL_BEACON              = 		523, // "Recall Beacon"	
+
+	LOCSTR_TIME                        =		526,	//"Time"	
+
+	LOCSTR_NEED_MORE_EXP               =		538, //"You need %d more experience to train to level %d"	
+
+	LOCSTR_IDENT_ITEM                  =		541, // "Identify Items"
+
+	LOCSTR_DUSK                         =		566,   //"Dusk"	
+	LOCSTR_NIGHT                        =       567,  // "Night"	
+
+	LOCSTR_NO_SAVING                   	=	583,	//"No saving in the Arena"	
+
+	LOCSTR_AUTOSAVE_MM7                    =	613, // "AutoSave.MM7"
+
+	LOCSTR_BONUS                       	=	623, //"Bonus"	
+
+	LOCSTR_GAME_SAVED                  	=	656,	// "Game Saved!"
+
+	MAX_LOC_STRINGS =677
+
+	};
+
+extern  char *pGlobalTXT_LocalizationStrings[MAX_LOC_STRINGS];
+
+/*
+
++		[4]	0x04102dab "Afraid"	unsigned char *
++		[5]	0x04102db5 "Age"	unsigned char *
++		[6]	0x04102dbc "Air"	unsigned char *
++		[7]	0x04102dc3 "Alchemist"	unsigned char *
++		[8]	0x04102dd0 "Obelisk Notes"	unsigned char *
++		[9]	0x04102de1 "Congratulations!"	unsigned char *
+
++		[11]	0x04102e06 "Armor"	unsigned char *
++		[0xc]	0x04102e10 "Armor Class"	unsigned char *
+
++		[0xe]	0x04102e2d "Asleep"	unsigned char *
++		[0xf]	0x04102e38 "Assertion failed at %d in %s"	unsigned char *
+
++		[17]	0x04102e66 "Exp."	unsigned char *
+
+
++		[20]	0x04102e88 "Available Skills"	unsigned char *
+
++		[22]	0x04102ea6 "Awards"	unsigned char *
+
++		[24]	0x04102ec0 "Fire Res"	unsigned char *
++		[25]	0x04102ecd "Balance"	unsigned char *
++		[26]	0x04102ed9 "Initiate"	unsigned char *
++		[27]	0x04102ee6 "Ninja"	unsigned char *
++		[28]	0x04102ef0 "Villain"	unsigned char *
++		[29]	0x04102efc "Body"	unsigned char *
++		[30]	0x04102f05 "Bonus"	unsigned char *
+
++		[32]	0x04102f1a "Broken Item"	unsigned char *
++		[33]	0x04102f2a "Ranger Lord"	unsigned char *
++		[34]	0x04102f3a "Cancel"	unsigned char *
++		[35]	0x04102f45 "Town Portal to %s"	unsigned char *
++		[36]	0x04102f5b "%s can not be used that way"	unsigned char *
++		[37]	0x04102f7b "Total Time:"	unsigned char *
++		[38]	0x04102f8b "Cast Spell"	unsigned char *
+
++		[0x28]	0x04102fac "Bounty Hunter"	unsigned char *
+
++		[0x2a]	0x04102fc8 "Clerk"	unsigned char *
++		[0x2b]	0x04102fd2 "Cold"	unsigned char *
++		[0x2c]	0x04102fdb "Priest of Light"	unsigned char *
++		[45]	0x04102fef "Cond"	unsigned char *
++		[46]	0x04102ff8 "Priest of Dark"	unsigned char *
+
++		[48]	0x04103019 "Warlock"	unsigned char *
++		[49]	0x04103025 "Lich"	unsigned char *
++		[50]	0x0410302e "Dodging"	unsigned char *
+
++		[52]	0x04103056 "Cursed"	unsigned char *
++		[0x35]	0x04103061 "Damage"	unsigned char *
++		[0x36]	0x0410306c "Dark"	unsigned char *
+
+
+
++		[58]	0x0410308f "Dead"	unsigned char *
++		[59]	0x04103098 "Internal Error"	unsigned char *
++		[60]	0x041030ab "Deposit"	unsigned char *
+
++		[62]	0x041030c8 "Might and Magic VII requires your desktop to be in 16bit (32k or 65k) Color mode in order to operate in a window."	unsigned char *
+
+
++		[65]	0x041031e6 "Diseased"	unsigned char *
+
++		[0x43]	0x041031fb "%s does not have the skill"	unsigned char *
++		[68]	0x0410321a "Donate"	unsigned char *
++		[69]	0x04103225 "Drunk"	unsigned char *
++		[70]	0x0410322f "Earth"	unsigned char *
++		[71]	0x04103239 "Electricity"	unsigned char *
+
++		[73]	0x04103253 "Enter"	unsigned char *
++		[74]	0x0410325d "End Conversation"	unsigned char *
++		[75]	0x04103272 "Endurance"	unsigned char *
++		[0x4c]	0x04103280 "Eradicated"	unsigned char *
++		[0x4d]	0x0410328f "Unarmed"	unsigned char *
++		[0x4e]	0x0410329b "Calendar"	unsigned char *
++		[0x4f]	0x041032a8 "Exit"	unsigned char *
+
++		[81]	0x041032c3 "Exit Rest"	unsigned char *
++		[82]	0x041032d1 "Are you sure?  Click again to quit"	unsigned char *
+
++		[84]	0x04103307 "Fame"	unsigned char *
++		[85]	0x04103310 "Potion Notes"	unsigned char *
++		[86]	0x04103321 "Fill Packs to %d days for %d gold"	unsigned char *
++		[87]	0x04103347 "Fire"	unsigned char *
++		[88]	0x04103350 "Identify Monster"	unsigned char *
++		[89]	0x04103365 "Armsmaster"	unsigned char *
++		[90]	0x04103374 "Stealing"	unsigned char *
++		[91]	0x04103381 "Friday"	unsigned char *
++		[92]	0x0410338c "Full"	unsigned char *
++		[93]	0x04103395 "Game Options"	unsigned char *
++		[94]	0x041033a6 "Your score: %lu"	unsigned char *
++		[95]	0x041033ba "Alchemy"	unsigned char *
+
+
+
++		[97]	0x041033d0 "Gold"	unsigned char *
++		[98]	0x041033d9 "Good"	unsigned char *
++		[99]	0x041033e2 "Human"	unsigned char *
++		[100]	0x041033ed "Guard"	unsigned char *
++		[101]	0x041033f8 "Dwarf"	unsigned char *
++		[102]	0x04103403 "Half"	unsigned char *
++		[103]	0x0410340d "Elf"	unsigned char *
++		[104]	0x04103416 "Heal"	unsigned char *
++		[105]	0x04103420 "Healer"	unsigned char *
++		[106]	0x0410342c "Goblin"	unsigned char *
+
++		[108]	0x04103440 "Hit Points"	unsigned char *
+
++		[111]	0x04103465 "Grand"	unsigned char *
++		[112]	0x04103470 "How Much?"	unsigned char *
++		[113]	0x0410347f "Identify"	unsigned char *
+
++		[115]	0x04103498 "Instructor"	unsigned char *
++		[116]	0x041034a8 "Intellect"	unsigned char *
++		[117]	0x041034b7 "Insane"	unsigned char *
++		[118]	0x041034c3 "We hope that you've enjoyed playing Might and Magic VII as much as we did making it. We have saved this screen as MM7_WIN.PCX in your MM7 directory. You can print it out as proof of your accomplishment."	unsigned char *
++		[119]	0x04103593 "Master Archer"	unsigned char *
++		[120]	0x041035a6 "Inventory"	unsigned char *
++		[121]	0x041035b5 "Permanent"	unsigned char *
++		[122]	0x041035c4 "Join"	unsigned char *
++		[123]	0x041035ce "Miscellaneous Notes"	unsigned char *
++		[124]	0x041035e7 "Sniper"	unsigned char *
++		[125]	0x041035f3 "+2 Skill Points!"	unsigned char *
++		[126]	0x04103609 "Do you wish to leave %s?"	unsigned char *
++		[127]	0x04103627 "No Text!"	unsigned char *
++		[128]	0x04103635 "It will take %d days to travel to %s."	unsigned char *
++		[129]	0x04103660 "%s the Level %u %s"	unsigned char *
++		[130]	0x04103678 "Player"	unsigned char *
+
++		[132]	0x0410368f "Years"	unsigned char *
++		[133]	0x0410369a "Light"	unsigned char *
++		[134]	0x041036a5 "Buy Standard"	unsigned char *
+
++		[136]	0x041036c4 "Luck"	unsigned char *
++		[137]	0x041036ce "Fountain Notes"	unsigned char *
++		[138]	0x041036e2 "Magic"	unsigned char *
++		[139]	0x041036ed "Maps"	unsigned char *
++		[140]	0x041036f7 "Your packs are already full!"	unsigned char *
++		[141]	0x04103719 "Seer Notes"	unsigned char *
++		[142]	0x04103729 "Mind"	unsigned char *
++		[143]	0x04103733 "Misc"	unsigned char *
+
++		[145]	0x04103748 "Monday"	unsigned char *
++		[146]	0x04103754 "Month"	unsigned char *
+
++		[148]	0x04103785 "Months"	unsigned char *
+
++		[150]	0x0410379b "New"	unsigned char *
++		[151]	0x041037a4 "Congratulations Adventurer."	unsigned char *
++		[152]	0x041037c5 "Buy Special"	unsigned char *
++		[153]	0x041037d6 "None"	unsigned char *
++		[154]	0x041037e0 "Auto Notes"	unsigned char *
++		[155]	0x041037f0 "You don't have enough gold"	unsigned char *
+
++		[157]	0x04103827 "" 1999 The 3DO Company.  All Rights Reserved.  Might and Magic, Blood and Honor, New World Computing, 3DO, and their respective logos, are trademarks and/or service marks of The 3DO Company in the U.S. and other countries.  All other trademarks belong to their respective owners.  New World Computing is a division of The 3DO Company.""	unsigned char *
++		[158]	0x0410397d "Bootleg Bay East"	unsigned char *
++		[159]	0x04103993 "Display Inventory"	unsigned char *
++		[160]	0x041039aa "Learn Skills"	unsigned char *
++		[161]	0x041039bc "Steal"	unsigned char *
++		[162]	0x041039c7 "Paralyzed"	unsigned char *
++		[163]	0x041039d6 "Personality"	unsigned char *
++		[164]	0x041039e7 "%s hits %s for %lu damage"	unsigned char *
+
++		[166]	0x04103a17 "Poison"	unsigned char *
++		[167]	0x04103a23 "- The Might and Magic VII Development Team."	unsigned char *
++		[168]	0x04103a54 "Points"	unsigned char *
++		[169]	0x04103a60 "Three Quarter"	unsigned char *
++		[170]	0x04103a73 "QSpell"	unsigned char *
++		[171]	0x04103a7f "Quarter"	unsigned char *
++		[172]	0x04103a8c "Quick Spell"	unsigned char *
++		[173]	0x04103a9d "Quick Reference"	unsigned char *
++		[174]	0x04103ab2 "Current Quests"	unsigned char *
++		[175]	0x04103ac6 "%s inflicts %lu points killing %s"	unsigned char *
++		[176]	0x04103aed "Might and Magic VII has detected an internal error and will be forced to close.  Would you like us to autosave your game before closing?"	unsigned char *
++		[177]	0x04103b7b "Standard"	unsigned char *
++		[178]	0x04103b89 "Rent Room for %d gold"	unsigned char *
++		[179]	0x04103ba4 "Repair"	unsigned char *
+
++		[181]	0x04103bc0 "Steal %24"	unsigned char *
++		[182]	0x04103bcf "Rest"	unsigned char *
+
++		[184]	0x04103bf2 "Reinstall Necessary"	unsigned char *
++		[185]	0x04103c0b "Steal item"	unsigned char *
+
++		[187]	0x04103c30 "Stolen"	unsigned char *
++		[188]	0x04103c3c "Saturday"	unsigned char *
++		[189]	0x04103c4a "%s shoots %s for %lu points"	unsigned char *
+
++		[191]	0x04103c77 "You've been banned from this shop!"	unsigned char *
++		[192]	0x04103c9f "Scroll Up"	unsigned char *
++		[193]	0x04103cae "Scroll Down"	unsigned char *
++		[194]	0x04103cbf "Water Res"	unsigned char *
++		[195]	0x04103cce "Select the Item to Buy"	unsigned char *
++		[196]	0x04103cea "Select the Special Item to Buy"	unsigned char *
++		[197]	0x04103d0e "Select the Item to Identify"	unsigned char *
++		[198]	0x04103d2f "Select the Item to Repair"	unsigned char *
++		[199]	0x04103d4e "Select the Item to Sell"	unsigned char *
++		[200]	0x04103d6b "Sell"	unsigned char *
++		[201]	0x04103d75 "Are you sure?  Click again to start a New Game"	unsigned char *
++		[202]	0x04103da9 "Air Res"	unsigned char *
++		[203]	0x04103db6 "Shoot"	unsigned char *
++		[204]	0x04103dc1 "Body Res"	unsigned char *
++		[205]	0x04103dcf "Skills"	unsigned char *
++		[206]	0x04103ddb "Skills for"	unsigned char *
+
++		[208]	0x04103dfd "Earth Res"	unsigned char *
++		[209]	0x04103e0c "SP"	unsigned char *
++		[210]	0x04103e14 "Special"	unsigned char *
++		[211]	0x04103e21 "Speed"	unsigned char *
++		[212]	0x04103e2c "Spell Points"	unsigned char *
++		[213]	0x04103e3e "Mind Res"	unsigned char *
++		[214]	0x04103e4c "Spirit"	unsigned char *
++		[215]	0x04103e58 "Detect Life"	unsigned char *
++		[216]	0x04103e69 "Stats"	unsigned char *
++		[217]	0x04103e74 "Invisibility"	unsigned char *
++		[218]	0x04103e86 "Immolation"	unsigned char *
++		[219]	0x04103e96 "Day of the Gods"	unsigned char *
++		[220]	0x04103eab "Stoned"	unsigned char *
++		[221]	0x04103eb7 "Fate"	unsigned char *
++		[222]	0x04103ec1 "Sunday"	unsigned char *
++		[223]	0x00000000 <Bad Ptr>	unsigned char *
++		[224]	0x00000000 <Bad Ptr>	unsigned char *
++		[225]	0x04103ed9 "Grandmaster"	unsigned char *
++		[226]	0x04103eea ""Gamma controls the relative ""brightness"" of the game.  May vary depending on your monitor.""	unsigned char *
++		[227]	0x04103f4e "Thursday"	unsigned char *
++		[228]	0x04103f5c "Hammerhands"	unsigned char *
++		[229]	0x04103f6d "Pain Reflection"	unsigned char *
++		[230]	0x04103f82 "Tuesday"	unsigned char *
++		[231]	0x04103f8f "Unconscious"	unsigned char *
++		[232]	0x04103fa0 "Not Identified"	unsigned char *
++		[233]	0x04103fb4 "Preservation"	unsigned char *
++		[234]	0x04103fc6 "Regeneration"	unsigned char *
++		[235]	0x04103fd8 "Temp Accuracy"	unsigned char *
++		[236]	0x04103feb "Wait without healing"	unsigned char *
++		[237]	0x04104005 "Wait until Dawn"	unsigned char *
++		[238]	0x0410401a "Wait 5 Minutes"	unsigned char *
++		[239]	0x0410402e "Wait 1 Hour"	unsigned char *
++		[240]	0x0410403f "Water"	unsigned char *
++		[241]	0x0410404a "Weak"	unsigned char *
++		[242]	0x04104054 "Weapons"	unsigned char *
++		[243]	0x04104061 "Wednesday"	unsigned char *
++		[244]	0x04104070 "Withdraw"	unsigned char *
++		[245]	0x0410407e "Year"	unsigned char *
++		[246]	0x04104088 "Temp Endurance"	unsigned char *
++		[247]	0x0410409c "Temp Intelligence"	unsigned char *
++		[248]	0x041040b3 "Temp Luck"	unsigned char *
++		[249]	0x041040c2 "Temp Personality"	unsigned char *
++		[250]	0x041040d8 "You need %s"	unsigned char *
++		[251]	0x041040e9 "Zoom In"	unsigned char *
++		[252]	0x041040f6 "Zoom Out"	unsigned char *
+
+
++		[258]	0x04104144 "Temp Speed"	unsigned char *
+
++		[260]	0x04104162 "Wizard"	unsigned char *
++		[261]	0x0410416e "Archmage"	unsigned char *
+
++		[263]	0x04104189 "Crusader"	unsigned char *
++		[264]	0x04104197 "Hero"	unsigned char *
+
++		[266]	0x041041ad "DISCARD A CARD"	unsigned char *
++		[267]	0x041041c1 "Warrior Mage"	unsigned char *
+
++		[269]	0x041041de "Greater Druid"	unsigned char *
++		[270]	0x041041f1 "Arch Druid"	unsigned char *
++		[271]	0x04104201 "Staff"	unsigned char *
++		[272]	0x0410420c "Sword"	unsigned char *
++		[273]	0x04104217 "Dagger"	unsigned char *
++		[274]	0x04104223 "Axe"	unsigned char *
++		[275]	0x0410422c "Spear"	unsigned char *
++		[276]	0x04104237 "Bow"	unsigned char *
++		[277]	0x04104240 "Mace"	unsigned char *
++		[278]	0x0410424a "Blaster"	unsigned char *
++		[279]	0x04104257 "Shield"	unsigned char *
++		[280]	0x04104263 "Leather"	unsigned char *
++		[281]	0x04104270 "Chain"	unsigned char *
++		[282]	0x0410427b "Plate"	unsigned char *
++		[283]	0x04104286 "Fire Magic"	unsigned char *
++		[284]	0x04104296 "Air Magic"	unsigned char *
++		[285]	0x041042a5 "Water Magic"	unsigned char *
++		[286]	0x041042b6 "Earth Magic"	unsigned char *
++		[287]	0x041042c7 "Light Magic"	unsigned char *
++		[288]	0x041042d8 "Dark Magic"	unsigned char *
++		[289]	0x041042e8 "Spirit Magic"	unsigned char *
++		[290]	0x041042fa "Mind Magic"	unsigned char *
++		[291]	0x0410430a "Body Magic"	unsigned char *
++		[292]	0x0410431a "Identify Item"	unsigned char *
++		[293]	0x0410432d "Merchant"	unsigned char *
++		[294]	0x0410433b "Repair Item"	unsigned char *
++		[295]	0x0410434c "Body Building"	unsigned char *
++		[296]	0x0410435f "Meditation"	unsigned char *
++		[297]	0x0410436f "Perception"	unsigned char *
++		[298]	0x0410437f "Diplomacy"	unsigned char *
++		[299]	0x0410438e "Thievery"	unsigned char *
++		[300]	0x0410439c "Disarm Trap"	unsigned char *
++		[301]	0x041043ad "Learning"	unsigned char *
++		[302]	0x041043bb "%s stole %d gold!"	unsigned char *
++		[303]	0x041043d2 "Noble"	unsigned char *
++		[304]	0x041043dd "Official"	unsigned char *
++		[305]	0x041043eb "Peasant"	unsigned char *
++		[306]	0x041043f8 "Scholar"	unsigned char *
+
++		[308]	0x04104410 "Smith"	unsigned char *
++		[309]	0x0410441b "Armorer"	unsigned char *
++		[310]	0x04104428 "Guide"	unsigned char *
++		[311]	0x04104433 "Tracker"	unsigned char *
++		[312]	0x04104440 "Pathfinder"	unsigned char *
++		[313]	0x04104450 "Sailor"	unsigned char *
++		[314]	0x0410445c "Navigator"	unsigned char *
++		[315]	0x0410446b "Expert Healer"	unsigned char *
++		[316]	0x0410447e "Master Healer"	unsigned char *
++		[317]	0x04104491 "Teacher"	unsigned char *
++		[318]	0x0410449e "Arms Master"	unsigned char *
++		[319]	0x041044af "Weapons Master"	unsigned char *
++		[320]	0x041044c3 "Apprentice"	unsigned char *
++		[321]	0x041044d3 "Mystic"	unsigned char *
++		[322]	0x041044df "Spell Master"	unsigned char *
++		[323]	0x041044f1 "Trader"	unsigned char *
++		[324]	0x041044fd "Scout"	unsigned char *
++		[325]	0x04104508 "Counselor"	unsigned char *
++		[326]	0x04104517 "Barrister"	unsigned char *
++		[327]	0x04104526 "Tinker"	unsigned char *
++		[328]	0x04104532 "Locksmith"	unsigned char *
++		[329]	0x04104541 "Fool"	unsigned char *
++		[330]	0x0410454b "Chimney Sweep"	unsigned char *
++		[331]	0x0410455e "Porter"	unsigned char *
++		[332]	0x0410456a "Quarter Master"	unsigned char *
++		[333]	0x0410457e "Factor"	unsigned char *
++		[334]	0x0410458a "Banker"	unsigned char *
++		[335]	0x04104596 "Cook"	unsigned char *
++		[336]	0x041045a0 "Chef"	unsigned char *
++		[337]	0x041045aa "Horseman"	unsigned char *
++		[338]	0x041045b8 "Bard"	unsigned char *
++		[339]	0x041045c2 "Enchanter"	unsigned char *
++		[340]	0x041045d1 "Cartographer"	unsigned char *
++		[341]	0x041045e3 "Wind Master"	unsigned char *
++		[342]	0x041045f4 "Water Master"	unsigned char *
++		[343]	0x04104606 "Gate Master"	unsigned char *
++		[344]	0x04104617 "Acolyte"	unsigned char *
++		[345]	0x04104624 "Piper"	unsigned char *
++		[346]	0x0410462f "Explorer"	unsigned char *
++		[347]	0x0410463d "Pirate"	unsigned char *
++		[348]	0x04104649 "Squire"	unsigned char *
++		[349]	0x04104655 "Psychic"	unsigned char *
++		[350]	0x04104662 "Gypsy"	unsigned char *
++		[351]	0x0410466d "Negotiator"	unsigned char *
++		[352]	0x0410467d "Duper"	unsigned char *
++		[353]	0x04104688 "Burglar"	unsigned char *
++		[354]	0x04104695 "Serf"	unsigned char *
++		[355]	0x0410469f "Tailor"	unsigned char *
++		[356]	0x041046ab "Laborer"	unsigned char *
++		[357]	0x041046b8 "Farmer"	unsigned char *
++		[358]	0x041046c4 "Cooper"	unsigned char *
++		[359]	0x041046d0 "Potter"	unsigned char *
++		[360]	0x041046dc "Weaver"	unsigned char *
++		[361]	0x041046e8 "Cobbler"	unsigned char *
++		[362]	0x041046f5 "Ditch Digger"	unsigned char *
++		[363]	0x04104707 "Miller"	unsigned char *
++		[364]	0x04104713 "Carpenter"	unsigned char *
++		[365]	0x04104722 "Stone Cutter"	unsigned char *
++		[366]	0x04104734 "Jester"	unsigned char *
++		[367]	0x04104740 "Trapper"	unsigned char *
++		[368]	0x0410474d "Beggar"	unsigned char *
++		[369]	0x04104759 "Rustler"	unsigned char *
++		[370]	0x04104766 "Hunter"	unsigned char *
++		[371]	0x04104772 "Scribe"	unsigned char *
++		[372]	0x0410477e "Missionary"	unsigned char *
++		[373]	0x0410478e "Follower of Baa"	unsigned char *
++		[374]	0x041047a3 "Gambler"	unsigned char *
+
++		[376]	0x041047c0 "%s was caught stealing!"	unsigned char *
++		[377]	0x041047dd "%s failed to steal anything!"	unsigned char *
++		[378]	0x041047ff ""%s %d, %d""	unsigned char *
+
++		[380]	0x0410481b "You already know the %s spell"	unsigned char *
++		[381]	0x0410483e "You don't have the skill to learn %s"	unsigned char *
++		[382]	0x04104868 "That player is %s"	unsigned char *
++		[383]	0x0410487f "his"	unsigned char *
++		[384]	0x04104888 "her"	unsigned char *
++		[385]	0x04104891 "sir"	unsigned char *
++		[386]	0x0410489a "Sir"	unsigned char *
++		[387]	0x041048a3 "lady"	unsigned char *
++		[388]	0x041048ad "Lord"	unsigned char *
++		[389]	0x041048b7 "Lady"	unsigned char *
++		[390]	0x041048c1 "brother"	unsigned char *
++		[391]	0x041048ce "sister"	unsigned char *
+
++		[393]	0x041048ea "daughter"	unsigned char *
++		[394]	0x041048f8 "Unknown"	unsigned char *
++		[395]	0x04104905 "morning"	unsigned char *
++		[396]	0x04104912 "day"	unsigned char *
++		[397]	0x0410491b "evening"	unsigned char *
++		[398]	0x04104928 "Have a Drink"	unsigned char *
+
++		[400]	0x04104947 "Buy Spells"	unsigned char *
++		[401]	0x04104957 "Skill Cost: %lu"	unsigned char *
+
++		[403]	0x0410497a "You already know the %s skill"	unsigned char *
+
++		[406]	0x041049c9 "Hire"	unsigned char *
++		[407]	0x041049d3 "More Information"	unsigned char *
++		[408]	0x041049e9 "Dismiss %s"	unsigned char *
++		[409]	0x041049f9 "Do you wish to leave %s?"	unsigned char *
++		[410]	0x04104a17 "Leave %s"	unsigned char *
+
++		[412]	0x04104a33 "Create Party cannot be completed unless you have assigned all characters 2 extra skills and have spent all of your bonus points."	unsigned char *
++		[413]	0x04104ab9 "You can't spend more than 50 points."	unsigned char *
++		[414]	0x04104ae3 "This place is open from %d%s to %d%s"	unsigned char *
++		[415]	0x04104b0d "January"	unsigned char *
++		[416]	0x04104b1a "February"	unsigned char *
++		[417]	0x04104b28 "March"	unsigned char *
++		[418]	0x04104b33 "April"	unsigned char *
++		[419]	0x04104b3e "May"	unsigned char *
++		[420]	0x04104b47 "June"	unsigned char *
++		[421]	0x04104b51 "July"	unsigned char *
++		[422]	0x04104b5b "August"	unsigned char *
++		[423]	0x04104b67 "September"	unsigned char *
++		[424]	0x04104b76 "October"	unsigned char *
++		[425]	0x04104b83 "November"	unsigned char *
++		[426]	0x04104b91 "December"	unsigned char *
+
++		[428]	0x04104bc0 "Spell failed"	unsigned char *
+
++		[430]	0x04104be1 "%s is now Level %lu and has earned %lu Skill Points!"	unsigned char *
+
+
++		[435]	0x04104c4a "Converse with %s"	unsigned char *
++		[436]	0x04104c60 "Minutes"	unsigned char *
++		[437]	0x04104c6d "Minute"	unsigned char *
++		[438]	0x04104c79 "Seconds"	unsigned char *
++		[439]	0x04104c86 "Second"	unsigned char *
++		[440]	0x04104c92 "Heroism"	unsigned char *
++		[441]	0x04104c9f "Haste"	unsigned char *
++		[442]	0x04104caa "Stoneskin"	unsigned char *
++		[443]	0x04104cb9 "Bless"	unsigned char *
++		[444]	0x04104cc4 "Ooops!"	unsigned char *
++		[445]	0x04104cd0 "Lucky Day"	unsigned char *
++		[446]	0x04104cdf "Identify Failed"	unsigned char *
++		[447]	0x04104cf4 "Precision"	unsigned char *
++		[448]	0x04104d03 "Repair Failed"	unsigned char *
++		[449]	0x04104d16 "Power"	unsigned char *
++		[450]	0x04104d21 "Active Spells: %s"	unsigned char *
++		[451]	0x04104d38 "Active Party Spells"	unsigned char *
++		[452]	0x04104d51 "Torch Light"	unsigned char *
++		[453]	0x04104d62 "Wizard Eye"	unsigned char *
++		[454]	0x04104d72 "Feather Fall"	unsigned char *
++		[455]	0x04104d84 "Fly"	unsigned char *
++		[456]	0x04104d8d "Water Walk"	unsigned char *
++		[457]	0x04104d9d "Guardian"	unsigned char *
++		[458]	0x04104dab "Prot Fire"	unsigned char *
++		[459]	0x04104dba "Prot Elec"	unsigned char *
++		[460]	0x04104dc9 "Prot Cold"	unsigned char *
++		[461]	0x04104dd8 "Prot Poison"	unsigned char *
++		[462]	0x04104de9 "Prot Magic"	unsigned char *
++		[463]	0x04104df9 "Type: %s"	unsigned char *
++		[464]	0x04104e07 "Charges"	unsigned char *
++		[465]	0x04104e14 "Value"	unsigned char *
++		[466]	0x04104e1f "You found %lu gold (followers take %lu)!"	unsigned char *
++		[467]	0x04104e4d "You found %lu gold!"	unsigned char *
++		[468]	0x04104e66 "Clicking here will spend %d Skill Points"	unsigned char *
++		[469]	0x04104e94 "You need %d more Skill Points to advance here"	unsigned char *
++		[470]	0x04104ec7 "Get %s"	unsigned char *
++		[471]	0x04104ed3 "You found an item (%s)!"	unsigned char *
++		[472]	0x04104ef0 "am"	unsigned char *
++		[473]	0x04104ef8 "pm"	unsigned char *
++		[474]	0x04104f00 "Recall to %s"	unsigned char *
++		[475]	0x04104f12 "Set %s over %s"	unsigned char *
++		[476]	0x04104f26 "Set to %s"	unsigned char *
++		[477]	0x04104f35 "You are already resting!"	unsigned char *
++		[478]	0x04104f53 "You can't rest in turn-based mode!"	unsigned char *
++		[479]	0x04104f7b "You can't rest here!"	unsigned char *
++		[480]	0x04104f95 "There are hostile enemies near!"	unsigned char *
++		[481]	0x04104fba "Encounter!"	unsigned char *
++		[482]	0x04104fca "You don't have enough food to rest"	unsigned char *
++		[483]	0x04104ff2 "Set %s as the Ready Spell"	unsigned char *
++		[484]	0x04105011 "Select a spell then click here to set a QuickSpell"	unsigned char *
++		[485]	0x04105049 "Cast %s"	unsigned char *
++		[486]	0x04105056 "Select %s"	unsigned char *
++		[487]	0x04105065 "You have already mastered this skill!"	unsigned char *
++		[488]	0x04105090 "You don't have enough skill points!"	unsigned char *
++		[489]	0x041050b9 ""You have %d total gold, %d in the Bank""	unsigned char *
++		[490]	0x041050e7 "You found %d gold and an item (%s)!"	unsigned char *
++		[491]	0x04105110 "Can't cast Meteor Shower indoors!"	unsigned char *
++		[492]	0x04105137 "Can't cast Inferno outdoors!"	unsigned char *
++		[493]	0x04105159 "Can't cast Jump while airborne! "	unsigned char *
++		[494]	0x0410517f "Can not cast Fly indoors!"	unsigned char *
++		[495]	0x0410519e "Can't cast Starburst indoors!"	unsigned char *
++		[496]	0x041051c1 "No valid target exists! "	unsigned char *
++		[497]	0x041051df "Can't cast Prismatic Light outdoors!"	unsigned char *
++		[498]	0x04105209 "Herbalist"	unsigned char *
++		[499]	0x04105218 "Can't cast Armageddon indoors!"	unsigned char *
++		[500]	0x0410523c "You have %lu gold"	unsigned char *
++		[501]	0x04105253 "You have %lu food"	unsigned char *
++		[502]	0x0410526a "You find %lu food"	unsigned char *
++		[503]	0x04105281 "You lose %lu gold"	unsigned char *
++		[504]	0x04105298 "You lose %lu food"	unsigned char *
+
++		[506]	0x041052bf "Roderick"	unsigned char *
++		[507]	0x041052cd "Alexis"	unsigned char *
++		[508]	0x041052d9 "Serena"	unsigned char *
++		[509]	0x041052e5 "Zoltan"	unsigned char *
+
++		[510]	0x041052f1 "Saintly"	unsigned char *
++		[511]	0x041052fe "Angelic"	unsigned char *
++		[512]	0x0410530b "Glorious"	unsigned char *
++		[513]	0x04105319 "Honorable"	unsigned char *
++		[514]	0x04105328 "Respectable"	unsigned char *
++		[515]	0x04105339 "Average"	unsigned char *
++		[516]	0x04105346 "Bad"	unsigned char *
++		[517]	0x0410534f "Vile"	unsigned char *
++		[518]	0x04105359 "Despicable"	unsigned char *
++		[519]	0x04105369 "Monstrous"	unsigned char *
++		[520]	0x04105378 "Notorious"	unsigned char *
+
+
+
++		[524]	0x041053b9 "Once again you've cheated death! "	unsigned char *
++		[525]	0x041053e1 "Apothecary"	unsigned char *
+
++		[527]	0x041053fb "Thank You!"	unsigned char *
++		[528]	0x0410540b "I can offer you nothing further."	unsigned char *
++		[529]	0x04105431 ""Sorry, but we are unable to train you.""	unsigned char *
++		[530]	0x0410545f "Moon"	unsigned char *
++		[531]	0x04105469 "Location"	unsigned char *
++		[532]	0x04105477 "Please try back in "	unsigned char *
++		[533]	0x04105490 ""I cannot join you, you're party is full""	unsigned char *
++		[534]	0x041054bf "Become %s in %s for %lu gold"	unsigned char *
++		[535]	0x041054e1 "Learn"	unsigned char *
++		[536]	0x041054ec ""With your skills, you should be working here as a teacher.""	unsigned char *
++		[537]	0x0410552e "Train to level %d for %d gold"	unsigned char *
+
++		[539]	0x04105587 "Buy Items"	unsigned char *
++		[540]	0x04105596 "Sell Items"	unsigned char *
+
++		[542]	0x041055ba "Repair Items"	unsigned char *
++		[543]	0x041055cc "Special Items"	unsigned char *
++		[544]	0x041055df "Seek knowledge elsewhere %s the %s"	unsigned char *
++		[545]	0x04105607 "Castle Ironfist"	unsigned char *
++		[546]	0x0410561c "New Sorpigal"	unsigned char *
++		[547]	0x0410562e "Free Haven"	unsigned char *
++		[548]	0x0410563e "Arena"	unsigned char *
++		[549]	0x04105649 "Blackshire"	unsigned char *
++		[550]	0x04105659 "Kriegspire"	unsigned char *
++		[551]	0x04105669 "White Cap"	unsigned char *
++		[552]	0x04105678 "Silver Cove"	unsigned char *
++		[553]	0x04105689 "Darkmoor"	unsigned char *
++		[554]	0x04105697 "Mist"	unsigned char *
++		[555]	0x041056a1 "Bootleg Bay West"	unsigned char *
++		[556]	0x041056b7 "Volcano"	unsigned char *
++		[557]	0x041056c4 "Hermit's Isle"	unsigned char *
++		[558]	0x041056d7 "Child"	unsigned char *
++		[559]	0x041056e2 "Island North"	unsigned char *
++		[560]	0x041056f4 "Island South"	unsigned char *
++		[561]	0x04105706 ""Sorry, come back another day""	unsigned char *
++		[562]	0x0410572a "do anything"	unsigned char *
++		[563]	0x0410573b "Pack is Full!"	unsigned char *
++		[564]	0x0410574e "Hic..."	unsigned char *
++		[565]	0x0410575a "Have a Drink first..."	unsigned char *
+
++		[568]	0x0410578a "Club"	unsigned char *
++		[569]	0x04105794 "Done!"	unsigned char *
++		[570]	0x0410579f "Good as New!"	unsigned char *
++		[571]	0x041057b1 "Ready Spell: %s"	unsigned char *
++		[572]	0x041057c6 "Scroll Left"	unsigned char *
++		[573]	0x041057d7 "Scroll Right"	unsigned char *
++		[574]	0x041057e9 ""Welcome to the Arena of Life and Death.  Remember, you are only allowed one arena combat per visit.  To fight an arena battle, select the option that best describes your abilities and return to me- if you survive""	unsigned char *
++		[575]	0x041058c6 "Please wait while I summon the monsters.  Good luck."	unsigned char *
++		[576]	0x04105900 "Congratulations on your win here's your stuff %u gold."	unsigned char *
++		[577]	0x0410593e "Get back in there you wimps"	unsigned char *
++		[578]	0x04105960 "Page"	unsigned char *
++		[579]	0x0410596a "Squire"	unsigned char *
++		[580]	0x04105976 "Knight"	unsigned char *
++		[581]	0x04105982 "Lord"	unsigned char *
++		[582]	0x0410598c "You already won this trip to the Arena"	unsigned char *
+
++		[584]	0x041059d5 "Click here to remove your Quick Spell"	unsigned char *
++		[585]	0x04105a00 "Item is not of high enough quality"	unsigned char *
++		[586]	0x04105a28 "Not enough spell points"	unsigned char *
++		[587]	0x04105a45 "Attack Bonus"	unsigned char *
++		[588]	0x04105a57 "Attack Damage"	unsigned char *
++		[589]	0x04105a6a "Shoot Bonus"	unsigned char *
++		[590]	0x04105a7b "Shoot Damage"	unsigned char *
++		[591]	0x04105a8d "Charmed"	unsigned char *
++		[592]	0x04105a9a "Shrunk"	unsigned char *
++		[593]	0x04105aa6 "Slowed"	unsigned char *
++		[594]	0x04105ab2 "Feebleminded"	unsigned char *
++		[595]	0x04105ac4 "Wand"	unsigned char *
++		[596]	0x04105ace "Chaplain"	unsigned char *
++		[597]	0x04105adc "Diplomat"	unsigned char *
++		[598]	0x04105aea "Fallen Wizard"	unsigned char *
++		[599]	0x04105afd "Prelate"	unsigned char *
++		[600]	0x04105b0a "Sage"	unsigned char *
++		[601]	0x04105b14 "Zombie"	unsigned char *
++		[602]	0x04105b20 "History"	unsigned char *
++		[603]	0x04105b2d "Pay Fine"	unsigned char *
++		[604]	0x04105b3b "Bounty Hunt"	unsigned char *
++		[605]	0x04105b4c "Current Fine"	unsigned char *
++		[606]	0x04105b5e "Pay"	unsigned char *
++		[607]	0x04105b67 "Enslaved"	unsigned char *
++		[608]	0x04105b75 "Berserk"	unsigned char *
++		[609]	0x04105b82 "Hour of Power"	unsigned char *
++		[610]	0x04105b95 "Day of Protection"	unsigned char *
++		[611]	0x04105bac "Play ArcoMage"	unsigned char *
++		[612]	0x04105bbf "Save game corrupted!  Code=%d"	unsigned char *
+
++		[614]	0x04105bf4 "New Game"	unsigned char *
++		[615]	0x04105c02 "Save Game"	unsigned char *
++		[616]	0x04105c11 "Load Game"	unsigned char *
++		[617]	0x04105c20 ""Sound, Keyboard, Game Options""	unsigned char *
++		[618]	0x04105c46 "Quit"	unsigned char *
++		[619]	0x04105c50 "Return to Game"	unsigned char *
++		[620]	0x04105c64 "Rules"	unsigned char *
++		[621]	0x04105c6f "Play"	unsigned char *
++		[622]	0x04105c79 "Victory Conditions"	unsigned char *
+
++		[624]	0x04105c9c "Physical"	unsigned char *
++		[625]	0x04105caa "Immune"	unsigned char *
++		[626]	0x04105cb6 "Resistances"	unsigned char *
++		[627]	0x04105cc7 "Resistant"	unsigned char *
++		[628]	0x04105cd6 "Spell"	unsigned char *
++		[629]	0x04105ce1 "Spells"	unsigned char *
++		[630]	0x04105ced "?"	unsigned char *
++		[631]	0x04105cf4 "Effects"	unsigned char *
++		[632]	0x04105d01 "This skill level can not be learned by the %s class."	unsigned char *
++		[633]	0x04105d3b "You have to be promoted to %s to learn this skill level."	unsigned char *
++		[634]	0x04105d79 "You have to be promoted to %s or %s to learn this skill level."	unsigned char *
++		[635]	0x04105dbd "%s stuns %s"	unsigned char *
++		[636]	0x04105dce "%s paralyzes %s"	unsigned char *
++		[637]	0x04105de3 "%s evades damage"	unsigned char *
++		[638]	0x04105df9 "There are hostile creatures nearby!"	unsigned char *
++		[639]	0x04105e22 "A tie!"	unsigned char *
++		[640]	0x04105e2e "You won!"	unsigned char *
++		[641]	0x04105e3c "You lost!"	unsigned char *
++		[642]	0x04105e4b "Error"	unsigned char *
++		[643]	0x04105e56 "by a Tower Building Victory!"	unsigned char *
++		[644]	0x04105e78 "by Wall Building due to a Tower Building Tie!"	unsigned char *
++		[645]	0x04105eab "by a Tower Destruction Victory!"	unsigned char *
++		[646]	0x04105ed0 "by a Resource Victory!"	unsigned char *
++		[647]	0x04105eec "by a Resource Victory due to a Tower & Wall Building Tie!"	unsigned char *
++		[648]	0x04105f2b "This character can't summon any more monsters!"	unsigned char *
++		[649]	0x04105f5f "Summoned"	unsigned char *
++		[650]	0x04105f6d "Current Hit Points"	unsigned char *
++		[651]	0x04105f85 "Hardened"	unsigned char *
++		[652]	0x04105f93 "You can not do that while you are underwater!"	unsigned char *
++		[653]	0x04105fc6 "Food"	unsigned char *
++		[654]	0x04105fd0 "%s's Jar"	unsigned char *
++		[655]	0x04105fde "%s' Jar"	unsigned char *
+
++		[657]	0x04105ffc "Water Breathing"	unsigned char *
++		[658]	0x04106011 "Collect Prize"	unsigned char *
++		[659]	0x04106024 "x: %d  y: %d"	unsigned char *
++		[660]	0x04106036 "You are drowning!"	unsigned char *
++		[661]	0x0410604d "You are burning!"	unsigned char *
++		[662]	0x04106063 "Instructors"	unsigned char *
++		[663]	0x04106074 "It will take %d day to cross to %s."	unsigned char *
++		[664]	0x0410609d "Click here to accept this party and continue to the game."	unsigned char *
++		[665]	0x041060dc "Ok Button"	unsigned char *
++		[666]	0x041060eb "Clears all party stats and skills."	unsigned char *
++		[667]	0x04106113 "Clear Button"	unsigned char *
++		[668]	0x04106125 "Subtract"	unsigned char *
++		[669]	0x04106133 ""Subtracts a point from the highlighted skill, returning it to the bonus pool""	unsigned char *
++		[670]	0x04106187 "Add"	unsigned char *
++		[671]	0x04106190 ""Adds a point from the highlighted skill, taking it from the bonus pool""	unsigned char *
++		[672]	0x041061de ""For your numerous crimes and evil deeds, you have been sentenced to one year in prison.""	unsigned char *
++		[673]	0x0410623d "You have an outstanding fine of %lu gold.  Pay your fine now or be sentenced to jail for 1 year?"	unsigned char *
++		[674]	0x041062a3 "Temp Might"	unsigned char *
++		[675]	0x041062b3 ""Splendid job!  With the activation of the Gate, a thousand worlds lie at your feet.  Perhaps on one of them you will find the Ancients themselves, and return with the fruits their great civilization has to offer your world and your kingdom.""	unsigned char *
++		[676]	0x041063ab ""Brilliant!  The completion of the Heavenly Forge has provided enough Ancient weapons to crush all resistance to your plans.  Soon the world will bow to your every whim!  Still, you can't help but wonder what was beyond the Gate the other side was trying so hard to build.""	unsigned char *
+ */
\ No newline at end of file