mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
New Trait: SURVIVAL (new minor trait) gets the non-weapon parts of the ranger trait.
Requires GameDir >= r2213. git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7756 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+11
-10
@@ -2320,16 +2320,7 @@ void LoadSkillTraitsExternalSettings()
|
||||
gSkillTraitValues.ubRAPumpShotgunsAPsReduction = iniReader.ReadInteger("Ranger","PUMP_SHOTGUNS_APS_REDUCTION", 25, 0, 45);
|
||||
gSkillTraitValues.ubRAFiringSpeedBonusShotguns = iniReader.ReadInteger("Ranger","FIRING_SPEED_BONUS_SHOTGUNS", 10, 0, 45);
|
||||
gSkillTraitValues.ubRAAimClicksAdded = iniReader.ReadInteger("Ranger","POSSIBLE_AIM_CLICK_ADDED_SHOTGUNS", 1, 0, 3);
|
||||
gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot = iniReader.ReadInteger("Ranger","GROUP_TIME_SPENT_FOR_TRAVELLING_BY_FOOT_REDUCTION", 20, 0, 100);
|
||||
gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle = iniReader.ReadInteger("Ranger","GROUP_TIME_SPENT_FOR_TRAVELLING_IN_VEHICLE_REDUCTION", 10, 0, 100);
|
||||
gSkillTraitValues.ubRAMaxBonusesToTravelSpeed = iniReader.ReadInteger("Ranger","MAX_STACKABLE_LESS_TRAVEL_TIME_BONUSES", 2, 0, 20);
|
||||
gSkillTraitValues.ubRABreathForTravellingReduction = iniReader.ReadInteger("Ranger","ENERGY_SPENT_TRAVEL_REDUCTION", 30, 0, 100);
|
||||
gSkillTraitValues.ubRAWeatherPenaltiesReduction = iniReader.ReadInteger("Ranger","WEATHER_PENALTIES_REDUCTION", 50, 0, 100);
|
||||
//gSkillTraitValues.ubRACamoEffectivenessBonus = iniReader.ReadInteger("Ranger","CAMO_EFFECTIVENESS_BONUS_PERCENT", 10, 0, 100);
|
||||
gSkillTraitValues.ubRACamoWornountSpeedReduction = iniReader.ReadInteger("Ranger","CAMO_WORNOUT_SPEED_REDUCTION", 50, 0, 100);
|
||||
gSkillTraitValues.usTrackerMaxRange = iniReader.ReadInteger( "Ranger", "TRACKER_MAX_RANGE", 30, 0, 50 );
|
||||
gSkillTraitValues.usTrackerAbility = iniReader.ReadInteger( "Ranger", "TRACKER_ABILITY", 30, 0, 50 );
|
||||
|
||||
|
||||
// GUNSLINGER
|
||||
gSkillTraitValues.ubGSFiringSpeedBonusPistols = iniReader.ReadInteger("Gunslinger","FIRING_SPEED_BONUS_PISTOLS", 15, 0, 45);
|
||||
gSkillTraitValues.ubGSEffectiveRangeBonusPistols = iniReader.ReadInteger("Gunslinger","FEFFECTIVE_RANGE_BONUS_PISTOLS", 10, 0, 100);
|
||||
@@ -2531,6 +2522,16 @@ void LoadSkillTraitsExternalSettings()
|
||||
|
||||
gSkillTraitValues.fSNTPrisonSnitchInterrogationMultiplier = iniReader.ReadFloat("Snitch","PRISON_SNITCH_INTERROGATION_MULTIPLIER", 3.0, 0.0, 10.0);
|
||||
gSkillTraitValues.fSNTPrisonSnitchGuardStrengthMultiplier = iniReader.ReadFloat("Snitch","PRISON_SNITCH_GUARD_STRENGTH_MULTIPLIER", 3.0, 0.0, 10.0);
|
||||
|
||||
// Flugente: SURVIVAL
|
||||
gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_BY_FOOT_REDUCTION", 20, 0, 100 );
|
||||
gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle = iniReader.ReadInteger( "Survival", "GROUP_TIME_SPENT_FOR_TRAVELLING_IN_VEHICLE_REDUCTION", 10, 0, 100 );
|
||||
gSkillTraitValues.ubSVMaxBonusesToTravelSpeed = iniReader.ReadInteger( "Survival", "MAX_STACKABLE_LESS_TRAVEL_TIME_BONUSES", 2, 0, 20 );
|
||||
gSkillTraitValues.ubSVBreathForTravellingReduction = iniReader.ReadInteger( "Survival", "ENERGY_SPENT_TRAVEL_REDUCTION", 30, 0, 100 );
|
||||
gSkillTraitValues.ubSVWeatherPenaltiesReduction = iniReader.ReadInteger( "Survival", "WEATHER_PENALTIES_REDUCTION", 50, 0, 100 );
|
||||
gSkillTraitValues.ubSVCamoWornountSpeedReduction = iniReader.ReadInteger( "Survival", "CAMO_WORNOUT_SPEED_REDUCTION", 50, 0, 100 );
|
||||
gSkillTraitValues.usSVTrackerMaxRange = iniReader.ReadInteger( "Survival", "TRACKER_MAX_RANGE", 30, 0, 50 );
|
||||
gSkillTraitValues.usSVTrackerAbility = iniReader.ReadInteger( "Survival", "TRACKER_ABILITY", 30, 0, 50 );
|
||||
}
|
||||
//DBrot: Grids
|
||||
void LoadModSettings(){
|
||||
|
||||
+11
-11
@@ -1614,17 +1614,8 @@ typedef struct
|
||||
UINT8 ubRABonusCtHRifles;
|
||||
UINT8 ubRABonusCtHShotguns;
|
||||
UINT8 ubRAPumpShotgunsAPsReduction;
|
||||
UINT8 ubRAGroupTimeSpentForTravellingFoot;
|
||||
UINT8 ubRAGroupTimeSpentForTravellingVehicle;
|
||||
UINT8 ubRAMaxBonusesToTravelSpeed;
|
||||
UINT8 ubRABreathForTravellingReduction;
|
||||
UINT8 ubRAWeatherPenaltiesReduction;
|
||||
//UINT8 ubRACamoEffectivenessBonus;
|
||||
UINT8 ubRACamoWornountSpeedReduction;
|
||||
UINT8 ubRAFiringSpeedBonusShotguns;
|
||||
UINT8 ubRAAimClicksAdded;
|
||||
UINT16 usTrackerMaxRange;
|
||||
UINT8 usTrackerAbility;
|
||||
|
||||
// GUNSLINGER
|
||||
UINT8 ubGSFiringSpeedBonusPistols;
|
||||
@@ -1809,8 +1800,7 @@ typedef struct
|
||||
INT8 sVOListeningHearingBonus;
|
||||
BOOLEAN fVOJammingBlocksRemoteBombs;
|
||||
BOOLEAN fVOEnemyVOSetsOffRemoteBombs;
|
||||
|
||||
|
||||
|
||||
// SNITCH
|
||||
UINT8 ubSNTBaseChance; // Base chance that snitch will inform about certain event (in percents)
|
||||
FLOAT fSNTMercOpinionAboutSnitchBonusModifier; // How much chance is influenced by relation between snitch and target
|
||||
@@ -1824,6 +1814,16 @@ typedef struct
|
||||
UINT8 ubSNTHearingRangeBonus; // Hearing range bonus
|
||||
FLOAT fSNTPrisonSnitchInterrogationMultiplier; // Undercover snitch interrogation effectivness multiplier (compared to normal interrogation)
|
||||
FLOAT fSNTPrisonSnitchGuardStrengthMultiplier; // Undercover snitch guarding effectivness multiplier (compared to normal guards)
|
||||
|
||||
// SURVIVAL
|
||||
UINT8 ubSVGroupTimeSpentForTravellingFoot;
|
||||
UINT8 ubSVGroupTimeSpentForTravellingVehicle;
|
||||
UINT8 ubSVMaxBonusesToTravelSpeed;
|
||||
UINT8 ubSVBreathForTravellingReduction;
|
||||
UINT8 ubSVWeatherPenaltiesReduction;
|
||||
UINT8 ubSVCamoWornountSpeedReduction;
|
||||
UINT16 usSVTrackerMaxRange;
|
||||
UINT8 usSVTrackerAbility;
|
||||
} SKILL_TRAIT_VALUES;
|
||||
|
||||
// HEADROCK HAM 4: Constants used as coefficients by the various parts of the new CTH system.
|
||||
|
||||
@@ -501,7 +501,7 @@ void AssignBackgroundHelpText( UINT16 ubNumber, MOUSE_REGION* pMouseregion )
|
||||
}
|
||||
else if ( BG_TRACKER_ABILITY == i && zBackground[ubNumber].value[i] )
|
||||
{
|
||||
swprintf( atStr, szBackgroundText_Value[i], (UINT16)((gSkillTraitValues.usTrackerMaxRange * zBackground[ubNumber].value[i]) / 100) );
|
||||
swprintf( atStr, szBackgroundText_Value[i], (UINT16)((gSkillTraitValues.usSVTrackerMaxRange * zBackground[ubNumber].value[i]) / 100) );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
else if ( zBackground[ ubNumber ].value[i] )
|
||||
@@ -611,7 +611,7 @@ BOOLEAN IsBackGroundAllowed( UINT16 ubNumber )
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( SkillsList[0] == RANGER_NT || SkillsList[1] == RANGER_NT || SkillsList[2] == RANGER_NT )
|
||||
if ( SkillsList[0] == SURVIVAL_NT || SkillsList[1] == SURVIVAL_NT || SkillsList[2] == SURVIVAL_NT )
|
||||
{
|
||||
if ( zBackground[ ubNumber ].value[BG_PERC_CAMO] < 0 )
|
||||
return FALSE;
|
||||
|
||||
@@ -301,24 +301,20 @@ void AddSkillToSkillList( INT8 bSkill )
|
||||
SkillsList[ iLastElementInSkillsList ] = ( INT32 )bSkill;
|
||||
|
||||
// increment attitude list counter
|
||||
iLastElementInSkillsList++;
|
||||
++iLastElementInSkillsList;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Kaiden : Added to clear the list when first visiting the IMP homepage,
|
||||
// Or for each visit there after.
|
||||
void ClearAllSkillsList( void )
|
||||
{
|
||||
INT32 iLoop;
|
||||
|
||||
for ( iLoop = 0; iLoop < ATTITUDE_LIST_SIZE; iLoop++ ) // SANDRO - better clear everything to be sure
|
||||
for ( INT32 iLoop = 0; iLoop < ATTITUDE_LIST_SIZE; ++iLoop ) // SANDRO - better clear everything to be sure
|
||||
{
|
||||
SkillsList[ iLoop ] = 0;
|
||||
}
|
||||
|
||||
iLastElementInSkillsList = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -799,6 +799,10 @@ void GiveItemsToPC( UINT8 ubProfileId )
|
||||
{
|
||||
GiveIMPRandomItems(pProfile,IMP_RADIO_OPERATOR);
|
||||
}
|
||||
if ( PROFILE_HAS_SKILL_TRAIT( ubProfileId, SURVIVAL_NT ) )
|
||||
{
|
||||
GiveIMPRandomItems( pProfile, IMP_SURVIVAL );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -718,6 +718,7 @@ void CalculatePossibleItems()
|
||||
case IMP_SKILL_TRAITS_NEW_TEACHING: AddItemCategoryToPossibleGear( IMP_TEACHING ); break;
|
||||
case IMP_SKILL_TRAITS_NEW_SCOUTING: AddItemCategoryToPossibleGear( IMP_SCOUTING ); break;
|
||||
case IMP_SKILL_TRAITS_NEW_RADIO_OPERATOR: AddItemCategoryToPossibleGear( IMP_RADIO_OPERATOR ); break;
|
||||
case IMP_SKILL_TRAITS_NEW_SURVIVAL: AddItemCategoryToPossibleGear( IMP_SURVIVAL ); break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -74,6 +74,7 @@ UINT8 gusNewMinorTraitRemap[IMP_SKILL_TRAITS_NEW_NUMBER_MINOR_SKILLS] =
|
||||
TEACHING_NT, // IMP_SKILL_TRAITS_NEW_TEACHING
|
||||
SCOUTING_NT, // IMP_SKILL_TRAITS_NEW_SCOUTING
|
||||
RADIO_OPERATOR_NT, // IMP_SKILL_TRAITS_NEW_RADIO_OPERATOR
|
||||
SURVIVAL_NT, // IMP_SKILL_TRAITS_NEW_SURVIVAL
|
||||
NO_SKILLTRAIT_NT, // IMP_SKILL_TRAITS_NEW_MINOR_NONE
|
||||
};
|
||||
|
||||
@@ -462,7 +463,7 @@ void IMPMinorTraitDisplaySkills()
|
||||
usPosX = IMP_MINOR_TRAIT__LEFT_COLUMN_START_X + IMP_MINOR_TRAIT__TEXT_OFFSET_X;
|
||||
usPosY = IMP_MINOR_TRAIT__LEFT_COLUMN_START_Y + IMP_MINOR_TRAIT__TEXT_OFFSET_Y;
|
||||
|
||||
for( uiCnt=0; uiCnt<IMP_SKILL_TRAITS_NEW_NUMBER_MINOR_SKILLS; uiCnt++ )
|
||||
for( uiCnt=0; uiCnt<IMP_SKILL_TRAITS_NEW_NUMBER_MINOR_SKILLS; ++uiCnt )
|
||||
{
|
||||
usBoxPosX = usPosX - IMP_MINOR_TRAIT__GREY_BOX_OFFSET_X;
|
||||
usBoxPosY = usPosY - IMP_MINOR_TRAIT__GREY_BOX_OFFSET_Y;
|
||||
@@ -674,6 +675,10 @@ void AddSelectedMinorTraitsToSkillsList()
|
||||
case IMP_SKILL_TRAITS_NEW_RADIO_OPERATOR:
|
||||
AddSkillToSkillList( RADIO_OPERATOR_NT );
|
||||
break;
|
||||
|
||||
case IMP_SKILL_TRAITS_NEW_SURVIVAL:
|
||||
AddSkillToSkillList( SURVIVAL_NT );
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
|
||||
@@ -22,6 +22,7 @@ enum
|
||||
IMP_SKILL_TRAITS_NEW_TEACHING,
|
||||
IMP_SKILL_TRAITS_NEW_SCOUTING,
|
||||
IMP_SKILL_TRAITS_NEW_RADIO_OPERATOR, // added by Flugente
|
||||
IMP_SKILL_TRAITS_NEW_SURVIVAL, // added by Flugente
|
||||
//////
|
||||
IMP_SKILL_TRAITS_NEW_MINOR_NONE,
|
||||
IMP_SKILL_TRAITS_NEW_NUMBER_MINOR_SKILLS,
|
||||
|
||||
+280
-403
@@ -63,7 +63,7 @@
|
||||
|
||||
#define NEWTRAIT_EXPERT_OFFSET 12 // Flugente: offset between normal and expert trait strings
|
||||
|
||||
// Flugente: Due to the unfortunate nature of our enums, they do not match the trait numbers. We thus have to remap them when obtining their description
|
||||
// Flugente: Due to the unfortunate nature of our enums, they do not match the trait numbers. We thus have to remap them when obtaining their description
|
||||
UINT8 gusNewMajorTraitRemap[IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS] =
|
||||
{
|
||||
AUTO_WEAPONS_NT, // IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS
|
||||
@@ -121,13 +121,11 @@ void AddImpSkillTraitButtons();
|
||||
void HandleSkillTraitButtonStates( );
|
||||
void HandleIMPSkillTraitAnswers( UINT32 uiSkillPressed, BOOLEAN fSecondTrait );
|
||||
void IMPSkillTraitDisplaySkills();
|
||||
BOOLEAN ShouldTraitBeSkipped( UINT32 uiTrait );
|
||||
BOOLEAN ShouldTraitBeSkipped( UINT32 uiTrait );
|
||||
//void AddSelectedSkillsToSkillsList(); // SANDRO - second declaration not needed
|
||||
void HandleLastSelectedTraits( INT8 bNewTrait );
|
||||
INT8 GetLastSelectedSkill( void );
|
||||
BOOLEAN CameBackToSpecialtiesPageButNotFinished();
|
||||
|
||||
BOOLEAN DoesSkillHaveExpertLevel( UINT32 uiSkillTrait );
|
||||
INT8 GetLastSelectedSkill( void );
|
||||
BOOLEAN CameBackToSpecialtiesPageButNotFinished();
|
||||
|
||||
MOUSE_REGION gMR_SkillTraitHelpTextRegions[IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS];
|
||||
//ppp
|
||||
@@ -157,9 +155,7 @@ void EnterIMPSkillTrait( void )
|
||||
Assert( 0 );
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
giIMPSkillTraitFinsihButtonImage = LoadButtonImage( "LAPTOP\\button_5.sti" ,-1,0,-1,1,-1 );
|
||||
giIMPSkillTraitFinsihButton = CreateIconAndTextButton( giIMPSkillTraitFinsihButtonImage, pImpButtonText[ 24 ], FONT12ARIAL,
|
||||
FONT_WHITE, DEFAULT_SHADOW,
|
||||
@@ -167,9 +163,7 @@ void EnterIMPSkillTrait( void )
|
||||
TEXT_CJUSTIFIED,
|
||||
LAPTOP_SCREEN_UL_X + ( 350 ), LAPTOP_SCREEN_WEB_UL_Y + ( 340 ), BUTTON_TOGGLE, MSYS_PRIORITY_HIGH,
|
||||
BtnGenericMouseMoveButtonCallback, (GUI_CALLBACK)BtnIMPSkillTraitFinishCallback );
|
||||
|
||||
|
||||
|
||||
|
||||
SetButtonCursor( giIMPSkillTraitFinsihButton, CURSOR_WWW);
|
||||
|
||||
//if we are not DONE and are just reviewing
|
||||
@@ -193,7 +187,7 @@ void EnterIMPSkillTrait( void )
|
||||
// add regions for help texts
|
||||
UINT16 usPosX = IMP_SKILL_TRAIT__LEFT_COLUMN_START_X + 62;
|
||||
UINT16 usPosY = IMP_SKILL_TRAIT__LEFT_COLUMN_START_Y + 8;
|
||||
for( UINT32 uiCnt=0; uiCnt < (UINT8)( gGameOptions.fNewTraitSystem ? IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS : IMP_SKILL_TRAITS__NUMBER_SKILLS ); uiCnt++ )
|
||||
for( UINT32 uiCnt=0; uiCnt < (UINT8)( gGameOptions.fNewTraitSystem ? IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS : IMP_SKILL_TRAITS__NUMBER_SKILLS ); ++uiCnt )
|
||||
{
|
||||
if( ShouldTraitBeSkipped( uiCnt ) )
|
||||
{
|
||||
@@ -327,7 +321,7 @@ void AddImpSkillTraitButtons()
|
||||
usPosX = IMP_SKILL_TRAIT__LEFT_COLUMN_START_X;
|
||||
usPosY = IMP_SKILL_TRAIT__LEFT_COLUMN_START_Y;
|
||||
|
||||
for(iCnt = 0; iCnt < (iCntMax); iCnt++)
|
||||
for(iCnt = 0; iCnt < iCntMax; ++iCnt)
|
||||
{
|
||||
//reset
|
||||
giIMPSkillTraitAnswerButton[iCnt] = -1;
|
||||
@@ -392,7 +386,7 @@ void AddImpSkillTraitButtons()
|
||||
usPosX = IMP_SKILL_TRAIT__LEFT_COLUMN_START_X + 26;
|
||||
usPosY = IMP_SKILL_TRAIT__LEFT_COLUMN_START_Y;
|
||||
|
||||
for(iCnt = 0; iCnt < (iCntMax); iCnt++)
|
||||
for(iCnt = 0; iCnt < iCntMax; ++iCnt)
|
||||
{
|
||||
//reset
|
||||
giIMPSkillTraitAnswerButton2[iCnt] = -1;
|
||||
@@ -527,7 +521,7 @@ void HandleIMPSkillTraitAnswers( UINT32 uiSkillPressed, BOOLEAN fSecondTrait )
|
||||
}
|
||||
}
|
||||
// if cannot have expert level of skill, don't continue
|
||||
else if ( gfSkillTraitQuestions2[ uiSkillPressed ] && !DoesSkillHaveExpertLevel( uiSkillPressed ) )
|
||||
else if ( gfSkillTraitQuestions2[uiSkillPressed] && !TwoStagedTrait( uiSkillPressed ) )
|
||||
{
|
||||
//dont need to do anything
|
||||
return;
|
||||
@@ -559,7 +553,7 @@ void HandleIMPSkillTraitAnswers( UINT32 uiSkillPressed, BOOLEAN fSecondTrait )
|
||||
if ( gSkillTraitValues.ubNumberOfMajorTraitsAllowedForIMP == 2 )
|
||||
{
|
||||
//loop through all the skill and reset them
|
||||
for( uiCnt=0; uiCnt<uiCntMax; uiCnt++ )
|
||||
for( uiCnt=0; uiCnt<uiCntMax; ++uiCnt )
|
||||
{
|
||||
gfSkillTraitQuestions[ uiCnt ] = FALSE;
|
||||
}
|
||||
@@ -629,7 +623,7 @@ void HandleIMPSkillTraitAnswers( UINT32 uiSkillPressed, BOOLEAN fSecondTrait )
|
||||
gfSkillTraitQuestions2[ uiSkillPressed ] = FALSE;
|
||||
|
||||
BOOLEAN fNoSkillSelected = TRUE;
|
||||
for ( uiCnt=0; uiCnt<(uiCntMax-1); uiCnt++ )
|
||||
for ( uiCnt=0; uiCnt<(uiCntMax-1); ++uiCnt )
|
||||
{
|
||||
if ( gfSkillTraitQuestions2[ uiCnt ] == TRUE )
|
||||
fNoSkillSelected = FALSE;
|
||||
@@ -641,7 +635,7 @@ void HandleIMPSkillTraitAnswers( UINT32 uiSkillPressed, BOOLEAN fSecondTrait )
|
||||
}
|
||||
}
|
||||
// if cannot have expert level of skill, don't continue
|
||||
else if ( gfSkillTraitQuestions[ uiSkillPressed ] && !DoesSkillHaveExpertLevel( uiSkillPressed ) )
|
||||
else if ( gfSkillTraitQuestions[uiSkillPressed] && !TwoStagedTrait( uiSkillPressed ) )
|
||||
{
|
||||
//dont need to do anything
|
||||
return;
|
||||
@@ -753,7 +747,7 @@ INT8 CountNumSkillTraitsSelected( BOOLEAN fIncludeNoneSkill )
|
||||
else
|
||||
uiCntMax = IMP_SKILL_TRAITS__NUMBER_SKILLS;
|
||||
|
||||
for( uiCnt=0; uiCnt < uiCntMax; uiCnt++ )
|
||||
for( uiCnt=0; uiCnt < uiCntMax; ++uiCnt )
|
||||
{
|
||||
if( !fIncludeNoneSkill && (uiCnt == (uiCntMax-1)) )
|
||||
continue;
|
||||
@@ -761,11 +755,11 @@ INT8 CountNumSkillTraitsSelected( BOOLEAN fIncludeNoneSkill )
|
||||
//if the skill is selected ( ie depressed )
|
||||
if( gfSkillTraitQuestions[ uiCnt ] )
|
||||
{
|
||||
iNumberSkills++;
|
||||
++iNumberSkills;
|
||||
}
|
||||
if( gfSkillTraitQuestions2[ uiCnt ] )
|
||||
{
|
||||
iNumberSkills++;
|
||||
++iNumberSkills;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -775,9 +769,7 @@ INT8 CountNumSkillTraitsSelected( BOOLEAN fIncludeNoneSkill )
|
||||
|
||||
void HandleSkillTraitButtonStates( )
|
||||
{
|
||||
INT32 uiCnt;
|
||||
|
||||
for( uiCnt=0; uiCnt<(gGameOptions.fNewTraitSystem ? IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS : IMP_SKILL_TRAITS__NUMBER_SKILLS); uiCnt++ )
|
||||
for ( INT32 uiCnt = 0; uiCnt<(gGameOptions.fNewTraitSystem ? IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS : IMP_SKILL_TRAITS__NUMBER_SKILLS); ++uiCnt )
|
||||
{
|
||||
//if the merc is a FEMALE, skip this skill cause there isnt any fenmal martial artists
|
||||
if( ShouldTraitBeSkipped( uiCnt ) )
|
||||
@@ -1016,34 +1008,6 @@ BOOLEAN ShouldTraitBeSkipped( UINT32 uiTrait )
|
||||
}
|
||||
}
|
||||
|
||||
BOOLEAN DoesSkillHaveExpertLevel( UINT32 uiSkillTrait )
|
||||
{
|
||||
if( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
// WANNE: Yes we have no animation, but the Trait bonus also works with the missing animations.
|
||||
/*
|
||||
// WANNE: No material arts allowed for big body types and females, because we don't have a material art animation on big body types!
|
||||
if (uiSkillTrait == IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS && (!fCharacterIsMale || bBigBodySelected()))
|
||||
return (FALSE);
|
||||
*/
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (uiSkillTrait == IMP_SKILL_TRAITS__ELECTRONICS ||
|
||||
uiSkillTrait == IMP_SKILL_TRAITS__AMBIDEXTROUS ||
|
||||
uiSkillTrait == IMP_SKILL_TRAITS__CAMO )
|
||||
{
|
||||
return( FALSE );
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
return( TRUE );
|
||||
}
|
||||
|
||||
void AddSelectedSkillsToSkillsList()
|
||||
{
|
||||
INT32 uiCnt;
|
||||
@@ -1346,44 +1310,36 @@ INT32 StrengthRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
return (70);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
return (55);
|
||||
else
|
||||
return (40);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
return (40);
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
minreq = max( minreq, 55 );
|
||||
else
|
||||
minreq = max( minreq, 40 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 AgilityRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1392,44 +1348,36 @@ INT32 AgilityRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
return (70);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 DexterityRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1438,88 +1386,68 @@ INT32 DexterityRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
return (70);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
return (70);
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 HealthRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1528,44 +1456,36 @@ INT32 HealthRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
return (70);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 LeadershipRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1574,43 +1494,34 @@ INT32 LeadershipRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_SQUADLEADER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_SQUADLEADER] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
return (65);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_SQUADLEADER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_SQUADLEADER] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
return (50);
|
||||
else
|
||||
return (35);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_COVERT ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_COVERT ])
|
||||
return (45);
|
||||
else
|
||||
return (30);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
return (35);
|
||||
}
|
||||
else if ( gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_COVERT] )
|
||||
{
|
||||
return (30);
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
minreq = max( minreq, 50 );
|
||||
else
|
||||
minreq = max( minreq, 35 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_COVERT] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_COVERT] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_COVERT] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_COVERT] )
|
||||
minreq = max( minreq, 45 );
|
||||
else
|
||||
minreq = max( minreq, 30 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 WisdomRequiredDueToMajorSkills( void )
|
||||
@@ -1621,73 +1532,60 @@ INT32 WisdomRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_SQUADLEADER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_SQUADLEADER] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
return (75);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_SQUADLEADER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_SQUADLEADER] )
|
||||
minreq = max( minreq, 75 );
|
||||
else
|
||||
return (60);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_COVERT ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_COVERT ])
|
||||
return (75);
|
||||
else
|
||||
return (60);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
return (70);
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
return (70);
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
return (65);
|
||||
else
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_SQUADLEADER ])
|
||||
{
|
||||
return (60);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
{
|
||||
return (50);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 60 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_COVERT] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_COVERT] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_COVERT] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_COVERT] )
|
||||
minreq = max( minreq, 75 );
|
||||
else
|
||||
minreq = max( minreq, 60 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
minreq = max( minreq, 65 );
|
||||
else
|
||||
minreq = max( minreq, 50 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 MarksmanshipRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1696,55 +1594,44 @@ INT32 MarksmanshipRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
return (80);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_PROF_SNIPER] )
|
||||
minreq = max( minreq, 80 );
|
||||
else
|
||||
return (65);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
return (70);
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
return (70);
|
||||
else
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_PROF_SNIPER ])
|
||||
{
|
||||
return (65);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_RANGER ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_GUNSLINGER ])
|
||||
{
|
||||
return (55);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 65 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_RANGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_RANGER] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_GUNSLINGER] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_GUNSLINGER] )
|
||||
minreq = max( minreq, 70 );
|
||||
else
|
||||
minreq = max( minreq, 55 );
|
||||
}
|
||||
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 MechanicalRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1753,22 +1640,20 @@ INT32 MechanicalRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
return (60);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 MedicalRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1777,22 +1662,20 @@ INT32 MedicalRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
return (60);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_DOCTOR] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_DOCTOR] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_DOCTOR ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
return minreq;
|
||||
}
|
||||
|
||||
INT32 ExplosivesRequiredDueToMajorSkills( void )
|
||||
{
|
||||
// Only for new trait system
|
||||
@@ -1801,30 +1684,24 @@ INT32 ExplosivesRequiredDueToMajorSkills( void )
|
||||
return 0;
|
||||
}
|
||||
|
||||
INT32 minreq = 0;
|
||||
|
||||
// Check first skill trait (plus second for double trait)
|
||||
if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
return (60);
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
return (60);
|
||||
else
|
||||
return (45);
|
||||
}
|
||||
// Check the second skill trait
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS ])
|
||||
{
|
||||
return (45);
|
||||
}
|
||||
else if (gfSkillTraitQuestions2[ IMP_SKILL_TRAITS_NEW_TECHNICIAN ])
|
||||
{
|
||||
return (45);
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] || gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
{
|
||||
if ( gfSkillTraitQuestions[IMP_SKILL_TRAITS_NEW_TECHNICIAN] && gfSkillTraitQuestions2[IMP_SKILL_TRAITS_NEW_TECHNICIAN] )
|
||||
minreq = max( minreq, 60 );
|
||||
else
|
||||
minreq = max( minreq, 45 );
|
||||
}
|
||||
|
||||
return minreq;
|
||||
}
|
||||
|
||||
@@ -4695,6 +4695,12 @@ void HandleIMPCharProfileResultsMessage( void)
|
||||
wcscpy(pString, MissingIMPSkillsDescriptions[12]);
|
||||
AddEmailRecordToList( pString );
|
||||
}
|
||||
// Survival
|
||||
if ( ProfileHasSkillTrait( iCurrentIMPSlot, SURVIVAL_NT ) > 0 )
|
||||
{
|
||||
wcscpy( pString, MissingIMPSkillsDescriptions[13] );
|
||||
AddEmailRecordToList( pString );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
+38
-36
@@ -7453,42 +7453,6 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve
|
||||
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[6], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[7], ( gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRABreathForTravellingReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[8], ( gSkillTraitValues.ubRABreathForTravellingReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAWeatherPenaltiesReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[9], ( gSkillTraitValues.ubRAWeatherPenaltiesReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
//if( gSkillTraitValues.ubRACamoEffectivenessBonus != 0 )
|
||||
//{
|
||||
// swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[10], ( gSkillTraitValues.ubRACamoEffectivenessBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
// wcscat( apStr, atStr );
|
||||
//}
|
||||
if( gSkillTraitValues.ubRACamoWornountSpeedReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[11], ( gSkillTraitValues.ubRACamoWornountSpeedReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
if ( gSkillTraitValues.usTrackerMaxRange && gSkillTraitValues.usTrackerAbility )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[12], (gSkillTraitValues.usTrackerAbility * (fExpertLevel ? 2 : 1) * gSkillTraitValues.usTrackerMaxRange / 100) );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
@@ -8298,6 +8262,44 @@ void AssignPersonnelSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLeve
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SURVIVAL_NT:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
|
||||
if ( gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[0], gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot, sSpecialCharacters[0] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if ( gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[1], gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle, sSpecialCharacters[0] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if ( gSkillTraitValues.ubSVBreathForTravellingReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[2], gSkillTraitValues.ubSVBreathForTravellingReduction, sSpecialCharacters[0] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if ( gSkillTraitValues.ubSVWeatherPenaltiesReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[3], gSkillTraitValues.ubSVWeatherPenaltiesReduction, sSpecialCharacters[0] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
if ( gSkillTraitValues.ubSVCamoWornountSpeedReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[4], gSkillTraitValues.ubSVCamoWornountSpeedReduction, sSpecialCharacters[0] );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
if ( gSkillTraitValues.usSVTrackerMaxRange && gSkillTraitValues.usSVTrackerAbility )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSurvival[5], (gSkillTraitValues.usSVTrackerAbility * gSkillTraitValues.usSVTrackerMaxRange / 100) );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case NO_SKILLTRAIT_NT:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
|
||||
@@ -5261,9 +5261,9 @@ void FatigueCharacter( SOLDIERTYPE *pSoldier )
|
||||
if( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
// bonus for ranger travelling between sectors
|
||||
if ( pSoldier->flags.fBetweenSectors && HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( pSoldier->flags.fBetweenSectors && HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
bMaxBreathLoss = (bMaxBreathLoss * (100 - gSkillTraitValues.ubRABreathForTravellingReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ) ) / 100);
|
||||
bMaxBreathLoss = (bMaxBreathLoss * (100 - gSkillTraitValues.ubSVBreathForTravellingReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT )) / 100);
|
||||
}
|
||||
// primitive people get exhausted slower
|
||||
if ( gMercProfiles[pSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_PRIMITIVE )
|
||||
|
||||
@@ -1280,10 +1280,9 @@ void HourlyCamouflageUpdate( void )
|
||||
// first limit camo to valid values
|
||||
pSoldier->bCamo = __min( gGameExternalOptions.bCamoKitArea, pSoldier->bCamo );
|
||||
|
||||
if (HAS_SKILL_TRAIT( pSoldier, RANGER_NT ))
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
pSoldier->bCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
// pSoldier->bCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
pSoldier->bCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
pSoldier->bCamo -= 1; // 2
|
||||
@@ -1292,7 +1291,6 @@ void HourlyCamouflageUpdate( void )
|
||||
{
|
||||
pSoldier->bCamo = 0;
|
||||
camoWoreOff = TRUE;
|
||||
// ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, Message[STR_CAMMO_WORN_OFF], pSoldier->name );
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, Message[STR_JUNGLE_WORN_OFF], pSoldier->name );
|
||||
|
||||
if (gGameExternalOptions.fShowCamouflageFaces == TRUE )
|
||||
@@ -1309,10 +1307,9 @@ void HourlyCamouflageUpdate( void )
|
||||
// first limit camo to valid values
|
||||
pSoldier->urbanCamo = __min( gGameExternalOptions.bCamoKitArea, pSoldier->urbanCamo );
|
||||
|
||||
if (HAS_SKILL_TRAIT( pSoldier, RANGER_NT ))
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
pSoldier->urbanCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
// pSoldier->urbanCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
pSoldier->urbanCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
pSoldier->urbanCamo -= 1; // 2
|
||||
@@ -1337,10 +1334,9 @@ void HourlyCamouflageUpdate( void )
|
||||
// first limit camo to valid values
|
||||
pSoldier->desertCamo = __min( gGameExternalOptions.bCamoKitArea, pSoldier->desertCamo );
|
||||
|
||||
if (HAS_SKILL_TRAIT( pSoldier, RANGER_NT ))
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
pSoldier->desertCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
// pSoldier->desertCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
pSoldier->desertCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
pSoldier->desertCamo -= 1; // 2
|
||||
@@ -1365,10 +1361,9 @@ void HourlyCamouflageUpdate( void )
|
||||
// first limit camo to valid values
|
||||
pSoldier->snowCamo = __min( gGameExternalOptions.bCamoKitArea, pSoldier->snowCamo );
|
||||
|
||||
if (HAS_SKILL_TRAIT( pSoldier, RANGER_NT ))
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
pSoldier->snowCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
// pSoldier->snowCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
pSoldier->snowCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
pSoldier->snowCamo -= 1; // 2
|
||||
|
||||
@@ -3465,7 +3465,7 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
||||
if ( pGroup->usGroupTeam == OUR_TEAM && !fAir && gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
// see if we have any ranger here
|
||||
UINT8 ubRangerHere = 0;
|
||||
UINT8 ubSurvivalistHere = 0;
|
||||
UINT8 ustravelbackground_foot = 0;
|
||||
UINT8 ustravelbackground_car = 0;
|
||||
UINT8 ustravelbackground_air = 0;
|
||||
@@ -3474,8 +3474,8 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
||||
while( curr )
|
||||
{
|
||||
pSoldier = curr->pSoldier;
|
||||
if( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ))
|
||||
ubRangerHere += NUM_SKILL_TRAITS( pSoldier, RANGER_NT );
|
||||
|
||||
ubSurvivalistHere += NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT );
|
||||
|
||||
// Flugente: backgrounds
|
||||
ustravelbackground_foot = max(ustravelbackground_foot, pSoldier->GetBackgroundValue(BG_TRAVEL_FOOT));
|
||||
@@ -3485,16 +3485,16 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
||||
curr = curr->next;
|
||||
}
|
||||
// yes, we have...
|
||||
if( ubRangerHere || ustravelbackground_foot || ustravelbackground_car || ustravelbackground_air )
|
||||
if ( ubSurvivalistHere || ustravelbackground_foot || ustravelbackground_car || ustravelbackground_air )
|
||||
{
|
||||
// no more than certain number of simultaneous bonuses
|
||||
ubRangerHere = min( gSkillTraitValues.ubRAMaxBonusesToTravelSpeed, ubRangerHere );
|
||||
ubSurvivalistHere = min( gSkillTraitValues.ubSVMaxBonusesToTravelSpeed, ubSurvivalistHere );
|
||||
|
||||
// on foot, the bonus should be higher
|
||||
if( fFoot )
|
||||
{
|
||||
// however, we cannot be quicker than the helicopter
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - ( ubRangerHere * gSkillTraitValues.ubRAGroupTimeSpentForTravellingFoot )) / 100));
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - (ubSurvivalistHere * gSkillTraitValues.ubSVGroupTimeSpentForTravellingFoot)) / 100) );
|
||||
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - ustravelbackground_foot) / 100));
|
||||
}
|
||||
@@ -3502,7 +3502,7 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
||||
else if ( fAir )
|
||||
{
|
||||
// however, we cannot be quicker than the helicopter
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - ( ubRangerHere * gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle )) / 100));
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - (ubSurvivalistHere * gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle)) / 100) );
|
||||
|
||||
// yes, this background allows us to fly faster :-)
|
||||
iBestTraverseTime = max( 9, (iBestTraverseTime * (100 - ustravelbackground_air) / 100));
|
||||
@@ -3510,7 +3510,7 @@ INT32 GetSectorMvtTimeForGroup( UINT8 ubSector, UINT8 ubDirection, GROUP *pGroup
|
||||
else
|
||||
{
|
||||
// however, we cannot be quicker than the helicopter
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - ( ubRangerHere * gSkillTraitValues.ubRAGroupTimeSpentForTravellingVehicle )) / 100));
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - (ubSurvivalistHere * gSkillTraitValues.ubSVGroupTimeSpentForTravellingVehicle)) / 100) );
|
||||
|
||||
iBestTraverseTime = max( 10, (iBestTraverseTime * (100 - ustravelbackground_car) / 100));
|
||||
}
|
||||
|
||||
@@ -1456,12 +1456,12 @@ void CalculateTrackerRange( )
|
||||
if ( gusSelectedSoldier == NOBODY || !GetSoldier( &pSoldier, gusSelectedSoldier ) || !pSoldier->bInSector )
|
||||
return;
|
||||
|
||||
FLOAT trackerskill = (FLOAT)(NUM_SKILL_TRAITS( pSoldier, RANGER_NT ) * gSkillTraitValues.usTrackerAbility + pSoldier->GetBackgroundValue( BG_TRACKER_ABILITY )) / 100.0f;
|
||||
FLOAT trackerskill = (FLOAT)(NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) * gSkillTraitValues.usSVTrackerAbility + pSoldier->GetBackgroundValue( BG_TRACKER_ABILITY )) / 100.0f;
|
||||
|
||||
if ( trackerskill < 0.01f )
|
||||
return;
|
||||
|
||||
UINT16 range = gSkillTraitValues.usTrackerMaxRange * trackerskill;
|
||||
UINT16 range = gSkillTraitValues.usSVTrackerMaxRange * trackerskill;
|
||||
|
||||
const INT32& sSelectedSoldierGridNo = MercPtrs[gusSelectedSoldier]->sGridNo;
|
||||
|
||||
|
||||
+2
-2
@@ -245,7 +245,7 @@ INT32 InternalInitFace( UINT8 usMercProfileID, UINT8 ubSoldierID, UINT32 uiInitF
|
||||
// SANDRO - old/new traits check (I am not sure if this is used at all)
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
if ( ProfileHasSkillTrait( TEX_UB, RANGER_NT ) > 0 )
|
||||
if ( ProfileHasSkillTrait( TEX_UB, SURVIVAL_NT ) > 0 )
|
||||
{
|
||||
sprintf( VObjectDesc.ImageFile, "FACES\\B%dc.sti", TEX_UB );
|
||||
}
|
||||
@@ -668,7 +668,7 @@ void GetFaceRelativeCoordinates( FACETYPE *pFace, UINT16 *pusEyesX, UINT16 *pusE
|
||||
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
if( usMercProfileID == TEX_UB && ( gMercProfiles[ TEX_UB ].bSkillTraits[0] == RANGER_NT || gMercProfiles[ TEX_UB ].bSkillTraits[1] == RANGER_NT ) )
|
||||
if( usMercProfileID == TEX_UB && ( gMercProfiles[ TEX_UB ].bSkillTraits[0] == SURVIVAL_NT || gMercProfiles[ TEX_UB ].bSkillTraits[1] == SURVIVAL_NT ) )
|
||||
{
|
||||
usEyesX = 13;
|
||||
usEyesY = 34;
|
||||
|
||||
@@ -1880,6 +1880,7 @@ enum
|
||||
|
||||
// Flugente: added radio operator
|
||||
IMP_RADIO_OPERATOR,
|
||||
IMP_SURVIVAL,
|
||||
|
||||
// silversurfer: added sidearm for standard weapons. Special weapons should come from traits.
|
||||
IMP_SIDEARM,
|
||||
|
||||
+8
-50
@@ -9159,24 +9159,15 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
// and 0% //1% for medium water
|
||||
if ( pSoldier->bCamo > 0 )
|
||||
{
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
{
|
||||
pSoldier->bCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
//pSoldier->bCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}
|
||||
/* else
|
||||
{
|
||||
pSoldier->bCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}*/
|
||||
pSoldier->bCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->bCamo = __max( 0, pSoldier->bCamo - 1 ); // 2
|
||||
//else
|
||||
// pSoldier->bCamo = __max( 0, pSoldier->bCamo - 1 );
|
||||
}
|
||||
|
||||
if ( pSoldier->bCamo <= 0 )
|
||||
@@ -9189,24 +9180,15 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
if ( pSoldier->urbanCamo > 0 )
|
||||
{
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
{
|
||||
pSoldier->urbanCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
//pSoldier->urbanCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}
|
||||
/* else
|
||||
{
|
||||
pSoldier->urbanCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}*/
|
||||
pSoldier->urbanCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->urbanCamo = __max( 0, pSoldier->urbanCamo - 1); // 2
|
||||
//else
|
||||
// pSoldier->urbanCamo = __max( 0, pSoldier->urbanCamo - 1);
|
||||
}
|
||||
|
||||
if ( pSoldier->urbanCamo <= 0 )
|
||||
@@ -9218,17 +9200,10 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
if ( pSoldier->desertCamo > 0 )
|
||||
{
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
{
|
||||
pSoldier->desertCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
//pSoldier->desertCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}
|
||||
/* else
|
||||
{
|
||||
pSoldier->desertCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}*/
|
||||
pSoldier->desertCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -9247,24 +9222,15 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
}
|
||||
if ( pSoldier->snowCamo > 0 )
|
||||
{
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
{
|
||||
pSoldier->snowCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
//pSoldier->snowCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}
|
||||
/* else
|
||||
{
|
||||
pSoldier->snowCamo -= (Chance(__max(0, 100 - gSkillTraitValues.ubRACamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ? 1 : 0 );
|
||||
}*/
|
||||
pSoldier->snowCamo -= (Chance( __max( 0, 100 - gSkillTraitValues.ubSVCamoWornountSpeedReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ) ) ) ? 1 : 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->snowCamo = __max( 0, pSoldier->snowCamo - 1); // 2
|
||||
//else
|
||||
// pSoldier->snowCamo = __max( 0, pSoldier->snowCamo - 1);
|
||||
}
|
||||
|
||||
if ( pSoldier->snowCamo <= 0 )
|
||||
@@ -9283,8 +9249,6 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->bCamo = __max( 0, pSoldier->bCamo - 1 ); // 2
|
||||
//else
|
||||
// pSoldier->bCamo = __max( 0, pSoldier->bCamo - 1 );
|
||||
|
||||
if ( (pSoldier->bCamo)== 0)
|
||||
{
|
||||
@@ -9297,8 +9261,6 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->urbanCamo = __max( 0, pSoldier->urbanCamo - 1); // 2
|
||||
//else
|
||||
// pSoldier->urbanCamo = __max( 0, pSoldier->urbanCamo - 1);
|
||||
|
||||
if ( (pSoldier->urbanCamo)== 0)
|
||||
{
|
||||
@@ -9310,8 +9272,6 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->desertCamo = __max( 0, pSoldier->desertCamo - 1); // 2
|
||||
//else
|
||||
// pSoldier->desertCamo = __max( 0, pSoldier->desertCamo - 1);
|
||||
|
||||
if ( (pSoldier->desertCamo)== 0)
|
||||
{
|
||||
@@ -9323,8 +9283,6 @@ void WaterDamage( SOLDIERTYPE *pSoldier )
|
||||
{
|
||||
if ( pSoldier->MercInDeepWater( ) )
|
||||
pSoldier->snowCamo = __max( 0, pSoldier->snowCamo - 1); // 2
|
||||
//else
|
||||
// pSoldier->snowCamo = __max( 0, pSoldier->snowCamo - 1);
|
||||
|
||||
if ( (pSoldier->snowCamo)== 0)
|
||||
{
|
||||
|
||||
+2
-2
@@ -1541,10 +1541,10 @@ INT16 GetBreathPerAP( SOLDIERTYPE *pSoldier, UINT16 usAnimState )
|
||||
if( sBreathPerAP < 0 && ( pSoldier->pathing.bLevel || !FindStructure( pSoldier->sGridNo, STRUCTURE_ROOF ) ) && pSoldier->bBreath > 1)
|
||||
{
|
||||
// Added a feature to reduce rain effect on regaining breath with Ranger trait - SANDRO
|
||||
if( HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) && ( gGameOptions.fNewTraitSystem ))
|
||||
if ( HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) && (gGameOptions.fNewTraitSystem) )
|
||||
{
|
||||
INT16 sBreathGainPenalty = 0;
|
||||
sBreathGainPenalty = (INT16)((gGameExternalOptions.ubBreathGainReductionPerRainIntensity * (100 - gSkillTraitValues.ubRAWeatherPenaltiesReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) / 100);
|
||||
sBreathGainPenalty = (INT16)((gGameExternalOptions.ubBreathGainReductionPerRainIntensity * (100 - gSkillTraitValues.ubSVWeatherPenaltiesReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT ))) / 100);
|
||||
sBreathGainPenalty = min( max( 0, sBreathGainPenalty ), 100); // keep it 0-100%
|
||||
sBreathPerAP -= (INT16)( sBreathPerAP * gbCurrentRainIntensity * sBreathGainPenalty /100 );
|
||||
}
|
||||
|
||||
@@ -21264,7 +21264,7 @@ BOOLEAN DoesSoldierWearGasMask( SOLDIERTYPE *pSoldier )//dnl ch40 200909
|
||||
BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
{
|
||||
if ( pSoldier == NULL )
|
||||
return(FALSE);
|
||||
return FALSE;
|
||||
|
||||
// Flugente: compatibility with skills
|
||||
if ( uiSkillTraitNumber == VARIOUSSKILLS )
|
||||
@@ -21284,40 +21284,28 @@ BOOLEAN HAS_SKILL_TRAIT( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
// bMaxMajorTraits++;
|
||||
//}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < min( 30, bMaxTraits ); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt < min( 30, bMaxTraits ); ++bCnt )
|
||||
{
|
||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
{
|
||||
return(TRUE);
|
||||
}
|
||||
else if ( TwoStagedTrait( pSoldier->stats.ubSkillTraits[bCnt] ) )
|
||||
{
|
||||
bNumMajorTraitsCounted++;
|
||||
}
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted >= min( 20, bMaxMajorTraits ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
{
|
||||
return(TRUE);
|
||||
}
|
||||
}
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
return(TRUE);
|
||||
|
||||
if ( MajorTrait( pSoldier->stats.ubSkillTraits[bCnt] ) )
|
||||
++bNumMajorTraitsCounted;
|
||||
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted > min( 20, bMaxMajorTraits ) )
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[0] == uiSkillTraitNumber )
|
||||
return(TRUE);
|
||||
|
||||
if ( pSoldier->stats.ubSkillTraits[1] == uiSkillTraitNumber )
|
||||
return(TRUE);
|
||||
}
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
|
||||
@@ -21341,53 +21329,40 @@ INT8 NUM_SKILL_TRAITS( SOLDIERTYPE * pSoldier, UINT8 uiSkillTraitNumber )
|
||||
// bMaxMajorTraits++;
|
||||
//}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < min( 30, bMaxTraits ); bCnt++ )
|
||||
for ( INT8 bCnt = 0; bCnt < min( 30, bMaxTraits ); ++bCnt )
|
||||
{
|
||||
if ( TwoStagedTrait( uiSkillTraitNumber ) )
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
{
|
||||
bNumberOfTraits++;
|
||||
bNumMajorTraitsCounted++;
|
||||
}
|
||||
else if ( TwoStagedTrait( pSoldier->stats.ubSkillTraits[bCnt] ) )
|
||||
{
|
||||
bNumMajorTraitsCounted++;
|
||||
}
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted >= min( 20, bMaxMajorTraits ) )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
{
|
||||
bNumberOfTraits++;
|
||||
}
|
||||
}
|
||||
if ( pSoldier->stats.ubSkillTraits[bCnt] == uiSkillTraitNumber )
|
||||
++bNumberOfTraits;
|
||||
|
||||
if ( MajorTrait( pSoldier->stats.ubSkillTraits[bCnt] ) )
|
||||
++bNumMajorTraitsCounted;
|
||||
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted > min( 20, bMaxMajorTraits ) )
|
||||
break;
|
||||
}
|
||||
|
||||
// cannot have more than one same minor trait
|
||||
if ( !TwoStagedTrait( uiSkillTraitNumber ) )
|
||||
return (min( 1, bNumberOfTraits ));
|
||||
else
|
||||
return (min( 2, bNumberOfTraits ));
|
||||
|
||||
return (min( 2, bNumberOfTraits ));
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->stats.ubSkillTraits[0] == uiSkillTraitNumber )
|
||||
bNumberOfTraits++;
|
||||
++bNumberOfTraits;
|
||||
|
||||
if ( pSoldier->stats.ubSkillTraits[1] == uiSkillTraitNumber )
|
||||
bNumberOfTraits++;
|
||||
++bNumberOfTraits;
|
||||
|
||||
// Electronics, Ambidextrous and Camouflaged can only be of one grade
|
||||
if ( uiSkillTraitNumber == ELECTRONICS_OT ||
|
||||
uiSkillTraitNumber == AMBIDEXT_OT ||
|
||||
uiSkillTraitNumber == CAMOUFLAGED_OT )
|
||||
return (min( 1, bNumberOfTraits ));
|
||||
else
|
||||
return (bNumberOfTraits);
|
||||
|
||||
return (bNumberOfTraits);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22068,7 +22043,47 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier )
|
||||
|
||||
BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber )
|
||||
{
|
||||
return(uiSkillTraitNumber > 0 && (uiSkillTraitNumber <= NUM_ORIGINAL_MAJOR_TRAITS || uiSkillTraitNumber == COVERT_NT));
|
||||
if ( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
if ( uiSkillTraitNumber > 0 )
|
||||
{
|
||||
// covert ops is a major trait that is in a different location
|
||||
if ( uiSkillTraitNumber == COVERT_NT )
|
||||
return TRUE;
|
||||
|
||||
// other traits below NUM_ORIGINAL_MAJOR_TRAITS are all major
|
||||
if ( uiSkillTraitNumber <= NUM_ORIGINAL_MAJOR_TRAITS )
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( uiSkillTraitNumber == IMP_SKILL_TRAITS__ELECTRONICS ||
|
||||
uiSkillTraitNumber == IMP_SKILL_TRAITS__AMBIDEXTROUS ||
|
||||
uiSkillTraitNumber == IMP_SKILL_TRAITS__CAMO )
|
||||
return(FALSE);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
// determine if this is a major trait (no longer all two-staged)
|
||||
BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber )
|
||||
{
|
||||
if ( uiSkillTraitNumber > 0 )
|
||||
{
|
||||
// covert ops is a major trait that is in a different location
|
||||
if ( uiSkillTraitNumber == COVERT_NT )
|
||||
return TRUE;
|
||||
|
||||
// other traits below NUM_ORIGINAL_MAJOR_TRAITS are all major
|
||||
if ( uiSkillTraitNumber <= NUM_ORIGINAL_MAJOR_TRAITS )
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN GetRadioOperatorSignal( UINT8 usOwner, INT32* psTargetGridNo )
|
||||
@@ -22309,7 +22324,7 @@ UINT16 GridNoSpotterCTHBonus( SOLDIERTYPE* pSniper, INT32 sGridNo, UINT bTeam )
|
||||
// -> value between 0 and 2000
|
||||
value = (value * effectivity) / 100;
|
||||
|
||||
// longer spotting gives a linear bonus - up to 100% -> value between 0 and 4600
|
||||
// longer spotting gives a linear bonus - up to 100% -> value between 0 and 4000
|
||||
value = (value * min( pSoldier->usSkillCounter[SOLDIER_COUNTER_SPOTTER], 2 * gGameExternalOptions.usSpotterPreparationTurns )) / gGameExternalOptions.usSpotterPreparationTurns;
|
||||
|
||||
// reasonable values: 0 to gGameExternalOptions.usSpotterMaxCTHBoost
|
||||
|
||||
@@ -2009,6 +2009,7 @@ BOOLEAN DecideAltAnimForBigMerc( SOLDIERTYPE * pSoldier );
|
||||
|
||||
// added by Flugente
|
||||
BOOLEAN TwoStagedTrait( UINT8 uiSkillTraitNumber ); // determine if this (new) trait has two stages
|
||||
BOOLEAN MajorTrait( UINT8 uiSkillTraitNumber ); // determine if this is a major trait
|
||||
BOOLEAN GetRadioOperatorSignal(UINT8 usOwner, INT32* psTargetGridNo); // retrieve the gridno of a radio operator who (or whose team) ordered an artillery strike
|
||||
BOOLEAN IsValidArtilleryOrderSector( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ, UINT8 bTeam ); // can an artillery strike be ordered FROM this sector
|
||||
BOOLEAN SectorJammed();
|
||||
|
||||
@@ -4349,7 +4349,7 @@ BOOLEAN AssignTraitsToSoldier( SOLDIERTYPE *pSoldier, SOLDIERCREATE_STRUCT *pCre
|
||||
if ( zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2] > 0 )
|
||||
{
|
||||
// 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] ) )
|
||||
if ( MajorTrait( pSoldier->stats.ubSkillTraits[0] ) && MajorTrait( pSoldier->stats.ubSkillTraits[1] ) && MajorTrait( zSoldierProfile[type][pSoldier->usSoldierProfile].uiTrait[2] ) )
|
||||
;
|
||||
else
|
||||
{
|
||||
|
||||
@@ -2929,48 +2929,29 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
||||
// bMaxMajorTraits++;
|
||||
//}
|
||||
|
||||
for ( INT8 bCnt = 0; bCnt < bMaxTraits; ++bCnt )
|
||||
{
|
||||
if ( gMercProfiles[ubProfileID].bSkillTraits[bCnt] == bSkillTrait )
|
||||
++bNumTraits;
|
||||
|
||||
if ( MajorTrait( gMercProfiles[ubProfileID].bSkillTraits[bCnt] ) )
|
||||
++bNumMajorTraitsCounted;
|
||||
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted > bMaxMajorTraits )
|
||||
break;
|
||||
}
|
||||
|
||||
if ( TwoStagedTrait( bSkillTrait ) )
|
||||
{
|
||||
for ( INT8 bCnt = 0; bCnt < bMaxTraits; ++bCnt )
|
||||
{
|
||||
if ( gMercProfiles[ubProfileID].bSkillTraits[bCnt] == bSkillTrait )
|
||||
{
|
||||
++bNumTraits;
|
||||
++bNumMajorTraitsCounted;
|
||||
}
|
||||
else if ( TwoStagedTrait( gMercProfiles[ubProfileID].bSkillTraits[bCnt] ) )
|
||||
{
|
||||
++bNumMajorTraitsCounted;
|
||||
}
|
||||
|
||||
// if we exceeded the allowed number of major traits, ignore the rest of them
|
||||
if ( bNumMajorTraitsCounted >= bMaxMajorTraits )
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// cannot have more than 2 grades of a major traits
|
||||
return (min( 2, bNumTraits ));
|
||||
}
|
||||
else
|
||||
{
|
||||
for ( INT8 bCnt = 0; bCnt < bMaxTraits; ++bCnt )
|
||||
{
|
||||
if ( gMercProfiles[ubProfileID].bSkillTraits[bCnt] == bSkillTrait )
|
||||
{
|
||||
++bNumTraits;
|
||||
}
|
||||
}
|
||||
|
||||
// cannot have more than 1 grade of minor traits
|
||||
return (min( 1, bNumTraits ));
|
||||
}
|
||||
return (min( 1, bNumTraits ));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (gMercProfiles[ubProfileID].bSkillTraits[ 0 ] == bSkillTrait)
|
||||
++bNumTraits;
|
||||
|
||||
if (gMercProfiles[ubProfileID].bSkillTraits[ 1 ] == bSkillTrait)
|
||||
++bNumTraits;
|
||||
|
||||
@@ -2979,7 +2960,7 @@ INT8 ProfileHasSkillTrait( INT32 ubProfileID, INT8 bSkillTrait )
|
||||
bSkillTrait == AMBIDEXT_OT ||
|
||||
bSkillTrait == CAMOUFLAGED_OT )
|
||||
return ( min(1, bNumTraits) );
|
||||
else
|
||||
return ( bNumTraits );
|
||||
|
||||
return ( bNumTraits );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -349,9 +349,9 @@ INT16 AdjustMaxSightRangeForEnvEffects( SOLDIERTYPE *pSoldier, INT8 bLightLevel,
|
||||
//Added a feature reducing weather penalty for ranger trait - SANDRO
|
||||
INT16 sWeatherPenalty = 0; // percent vision reduction 0-100%
|
||||
sWeatherPenalty = min( (max( 0, (gGameExternalOptions.ubVisDistDecreasePerRainIntensity * gbCurrentRainIntensity))), 100) ;
|
||||
if( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, RANGER_NT ) )
|
||||
if ( gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT( pSoldier, SURVIVAL_NT ) )
|
||||
{
|
||||
sWeatherPenalty = (sWeatherPenalty * ( 100 - (gSkillTraitValues.ubRAWeatherPenaltiesReduction * NUM_SKILL_TRAITS( pSoldier, RANGER_NT ))) ) / 100;
|
||||
sWeatherPenalty = (sWeatherPenalty * (100 - (gSkillTraitValues.ubSVWeatherPenaltiesReduction * NUM_SKILL_TRAITS( pSoldier, SURVIVAL_NT )))) / 100;
|
||||
sWeatherPenalty = min( (max( 0, sWeatherPenalty)), 100 ); // keep it in 0-100 range
|
||||
}
|
||||
|
||||
|
||||
@@ -161,15 +161,16 @@ typedef enum
|
||||
SCOUTING_NT, // 19
|
||||
|
||||
// Flugente: new traits have to go here, even if they are major traits, as otherwise the existing traits in profiles get mixed up
|
||||
COVERT_NT, // 20
|
||||
COVERT_NT, // 20 // a major trait
|
||||
RADIO_OPERATOR_NT, //21 // a minor trait
|
||||
SNITCH_NT, //22 // a minor trait
|
||||
SURVIVAL_NT, //23 // a minor trait
|
||||
|
||||
NUM_SKILLTRAITS_NT
|
||||
} SkillTraitNew;
|
||||
|
||||
#define NUM_MAJOR_TRAITS 10
|
||||
#define NUM_MINOR_TRAITS 12
|
||||
#define NUM_MINOR_TRAITS 13
|
||||
|
||||
#define NUM_ORIGINAL_MAJOR_TRAITS 9
|
||||
|
||||
|
||||
+11
-7
@@ -2524,32 +2524,34 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"无线电操作员", // 21
|
||||
L"告发", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"机枪手",
|
||||
L"机枪手", // 24
|
||||
L"掷弹兵",
|
||||
L"狙击手",
|
||||
L"游骑兵", // 26
|
||||
L"游骑兵",
|
||||
L"枪斗术",
|
||||
L"武术家",
|
||||
L"班长",
|
||||
L"工兵",
|
||||
L"军医",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"间谍", // 42
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 42
|
||||
L"间谍", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch (minor trait)
|
||||
L"更多...",
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"更多...", // 47
|
||||
L"多种技能", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
@@ -6868,6 +6870,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"特工: 你让詹姆斯邦德甘拜下风! ± ", // L"Covert Operations: You make 007 look like an amateur! ± ",
|
||||
// Radio Operator
|
||||
L"无线电操作员:你通过使用通讯设备让队伍的战略和战术水平得到了提升。 ± ", //L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ",
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
+14
-10
@@ -2519,34 +2519,36 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Covert Ops", // 20
|
||||
// new minor traits
|
||||
L"Radio Operator", // 21
|
||||
L"Snitch", // 22 // TODO.Translate
|
||||
L"Snitch", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Machinegunner", // 23
|
||||
L"Machinegunner", // 24
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter", // 27
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor", // 31
|
||||
L"Doctor",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder", // 38
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Spy", // 42
|
||||
L"Placeholder", // 42
|
||||
L"Spy", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch (minor trait)
|
||||
L"More...",
|
||||
L"various", // for VARIOUSSKILLS // TODO.Translate
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"More...", // 47
|
||||
L"various", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
@@ -6872,6 +6874,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate
|
||||
// Radio Operator
|
||||
L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
+12
-8
@@ -2524,32 +2524,34 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"Radio Operator", // 21
|
||||
L"Snitch", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Machinegunner", // 23
|
||||
L"Machinegunner", // 24
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter", // 27
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor", // 31
|
||||
L"Doctor",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Spy", // 42
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 42
|
||||
L"Spy", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch (minor trait)
|
||||
L"More...", // 45
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"More...", // 47
|
||||
L"various", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
@@ -6866,6 +6868,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Covert Operations: You make 007 look like an amateur! ± ",
|
||||
// Radio Operator
|
||||
L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ",
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ",
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
@@ -2530,9 +2530,10 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"Opérateur radio", // 21
|
||||
L"Infiltré", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Mitrailleur",
|
||||
L"Mitrailleur", // 24
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
@@ -2542,7 +2543,7 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Ingénieur",
|
||||
L"Chirurgien",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
@@ -2555,7 +2556,8 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Espion", // 42
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch (minor trait)
|
||||
L"Plus...", // 45
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"Plus...", // 47
|
||||
L"Divers", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
@@ -6870,6 +6872,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Déguisement : Vous ferez passer 007 pour un amateur ! ± ",
|
||||
// Radio Operator
|
||||
L"Opérateur radio : Votre maitrise des appareils de communication élargit le champs des compétences tactiques et stratégiques de votre équipe. ± ",
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
+10
-6
@@ -2538,9 +2538,10 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"Funker", // 21
|
||||
L"Snitch", // 22 // TODO.Translate
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"MG-Veteran",
|
||||
L"MG-Veteran", // 24
|
||||
L"Artillerist",
|
||||
L"Scharfschütze",
|
||||
L"Jäger",
|
||||
@@ -2550,20 +2551,21 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Ingenieur",
|
||||
L"Arzt",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Spion", // 42
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 42
|
||||
L"Spion", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch(minor trait)
|
||||
L"Mehr...",
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"Mehr...", //47
|
||||
L"diverse", // for VARIOUSSKILLS
|
||||
};
|
||||
|
||||
@@ -6697,6 +6699,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Geheimagent: Neben Ihnen schaut 007 wie der reinste Amateur aus! ± ",
|
||||
// Radio Operator
|
||||
L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
+15
-11
@@ -2517,34 +2517,36 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Covert Ops", // 20
|
||||
// new minor traits
|
||||
L"Radio Operator", // 21
|
||||
L"Snitch", // 22 // TODO.Translate
|
||||
L"Snitch", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Machinegunner", // 23
|
||||
L"Machinegunner", // 24
|
||||
L"Bombardier",
|
||||
L"Sniper",
|
||||
L"Ranger",
|
||||
L"Gunfighter", // 27
|
||||
L"Gunfighter",
|
||||
L"Martial Arts",
|
||||
L"Squadleader",
|
||||
L"Engineer",
|
||||
L"Doctor", // 31
|
||||
L"Doctor",
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 32
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Spy", // 42
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 42
|
||||
L"Spy", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch(minor trait)
|
||||
L"More...",
|
||||
L"various", // for VARIOUSSKILLS // TODO.Translate
|
||||
L"Placeholder", // for snitch (minor trait)
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"More...", // 47
|
||||
L"various", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
@@ -6868,6 +6870,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate
|
||||
// Radio Operator
|
||||
L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"教学",// L"Teaching",
|
||||
L"侦察",// L"Scouting",
|
||||
L"无线电操作员", //L"Radio Operator",
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"无",// L"None",
|
||||
L"I.M.P 副技能",// L"I.M.P. Minor Traits",
|
||||
@@ -149,14 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"使用散弹枪时-%d%s APs\n", //L"-%d%s APs to fire Shotguns\n",
|
||||
L"使用散弹枪增加%d次瞄准次数\n", //L"Adds %d more aim click for Shotguns\n",
|
||||
L"使用散弹枪增加%d次瞄准次数\n", //L"Adds %d more aim clicks for Shotguns\n",
|
||||
L"队伍在区域间步行移动的速度 +%d%s\n",// L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"队伍在区域间乘车移动的速度 +%d%s\n",// L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"区域间移动时体力消耗 -%d%s\n",// L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n",
|
||||
L"迷彩涂装效果 +%d%s\n",// L"+%d%s camouflage effectiveness\n",
|
||||
L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
@@ -387,6 +380,17 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"+%d有效听觉范围\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"队伍在区域间步行移动的速度 +%d%s\n",// L"+%d%s group travelling speed between sectors if traveling by foot\n",
|
||||
L"队伍在区域间乘车移动的速度 +%d%s\n",// L"+%d%s group travelling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"区域间移动时体力消耗 -%d%s\n",// L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"天气效果惩罚 -%d%s\n",// L"-%d%s weather penalties\n",
|
||||
//L"迷彩涂装效果 +%d%s\n",// L"+%d%s camouflage effectiveness\n",
|
||||
L"迷彩涂装退色的速度 -%d%s\n",// L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"无奖励",// L"No bonuses",
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
L"Radio Operator",
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
@@ -149,13 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s APs to fire Shotguns\n",
|
||||
L"Adds %d more aim click for Shotguns\n",
|
||||
L"Adds %d more aim clicks for Shotguns\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
@@ -388,6 +382,16 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"+%d to effective hearing range\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
L"Radio Operator",
|
||||
L"Survival",
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
@@ -149,13 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s APs to fire Shotguns\n",
|
||||
L"Adds %d more aim click for Shotguns\n",
|
||||
L"Adds %d more aim clicks for Shotguns\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
@@ -388,6 +382,17 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"+%d to effective hearing range\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] =
|
||||
{
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
//L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Instructeur",
|
||||
L"Reconnaissance",
|
||||
L"Opérateur radio",
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"Personne",
|
||||
L"IMP : Traits mineurs",
|
||||
@@ -150,14 +151,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s PA pour tirer avec les fusils à pompe\n",
|
||||
L"Ajoute un niveau de visée pour les fusils à pompe\n",
|
||||
L"Ajoute %d niveaux de visée pour les fusils à pompe\n",
|
||||
L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont à pied\n",
|
||||
L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont dans un véhicule (sauf l'hélicoptère)\n",
|
||||
L"-%d%s d'énergies nécessaire pour traverser les secteurs\n",
|
||||
L"-%d%s de pénalités du temps\n",
|
||||
L"+%d%s d'efficacité du camouflage\n",
|
||||
L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
@@ -385,6 +378,18 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"Augmente votre réputation de %d tous les jours si le moral est bon.\n",
|
||||
L"+ %d de portée auditive\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont à pied\n",
|
||||
L"+%d%s de vitesse de déplacement du groupe entre les secteurs, s'ils sont dans un véhicule (sauf l'hélicoptère)\n",
|
||||
L"-%d%s d'énergies nécessaire pour traverser les secteurs\n",
|
||||
L"-%d%s de pénalités du temps\n",
|
||||
//L"+%d%s d'efficacité du camouflage\n",
|
||||
L"-%d%s de l'usure du camouflage due au temps ou à l'eau\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Pas de bonus",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Ausbilden", // alt. "Lehren"
|
||||
L"Aufklären", // alt. "Spähen"
|
||||
L"Funktechnik", // Alternative: Funk, Funkkommunikation [Leonidas]
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"Keine",
|
||||
L"B.S.E. Nebenfertigkeiten",
|
||||
@@ -149,13 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s APs benötigt um Flinten abzufeuern\n",
|
||||
L"Gibt Flinten einen weiteren Zielklick\n",
|
||||
L"%d weitere Zielklicks für Flinten\n",
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren zu Fuß\n",
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n",
|
||||
L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n",
|
||||
L"-%d%s Einfluss durch schlechtes Wetter\n",
|
||||
L"+%d%s Tarnungs-Effektivität\n",
|
||||
L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
@@ -389,6 +383,17 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"Erhält +%d auf die Hörweite",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] =
|
||||
{
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren zu Fuß\n",
|
||||
L"+%d%s Marschgeschwindigkeit der Gruppe zwischen Sektoren bei Benutzung von Fahrzeugen (außer dem Helikopter)\n",
|
||||
L"-%d%s weniger Energieverlust beim Reisen zwischen Sektoren\n",
|
||||
L"-%d%s Einfluss durch schlechtes Wetter\n",
|
||||
//L"+%d%s Tarnungs-Effektivität\n",
|
||||
L"-%d%s Abnutzung von Tarnfarbe durch Wasser oder Zeit\n",
|
||||
L"Kann Spuren bis zu %d Felder weit erkennen\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Keine Boni",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
@@ -87,6 +87,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Teaching",
|
||||
L"Scouting",
|
||||
L"Radio Operator",
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"None",
|
||||
L"I.M.P. Minor Traits",
|
||||
@@ -147,13 +148,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s APs to fire Shotguns\n",
|
||||
L"Adds %d more aim click for Shotguns\n",
|
||||
L"Adds %d more aim clicks for Shotguns\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
@@ -385,6 +379,17 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"Increases your reputation by %d every day if in good morale.\n", // TODO.Translate
|
||||
L"+%d to effective hearing range\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
@@ -89,6 +89,7 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Nauczanie",
|
||||
L"Zwiad",
|
||||
L"Radio Operator",
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"Brak",
|
||||
L"Pomniejsze cechy I.M.P",
|
||||
@@ -149,13 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s APs to fire Shotguns\n",
|
||||
L"Adds %d more aim click for Shotguns\n",
|
||||
L"Adds %d more aim clicks for Shotguns\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"+%d%s camouflage effectiveness\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
@@ -385,9 +379,19 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"Może zbierać plotki w miastach.\n",
|
||||
L"Może zostać umieszczony w więzieniu jako tajniak.\n",
|
||||
L"Jeżeli w dobrym nastroju, poprawia twoją reputację o %d każdego dnia.\n",
|
||||
L"+%d zasięg słuchu\n",
|
||||
|
||||
L"+%d zasięg słuchu\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"No bonuses",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
+25
-11
@@ -88,7 +88,8 @@ STR16 gzIMPSkillTraitsTextNewMinor[]=
|
||||
L"Подрывник", //Demolitions
|
||||
L"Инструктор", //Teaching
|
||||
L"Разведчик", //Scouting
|
||||
L"Радист",
|
||||
L"Радист", //Radio Operator
|
||||
L"Survival", //TODO.Translate
|
||||
|
||||
L"Нет",
|
||||
L"I.M.P.: Дополнительные навыки", //I.M.P. Minor Traits
|
||||
@@ -149,14 +150,6 @@ STR16 gzIMPMajorTraitsHelpTextsRanger[]=
|
||||
L"-%d%s ОД на выстрел из дробовика\n",
|
||||
L"+%d клик прицеливания для дробовиков\n",
|
||||
L"+%d кликов прицеливания для дробовиков\n",
|
||||
L"+%d%s к скорости передвижения группы между секторами, если идти пешком\n",
|
||||
L"+%d%s к скорости передвижения группы между секторами, \nесли передвигаться на транспорте (за исключением вертолёта)\n",
|
||||
L"-%d%s к затрате энергии при переходе между секторами\n", //меньше тратит сил
|
||||
L"-%d%s к штрафам от погодных условий\n",
|
||||
L"+%d%s к эффективности камуфляжа\n",
|
||||
L"-%d%s на скорость ухудшения камуфляжа от воды и времени\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
|
||||
};
|
||||
STR16 gzIMPMajorTraitsHelpTextsGunslinger[]=
|
||||
{
|
||||
@@ -267,6 +260,17 @@ STR16 gzIMPMajorTraitsHelpTextsRadioOperator[]=
|
||||
L"Может вызывать подкрепления из отрядов ополченцев из соседних секторов.\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] =
|
||||
{
|
||||
L"+%d%s к скорости передвижения группы между секторами, если идти пешком\n",
|
||||
L"+%d%s к скорости передвижения группы между секторами, \nесли передвигаться на транспорте (за исключением вертолёта)\n",
|
||||
L"-%d%s к затрате энергии при переходе между секторами\n", //меньше тратит сил
|
||||
L"-%d%s к штрафам от погодных условий\n",
|
||||
//L"+%d%s к эффективности камуфляжа\n",
|
||||
L"-%d%s на скорость ухудшения камуфляжа от воды и времени\n",
|
||||
L"Can spot tracks up to %d tiles away\n", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Нет преимуществ",
|
||||
@@ -381,9 +385,19 @@ STR16 gzIMPMinorTraitsHelpTextsSnitch[]=
|
||||
L"Может собирать слухи в городах.\n",
|
||||
L"Можно засылать в качестве доносчика в тюрьмы.\n",
|
||||
L"Увеличивает вашу репутацию на %d каждый день, если его боевой дух высок.\n",
|
||||
L"+%d фактической дальности слуха.\n",
|
||||
|
||||
L"+%d фактической дальности слуха.\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMajorTraitsHelpTextsSurvival[] = // TODO.Translate
|
||||
{
|
||||
L"+%d%s group traveling speed between sectors if traveling by foot\n",
|
||||
L"+%d%s group traveling speed between sectors if traveling in vehicle (except helicopter)\n",
|
||||
L"-%d%s less energy spent for travelling between sectors\n",
|
||||
L"-%d%s weather penalties\n",
|
||||
L"-%d%s worn out speed of camouflage by water or time\n",
|
||||
L"Can spot tracks up to %d tiles away\n",
|
||||
};
|
||||
|
||||
STR16 gzIMPMinorTraitsHelpTextsNone[]=
|
||||
{
|
||||
L"Нет преимуществ",
|
||||
|
||||
@@ -32,6 +32,7 @@ extern STR16 gzIMPMinorTraitsHelpTextsDemolitions[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsTeaching[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsScouting[];
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsSnitch[];
|
||||
extern STR16 gzIMPMajorTraitsHelpTextsSurvival[]; // added by Flugente
|
||||
extern STR16 gzIMPMinorTraitsHelpTextsNone[];
|
||||
|
||||
extern STR16 gzIMPOldSkillTraitsHelpTexts[];
|
||||
|
||||
+11
-6
@@ -2531,9 +2531,10 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"Radiooperator", // 21
|
||||
L"Kapuś", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Strzelec RKMu",
|
||||
L"Strzelec RKMu", // 24
|
||||
L"Bombardier",
|
||||
L"Snajper",
|
||||
L"Myśliwy",
|
||||
@@ -2542,20 +2543,22 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Dowódca Drużyny",
|
||||
L"Inżynier",
|
||||
L"Doktor",
|
||||
L"Placeholder", // 32
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Szpieg", // 42
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 42
|
||||
L"Szpieg", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch(minor trait)
|
||||
L"Więcej...",
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"Więcej...", // 47
|
||||
L"różne", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
@@ -6879,6 +6882,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Covert Operations: You make 007 look like an amateur! ± ", // TODO.Translate
|
||||
// Radio Operator
|
||||
L"Radio Operator: Your usage of communication devices broaden your team's tactical and strategic skills. ± ", // TOO.Translate
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
+10
-5
@@ -2522,6 +2522,7 @@ STR16 gzMercSkillTextNew[] =
|
||||
// new minor traits
|
||||
L"Радист", // 21
|
||||
L"Осведомитель", // 22
|
||||
L"Survival",
|
||||
|
||||
// second names for major skills
|
||||
L"Пулемётчик", //Machinegunner
|
||||
@@ -2533,20 +2534,22 @@ STR16 gzMercSkillTextNew[] =
|
||||
L"Командир", //Squadleader
|
||||
L"Инженер", //Engineer
|
||||
L"Доктор", //Doctor
|
||||
L"Placeholder", // 32
|
||||
// placeholders for minor traits
|
||||
L"Placeholder", // 33
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 37
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder",
|
||||
L"Placeholder", // 41
|
||||
L"Шпион", // 42
|
||||
L"Placeholder", // 42
|
||||
L"Шпион", // 43
|
||||
L"Placeholder", // for radio operator (minor trait)
|
||||
L"Placeholder", // for snitch(minor trait)
|
||||
L"Ещё...",
|
||||
L"Placeholder", // for survival (minor trait)
|
||||
L"Ещё...", // 47
|
||||
L"различные", // for VARIOUSSKILLS
|
||||
};
|
||||
//////////////////////////////////////////////////////////
|
||||
@@ -6863,6 +6866,8 @@ STR16 MissingIMPSkillsDescriptions[] =
|
||||
L"Шпион: Агент 007 по сравнению с вами - дилетант! ± ",
|
||||
// Radio Operator
|
||||
L"Радист: Использование вами средств связи позволяет расширить тактические и стратегические возможности команды. ± ",
|
||||
// Survival
|
||||
L"Survival: Nature is a second home to you. ± ", // TODO.Translate
|
||||
};
|
||||
|
||||
STR16 NewInvMessage[] =
|
||||
|
||||
Reference in New Issue
Block a user