comparison mm7_5.cpp @ 150:d92c78ab54fe

Слияние
author Ritor1
date Tue, 12 Feb 2013 10:17:35 +0600
parents 77ad59c17864 cca78efb377e
children 9abdd40a107b
comparison
equal deleted inserted replaced
149:2b0c652cc165 150:d92c78ab54fe
5219 uDamageAmount = 0; 5219 uDamageAmount = 0;
5220 a4 = 0; 5220 a4 = 0;
5221 v61 = 0; 5221 v61 = 0;
5222 v59 = 0; 5222 v59 = 0;
5223 v62 = 0; 5223 v62 = 0;
5224 if ( (a1 & 7) == 2 ) 5224 if ( (a1 & 7) == OBJECT_Item)
5225 { 5225 {
5226 v4 = &pLayingItems[a1 >> 3]; 5226 v4 = &pLayingItems[a1 >> 3];
5227 uDamageAmount = (int)v4; 5227 uDamageAmount = (int)v4;
5228 v61 = v4->field_60_distance_related_prolly_lod; 5228 v61 = v4->field_60_distance_related_prolly_lod;
5229 v3 = v4->field_58; 5229 v3 = v4->field_58;
6300 uActorIDa = uActorID; 6300 uActorIDa = uActorID;
6301 pActor = &pActors[uActorID]; 6301 pActor = &pActors[uActorID];
6302 a2 = uObjID; 6302 a2 = uObjID;
6303 if ( !pActors[uActorID].IsAlive() ) 6303 if ( !pActors[uActorID].IsAlive() )
6304 { 6304 {
6305 if ( (a2 & 7) == 2 ) 6305 if ( (a2 & 7) == OBJECT_Item)
6306 { 6306 {
6307 v4 = &pLayingItems[(signed int)a2 >> 3]; 6307 v4 = &pLayingItems[(signed int)a2 >> 3];
6308 v5 = v4->field_48; 6308 v5 = v4->field_48;
6309 if ( v5 ) 6309 if ( v5 )
6310 { 6310 {
6359 int v18; // [sp+20h] [bp+Ch]@34 6359 int v18; // [sp+20h] [bp+Ch]@34
6360 6360
6361 v4 = 0; 6361 v4 = 0;
6362 uActorID = a2; 6362 uActorID = a2;
6363 v17 = a1; 6363 v17 = a1;
6364 if ( (a1 & 7) == 2 ) 6364 if ( (a1 & 7) == OBJECT_Item)
6365 { 6365 {
6366 v5 = &pLayingItems[a1 >> 3]; 6366 v5 = &pLayingItems[a1 >> 3];
6367 v4 = v5->field_60_distance_related_prolly_lod; 6367 v4 = v5->field_60_distance_related_prolly_lod;
6368 v17 = v5->field_58; 6368 v17 = v5->field_58;
6369 } 6369 }
9444 goto LABEL_11; 9444 goto LABEL_11;
9445 v16 = v1->pQueue; 9445 v16 = v1->pQueue;
9446 while ( 1 ) 9446 while ( 1 )
9447 { 9447 {
9448 v5 = v16->uPackedID; 9448 v5 = v16->uPackedID;
9449 if ( (v16->uPackedID & 7) == 4 ) 9449 if ( (v16->uPackedID & 7) == OBJECT_Player)
9450 break; 9450 break;
9451 LABEL_8: 9451 LABEL_8:
9452 ++v17; 9452 ++v17;
9453 ++v16; 9453 ++v16;
9454 if ( v17 >= v1->uActorQueueSize ) 9454 if ( v17 >= v1->uActorQueueSize )
9487 if ( v1->uActorQueueSize > v2 ) 9487 if ( v1->uActorQueueSize > v2 )
9488 { 9488 {
9489 v8 = v1->pQueue; 9489 v8 = v1->pQueue;
9490 do 9490 do
9491 { 9491 {
9492 if ( (v8->uPackedID & 7) == 3 && ai_array_4F7DB0_actor_ids[v20] == v8->uPackedID >> 3 ) 9492 if ( (v8->uPackedID & 7) == OBJECT_Actor && ai_array_4F7DB0_actor_ids[v20] == v8->uPackedID >> 3 )
9493 break; 9493 break;
9494 ++v18; 9494 ++v18;
9495 ++v8; 9495 ++v8;
9496 } 9496 }
9497 while ( v18 < v1->uActorQueueSize ); 9497 while ( v18 < v1->uActorQueueSize );
9566 9566
9567 v1 = this; 9567 v1 = this;
9568 _404544(); 9568 _404544();
9569 v2 = v1->pQueue; 9569 v2 = v1->pQueue;
9570 v3 = 0; 9570 v3 = 0;
9571 if ( (v1->pQueue[0].uPackedID & 7) == 4 ) 9571 if ( (v1->pQueue[0].uPackedID & 7) == OBJECT_Player)
9572 uActiveCharacter = (v1->pQueue[0].uPackedID >> 3) + 1; 9572 uActiveCharacter = (v1->pQueue[0].uPackedID >> 3) + 1;
9573 else 9573 else
9574 uActiveCharacter = 0; 9574 uActiveCharacter = 0;
9575 viewparams->bRedrawGameUI = 1; 9575 viewparams->bRedrawGameUI = 1;
9576 if ( v1->field_1C ) 9576 if ( v1->field_1C )
9585 v13 = 0; 9585 v13 = 0;
9586 if ( v1->uActorQueueSize <= 0 ) 9586 if ( v1->uActorQueueSize <= 0 )
9587 goto LABEL_27; 9587 goto LABEL_27;
9588 do 9588 do
9589 { 9589 {
9590 if ( (v2->uPackedID & 7) != 4 ) 9590 if ( (v2->uPackedID & 7) != OBJECT_Player)
9591 { 9591 {
9592 v5 = &pActors[v2->uPackedID >> 3]; 9592 v5 = &pActors[v2->uPackedID >> 3];
9593 LOWORD(v6) = v5->uAIState; 9593 LOWORD(v6) = v5->uAIState;
9594 if ( (short)v6 == 4 9594 if ( (short)v6 == 4
9595 || (short)v6 == 8 9595 || (short)v6 == 8
9643 if ( v1->uActorQueueSize > v3 ) 9643 if ( v1->uActorQueueSize > v3 )
9644 { 9644 {
9645 v9 = v1->pQueue; 9645 v9 = v1->pQueue;
9646 do 9646 do
9647 { 9647 {
9648 if ( (v9->uPackedID & 7) != 4 ) 9648 if ( (v9->uPackedID & 7) != OBJECT_Player)
9649 { 9649 {
9650 v10 = v9->uPackedID >> 3; 9650 v10 = v9->uPackedID >> 3;
9651 v11 = pActors[v10].uAIState; 9651 v11 = pActors[v10].uAIState;
9652 if ( v11 != 5 ) 9652 if ( v11 != 5 )
9653 { 9653 {
9695 result = 1; 9695 result = 1;
9696 viewparams->bRedrawGameUI = 1; 9696 viewparams->bRedrawGameUI = 1;
9697 v4 = v1->pQueue[0].field_4; 9697 v4 = v1->pQueue[0].field_4;
9698 if ( v4 ) 9698 if ( v4 )
9699 { 9699 {
9700 if ( (v1->pQueue[0].uPackedID & 7) == 4 ) 9700 if ( (v1->pQueue[0].uPackedID & 7) == OBJECT_Player)
9701 { 9701 {
9702 v5 = v1->uActorQueueSize; 9702 v5 = v1->uActorQueueSize;
9703 while ( 1 ) 9703 while ( 1 )
9704 { 9704 {
9705 v6 = 0; 9705 v6 = 0;
9776 int v9; // ecx@14 9776 int v9; // ecx@14
9777 char v10; // zf@15 9777 char v10; // zf@15
9778 9778
9779 v2 = this; 9779 v2 = this;
9780 v3 = *(&this->field_0 + 4 * (a2 + 2)); 9780 v3 = *(&this->field_0 + 4 * (a2 + 2));
9781 if ( (*((char *)&this->field_0 + 16 * (a2 + 2)) & 7) == 4 ) 9781 if ( (*((char *)&this->field_0 + 16 * (a2 + 2)) & 7) == OBJECT_Player)
9782 { 9782 {
9783 v4 = v3 >> 3; 9783 v4 = v3 >> 3;
9784 v5 = (char *)&pParty->pTurnBasedPlayerRecoveryTimes[v3 >> 3]; 9784 v5 = (char *)&pParty->pTurnBasedPlayerRecoveryTimes[v3 >> 3];
9785 v6 = *(int *)v5; 9785 v6 = *(int *)v5;
9786 if ( *(int *)v5 ) 9786 if ( *(int *)v5 )
9794 { 9794 {
9795 v6 = pMonsterStats->pInfos[pActors[v3 >> 3].pMonsterInfo.uID].uRecoveryTime; 9795 v6 = pMonsterStats->pInfos[pActors[v3 >> 3].pMonsterInfo.uID].uRecoveryTime;
9796 } 9796 }
9797 v2->pQueue[a2].field_4 = v6; 9797 v2->pQueue[a2].field_4 = v6;
9798 v2->_404544(); 9798 v2->_404544();
9799 if ( (v2->pQueue[0].uPackedID & 7) == 4 ) 9799 if ( (v2->pQueue[0].uPackedID & 7) == OBJECT_Player)
9800 uActiveCharacter = (v2->pQueue[0].uPackedID >> 3) + 1; 9800 uActiveCharacter = (v2->pQueue[0].uPackedID >> 3) + 1;
9801 else 9801 else
9802 uActiveCharacter = 0; 9802 uActiveCharacter = 0;
9803 result = (int)&v2->pQueue[0].field_4; 9803 result = (int)&v2->pQueue[0].field_4;
9804 viewparams->bRedrawGameUI = 1; 9804 viewparams->bRedrawGameUI = 1;
9842 v1 = (char *)&this->pQueue[0].field_4; 9842 v1 = (char *)&this->pQueue[0].field_4;
9843 do 9843 do
9844 { 9844 {
9845 if ( !*(int *)v1 ) 9845 if ( !*(int *)v1 )
9846 { 9846 {
9847 if ( (*(v1 - 4) & 7) == 4 ) 9847 if ( (*(v1 - 4) & 7) == OBJECT_Player)
9848 return; 9848 return;
9849 v2 = &pActors[*((int *)v1 - 1) >> 3]; 9849 v2 = &pActors[*((int *)v1 - 1) >> 3];
9850 v3 = v2->uAIState; 9850 v3 = v2->uAIState;
9851 if ( !v3 || v3 == 9 || v3 == 7 ) 9851 if (v3 == Standing || v3 == Fleeing || v3 == Fidgeting)
9852 { 9852 {
9853 v4 = pMonsterStats->pInfos[v2->pMonsterInfo.uID].uRecoveryTime; 9853 v4 = pMonsterStats->pInfos[v2->pMonsterInfo.uID].uRecoveryTime;
9854 *(int *)v1 = v4; 9854 *(int *)v1 = v4;
9855 if ( (signed __int64)v2->pActorBuffs[7].uExpireTime > 0 ) 9855 if ( (signed __int64)v2->pActorBuffs[7].uExpireTime > 0 )
9856 *(int *)v1 = 2 * v4; 9856 *(int *)v1 = 2 * v4;
9873 unsigned int v5; // edi@14 9873 unsigned int v5; // edi@14
9874 9874
9875 v1 = this; 9875 v1 = this;
9876 LOWORD(v2) = _404544(); 9876 LOWORD(v2) = _404544();
9877 if ( v1->pQueue[0].field_4 <= 0 9877 if ( v1->pQueue[0].field_4 <= 0
9878 || ((_4063A1(), v2 = v1->pQueue[0].uPackedID, (v1->pQueue[0].uPackedID & 7) != 4) ? (uActiveCharacter = 0) : (v2 = (v2 >> 3) + 1, uActiveCharacter = v2), 9878 || ((_4063A1(), v2 = v1->pQueue[0].uPackedID, (v1->pQueue[0].uPackedID & 7) != OBJECT_Player) ? (uActiveCharacter = 0) : (v2 = (v2 >> 3) + 1, uActiveCharacter = v2),
9879 viewparams->bRedrawGameUI = 1, 9879 viewparams->bRedrawGameUI = 1,
9880 v1->pQueue[0].field_4 <= 0) ) 9880 v1->pQueue[0].field_4 <= 0) )
9881 { 9881 {
9882 v3 = 0; 9882 v3 = 0;
9883 if ( v1->uActorQueueSize > 0 ) 9883 if ( v1->uActorQueueSize > 0 )
9884 { 9884 {
9885 v4 = (int)v1->pQueue; 9885 v4 = (int)v1->pQueue;
9886 do 9886 do
9887 { 9887 {
9888 v2 = *(int *)v4; 9888 v2 = *(int *)v4;
9889 if ( (*(char *)v4 & 7) == 4 || *(int *)(v4 + 4) > 0 ) 9889 if ( (*(char *)v4 & 7) == OBJECT_Player || *(int *)(v4 + 4) > 0 )
9890 break; 9890 break;
9891 if ( *(int *)(v4 + 8) <= 0 ) 9891 if ( *(int *)(v4 + 8) <= 0 )
9892 { 9892 {
9893 LOWORD(v2) = v2 & 3; 9893 LOWORD(v2) = v2 & 3;
9894 if ( (char)v2 == 3 ) 9894 if ( (char)v2 == 3 )
9942 unsigned int a2a; // [sp+50h] [bp+8h]@2 9942 unsigned int a2a; // [sp+50h] [bp+8h]@2
9943 9943
9944 v1 = (TurnBased_QueueElem *)((char *)this + 16 * (a2 + 2)); 9944 v1 = (TurnBased_QueueElem *)((char *)this + 16 * (a2 + 2));
9945 v28 = v1; 9945 v28 = v1;
9946 v3 = v1->uPackedID; 9946 v3 = v1->uPackedID;
9947 if ( (v1->uPackedID & 7) != 4 ) 9947 if ( (v1->uPackedID & 7) != OBJECT_Player)
9948 { 9948 {
9949 v4 = v3 >> 3; // turn based only stuff 9949 v4 = v3 >> 3; // turn based only stuff
9950 a2a = dword_4F6E08[v3 >> 3]; 9950 a2a = dword_4F6E08[v3 >> 3];
9951 memcpy(&a3, Actor::GetDirectionInfo(v1->uPackedID, dword_4F6E08[v3 >> 3], &a3, 0), sizeof(a3)); 9951 memcpy(&a3, Actor::GetDirectionInfo(v1->uPackedID, dword_4F6E08[v3 >> 3], &a3, 0), sizeof(a3));
9952 memcpy(&a4, &a3, sizeof(a4)); 9952 memcpy(&a4, &a3, sizeof(a4));
10106 if ( ((a3.uDistance - v8) & 0x80000000u) != 0 ) 10106 if ( ((a3.uDistance - v8) & 0x80000000u) != 0 )
10107 { 10107 {
10108 v9 = 0; 10108 v9 = 0;
10109 v20 = 0; 10109 v20 = 0;
10110 } 10110 }
10111 if ( (v22 & 7) == 3 ) 10111 if ( (v22 & 7) == OBJECT_Actor)
10112 v10 = (unsigned __int8)*(&byte_5C8D1A[89 10112 v10 = (unsigned __int8)*(&byte_5C8D1A[89
10113 * (pMonsterStats->pInfos[pActors[v22 >> 3].pMonsterInfo.uID].uID - 1) 10113 * (pMonsterStats->pInfos[pActors[v22 >> 3].pMonsterInfo.uID].uID - 1)
10114 / 3] 10114 / 3]
10115 + (v5->pMonsterInfo.uID - 1) / 3); 10115 + (v5->pMonsterInfo.uID - 1) / 3);
10116 else 10116 else
10239 { 10239 {
10240 v10 = this->pQueue; 10240 v10 = this->pQueue;
10241 while ( 1 ) 10241 while ( 1 )
10242 { 10242 {
10243 v5 = v10->uPackedID; 10243 v5 = v10->uPackedID;
10244 if ( (v10->uPackedID & 7) == 3 ) 10244 if ( (v10->uPackedID & 7) == OBJECT_Actor)
10245 { 10245 {
10246 v8 = dword_4F6E08[v5 >> 3]; 10246 v8 = dword_4F6E08[v5 >> 3];
10247 memcpy(&v7, Actor::GetDirectionInfo(v5, v8, &a3, v2), sizeof(v7)); 10247 memcpy(&v7, Actor::GetDirectionInfo(v5, v8, &a3, v2), sizeof(v7));
10248 if ( !v1->_406D10(a2) ) 10248 if ( !v1->_406D10(a2) )
10249 Actor::_403EB6(v10->uPackedID >> 3, v8, 0x20u, &v7); 10249 Actor::_403EB6(v10->uPackedID >> 3, v8, 0x20u, &v7);
10278 if ( this->uActorQueueSize > 0 ) 10278 if ( this->uActorQueueSize > 0 )
10279 { 10279 {
10280 v2 = this->pQueue; 10280 v2 = this->pQueue;
10281 do 10281 do
10282 { 10282 {
10283 if ( (v2->uPackedID & 7) == 3 ) 10283 if ( (v2->uPackedID & 7) == OBJECT_Actor)
10284 { 10284 {
10285 v3 = v2->uPackedID >> 3; 10285 v3 = v2->uPackedID >> 3;
10286 v8 = v3; 10286 v8 = v3;
10287 if ( pActors[v3].CanAct() ) 10287 if ( pActors[v3].CanAct() )
10288 { 10288 {
10333 v14 = this->pQueue; 10333 v14 = this->pQueue;
10334 while ( 1 ) 10334 while ( 1 )
10335 { 10335 {
10336 v4 = v14->uPackedID; 10336 v4 = v14->uPackedID;
10337 a1 = v14->uPackedID; 10337 a1 = v14->uPackedID;
10338 if ( (a1 & 7) != 4 ) 10338 if ( (a1 & 7) != OBJECT_Player)
10339 { 10339 {
10340 v5 = v4 >> 3; 10340 v5 = v4 >> 3;
10341 v12 = v5; 10341 v12 = v5;
10342 v6 = &pActors[v5]; 10342 v6 = &pActors[v5];
10343 if ( SHIDWORD(v6->pActorBuffs[5].uExpireTime) < result 10343 if ( SHIDWORD(v6->pActorBuffs[5].uExpireTime) < result
10417 TurnBased_QueueElem *v29; // [sp+4Ch] [bp-8h]@7 10417 TurnBased_QueueElem *v29; // [sp+4Ch] [bp-8h]@7
10418 unsigned int uActorID; // [sp+50h] [bp-4h]@2 10418 unsigned int uActorID; // [sp+50h] [bp-4h]@2
10419 unsigned int a2a; // [sp+5Ch] [bp+8h]@7 10419 unsigned int a2a; // [sp+5Ch] [bp+8h]@7
10420 10420
10421 v2 = *(&this->field_0 + 4 * (a2 + 2)); 10421 v2 = *(&this->field_0 + 4 * (a2 + 2));
10422 if ( (v2 & 7) == 4 ) 10422 if ( (v2 & 7) == OBJECT_Player)
10423 return 0; 10423 return 0;
10424 v3 = v2 >> 3; 10424 v3 = v2 >> 3;
10425 uActorID = v3; 10425 uActorID = v3;
10426 v4 = &pActors[v3]; 10426 v4 = &pActors[v3];
10427 v5 = v4->uAIState; 10427 v5 = v4->uAIState;
10611 v3 = this->pQueue; 10611 v3 = this->pQueue;
10612 v18 = (char *)&pTurnEngine - (char *)this; 10612 v18 = (char *)&pTurnEngine - (char *)this;
10613 v14 = this->pQueue; 10613 v14 = this->pQueue;
10614 do 10614 do
10615 { 10615 {
10616 if ( (v3->uPackedID & 7) != 4 ) 10616 if ( (v3->uPackedID & 7) != OBJECT_Player)
10617 { 10617 {
10618 v4 = v3->uPackedID >> 3; 10618 v4 = v3->uPackedID >> 3;
10619 uActorID = v4; 10619 uActorID = v4;
10620 v5 = &pActors[v4]; 10620 v5 = &pActors[v4];
10621 v6 = v5->uAIState; 10621 v6 = v5->uAIState;
16359 if ( pRenderer->pRenderD3D ) 16359 if ( pRenderer->pRenderD3D )
16360 LOWORD(v5) = pGame->pVisInstance->get_picked_object_zbuf_val(); 16360 LOWORD(v5) = pGame->pVisInstance->get_picked_object_zbuf_val();
16361 else 16361 else
16362 v5 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]]; 16362 v5 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
16363 v6 = (unsigned __int16)v5; 16363 v6 = (unsigned __int16)v5;
16364 if ( (v6 & 7) != 2 ) 16364 if ( (v6 & 7) != OBJECT_Item)
16365 { 16365 {
16366 if ( (v6 & 7) == 3 ) 16366 if ( (v6 & 7) == OBJECT_Actor)
16367 { 16367 {
16368 if ( pRenderer->uNumSceneBegins ) 16368 if ( pRenderer->uNumSceneBegins )
16369 { 16369 {
16370 pWindow.DrawMessageBox(1); 16370 pWindow.DrawMessageBox(1);
16371 MonsterPopup_Draw(v6 >> 3, &pWindow); 16371 MonsterPopup_Draw(v6 >> 3, &pWindow);
16491 dword_507BF0_is_there_popup_onscreen = 1; 16491 dword_507BF0_is_there_popup_onscreen = 1;
16492 viewparams->bRedrawGameUI = 1; 16492 viewparams->bRedrawGameUI = 1;
16493 } 16493 }
16494 16494
16495 //----- (004175C0) -------------------------------------------------------- 16495 //----- (004175C0) --------------------------------------------------------
16496 void __thiscall UI_OnMouseLeftClick(int *pXY) 16496 void UI_OnMouseLeftClick(int *pXY)
16497 { 16497 {
16498 int *pXY_; // esi@1 16498 int *pXY_; // esi@1
16499 signed int y; // eax@7 16499 signed int y; // eax@7
16500 signed int x; // ecx@7 16500 signed int x; // ecx@7
16501 unsigned int v4; // eax@11 16501 unsigned int v4; // eax@11
16598 if ( pRenderer->pRenderD3D ) 16598 if ( pRenderer->pRenderD3D )
16599 v5 = pGame->pVisInstance->get_picked_object_zbuf_val(); 16599 v5 = pGame->pVisInstance->get_picked_object_zbuf_val();
16600 else 16600 else
16601 v5 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]]; 16601 v5 = pRenderer->pActiveZBuffer[pX + pSRZBufferLineOffsets[pY]];
16602 v6 = (unsigned __int16)v5; 16602 v6 = (unsigned __int16)v5;
16603 if ( (v5 & 7) == 3 16603 if ( (v5 & 7) == OBJECT_Actor
16604 && uActiveCharacter 16604 && uActiveCharacter
16605 && v5 < 33554432 16605 && v5 < 33554432
16606 && pPlayers[uActiveCharacter]->CanAct() 16606 && pPlayers[uActiveCharacter]->CanAct()
16607 && pPlayers[uActiveCharacter]->CanSteal() ) 16607 && pPlayers[uActiveCharacter]->CanSteal() )
16608 { 16608 {