Mercurial > might-and-magic-trilogy
comparison mm7_4.cpp @ 157:9130272cdd48
PlayerCreationUI_Loop
30.11.12
author | Ritor1 |
---|---|
date | Fri, 30 Nov 2012 00:23:11 +0600 |
parents | 60bb9d93c097 |
children | 062e8a8e09bc 3ee6e30b7943 |
comparison
equal
deleted
inserted
replaced
156:6386d105011a | 157:9130272cdd48 |
---|---|
5868 int v7; // esi@12 | 5868 int v7; // esi@12 |
5869 signed int v8; // edi@30 | 5869 signed int v8; // edi@30 |
5870 int v9; // edx@31 | 5870 int v9; // edx@31 |
5871 char *v10; // ebx@37 | 5871 char *v10; // ebx@37 |
5872 Player *v11; // esi@38 | 5872 Player *v11; // esi@38 |
5873 signed int v12; // ecx@40 | 5873 signed int uSpellBookPageCount; // ecx@40 |
5874 int v13; // eax@40 | 5874 int v13; // eax@40 |
5875 signed int v14; // eax@45 | 5875 signed int v14; // eax@45 |
5876 int v15; // eax@70 | 5876 int v15; // eax@70 |
5877 signed int v16; // ecx@70 | 5877 signed int v16; // ecx@70 |
5878 unsigned int v18; // [sp-4h] [bp-84h]@48 | 5878 unsigned int v18; // [sp-4h] [bp-84h]@48 |
5993 v20[v9] = 1; | 5993 v20[v9] = 1; |
5994 } | 5994 } |
5995 while ( (signed int)v1 < 32 ); | 5995 while ( (signed int)v1 < 32 ); |
5996 item.Reset(); | 5996 item.Reset(); |
5997 v10 = (char *)&pParty->pPlayers[0].sResMagicBase; | 5997 v10 = (char *)&pParty->pPlayers[0].sResMagicBase; |
5998 //do | |
5999 for ( pPlayer = &pParty->pPlayers[0]; (signed int)v10 < (signed int)((char *)&pParty->field_871C[455] + 2); pPlayer++) | 5998 for ( pPlayer = &pParty->pPlayers[0]; (signed int)v10 < (signed int)((char *)&pParty->field_871C[455] + 2); pPlayer++) |
6000 { | 5999 { |
6001 v11 = pPlayer; | 6000 v11 = pPlayer; |
6002 if ( !*(v10 - 5829) ) | 6001 if ( !pPlayer->uClass ) |
6003 *(short *)v10 = 10; | 6002 pPlayer->sResMagicBase = 10; |
6004 *((short *)v10 + 400) = 0; | 6003 *((short *)v10 + 400) = 0; |
6005 v12 = 0; | 6004 uSpellBookPageCount = 0; |
6006 v13 = (int)(v10 - 5726); | 6005 for ( int i = 0; i < 9; i++) |
6007 while ( !*(short *)v13 ) | 6006 { |
6008 { | 6007 if ( pPlayer->pActiveSkills[12+i] ) |
6009 ++v12; | 6008 ++uSpellBookPageCount; |
6010 v13 += 2; | 6009 } |
6011 if ( v12 >= 9 ) | 6010 pPlayer->pNumSpellBookPage = uSpellBookPageCount; |
6012 goto LABEL_45; | |
6013 } | |
6014 *(char *)(pPlayer->pNumSpellBookPage) = v12; | |
6015 LABEL_45: | |
6016 pItemsTable->GenerateItem(2, 40, &item); | 6011 pItemsTable->GenerateItem(2, 40, &item); |
6017 pPlayer->AddItem2(0xFFFFFFFFu, &item); | 6012 pPlayer->AddItem2(0xFFFFFFFFu, &item); |
6018 v14 = 0; | 6013 v14 = 0; |
6019 v24.y = 0; | 6014 v24.y = 0; |
6020 do | 6015 do |
6021 { | 6016 { |
6022 if ( *(short *)(v11 + 2 * v14 + 264) ) | 6017 if ( pPlayer->pActiveSkills[v14] ) |
6023 { | 6018 { |
6024 switch ( v14 ) | 6019 switch ( v14 ) |
6025 { | 6020 { |
6026 case 0: | 6021 case 0: |
6027 v18 = 61; | 6022 v18 = 61; |
6055 goto LABEL_69; | 6050 goto LABEL_69; |
6056 case 11: | 6051 case 11: |
6057 v18 = 76; | 6052 v18 = 76; |
6058 goto LABEL_69; | 6053 goto LABEL_69; |
6059 case 12: | 6054 case 12: |
6060 pPlayer->AddItem(0xFFFFFFFFu, 0x191u); | 6055 pPlayer->AddItem(-1, 0x191); |
6061 *(char *)(v11 + 402) = 1; // pFireSpellBook | 6056 pPlayer->spellbook.pFireSpellbook.bIsSpellbookAvailable = 1; |
6062 break; | 6057 break; |
6063 case 13: | 6058 case 13: |
6064 pPlayer->AddItem(0xFFFFFFFFu, 0x19Cu); | 6059 pPlayer->AddItem(-1, 0x19C); |
6065 *(char *)(v11 + 413) = 1; | 6060 pPlayer->spellbook.pAirSpellbook.bIsSpellbookAvailable = 1; |
6066 break; | 6061 break; |
6067 case 14: | 6062 case 14: |
6068 pPlayer->AddItem(0xFFFFFFFFu, 0x1A7u); | 6063 pPlayer->AddItem(-1, 0x1A7); |
6069 *(char *)(v11 + 424) = 1; | 6064 pPlayer->spellbook.pWaterSpellbook.bIsSpellbookAvailable = 1; |
6070 break; | 6065 break; |
6071 case 15: | 6066 case 15: |
6072 pPlayer->AddItem(0xFFFFFFFFu, 0x1B2u); | 6067 pPlayer->AddItem(-1, 0x1B2); |
6073 *(char *)(v11 + 435) = 1; | 6068 pPlayer->spellbook.pEarthSpellbook.bIsSpellbookAvailable = 1; |
6074 break; | 6069 break; |
6075 case 16: | 6070 case 16: |
6076 pPlayer->AddItem(0xFFFFFFFFu, 0x1BDu); | 6071 pPlayer->AddItem(-1, 0x1BD); |
6077 *(char *)(v11 + 446) = 1; | 6072 pPlayer->spellbook.pSpiritSpellbook.bIsSpellbookAvailable = 1; |
6078 break; | 6073 break; |
6079 case 17: | 6074 case 17: |
6080 pPlayer->AddItem(0xFFFFFFFFu, 0x1C8u); | 6075 pPlayer->AddItem(-1, 0x1C8); |
6081 *(char *)(v11 + 457) = 1; | 6076 pPlayer->spellbook.pMindSpellbook.bIsSpellbookAvailable = 1; |
6082 break; | 6077 break; |
6083 case 18: | 6078 case 18: |
6084 pPlayer->AddItem(0xFFFFFFFFu, 0x1D3u); | 6079 pPlayer->AddItem(-1, 0x1D3); |
6085 *(char *)(v11 + 468) = 1; | 6080 pPlayer->spellbook.pBodySpellbook.bIsSpellbookAvailable = 1; |
6086 break; | 6081 break; |
6087 case 21: | 6082 case 21: |
6088 case 23: | 6083 case 23: |
6089 case 25: | 6084 case 25: |
6090 case 26: | 6085 case 26: |
6091 case 29: | 6086 case 29: |
6092 case 36: | 6087 case 36: |
6093 pPlayer->AddItem(0xFFFFFFFFu, 0xDCu); | 6088 pPlayer->AddItem(-1, 0xDC); |
6094 v18 = 5 * (rand() % 3 + 40); | 6089 v18 = 5 * (rand() % 3 + 40); |
6095 goto LABEL_69; | 6090 goto LABEL_69; |
6096 case 30: | 6091 case 30: |
6097 v18 = 115; | 6092 v18 = 115; |
6098 goto LABEL_69; | 6093 goto LABEL_69; |
6099 case 31: | 6094 case 31: |
6100 v18 = 110; | 6095 v18 = 110; |
6101 LABEL_69: | 6096 LABEL_69: |
6102 pPlayer->AddItem(0xFFFFFFFFu, v18); | 6097 pPlayer->AddItem(-1, v18); |
6103 break; | 6098 break; |
6104 default: | 6099 default: |
6105 break; | 6100 break; |
6106 } | 6101 } |
6107 v15 = (int)v11 + 552; | 6102 for ( int i = 0; i < 138; i++) |
6108 v16 = 138; | 6103 { |
6109 do | 6104 if ( &pPlayer->pInventoryItems[i] ) |
6110 { | 6105 pPlayer->pInventoryItems[i].uAttributes |= 1; |
6111 if ( *(int *)(v15 - 20) ) | 6106 } |
6112 *(int *)v15 |= 1u; | 6107 pPlayer->sHealth = pPlayer->GetMaxHealth(); |
6113 v15 += 36; | 6108 pPlayer->sMana = pPlayer->GetMaxMana(); |
6114 --v16; | |
6115 } | |
6116 while ( v16 ); | |
6117 *(int *)(v11 + 6460) = pPlayer->GetMaxHealth(); | |
6118 *(int *)(v11 + 6464) = pPlayer->GetMaxMana(); | |
6119 v14 = v24.y; | 6109 v14 = v24.y; |
6120 } | 6110 } |
6121 ++v14; | 6111 ++v14; |
6122 v24.y = v14; | 6112 v24.y = v14; |
6123 } | 6113 } |