made sure that faulty xmls don't lead to three major traits

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6094 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2013-05-24 15:10:27 +00:00
parent 2bf92c7301
commit 45659c18a3
2 changed files with 14 additions and 8 deletions
+13 -7
View File
@@ -1423,7 +1423,7 @@ INT32 ChooseHairColor( SOLDIERTYPE *pSoldier, INT32 skin )
return hair; return hair;
} }
void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass ) void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass, UINT8 ubTeam )
{ {
INT32 skin, hair; INT32 skin, hair;
BOOLEAN fMercClothingScheme; BOOLEAN fMercClothingScheme;
@@ -1441,7 +1441,7 @@ void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass )
if ( pSoldier->usSoldierProfile ) if ( pSoldier->usSoldierProfile )
{ {
INT8 type = pSoldier->GetSoldierProfileType(pSoldier->bTeam); INT8 type = pSoldier->GetSoldierProfileType(ubTeam);
if ( type > -1 && zSoldierProfile[type][pSoldier->usSoldierProfile].uiSkin ) if ( type > -1 && zSoldierProfile[type][pSoldier->usSoldierProfile].uiSkin )
skin = zSoldierProfile[type][pSoldier->usSoldierProfile].uiSkin - 1; skin = zSoldierProfile[type][pSoldier->usSoldierProfile].uiSkin - 1;
@@ -1884,7 +1884,7 @@ BOOLEAN TacticalCopySoldierFromCreateStruct( SOLDIERTYPE *pSoldier, SOLDIERCREAT
} }
//Generate colors for soldier based on the body type. //Generate colors for soldier based on the body type.
GeneratePaletteForSoldier( pSoldier, pCreateStruct->ubSoldierClass ); GeneratePaletteForSoldier( pSoldier, pCreateStruct->ubSoldierClass, pCreateStruct->bTeam );
// Copy item info over // Copy item info over
pSoldier->inv = pCreateStruct->Inv; pSoldier->inv = pCreateStruct->Inv;
@@ -2667,7 +2667,7 @@ void UpdateSoldierWithStaticDetailedInformation( SOLDIERTYPE *s, SOLDIERCREATE_S
case SOLDIER_CLASS_ADMINISTRATOR: case SOLDIER_CLASS_ADMINISTRATOR:
case SOLDIER_CLASS_ARMY: case SOLDIER_CLASS_ARMY:
case SOLDIER_CLASS_ELITE: case SOLDIER_CLASS_ELITE:
GeneratePaletteForSoldier( s, spp->ubSoldierClass ); GeneratePaletteForSoldier( s, spp->ubSoldierClass, spp->bTeam );
break; break;
} }
@@ -4069,7 +4069,7 @@ BOOLEAN AssignTraitsToSoldier( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCre
ubSolClass = pSoldier->ubSoldierClass; ubSolClass = pSoldier->ubSoldierClass;
// Flugente: soldier profiles - if any traits are in the xml, use them, but fill up empty slots afterwards // Flugente: soldier profiles - if any traits are in the xml, use them, but fill up empty slots afterwards
if ( pSoldier->usSoldierProfile ) if ( gGameOptions.fNewTraitSystem && pSoldier->usSoldierProfile )
{ {
INT8 type = pSoldier->GetSoldierProfileType(pCreateStruct->bTeam); INT8 type = pSoldier->GetSoldierProfileType(pCreateStruct->bTeam);
@@ -4089,8 +4089,14 @@ BOOLEAN AssignTraitsToSoldier( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCre
if ( zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2] > 0 ) if ( zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2] > 0 )
{ {
pSoldier->stats.ubSkillTraits[2] = zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2]; // we have to make sure that not all 3 traits are major traits - if that happens, we ignore the third one
CTraitAssigned = TRUE; if ( TwoStagedTrait(pSoldier->stats.ubSkillTraits[0]) && TwoStagedTrait(pSoldier->stats.ubSkillTraits[1]) && TwoStagedTrait(zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2]) )
;
else
{
pSoldier->stats.ubSkillTraits[2] = zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2];
CTraitAssigned = TRUE;
}
} }
} }
} }
+1 -1
View File
@@ -497,7 +497,7 @@ void ModifySoldierAttributesWithNewRelativeLevel( SOLDIERTYPE *s, INT8 bLevel );
// Force the soldier to be a different ID // Force the soldier to be a different ID
void ForceSoldierProfileID( SOLDIERTYPE *pSoldier, UINT8 ubProfileID ); void ForceSoldierProfileID( SOLDIERTYPE *pSoldier, UINT8 ubProfileID );
void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass ); void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass, UINT8 ubTeam );
void QuickCreateProfileMerc( INT8 bTeam, UINT8 ubProfileID ); void QuickCreateProfileMerc( INT8 bTeam, UINT8 ubProfileID );