# HG changeset patch # User Ritor1 # Date 1367205499 -21600 # Node ID 27bfe64b13b56b4fdbd1744a58d615eb8af896c8 # Parent aa7bd15e26551a0a5816f52aa3587e0ca632ecf6# Parent 34ed2d5e7cfb6c52cef94e2a90ebeba9462cb83d Слияние diff -r aa7bd15e2655 -r 27bfe64b13b5 DecalBuilder.cpp --- a/DecalBuilder.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/DecalBuilder.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -130,7 +130,7 @@ double v28; // st7@21 int v29; // ST10_4@21 int v30; // ST08_4@21 - DecalBuilder *v31; // esi@21 + //DecalBuilder *v31; // esi@21 int v32; // [sp+4h] [bp-44h]@18 RenderVertexSoft *v33; // [sp+8h] [bp-40h]@21 stru314 *v34; // [sp+Ch] [bp-3Ch]@21 @@ -143,15 +143,15 @@ int v41; // [sp+34h] [bp-14h]@22 int v42; // [sp+38h] [bp-10h]@21 int v43; // [sp+3Ch] [bp-Ch]@21 - DecalBuilder *thisa; // [sp+40h] [bp-8h]@1 - RenderVertexSoft *a11; // [sp+44h] [bp-4h]@8 + //DecalBuilder *thisa; // [sp+40h] [bp-8h]@1 + //RenderVertexSoft *a11; // [sp+44h] [bp-4h]@8 - __debugbreak(); +// __debugbreak(); - auto a2 = light_level; - auto a9 = uSectorID; + //auto a2 = light_level; + //auto a9 = uSectorID; - thisa = this; + //thisa = this; if ( !a5 ) return 0; @@ -174,7 +174,7 @@ stru314::stru314(&static_AE4F60); }*/ - a11 = a6; + //a11 = a6; if ( a7 ) { if ( a5 > 0 ) @@ -198,7 +198,7 @@ { if ( !a5 ) return 0; - a11 = static_AE4F90; + a6 = static_AE4F90; } } else @@ -214,25 +214,21 @@ LODWORD(v36) = (DWORD)&static_AE4F60.field_10; static_AE4F60.field_4.z = v18; static_AE4F60.dist = v16->face_plane.dist; - if ( !pGame->pIndoorCameraD3D->GetFacetOrientation( - v16->polygonType, - &static_AE4F60.field_4, - &static_AE4F60.field_10, - &static_AE4F60.field_1C) ) + if ( !pGame->pIndoorCameraD3D->GetFacetOrientation(v16->polygonType, &static_AE4F60.field_4, &static_AE4F60.field_10, &static_AE4F60.field_1C) ) { MessageBoxW(nullptr, L"Error: Failed to get the facet orientation", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\PolyProjector.cpp:101", 0); } int _a7 = 0; - if ( thisa->uNumDecals > 0 ) + if ( this->uNumDecals > 0 ) { - a6 = (RenderVertexSoft *)thisa->std__vector_30B00C; + a6 = (RenderVertexSoft *)this->std__vector_30B00C; do { v21 = &pBloodsplatContainer->std__vector_pBloodsplats[LODWORD(a6->vWorldPosition.x)]; *(float *)&v37 = v21->z; v36 = v21->y; v35 = v21->x; - v22 = _43F5C8_get_point_light_level_with_respect_to_lights(a2, a9, v35, v36, *(float *)&v37); + v22 = _43F5C8_get_point_light_level_with_respect_to_lights(light_level, uSectorID, v35, v36, *(float *)&v37); v23 = v21->b; v24 = v21->x; v42 = v22; @@ -246,7 +242,7 @@ v37 = a8; v40 = (signed __int64)v26; v28 = v21->dot_dist; - LODWORD(v36) = (uint32)a11; + LODWORD(v36) = (uint32)a6; a5a = v25; v39 = v27; LODWORD(v35) = a5; @@ -255,26 +251,15 @@ v32 = v23 | (v22 << 8); *(float *)&v29 = v21->radius; v30 = (int)v21; - v31 = thisa; - if ( !thisa->_49B790_build_decal_geometry( - v42, - a3, - v30, - (int)&a5a, - v29, - v43, - v33, - &static_AE4F60, - a5, - a11, - a8) ) + //v31 = thisa; + if ( !this->_49B790_build_decal_geometry(v42, a3, v30, (int)&a5a, v29, v43, v33, &static_AE4F60, a5, a6, a8) ) { MessageBoxW(nullptr, L"Error: Failed to build decal geometry", L"E:\\WORK\\MSDEV\\MM7\\MM7\\Code\\PolyProjector.cpp:114", 0); } ++_a7; a6 = (RenderVertexSoft *)((char *)a6 + 4); } - while ( _a7 < v31->uNumDecals ); + while ( _a7 < this->uNumDecals ); } return 1; } diff -r aa7bd15e2655 -r 27bfe64b13b5 Mouse.cpp --- a/Mouse.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/Mouse.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -429,9 +429,9 @@ //----- (00469EA4) -------------------------------------------------------- void Mouse::_469EA4() { - Mouse *v1; // esi@1 - unsigned int v2; // eax@2 - Texture *v3; // edi@2 + //Mouse *v1; // esi@1 + unsigned int pTextureID; // eax@2 + Texture *pTexture; // edi@2 unsigned int v4; // ecx@3 unsigned int v5; // eax@3 unsigned int v6; // ebx@5 @@ -449,16 +449,14 @@ int v18; // [sp+1Ch] [bp-Ch]@27 int v19; // [sp+20h] [bp-8h]@15 unsigned __int16 *v20; // [sp+20h] [bp-8h]@28 - int v21; // [sp+24h] [bp-4h]@12 + int pTextureWidth; // [sp+24h] [bp-4h]@12 unsigned __int16 *v22; // [sp+24h] [bp-4h]@25 - v1 = this; + //v1 = this; if ( pParty->pPickedItem.uItemID ) { - v2 = pIcons_LOD->LoadTexture( - pItemsTable->pItems[pParty->pPickedItem.uItemID].pIconName, - TEXTURE_16BIT_PALETTE); - v3 = (Texture *)(v2 != -1 ? (int)&pIcons_LOD->pTextures[v2] : 0); + pTextureID = pIcons_LOD->LoadTexture(pItemsTable->pItems[pParty->pPickedItem.uItemID].pIconName, TEXTURE_16BIT_PALETTE); + pTexture = (Texture *)(pTextureID != -1 ? (int)&pIcons_LOD->pTextures[pTextureID] : 0); if (pAsyncMouse) { v4 = *((int *)pAsyncMouse + 6); @@ -481,47 +479,46 @@ v6 = 0; v15 = 0; } - if ( (signed int)(v3->uTextureWidth + a2) <= 640 ) - v21 = v3->uTextureWidth; + if ( (signed int)(pTexture->uTextureWidth + a2) <= 640 ) + pTextureWidth = pTexture->uTextureWidth; else - v21 = 640 - a2; - if ( (signed int)(v3->uTextureHeight + v6) <= 480 ) + pTextureWidth = 640 - a2; + if ( (signed int)(pTexture->uTextureHeight + v6) <= 480 ) { - v19 = v3->uTextureHeight; - v7 = v3->uTextureHeight; + v19 = pTexture->uTextureHeight; + v7 = pTexture->uTextureHeight; } else { v7 = 480 - v6; v19 = 480 - v6; } - if ( !v1->pCursorBitmap3_sysmembits_16bit - || a2 != v1->field_40 - || v6 != v1->field_44 - || a2 + v21 != v1->field_48 - || v6 + v7 != v1->field_4C ) + if ( !this->pCursorBitmap3_sysmembits_16bit + || a2 != this->field_40 + || v6 != this->field_44 + || a2 + pTextureWidth != this->field_48 + || v6 + v7 != this->field_4C ) { - if ( v1->pCursorBitmap3_sysmembits_16bit ) - free(v1->pCursorBitmap3_sysmembits_16bit); - v1->pCursorBitmap3_sysmembits_16bit = (unsigned __int16 *)operator new(2 * v3->uTextureHeight - * v3->uTextureWidth); - v1->field_40 = a2; - v1->field_48 = a2 + v21; - v1->field_44 = v6; - v1->field_4C = v6 + v19; + if ( this->pCursorBitmap3_sysmembits_16bit ) + free(this->pCursorBitmap3_sysmembits_16bit); + this->pCursorBitmap3_sysmembits_16bit = (unsigned __int16 *)operator new(2 * pTexture->uTextureHeight * pTexture->uTextureWidth); + this->field_40 = a2; + this->field_48 = a2 + pTextureWidth; + this->field_44 = v6; + this->field_4C = v6 + v19; } - v8 = v1->field_44; - v22 = v1->pCursorBitmap3_sysmembits_16bit; + v8 = this->field_44; + v22 = this->pCursorBitmap3_sysmembits_16bit; v17 = pRenderer->pTargetSurface; v16 = pRenderer->uTargetSurfacePitch; - if ( v8 < v1->field_4C ) + if ( v8 < this->field_4C ) { - v9 = v1->field_48; + v9 = this->field_48; v10 = pRenderer->uTargetSurfacePitch * v8; do { - v11 = v1->field_40; - v18 = v1->field_40; + v11 = this->field_40; + v18 = this->field_40; if ( v11 < v9 ) { v20 = &v17[v10 + v11]; @@ -533,22 +530,22 @@ ++v20; ++v22; *v13 = *v12; - v9 = v1->field_48; + v9 = this->field_48; } while ( v18 < v9 ); } v10 += v16; ++v8; } - while ( v8 < v1->field_4C ); + while ( v8 < this->field_4C ); v6 = v15; } if (pParty->pPickedItem.Broken()) - pRenderer->DrawTransparentRedShade(a2, v6, v3); + pRenderer->DrawTransparentRedShade(a2, v6, pTexture); else if (!pParty->pPickedItem.Identified()) - pRenderer->DrawTransparentGreenShade(a2, v6, v3); + pRenderer->DrawTransparentGreenShade(a2, v6, pTexture); else - pRenderer->DrawTextureTransparent(a2, v6, v3); + pRenderer->DrawTextureTransparent(a2, v6, pTexture); } } else @@ -556,7 +553,7 @@ if ( this->pCursorBitmap3_sysmembits_16bit ) { free(this->pCursorBitmap3_sysmembits_16bit); - v1->pCursorBitmap3_sysmembits_16bit = 0; + this->pCursorBitmap3_sysmembits_16bit = 0; } } } diff -r aa7bd15e2655 -r 27bfe64b13b5 Spells.h --- a/Spells.h Mon Apr 29 09:18:06 2013 +0600 +++ b/Spells.h Mon Apr 29 09:18:19 2013 +0600 @@ -120,7 +120,7 @@ BECOME_MAGIC_GUILD_MEMBER = 150, SPELL_QUEST_COMPLETED = 151, SPELL_152 = 152, - SPELL_153 = 153 + SPELL_DISEASE = 153 }; diff -r aa7bd15e2655 -r 27bfe64b13b5 UICharacter.cpp --- a/UICharacter.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/UICharacter.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -2655,7 +2655,6 @@ pGUIWindow_CurrentMenu->_41D08F(a2, 1, 0, a5); } - //----- (00418511) -------------------------------------------------------- char __fastcall CharacterUI_StatsTab_Draw(unsigned int uPlayerID) { diff -r aa7bd15e2655 -r 27bfe64b13b5 UIHouses.cpp --- a/UIHouses.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/UIHouses.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -5499,7 +5499,6 @@ int all_text_height; // edi@21 char **v15; // esi@21 int v16; // eax@22 - GUIWindow *v17; // ecx@23 int v18; // edx@23 int v19; // edi@23 unsigned __int8 v20; // sf@23 @@ -5513,7 +5512,6 @@ int v28; // ST08_4@34 int v29; // eax@34 char *v30; // edx@35 - //GUIWindow *v31; // edi@40 void *v32; // eax@40 signed int v33; // esi@40 unsigned int v34; // esi@42 @@ -5521,8 +5519,6 @@ unsigned int v36; // eax@43 int v37; // eax@45 int v38; // ecx@50 - //GUIButton *v39; // eax@52 - //GUIButton *v40; // esi@52 int v41; // eax@52 char *v42; // eax@54 int v43; // eax@54 @@ -5540,11 +5536,9 @@ unsigned int v55; // edi@76 unsigned int v56; // esi@76 int v57; // edx@80 - Texture *v58; // ecx@86 unsigned int v59; // edi@86 unsigned int v60; // esi@88 int v61; // edx@92 - Texture *v62; // ecx@98 unsigned int v63; // edi@98 unsigned int v64; // esi@100 int v65; // edx@104 @@ -5554,24 +5548,16 @@ const char *v69; // ecx@119 POINT *v70; // esi@124 int v71; // ecx@125 - int v72; // eax@125 int v73; // ecx@125 - ItemGen *v74; // esi@125 int v75; // eax@130 - //int v76; // esi@131 - //char **v77; // edi@131 int v78; // eax@132 - //GUIWindow *v79; // ecx@133 int v80; // edx@133 int v81; // edi@133 - //GUIButton *v82; // esi@135 const char **v83; // eax@135 int v84; // eax@135 unsigned int v85; // ecx@135 int v86; // edx@135 - GUIWindow *v88; // [sp-18h] [bp-110h]@35 int v89; // [sp-14h] [bp-10Ch]@35 - ItemGen *v90; // [sp-10h] [bp-108h]@14 int v91; // [sp-10h] [bp-108h]@35 unsigned __int16 v92; // [sp-Ch] [bp-104h]@12 void *v93; // [sp-Ch] [bp-104h]@14 @@ -5651,239 +5637,12 @@ } return; } - - if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_DISPLAY_EQUIPMENT ) - { - draw_leather(); - CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); - pShopOptions[0] = pGlobalTXT_LocalizationStrings[200];// "Sell" - pShopOptions[1] = pGlobalTXT_LocalizationStrings[113];// "Identify" - pShopOptions[2] = pGlobalTXT_LocalizationStrings[179];// "Repair" - all_text_height = 0; - for ( uint i = 0; i < 3; ++i ) - all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0); - _this = ((174 - all_text_height) / 3); - v81 = (3 * (58 - (signed int)_this) - all_text_height) / 2 - (174 - all_text_height) / 3 / 2 + 138; - v20 = -pDialogueWindow->pNumPresenceButton < 0; - v118 = pDialogueWindow->pStartingPosActiveItem; - if ( v20 ^ pDialogueWindow->pStartingPosActiveItem > pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) - { - v122 = 2; - pSrtingNum = 0; - do - { - control_button = pDialogueWindow->GetControl(v118); - control_button->uY = (unsigned int)((char *)_this + v81); - pTextHeight = pFontArrus->CalcTextHeight(pShopOptions[pSrtingNum], &dialog_window, 0, 0); - v85 = control_button->uY; - control_button->uHeight = pTextHeight; - v81 = pTextHeight + v85 - 1; - control_button->uW = v81; - text_color = pYellowColor; - if ( pDialogueWindow->pCurrentPosActiveItem != v122 ) - text_color = pWhiteColor; - dialog_window.DrawTitleText(pFontArrus, 0, v85, text_color, pShopOptions[pSrtingNum], 3); - ++v122; - ++pSrtingNum; - ++v118; - } - while ( v118 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); - } - return; - } - - if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_REPAIR) - { - draw_leather(); - CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); - DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[198], 0);// "Select the Item to Repair" - if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() - || (pTextHeight = pMouse->GetCursorPos(&v110)->x - 14, - v117 = (pTextHeight >> 5) + 14 * ((pMouse->GetCursorPos(&v108)->y - 17) >> 5), - result = (int)pMouse->GetCursorPos(&v106), - *(int *)result <= 13) - || (result = (int)pMouse->GetCursorPos(&v104), *(int *)result >= 462) - || (result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117), v3 = 0, !result) - || (result *= 9, !(pPlayers[uActiveCharacter]->field_1F5[4 * result + 15] & 2)) ) - return; - item = &pPlayers[uActiveCharacter]->pInventoryItems[result - 1]; - v29 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(&pPlayers[uActiveCharacter]->pInventoryItems[result - 1], BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 5); - v30 = BuilDialogueString((char *)pMerchantsRepairPhrases[v29], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0); - v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); - return; - } - if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) - { - if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) - { - v3 = 0; - all_text_height = 0; - v33 = (signed __int64)(p2DEvents[(signed int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0); - v119 = (const char **)(v33 * (100 - pPlayers[uActiveCharacter]->GetMerchant()) / 100); - if ( (signed int)v119 < v33 / 3 ) - v119 = (const char **)(v33 / 3); - pActiveItemNum = pDialogueWindow->pStartingPosActiveItem; - v122 = 0; - if ( (signed int)pDialogueWindow->pStartingPosActiveItem >= pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) - { - sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);// - // "Seek knowledge elsewhere %s the %s" - strcat(pTmpBuf, "\n \n"); - strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further." - v6 = (174 - pFontArrus->CalcTextHeight(pTmpBuf, &dialog_window, 0, 0)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, v3, v6, pYellowColor, pTmpBuf, 3); - return; - } - do - { - v36 = pDialogueWindow->GetControl(pActiveItemNum)->msg_param - 36; - if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v36] && !pPlayers[uActiveCharacter]->pActiveSkills[v36] ) - { - all_text_height += pFontArrus->CalcTextHeight(pSkillNames[v36], &dialog_window, 0, 0); - ++v122; - } - ++pActiveItemNum; - } - while ( pActiveItemNum < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); - if ( !v122 ) - { - sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);// - // "Seek knowledge elsewhere %s the %s" - strcat(pTmpBuf, "\n \n"); - strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further." - v6 = (174 - pFontArrus->CalcTextHeight(pTmpBuf, &dialog_window, 0, 0)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, v3, v6, pYellowColor, pTmpBuf, 3); - return; - } - sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[401], v119);// "Skill Cost: %lu" - dialog_window.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf, 3u); - v119 = (const char **)((149 - all_text_height) / v122); - if ( (149 - all_text_height) / v122 > 32 ) - v119 = (const char **)32; - v38 = (149 - v122 * (signed int)v119 - all_text_height) / 2 - (signed int)v119 / 2 + 162; - v118 = 2; - if ( pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) - { - v122 = 2; - do - { - control_button = pDialogueWindow->GetControl(v122); - v41 = control_button->msg_param - 36; - if ( !byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v41] || pPlayers[uActiveCharacter]->pActiveSkills[v41] ) - { - control_button->uW = 0; - control_button->uHeight = 0; - control_button->uY = 0; - } - else - { - control_button->uY = (unsigned int)((char *)v119 + v38); - pTextHeight = pFontArrus->CalcTextHeight(pSkillNames[v41], &dialog_window, 0, 0); - v44 = control_button->uY; - control_button->uHeight = pTextHeight; - v38 = v44 + pTextHeight - 1; - control_button->uW = v38; - text_color = pYellowColor; - if ( pDialogueWindow->pCurrentPosActiveItem != v122 ) - text_color = pWhiteColor; - dialog_window.DrawTitleText(pFontArrus, 0, v44, text_color, pSkillNames[v41], 3); - } - ++v122; - } - while ( v122 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); - } - } - return; - } - if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_IDENTIFY) - { - draw_leather(); - CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); - DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[197], 0);// "Select the Item to Identify" - if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) - { - v2 = pMouse->GetCursorPos(&a2)->x - 14; - v117 = (v2 >> 5) + 14 * ((pMouse->GetCursorPos(&v98)->y - 17) >> 5); - result = (int)pMouse->GetCursorPos(&v111); - if ( *(int *)result > 13 ) - { - result = (int)pMouse->GetCursorPos(&v103); - if ( *(int *)result < 462 ) - { - result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117); - if ( result ) - { - item = &pPlayers[uActiveCharacter]->pInventoryItems[result-1]; - if ( item->uAttributes & 1 ) - { - v5 = BuilDialogueString("%24", uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0); - v6 = (212 - pFontArrus->CalcTextHeight(v5, &dialog_window, 0, 0)) / 2 + 101; - dialog_window.DrawTitleText(pFontArrus, 0, v6, pWhiteColor, v5, 3); - return; - } - v8 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 4); - v30 = BuilDialogueString((char *)pMerchantsIdentifyPhrases[v8], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0); - v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, 0, v6, pWhiteColor, v30, 3); - return; - } - } - } - } - return; - } - if ( dialog_menu_id > HOUSE_DIALOGUE_SHOP_REPAIR ) - { - if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_SPECIAL ) - { - result = dialog_menu_id - HOUSE_DIALOGUE_LEARN_SKILLS; - - } - } - else - { - - if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) - { - if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_SELL) - { - result = dialog_menu_id - HOUSE_DIALOGUE_SHOP_IDENTIFY; - return; - } - draw_leather(); - CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); - DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[199], 0);// "Select the Item to Sell" - result = sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win(); - if ( !result - || (v11 = pMouse->GetCursorPos(&v107)->x - 14, - v117 = (v11 >> 5) + 14 * ((pMouse->GetCursorPos(&v99)->y - 17) >> 5), - result = (int)pMouse->GetCursorPos(&v105), - *(int *)result <= 13) - || (result = (int)pMouse->GetCursorPos(&v101), *(int *)result >= 462) - || (result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117), v3 = 0, !result) ) - return; - v96 = 0; - v94 = 3; - v93 = window_SpeakInHouse->ptr_1C; - v90 = (ItemGen *)&pPlayers[uActiveCharacter]->pInventoryItems[result - 1]; - v12 = (int)window_SpeakInHouse->ptr_1C; - uPlayerID = uActiveCharacter - 1; - v13 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(v90, BildingType_MagicShop, v12, 3); - v9 = uPlayerID; - v10 = (char *)pMerchantsSellPhrases[v13]; - v30 = BuilDialogueString(v10, v9, v90, (char *)v93, v94, v96); - v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); - return; - } - } - pRenderer->DrawTextureIndexed(8, 8, ShopTexture); - v3 = 0; - v49 = 0; - v122 = 0; if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD) { + pRenderer->DrawTextureIndexed(8, 8, ShopTexture); + v3 = 0; + v49 = 0; + v122 = 0; do { if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID) @@ -5943,19 +5702,86 @@ ++v122; } while ( v122 < 6 ); + if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) + { + v66 = 0; + v117 = 0; + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + { + do + { + if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) //9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] ) + ++v117; + ++v66; + } + while ( v66 < 12 ); + } + else + { + do + { + if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) + ++v117; + ++v66; + } + while ( v66 < 12 ); + } + v67 = GetAsyncKeyState(VK_CONTROL); + v68 = pPlayers[uActiveCharacter]->CanSteal(); + Str = (char *)v68; + if ( v67 && v68 ) + { + v69 = pGlobalTXT_LocalizationStrings[185];// "Steal item" + } + else + { + v69 = pGlobalTXT_LocalizationStrings[195];// "Select the Item to Buy" + if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + v69 = pGlobalTXT_LocalizationStrings[196];// "Select the Special Item to Buy" + } + DrawTextAtStatusBar(v69, 0); + if ( !v117 ) + { + dialog_window.DrawCurrentTime( pParty->field_3C.field_50[(unsigned int)window_SpeakInHouse->ptr_1C] - pParty->uTimePlayed); + return; + } + v70 = pMouse->GetCursorPos(&v102); + result = v70->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v100)->y]; + if ( pRenderer->pActiveZBuffer[result] & 0xFFFF ) + { + v71 = (pRenderer->pActiveZBuffer[result] & 0xFFFF) - 1; + item = &pParty->StandartItemsInShops[(int)window_SpeakInHouse->ptr_1C][v71]; + if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + item = &pParty->SpecialItemsInShops[(int)window_SpeakInHouse->ptr_1C][v71]; + if ( v67 && Str ) + v10 = pGlobalTXT_LocalizationStrings[181];// "Steal %24" + else + { + v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 2); + v10 = (char *)pMerchantsBuyPhrases[v75]; + } + v30 = BuilDialogueString(v10, uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0); + v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); + return; + } + } + return; } - else + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_SPECIAL) { + pRenderer->DrawTextureIndexed(8, 8, ShopTexture); + v3 = 0; + v49 = 0; + v122 = 0; do { - // if ( pParty->field_C59C[9 * (v49 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] ) - if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID) + if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID) { - v58 = ItemsInShopTexture[v49]; - v59 = 152 - v58->uTextureHeight; + v59 = 152 - ItemsInShopTexture[v49]->uTextureHeight; if ( (signed int)v59 < 1 ) v59 = 0; - v60 = 75 * v49 - v58->uTextureWidth / 2 + 40; + v60 = 75 * v49 - ItemsInShopTexture[v49]->uTextureWidth / 2 + 40; if ( v122 ) { if ( v122 == 5 ) @@ -5970,7 +5796,7 @@ if ( (signed int)v60 < 18 ) v60 = 18; } - pRenderer->DrawTextureTransparent(v60, v59, v58); + pRenderer->DrawTextureTransparent(v60, v59, ItemsInShopTexture[v49]); sub_40F92A(&pRenderer->pActiveZBuffer[v60 + 640 * v59], ItemsInShopTexture[v122], v122 + 1); v49 = v122; } @@ -5981,14 +5807,12 @@ v122 = 0; do { - //if ( pParty->Spell_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v49] + 778] ) //weak if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v122 + 6].uItemID) { - v62 = ItemsInShopTexture[v122 + 6]; - v63 = 306 - v62->uTextureHeight; + v63 = 306 - ItemsInShopTexture[v122 + 6]->uTextureHeight; if ( (signed int)v63 < 1 ) v63 = 0; - v64 = 75 * v122 - v62->uTextureWidth / 2 + 40; + v64 = 75 * v122 - ItemsInShopTexture[v122 + 6]->uTextureWidth / 2 + 40; if ( v122 ) { if ( v122 == 5 ) @@ -6003,80 +5827,277 @@ if ( (signed int)v64 < 18 ) v64 = 18; } - pRenderer->DrawTextureTransparent(v64, v63, v62); + pRenderer->DrawTextureTransparent(v64, v63, ItemsInShopTexture[v122 + 6]); sub_40F92A(&pRenderer->pActiveZBuffer[v64 + 640 * v63], ItemsInShopTexture[v122 + 6], v122 + 7); } ++v122; } while ( v122 < 6 ); - } - result = sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win(); - if ( result ) - { - v66 = 0; - v117 = 0; - if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) { - do + v66 = 0; + v117 = 0; + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + { + do + { + if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) //9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] ) + ++v117; + ++v66; + } + while ( v66 < 12 ); + } + else + { + do + { + if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) + ++v117; + ++v66; + } + while ( v66 < 12 ); + } + v67 = GetAsyncKeyState(VK_CONTROL); + v68 = pPlayers[uActiveCharacter]->CanSteal(); + Str = (char *)v68; + if ( v67 && v68 ) + { + v69 = pGlobalTXT_LocalizationStrings[185];// "Steal item" + } + else + { + v69 = pGlobalTXT_LocalizationStrings[195];// "Select the Item to Buy" + if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + v69 = pGlobalTXT_LocalizationStrings[196];// "Select the Special Item to Buy" + } + DrawTextAtStatusBar(v69, 0); + if ( !v117 ) { - if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) //9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] ) - ++v117; - ++v66; + dialog_window.DrawCurrentTime( pParty->field_3C.field_50[(unsigned int)window_SpeakInHouse->ptr_1C] - pParty->uTimePlayed); + return; } - while ( v66 < 12 ); + v70 = pMouse->GetCursorPos(&v102); + result = v70->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v100)->y]; + if ( pRenderer->pActiveZBuffer[result] & 0xFFFF ) + { + v71 = (pRenderer->pActiveZBuffer[result] & 0xFFFF) - 1; + item = &pParty->StandartItemsInShops[(int)window_SpeakInHouse->ptr_1C][v71]; + if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) + item = &pParty->SpecialItemsInShops[(int)window_SpeakInHouse->ptr_1C][v71]; + if ( v67 && Str ) + v10 = pGlobalTXT_LocalizationStrings[181];// "Steal %24" + else + { + v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 2); + v10 = (char *)pMerchantsBuyPhrases[v75]; + } + v30 = BuilDialogueString(v10, uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 2, 0); + v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); + return; + } } - else + return; + } + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_DISPLAY_EQUIPMENT ) + { + draw_leather(); + CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); + pShopOptions[0] = pGlobalTXT_LocalizationStrings[200];// "Sell" + pShopOptions[1] = pGlobalTXT_LocalizationStrings[113];// "Identify" + pShopOptions[2] = pGlobalTXT_LocalizationStrings[179];// "Repair" + all_text_height = 0; + for ( uint i = 0; i < 3; ++i ) + all_text_height += pFontArrus->CalcTextHeight(pShopOptions[i], &dialog_window, 0, 0); + _this = ((174 - all_text_height) / 3); + v81 = (3 * (58 - (signed int)_this) - all_text_height) / 2 - (174 - all_text_height) / 3 / 2 + 138; + v20 = -pDialogueWindow->pNumPresenceButton < 0; + v118 = pDialogueWindow->pStartingPosActiveItem; + if ( v20 ^ pDialogueWindow->pStartingPosActiveItem > pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) { + v122 = 2; + pSrtingNum = 0; do { - //if ( pParty->field_C59C[9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] ) - if (pParty->SpecialItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) - ++v117; - ++v66; + control_button = pDialogueWindow->GetControl(v118); + control_button->uY = (unsigned int)((char *)_this + v81); + pTextHeight = pFontArrus->CalcTextHeight(pShopOptions[pSrtingNum], &dialog_window, 0, 0); + v85 = control_button->uY; + control_button->uHeight = pTextHeight; + v81 = pTextHeight + v85 - 1; + control_button->uW = v81; + text_color = pYellowColor; + if ( pDialogueWindow->pCurrentPosActiveItem != v122 ) + text_color = pWhiteColor; + dialog_window.DrawTitleText(pFontArrus, 0, v85, text_color, pShopOptions[pSrtingNum], 3); + ++v122; + ++pSrtingNum; + ++v118; } - while ( v66 < 12 ); + while ( v118 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); } - v67 = GetAsyncKeyState(VK_CONTROL); - v68 = pPlayers[uActiveCharacter]->CanSteal(); - Str = (char *)v68; - if ( v67 && v68 ) + return; + } + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_SELL) + { + draw_leather(); + CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); + DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[199], 0);// "Select the Item to Sell" + if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() + || (v11 = pMouse->GetCursorPos(&v107)->x - 14, + v117 = (v11 >> 5) + 14 * ((pMouse->GetCursorPos(&v99)->y - 17) >> 5), + result = (int)pMouse->GetCursorPos(&v105), + *(int *)result <= 13) + || (result = (int)pMouse->GetCursorPos(&v101), *(int *)result >= 462) + || (result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117), v3 = 0, !result) ) + return; + item = &pPlayers[uActiveCharacter]->pInventoryItems[result - 1]; + v13 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 3); + v30 = BuilDialogueString((char *)pMerchantsSellPhrases[v13], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 3, 0); + v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); + return; + } + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_IDENTIFY) + { + draw_leather(); + CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); + DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[197], 0);// "Select the Item to Identify" + if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) { - v69 = pGlobalTXT_LocalizationStrings[185];// "Steal item" - } - else - { - v69 = pGlobalTXT_LocalizationStrings[195];// "Select the Item to Buy" - if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) - v69 = pGlobalTXT_LocalizationStrings[196];// "Select the Special Item to Buy" + v2 = pMouse->GetCursorPos(&a2)->x - 14; + v117 = (v2 >> 5) + 14 * ((pMouse->GetCursorPos(&v98)->y - 17) >> 5); + result = (int)pMouse->GetCursorPos(&v111); + if ( *(int *)result > 13 ) + { + result = (int)pMouse->GetCursorPos(&v103); + if ( *(int *)result < 462 ) + { + result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117); + if ( result ) + { + item = &pPlayers[uActiveCharacter]->pInventoryItems[result-1]; + if ( item->uAttributes & 1 ) + { + v5 = BuilDialogueString("%24", uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0); + v6 = (212 - pFontArrus->CalcTextHeight(v5, &dialog_window, 0, 0)) / 2 + 101; + dialog_window.DrawTitleText(pFontArrus, 0, v6, pWhiteColor, v5, 3); + return; + } + v8 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(item, BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 4); + v30 = BuilDialogueString((char *)pMerchantsIdentifyPhrases[v8], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 4, 0); + v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, 0, 0)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, 0, v6, pWhiteColor, v30, 3); + return; + } + } + } } - DrawTextAtStatusBar(v69, 0); - if ( !v117 ) - { - dialog_window.DrawCurrentTime( pParty->field_3C.field_50[(unsigned int)window_SpeakInHouse->ptr_1C] - pParty->uTimePlayed); - return; - } - v70 = pMouse->GetCursorPos(&v102); - result = v70->x + pSRZBufferLineOffsets[pMouse->GetCursorPos(&v100)->y]; - if ( pRenderer->pActiveZBuffer[result] & 0xFFFF ) + return; + } + if ( dialog_menu_id == HOUSE_DIALOGUE_SHOP_REPAIR) + { + draw_leather(); + CharacterUI_InventoryTab_Draw(uActiveCharacter, 1); + DrawTextAtStatusBar(pGlobalTXT_LocalizationStrings[198], 0);// "Select the Item to Repair" + if ( !sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() + || (pTextHeight = pMouse->GetCursorPos(&v110)->x - 14, + v117 = (pTextHeight >> 5) + 14 * ((pMouse->GetCursorPos(&v108)->y - 17) >> 5), + result = (int)pMouse->GetCursorPos(&v106), + *(int *)result <= 13) + || (result = (int)pMouse->GetCursorPos(&v104), *(int *)result >= 462) + || (result = pPlayers[uActiveCharacter]->GetItemIDAtInventoryIndex((int *)&v117), v3 = 0, !result) + || (result *= 9, !(pPlayers[uActiveCharacter]->field_1F5[4 * result + 15] & 2)) ) + return; + item = &pPlayers[uActiveCharacter]->pInventoryItems[result - 1]; + v29 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(&pPlayers[uActiveCharacter]->pInventoryItems[result - 1], BildingType_MagicShop, (int)window_SpeakInHouse->ptr_1C, 5); + v30 = BuilDialogueString((char *)pMerchantsRepairPhrases[v29], uActiveCharacter - 1, item, (char *)window_SpeakInHouse->ptr_1C, 5, 0); + v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); + return; + } + if ( dialog_menu_id == HOUSE_DIALOGUE_LEARN_SKILLS ) + { + if ( sub_4B1784_check_if_player_concious__draw_warning_else_mess_with_dlg_win() ) { - v71 = (pRenderer->pActiveZBuffer[result] & 0xFFFF) - 1; - v117 = v71; - v72 = (int)window_SpeakInHouse->ptr_1C; - v74 = (ItemGen *)&pParty->StandartItemsInShops[v72][v71]; - if ( dialog_menu_id != HOUSE_DIALOGUE_SHOP_BUY_STANDARD) - v74 =&pParty->SpecialItemsInShops[v72][v71]; - if ( v67 && Str ) - v10 = pGlobalTXT_LocalizationStrings[181];// "Steal %24" - else + v3 = 0; + all_text_height = 0; + v33 = (signed __int64)(p2DEvents[(signed int)window_SpeakInHouse->ptr_1C - 1].flt_24 * 500.0); + v119 = (const char **)(v33 * (100 - pPlayers[uActiveCharacter]->GetMerchant()) / 100); + if ( (signed int)v119 < v33 / 3 ) + v119 = (const char **)(v33 / 3); + pActiveItemNum = pDialogueWindow->pStartingPosActiveItem; + v122 = 0; + if ( (signed int)pDialogueWindow->pStartingPosActiveItem >= pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) + { + sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);// + // "Seek knowledge elsewhere %s the %s" + strcat(pTmpBuf, "\n \n"); + strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further." + v6 = (174 - pFontArrus->CalcTextHeight(pTmpBuf, &dialog_window, 0, 0)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pYellowColor, pTmpBuf, 3); + return; + } + do + { + v36 = pDialogueWindow->GetControl(pActiveItemNum)->msg_param - 36; + if ( byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v36] && !pPlayers[uActiveCharacter]->pActiveSkills[v36] ) + { + all_text_height += pFontArrus->CalcTextHeight(pSkillNames[v36], &dialog_window, 0, 0); + ++v122; + } + ++pActiveItemNum; + } + while ( pActiveItemNum < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); + if ( !v122 ) { - v75 = pPlayers[uActiveCharacter]->SelectPhrasesTransaction(v74, BildingType_MagicShop, v72, 2); - v10 = (char *)pMerchantsBuyPhrases[v75]; + sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[544], pPlayers[uActiveCharacter]->pName, pClassNames[pPlayers[uActiveCharacter]->classType]);// + // "Seek knowledge elsewhere %s the %s" + strcat(pTmpBuf, "\n \n"); + strcat(pTmpBuf, pGlobalTXT_LocalizationStrings[528]);// "I can offer you nothing further." + v6 = (174 - pFontArrus->CalcTextHeight(pTmpBuf, &dialog_window, 0, 0)) / 2 + 138; + dialog_window.DrawTitleText(pFontArrus, v3, v6, pYellowColor, pTmpBuf, 3); + return; } - v30 = BuilDialogueString(v10, uActiveCharacter - 1, v74, (char *)window_SpeakInHouse->ptr_1C, 2, 0); - v6 = (174 - pFontArrus->CalcTextHeight(v30, &dialog_window, v3, v3)) / 2 + 138; - dialog_window.DrawTitleText(pFontArrus, v3, v6, pWhiteColor, v30, 3); - return; + sprintf(pTmpBuf, pGlobalTXT_LocalizationStrings[401], v119);// "Skill Cost: %lu" + dialog_window.DrawTitleText(pFontArrus, 0, 0x92u, 0, pTmpBuf, 3u); + v119 = (const char **)((149 - all_text_height) / v122); + if ( (149 - all_text_height) / v122 > 32 ) + v119 = (const char **)32; + v38 = (149 - v122 * (signed int)v119 - all_text_height) / 2 - (signed int)v119 / 2 + 162; + v118 = 2; + if ( pDialogueWindow->pStartingPosActiveItem < pDialogueWindow->pStartingPosActiveItem + pDialogueWindow->pNumPresenceButton ) + { + v122 = 2; + do + { + control_button = pDialogueWindow->GetControl(v122); + v41 = control_button->msg_param - 36; + if ( !byte_4ED970_skill_learn_ability_by_class_table[pPlayers[uActiveCharacter]->classType][v41] || pPlayers[uActiveCharacter]->pActiveSkills[v41] ) + { + control_button->uW = 0; + control_button->uHeight = 0; + control_button->uY = 0; + } + else + { + control_button->uY = (unsigned int)((char *)v119 + v38); + pTextHeight = pFontArrus->CalcTextHeight(pSkillNames[v41], &dialog_window, 0, 0); + v44 = control_button->uY; + control_button->uHeight = pTextHeight; + v38 = v44 + pTextHeight - 1; + control_button->uW = v38; + text_color = pYellowColor; + if ( pDialogueWindow->pCurrentPosActiveItem != v122 ) + text_color = pWhiteColor; + dialog_window.DrawTitleText(pFontArrus, 0, v44, text_color, pSkillNames[v41], 3); + } + ++v122; + } + while ( v122 < pDialogueWindow->pNumPresenceButton + pDialogueWindow->pStartingPosActiveItem ); + } } + return; } return; } diff -r aa7bd15e2655 -r 27bfe64b13b5 UiGame.cpp --- a/UiGame.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/UiGame.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -266,9 +266,7 @@ //----- (0041B3B6) -------------------------------------------------------- void __cdecl draw_right_panel() { - pRenderer->DrawTextureTransparent( - pViewport->uViewportBR_X, - 0, + pRenderer->DrawTextureTransparent(pViewport->uViewportBR_X, 0, (Texture *)(uTextureID_right_panel != -1 ? (int)&pIcons_LOD->pTextures[uTextureID_right_panel] : 0)); } @@ -1133,13 +1131,11 @@ //----- (0044158F) -------------------------------------------------------- void __cdecl GameUI_DrawCharacterSelectionFrame() - { - if ( uActiveCharacter ) - pRenderer->DrawTextureTransparent( - pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[uActiveCharacter - 1] - 9, - 0x17Cu, - &pIcons_LOD->pTextures[dword_50C98C]); - } +{ + if ( uActiveCharacter ) + pRenderer->DrawTextureTransparent(pPlayerPortraitsXCoords_For_PlayerBuffAnimsDrawing[uActiveCharacter - 1] - 9, + 380, &pIcons_LOD->pTextures[dword_50C98C]); +} //----- (004415C5) -------------------------------------------------------- void LoadPartyBuffIcons() diff -r aa7bd15e2655 -r 27bfe64b13b5 mm7_2.cpp --- a/mm7_2.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/mm7_2.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -6832,8 +6832,6 @@ { switch ( Msg ) { - default: - goto _def_wnd_proc; case WM_DEVICECHANGE: if ( wParam == 0x8000 ) PostMessageA(hInsertCDWindow, WM_CHOOSEFONT_GETLOGFONT, 0, 0); @@ -6845,12 +6843,10 @@ if ( pArcomageGame->bGameInProgress ) { if (pAsyncMouse) - goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pArcomageGame->stru1.field_0 = 7; - v29 = 1; -LABEL_210: - v30 = 0; - goto LABEL_263; + ArcomageGame::OnMouseClick(0, 1); + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( pVideoPlayer->pVideoFrame.pPixels ) pVideoPlayer->bStopBeforeSchedule = 1; @@ -6862,42 +6858,77 @@ case WM_RBUTTONDOWN: v31 = 0; if ( !pArcomageGame->bGameInProgress ) - goto LABEL_240; + //goto LABEL_240; + { + if ( pVideoPlayer->pVideoFrame.pPixels != (unsigned __int16 *)v31 ) + pVideoPlayer->bStopBeforeSchedule = 1; + if (!pAsyncMouse) + pMouse->SetMouseClick((unsigned __int16)lParam, lParam >> 16); + if (pGame) + { + if (pAsyncMouse) + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + v33 = pGame->pIndoorCameraD3D->GetPickDepth(); + pGame->PickMouse(v33, (unsigned __int16)lParam, lParam >> 16, v31, &vis_sprite_filter_2, &vis_door_filter); + } + if (!pAsyncMouse) + { + sub_416D62_ShowPopupWindow_MonsterRecord_ItemInfo_etcsub_416D62(0); + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pArcomageGame->stru1.field_0 = 8; - v29 = 1; - goto LABEL_262; + ArcomageGame::OnMouseClick(1, 1); + return DefWindowProcA(hWnd, Msg, wParam, lParam); case WM_LBUTTONUP: v32 = 0; if ( !pArcomageGame->bGameInProgress ) - goto LABEL_218; - if (pAsyncMouse) - goto _def_wnd_proc; - pArcomageGame->stru1.field_0 = 3; - v29 = 0; - goto LABEL_210; - case WM_RBUTTONUP: - v32 = 0; - if ( !pArcomageGame->bGameInProgress ) - { -LABEL_218: + //goto LABEL_218; + { if ( pAsyncMouse != v32 ) - goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); back_to_game(); return DefWindowProcA(hWnd, Msg, wParam, lParam); } if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + pArcomageGame->stru1.field_0 = 3; + ArcomageGame::OnMouseClick(0, 0); + return DefWindowProcA(hWnd, Msg, wParam, lParam); + case WM_RBUTTONUP: + v32 = 0; + if ( !pArcomageGame->bGameInProgress ) + { +//LABEL_218: + if ( pAsyncMouse != v32 ) + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + back_to_game(); + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if (pAsyncMouse) + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pArcomageGame->stru1.field_0 = 4; v29 = 0; - goto LABEL_262; + //goto LABEL_262; + v30 = 1; + ArcomageGame::OnMouseClick(v30, v29); + return DefWindowProcA(hWnd, Msg, wParam, lParam); case WM_LBUTTONDBLCLK: v28 = 0; if ( pArcomageGame->bGameInProgress ) { if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pArcomageGame->stru1.field_0 = 7; return DefWindowProcA(hWnd, Msg, wParam, lParam); } @@ -6918,7 +6949,8 @@ if ( pGame != (Game *)v28 ) { if ( pAsyncMouse != (void *)v28 ) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pGame->PickMouse(512.0, (unsigned __int16)lParam, lParam >> 16, v28, &vis_sprite_filter_3, &vis_door_filter); } if ( pAsyncMouse == (void *)v28 ) @@ -6926,12 +6958,13 @@ UI_OnMouseLeftClick(0); return DefWindowProcA(hWnd, Msg, wParam, lParam); } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); case WM_RBUTTONDBLCLK: v31 = 0; if ( !pArcomageGame->bGameInProgress ) { -LABEL_240: +//LABEL_240: if ( pVideoPlayer->pVideoFrame.pPixels != (unsigned __int16 *)v31 ) pVideoPlayer->bStopBeforeSchedule = 1; if (!pAsyncMouse) @@ -6939,7 +6972,8 @@ if (pGame) { if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); v33 = pGame->pIndoorCameraD3D->GetPickDepth(); pGame->PickMouse(v33, (unsigned __int16)lParam, lParam >> 16, v31, &vis_sprite_filter_2, &vis_door_filter); } @@ -6948,10 +6982,12 @@ sub_416D62_ShowPopupWindow_MonsterRecord_ItemInfo_etcsub_416D62(0); return DefWindowProcA(hWnd, Msg, wParam, lParam); } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pArcomageGame->stru1.field_0 = 8; return DefWindowProcA(hWnd, Msg, wParam, lParam); case WM_MBUTTONDOWN: @@ -6963,41 +6999,46 @@ pGame->PickMouse(v34, (unsigned __int16)lParam, lParam >> 16, 1, &vis_sprite_filter_3, &vis_face_filter); return DefWindowProcA(hWnd, Msg, wParam, lParam); } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( !pGame ) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); sub_417871(0); return DefWindowProcA(hWnd, Msg, wParam, lParam); case WM_MOUSEMOVE: if ( pArcomageGame->bGameInProgress ) { if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pXY[0] = (unsigned __int16)lParam; pXY[1] = lParam >> 16; ArcomageGame::OnMouseMove((POINT *)pXY); ArcomageGame::OnMouseClick(0, wParam & 1); v29 = (wParam >> 1) & 1; -LABEL_262: - v30 = 1; -LABEL_263: - ArcomageGame::OnMouseClick(v30, v29); + ArcomageGame::OnMouseClick(1, v29); } else { if (pAsyncMouse) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pMouse->SetMouseClick((unsigned __int16)lParam, lParam >> 16); } return DefWindowProcA(hWnd, Msg, wParam, lParam); + default: + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } } if ( Msg == WM_SYSCOMMAND ) { if ( wParam == SC_SCREENSAVE || wParam == SC_MONITORPOWER ) return 0; - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( Msg > WM_ACTIVATEAPP ) { @@ -7011,7 +7052,8 @@ return DefWindowProcA(hWnd, Msg, wParam, lParam); } } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( Msg != WM_KEYFIRST ) { @@ -7022,10 +7064,12 @@ dword_507B98_ctrl_pressed = 0; return DefWindowProcA(hWnd, Msg, wParam, lParam); } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( Msg != WM_COMMAND ) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); if ( wParam != 101 ) { if ( wParam == 103 ) @@ -7088,7 +7132,7 @@ return 0; v38 = 0; v37 = 104; -LABEL_126: +//LABEL_126: v36 = 273; v35 = hWnd; SendMessageA(hWnd, WM_COMMAND, v37, v38); @@ -7118,24 +7162,116 @@ if ( !v24 ) { LOBYTE(pArcomageGame->stru1.field_8) = 123; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v25 = v24 - 1; if ( !v25 ) { LOBYTE(pArcomageGame->stru1.field_8) = 124; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v26 = v25 - 1; if ( !v26 ) { LOBYTE(pArcomageGame->stru1.field_8) = 125; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } if ( v26 == 3 ) { LOBYTE(pArcomageGame->stru1.field_8) = 126; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } } else @@ -7143,30 +7279,145 @@ if ( v13 == 61 ) { LOBYTE(pArcomageGame->stru1.field_8) = 43; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v21 = v13 - 55; if ( !v21 ) { LOBYTE(pArcomageGame->stru1.field_8) = 38; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v22 = v21 - 1; if ( !v22 ) { LOBYTE(pArcomageGame->stru1.field_8) = 42; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v23 = v22 - 1; if ( !v23 ) { LOBYTE(pArcomageGame->stru1.field_8) = 40; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } if ( v23 == 2 ) { LOBYTE(pArcomageGame->stru1.field_8) = 58; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } } } @@ -7175,7 +7426,30 @@ if ( (unsigned __int16)v13 == 54 ) { LOBYTE(pArcomageGame->stru1.field_8) = 94; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } if ( v13 > 49 ) { @@ -7183,24 +7457,116 @@ if ( !v18 ) { LOBYTE(pArcomageGame->stru1.field_8) = 64; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v19 = v18 - 1; if ( !v19 ) { LOBYTE(pArcomageGame->stru1.field_8) = 35; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v20 = v19 - 1; if ( !v20 ) { LOBYTE(pArcomageGame->stru1.field_8) = 36; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } if ( v20 == 1 ) { LOBYTE(pArcomageGame->stru1.field_8) = 37; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } } else @@ -7208,60 +7574,204 @@ if ( v13 == 49 ) { LOBYTE(pArcomageGame->stru1.field_8) = 33; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v14 = v13 - 39; if ( !v14 ) { LOBYTE(pArcomageGame->stru1.field_8) = 34; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v15 = v14 - 5; if ( !v15 ) { LOBYTE(pArcomageGame->stru1.field_8) = 60; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } v16 = v15 - 2; if ( !v16 ) { LOBYTE(pArcomageGame->stru1.field_8) = 62; - goto LABEL_181; - } - v17 = v16 - 1; - if ( !v17 ) - { - LOBYTE(pArcomageGame->stru1.field_8) = 63; - goto LABEL_181; - } - if ( v17 == 1 ) - { - LOBYTE(pArcomageGame->stru1.field_8) = 41; -LABEL_181: + //goto LABEL_181; if ( wParam == 27 ) { pArcomageGame->field_F5 = 1; pArcomageGame->field_F4 = 1; pArcomageGame->uGameResult = 2; pArcomageGame->field_B0 = -2; - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; + } + v17 = v16 - 1; + if ( !v17 ) + { + LOBYTE(pArcomageGame->stru1.field_8) = 63; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( wParam != 114 ) { if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) SendMessageA(hWnd, 0x111u, 0x68u, 0); - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } v38 = 0; v37 = 103; - goto LABEL_126; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; + } + if ( v17 == 1 ) + { + LOBYTE(pArcomageGame->stru1.field_8) = 41; +//LABEL_181: + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } } } v27 = MapVirtualKeyA((unsigned __int16)wParam, 2u); } LOBYTE(pArcomageGame->stru1.field_8) = v27; - goto LABEL_181; + //goto LABEL_181; + if ( wParam == 27 ) + { + pArcomageGame->field_F5 = 1; + pArcomageGame->field_F4 = 1; + pArcomageGame->uGameResult = 2; + pArcomageGame->field_B0 = -2; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + if ( wParam != 114 ) + { + if ( wParam == 115 && !pVideoPlayer->AnyMovieLoaded() ) + SendMessageA(hWnd, 0x111u, 0x68u, 0); + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); + } + v38 = 0; + v37 = 103; + //goto LABEL_126; + v36 = 273; + v35 = hWnd; + SendMessageA(hWnd, WM_COMMAND, v37, v38); + return 0; } if ( Msg == WM_ACTIVATEAPP ) { @@ -7314,8 +7824,8 @@ { if ( !(dword_6BE364_game_settings_1 & 0x100) ) { - while(initing); //ADDED spinlock to allow int players ets! Gloval - dword_4E98BC_bApplicationActive = 0; + while(initing); //ADDED spinlock to allow int players ets! Gloval + dword_4E98BC_bApplicationActive = 0; if ( (pVideoPlayer->pSmackerMovie || pVideoPlayer->pBinkMovie) && pVideoPlayer->bPlayingMovie ) pVideoPlayer->bStopBeforeSchedule = 1; if (pAsyncMouse) @@ -7387,7 +7897,7 @@ return DefWindowProcA(hWnd, Msg, wParam, lParam); } } -_def_wnd_proc: +//_def_wnd_proc: return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( Msg != WM_KILLFOCUS ) @@ -7405,21 +7915,27 @@ else { if ( !pRenderer->pRenderD3D && !pRenderer->UsingDirect3D() || !AreRenderSurfacesOk() ) - goto LABEL_20; + //goto LABEL_20; + { + EndPaint(hWnd, &Paint); + return 0; + } v5 = pRenderer; } pRenderer->Present(); -LABEL_20: +//LABEL_20: EndPaint(hWnd, &Paint); return 0; } - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); } if ( ::hWnd != (HWND)wParam || (dword_4E98BC_bApplicationActive = 1, pRenderer->bWindowMode) || !pAsyncMouse ) return DefWindowProcA(hWnd, Msg, wParam, lParam); pAsyncMouse->Resume(); if ( !pAsyncMouse ) - goto _def_wnd_proc; + //goto _def_wnd_proc; + return DefWindowProcA(hWnd, Msg, wParam, lParam); pAsyncMouse->Clip(); return DefWindowProcA(hWnd, Msg, wParam, lParam); } diff -r aa7bd15e2655 -r 27bfe64b13b5 mm7_3.cpp --- a/mm7_3.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/mm7_3.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -15991,12 +15991,12 @@ //----- (004059DB) -------------------------------------------------------- signed int stru262_TurnBased::Start() { - stru262_TurnBased *v1; // ebx@1 + //stru262_TurnBased *v1; // ebx@1 unsigned int v2; // edi@1 int v3; // esi@1 int v4; // eax@5 unsigned int v5; // esi@7 - Actor *v6; // edi@7 + Actor *pActor; // edi@7 unsigned int v7; // eax@9 unsigned int v8; // edx@10 unsigned __int8 v9; // zf@14 @@ -16025,39 +16025,39 @@ int v33; // [sp+60h] [bp-14h]@10 int *v34; // [sp+64h] [bp-10h]@6 int v35; // [sp+68h] [bp-Ch]@5 - Player *v40; // [sp+6Ch] [bp-8h]@1 + Player *pPlayer; // [sp+6Ch] [bp-8h]@1 int v40b; unsigned int v37; // [sp+70h] [bp-4h]@7 pTurnEngine->field_18 &= 0xFFFFFFFDu; - v1 = this; + //v1 = this; pEventTimer->TrackGameTime(); pAudioPlayer->StopChannels(-1, -1); v2 = 0; pAudioPlayer->PlaySound((SoundID)(SOUND_GoldReceived|SOUND_EnteringAHouse|0x1), 0, 0, -1, 0, 0, 0, 0); - v40 = pParty->pPlayers; + pPlayer = pParty->pPlayers; dword_50C998_turnbased_icon_1A = 8 * pIconsFrameTable->pIcons[uIconID_TurnStart].uAnimLength; dword_50C994 = 0; - v1->field_10 = 100; - v1->field_0 = 0; - v1->field_8 = 64; - v1->field_4 = 1; - v1->uActorQueueSize = 0; + this->field_10 = 100; + this->field_0 = 0; + this->field_8 = 64; + this->field_4 = 1; + this->uActorQueueSize = 0; v3 = 0; do { - if ( v40->CanAct() ) - { - *(&v1->field_0 + 4 * (v1->uActorQueueSize + 2)) = PID(OBJECT_Player,v3); - v1->pQueue[v1->uActorQueueSize].field_C = 2; - v1->pQueue[v1->uActorQueueSize].uActionLength = 0; - pParty->pTurnBasedPlayerRecoveryTimes[v1->uActorQueueSize++] = 0; - } - ++v40; + if ( pPlayer->CanAct() ) + { + *(&this->field_0 + 4 * (this->uActorQueueSize + 2)) = PID(OBJECT_Player,v3); + this->pQueue[this->uActorQueueSize].field_C = 2; + this->pQueue[this->uActorQueueSize].uActionLength = 0; + pParty->pTurnBasedPlayerRecoveryTimes[this->uActorQueueSize++] = 0; + } + ++pPlayer; ++v3; } - while ( v40 <=&pParty->pPlayers[3] ); - v35 = v1->uActorQueueSize; + while ( pPlayer <= &pParty->pPlayers[3] ); + v35 = this->uActorQueueSize; v4 = v35; v40b = v35; if ( v40b < v40b + ai_arrays_size ) @@ -16067,24 +16067,24 @@ { v37 = *v34; v5 = v37; - v6 = &pActors[v37]; + pActor = &pActors[v37]; if ( v37 != 10 ) { if ( pActors[v37].CanAct() ) { - v7 = v6->uAttributes; + v7 = pActor->uAttributes; if ( v7 & 0x8000 < 0 ) { v8 = ai_near_actors_targets_pid[v5]; LOBYTE(v7) = v7 | 0x80; - v6->uAttributes = v7; + pActor->uAttributes = v7; v33 = PID(OBJECT_Actor,v5); memcpy(&v31, Actor::GetDirectionInfo(PID(OBJECT_Actor,v5), v8, &a3, 0), sizeof(v31)); memcpy(&v30, &v31, sizeof(v30)); Actor::AI_StandOrBored(v37, 4, 32, &v30); - *(&v1->field_0 + 4 * (v1->uActorQueueSize + 2)) = v33; - v1->pQueue[v1->uActorQueueSize].field_C = 2; - v1->pQueue[v1->uActorQueueSize++].uActionLength = 0; + *(&this->field_0 + 4 * (this->uActorQueueSize + 2)) = v33; + this->pQueue[this->uActorQueueSize].field_C = 2; + this->pQueue[this->uActorQueueSize++].uActionLength = 0; } } v4 = v35; @@ -16095,14 +16095,14 @@ while ( v40b < v4 + ai_arrays_size ); v2 = 0; } - v11 = __OFSUB__(v1->uActorQueueSize, v2); - v9 = v1->uActorQueueSize == v2; - v10 = ((v1->uActorQueueSize - v2) & 0x80000000u) != 0; + v11 = __OFSUB__(this->uActorQueueSize, v2); + v9 = this->uActorQueueSize == v2; + v10 = ((this->uActorQueueSize - v2) & 0x80000000u) != 0; v37 = v2; v40b = v2; if ( !((unsigned __int8)(v10 ^ v11) | v9) ) { - v12 = (char *)&v1->pQueue[0].field_4; + v12 = (char *)&this->pQueue[0].field_4; while ( 1 ) { v13 = PID_TYPE(*((int *)v12 - 1)); @@ -16113,7 +16113,6 @@ { v33 = v14; v16 = (signed __int64)((double)v14 * 0.46875); -LABEL_20: *(int *)v12 = v16; goto LABEL_26; } @@ -16122,7 +16121,7 @@ LABEL_26: ++v40b; v12 += 16; - if ( v40b >= v1->uActorQueueSize ) + if ( v40b >= this->uActorQueueSize ) goto LABEL_27; } if ( v13 != 3 ) @@ -16139,7 +16138,8 @@ LODWORD(v16) = SHIDWORD(v16) < 66; LOBYTE(v16) = SHIDWORD(v16) >= 66; LODWORD(v16) = 2 * v16 + 3; - goto LABEL_20; + *(int *)v12 = v16; + goto LABEL_26; } LABEL_27: v18 = 0; @@ -16148,8 +16148,7 @@ do { __debugbreak(); - *(&v31.uDistance + v18) = pParty->pPlayers[*(&v1->field_0 + 4 * (*(&a3.uDistance + v18) + 2)) >> 3].GetAttackRecoveryTime( - v2); + *(&v31.uDistance + v18) = pParty->pPlayers[*(&this->field_0 + 4 * (*(&a3.uDistance + v18) + 2)) >> 3].GetAttackRecoveryTime(v2); ++v18; } while ( (signed int)v18 < (signed int)v37 ); @@ -16197,11 +16196,11 @@ v28 = *(&a3.uDistance + v2++); v11 = __OFSUB__(v2, v37); v10 = ((v2 - v37) & 0x80000000u) != 0; - v1->pQueue[v28].field_4 = v27; + this->pQueue[v28].field_4 = v27; } while ( v10 ^ v11 ); } } } - return v1->_404544(); -} + return this->_404544(); +} diff -r aa7bd15e2655 -r 27bfe64b13b5 mm7_5.cpp --- a/mm7_5.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/mm7_5.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -7480,16 +7480,16 @@ bool stru262_TurnBased::_406D10(signed int a2) { int v2; // ecx@1 - int v3; // ecx@2 - Actor *v4; // ebx@2 - unsigned __int16 v5; // dx@2 + //int v3; // ecx@2 + Actor *actor; // ebx@2 + //unsigned __int16 v5; // dx@2 int *v6; // esi@7 TurnBased_QueueElem *v7; // edi@7 int v8; // eax@7 AIDirection *v9; // esi@10 int v10; // eax@10 unsigned int v11; // ecx@10 - unsigned __int8 v12; // al@12 + unsigned __int8 pHostileType; // al@12 unsigned __int8 v13; // sf@16 unsigned __int8 v14; // of@16 unsigned int v15; // edx@22 @@ -7509,26 +7509,26 @@ unsigned int uActorID; // [sp+50h] [bp-4h]@2 unsigned int a2a; // [sp+5Ch] [bp+8h]@7 - __debugbreak(); + __debugbreak();// v2 = *(&this->field_0 + 4 * (a2 + 2)); if (PID_TYPE(v2) == OBJECT_Player) return 0; - v3 = PID_ID(v2); - uActorID = v3; - v4 = &pActors[v3]; - v5 = v4->uAIState; - if ( v5 == 5 || v5 == 4 || v5 == 11 || v5 == 19 || v5 == 17 ) + uActorID = PID_ID(v2); + //uActorID = v3; + actor = &pActors[uActorID]; + //v5 = v4->uAIState; + if ( actor->uAIState == 5 || actor->uAIState == 4 || actor->uAIState == 11 || actor->uAIState == 19 || actor->uAIState == 17 ) return 1; - v6 = &ai_near_actors_targets_pid[v3]; + v6 = &ai_near_actors_targets_pid[uActorID]; v7 = &pTurnEngine->pQueue[a2]; v8 = *v6; v29 = &pTurnEngine->pQueue[a2]; a2a = v8; - Actor::_SelectTarget(v3, &ai_near_actors_targets_pid[v3], true); - if ( v4->pMonsterInfo.uHostilityType && !*v6 ) - v4->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly; + Actor::_SelectTarget(uActorID, &ai_near_actors_targets_pid[uActorID], true); + if ( actor->pMonsterInfo.uHostilityType && !*v6 ) + actor->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Friendly; v9 = Actor::GetDirectionInfo(v7->uPackedID, a2a, &a3, 0); - v10 = v4->uActorRadius; + v10 = actor->uActorRadius; memcpy(&a3, v9, sizeof(a3)); memcpy(&pDir, &a3, sizeof(pDir)); v11 = a3.uDistance - v10; @@ -7538,82 +7538,101 @@ v11 = 0; v28 = 0; } - v12 = v4->pMonsterInfo.uHostilityType; - if ( v12 == 1 ) + pHostileType = actor->pMonsterInfo.uHostilityType; + if ( pHostileType == 1 ) { if ( (double)(signed int)v28 >= 307.2 ) goto LABEL_21; -LABEL_20: - v4->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Long; + actor->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Long; goto LABEL_21; } - if ( v12 == 2 ) + if ( pHostileType == 2 ) { v14 = __OFSUB__(v11, 1024); v13 = ((v11 - 1024) & 0x80000000u) != 0; } else { - if ( v12 != 3 ) + if ( pHostileType != 3 ) goto LABEL_21; v14 = __OFSUB__(v11, 2560); v13 = ((v11 - 2560) & 0x80000000u) != 0; } if ( v13 ^ v14 ) - goto LABEL_20; + { + actor->pMonsterInfo.uHostilityType = MonsterInfo::Hostility_Long; + } LABEL_21: - if ( (signed __int64)v4->pActorBuffs[4].uExpireTime > 0 ) - { - v15 = a2a; + if ( (signed __int64)actor->pActorBuffs[4].uExpireTime > 0 ) + { if ( (signed int)v11 < 10240 ) { - v23 = &pDir; - v16 = uActorID; - v21 = 0; - goto LABEL_24; - } - v24 = 0; - v22 = 1024; - goto LABEL_58; - } - if ( v4->pMonsterInfo.uHostilityType != 4 ) + Actor::Flee(uActorID, a2a, 0, &pDir); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + Actor::_4032B2(uActorID, a2a, 1024, 0); + v29->field_C = 2; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uHostilityType != 4 ) goto LABEL_46; - if ( !(v4->uAttributes & 0x020000) || v4->pMonsterInfo.uAIType == 1 ) - { - if ( v4->pMonsterInfo.uAIType == 1 ) - goto LABEL_36; - if ( v4->pMonsterInfo.uAIType == 2 ) - { - v27 = v4->sCurrentHP; + if ( !(actor->uAttributes & 0x020000) || actor->pMonsterInfo.uAIType == 1 ) + { + if ( actor->pMonsterInfo.uAIType == 1 ) + { + if ( actor->pMonsterInfo.uMovementType == 5 ) + { + Actor::AI_Stand(uActorID, a2a, 32, 0); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + Actor::Flee(uActorID, a2a, 32, 0); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uAIType == 2 ) + { + v27 = actor->sCurrentHP; v18 = (double)v27; - v19 = (double)(signed int)v4->pMonsterInfo.uHP * 0.2; - goto LABEL_34; - } - if ( v4->pMonsterInfo.uAIType == 3 ) - { - v27 = v4->sCurrentHP; - v18 = (double)v27; - v19 = (double)(signed int)v4->pMonsterInfo.uHP * 0.1; -LABEL_34: + v19 = (double)(signed int)actor->pMonsterInfo.uHP * 0.2; if ( v19 > v18 && (signed int)v11 < 10240 ) { -LABEL_36: - v16 = uActorID; - v15 = a2a; - v23 = 0; - v21 = 32; - if ( v4->pMonsterInfo.uMovementType == 5 ) - { - Actor::AI_Stand(uActorID, a2a, 0x20u, 0); - goto LABEL_25; - } -LABEL_24: - Actor::Flee(v16, v15, v21, v23); -LABEL_25: - v17 = v29; + if ( actor->pMonsterInfo.uMovementType == 5 ) + { + Actor::AI_Stand(uActorID, a2a, 32, 0); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + Actor::Flee(uActorID, a2a, 32, 0); v29->field_C = 4; -LABEL_60: - v17->uActionLength = v4->uCurrentActionLength; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + goto LABEL_39; + } + if ( actor->pMonsterInfo.uAIType == 3 ) + { + v27 = actor->sCurrentHP; + v18 = (double)v27; + v19 = (double)(signed int)actor->pMonsterInfo.uHP * 0.1; + if ( v19 > v18 && (signed int)v11 < 10240 ) + { + if ( actor->pMonsterInfo.uMovementType == 5 ) + { + Actor::AI_Stand(uActorID, a2a, 32, 0); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + Actor::Flee(uActorID, a2a, 32, 0); + v29->field_C = 4; + v29->uActionLength = actor->uCurrentActionLength; return 1; } goto LABEL_39; @@ -7624,50 +7643,49 @@ return 0; if ( (signed int)v11 < 5120 ) { - if ( v4->pMonsterInfo.uMissleAttack1Type && (signed int)v11 < 1024 ) + if ( actor->pMonsterInfo.uMissleAttack1Type && (signed int)v11 < 1024 ) Actor::Pursue1(uActorID, a2a, uActorID, 32, &pDir); else Actor::Pursue2(uActorID, a2a, 32, &pDir, 307); - goto LABEL_59; + v29->field_C = 2; + v29->uActionLength = actor->uCurrentActionLength; + return 1; } LABEL_46: - if ( !v4->pMonsterInfo.uMovementType ) - { - v24 = 32; - v22 = 1024; - goto LABEL_57; - } - if ( v4->pMonsterInfo.uMovementType == 1 ) - { - v24 = 32; - v22 = 2560; - goto LABEL_57; - } - if ( v4->pMonsterInfo.uMovementType == 2 ) - { - v24 = 32; - v22 = 5120; -LABEL_57: - v15 = a2a; -LABEL_58: - Actor::_4032B2(uActorID, v15, v22, v24); -LABEL_59: - v17 = v29; + if ( !actor->pMonsterInfo.uMovementType ) + { + Actor::_4032B2(uActorID, a2a, 1024, 32); + v29->field_C = 2; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uMovementType == 1 ) + { + Actor::_4032B2(uActorID, a2a, 2560, 32); v29->field_C = 2; - goto LABEL_60; - } - if ( v4->pMonsterInfo.uMovementType == 4 ) + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uMovementType == 2 ) + { + Actor::_4032B2(uActorID, a2a, 5120, 32); + v29->field_C = 2; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uMovementType == 4 ) { Actor::_4032B2(uActorID, a2a, 10240, 32); - goto LABEL_53; - } - if ( v4->pMonsterInfo.uMovementType == 5 ) - { - Actor::AI_Stand(uActorID, a2a, 0x20u, 0); -LABEL_53: - v17 = v29; v29->field_C = 2; - goto LABEL_60; + v29->uActionLength = actor->uCurrentActionLength; + return 1; + } + if ( actor->pMonsterInfo.uMovementType == 5 ) + { + Actor::AI_Stand(uActorID, a2a, 32, 0); + v29->field_C = 2; + v29->uActionLength = actor->uCurrentActionLength; + return 1; } return 1; } diff -r aa7bd15e2655 -r 27bfe64b13b5 stru6.cpp --- a/stru6.cpp Mon Apr 29 09:18:06 2013 +0600 +++ b/stru6.cpp Mon Apr 29 09:18:19 2013 +0600 @@ -1297,8 +1297,8 @@ switch (uSpellID) { - case SPELL_153: - __debugbreak(); // spell id == 153 wtf , curse probably ? happening when attacked by harpies /disease(Ritor1)/ + case SPELL_DISEASE: + //__debugbreak(); // spell id == 153 wtf , curse probably ? happening when attacked by harpies /disease(Ritor1)/ v6 = "zapp"; break;