mirror of
https://github.com/1dot13/source.git
synced 2026-09-02 14:36:06 +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.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);
|
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?
|
// Allow an exception in number of traits for Special Merc?
|
||||||
gSkillTraitValues.fAllowDrQTraitsException = iniReader.ReadBoolean("Generic Traits Settings","ALLOW_EXCEPTION_FOR_DR_Q", TRUE);
|
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?
|
// Allow traits prerequisities for attributes?
|
||||||
gSkillTraitValues.fAllowAttributePrereq = iniReader.ReadBoolean("Generic Traits Settings","SET_MINIMUM_ATTRIBUTES_FOR_TRAITS", TRUE);
|
gSkillTraitValues.fAllowAttributePrereq = iniReader.ReadBoolean("Generic Traits Settings","SET_MINIMUM_ATTRIBUTES_FOR_TRAITS", TRUE);
|
||||||
|
|||||||
+2
-1
@@ -1211,7 +1211,8 @@ typedef struct
|
|||||||
UINT8 ubMaxNumberOfTraits;
|
UINT8 ubMaxNumberOfTraits;
|
||||||
UINT8 ubNumberOfMajorTraitsAllowed;
|
UINT8 ubNumberOfMajorTraitsAllowed;
|
||||||
|
|
||||||
BOOLEAN fAllowDrQTraitsException;
|
BOOLEAN fAllowSpecialMercTraitsException;
|
||||||
|
UINT8 ubSpecialMercID;
|
||||||
|
|
||||||
BOOLEAN fAllowAttributePrereq;
|
BOOLEAN fAllowAttributePrereq;
|
||||||
|
|
||||||
|
|||||||
@@ -17838,16 +17838,17 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
|||||||
INT8 bNumMajorTraitsCounted = 0;
|
INT8 bNumMajorTraitsCounted = 0;
|
||||||
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||||
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
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
|
// check old/new traits
|
||||||
if (gGameOptions.fNewTraitSystem)
|
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++ )
|
for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ )
|
||||||
{
|
{
|
||||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||||
@@ -17894,16 +17895,17 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
|||||||
INT8 bNumMajorTraitsCounted = 0;
|
INT8 bNumMajorTraitsCounted = 0;
|
||||||
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||||
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
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
|
// check old/new traits
|
||||||
if (gGameOptions.fNewTraitSystem)
|
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++ )
|
for ( INT8 bCnt = 0; bCnt < min(30,bMaxTraits); bCnt++ )
|
||||||
{
|
{
|
||||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||||
|
|||||||
@@ -2657,11 +2657,20 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
|||||||
{
|
{
|
||||||
INT8 bNumTraits = 0;
|
INT8 bNumTraits = 0;
|
||||||
INT8 bNumMajorTraitsCounted = 0;
|
INT8 bNumMajorTraitsCounted = 0;
|
||||||
|
INT8 bMaxTraits = gSkillTraitValues.ubMaxNumberOfTraits;
|
||||||
|
INT8 bMaxMajorTraits = gSkillTraitValues.ubNumberOfMajorTraitsAllowed;
|
||||||
|
|
||||||
// check old/new traits
|
// check old/new traits
|
||||||
if (gGameOptions.fNewTraitSystem)
|
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) )
|
if ( TwoStagedTrait(bSkillTrait) )
|
||||||
{
|
{
|
||||||
@@ -2675,7 +2684,7 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
|||||||
bNumMajorTraitsCounted++;
|
bNumMajorTraitsCounted++;
|
||||||
}
|
}
|
||||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||||
if ( bNumMajorTraitsCounted >= gSkillTraitValues.ubNumberOfMajorTraitsAllowed )
|
if ( bNumMajorTraitsCounted >= bMaxMajorTraits )
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user