mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
- 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:
@@ -2369,20 +2369,11 @@ BOOLEAN MercIsInTropicalSector( SOLDIERTYPE * pSoldier )
|
|||||||
|
|
||||||
SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
||||||
{
|
{
|
||||||
UINT8 ubSrcProfile;
|
MERCPROFILESTRUCT* pNewProfile;
|
||||||
UINT8 ubDestProfile;
|
UINT8 ubSrcProfile = pSoldier->ubProfile;
|
||||||
MERCPROFILESTRUCT * pNewProfile;
|
|
||||||
|
|
||||||
ubSrcProfile = pSoldier->ubProfile;
|
// need a stop criteria...
|
||||||
if ( ubSrcProfile == LARRY_NORMAL)
|
if ( FALSE )
|
||||||
{
|
|
||||||
ubDestProfile = LARRY_DRUNK;
|
|
||||||
}
|
|
||||||
else if ( ubSrcProfile == LARRY_DRUNK )
|
|
||||||
{
|
|
||||||
ubDestProfile = LARRY_NORMAL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
// I don't think so!
|
// I don't think so!
|
||||||
return( pSoldier );
|
return( pSoldier );
|
||||||
@@ -2437,6 +2428,11 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
|||||||
pNewProfile->records.usSectorsDiscovered = gMercProfiles[ ubSrcProfile ].records.usSectorsDiscovered;
|
pNewProfile->records.usSectorsDiscovered = gMercProfiles[ ubSrcProfile ].records.usSectorsDiscovered;
|
||||||
pNewProfile->records.usMilitiaTrained = gMercProfiles[ ubSrcProfile ].records.usMilitiaTrained;
|
pNewProfile->records.usMilitiaTrained = gMercProfiles[ ubSrcProfile ].records.usMilitiaTrained;
|
||||||
pNewProfile->records.ubQuestsHandled = gMercProfiles[ ubSrcProfile ].records.ubQuestsHandled;
|
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;
|
pNewProfile->usTotalDaysServed = gMercProfiles[ ubSrcProfile ].usTotalDaysServed;
|
||||||
@@ -2451,11 +2447,21 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
|||||||
pNewProfile->bSectorZ = gMercProfiles[ ubSrcProfile ].bSectorZ;
|
pNewProfile->bSectorZ = gMercProfiles[ ubSrcProfile ].bSectorZ;
|
||||||
pNewProfile->usStrategicInsertionData = gMercProfiles[ ubSrcProfile ].usStrategicInsertionData;
|
pNewProfile->usStrategicInsertionData = gMercProfiles[ ubSrcProfile ].usStrategicInsertionData;
|
||||||
pNewProfile->sTrueSalary = gMercProfiles[ ubSrcProfile ].sTrueSalary;
|
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 = gMercProfiles[ ubSrcProfile ].ubMiscFlags3;
|
||||||
|
|
||||||
|
pNewProfile->ubMiscFlags3 &= ~PROFILE_MISC_FLAG3_GOODGUY;
|
||||||
|
if ( goodguy )
|
||||||
|
pNewProfile->ubMiscFlags3 |= PROFILE_MISC_FLAG3_GOODGUY;
|
||||||
|
|
||||||
pNewProfile->ubDaysOfMoraleHangover = gMercProfiles[ ubSrcProfile ].ubDaysOfMoraleHangover;
|
pNewProfile->ubDaysOfMoraleHangover = gMercProfiles[ ubSrcProfile ].ubDaysOfMoraleHangover;
|
||||||
pNewProfile->ubNumTimesDrugUseInLifetime = gMercProfiles[ ubSrcProfile ].ubNumTimesDrugUseInLifetime;
|
pNewProfile->ubNumTimesDrugUseInLifetime = gMercProfiles[ ubSrcProfile ].ubNumTimesDrugUseInLifetime;
|
||||||
pNewProfile->uiPrecedentQuoteSaid = gMercProfiles[ ubSrcProfile ].uiPrecedentQuoteSaid;
|
pNewProfile->uiPrecedentQuoteSaid = gMercProfiles[ ubSrcProfile ].uiPrecedentQuoteSaid;
|
||||||
pNewProfile->sPreCombatGridNo = gMercProfiles[ ubSrcProfile ].sPreCombatGridNo;
|
pNewProfile->sPreCombatGridNo = gMercProfiles[ ubSrcProfile ].sPreCombatGridNo;
|
||||||
|
pNewProfile->ubSnitchExposedCooldown = gMercProfiles[ubSrcProfile].ubSnitchExposedCooldown;
|
||||||
|
|
||||||
// CJC: this is causing problems so just skip the transfer of exp...
|
// 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->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->bInvStatus = gMercProfiles[ ubSrcProfile ].bInvStatus;
|
||||||
pNewProfile->bInvNumber = gMercProfiles[ ubSrcProfile ].bInvNumber;
|
pNewProfile->bInvNumber = gMercProfiles[ ubSrcProfile ].bInvNumber;
|
||||||
pNewProfile->inv = gMercProfiles[ ubSrcProfile ].inv;
|
pNewProfile->inv = gMercProfiles[ ubSrcProfile ].inv;
|
||||||
@@ -2503,11 +2531,11 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
|||||||
pSoldier->stats.bStrength = pNewProfile->bStrength + pNewProfile->bStrengthDelta;
|
pSoldier->stats.bStrength = pNewProfile->bStrength + pNewProfile->bStrengthDelta;
|
||||||
pSoldier->stats.bDexterity = pNewProfile->bDexterity + pNewProfile->bDexterityDelta;
|
pSoldier->stats.bDexterity = pNewProfile->bDexterity + pNewProfile->bDexterityDelta;
|
||||||
pSoldier->stats.bAgility = pNewProfile->bAgility + pNewProfile->bAgilityDelta;
|
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.bExpLevel = pNewProfile->bExpLevel + pNewProfile->bExpLevelDelta;
|
||||||
pSoldier->stats.bLeadership = pNewProfile->bLeadership + pNewProfile->bLeadershipDelta;
|
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.bMechanical = pNewProfile->bMechanical + pNewProfile->bMechanicDelta;
|
||||||
pSoldier->stats.bMedical = pNewProfile->bMedical + pNewProfile->bMedicalDelta;
|
pSoldier->stats.bMedical = pNewProfile->bMedical + pNewProfile->bMedicalDelta;
|
||||||
pSoldier->stats.bExplosive = pNewProfile->bExplosive + pNewProfile->bExplosivesDelta;
|
pSoldier->stats.bExplosive = pNewProfile->bExplosive + pNewProfile->bExplosivesDelta;
|
||||||
@@ -2527,7 +2555,7 @@ SOLDIERTYPE * SwapLarrysProfiles( SOLDIERTYPE * pSoldier )
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
else
|
else if ( pSoldier->ubProfile == LARRY_NORMAL )
|
||||||
{
|
{
|
||||||
SetFactFalse( FACT_LARRY_CHANGED );
|
SetFactFalse( FACT_LARRY_CHANGED );
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user