Mercurial > mm7
diff Items.cpp @ 473:7f1b00901cf7
Skill learning menu in shops
author | Gloval |
---|---|
date | Tue, 26 Feb 2013 02:09:56 +0400 |
parents | fcdaa804074f |
children | 77430756f06a |
line wrap: on
line diff
--- a/Items.cpp Mon Feb 25 23:33:15 2013 +0400 +++ b/Items.cpp Tue Feb 26 02:09:56 2013 +0400 @@ -2243,383 +2243,137 @@ // 4505CC: using guessed type int var_A0[32]; //----- (004B3703) -------------------------------------------------------- - int sub_4B3703( int _this ) +void FillAviableSkillsToTeach( int _this ) + { + char *v30; // ecx@65 + unsigned int v29; // edx@56 + int v15; // ecx@19 + int v33; // [sp-4h] [bp-2Ch]@23 + int v34; // [sp-4h] [bp-2Ch]@43 + int v21; // ecx@34 + int v35[5]; // [sp+Ch] [bp-1Ch]@8 + int v37=0; // [sp+24h] [bp-4h]@1* + int i=0; + + dword_F8B1DC = 0; + + switch (_this) { - signed int v1; // edi@1 - int v2; // eax@1 - int v3; // ecx@1 - signed int v4; // ebx@1 - int v5; // ecx@2 - int v6; // ecx@3 - int v7; // ecx@4 - int v8; // ecx@5 - int v9; // ecx@6 - signed int v10; // ebx@13 - signed int v11; // edi@14 - signed int v12; // esi@15 - unsigned int v13; // ecx@16 - int v14; // ecx@16 - int v15; // ecx@17 - int v16; // ecx@19 - int v17; // ecx@20 - int v18; // ecx@21 - signed int v19; // esi@32 - char *v20; // ecx@33 - int v21; // ecx@34 - int v22; // ecx@36 - int v23; // ecx@37 - int v24; // ecx@38 - int v25; // ecx@39 - int v26; // ecx@40 - int v27; // ecx@41 - int *v28; // esi@54 - unsigned int v29; // edx@56 - char *v30; // ecx@65 - int v31; // ecx@106 - int result; // eax@107 - int v33; // [sp-4h] [bp-2Ch]@23 - int v34; // [sp-4h] [bp-2Ch]@43 - int v35[5]; // [sp+Ch] [bp-1Ch]@8 - int a2; // [sp+20h] [bp-8h]@1 - int v37; // [sp+24h] [bp-4h]@1 + case 1: //shop weapon + for (int i=0; i<2; ++i) + { + for (int j=0; j<4; ++j) + { + if ( i ) + v21 = shopWeap_variation_spc[(unsigned int)window_SpeakInHouse->ptr_1C].item_class[j]; + else + v21 = shopWeap_variation_ord[(unsigned int)window_SpeakInHouse->ptr_1C].item_class[j]; - //need fixing - __debugbreak(); - v1 = 0; - v2 = 0; - v3 = _this - 1; - a2 = 0; - v37 = 0; - dword_F8B1DC = 0; - v4 = 2; - if ( !v3 ) - { - while ( 1 ) - { - v19 = 1; - do + switch (v21) { - v20 = (char *)window_SpeakInHouse->ptr_1C + 4 * (unsigned int)window_SpeakInHouse->ptr_1C + v19; - /*if ( v1 ) - v21 = word_4F063E[(signed int)v20]; - else - v21 = word_4F0404[(signed int)v20 - 4];//word_4F03FE[(signed int)v20];*/ - v22 = v21 - 23; - if ( v22 ) - { - v23 = v22 - 1; - if ( v23 ) - { - v24 = v23 - 1; - if ( v24 ) - { - v25 = v24 - 1; - if ( v25 ) - { - v26 = v25 - 1; - if ( v26 ) - { - v27 = v26 - 1; - if ( v27 ) - { - if ( v27 != v4 ) - goto LABEL_51; - v34 = 36; - } - else - { - v34 = 42; - } - } - else - { - v34 = 41; - } - } - else - { - v34 = 40; - } - } - else - { - v34 = 39; - } - } - else - { - v34 = 38; - } - } - else - { - v34 = 37; - } - v37 = sub_4BE571(v34, v35, v37, 5); - v2 = dword_F8B1DC; - v4 = 2; -LABEL_51: - ++v19; - } - while ( v19 <= 4 ); - ++v1; - if ( v1 >= v4 ) - goto LABEL_53; + case 23: v34 = 37; break; + case 24: v34 = 38; break; + case 25: v34 = 39; break; + case 26: v34 = 40; break; + case 27: v34 = 41; break; + case 28: v34 = 42; break; + case 30: v34 = 36; break; + default: + continue; + } + v37 = sub_4BE571(v34, v35, v37, 5); } } - v5 = (int)(v3 - 1); - if ( !v5 ) + break; + case 2: //shop armor + + for (int i=0; i<2; ++i) { - v10 = 0; - while ( 1 ) + for (int j=0; j<2; ++j) { - v11 = 0; - do + for (int k=0; k<4; ++k) { - v12 = 1; - do + if ( i ) + v15 = shopArmr_variation_spc[(unsigned int)window_SpeakInHouse->ptr_1C-15+j].item_class[k]; + else + v15 = shopArmr_variation_ord[(unsigned int)window_SpeakInHouse->ptr_1C-15+j].item_class[k]; + switch (v15) { - v13 = v11 + 2 * (unsigned int)window_SpeakInHouse->ptr_1C - 30; - v14 = v12 + 4 * v13 + v13; - /* if ( v10 ) - v15 = word_4F06D8[v14]; - else - v15 = word_4F0498[v14];*/ - v16 = v15 - 31; - if ( v16 ) - { - v17 = v16 - 1; - if ( v17 ) - { - v18 = v17 - 1; - if ( v18 ) - { - if ( v18 != 1 ) - goto LABEL_28; - v33 = 44; - } - else - { - v33 = 47; - } - } - else - { - v33 = 46; - } - } - else - { - v33 = 45; - } - v37 = sub_4BE571(v33, v35, v37, 5); - v2 = dword_F8B1DC; -LABEL_28: - ++v12; + case 31: v33 = 45; break; + case 32: v33 = 46; break; + case 33: v33 = 47; break; + case 34: v33 = 44; break; + default: + continue; } - while ( v12 <= 4 ); - ++v11; + v37 = sub_4BE571(v33, v35, v37, 5); } - while ( v11 < 2 ); - ++v10; - if ( v10 >= 2 ) - goto LABEL_53; } } - v6 = v5 - 1; - if ( v6 ) - { - v7 = v6 - 1; - if ( v7 ) - { - v8 = v7 - 17; - if ( v8 ) - { - v9 = v8 - 2; - if ( v9 ) - { - if ( v9 == 7 ) - { - v37 = 2; - v35[0] = 69; - v35[1] = 60; - } - } - else - { - v37 = 3; - v35[0] = 67; - v35[1] = 66; - v35[2] = 58; - } - } - else - { - v37 = 3; - v35[0] = 70; - v35[1] = 65; - v35[2] = 62; - } - } - else - { - v37 = 2; - v35[0] = 71; - v35[1] = 68; - } - } - else - { - v37 = 2; - v35[0] = 57; - v35[1] = 59; - } -LABEL_53: - if ( v37 > 0 ) + break; + case 3: //shop magic + v37 = 2; + v35[0] = 57; + v35[1] = 59; + break; + case 4: //shop alchemist + v37 = 2; + v35[0] = 71; + v35[1] = 68; + break; + case 21: //tavern + v37 = 3; + v35[0] = 70; + v35[1] = 65; + v35[2] = 62; + break; + case 23: //temple + v37 = 3; + v35[0] = 67; + v35[1] = 66; + v35[2] = 58; + break; + case 30: ///trainig + v37 = 2; + v35[0] = 69; + v35[1] = 60; + break; + } + for(i=0;i<v37;++i) + { + v29=v35[i]; + switch(v29) { - v28 = v35; - while ( 1 ) - { - v29 = *v28; - if ( *v28 <= 47 ) - break; - if ( (signed int)v29 <= 66 ) - { - if ( v29 == 66 ) - { - v30 = pSkillNames[30]; - goto LABEL_106; - } - if ( v29 == 57 ) - { - v30 = pSkillNames[21]; - goto LABEL_106; - } - if ( v29 == 58 ) - { - v30 = pSkillNames[22]; - goto LABEL_106; - } - if ( v29 == 60 ) - { - v30 = pSkillNames[24]; - goto LABEL_106; - } - if ( v29 == 62 ) - { - v30 = pSkillNames[26]; - goto LABEL_106; - } - if ( v29 == 65 ) - { - v30 = pSkillNames[29]; - goto LABEL_106; - } - goto LABEL_100; - } - switch ( v29 ) - { - case 0x43u: - v30 = pSkillNames[31]; - break; - case 0x44u: - v30 = pSkillNames[32]; - break; - case 0x45u: - v30 = pSkillNames[33]; - break; - case 0x46u: - v30 = pSkillNames[34]; - break; - default: - if ( v29 != 71 ) - goto LABEL_100; - v30 = pSkillNames[35]; - break; - } -LABEL_106: - pShopOptions[v2] = v30; - v31 = a2++; - dword_F8B1DC = v2 + 1; - sub_4B36CC(v31, v29); - ++v28; - if ( a2 >= v37 ) - goto LABEL_107; - v2 = dword_F8B1DC; - } - if ( *v28 == 47 ) - { - v30 = pSkillNames[11]; - goto LABEL_106; - } - if ( (signed int)v29 > 40 ) - { - if ( v29 == 41 ) - { - v30 = pSkillNames[5]; - goto LABEL_106; - } - if ( v29 == 42 ) - { - v30 = pSkillNames[6]; - goto LABEL_106; - } - if ( v29 == 44 ) - { - v30 = pSkillNames[8]; - goto LABEL_106; - } - if ( v29 == 45 ) - { - v30 = pSkillNames[9]; - goto LABEL_106; - } - if ( v29 == 46 ) - { - v30 = pSkillNames[10]; - goto LABEL_106; - } - } - else - { - if ( v29 == 40 ) - { - v30 = pSkillNames[4]; - goto LABEL_106; - } - if ( v29 == 5 ) - { - v30 = pSkillNames[23]; - goto LABEL_106; - } - if ( v29 == 36 ) - { - v30 = pSkillNames[0]; - goto LABEL_106; - } - if ( v29 == 37 ) - { - v30 = pSkillNames[1]; - goto LABEL_106; - } - if ( v29 == 38 ) - { - v30 = pSkillNames[2]; - goto LABEL_106; - } - if ( v29 == 39 ) - { - v30 = pSkillNames[3]; - goto LABEL_106; - } - } -LABEL_100: + case 40 :v30 = pSkillNames[4]; break; + case 5 : v30 = pSkillNames[23]; break; + case 36 :v30 = pSkillNames[0]; break; + case 37 :v30 = pSkillNames[1]; break; + case 38 :v30 = pSkillNames[2]; break; + case 39 :v30 = pSkillNames[3]; break; + case 41 :v30 = pSkillNames[5]; break; + case 42 :v30 = pSkillNames[6]; break; + case 44 :v30 = pSkillNames[8]; break; + case 45 :v30 = pSkillNames[9]; break; + case 46 :v30 = pSkillNames[10]; break; + case 47 :v30 = pSkillNames[11]; break; + case 66 :v30 = pSkillNames[30]; break; + case 57 :v30 = pSkillNames[21]; break; + case 58 :v30 = pSkillNames[22]; break; + case 60 :v30 = pSkillNames[24]; break; + case 62 :v30 = pSkillNames[26]; break; + case 65 :v30 = pSkillNames[29]; break; + case 67:v30 = pSkillNames[31]; break; + case 68:v30 = pSkillNames[32]; break; + case 69:v30 = pSkillNames[33]; break; + case 70:v30 = pSkillNames[34]; break; + case 71:v30 = pSkillNames[35]; break; + default: v30 = pGlobalTXT_LocalizationStrings[127]; //"No Text!" - goto LABEL_106; } -LABEL_107: - pDialogueWindow->_41D08F(a2, 1, 0, 2); - result = pDialogueWindow->pNumPresenceButton; - dword_F8B1E0 = pDialogueWindow->pNumPresenceButton; - return result; + pShopOptions[dword_F8B1DC] = v30; + ++dword_F8B1DC; + CreateButtonInColumn(i+1, v29); } + pDialogueWindow->_41D08F(i, 1, 0, 2); + dword_F8B1E0 = pDialogueWindow->pNumPresenceButton; + }