diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index f8faad6e..054f6efd 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -8644,8 +8644,6 @@ void AssignPersonnelAssistsHelpText( INT32 ubProfile ) // Set region help text SetRegionFastHelpText( &(gSkillTraitHelpTextRegion[8]), apStr ); SetRegionHelpEndCallback( &gSkillTraitHelpTextRegion[8], MSYS_NO_CALLBACK ); - - return; } void AssignPersonnelHitPercentageHelpText( INT32 ubProfile ) @@ -8689,12 +8687,15 @@ void AssignPersonnelHitPercentageHelpText( INT32 ubProfile ) swprintf(atStr, pPersonnelRecordsHelpTexts[ 16 ], gMercProfiles[ubProfile].records.usShotsHit ); wcscat( apStr, atStr ); } + if ( gMercProfiles[ubProfile].records.usDamageDealt > 0 || fShowRecordsIfZero ) + { + swprintf( atStr, pPersonnelRecordsHelpTexts[52], gMercProfiles[ubProfile].records.usDamageDealt ); + wcscat( apStr, atStr ); + } // Set region help text SetRegionFastHelpText( &(gSkillTraitHelpTextRegion[9]), apStr ); SetRegionHelpEndCallback( &gSkillTraitHelpTextRegion[9], MSYS_NO_CALLBACK ); - - return; } void AssignPersonnelAchievementsHelpText( INT32 ubProfile ) @@ -8800,12 +8801,15 @@ void AssignPersonnelAchievementsHelpText( INT32 ubProfile ) swprintf(atStr, pPersonnelRecordsHelpTexts[ 30 ], gMercProfiles[ubProfile].records.ubQuestsHandled ); wcscat( apStr, atStr ); } + if ( gMercProfiles[ubProfile].records.usInterrogations > 0 || fShowRecordsIfZero ) + { + swprintf( atStr, pPersonnelRecordsHelpTexts[49], gMercProfiles[ubProfile].records.usInterrogations ); + wcscat( apStr, atStr ); + } // Set region help text SetRegionFastHelpText( &(gSkillTraitHelpTextRegion[10]), apStr ); SetRegionHelpEndCallback( &gSkillTraitHelpTextRegion[10], MSYS_NO_CALLBACK ); - - return; } void AssignPersonnelBattlesHelpText( INT32 ubProfile ) @@ -8899,6 +8903,18 @@ void AssignPersonnelWoundsHelpText( INT32 ubProfile ) wcscat( apStr, atStr ); } + if ( gMercProfiles[ubProfile].records.usTimesInfected > 0 || fShowRecordsIfZero ) + { + swprintf( atStr, pPersonnelRecordsHelpTexts[50], gMercProfiles[ubProfile].records.usTimesInfected ); + wcscat( apStr, atStr ); + } + + if ( gMercProfiles[ubProfile].records.usDamageTaken > 0 || fShowRecordsIfZero ) + { + swprintf( atStr, pPersonnelRecordsHelpTexts[51], gMercProfiles[ubProfile].records.usDamageTaken ); + wcscat( apStr, atStr ); + } + // Set region help text SetRegionFastHelpText( &(gSkillTraitHelpTextRegion[12]), apStr ); SetRegionHelpEndCallback( &gSkillTraitHelpTextRegion[12], MSYS_NO_CALLBACK ); @@ -8946,8 +8962,9 @@ INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ) + ( gMercProfiles[ pTeamSoldier->ubProfile ].records.usMilitiaTrained /4) + - ( gMercProfiles[ pTeamSoldier->ubProfile ].records.ubQuestsHandled *2); - + ( gMercProfiles[ pTeamSoldier->ubProfile ].records.ubQuestsHandled *2) + + + (gMercProfiles[pTeamSoldier->ubProfile].records.usInterrogations); } } } @@ -8978,7 +8995,9 @@ INT8 CalculateMercsAchievementPercentage( INT32 ubProfile ) + ( gMercProfiles[ ubProfile ].records.usMilitiaTrained /4) + - ( gMercProfiles[ ubProfile ].records.ubQuestsHandled *2); + ( gMercProfiles[ ubProfile ].records.ubQuestsHandled *2) + + + ( gMercProfiles[ubProfile].records.usInterrogations ); // Calculate percentage if( ulTotalMercPoints != 0 ) diff --git a/Strategic/Assignments.cpp b/Strategic/Assignments.cpp index 4e985cde..5872852e 100644 --- a/Strategic/Assignments.cpp +++ b/Strategic/Assignments.cpp @@ -7277,6 +7277,10 @@ void HandlePrisonerProcessingInSector( INT16 sMapX, INT16 sMapY, INT8 bZ ) StatChange( pSoldier, WISDOMAMT, max( 0, exppoints ), TRUE ); StatChange( pSoldier, EXPERAMT, max( 0, exppoints - 1 ), TRUE ); } + + // add to our records. Screw exact values, just add them all and call it a day + if ( pSoldier->ubProfile != NO_PROFILE ) + gMercProfiles[pSoldier->ubProfile].records.usInterrogations += prisonersinterrogated; } } } diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index 4cb72398..f56290a8 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -9930,6 +9930,14 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr VehicleTakeDamage( this->bVehicleID, ubReason, sLifeDeduct, this->sGridNo, ubAttacker ); HandleTakeDamageDeath( this, bOldLife, ubReason ); + + // add to our records. + if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] && MercPtrs[ubAttacker]->ubProfile != NO_PROFILE ) + gMercProfiles[MercPtrs[ubAttacker]->ubProfile].records.usDamageDealt += sLifeDeduct; + + if ( this->ubProfile != NO_PROFILE ) + gMercProfiles[this->ubProfile].records.usDamageTaken += sLifeDeduct; + return(0); } @@ -10096,6 +10104,13 @@ UINT8 SOLDIERTYPE::SoldierTakeDamage( INT8 bHeight, INT16 sLifeDeduct, INT16 sBr this->usPendingAnimation = NO_PENDING_ANIMATION; } + // add to our records. + if ( ubAttacker != NOBODY && MercPtrs[ubAttacker] && MercPtrs[ubAttacker]->ubProfile != NO_PROFILE ) + gMercProfiles[MercPtrs[ubAttacker]->ubProfile].records.usDamageDealt += sLifeDeduct; + + if ( this->ubProfile != NO_PROFILE ) + gMercProfiles[this->ubProfile].records.usDamageTaken += sLifeDeduct; + if ( fShowDamage ) { this->sDamage += sLifeDeduct; @@ -18478,6 +18493,10 @@ void SOLDIERTYPE::AnnounceDisease( UINT8 aDisease ) if ( this->bTeam == gbPlayerNum ) ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, szDiseaseText[TEXT_DISEASE_DIAGNOSE_GENERAL], this->GetName( ), Disease[aDisease].szName ); + + // add to our records. + if ( this->ubProfile != NO_PROFILE ) + gMercProfiles[this->ubProfile].records.usTimesInfected += 1; } // do we have any disease? fDiagnosedOnly: check for wether we know of this infection fHealableOnly: check wether it can be healed diff --git a/Tactical/soldier profile type.h b/Tactical/soldier profile type.h index 119fcfce..4fb926b7 100644 --- a/Tactical/soldier profile type.h +++ b/Tactical/soldier profile type.h @@ -442,13 +442,11 @@ public: UINT16 usNPCsDiscovered; UINT16 usSectorsDiscovered; UINT8 ubQuestsHandled; - - UINT16 zFiller1; - UINT16 zFiller2; - UINT16 zFiller3; - UINT16 zFiller4; - UINT16 zFiller5; - UINT16 zFiller6; + + UINT16 usInterrogations; + UINT32 usDamageTaken; + UINT32 usDamageDealt; + UINT16 usTimesInfected; UINT16 zFiller7; UINT16 zFiller8; UINT8 zFiller9; diff --git a/Utils/_ChineseText.cpp b/Utils/_ChineseText.cpp index 8fe210f1..1d042020 100644 --- a/Utils/_ChineseText.cpp +++ b/Utils/_ChineseText.cpp @@ -3082,6 +3082,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"背景:", L"性格:", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_DutchText.cpp b/Utils/_DutchText.cpp index c927666e..1a22549f 100644 --- a/Utils/_DutchText.cpp +++ b/Utils/_DutchText.cpp @@ -3082,6 +3082,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Background:", // TODO.Translate L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_EnglishText.cpp b/Utils/_EnglishText.cpp index 5cfd146d..f179d098 100644 --- a/Utils/_EnglishText.cpp +++ b/Utils/_EnglishText.cpp @@ -3082,6 +3082,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Background:", L"Personality:", + + L"Prisoners interrogated: %d\n", + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_FrenchText.cpp b/Utils/_FrenchText.cpp index 1e9e57a4..49cde48c 100644 --- a/Utils/_FrenchText.cpp +++ b/Utils/_FrenchText.cpp @@ -3090,6 +3090,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Passif :", L"Personnalité :", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_GermanText.cpp b/Utils/_GermanText.cpp index cb1147cb..2955c53d 100644 --- a/Utils/_GermanText.cpp +++ b/Utils/_GermanText.cpp @@ -3098,6 +3098,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Werdegang:", L"Personalität:", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_ItalianText.cpp b/Utils/_ItalianText.cpp index 1136c1a4..828e6970 100644 --- a/Utils/_ItalianText.cpp +++ b/Utils/_ItalianText.cpp @@ -3078,6 +3078,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Background:", // TODO.Translate L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_PolishText.cpp b/Utils/_PolishText.cpp index 7b6b5460..f37345aa 100644 --- a/Utils/_PolishText.cpp +++ b/Utils/_PolishText.cpp @@ -3088,6 +3088,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Background:", // TODO.Translate L"Personality:", // TODO.Translate + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", }; diff --git a/Utils/_RussianText.cpp b/Utils/_RussianText.cpp index 27e4ddb1..79bf79d2 100644 --- a/Utils/_RussianText.cpp +++ b/Utils/_RussianText.cpp @@ -3082,6 +3082,11 @@ STR16 pPersonnelRecordsHelpTexts[] = L"Биография:", L"Характер:", + + L"Prisoners interrogated: %d\n", // TODO.Translate + L"Diseases caught: %d\n", + L"Total damage received: %d\n", + L"Total damage caused: %d\n", };