changeset 1845:f3db8e8cbad5

Merge
author Ritor1
date Sun, 13 Oct 2013 22:53:45 +0600
parents 4359a15360e3 (current diff) 2e6d3cd052e0 (diff)
children 7954c2f385b5
files
diffstat 20 files changed, 141 insertions(+), 129 deletions(-) [+]
line wrap: on
line diff
--- a/GUIWindow.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/GUIWindow.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -1067,7 +1067,7 @@
 {
   unsigned int full_time; // esi@1
   signed __int64 hours; // kr00_8@1
-  char *text; // eax@2
+  const char *text; // eax@2
   signed __int64 minutes; // [sp+Ch] [bp-10h]@1
   signed __int64 seconds; // [sp+14h] [bp-8h]@1
   unsigned int days; // [sp+20h] [bp+4h]@1
--- a/Items.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/Items.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -2699,7 +2699,7 @@
 	//----- (004B3703) --------------------------------------------------------
 void FillAviableSkillsToTeach( int _this )
 	{
-	char *v30; // ecx@65
+	const char *v30; // ecx@65
 	unsigned int v29; // edx@56
 	int v15; // ecx@19
 	int v33; // [sp-4h] [bp-2Ch]@23
@@ -2824,7 +2824,7 @@
 		default:
 			v30 = pGlobalTXT_LocalizationStrings[127]; //"No Text!"
 			}
-		pShopOptions[dword_F8B1DC] = v30;
+		pShopOptions[dword_F8B1DC] = const_cast<char *>(v30);
 		++dword_F8B1DC;
 		CreateButtonInColumn(i+1, v29);
 		}
--- a/NPC.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/NPC.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -1312,7 +1312,7 @@
   {
     case 13:
       current_npc_text = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession].pJoinText;//(char *)*(&pNPCStats->field_13A64 + 5 * v2->uProfession);
-      current_npc_text = BuildDialogueString((char *)current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
+      current_npc_text = BuildDialogueString(current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
       NPCHireableDialogPrepare();
       dialogue_show_profession_details = false;
       goto _return;
@@ -1511,7 +1511,7 @@
       dialogue_show_profession_details = false;
       uDialogueType = 13;
       current_npc_text = pNPCStats->pProfessions[pCurrentNPCInfo->uProfession - 1].pJoinText;
-      current_npc_text = BuildDialogueString((char *)current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
+      current_npc_text = BuildDialogueString(current_npc_text, uActiveCharacter - 1, 0, 0, 0, 0);
       if ( uActiveCharacter )
         pPlayers[uActiveCharacter]->PlaySound(SPEECH_NotEnoughGold, 0);
       ShowStatusBarString(pGlobalTXT_LocalizationStrings[155], 2);
--- a/Party.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/Party.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -96,6 +96,18 @@
     field_708 = 15;
     field_0 = 25;
 
+    uNumDeaths = 0;
+    uNumPrisonTerms = 0;
+    uNumBountiesCollected = 0;
+    memset(monster_for_hunting_killed, 5, sizeof(__int16));
+    memset(monster_id_for_hunting, 5, sizeof(__int16));
+    memset(_quest_bits, 64, sizeof(__int8));
+    memset(pArcomageWins, 16, sizeof(__int8));
+    uNumArenaPageWins = 0;
+    uNumArenaSquireWins = 0;
+    uNumArenaKnightWins = 0;
+    uNumArenaLordWins = 0;
+
 }
 
 //inlined
--- a/Player.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/Player.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -4277,7 +4277,7 @@
   Player *playerAffected; // esi@1
   signed int v5; // eax@17
   int v8; // edx@39
-  char *v13; // eax@45
+  const char *v13; // eax@45
   signed int v15; // edi@68
   int v16; // edx@73
   unsigned __int16 v17; // edi@73
@@ -4297,7 +4297,7 @@
   const char *v68; // [sp-4h] [bp-30h]@89
   char v72; // [sp+20h] [bp-Ch]@68
   signed int v73; // [sp+24h] [bp-8h]@1
-  char*  v74; // [sp+24h] [bp-8h]@23
+  const char*  v74; // [sp+24h] [bp-8h]@23
   Player *thisb; // [sp+28h] [bp-4h]@1
   unsigned int thisa; // [sp+28h] [bp-4h]@22
 
--- a/UI/Books/UIMapBook.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/Books/UIMapBook.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -79,12 +79,12 @@
 unsigned int  DrawLloydBeaconsScreen()
 {
   Player *pPlayer; // esi@1
-  char *pText; // eax@1
+  const char *pText; // eax@1
   int pTextHeight; // eax@14
   int RemainingTime; // kr08_8@14
   unsigned int pHours; // esi@14
   unsigned int pDays; // eax@14
-  char *pSelectionText; // eax@19
+  const char *pSelectionText; // eax@19
   Texture *v19; // [sp-4h] [bp-8Ch]@4
   GUIWindow pWindow; // [sp+Ch] [bp-7Ch]@1
   char *Str; // [sp+74h] [bp-14h]@14
--- a/UI/UICharacter.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UICharacter.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -1995,7 +1995,7 @@
 void CharacterUI_StatsTab_Draw( Player *player )
 {
   int pY; // ST34_4@4
-  char *pText; // eax@9
+  const char *pText; // eax@9
   const char *a2; // [sp+14h] [bp-Ch]@4
 
   pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("fr_stats", TEXTURE_16BIT_PALETTE));
--- a/UI/UIGuilds.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UIGuilds.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -233,7 +233,7 @@
       {
         v15 = (ItemGen *)(&pParty->pPlayers[1].uExpressionTimeLength + 18 * (v13 + 12 * (int)window_SpeakInHouse->ptr_1C));
         v17 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction( (ItemGen *)&pParty->pPlayers[1].uExpressionTimeLength + v13 + 12 * (int)window_SpeakInHouse->ptr_1C, BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C,  2);
-        v18 = BuildDialogueString((char *)pMerchantsBuyPhrases[v17], uActiveCharacter - 1, v15, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
+        v18 = BuildDialogueString(pMerchantsBuyPhrases[v17], uActiveCharacter - 1, v15, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
         pTextHeight = pFontArrus->CalcTextHeight(v18, &working_window, 0, 0);
         working_window.DrawTitleText(pFontArrus, 0, (174 - pTextHeight) / 2 + 138,  pColorWhite, v18, 3);
         return;
--- a/UI/UIHouses.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UIHouses.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -1654,10 +1654,10 @@
     {
       pStringSum = 1;
       pTextHeight = 0;
-      pShopOptions[0] = pGlobalTXT_LocalizationStrings[604];//Охота за вознаграждение
+      pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[604]);//Охота за вознаграждение
       if ( pParty->uFine > 0 )
       {
-        pShopOptions[1] = pGlobalTXT_LocalizationStrings[603];//Заплатить штраф
+        pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[603]);//Заплатить штраф
         pStringSum = 2;
       }
       for ( uint i = 0; i < pStringSum; ++i )
@@ -2158,11 +2158,11 @@
       if ( HouseUI_CheckIfPlayerCanInteract() )
       {
         pOptionsCount = 2;
-        pShopOptions[0] = pGlobalTXT_LocalizationStrings[620];//Правила
-        pShopOptions[1] = pGlobalTXT_LocalizationStrings[622];//Условия победы
+        pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[620]);//Правила
+        pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[622]);//Условия победы
         if ( pParty->HasItem(651) )//651 - Колода для игры в АркоМэйдж в Items.txt
         {
-          pShopOptions[2] = pGlobalTXT_LocalizationStrings[621];//Играть
+          pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[621]);//Играть
           pOptionsCount = 3;
         }
         for ( i = 0; i < pOptionsCount; ++i )
@@ -2230,8 +2230,8 @@
       pShopOptions[0] = pTmpBuf.data();
       index = 0;
     }
-    pShopOptions[1] = pGlobalTXT_LocalizationStrings[68];//"Пожертвовать"
-    pShopOptions[2] = pGlobalTXT_LocalizationStrings[160];//"Обучиться навыкам"
+    pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[68]);//"Пожертвовать"
+    pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);//"Обучиться навыкам"
     all_text_height = 0;
     if ( index < pDialogueWindow->pNumPresenceButton )
     {
@@ -2514,7 +2514,7 @@
       {
         index = 0;
         pShopOptions[0] = pTmpBuf.data();
-        pShopOptions[1] = pGlobalTXT_LocalizationStrings[160];// "Learn Skills"
+        pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);// "Learn Skills"
         if ( pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton )
         {
           for ( int i = pDialogueWindow->pStartingPosActiveItem;
--- a/UI/UIPopup.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UIPopup.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -111,7 +111,7 @@
   unsigned int v2; // eax@3
   const char *v28; // edi@69
   int v34; // esi@81
-  char *pText; // [sp-14h] [bp-28Ch]@110
+  const char *pText; // [sp-14h] [bp-28Ch]@110
   char out_text[300]; // [sp+8h] [bp-270h]@40
   char v65[120]; // [sp+134h] [bp-144h]@92
   stru351_summoned_item v67;
@@ -448,8 +448,8 @@
   DDBLTFX Dst; // [sp+Ch] [bp-1E0h]@18
   DDSURFACEDESC2 pDesc; // [sp+70h] [bp-17Ch]@18
   RECT v84; // [sp+ECh] [bp-100h]@26
-  char *string_name[10]; // [sp+FCh] [bp-F0h]@145
-  char *content[11]; // [sp+124h] [bp-C8h]@127
+  const char *string_name[10]; // [sp+FCh] [bp-F0h]@145
+  const char *content[11]; // [sp+124h] [bp-C8h]@127
   RenderBillboardTransform_local0 v106; // [sp+150h] [bp-9Ch]@3
   unsigned int v107; // [sp+1A0h] [bp-4Ch]@18
   unsigned __int16 *v108; // [sp+1A4h] [bp-48h]@34
@@ -460,7 +460,7 @@
   bool expert_level; // [sp+1C4h] [bp-28h]@18
   bool master_level; // [sp+1C8h] [bp-24h]@18
   bool grandmaster_level; // [sp+1B4h] [bp-38h]@3
-  char *pText; // [sp+1D4h] [bp-18h]@18
+  const char *pText; // [sp+1D4h] [bp-18h]@18
   int pTextColorID; // [sp+1E4h] [bp-8h]@18
   int a4; // [sp+1E8h] [bp-4h]@18
   int v115;
@@ -1069,8 +1069,8 @@
 {
   int pStringNum; // edi@1
   signed int pTextColor; // eax@15
-  char *pHourWord; // ecx@17
-  char *pDayWord; // eax@20
+  const char *pHourWord; // ecx@17
+  const char *pDayWord; // eax@20
   int v15; // ebx@28
   POINT a2; // [sp+Ch] [bp-24h]@1
   int pHour; // [sp+14h] [bp-1Ch]@15
@@ -1288,8 +1288,8 @@
 {
   int v5; // esi@62
   GUIButton *pButton; // esi@84
-  char *pStr; // edi@85
-  char *pHint; // edx@113
+  const char *pStr; // edi@85
+  const char *pHint; // edx@113
   GUIWindow popup_window; // [sp+4h] [bp-74h]@32
   struct tagPOINT Point; // [sp+60h] [bp-18h]@6
   unsigned int pX; // [sp+70h] [bp-8h]@3
@@ -1555,7 +1555,7 @@
       }
       if ( popup_window.Hint )
       {
-        pHint = (char*)popup_window.Hint;
+        pHint = popup_window.Hint;
         popup_window.Hint = 0;
         popup_window.uFrameWidth = 384;
         popup_window.uFrameHeight = 256;
--- a/UI/UIShops.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UIShops.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -44,10 +44,10 @@
     {
       if ( HouseUI_CheckIfPlayerCanInteract() )
       {
-        pShopOptions[0] = pGlobalTXT_LocalizationStrings[134];
-        pShopOptions[1] = pGlobalTXT_LocalizationStrings[152];
-        pShopOptions[2] = pGlobalTXT_LocalizationStrings[159];
-        pShopOptions[3] = pGlobalTXT_LocalizationStrings[160];
+        pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[134]);
+        pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[152]);
+        pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[159]);
+        pShopOptions[3] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);
         all_text_height = 0;
         for ( int i = 0; i < 4; ++i )
           all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -104,7 +104,7 @@
             item = &pParty->StandartItemsInShops[(int)window_SpeakInHouse->ptr_1C][(pRenderer->pActiveZBuffer[mouse.x + pSRZBufferLineOffsets[mouse.y]] & 0xFFFF) - 1];
             if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal() )
             {
-              pText = BuildDialogueString((char *)pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 2)],
+              pText = BuildDialogueString(pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 2)],
                                        uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
               dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
             }
@@ -155,7 +155,7 @@
             item = &pParty->SpecialItemsInShops[(int)window_SpeakInHouse->ptr_1C][(pRenderer->pActiveZBuffer[mouse.x + pSRZBufferLineOffsets[mouse.y]] & 0xFFFF) - 1];
             if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal() )
             {
-              pText = BuildDialogueString((char *)pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 2)],
+              pText = BuildDialogueString(pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 2)],
                                        uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
               dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
             }
@@ -188,7 +188,7 @@
         return;
       item = &pPlayers[uActiveCharacter]->pInventoryItemList[pItemID - 1];
       phrases_id = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 3);
-      pText = BuildDialogueString((char *)pMerchantsSellPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 3, 0);
+      pText = BuildDialogueString(pMerchantsSellPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 3, 0);
       dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       break;
     }
@@ -210,7 +210,7 @@
       if (!item->IsIdentified())
       {
         phrases_id = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_WeaponShop, (int)window_SpeakInHouse->ptr_1C, 4);
-        pText = BuildDialogueString((char *)pMerchantsIdentifyPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
+        pText = BuildDialogueString(pMerchantsIdentifyPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
         dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       }
       else
@@ -237,7 +237,7 @@
         return;
       item = &pPlayers[uActiveCharacter]->pInventoryItemList[pItemID - 1];
       phrases_id = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_ArmorShop, (int)window_SpeakInHouse->ptr_1C, 5);
-      pText = BuildDialogueString((char *)pMerchantsRepairPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
+      pText = BuildDialogueString(pMerchantsRepairPhrases[phrases_id], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
       dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       return;
     }
@@ -247,9 +247,9 @@
     {
       draw_leather();
       CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
-      pShopOptions[0] = pGlobalTXT_LocalizationStrings[200];//sell
-      pShopOptions[1] = pGlobalTXT_LocalizationStrings[113];//identify
-      pShopOptions[2] = pGlobalTXT_LocalizationStrings[179];//repair
+      pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[200]);//sell
+      pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[113]);//identify
+      pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[179]);//repair
       all_text_height = 0;
       for ( int i = 0; i < 3; ++i )
         all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -369,10 +369,10 @@
     {
       if ( !HouseUI_CheckIfPlayerCanInteract() )
         return;
-      pShopOptions[0] = pGlobalTXT_LocalizationStrings[134]; //"Buy Standard"
-      pShopOptions[1] = pGlobalTXT_LocalizationStrings[152]; //"Buy Special"
-      pShopOptions[2] = pGlobalTXT_LocalizationStrings[159]; //"Display Inventory"
-      pShopOptions[3] = pGlobalTXT_LocalizationStrings[160];
+      pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[134]); //"Buy Standard"
+      pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[152]); //"Buy Special"
+      pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[159]); //"Display Inventory"
+      pShopOptions[3] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);
       all_text_height = 0;
       for( int i = 0; i < 4; ++i )
         all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -439,7 +439,7 @@
         selected_item = &pParty->StandartItemsInShops[window_SpeakInHouse->par1C][(pRenderer->pActiveZBuffer[mouse.x + pSRZBufferLineOffsets[mouse.y]] & 0xFFFF) - 1];
         if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal())
         {
-          pText = BuildDialogueString((char *)pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 2)],
+          pText = BuildDialogueString(pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 2)],
                                  uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
           dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
         }
@@ -502,7 +502,7 @@
           selected_item = &pParty->SpecialItemsInShops[window_SpeakInHouse->par1C][(pRenderer->pActiveZBuffer[mouse.x + pSRZBufferLineOffsets[mouse.y]] & 0xFFFF) - 1];
         if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal() )
         {
-          pText = BuildDialogueString((char *)pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 2)],
+          pText = BuildDialogueString(pMerchantsBuyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 2)],
                  uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
           dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
         }
@@ -522,9 +522,9 @@
     {
       draw_leather();
       CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
-      pShopOptions[0] = pGlobalTXT_LocalizationStrings[200]; //"Sell"
-      pShopOptions[1] = pGlobalTXT_LocalizationStrings[113]; //"Identify"
-      pShopOptions[2] = pGlobalTXT_LocalizationStrings[179]; //"Repair"
+      pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[200]); //"Sell"
+      pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[113]); //"Identify"
+      pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[179]); //"Repair"
       all_text_height = 0;
       for ( int i = 0; i < 3; ++i )
         all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -563,7 +563,7 @@
       if ( !pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v153) )
            return;
       selected_item = &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v153) - 1];
-      pText = BuildDialogueString((char *)pMerchantsSellPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 3)],
+      pText = BuildDialogueString(pMerchantsSellPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop, window_SpeakInHouse->par1C, 3)],
               uActiveCharacter - 1, selected_item, (char *) window_SpeakInHouse->par1C, 3, 0);
       dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       return;
@@ -586,7 +586,7 @@
             if (selected_item->IsIdentified())
               pText = BuildDialogueString("%24", uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
             else
-              pText = BuildDialogueString((char *)pMerchantsIdentifyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop,
+              pText = BuildDialogueString(pMerchantsIdentifyPhrases[pPlayers[uActiveCharacter]->SelectPhrasesTransaction(selected_item, BuildingType_ArmorShop,
                     (int)window_SpeakInHouse->ptr_1C, 4)], uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
             dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
             return;
@@ -612,7 +612,7 @@
       selected_item = &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v153) - 1];
       phrases_id = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(&pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v153) - 1],
              BuildingType_ArmorShop, window_SpeakInHouse->par1C, 5);
-      pText = BuildDialogueString((char *)pMerchantsRepairPhrases[phrases_id], uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
+      pText = BuildDialogueString(pMerchantsRepairPhrases[phrases_id], uActiveCharacter - 1, selected_item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
       dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       return;
     }
@@ -688,7 +688,7 @@
   int index; // eax@7
   signed int v5; // esi@9
   int v18; // eax@23
-  char *pText; // edx@29
+  const char *pText; // edx@29
   unsigned int product_height_1row; // edi@55
   unsigned int product_width_1row; // esi@57
   unsigned int product_height_2row; // edi@67
@@ -715,10 +715,10 @@
     {
       if ( HouseUI_CheckIfPlayerCanInteract() )
       {
-        pShopOptions[0] = pGlobalTXT_LocalizationStrings[134];
-        pShopOptions[1] = pGlobalTXT_LocalizationStrings[152];
-        pShopOptions[2] = pGlobalTXT_LocalizationStrings[159];
-        pShopOptions[3] = pGlobalTXT_LocalizationStrings[160];
+        pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[134]);
+        pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[152]);
+        pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[159]);
+        pShopOptions[3] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);
         all_text_height = 0;
         for ( int i = 0; i < 4; ++i )
           all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -817,7 +817,7 @@
           if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal() )
           {
             v71 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_AlchemistShop, (int)window_SpeakInHouse->ptr_1C, 2);
-            pText = BuildDialogueString((char *)pMerchantsBuyPhrases[v71], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
+            pText = BuildDialogueString(pMerchantsBuyPhrases[v71], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
           }
           else
             pText = BuildDialogueString(pGlobalTXT_LocalizationStrings[181], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
@@ -905,7 +905,7 @@
           if ( !GetAsyncKeyState(17) || !pPlayers[uActiveCharacter]->CanSteal() )
           {
             v71 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_AlchemistShop, (int)window_SpeakInHouse->ptr_1C, 2);
-            pText = BuildDialogueString((char *)pMerchantsBuyPhrases[v71], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
+            pText = BuildDialogueString(pMerchantsBuyPhrases[v71], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
           }
           else
             pText = BuildDialogueString(pGlobalTXT_LocalizationStrings[181], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
@@ -931,7 +931,7 @@
           return;
       v71 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(&pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&index) - 1],
              BuildingType_AlchemistShop, (int)window_SpeakInHouse->ptr_1C, 3);
-      pText = BuildDialogueString((char *)pMerchantsSellPhrases[v71], uActiveCharacter - 1, &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&index) - 1],
+      pText = BuildDialogueString(pMerchantsSellPhrases[v71], uActiveCharacter - 1, &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&index) - 1],
              (char *)window_SpeakInHouse->ptr_1C, 3, 0);
       dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(pText, &dialog_window, 0, 0)) / 2 + 138, TargetColor(0xFFu, 0xFFu, 0xFFu), pText, 3);
       return; 
@@ -966,8 +966,8 @@
     {
       draw_leather();
       CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
-      pShopOptions[0] = pGlobalTXT_LocalizationStrings[200];
-      pShopOptions[1] = pGlobalTXT_LocalizationStrings[113];
+      pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[200]);
+      pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[113]);
       all_text_height = 0;
       for ( int i = 0; i < 2; ++i )
         all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -1090,10 +1090,10 @@
   {
     if ( !HouseUI_CheckIfPlayerCanInteract() )
         return;
-    pShopOptions[0] = pGlobalTXT_LocalizationStrings[134]; //"Buy Standard"
-    pShopOptions[1] = pGlobalTXT_LocalizationStrings[152]; //"Buy Special"
-    pShopOptions[2] = pGlobalTXT_LocalizationStrings[159]; //"Display Inventory"
-    pShopOptions[3] = pGlobalTXT_LocalizationStrings[160];
+    pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[134]); //"Buy Standard"
+    pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[152]); //"Buy Special"
+    pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[159]); //"Display Inventory"
+    pShopOptions[3] = const_cast<char *>(pGlobalTXT_LocalizationStrings[160]);
     all_text_height = 0;
     for ( int i = 0; i < 4; ++i )
       all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -1194,7 +1194,7 @@
         else
         {
           v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 2);
-          v30 = BuildDialogueString((char *)pMerchantsBuyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
+          v30 = BuildDialogueString(pMerchantsBuyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
         }
         dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138, TargetColor(255, 255, 255), v30, 3);
         return;
@@ -1282,7 +1282,7 @@
         else
         {
           v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 2);
-          v30 = BuildDialogueString((char *)pMerchantsBuyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
+          v30 = BuildDialogueString(pMerchantsBuyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0);
         }
         dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138, TargetColor(255, 255, 255), v30, 3);
         return;
@@ -1295,9 +1295,9 @@
   {
     draw_leather();
     CharacterUI_InventoryTab_Draw(pPlayers[uActiveCharacter], true);
-    pShopOptions[0] = pGlobalTXT_LocalizationStrings[200];// "Sell"
-    pShopOptions[1] = pGlobalTXT_LocalizationStrings[113];// "Identify"
-    pShopOptions[2] = pGlobalTXT_LocalizationStrings[179];// "Repair"
+    pShopOptions[0] = const_cast<char *>(pGlobalTXT_LocalizationStrings[200]);// "Sell"
+    pShopOptions[1] = const_cast<char *>(pGlobalTXT_LocalizationStrings[113]);// "Identify"
+    pShopOptions[2] = const_cast<char *>(pGlobalTXT_LocalizationStrings[179]);// "Repair"
     all_text_height = 0;
     for ( uint i = 0; i < 3; ++i )
       all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0);
@@ -1336,7 +1336,7 @@
       return;
     item = &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117) - 1];
     v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 3);
-    v30 = BuildDialogueString((char *)pMerchantsSellPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 3, 0);
+    v30 = BuildDialogueString(pMerchantsSellPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 3, 0);
     dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138, TargetColor(255, 255, 255), v30, 3);
     return;
   }
@@ -1362,7 +1362,7 @@
             return;
           }
           v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 4);
-          v30 = BuildDialogueString((char *)pMerchantsIdentifyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
+          v30 = BuildDialogueString(pMerchantsIdentifyPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0);
           dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138, TargetColor(255, 255, 255), v30, 3);
           return;
         }
@@ -1388,7 +1388,7 @@
     item = &pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117) - 1];
     v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(&pPlayers[uActiveCharacter]->pInventoryItemList[pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117) - 1],
              BuildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 5);
-    v30 = BuildDialogueString((char *)pMerchantsRepairPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
+    v30 = BuildDialogueString(pMerchantsRepairPhrases[v75], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0);
     dialog_window.DrawTitleText(pFontArrus, 0, (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138, TargetColor(255, 255, 255), v30, 3);
     return;
   }
--- a/UI/UiGame.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/UI/UiGame.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -355,7 +355,7 @@
   unsigned __int16 pTextColor; // ax@104
   GUIWindow window; // [sp+ACh] [bp-68h]@42
   GUIFont *pOutString; // [sp+10Ch] [bp-8h]@39
-  char *pInString=NULL; // [sp+110h] [bp-4h]@32
+  const char *pInString=NULL; // [sp+110h] [bp-4h]@32
 
   if ( !pDialogueWindow )
     return;
@@ -753,9 +753,9 @@
   Texture *v13; // eax@6
   PlayerFrame *v15; // eax@12
   unsigned int pTextColor; // eax@15
-  char *v29; // eax@16
+  const char *v29; // eax@16
   int v36; // esi@22
-  char *v39; // eax@24
+  const char *v39; // eax@24
   signed int uFramesetID; // [sp+20h] [bp-8h]@9
   int uFramesetIDa; // [sp+20h] [bp-8h]@18
 
@@ -843,7 +843,7 @@
   unsigned int pX; // [sp+14h] [bp-18h]@2
   unsigned int pY; // edi@9
   int pSkillsCount; // ecx@27
-  char *pText; // eax@38
+  const char *pText; // eax@38
   int pFontHeight; // [sp+18h] [bp-14h]@1
 
   pRenderer->DrawTextureIndexed(8, 8, pIcons_LOD->LoadTexturePtr("quikref", TEXTURE_16BIT_PALETTE));
--- a/mm7_1.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_1.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -78,7 +78,7 @@
 {
   unsigned int full_time; // esi@1
   signed __int64 hours; // kr00_8@1
-  char *text; // eax@2
+  const char *text; // eax@2
   signed __int64 minutes; // [sp+10h] [bp-10h]@1
   signed __int64 seconds; // [sp+18h] [bp-8h]@1
   unsigned int day; // [sp+24h] [bp+4h]@1
--- a/mm7_2.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_2.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -661,21 +661,21 @@
 //----- (004BF91E) --------------------------------------------------------
 unsigned int  GameOverMenu(void *ecx0)
 {
-  char *v1; // eax@2
+  const char *v1; // eax@2
   unsigned int result; // eax@3
   Player *v3; // eax@7
-  char *v4; // ST24_4@9
+  const char *v4; // ST24_4@9
   int v5; // eax@9
-  char *v6; // eax@10
-  char *v7; // edx@10
-  char *v8; // ecx@12
-  char *v9; // eax@14
+  const char *v6; // eax@10
+  const char *v7; // edx@10
+  const char *v8; // ecx@12
+  const char *v9; // eax@14
   unsigned int v10; // eax@25
   GUIWindow pWindow; // [sp+34h] [bp-9Ch]@1
   //MSG Msg; // [sp+88h] [bp-48h]@22
   unsigned int v14; // [sp+A4h] [bp-2Ch]@5
   void *v15; // [sp+A8h] [bp-28h]@1
-  char *pInString; // [sp+ACh] [bp-24h]@5
+  const char *pInString; // [sp+ACh] [bp-24h]@5
   unsigned int v17; // [sp+B0h] [bp-20h]@5
   unsigned int v18; // [sp+B4h] [bp-1Ch]@5
   unsigned int v19; // [sp+B8h] [bp-18h]@5
--- a/mm7_4.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_4.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -1737,7 +1737,7 @@
 
 
 //----- (00495430) --------------------------------------------------------
-char * GetReputationString( signed int a1 )
+const char * GetReputationString( signed int a1 )
     {
   if (a1 >= 25)
     return pGlobalTXT_LocalizationStrings[379]; // Hated
@@ -1752,10 +1752,10 @@
 }
 
 //----- (00495461) --------------------------------------------------------
-char *BuildDialogueString(char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, __int64 *a6)
+char *BuildDialogueString(const char *lpsz, unsigned __int8 uPlayerID, ItemGen *a3, char *a4, int a5, __int64 *a6)
 {
   Player *pPlayer; // ebx@3
-  char *pText; // esi@7
+  const char *pText; // esi@7
   int v17; // eax@10
   signed __int64 v18; // qax@18
   unsigned __int8 *v20; // ebx@32
@@ -2965,7 +2965,7 @@
   //const char *v22; // [sp-8h] [bp-34h]@21
   //unsigned int v23; // [sp-8h] [bp-34h]@38
   //char *v24; // [sp-8h] [bp-34h]@82
-  char *v25; // [sp-4h] [bp-30h]@14
+  const char *v25; // [sp-4h] [bp-30h]@14
   //int v26; // [sp-4h] [bp-30h]@38
   //int v27; // [sp-4h] [bp-30h]@82
   char v28[4]; // [sp+Ch] [bp-20h]@9
@@ -3342,7 +3342,7 @@
 void __fastcall _4B3FE5_training_dialogue(int a4)
 {
   int v1; // edi@1
-  char *v2; // edi@1
+  const char *v2; // edi@1
   
   __debugbreak();
   v1 = a4;
--- a/mm7_6.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_6.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -101,9 +101,9 @@
     Dst.uItemID = pActor->uCarriedItemID;
     v9 = pItemsTable->pItems[Dst.uItemID].pUnidentifiedName;
     if ( v14 )
-      sprintfex(pTmpBuf2.data(), (char*)pGlobalTXT_LocalizationStrings[490], v14, v9);
+      sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[490], v14, v9);
     else
-      sprintfex(pTmpBuf2.data(), (char*)pGlobalTXT_LocalizationStrings[471], v9);
+      sprintfex(pTmpBuf2.data(), pGlobalTXT_LocalizationStrings[471], v9);
     ShowStatusBarString(pTmpBuf2.data(), 2u);
     v4 = Dst.uItemID;
     v5 = Dst.uItemID;
--- a/mm7_data.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_data.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -905,12 +905,12 @@
 int BtnUp_flag; //BtnUp_flag
 int quick_spell_at_page; // weak
 char byte_506550; // weak
-std::array<char *, 5> aMoonPhaseNames;
+std::array<const char *, 5> aMoonPhaseNames;
 int _506568_autonote_type; // weak
 char bRecallingBeacon; // weak
 int uLastPointedObjectID; // weak
 //unsigned __int8 bMonsterInfoUI_bDollInitialized;
-std::array<char *, 44> aSpellNames;
+std::array<const char *, 44> aSpellNames;
 int pMainScreenNum; // weak
 int dword_506980_uW; // weak
 int dword_506984_uZ; // weak
@@ -943,10 +943,10 @@
 unsigned int uGameUIFontShadow;
 unsigned int uGameUIFontMain;
 int dword_507B00_spell_info_to_draw_in_popup; // weak
-std::array<char *, 12> aMonthNames;
-std::array<char *, 7> aDayNames;
-std::array<char *, 9> aSpellSchoolNames;
-std::array<char *, 7> aAttributeNames;
+std::array<const char *, 12> aMonthNames;
+std::array<const char *, 7> aDayNames;
+std::array<const char *, 9> aSpellSchoolNames;
+std::array<const char *, 7> aAttributeNames;
 int dword_507B94; // weak
 unsigned int uActiveCharacter;
 int dword_507BF0_is_there_popup_onscreen; // weak
@@ -1070,7 +1070,7 @@
 char *p2DEventsTXT_Raw;
 
 int dword_5C35D4; // weak
-std::array<char *, 2> aAMPMNames;
+std::array<const char *, 2> aAMPMNames;
 char byte_5C45AF[777]; // weak
 
 std::array<char, 4096> pFinalMessage; // idb
@@ -1115,7 +1115,7 @@
 //std::array<char, 777> byte_5C8D1A; // weak
 
 std::array<char, 777> byte_5E4C15; // weak
-std::array<char *, 14> pSomeItemsNames;
+std::array<const char *, 14> pSomeItemsNames;
 
 char *pMonstersTXT_Raw;
 char *pMonsterPlacementTXT_Raw;
@@ -1262,14 +1262,14 @@
 int dword_7241C8; // weak
 struct unk_F7B60C stru_73C834; // struct @ MM7.exe::0073C834
 
-std::array<char *, 59> aNPCProfessionNames;
+std::array<const char *, 59> aNPCProfessionNames;
 char *pAwardsTXT_Raw;
 char *pScrollsTXT_Raw;
 char *pMerchantsTXT_Raw;
-std::array<char *, 7> pMerchantsBuyPhrases;
-std::array<char *, 7> pMerchantsSellPhrases;
-std::array<char *, 7> pMerchantsRepairPhrases;
-std::array<char *, 7> pMerchantsIdentifyPhrases;
+std::array<const char *, 7> pMerchantsBuyPhrases;
+std::array<const char *, 7> pMerchantsSellPhrases;
+std::array<const char *, 7> pMerchantsRepairPhrases;
+std::array<const char *, 7> pMerchantsIdentifyPhrases;
 char *pTransitionsTXT_Raw;
 char *pAutonoteTXT_Raw;
 char *pQuestsTXT_Raw;
@@ -1313,9 +1313,9 @@
 __int64 qword_A750D8; // weak
 enum PlayerSpeech PlayerSpeechID;
 int uSpeakingCharacter; // weak
-std::array<char *, 36> pClassNames;
-std::array<char *, 19> aCharacterConditionNames;
-std::array<char *, 38> pSkillNames;
+std::array<const char *, 36> pClassNames;
+std::array<const char *, 19> aCharacterConditionNames;
+std::array<const char *, 38> pSkillNames;
 int dword_AE336C; // weak
 int dword_AE3370; // weak
 char byte_AE5B91; // weak
--- a/mm7_data.h	Sun Oct 13 22:53:37 2013 +0600
+++ b/mm7_data.h	Sun Oct 13 22:53:45 2013 +0600
@@ -549,12 +549,12 @@
 extern int BtnUp_flag; //BtnUp_flag
 extern int quick_spell_at_page; // weak
 extern char byte_506550; // weak
-extern std::array<char *, 5> aMoonPhaseNames;
+extern std::array<const char *, 5> aMoonPhaseNames;
 extern int _506568_autonote_type; // 506568
 extern char bRecallingBeacon; // weak
 extern int uLastPointedObjectID; // weak
 //extern unsigned __int8 bMonsterInfoUI_bDollInitialized;
-extern std::array<char *, 44> aSpellNames;
+extern std::array<const char *, 44> aSpellNames;
 extern int pMainScreenNum; // weak
 extern int dword_506980_uW; // weak
 extern int dword_506984_uZ; // weak
@@ -588,10 +588,10 @@
 extern unsigned int uGameUIFontShadow;
 extern unsigned int uGameUIFontMain;
 extern int dword_507B00_spell_info_to_draw_in_popup; // weak
-extern std::array<char *, 12> aMonthNames;
-extern std::array<char *, 7> aDayNames;
-extern std::array<char *, 9> aSpellSchoolNames;
-extern std::array<char *, 7> aAttributeNames;
+extern std::array<const char *, 12> aMonthNames;
+extern std::array<const char *, 7> aDayNames;
+extern std::array<const char *, 9> aSpellSchoolNames;
+extern std::array<const char *, 7> aAttributeNames;
 extern int dword_507B94; // weak
 extern unsigned int uActiveCharacter;
 extern int dword_507BF0_is_there_popup_onscreen; // weak
@@ -718,7 +718,7 @@
 extern char *p2DEventsTXT_Raw;
 
 extern int dword_5C35D4; // weak
-extern std::array<char *, 2> aAMPMNames;
+extern std::array<const char *, 2> aAMPMNames;
 extern char byte_5C45AF[]; // weak
 extern std::array<char, 10000> pTmpBuf3;
 extern std::array<char, 4096> pFinalMessage; // idb
@@ -762,7 +762,7 @@
 //extern std::array<char, 777> byte_5C8D1A; // weak
 
 extern std::array<char, 777> byte_5E4C15; // weak
-extern std::array<char *, 14> pSomeItemsNames;
+extern std::array<const char *, 14> pSomeItemsNames;
 
 extern char *pMonstersTXT_Raw;
 extern char *pMonsterPlacementTXT_Raw;
@@ -911,14 +911,14 @@
 extern int dword_723E84[]; // weak
 extern int dword_7241C8; // weak
 
-extern std::array<char *, 59> aNPCProfessionNames;
+extern std::array<const char *, 59> aNPCProfessionNames;
 extern char *pAwardsTXT_Raw;
 extern char *pScrollsTXT_Raw;
 extern char *pMerchantsTXT_Raw;
-extern std::array<char *, 7> pMerchantsBuyPhrases;
-extern std::array<char *, 7> pMerchantsSellPhrases;
-extern std::array<char *, 7> pMerchantsRepairPhrases;
-extern std::array<char *, 7> pMerchantsIdentifyPhrases;
+extern std::array<const char *, 7> pMerchantsBuyPhrases;
+extern std::array<const char *, 7> pMerchantsSellPhrases;
+extern std::array<const char *, 7> pMerchantsRepairPhrases;
+extern std::array<const char *, 7> pMerchantsIdentifyPhrases;
 extern char *pTransitionsTXT_Raw;
 extern char *pAutonoteTXT_Raw;
 extern char *pQuestsTXT_Raw;
@@ -972,9 +972,9 @@
 extern __int64 qword_A750D8; // weak
 extern enum PlayerSpeech PlayerSpeechID;
 extern int uSpeakingCharacter; // weak
-extern std::array<char *, 36> pClassNames;
-extern std::array<char *, 19> aCharacterConditionNames;
-extern std::array<char *, 38> pSkillNames;
+extern std::array<const char *, 36> pClassNames;
+extern std::array<const char *, 19> aCharacterConditionNames;
+extern std::array<const char *, 38> pSkillNames;
 extern int dword_AE336C; // weak
 extern int dword_AE3370; // weak
 extern char byte_AE5B91; // weak
@@ -1241,8 +1241,8 @@
 void _494035_timed_effects__water_walking_damage__etc();
 unsigned int __fastcall _494820_training_time(unsigned int a1);
 char *__fastcall sub_495366(unsigned __int8 a1, unsigned __int8 a2);
-char *GetReputationString(signed int a1);
-char *BuildDialogueString(char *lpsz, unsigned __int8 uPlayerID, struct ItemGen *a3, char *a4, int a5, __int64 *a6);
+const char *GetReputationString(signed int a1);
+char *BuildDialogueString(const char *lpsz, unsigned __int8 uPlayerID, struct ItemGen *a3, char *a4, int a5, __int64 *a6);
 void PlayerCreationUI_Draw();
 void PlayerCreationUI_Initialize();
 void DeleteCCharFont();
--- a/texts.cpp	Sun Oct 13 22:53:37 2013 +0600
+++ b/texts.cpp	Sun Oct 13 22:53:45 2013 +0600
@@ -13,7 +13,7 @@
 
 static char *pGlobalTXT_Raw=NULL;
 
-std::array<char *, MAX_LOC_STRINGS> pGlobalTXT_LocalizationStrings;
+std::array<const char *, MAX_LOC_STRINGS> pGlobalTXT_LocalizationStrings;
 
 
 
--- a/texts.h	Sun Oct 13 22:53:37 2013 +0600
+++ b/texts.h	Sun Oct 13 22:53:45 2013 +0600
@@ -168,7 +168,7 @@
 
 	};
 
-  extern  std::array<char *, MAX_LOC_STRINGS> pGlobalTXT_LocalizationStrings;
+  extern  std::array<const char *, MAX_LOC_STRINGS> pGlobalTXT_LocalizationStrings;
 
 /*