# HG changeset patch # User Ritor1 # Date 1360353418 -21600 # Node ID 01ab35c858329a013a57848474199be6592b3828 # Parent 2baff125684467c646330a25f50895dc2bca892a 9.02.13 diff -r 2baff1256844 -r 01ab35c85832 Party.cpp --- a/Party.cpp Fri Feb 08 23:05:14 2013 +0600 +++ b/Party.cpp Sat Feb 09 01:56:58 2013 +0600 @@ -763,7 +763,7 @@ memcpy(pNPCStats->pNewNPCData, pNPCStats->pNPCData, 0x94BCu); memcpy(pNPCStats->pGroups_copy, pNPCStats->pGroups, 0x66u); - pNPCStats->pNewNPCData[3].uFlags |= 0x80u; + pNPCStats->pNewNPCData[3].uFlags = 128;//|= 0x80u; Lady Margaret _494035_timed_effects__water_walking_damage__etc(); pEventTimer->Pause(); return 0; diff -r 2baff1256844 -r 01ab35c85832 mm7_5.cpp --- a/mm7_5.cpp Fri Feb 08 23:05:14 2013 +0600 +++ b/mm7_5.cpp Sat Feb 09 01:56:58 2013 +0600 @@ -68,7 +68,7 @@ unsigned int v2; // edx@7 Actor *pActor; // ecx@13 int v4; // ecx@18 - NPCData *pNPCData; // eax@18 + NPCData *pNPCData0; // eax@18 int v6; // edx@20 int v7; // ecx@29 unsigned int v8; // edx@59 @@ -341,18 +341,18 @@ uAction = 0; uNumSeconds = uMessage - 134; v4 = 0; - pNPCData = pParty->pHirelings; + pNPCData0 = pParty->pHirelings; do { - if ( pNPCData->pName ) + if ( pNPCData0->pName ) { v6 = uAction++; pTmpBuf[v6] = v4; } - ++pNPCData; + ++pNPCData0; ++v4; } - while ( (signed int)pNPCData < (signed int)&pParty->pPickedItem ); + while ( (signed int)pNPCData0 < (signed int)&pParty->pPickedItem ); _this = 0; if ( (signed int)pNPCStats->uNumNewNPCs > 0 ) { @@ -15999,7 +15999,7 @@ //----- (00416B01) -------------------------------------------------------- -void __thiscall sub_416B01(void *_this) +void __thiscall sub_416B01(void *_this)//PopupWindowForBenefitAndJoinText { int v1; // edi@2 int v2; // ecx@2 @@ -16026,18 +16026,23 @@ v1 = 0; v2 = 0; v3 = pParty->pHirelings; - do + /*do { if ( v3->pName ) pTmpBuf[v1++] = v2; ++v3; ++v2; } - while ( (signed int)v3 < (signed int)&pParty->pPickedItem ); + while ( (signed int)v3 < (signed int)&pParty->pPickedItem );*/ + for (int i = 0; i < 2; ++i) + { + if (pParty->pHirelings[i].pName) + pTmpBuf[v1++] = i; + } lpsz = 0; if ( (signed int)pNPCStats->uNumNewNPCs > 0 ) { - v4 = pNPCStats->pNewNPCData; + /*v4 = pNPCStats->pNewNPCData; do { if ( v4->uFlags & 0x80 @@ -16047,7 +16052,18 @@ ++lpsz; ++v4; } - while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs ); + while ( (signed int)lpsz < (signed int)pNPCStats->uNumNewNPCs );*/ + for (int i = 0; i < pNPCStats->uNumNewNPCs; ++i) + { + if (pNPCStats->pNewNPCData[i].uFlags & 0x80) + { + if (!pParty->pHirelings[0].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[0].pName)) + { + if (!pParty->pHirelings[1].pName || strcmp((char *)pNPCStats->pNewNPCData[i].pName, (char *)pParty->pHirelings[1].pName)) + pTmpBuf[v1++] = i + 2; + } + } + } } if ( (signed int)((char *)v17 + (unsigned __int8)pParty->field_709) < v1 ) {