- Fix: when Larry changes profiles, several stats are not properly copied

- Fix: when Larry changes profiles, Goodguy is always copied over

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8583 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2018-07-22 15:35:14 +00:00
parent 29772b45de
commit 9f940cd5a5
+44 -16
View File
@@ -2369,20 +2369,11 @@ BOOLEAN MercIsInTropicalSector( SOLDIERTYPE * pSoldier )
SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
{
UINT8 ubSrcProfile;
UINT8 ubDestProfile;
MERCPROFILESTRUCT * pNewProfile;
MERCPROFILESTRUCT* pNewProfile;
UINT8 ubSrcProfile = pSoldier->ubProfile;
ubSrcProfile = pSoldier->ubProfile;
if ( ubSrcProfile == LARRY_NORMAL)
{
ubDestProfile = LARRY_DRUNK;
}
else if ( ubSrcProfile == LARRY_DRUNK )
{
ubDestProfile = LARRY_NORMAL;
}
else
// need a stop criteria...
if ( FALSE )
{
// I don't think so!
return( pSoldier );
@@ -2437,6 +2428,11 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
pNewProfile->records.usSectorsDiscovered = gMercProfiles[ ubSrcProfile ].records.usSectorsDiscovered;
pNewProfile->records.usMilitiaTrained = gMercProfiles[ ubSrcProfile ].records.usMilitiaTrained;
pNewProfile->records.ubQuestsHandled = gMercProfiles[ ubSrcProfile ].records.ubQuestsHandled;
pNewProfile->records.usInterrogations = gMercProfiles[ubSrcProfile].records.usInterrogations;
pNewProfile->records.usDamageTaken = gMercProfiles[ubSrcProfile].records.usDamageTaken;
pNewProfile->records.usDamageDealt = gMercProfiles[ubSrcProfile].records.usDamageDealt;
pNewProfile->records.usTimesInfected = gMercProfiles[ubSrcProfile].records.usTimesInfected;
pNewProfile->records.usPointsHealed = gMercProfiles[ubSrcProfile].records.usPointsHealed;
/////////////////////////////////////////////////////////////////////////////////////
pNewProfile->usTotalDaysServed = gMercProfiles[ ubSrcProfile ].usTotalDaysServed;
@@ -2451,11 +2447,21 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
pNewProfile->bSectorZ = gMercProfiles[ ubSrcProfile ].bSectorZ;
pNewProfile->usStrategicInsertionData = gMercProfiles[ ubSrcProfile ].usStrategicInsertionData;
pNewProfile->sTrueSalary = gMercProfiles[ ubSrcProfile ].sTrueSalary;
// the goodguy property is permanent and shouldn't carry over, so check for that
BOOLEAN goodguy = ( gMercProfiles[ubDestProfile].ubMiscFlags3 & PROFILE_MISC_FLAG3_GOODGUY ) ? TRUE : FALSE;
pNewProfile->ubMiscFlags3 = gMercProfiles[ ubSrcProfile ].ubMiscFlags3;
pNewProfile->ubMiscFlags3 &= ~PROFILE_MISC_FLAG3_GOODGUY;
if ( goodguy )
pNewProfile->ubMiscFlags3 |= PROFILE_MISC_FLAG3_GOODGUY;
pNewProfile->ubDaysOfMoraleHangover = gMercProfiles[ ubSrcProfile ].ubDaysOfMoraleHangover;
pNewProfile->ubNumTimesDrugUseInLifetime = gMercProfiles[ ubSrcProfile ].ubNumTimesDrugUseInLifetime;
pNewProfile->uiPrecedentQuoteSaid = gMercProfiles[ ubSrcProfile ].uiPrecedentQuoteSaid;
pNewProfile->sPreCombatGridNo = gMercProfiles[ ubSrcProfile ].sPreCombatGridNo;
pNewProfile->ubSnitchExposedCooldown = gMercProfiles[ubSrcProfile].ubSnitchExposedCooldown;
// CJC: this is causing problems so just skip the transfer of exp...
/*
@@ -2484,6 +2490,28 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
pNewProfile->bExplosivesDelta = gMercProfiles[ ubSrcProfile ].bExplosivesDelta;
*/
pNewProfile->sLifeGain = gMercProfiles[ubSrcProfile].sLifeGain;
pNewProfile->sAgilityGain = gMercProfiles[ubSrcProfile].sAgilityGain;
pNewProfile->sDexterityGain = gMercProfiles[ubSrcProfile].sDexterityGain;
pNewProfile->sStrengthGain = gMercProfiles[ubSrcProfile].sStrengthGain;
pNewProfile->sWisdomGain = gMercProfiles[ubSrcProfile].sWisdomGain;
pNewProfile->sExpLevelGain = gMercProfiles[ubSrcProfile].sExpLevelGain;
pNewProfile->bLifeDelta = gMercProfiles[ubSrcProfile].bLifeDelta;
pNewProfile->bAgilityDelta = gMercProfiles[ubSrcProfile].bAgilityDelta;
pNewProfile->bDexterityDelta = gMercProfiles[ubSrcProfile].bDexterityDelta;
pNewProfile->bStrengthDelta = gMercProfiles[ubSrcProfile].bStrengthDelta;
pNewProfile->bWisdomDelta = gMercProfiles[ubSrcProfile].bWisdomDelta;
pNewProfile->bExpLevelDelta = gMercProfiles[ubSrcProfile].bExpLevelDelta;
pNewProfile->bLife = gMercProfiles[ubSrcProfile].bLife;
pNewProfile->bAgility = gMercProfiles[ubSrcProfile].bAgility;
pNewProfile->bDexterity = gMercProfiles[ubSrcProfile].bDexterity;
pNewProfile->bStrength = gMercProfiles[ubSrcProfile].bStrength;
pNewProfile->bWisdom = gMercProfiles[ubSrcProfile].bWisdom;
pNewProfile->bExpLevel = gMercProfiles[ubSrcProfile].bExpLevel;
pNewProfile->bInvStatus = gMercProfiles[ ubSrcProfile ].bInvStatus;
pNewProfile->bInvNumber = gMercProfiles[ ubSrcProfile ].bInvNumber;
pNewProfile->inv = gMercProfiles[ ubSrcProfile ].inv;
@@ -2503,11 +2531,11 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
pSoldier->stats.bStrength = pNewProfile->bStrength + pNewProfile->bStrengthDelta;
pSoldier->stats.bDexterity = pNewProfile->bDexterity + pNewProfile->bDexterityDelta;
pSoldier->stats.bAgility = pNewProfile->bAgility + pNewProfile->bAgilityDelta;
pSoldier->stats.bWisdom = pNewProfile->bWisdom + pNewProfile->bWisdomDelta;
pSoldier->stats.bWisdom = pNewProfile->bWisdom + pNewProfile->bWisdomDelta;
pSoldier->stats.bExpLevel = pNewProfile->bExpLevel + pNewProfile->bExpLevelDelta;
pSoldier->stats.bLeadership = pNewProfile->bLeadership + pNewProfile->bLeadershipDelta;
pSoldier->stats.bMarksmanship = pNewProfile->bMarksmanship + pNewProfile->bMarksmanshipDelta;
pSoldier->stats.bMarksmanship = pNewProfile->bMarksmanship + pNewProfile->bMarksmanshipDelta;
pSoldier->stats.bMechanical = pNewProfile->bMechanical + pNewProfile->bMechanicDelta;
pSoldier->stats.bMedical = pNewProfile->bMedical + pNewProfile->bMedicalDelta;
pSoldier->stats.bExplosive = pNewProfile->bExplosive + pNewProfile->bExplosivesDelta;
@@ -2527,7 +2555,7 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
}
#endif
}
else
else if ( pSoldier->ubProfile == LARRY_NORMAL )
{
SetFactFalse( FACT_LARRY_CHANGED );
}