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;
}
void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass )
void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass, UINT8 ubTeam )
{
INT32 skin, hair;
BOOLEAN fMercClothingScheme;
@@ -1441,7 +1441,7 @@ void GeneratePaletteForSoldier( SOLDIERTYPE *pSoldier, UINT8 ubSoldierClass )
if ( pSoldier->usSoldierProfile )
{
INT8 type = pSoldier->GetSoldierProfileType(pSoldier->bTeam);
INT8 type = pSoldier->GetSoldierProfileType(ubTeam);
if ( type > -1 && zSoldierProfile[type][pSoldier->usSoldierProfile].uiSkin )
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.
GeneratePaletteForSoldier( pSoldier, pCreateStruct->ubSoldierClass );
GeneratePaletteForSoldier( pSoldier, pCreateStruct->ubSoldierClass, pCreateStruct->bTeam );
// Copy item info over
pSoldier->inv = pCreateStruct->Inv;
@@ -2667,7 +2667,7 @@ void UpdateSoldierWithStaticDetailedInformation( SOLDIERTYPE *s, SOLDIERCREATE_S
case SOLDIER_CLASS_ADMINISTRATOR:
case SOLDIER_CLASS_ARMY:
case SOLDIER_CLASS_ELITE:
GeneratePaletteForSoldier( s, spp->ubSoldierClass );
GeneratePaletteForSoldier( s, spp->ubSoldierClass, spp->bTeam );
break;
}
@@ -4069,7 +4069,7 @@ BOOLEAN AssignTraitsToSoldier( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCre
ubSolClass = pSoldier->ubSoldierClass;
// 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);
@@ -4089,8 +4089,14 @@ BOOLEAN AssignTraitsToSoldier( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCre
if ( zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2] > 0 )
{
pSoldier->stats.ubSkillTraits[2] = zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2];
CTraitAssigned = TRUE;
// we have to make sure that not all 3 traits are major traits - if that happens, we ignore the third one
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
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 );