mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
Fixes (by Buggler)
- Fixed allow exception to Dr Q. skill trait code not fully functional - Swapped Dr Q. skill trait xml order so that when exception disabled, he will still have his night ops minor skill due to code execution order - Externalized allow_exception ID number for modding git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5791 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+3
-2
@@ -1925,8 +1925,9 @@ void LoadSkillTraitsExternalSettings()
|
||||
gSkillTraitValues.ubMaxNumberOfTraits = iniReader.ReadInteger("Generic Traits Settings","MAX_NUMBER_OF_TRAITS", 3, 2, 30);
|
||||
gSkillTraitValues.ubNumberOfMajorTraitsAllowed = iniReader.ReadInteger("Generic Traits Settings","NUMBER_OF_MAJOR_TRAITS_ALLOWED", 2, 2, 20);
|
||||
|
||||
// Allow an exception in number of traits for Dr.Q?
|
||||
gSkillTraitValues.fAllowDrQTraitsException = iniReader.ReadBoolean("Generic Traits Settings","ALLOW_EXCEPTION_FOR_DR_Q", TRUE);
|
||||
// Allow an exception in number of traits for Special Merc?
|
||||
gSkillTraitValues.fAllowSpecialMercTraitsException = iniReader.ReadBoolean("Generic Traits Settings","ALLOW_EXCEPTION_FOR_SPECIAL_MERC", TRUE);
|
||||
gSkillTraitValues.ubSpecialMercID = iniReader.ReadInteger("Generic Traits Settings","SPECIAL_MERC_ID", 33, 0, 254);
|
||||
|
||||
// Allow traits prerequisities for attributes?
|
||||
gSkillTraitValues.fAllowAttributePrereq = iniReader.ReadBoolean("Generic Traits Settings","SET_MINIMUM_ATTRIBUTES_FOR_TRAITS", TRUE);
|
||||
|
||||
+2
-1
@@ -1211,7 +1211,8 @@ typedef struct
|
||||
UINT8 ubMaxNumberOfTraits;
|
||||
UINT8 ubNumberOfMajorTraitsAllowed;
|
||||
|
||||
BOOLEAN fAllowDrQTraitsException;
|
||||
BOOLEAN fAllowSpecialMercTraitsException;
|
||||
UINT8 ubSpecialMercID;
|
||||
|
||||
BOOLEAN fAllowAttributePrereq;
|
||||
|
||||
|
||||
@@ -17838,16 +17838,17 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
INT8 bNumMajorTraitsCounted = 0;
|
||||
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
||||
// special case for Dr.Q - he's allowed to have 3 major traits and one minor for total by default
|
||||
if ( pSoldier->ubProfile == 33 && gSkillTraitValues.fAllowDrQTraitsException )
|
||||
{
|
||||
bMaxTraits++;
|
||||
bMaxMajorTraits++;
|
||||
}
|
||||
|
||||
// check old/new traits
|
||||
if (gGameOptions.fNewTraitSystem)
|
||||
{
|
||||
// exception for special merc
|
||||
if ( gSkillTraitValues.fAllowSpecialMercTraitsException && pSoldier->ubProfile == gSkillTraitValues.ubSpecialMercID)
|
||||
{
|
||||
bMaxTraits++;
|
||||
bMaxMajorTraits++;
|
||||
}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ )
|
||||
{
|
||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||
@@ -17894,16 +17895,17 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
INT8 bNumMajorTraitsCounted = 0;
|
||||
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
||||
// special case for Dr.Q - he's allowed to have 3 major traits and one minor for total by default
|
||||
if ( pSoldier->ubProfile == 33 && gSkillTraitValues.fAllowDrQTraitsException )
|
||||
{
|
||||
bMaxTraits++;
|
||||
bMaxMajorTraits++;
|
||||
}
|
||||
|
||||
// check old/new traits
|
||||
if (gGameOptions.fNewTraitSystem)
|
||||
{
|
||||
// exception for special merc
|
||||
if ( gSkillTraitValues.fAllowSpecialMercTraitsException && pSoldier->ubProfile == gSkillTraitValues.ubSpecialMercID)
|
||||
{
|
||||
bMaxTraits++;
|
||||
bMaxMajorTraits++;
|
||||
}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ )
|
||||
{
|
||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||
|
||||
@@ -2657,11 +2657,20 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
||||
{
|
||||
INT8 bNumTraits = 0;
|
||||
INT8 bNumMajorTraitsCounted = 0;
|
||||
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
||||
|
||||
// check old/new traits
|
||||
if (gGameOptions.fNewTraitSystem)
|
||||
{
|
||||
for ( INT8 bCnt = 0; bCnt < gSkillTraitValues.ubMaxNumberOfTraits; bCnt++ )
|
||||
// exception for special merc
|
||||
if ( gSkillTraitValues.fAllowSpecialMercTraitsException && ubProfileID == gSkillTraitValues.ubSpecialMercID)
|
||||
{
|
||||
bMaxTraits++;
|
||||
bMaxMajorTraits++;
|
||||
}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < bMaxTraits; bCnt++ )
|
||||
{
|
||||
if ( TwoStagedTrait(bSkillTrait) )
|
||||
{
|
||||
@@ -2675,7 +2684,7 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
||||
bNumMajorTraitsCounted++;
|
||||
}
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted >= gSkillTraitValues.ubNumberOfMajorTraitsAllowed )
|
||||
if ( bNumMajorTraitsCounted >= bMaxMajorTraits )
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user