diff --git a/Laptop/personnel.cpp b/Laptop/personnel.cpp index fc313cae..ab720757 100644 --- a/Laptop/personnel.cpp +++ b/Laptop/personnel.cpp @@ -1869,10 +1869,9 @@ void DisplayCharStats(INT32 iId, INT32 iSlot) // Assign the text UINT8 traitnr = ubTempSkillArray[ubCnt]; - UINT8 mlas = NEWTRAIT_MERCSKILL_EXPERTOFFSET; - if ( traitnr > mlas ) + if ( traitnr > NEWTRAIT_MERCSKILL_EXPERTOFFSET ) { - traitnr = traitnr - mlas; + traitnr = traitnr - (NEWTRAIT_MERCSKILL_EXPERTOFFSET); } // Flugente: as the whole trait display is fubar, we have to to a special treatment here for new traits diff --git a/Tactical/Soldier Control.cpp b/Tactical/Soldier Control.cpp index a4d5a0de..f410c48c 100644 --- a/Tactical/Soldier Control.cpp +++ b/Tactical/Soldier Control.cpp @@ -17208,13 +17208,13 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) { for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ ) { - if ( uiSkillTraitNumber > 0 && (uiSkillTraitNumber <= NUM_MAJOR_TRAITS || uiSkillTraitNumber == COVERT_NT) ) + if ( TwoStagedTrait( uiSkillTraitNumber ) ) { if (pSoldier->stats.ubSkillTraits[ bCnt ] == uiSkillTraitNumber) { return( TRUE ); } - else if ( pSoldier->stats.ubSkillTraits[ bCnt ] > 0 && (pSoldier->stats.ubSkillTraits[ bCnt ] <= NUM_MAJOR_TRAITS || pSoldier->stats.ubSkillTraits[ bCnt ] == COVERT_NT) ) + else if ( TwoStagedTrait(pSoldier->stats.ubSkillTraits[ bCnt ]) ) { bNumMajorTraitsCounted++; } @@ -17264,14 +17264,14 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) { for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ ) { - if ( uiSkillTraitNumber > 0 && (uiSkillTraitNumber <= NUM_MAJOR_TRAITS || uiSkillTraitNumber == COVERT_NT) ) + if ( TwoStagedTrait( uiSkillTraitNumber ) ) { if ( pSoldier->stats.ubSkillTraits[ bCnt ] == uiSkillTraitNumber ) { bNumberOfTraits++; bNumMajorTraitsCounted++; } - else if ( pSoldier->stats.ubSkillTraits[ bCnt ] > 0 && (pSoldier->stats.ubSkillTraits[ bCnt ] <= NUM_MAJOR_TRAITS || pSoldier->stats.ubSkillTraits[ bCnt ] == COVERT_NT ) ) + else if ( TwoStagedTrait( pSoldier->stats.ubSkillTraits[ bCnt ] ) ) { bNumMajorTraitsCounted++; } @@ -17290,7 +17290,7 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber ) } } // cannot have more than one same minor trait - if( uiSkillTraitNumber > NUM_MAJOR_TRAITS && uiSkillTraitNumber != COVERT_NT) + if( !TwoStagedTrait(uiSkillTraitNumber) ) return ( min(1, bNumberOfTraits) ); else return ( min(2, bNumberOfTraits) ); @@ -17980,3 +17980,8 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier ) return FALSE; } + +BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ) +{ + return( uiSkillTraitNumber > 0 && (uiSkillTraitNumber <= NUM_MAJOR_TRAITS || uiSkillTraitNumber == COVERT_NT) ); +} \ No newline at end of file diff --git a/Tactical/Soldier Control.h b/Tactical/Soldier Control.h index 26c82057..7b9abcf3 100644 --- a/Tactical/Soldier Control.h +++ b/Tactical/Soldier Control.h @@ -1620,6 +1620,8 @@ BOOLEAN ResolvePendingInterrupt( SOLDIERTYPE * pSoldier, UINT8 ubInterruptType ) BOOLEAN AIDecideHipOrShoulderStance( SOLDIERTYPE * pSoldier, INT32 iGridNo ); BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier ); +BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ); // Flugente: determine if this (new) trait has two stages + //typedef struct class OLDSOLDIERTYPE_101 { diff --git a/Tactical/Soldier Profile.cpp b/Tactical/Soldier Profile.cpp index ea5fcd0e..418fecaa 100644 --- a/Tactical/Soldier Profile.cpp +++ b/Tactical/Soldier Profile.cpp @@ -2660,14 +2660,14 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait ) { for ( INT8 bCnt = 0; bCnt < gSkillTraitValues.ubMaxNumberOfTraits; bCnt++ ) { - if ( bSkillTrait > 0 && (bSkillTrait <= DOCTOR_NT || bSkillTrait == COVERT_NT ) ) + if ( TwoStagedTrait(bSkillTrait) ) { if ( gMercProfiles[ubProfileID].bSkillTraits[ bCnt ] == bSkillTrait ) { bNumTraits++; bNumMajorTraitsCounted++; } - else if ( gMercProfiles[ubProfileID].bSkillTraits[ bCnt ] > 0 && (gMercProfiles[ubProfileID].bSkillTraits[ bCnt ] <= DOCTOR_NT || gMercProfiles[ubProfileID].bSkillTraits[ bCnt ] <= COVERT_NT) ) + else if ( TwoStagedTrait(gMercProfiles[ubProfileID].bSkillTraits[ bCnt ]) ) { bNumMajorTraitsCounted++; }