# HG changeset patch # User Grumpy7 # Date 1393094689 -3600 # Node ID 8673f3aedfb95da1230a459ab9b11005f4de22d2 # Parent afca921547954525960fd241218a89e355c1262a sub_4B1523 to sub_4B1523_showSpellbookInfo, changed input type, some vars renamed diff -r afca92154795 -r 8673f3aedfb9 Build/Visual Studio 2012/World of Might and Magic.sln --- a/Build/Visual Studio 2012/World of Might and Magic.sln Sat Feb 22 18:25:53 2014 +0100 +++ b/Build/Visual Studio 2012/World of Might and Magic.sln Sat Feb 22 19:44:49 2014 +0100 @@ -1,4 +1,3 @@ - Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2012 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "World of Might and Magic", "World of Might and Magic.vcxproj", "{5DA49362-EF43-4753-85DC-88CC41F26764}" diff -r afca92154795 -r 8673f3aedfb9 Build/Visual Studio 2012/World of Might and Magic.vcxproj --- a/Build/Visual Studio 2012/World of Might and Magic.vcxproj Sat Feb 22 18:25:53 2014 +0100 +++ b/Build/Visual Studio 2012/World of Might and Magic.vcxproj Sat Feb 22 19:44:49 2014 +0100 @@ -42,11 +42,12 @@ true $(Configuration)\ - $(WoMM_MM7_INSTALL_DIR)\ + D:\Program Files (x86)\GOG.com\Might and Magic VII\ false $(SolutionDirectory)../../;$(IncludePath) + false false diff -r afca92154795 -r 8673f3aedfb9 UI/UIShops.cpp --- a/UI/UIShops.cpp Sat Feb 22 18:25:53 2014 +0100 +++ b/UI/UIShops.cpp Sat Feb 22 19:44:49 2014 +0100 @@ -1789,7 +1789,10 @@ pMouse->GetCursorPos(&cursor); v3 = pRenderer->pActiveZBuffer[cursor.x + pSRZBufferLineOffsets[cursor.y]] & 0xFFFF; if ( v3 ) - sub_4B1523((int *)&pParty->pPlayers[1].uExpressionTimeLength + 9 * (v3 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)); + { + unsigned int guildId = (unsigned int)window_SpeakInHouse->ptr_1C - 139; + sub_4B1523_showSpellbookInfo(pParty->SpellBooksInGuilds[guildId][v3].uItemID); + } } } //----- (004B1D27) -------------------------------------------------------- diff -r afca92154795 -r 8673f3aedfb9 mm7_4.cpp --- a/mm7_4.cpp Sat Feb 22 18:25:53 2014 +0100 +++ b/mm7_4.cpp Sat Feb 22 19:44:49 2014 +0100 @@ -1731,10 +1731,10 @@ } //----- (004B1523) -------------------------------------------------------- -void sub_4B1523(int *_this) +void sub_4B1523_showSpellbookInfo(int spellItemId) { - int v1; // esi@1 - int v2; // edx@1 + int spellId; // esi@1 + int spellLevel; // edx@1 unsigned int v3; // eax@2 int v4; // eax@4 LONG v5; // ecx@4 @@ -1742,14 +1742,14 @@ char *v7; // ST44_4@12 unsigned __int16 v8; // ax@12 GUIWindow a1; // [sp+Ch] [bp-68h]@4 - unsigned int v11; // [sp+60h] [bp-14h]@1 + unsigned int spellSchool; // [sp+60h] [bp-14h]@1 POINT a2; // [sp+64h] [bp-10h]@1 int v13; // [sp+6Ch] [bp-8h]@4 int v14; // [sp+70h] [bp-4h]@4 - v1 = *_this - 399; - v2 = (*_this - 400) % 11 + 1; - v11 = 4 * (*_this - 400) / 11; + spellId = spellItemId - 399; + spellLevel = (spellItemId - 400) % 11 + 1; + spellSchool = 4 * (spellItemId - 400) / 11; // sprintf(pTmpBuf.data(), "%s%03d", spellbook_texture_filename_suffices[v11 / 4], v2); not used if ( pMouse->GetCursorPos(&a2)->y <= 320 ) v3 = pMouse->GetCursorPos(&a2)->y + 30; @@ -1774,11 +1774,11 @@ if ( v4 > v5 ) v5 = v4; sprintf(pTmpBuf2.data(), "%s\n\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s\t000\n%s\t%03d:\t%03d%s", - pSpellStats->pInfos[v1].pDescription, pGlobalTXT_LocalizationStrings[431], // "Normal" - v5 + 3, v5 + 10, pSpellStats->pInfos[v1].pBasicSkillDesc, pGlobalTXT_LocalizationStrings[433], // "Expert" - v5 + 3, v5 + 10, pSpellStats->pInfos[v1].pExpertSkillDesc, pGlobalTXT_LocalizationStrings[432], // "Master" - v5 + 3, v5 + 10, pSpellStats->pInfos[v1].pMasterSkillDesc, pGlobalTXT_LocalizationStrings[96], // "Grand" - v5 + 3, v5 + 10, pSpellStats->pInfos[v1].pGrandmasterSkillDesc); + pSpellStats->pInfos[spellId].pDescription, pGlobalTXT_LocalizationStrings[431], // "Normal" + v5 + 3, v5 + 10, pSpellStats->pInfos[spellId].pBasicSkillDesc, pGlobalTXT_LocalizationStrings[433], // "Expert" + v5 + 3, v5 + 10, pSpellStats->pInfos[spellId].pExpertSkillDesc, pGlobalTXT_LocalizationStrings[432], // "Master" + v5 + 3, v5 + 10, pSpellStats->pInfos[spellId].pMasterSkillDesc, pGlobalTXT_LocalizationStrings[96], // "Grand" + v5 + 3, v5 + 10, pSpellStats->pInfos[spellId].pGrandmasterSkillDesc); v6 = pFontSmallnum->CalcTextHeight(pTmpBuf2.data(), &a1, 0, 0); a1.uFrameHeight += v6; if ( (signed int)a1.uFrameHeight < 150 ) @@ -1787,7 +1787,7 @@ a1.DrawMessageBox(0); a1.uFrameWidth -= 12; a1.uFrameHeight -= 12; - v7 = pSpellStats->pInfos[v1].pName; + v7 = pSpellStats->pInfos[spellId].pName; a1.uFrameZ = a1.uFrameX + a1.uFrameWidth - 1; a1.uFrameW = a1.uFrameHeight + a1.uFrameY - 1; v8 = Color16(0xFFu, 0xFFu, 0x9Bu); @@ -1795,8 +1795,8 @@ a1.DrawText(pFontSmallnum, 120, 44, 0, pTmpBuf2.data(), 0, 0, 0); a1.uFrameZ = a1.uFrameX + 107; a1.uFrameWidth = 108; - a1.DrawTitleText(pFontComic, 0xCu, 0x4Bu, 0, pSkillNames[v11 / 4 + 12], 3u); - sprintfex(pTmpBuf.data(), "%s\n%d", pGlobalTXT_LocalizationStrings[522], *(&pSpellDatas[0].uNormalLevelMana + 10 * v1)); + a1.DrawTitleText(pFontComic, 0xCu, 0x4Bu, 0, pSkillNames[spellSchool / 4 + 12], 3u); + sprintfex(pTmpBuf.data(), "%s\n%d", pGlobalTXT_LocalizationStrings[522], *(&pSpellDatas[0].uNormalLevelMana + 10 * spellId)); a1.DrawTitleText(pFontComic, 0xCu, a1.uFrameHeight - LOBYTE(pFontComic->uFontHeight) - 16, 0, pTmpBuf.data(), 3); } diff -r afca92154795 -r 8673f3aedfb9 mm7_unsorted_subs.h --- a/mm7_unsorted_subs.h Sat Feb 22 18:25:53 2014 +0100 +++ b/mm7_unsorted_subs.h Sat Feb 22 19:44:49 2014 +0100 @@ -220,7 +220,7 @@ void PlayLevelMusic(); unsigned int __fastcall sub_4B0E07(unsigned int uFaceID); // idb void sub_4B1447_party_fine(int a1, int a2, int a3); -void sub_4B1523(int *_this); +void sub_4B1523_showSpellbookInfo(int spellId); void ShowPopupShopItem(); void RestAndHeal(__int64 uNumMinutes); // idb void GetHouseGoodbyeSpeech();