Mercurial > mm7
changeset 112:909822c91d47
pointer fixes
author | zipi |
---|---|
date | Sat, 09 Feb 2013 18:46:06 +0000 |
parents | bf7ea4c330b3 |
children | f132be74d444 74b27ccb2385 |
files | mm7_3.cpp mm7_4.cpp mm7_6.cpp |
diffstat | 3 files changed, 124 insertions(+), 121 deletions(-) [+] |
line wrap: on
line diff
--- a/mm7_3.cpp Sun Feb 10 00:17:23 2013 +0600 +++ b/mm7_3.cpp Sat Feb 09 18:46:06 2013 +0000 @@ -1426,6 +1426,7 @@ ObjectDesc *v37; // [sp+78h] [bp-18h]@1 unsigned int uFaceID; // [sp+7Ch] [bp-14h]@4 int v39; // [sp+80h] [bp-10h]@33 + Actor *v39b; int v40; // [sp+84h] [bp-Ch]@28 int v41; // [sp+88h] [bp-8h]@34 int v42; // [sp+8Ch] [bp-4h]@4 @@ -1488,16 +1489,18 @@ { if ( (signed int)uNumActors > v8 ) { - v39 = (int)&pActors[0].word_000086_some_monster_id; + v39b = pActors;//[0].word_000086_some_monster_id; do { - v41 = pActors[v1->field_58 >> 3].pMonsterInfo.uID - 1; - v14 = (signed __int64)((double)v41 * 0.3333333333333333); - v41 = *(short *)(v39 - 38) - 1; - if ( v14 != (unsigned int)(signed __int64)((double)v41 * 0.3333333333333333) ) - _46DF1A_collide_against_actor(v42, *((short *)&pMonsterList->pMonsters[*(short *)v39] - 73)); + //v41 = pActors[v1->field_58 >> 3].pMonsterInfo.uID - 1; + //v14 = (signed __int64)((double)v41 * 0.3333333333333333); + //v41 = *(short *)(v39 - 38) - 1; + //if ( v14 != (unsigned int)(signed __int64)((double)v41 * 0.3333333333333333) ) + if( pActors[v1->field_58 >> 3].pMonsterInfo.uID != v39b->pMonsterInfo.uID ) + //not sure: pMonsterList->pMonsters[v39b->word_000086_some_monster_id-1].uToHitRadius + _46DF1A_collide_against_actor(v42, *((short *)&pMonsterList->pMonsters[v39b->word_000086_some_monster_id] - 73)); ++v42; - v39 += 836; + ++v39b;// += 836; } while ( v42 < (signed int)uNumActors ); v8 = 0; @@ -1507,11 +1510,11 @@ { if ( (signed int)uNumActors > v8 ) { - v39 = (int)&pActors[0].word_000086_some_monster_id; + v39b = pActors;//[0].word_000086_some_monster_id; do { - _46DF1A_collide_against_actor(v42++, *((short *)&pMonsterList->pMonsters[*(short *)v39] - 73)); - v39 += 836; + _46DF1A_collide_against_actor(v42++, *((short *)&pMonsterList->pMonsters[*(short *)v39b] - 73)); + ++v39b; } while ( v42 < (signed int)uNumActors ); } @@ -3163,7 +3166,7 @@ bWaterWalk = 1; *(short *)&stru_5E4C90._decor_events[20 * pParty->pPartyBuffs[18].uOverlayID + 119] |= 1u; if ( !(pParty->pPartyBuffs[18].uFlags & 1) - && *(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[18].uCaster + 10] <= 0 ) + && pParty->pPlayers[pParty->pPartyBuffs[18].uCaster-1].sMana <= 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[18].uCaster + 10] <= 0 ) bWaterWalk = 0; } v3 = sub_46D49E_prolly_get_world_y_under_party(v116, v117, v123, pParty->uPartyHeight, &v130, &v108, bWaterWalk); @@ -3264,7 +3267,7 @@ pParty->bFlying = 0; if ( bUnderwater || pParty->pPartyBuffs[7].uFlags & 1 - || *(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 ) + || pParty->pPlayers[pParty->pPartyBuffs[7].uCaster-1].sMana <= 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 ) { if ( pParty->vPosition.z < 4000 || bJumping ) { @@ -3304,7 +3307,7 @@ pParty->bFlying = 0; if ( bUnderwater || pParty->pPartyBuffs[7].uFlags & 1 - || *(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 ) + || pParty->pPlayers[pParty->pPartyBuffs[7].uCaster-1].sMana <= 0 )//*(int *)&pParty->pArtifactsFound[6972 * pParty->pPartyBuffs[7].uCaster + 10] > 0 ) { v123 -= 30; v113 -= 30; @@ -13627,7 +13630,7 @@ float uZooma; // [sp+64h] [bp+10h]@117 signed int flagsa; // [sp+68h] [bp+14h]@42 unsigned int flagsb; // [sp+68h] [bp+14h]@66 - char *flagsc; // [sp+68h] [bp+14h]@86 + Actor *flagsc; // [sp+68h] [bp+14h]@86 unsigned int flagsd; // [sp+68h] [bp+14h]@105 //a3 = uY; @@ -13949,16 +13952,16 @@ uZf = v33; if ( (signed int)uNumActors > v33 ) { - flagsc = (char *)&pActors[0].uAIState; + flagsc = pActors;//[0].uAIState; do { - v39 = *(short *)flagsc; - if ( *(short *)flagsc != 11 && v39 != 19 && (v39 == 5 || *(flagsc - 139) & 0x80) ) - { - v40 = ((unsigned __int64)(((signed int)*((short *)flagsc - 17) - pParty->vPosition.x) + v39 = flagsc->uAIState; + if ( flagsc->uAIState != 11 && v39 != 19 && (v39 == 5 || BYTE1(flagsc->uAttributes) & 0x80) ) + { + v40 = ((unsigned __int64)(( flagsc->vPosition.x - pParty->vPosition.x) * (signed __int64)(signed int)uZoom) >> 16) + uCenterX; - v76 = (unsigned __int64)(((signed int)*((short *)flagsc - 16) - pParty->vPosition.y) + v76 = (unsigned __int64)(( flagsc->vPosition.y - pParty->vPosition.y) * (signed __int64)(signed int)uZoom) >> 16; v41 = uCenterY - v76; if ( v40 >= pRenderer->field_1C_clipx ) @@ -13966,9 +13969,9 @@ if ( v40 <= pRenderer->field_24_clipz && v41 >= pRenderer->field_20_clipy && v41 <= pRenderer->field_28_clipw ) { uWd = v61; - if ( *(flagsc - 137) & 1 ) + if ( BYTE3(flagsc->uAttributes) & 1 ) uWd = v63; - if ( *(short *)flagsc == 5 ) + if ( flagsc->uAIState == 5 ) uWd = v65; if ( (signed int)uZoom > 1024 ) { @@ -13998,7 +14001,7 @@ } } ++uZf; - flagsc += 836; + ++flagsc; } while ( uZf < (signed int)uNumActors ); v36 = 255; @@ -16863,11 +16866,11 @@ int v38; // eax@78 int v39; // ecx@78 size_t v40; // edx@78 - char *v41; // esi@79 + Actor *v41; // esi@79 int v42; // eax@84 int v43; // ecx@84 size_t v44; // edx@84 - char *v45; // esi@85 + Actor *v45; // esi@85 void *v46; // eax@91 GUIWindow *v47; // eax@93 GUIButton *v48; // ecx@93 @@ -17251,12 +17254,12 @@ __debugbreak(); if ( (signed int)uNumActors > 0 ) { - v41 = (char *)&pActors[0].uGroup; + v41 = pActors;//[0].uGroup; do { - if ( *(int *)v41 == v38 ) - *(int *)v41 = v39; - v41 += 836; + if ( v41->uGroup == v38 ) + v41->uGroup = v39; + ++v41; --v40; } while ( v40 ); @@ -17269,12 +17272,12 @@ __debugbreak(); if ( (signed int)uNumActors > 0 ) { - v45 = (char *)&pActors[0].uAlly; + v45 = pActors;//[0].uAlly; do { - if ( *((int *)v45 - 1) == v42 ) - *(int *)v45 = v43; - v45 += 836; + if ( v45->uGroup == v42 ) + v45->uAlly = v43; + ++v45; --v44; } while ( v44 ); @@ -19752,7 +19755,7 @@ //----- (004014E6) -------------------------------------------------------- int __cdecl ODM_4014E6_AI() { - int v0; // esi@2 + Actor *v0; // esi@2 int v1; // eax@4 int v2; // ebx@4 unsigned int v3; // ecx@4 @@ -19786,15 +19789,16 @@ v25 = 0; if ( (signed int)uNumActors > 0 ) { - v0 = (int)&pActors[0].uAttributes; - do - { - *(char *)(v0 + 1) &= 0xFBu; - if ( ! ((Actor *)(v0 - offsetof(Actor, uAttributes)))->CanAct() ) + v0 = pActors;//[0].uAttributes; + do + { + //*(char *)(v0 + 1) &= 0xFBu; + BYTE1(v0->uAttributes) &= 0xFBu; + if ( ! v0->CanAct() ) goto LABEL_37; - v22 = abs(pParty->vPosition.z - *(short *)(v0 + 110)); - v21 = abs(pParty->vPosition.y - *(short *)(v0 + 108)); - v1 = abs(pParty->vPosition.x - *(short *)(v0 + 106)); + v22 = abs(pParty->vPosition.z - v0->vPosition.z); + v21 = abs(pParty->vPosition.y - v0->vPosition.y); + v1 = abs(pParty->vPosition.x - v0->vPosition.x); v2 = v21; v3 = v22; if ( v1 < v21 ) @@ -19816,7 +19820,7 @@ v2 = v6; } v7 = ((unsigned int)(11 * v2) >> 5) + (v3 >> 2) + v1; - v8 = *(short *)(v0 + 100); + v8 = v0->uActorRadius; v9 = v7 - v8; v23 = v7 - v8; if ( v23 < 0 ) @@ -19826,18 +19830,18 @@ } if ( v9 < 5632 ) { - v10 = *(int *)v0 & 0xFEFFFFFF; - *(int *)v0 = v10; - if ( v10 & 0x80000 || ((Actor *)(v0 - offsetof(Actor, uAttributes)))->GetActorsRelation(0) ) + v10 = v0->uAttributes & 0xFEFFFFFF; + v0->uAttributes = v10; + if ( v10 & 0x80000 || v0->GetActorsRelation(0) ) { v11 = (pParty->uFlags & 0x10) == 0; - *(int *)v0 = v10 | 0x1000000; + v0->uAttributes = v10 | 0x1000000; if ( v11 && (double)v23 < 307.2 ) pParty->uFlags |= 0x10u; if ( !(pParty->uFlags & 0x20) && v9 < 5120 ) pParty->uFlags |= 0x20u; } - *(char *)(v0 + 1) |= 0x40u; + BYTE1(v0->uAttributes) |= 0x40u; v12 = v27++; ai_array_4F75E0[v12] = v9; ai_array_4F7DB0_actor_ids[v12] = v25; @@ -19845,10 +19849,10 @@ else { LABEL_37: - *(char *)(v0 + 1) &= 0xBFu; + BYTE1(v0->uAttributes) &= 0xBFu; } ++v25; - v0 += 836; + ++v0; } while ( v25 < (signed int)uNumActors ); }
--- a/mm7_4.cpp Sun Feb 10 00:17:23 2013 +0600 +++ b/mm7_4.cpp Sat Feb 09 18:46:06 2013 +0000 @@ -79,7 +79,7 @@ unsigned int v6; // ecx@3 unsigned int v7; // edx@6 unsigned int v8; // edx@8 - char *v9; // edi@13 + Actor *v9; // edi@13 int v10; // ebx@14 int v11; // eax@14 int v12; // ebx@14 @@ -153,12 +153,12 @@ v37 = 0; if ( (signed int)uNumActors > 0 ) { - v9 = (char *)&pActors[0].vPosition.y; + v9 = pActors;//[0].vPosition.y; do { - v10 = abs(v33 - *((short *)v9 - 1)); - v29 = abs(v32 - *(short *)v9); - v26 = abs(v35 - *((short *)v9 + 1)); + v10 = abs(v33 - v9->vPosition.x); + v29 = abs(v32 - v9->vPosition.y); + v26 = abs(v35 - v9->vPosition.z); v11 = v10; v12 = v29; v13 = v26; @@ -183,7 +183,7 @@ if ( (signed int)(((unsigned int)(11 * v12) >> 5) + (v13 >> 2) + v11) < v31 ) EventProcessor(v1->field_16_event_id, 0, 1); ++v37; - v9 += 836; + ++v9; } while ( v37 < (signed int)uNumActors ); } @@ -3399,9 +3399,9 @@ int result; // eax@1 int v4; // eax@2 int v5; // edi@5 - char *v6; // ecx@5 + int *v6; // ecx@5 char v7; // sf@5 - char *v8; // ecx@10 + int *v8; // ecx@10 int v9; // edi@15 signed int v10; // eax@15 __int16 *v11; // edx@16 @@ -3462,12 +3462,12 @@ { v5 = v4 * pParty->pPartyBuffs[7].uPower; __debugbreak(); - v6 = &stru_AA1058[4].pSounds[6972 * pParty->pPartyBuffs[7].uCaster + 2000]; - v7 = *(int *)v6 - v5 < 0; - *(int *)v6 -= v5; + v6 = (int *)&pParty->pPlayers[pParty->pPartyBuffs[7].uCaster].pConditions[0];//&stru_AA1058[4].pSounds[6972 * pParty->pPartyBuffs[7].uCaster + 2000]; + v7 = *v6 < v5; + *v6 -= v5; if ( v7 ) { - *(int *)v6 = 0; + *v6 = 0; pParty->uFlags &= 0xFFFFFFBFu; pParty->bFlying = 0; v51 = 1; @@ -3482,12 +3482,12 @@ if ( !(pParty->pPartyBuffs[18].uFlags & 1) ) { __debugbreak(); - v8 = &stru_AA1058[4].pSounds[6972 * pParty->pPartyBuffs[18].uCaster + 2000]; - v7 = *(int *)v8 - v4 < 0; - *(int *)v8 -= v4; + v8 = (int *)&pParty->pPlayers[pParty->pPartyBuffs[18].uCaster].pConditions[0];//&stru_AA1058[4].pSounds[6972 * pParty->pPartyBuffs[18].uCaster + 2000]; + v7 = *v8 < v4; + *v8 -= v4; if ( v7 ) { - *(int *)v8 = 0; + *v8 = 0; LOBYTE(pParty->uFlags) &= 0x7Fu; v51 = 1; } @@ -9214,7 +9214,7 @@ signed __int64 v3; // ST1C_8@1 unsigned __int64 v4; // qax@1 unsigned int v5; // ebx@1 - void *v6; // ebx@1 + Player *v6; // ebx@1 pParty->pHirelings[0].bHasUsedTheAbility = 0; pParty->pHirelings[1].bHasUsedTheAbility = 0; @@ -9233,14 +9233,14 @@ pParty->uCurrentYear = v5 / 0xC + 1168; pParty->RestAndHeal(); dword_507B94 = 1; - v6 = &pParty->pPlayers[0].uNumDivineInterventionCastsThisDay; + v6 = pParty->pPlayers;//[0].uNumDivineInterventionCastsThisDay; do { - *((short *)v6 - 258) = 0; - memset(v6, 0, 4u); - v6 = (char *)v6 + 6972; - } - while ( (signed int)v6 < (signed int)&pParty->field_871C[694] ); + v6->uTimeToRecovery = 0; + memset(&v6->uTimeToRecovery, 0, 4u); + ++v6; + } + while ( v6 <= &pParty->pPlayers[3] ); pParty->_4909F4(); } // 507B94: using guessed type int dword_507B94; @@ -15092,7 +15092,7 @@ unsigned int v10; // esi@16 int v11; // ecx@17 unsigned int v12; // kr00_4@25 - void *v13; // esi@25 + Player *v13; // esi@25 int v14; // eax@25 Player *v15; // esi@27 signed int v16; // eax@32 @@ -15189,17 +15189,17 @@ v25 = (HOUSE_TYPE)187; v12 = LODWORD(pParty->uTimePlayed); LODWORD(pParty->uTimePlayed) += 0x7620000u; - v13 = &pParty->pPlayers[0].uNumDivineInterventionCastsThisDay; + v13 = pParty->pPlayers;//[0].uNumDivineInterventionCastsThisDay; v14 = LOBYTE(pAnimatedRooms[(signed __int16)p2DEvents[186].uAnimationID].field_C); pParty->uTimePlayed = __PAIR__(HIDWORD(pParty->uTimePlayed), v12) + 0x7620000; dword_F8B198 = v14; do { - *((short *)v13 - 258) = 0; - memset(v13, 0, 4u); - v13 = (char *)v13 + 6972; - } - while ( (signed int)v13 < (signed int)&pParty->field_871C[694] ); + v13->uTimeToRecovery = 0; + memset(&v13->uTimeToRecovery, 0, 4u); + ++v13; + } + while ( v13 <= &pParty->pPlayers[3] ); ++pParty->uNumPrisonTerms; pParty->uFine = 0; v15 = pParty->pPlayers; @@ -15208,7 +15208,7 @@ v15->SetVariable(VAR_Award, 87); ++v15; } - while ( (signed int)v15 < (signed int)pParty->pHirelings ); + while ( v15 <= &pParty->pPlayers[3] ); v10 = v25; } ++pIcons_LOD->uTexturePacksCount;
--- a/mm7_6.cpp Sun Feb 10 00:17:23 2013 +0600 +++ b/mm7_6.cpp Sat Feb 09 18:46:06 2013 +0000 @@ -2902,7 +2902,7 @@ int v354; // ecx@686 int v355; // ecx@687 int v356; // eax@689 - SpellBuff *v357; // edi@694 + Player *v357; // edi@694 unsigned __int16 v358; // ST1C_2@695 __int16 v359; // ST18_2@695 stru6 *v360; // eax@695 @@ -2920,7 +2920,7 @@ int v372; // ecx@710 int v373; // eax@715 int v374; // eax@717 - char *v375; // edi@717 + Player *v375; // edi@717 int v376; // eax@717 Player *v377; // ecx@719 int v378; // ecx@721 @@ -3164,7 +3164,7 @@ __int16 v616; // ST1C_2@1122 __int16 v617; // ST18_2@1122 stru6 *v618; // eax@1122 - SpellBuff *v619; // edi@1123 + Player *v619; // edi@1123 unsigned __int16 v620; // ST1C_2@1124 __int16 v621; // ST18_2@1124 stru6 *v622; // eax@1124 @@ -3905,8 +3905,9 @@ v726 = (Player *)(23040 * v2); v58 = (signed __int64)((double)(23040 * v2) * 0.033333335); v59 = v721; - ((SpellBuff *)((char *)&pActors[0].pActorBuffs[7] + v721))->Apply( - pParty->uTimePlayed + (signed int)v58, + //((SpellBuff *)((char *)&pActors[0].pActorBuffs[7] + v721))->Apply( + pActors[a2 >> 3].pActorBuffs[7].Apply( + pParty->uTimePlayed + (signed int)v58, v731, amount, v1, @@ -3931,10 +3932,13 @@ if ( v731 == 3 ) LODWORD(v733) = 29030400; } - ((SpellBuff *)((char *)&pActors[0].pActorBuffs[9] + v730))->Reset(); - ((SpellBuff *)((char *)&pActors[0].pActorBuffs[12] + v730))->Reset(); - v726 = (Player *)((int)v733 << 7); - ((SpellBuff *)((char *)&pActors[0].pActorBuffs[1] + v730))->Apply( + //((SpellBuff *)((char *)&pActors[0].pActorBuffs[9] + v730))->Reset(); + pActors[a2 >> 3].pActorBuffs[9].Reset(); + //((SpellBuff *)((char *)&pActors[0].pActorBuffs[12] + v730))->Reset(); + pActors[a2 >> 3].pActorBuffs[12].Reset(); + v726 = (Player *)((int)v733 << 7); + //((SpellBuff *)((char *)&pActors[0].pActorBuffs[1] + v730))->Apply( + pActors[a2 >> 3].pActorBuffs[1].Apply( pParty->uTimePlayed + (signed int)(signed __int64)((double)(signed int)((int)v733 << 7) * 0.033333335), v731, v1, @@ -5897,18 +5901,18 @@ a2 = v1; v732 = (int)v733 << 7; v717 = (signed int)(signed __int64)((double)(signed int)((int)v733 << 7) * 0.033333335); - v357 = &pParty->pPlayers[0].pPlayerBuffs[11]; + v357 = pParty->pPlayers;//[0].pPlayerBuffs[11]; do { v358 = a2; v359 = v3->spellnum; v360 = pGame->GetStru6(); pGame->GetStru6()->SetPlayerBuffAnim(v359, v358); - v357->Apply(pParty->uTimePlayed + v717, v731, v1, v1, v1); + v357->pPlayerBuffs[11].Apply(pParty->uTimePlayed + v717, v731, v1, v1, v1); ++a2; - v357 = (SpellBuff *)((char *)v357 + 6972); - } - while ( (signed int)v357 < (signed int)&pParty->field_871C[508] ); + ++v357;// = (SpellBuff *)((char *)v357 + 6972); + } + while ( v357 <= &pParty->pPlayers[3] ); goto LABEL_1056; case 48: v364 = v12 - 2; @@ -5978,7 +5982,6 @@ if ( v14 ) { v374 = v3->uPlayerID_2; - v375 = (char *)pParty->pPlayers; LODWORD(pParty->pPlayers[v374].pConditions[14]) = v1; HIDWORD(pParty->pPlayers[v374].pConditions[14]) = v1; v376 = v3->uPlayerID_2; @@ -5989,7 +5992,6 @@ { v732 = amount << 7; *(float *)&a2 = (double)(amount << 7) * 0.033333335; - v375 = (char *)pParty->pPlayers; pParty->pPlayers[v3->uPlayerID_2].DiscardConditionIfLastsLongerThan( 0xEu, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); @@ -5997,7 +5999,7 @@ 0xDu, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); } - v377 = (Player *)&v375[6972 * v3->uPlayerID_2]; + v377 = &pParty->pPlayers[v3->uPlayerID_2]; goto LABEL_720; case 54: v378 = v12 - 2; @@ -6099,13 +6101,11 @@ v399 = v3->uPlayerID_2; LODWORD(pParty->pPlayers[v399].pConditions[13]) = v1; HIDWORD(pParty->pPlayers[v399].pConditions[13]) = v1; - v400 = (char *)pParty->pPlayers; } else { v732 = amount << 7; *(float *)&a2 = (double)(amount << 7) * 0.033333335; - v400 = (char *)pParty->pPlayers; pParty->pPlayers[v3->uPlayerID_2].DiscardConditionIfLastsLongerThan( 0x10u, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); @@ -6117,7 +6117,7 @@ (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); } v83 = 1; - ((Player *)&v400[6972 * v3->uPlayerID_2])->SetCondition(1u, 1); + pParty->pPlayers[v3->uPlayerID_2].SetCondition(1u, 1); v401 = pGame; pParty->pPlayers[v3->uPlayerID_2].sHealth = 1; v402 = v3->uPlayerID_2; @@ -6679,7 +6679,6 @@ pParty->pPlayers[v470].DiscardConditionIfLastsLongerThan( 6u, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); - v473 = (char *)pParty->pPlayers; pParty->pPlayers[v3->uPlayerID_2].DiscardConditionIfLastsLongerThan( 8u, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); @@ -6791,14 +6790,13 @@ pParty->pPlayers[v498].DiscardConditionIfLastsLongerThan( 7u, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); - v473 = (char *)pParty->pPlayers; pParty->pPlayers[v3->uPlayerID_2].DiscardConditionIfLastsLongerThan( 9u, (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2)); v663 = (signed __int64)((double)(signed __int64)pParty->uTimePlayed - *(float *)&a2); v656 = 11; LABEL_937: - v325 = (Player *)&v473[6972 * v3->uPlayerID_2]; + v325 = &pParty->pPlayers[v3->uPlayerID_2]; LABEL_641: v325->DiscardConditionIfLastsLongerThan(v656, v663); } @@ -7585,18 +7583,18 @@ a2 = v1; v732 = (int)v733 << 7; v717 = (signed int)(signed __int64)((double)(signed int)((int)v733 << 7) * 0.033333335); - v619 = &pParty->pPlayers[0].pPlayerBuffs[10]; + v619 = pParty->pPlayers;//[0].pPlayerBuffs[10]; do { v620 = a2; v621 = v3->spellnum; v622 = pGame->GetStru6(); pGame->GetStru6()->SetPlayerBuffAnim(v621, v620); - v619->Apply(pParty->uTimePlayed + v717, v731, amount, v716, v1); + v619->pPlayerBuffs[10].Apply(pParty->uTimePlayed + v717, v731, amount, v716, v1); ++a2; - v619 = (SpellBuff *)((char *)v619 + 6972); - } - while ( (signed int)v619 < (signed int)&pParty->field_871C[504] ); + ++v619; + } + while ( v619 <= &pParty->pPlayers[3] ); goto LABEL_1056; case 99: if ( !pPlayer->CanCastSpell(uRequiredMana) ) @@ -7863,7 +7861,8 @@ Vec3_int_ a3; // [sp+Ch] [bp-30h]@19 unsigned int a2; // [sp+18h] [bp-24h]@20 unsigned int v27; // [sp+1Ch] [bp-20h]@1 - char *v28; // [sp+20h] [bp-1Ch]@9 + int v28; // [sp+20h] [bp-1Ch]@9 + unsigned int *v28b; int v29; // [sp+24h] [bp-18h]@16 int v30; // [sp+28h] [bp-14h]@16 int v31; // [sp+2Ch] [bp-10h]@4 @@ -7889,27 +7888,27 @@ v33 = 0; if ( v4 ) { - v5 = (char *)v1 + 36 * v4; - if ( !(v5[516] & 2) ) + //v5 = (char *)v1 + 36 * v4; + if ( !(v1->pInventoryItems[v4].field_1A & 2) )//v5[516] & 2) ) { - v28 = v5 + 496; - v6 = *((int *)v5 + 124); + v28b = &v1->pInventoryItems[v4].uItemID; + v6 = v1->pInventoryItems[v4].uItemID;//*((int *)v5 + 124); if ( pItemsTable->pItems[v6].uEquipType == 12 ) { - if ( *((int *)v5 + 128) <= 0 ) + if ( v1->pInventoryItems[v4]._bonus_type <= 0 ) { - *(int *)v28 = 0; + *v28b = 0; v1->pEquipment.uMainHand = 0; } else { - v32 = *((int *)v5 + 124); + v32 = v1->pInventoryItems[v4].uItemID;//*((int *)v5 + 124); } } else { if ( v6 == 64 || v6 == 65 ) - v33 = *((int *)v5 + 124); + v33 = v1->pInventoryItems[v4].uItemID;//*((int *)v5 + 124); } } } @@ -7939,7 +7938,7 @@ } if ( v33 != v9 ) { - v28 = (char *)1; + v28 = 1; v22 = v0 + 8; v20 = v9; v18 = v9; @@ -8003,7 +8002,7 @@ } if ( v33 ) { - v28 = (char *)1; + v28 = 1; v23 = v0 + 8; v21 = 0; v19 = 0; @@ -8035,7 +8034,7 @@ { if ( v29 != v3 ) return 1; - if ( v28 == (char *)v3 ) + if ( v28 == v3 ) { v15 = v1->pEquipment.uMainHand; if ( v1->HasItemEquipped(EQUIP_TWO_HANDED) )