# HG changeset patch # User Gloval # Date 1360960401 -14400 # Node ID 038a4d09406f982c94679b2c1b848efaf7c8dc2a # Parent 16d257ffc80247840bdaa136651dce2b5311bbda new texts file, fix text rendender error diff -r 16d257ffc802 -r 038a4d09406f Arcomage.cpp --- a/Arcomage.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Arcomage.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -13,7 +13,7 @@ #include "Events2D.h" #include "stru272.h" #include "VectorTypes.h" - +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f GUIFont.cpp --- a/GUIFont.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/GUIFont.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -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; iIsCharValid(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)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 (ipMetrics[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;jIsCharValid(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 (jpMetrics[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]; } diff -r 16d257ffc802 -r 038a4d09406f GUIFont.h --- a/GUIFont.h Fri Feb 15 19:46:25 2013 +0600 +++ b/GUIFont.h Sat Feb 16 00:33:21 2013 +0400 @@ -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); diff -r 16d257ffc802 -r 038a4d09406f GUIWindow.cpp --- a/GUIWindow.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/GUIWindow.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -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), diff -r 16d257ffc802 -r 038a4d09406f GUIWindow.h --- a/GUIWindow.h Fri Feb 15 19:46:25 2013 +0600 +++ b/GUIWindow.h Sat Feb 16 00:33:21 2013 +0400 @@ -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(); diff -r 16d257ffc802 -r 038a4d09406f Game.cpp --- a/Game.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Game.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -21,6 +21,7 @@ #include "Bink_Smacker.h" #include "Events.h" #include "Arcomage.h" +#include "texts.h" //#include "MM7.h" diff -r 16d257ffc802 -r 038a4d09406f GameUIs.cpp --- a/GameUIs.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/GameUIs.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -7,6 +7,7 @@ #include "LOD.h" #include "SaveLoad.h" #include "Render.h" +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Items.cpp --- a/Items.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Items.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -9,7 +9,7 @@ #include "Party.h" #include "FactionTable.h" #include "StorylineTextTable.h" - +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Monsters.cpp --- a/Monsters.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Monsters.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -6,7 +6,7 @@ #include "FrameTableInc.h" #include "Allocator.h" #include "LOD.h" - +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Party.cpp --- a/Party.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Party.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -12,6 +12,7 @@ #include "Viewport.h" #include "Actor.h" #include "GUIWindow.h" +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Player.cpp --- a/Player.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Player.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -20,6 +20,7 @@ #include "StorylineTextTable.h" #include "Autonotes.h" #include "Awards.h" +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Render.cpp --- a/Render.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Render.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -21,6 +21,7 @@ #include "Actor.h" #include "Log.h" #include "TileFrameTable.h" +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f SaveLoad.cpp --- a/SaveLoad.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/SaveLoad.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -17,6 +17,7 @@ #include "LayingItem.h" #include "Viewport.h" #include "stru123.h" +#include "texts.h" #include "Log.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f Spells.cpp --- a/Spells.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/Spells.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -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; } } @@ -131,13 +125,14 @@ int v15; // [sp+1Ch] [bp-4h]@9 v1 = this; + if ( pSpellsTXT_Raw ) pAllocator->FreeChunk(pSpellsTXT_Raw); - pSpellsTXT_Raw = 0; - v2 = "\r"; + pSpellsTXT_Raw = NULL; + pSpellsTXT_Raw = (char *)pEvents_LOD->LoadRaw("spells.txt", 0); strtok(pSpellsTXT_Raw, "\r"); - strtok(0, "\r"); + strtok(NULL, "\r"); v14 = 1; v12 = (char *)&pSpellDatas[1].field_10; v3 = (char *)&v1->pInfos[1].uSchool; diff -r 16d257ffc802 -r 038a4d09406f Spells.h --- a/Spells.h Fri Feb 15 19:46:25 2013 +0600 +++ b/Spells.h Sat Feb 16 00:33:21 2013 +0400 @@ -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) diff -r 16d257ffc802 -r 038a4d09406f mm7_1.cpp --- a/mm7_1.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_1.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -48,6 +48,7 @@ #include "stru298.h" #include "StorylineTextTable.h" #include "Events2D.h" +#include "texts.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f mm7_2.cpp --- a/mm7_2.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_2.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -51,6 +51,7 @@ #include "Events2D.h" #include "stru159.h" #include "Log.h" +#include "texts.h" #include "mm7_data.h" @@ -9236,330 +9237,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]; -} - - - - diff -r 16d257ffc802 -r 038a4d09406f mm7_3.cpp --- a/mm7_3.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_3.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -41,6 +41,7 @@ #include "stru176.h" #include "stru159.h" #include "stru298.h" +#include "texts.h" #include "Log.h" #include "mm7_data.h" @@ -16508,42 +16509,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; } } @@ -16552,45 +16550,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 ) @@ -16603,65 +16599,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; @@ -16669,22 +16662,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; } } @@ -16703,30 +16695,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; } } @@ -16792,7 +16783,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; } diff -r 16d257ffc802 -r 038a4d09406f mm7_4.cpp --- a/mm7_4.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_4.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -49,6 +49,7 @@ #include "stru351.h" #include "Events2D.h" #include "stru159.h" +#include "texts.h" #include "Log.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f mm7_5.cpp --- a/mm7_5.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_5.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -41,6 +41,7 @@ #include "stru298.h" #include "StorylineTextTable.h" #include "Events2D.h" +#include "texts.h" #include "Log.h" #include "mm7_data.h" diff -r 16d257ffc802 -r 038a4d09406f mm7_6.cpp --- a/mm7_6.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_6.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -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; @@ -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); diff -r 16d257ffc802 -r 038a4d09406f mm7_data.cpp --- a/mm7_data.cpp Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_data.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -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 @@ -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; diff -r 16d257ffc802 -r 038a4d09406f mm7_data.h --- a/mm7_data.h Fri Feb 15 19:46:25 2013 +0600 +++ b/mm7_data.h Sat Feb 16 00:33:21 2013 +0400 @@ -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); diff -r 16d257ffc802 -r 038a4d09406f texts.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/texts.cpp Sat Feb 16 00:33:21 2013 +0400 @@ -0,0 +1,377 @@ + +#include +#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]; + } + + + diff -r 16d257ffc802 -r 038a4d09406f texts.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/texts.h Sat Feb 16 00:33:21 2013 +0400 @@ -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 unsigned char * ++ [224] 0x00000000 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