comparison mm7_4.cpp @ 463:f7b91ef98ab2

shopgenerators done, except config tables
author Gloval
date Mon, 25 Feb 2013 08:30:49 +0400
parents 37090bd974f9
children e9f40d344067
comparison
equal deleted inserted replaced
462:37090bd974f9 463:f7b91ef98ab2
4913 memset(pTmpBuf2, 0, sizeof(pTmpBuf2)); 4913 memset(pTmpBuf2, 0, sizeof(pTmpBuf2));
4914 4914
4915 NPCData *npc = nullptr; 4915 NPCData *npc = nullptr;
4916 if ( dword_5C35D4 ) 4916 if ( dword_5C35D4 )
4917 { 4917 {
4918 __debugbreak(); // fix 4918 //__debugbreak(); // fix
4919 npc = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount + -(dword_591080 != 0) - 1)]; 4919 npc = HouseNPCData[(unsigned int)((char *)pDialogueNPCCount + -(dword_591080 != 0) - 1)];
4920 } 4920 }
4921 else 4921 else
4922 npc = GetNPCData(uDialogue_SpeakingActorNPC_ID); 4922 npc = GetNPCData(uDialogue_SpeakingActorNPC_ID);
4923 //v65 = v9; 4923 //v65 = v9;
8920 } 8920 }
8921 v6 = pParty->uTimePlayed + 368640; 8921 v6 = pParty->uTimePlayed + 368640;
8922 pParty->field_3C._shop_ban_times[2 * a1] = LODWORD(pParty->uTimePlayed) + 368640; 8922 pParty->field_3C._shop_ban_times[2 * a1] = LODWORD(pParty->uTimePlayed) + 368640;
8923 pParty->field_3C._shop_ban_times[2 * a1 + 1] = HIDWORD(v6); 8923 pParty->field_3C._shop_ban_times[2 * a1 + 1] = HIDWORD(v6);
8924 LABEL_13: 8924 LABEL_13:
8925 *(int *)&pParty->field_16154[4 * a1] = 1; 8925 pParty->InTheShopFlags[a1] = 1;
8926 if ( v3 ) 8926 if ( v3 )
8927 { 8927 {
8928 v7 = &pOutdoor->ddm; 8928 v7 = &pOutdoor->ddm;
8929 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor ) 8929 if ( uCurrentlyLoadedLevelType != LEVEL_Outdoor )
8930 v7 = &pIndoor->dlv; 8930 v7 = &pIndoor->dlv;
9053 return result; 9053 return result;
9054 } 9054 }
9055 // F8B1E0: using guessed type int dword_F8B1E0; 9055 // F8B1E0: using guessed type int dword_F8B1E0;
9056 9056
9057 9057
9058 9058 //view item details in shop?
9059 //----- (004B1A2D) -------------------------------------------------------- 9059 //----- (004B1A2D) --------------------------------------------------------
9060 void __cdecl sub_4B1A2D() 9060 void __cdecl sub_4B1A2D()
9061 { 9061 {
9062 //Player *v0; // edi@1 9062 //Player *v0; // edi@1
9063 POINT *v1; // esi@5 9063 POINT *v1; // esi@5
9111 return; 9111 return;
9112 v6 = 9 * (v5 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C); 9112 v6 = 9 * (v5 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C);
9113 v7 = (ItemGen *)((char *)&pParty->pPickedItem + 4 * v6 + 4); 9113 v7 = (ItemGen *)((char *)&pParty->pPickedItem + 4 * v6 + 4);
9114 if ( dword_F8B19C != 2 ) 9114 if ( dword_F8B19C != 2 )
9115 // v7 = (ItemGen *)&pParty->field_C59C[v6 + 715]; 9115 // v7 = (ItemGen *)&pParty->field_C59C[v6 + 715];
9116 v7 =&pParty->Recipes_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v5]; 9116 v7 =&pParty->SpecialItemsInShop[(unsigned int)window_SpeakInHouse->ptr_1C][v5];
9117 goto LABEL_15; 9117 goto LABEL_15;
9118 } 9118 }
9119 if ( dword_F8B198 <= 16 && dword_F8B19C == 18 ) 9119 if ( dword_F8B198 <= 16 && dword_F8B19C == 18 )
9120 { 9120 {
9121 v1 = pMouse->GetCursorPos(&a2); 9121 v1 = pMouse->GetCursorPos(&a2);
10368 0, 10368 0,
10369 "", 10369 "",
10370 0); 10370 0);
10371 } 10371 }
10372 10372
10373 //----- (004B3703) --------------------------------------------------------
10374 int __thiscall sub_4B3703(void *_this)
10375 {
10376 signed int v1; // edi@1
10377 int v2; // eax@1
10378 char *v3; // ecx@1
10379 signed int v4; // ebx@1
10380 int v5; // ecx@2
10381 int v6; // ecx@3
10382 int v7; // ecx@4
10383 int v8; // ecx@5
10384 int v9; // ecx@6
10385 signed int v10; // ebx@13
10386 signed int v11; // edi@14
10387 signed int v12; // esi@15
10388 unsigned int v13; // ecx@16
10389 int v14; // ecx@16
10390 int v15; // ecx@17
10391 int v16; // ecx@19
10392 int v17; // ecx@20
10393 int v18; // ecx@21
10394 signed int v19; // esi@32
10395 char *v20; // ecx@33
10396 int v21; // ecx@34
10397 int v22; // ecx@36
10398 int v23; // ecx@37
10399 int v24; // ecx@38
10400 int v25; // ecx@39
10401 int v26; // ecx@40
10402 int v27; // ecx@41
10403 int *v28; // esi@54
10404 unsigned int v29; // edx@56
10405 char *v30; // ecx@65
10406 int v31; // ecx@106
10407 int result; // eax@107
10408 int v33; // [sp-4h] [bp-2Ch]@23
10409 int v34; // [sp-4h] [bp-2Ch]@43
10410 int v35[5]; // [sp+Ch] [bp-1Ch]@8
10411 int a2; // [sp+20h] [bp-8h]@1
10412 int v37; // [sp+24h] [bp-4h]@1
10413
10414 v1 = 0;
10415 v2 = 0;
10416 v3 = (char *)_this - 1;
10417 a2 = 0;
10418 v37 = 0;
10419 dword_F8B1DC = 0;
10420 v4 = 2;
10421 if ( !v3 )
10422 {
10423 while ( 1 )
10424 {
10425 v19 = 1;
10426 do
10427 {
10428 v20 = (char *)window_SpeakInHouse->ptr_1C + 4 * (unsigned int)window_SpeakInHouse->ptr_1C + v19;
10429 if ( v1 )
10430 v21 = word_4F063E[(signed int)v20];
10431 else
10432 v21 = word_4F0404[(signed int)v20 - 4];//word_4F03FE[(signed int)v20];
10433 v22 = v21 - 23;
10434 if ( v22 )
10435 {
10436 v23 = v22 - 1;
10437 if ( v23 )
10438 {
10439 v24 = v23 - 1;
10440 if ( v24 )
10441 {
10442 v25 = v24 - 1;
10443 if ( v25 )
10444 {
10445 v26 = v25 - 1;
10446 if ( v26 )
10447 {
10448 v27 = v26 - 1;
10449 if ( v27 )
10450 {
10451 if ( v27 != v4 )
10452 goto LABEL_51;
10453 v34 = 36;
10454 }
10455 else
10456 {
10457 v34 = 42;
10458 }
10459 }
10460 else
10461 {
10462 v34 = 41;
10463 }
10464 }
10465 else
10466 {
10467 v34 = 40;
10468 }
10469 }
10470 else
10471 {
10472 v34 = 39;
10473 }
10474 }
10475 else
10476 {
10477 v34 = 38;
10478 }
10479 }
10480 else
10481 {
10482 v34 = 37;
10483 }
10484 v37 = sub_4BE571(v34, v35, v37, 5);
10485 v2 = dword_F8B1DC;
10486 v4 = 2;
10487 LABEL_51:
10488 ++v19;
10489 }
10490 while ( v19 <= 4 );
10491 ++v1;
10492 if ( v1 >= v4 )
10493 goto LABEL_53;
10494 }
10495 }
10496 v5 = (int)(v3 - 1);
10497 if ( !v5 )
10498 {
10499 v10 = 0;
10500 while ( 1 )
10501 {
10502 v11 = 0;
10503 do
10504 {
10505 v12 = 1;
10506 do
10507 {
10508 v13 = v11 + 2 * (unsigned int)window_SpeakInHouse->ptr_1C - 30;
10509 v14 = v12 + 4 * v13 + v13;
10510 if ( v10 )
10511 v15 = word_4F06D8[v14];
10512 else
10513 v15 = word_4F0498[v14];
10514 v16 = v15 - 31;
10515 if ( v16 )
10516 {
10517 v17 = v16 - 1;
10518 if ( v17 )
10519 {
10520 v18 = v17 - 1;
10521 if ( v18 )
10522 {
10523 if ( v18 != 1 )
10524 goto LABEL_28;
10525 v33 = 44;
10526 }
10527 else
10528 {
10529 v33 = 47;
10530 }
10531 }
10532 else
10533 {
10534 v33 = 46;
10535 }
10536 }
10537 else
10538 {
10539 v33 = 45;
10540 }
10541 v37 = sub_4BE571(v33, v35, v37, 5);
10542 v2 = dword_F8B1DC;
10543 LABEL_28:
10544 ++v12;
10545 }
10546 while ( v12 <= 4 );
10547 ++v11;
10548 }
10549 while ( v11 < 2 );
10550 ++v10;
10551 if ( v10 >= 2 )
10552 goto LABEL_53;
10553 }
10554 }
10555 v6 = v5 - 1;
10556 if ( v6 )
10557 {
10558 v7 = v6 - 1;
10559 if ( v7 )
10560 {
10561 v8 = v7 - 17;
10562 if ( v8 )
10563 {
10564 v9 = v8 - 2;
10565 if ( v9 )
10566 {
10567 if ( v9 == 7 )
10568 {
10569 v37 = 2;
10570 v35[0] = 69;
10571 v35[1] = 60;
10572 }
10573 }
10574 else
10575 {
10576 v37 = 3;
10577 v35[0] = 67;
10578 v35[1] = 66;
10579 v35[2] = 58;
10580 }
10581 }
10582 else
10583 {
10584 v37 = 3;
10585 v35[0] = 70;
10586 v35[1] = 65;
10587 v35[2] = 62;
10588 }
10589 }
10590 else
10591 {
10592 v37 = 2;
10593 v35[0] = 71;
10594 v35[1] = 68;
10595 }
10596 }
10597 else
10598 {
10599 v37 = 2;
10600 v35[0] = 57;
10601 v35[1] = 59;
10602 }
10603 LABEL_53:
10604 if ( v37 > 0 )
10605 {
10606 v28 = v35;
10607 while ( 1 )
10608 {
10609 v29 = *v28;
10610 if ( *v28 <= 47 )
10611 break;
10612 if ( (signed int)v29 <= 66 )
10613 {
10614 if ( v29 == 66 )
10615 {
10616 v30 = pSkillNames[30];
10617 goto LABEL_106;
10618 }
10619 if ( v29 == 57 )
10620 {
10621 v30 = pSkillNames[21];
10622 goto LABEL_106;
10623 }
10624 if ( v29 == 58 )
10625 {
10626 v30 = pSkillNames[22];
10627 goto LABEL_106;
10628 }
10629 if ( v29 == 60 )
10630 {
10631 v30 = pSkillNames[24];
10632 goto LABEL_106;
10633 }
10634 if ( v29 == 62 )
10635 {
10636 v30 = pSkillNames[26];
10637 goto LABEL_106;
10638 }
10639 if ( v29 == 65 )
10640 {
10641 v30 = pSkillNames[29];
10642 goto LABEL_106;
10643 }
10644 goto LABEL_100;
10645 }
10646 switch ( v29 )
10647 {
10648 case 0x43u:
10649 v30 = pSkillNames[31];
10650 break;
10651 case 0x44u:
10652 v30 = pSkillNames[32];
10653 break;
10654 case 0x45u:
10655 v30 = pSkillNames[33];
10656 break;
10657 case 0x46u:
10658 v30 = pSkillNames[34];
10659 break;
10660 default:
10661 if ( v29 != 71 )
10662 goto LABEL_100;
10663 v30 = pSkillNames[35];
10664 break;
10665 }
10666 LABEL_106:
10667 pShopOptions[v2] = v30;
10668 v31 = a2++;
10669 dword_F8B1DC = v2 + 1;
10670 sub_4B36CC(v31, v29);
10671 ++v28;
10672 if ( a2 >= v37 )
10673 goto LABEL_107;
10674 v2 = dword_F8B1DC;
10675 }
10676 if ( *v28 == 47 )
10677 {
10678 v30 = pSkillNames[11];
10679 goto LABEL_106;
10680 }
10681 if ( (signed int)v29 > 40 )
10682 {
10683 if ( v29 == 41 )
10684 {
10685 v30 = pSkillNames[5];
10686 goto LABEL_106;
10687 }
10688 if ( v29 == 42 )
10689 {
10690 v30 = pSkillNames[6];
10691 goto LABEL_106;
10692 }
10693 if ( v29 == 44 )
10694 {
10695 v30 = pSkillNames[8];
10696 goto LABEL_106;
10697 }
10698 if ( v29 == 45 )
10699 {
10700 v30 = pSkillNames[9];
10701 goto LABEL_106;
10702 }
10703 if ( v29 == 46 )
10704 {
10705 v30 = pSkillNames[10];
10706 goto LABEL_106;
10707 }
10708 }
10709 else
10710 {
10711 if ( v29 == 40 )
10712 {
10713 v30 = pSkillNames[4];
10714 goto LABEL_106;
10715 }
10716 if ( v29 == 5 )
10717 {
10718 v30 = pSkillNames[23];
10719 goto LABEL_106;
10720 }
10721 if ( v29 == 36 )
10722 {
10723 v30 = pSkillNames[0];
10724 goto LABEL_106;
10725 }
10726 if ( v29 == 37 )
10727 {
10728 v30 = pSkillNames[1];
10729 goto LABEL_106;
10730 }
10731 if ( v29 == 38 )
10732 {
10733 v30 = pSkillNames[2];
10734 goto LABEL_106;
10735 }
10736 if ( v29 == 39 )
10737 {
10738 v30 = pSkillNames[3];
10739 goto LABEL_106;
10740 }
10741 }
10742 LABEL_100:
10743 v30 = pGlobalTXT_LocalizationStrings[127];
10744 goto LABEL_106;
10745 }
10746 LABEL_107:
10747 pDialogueWindow->_41D08F(a2, 1, 0, 2);
10748 result = pDialogueWindow->pNumPresenceButton;
10749 dword_F8B1E0 = pDialogueWindow->pNumPresenceButton;
10750 return result;
10751 }
10752 10373
10753 10374
10754 //----- (004B3A72) -------------------------------------------------------- 10375 //----- (004B3A72) --------------------------------------------------------
10755 int __thiscall sub_4B3A72(int a1) 10376 int __thiscall sub_4B3A72(int a1)
10756 { 10377 {
12164 if ( dword_F8B19C == 2 ) 11785 if ( dword_F8B19C == 2 )
12165 { 11786 {
12166 do 11787 do
12167 { 11788 {
12168 // if ( pParty->field_777C[9 * (v49 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] ) 11789 // if ( pParty->field_777C[9 * (v49 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] )
12169 if ( pParty->field_777C[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID); 11790 if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID);
12170 { 11791 {
12171 v50 = dword_F8B168[v49]; 11792 v50 = dword_F8B168[v49];
12172 v51 = 152 - v50->uTextureHeight; 11793 v51 = 152 - v50->uTextureHeight;
12173 if ( (signed int)v51 < 1 ) 11794 if ( (signed int)v51 < 1 )
12174 v51 = 0; 11795 v51 = 0;
12197 while ( v49 < 6 ); 11818 while ( v49 < 6 );
12198 v122 = 0; 11819 v122 = 0;
12199 do 11820 do
12200 { 11821 {
12201 //if ( pParty->field_777C[9 * (v122 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 54] ) 11822 //if ( pParty->field_777C[9 * (v122 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 54] )
12202 if ( pParty->field_777C[(unsigned int)window_SpeakInHouse->ptr_1C][v122+1].uItemID); 11823 if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v122+1].uItemID);
12203 { 11824 {
12204 v54 = dword_F8B168[v122 + 6]; 11825 v54 = dword_F8B168[v122 + 6];
12205 v55 = 306 - v54->uTextureHeight; 11826 v55 = 306 - v54->uTextureHeight;
12206 v56 = 75 * v122 - v54->uTextureWidth / 2 + 40; 11827 v56 = 75 * v122 - v54->uTextureWidth / 2 + 40;
12207 if ( v122 ) 11828 if ( v122 )
12228 else 11849 else
12229 { 11850 {
12230 do 11851 do
12231 { 11852 {
12232 // if ( pParty->field_C59C[9 * (v49 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] ) 11853 // if ( pParty->field_C59C[9 * (v49 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] )
12233 if (pParty->Recipes_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID) 11854 if (pParty->SpecialItemsInShop[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uItemID)
12234 { 11855 {
12235 v58 = dword_F8B168[v49]; 11856 v58 = dword_F8B168[v49];
12236 v59 = 152 - v58->uTextureHeight; 11857 v59 = 152 - v58->uTextureHeight;
12237 if ( (signed int)v59 < 1 ) 11858 if ( (signed int)v59 < 1 )
12238 v59 = 0; 11859 v59 = 0;
12261 while ( v49 < 6 ); 11882 while ( v49 < 6 );
12262 v122 = 0; 11883 v122 = 0;
12263 do 11884 do
12264 { 11885 {
12265 //if ( pParty->Spell_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v49] + 778] ) //weak 11886 //if ( pParty->Spell_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v49] + 778] ) //weak
12266 if (pParty->Recipes_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uAttributes) 11887 if (pParty->SpecialItemsInShop[(unsigned int)window_SpeakInHouse->ptr_1C][v49].uAttributes)
12267 { 11888 {
12268 v62 = dword_F8B168[v122 + 6]; 11889 v62 = dword_F8B168[v122 + 6];
12269 v63 = 306 - v62->uTextureHeight; 11890 v63 = 306 - v62->uTextureHeight;
12270 if ( (signed int)v63 < 1 ) 11891 if ( (signed int)v63 < 1 )
12271 v63 = 0; 11892 v63 = 0;
12298 v117 = 0; 11919 v117 = 0;
12299 if ( dword_F8B19C == 2 ) 11920 if ( dword_F8B19C == 2 )
12300 { 11921 {
12301 do 11922 do
12302 { 11923 {
12303 if ( pParty->field_777C[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID); //9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] ) 11924 if ( pParty->StandartItemsInShops[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID); //9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C)] )
12304 ++v117; 11925 ++v117;
12305 ++v66; 11926 ++v66;
12306 } 11927 }
12307 while ( v66 < 12 ); 11928 while ( v66 < 12 );
12308 } 11929 }
12309 else 11930 else
12310 { 11931 {
12311 do 11932 do
12312 { 11933 {
12313 //if ( pParty->field_C59C[9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] ) 11934 //if ( pParty->field_C59C[9 * (v66 + 12 * (unsigned int)window_SpeakInHouse->ptr_1C) + 724] )
12314 if (pParty->Recipes_Item[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID) 11935 if (pParty->SpecialItemsInShop[(unsigned int)window_SpeakInHouse->ptr_1C][v66].uItemID)
12315 ++v117; 11936 ++v117;
12316 ++v66; 11937 ++v66;
12317 } 11938 }
12318 while ( v66 < 12 ); 11939 while ( v66 < 12 );
12319 } 11940 }
12343 { 11964 {
12344 v71 = (pRenderer->pActiveZBuffer[result] & 0xFFFF) - 1; 11965 v71 = (pRenderer->pActiveZBuffer[result] & 0xFFFF) - 1;
12345 v117 = v71; 11966 v117 = v71;
12346 v72 = (int)window_SpeakInHouse->ptr_1C; 11967 v72 = (int)window_SpeakInHouse->ptr_1C;
12347 // v73 = 9 * (v71 + 12 * v72); 11968 // v73 = 9 * (v71 + 12 * v72);
12348 v74 = (ItemGen *)&pParty->field_777C[v72][v71]; 11969 v74 = (ItemGen *)&pParty->StandartItemsInShops[v72][v71];
12349 if ( dword_F8B19C != 2 ) 11970 if ( dword_F8B19C != 2 )
12350 // v74 = (ItemGen *)&pParty->field_C59C[v73 + 724]; 11971 // v74 = (ItemGen *)&pParty->field_C59C[v73 + 724];
12351 v74 =&pParty->Recipes_Item[v72][v71]; 11972 v74 =&pParty->SpecialItemsInShop[v72][v71];
12352 if ( v67 && Str ) 11973 if ( v67 && Str )
12353 { 11974 {
12354 v10 = pGlobalTXT_LocalizationStrings[181];// "Steal %24" 11975 v10 = pGlobalTXT_LocalizationStrings[181];// "Steal %24"
12355 v96 = 0; 11976 v96 = 0;
12356 v94 = 2; 11977 v94 = 2;