mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
Merged revision(s) 7701 from branches/ja2_source_official_2014:
Merged revision(s) 7692 from branches/Flugente/BaseTable: Merged AssignMinorTraitHelpText(...) and AssignSkillTraitHelpText(...) into AssignPersonnelSkillTraitHelpText(...) git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7705 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+25
-816
@@ -23,6 +23,7 @@
|
||||
#include "IMP Color Choosing.h" // added by SANDRO
|
||||
#include "IMP Minor Trait.h"
|
||||
#include "Soldier Profile.h"
|
||||
#include "personnel.h" // added by Flugente
|
||||
#endif
|
||||
|
||||
|
||||
@@ -62,6 +63,23 @@
|
||||
|
||||
#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
|
||||
UINT8 gusNewMajorTraitRemap[IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS] =
|
||||
{
|
||||
AUTO_WEAPONS_NT, // IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS
|
||||
HEAVY_WEAPONS_NT, // IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS
|
||||
SNIPER_NT, // IMP_SKILL_TRAITS_NEW_PROF_SNIPER
|
||||
RANGER_NT, // IMP_SKILL_TRAITS_NEW_RANGER
|
||||
GUNSLINGER_NT, // IMP_SKILL_TRAITS_NEW_GUNSLINGER
|
||||
MARTIAL_ARTS_NT, // IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS
|
||||
SQUADLEADER_NT, // IMP_SKILL_TRAITS_NEW_SQUADLEADER
|
||||
TECHNICIAN_NT, // IMP_SKILL_TRAITS_NEW_TECHNICIAN
|
||||
DOCTOR_NT, // IMP_SKILL_TRAITS_NEW_DOCTOR
|
||||
COVERT_NT, // IMP_SKILL_TRAITS_NEW_COVERT
|
||||
NO_SKILLTRAIT_NT, // IMP_SKILL_TRAITS_NEW_MAJOR_NONE
|
||||
};
|
||||
|
||||
|
||||
//*******************************************************************
|
||||
//
|
||||
// Global Variables
|
||||
@@ -112,8 +130,6 @@ BOOLEAN CameBackToSpecialtiesPageButNotFinished();
|
||||
BOOLEAN DoesSkillHaveExpertLevel( UINT32 uiSkillTrait );
|
||||
|
||||
MOUSE_REGION gMR_SkillTraitHelpTextRegions[IMP_SKILL_TRAITS_NEW_NUMBER_MAJOR_SKILLS];
|
||||
|
||||
void AssignSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLevel );
|
||||
//ppp
|
||||
|
||||
//*******************************************************************
|
||||
@@ -874,7 +890,13 @@ void IMPSkillTraitDisplaySkills()
|
||||
}
|
||||
|
||||
// assign help texts
|
||||
AssignSkillTraitHelpText( uiCnt, ((gfSkillTraitQuestions[uiCnt] && gfSkillTraitQuestions2[uiCnt]) ? TRUE : FALSE) );
|
||||
CHAR16 apStr[5000];
|
||||
swprintf( apStr, L"" );
|
||||
AssignPersonnelSkillTraitHelpText( gusNewMajorTraitRemap[uiCnt], ((gfSkillTraitQuestions[uiCnt] && gfSkillTraitQuestions2[uiCnt]) ? TRUE : FALSE), fCharacterIsMale && !bBigBodySelected( ), apStr );
|
||||
|
||||
// Set region help text
|
||||
SetRegionFastHelpText( &(gMR_SkillTraitHelpTextRegions[uiCnt]), apStr );
|
||||
SetRegionHelpEndCallback( &gMR_SkillTraitHelpTextRegions[uiCnt], MSYS_NO_CALLBACK );
|
||||
|
||||
//Determine the next x location
|
||||
if( uiCnt < uiNumSkillsToStartRightColumn )
|
||||
@@ -1805,817 +1827,4 @@ INT32 ExplosivesRequiredDueToMajorSkills( void )
|
||||
}
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
void AssignSkillTraitHelpText( UINT8 ubTraitNumber, BOOLEAN fExpertLevel )
|
||||
{
|
||||
CHAR16 apStr[ 5000 ];
|
||||
CHAR16 atStr[ 1500 ];
|
||||
|
||||
if( gGameOptions.fNewTraitSystem )
|
||||
{
|
||||
switch( ubTraitNumber )
|
||||
{
|
||||
case IMP_SKILL_TRAITS_NEW_AUTO_WEAPONS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubAWBonusCtHAssaultRifles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[0], ( gSkillTraitValues.ubAWBonusCtHAssaultRifles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWBonusCtHSMGs != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[1], ( gSkillTraitValues.ubAWBonusCtHSMGs * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWBonusCtHLMGs != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[2], ( gSkillTraitValues.ubAWBonusCtHLMGs * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWFiringSpeedBonusLMGs != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[3], ( gSkillTraitValues.ubAWFiringSpeedBonusLMGs * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWPercentReadyLMGReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[4], ( gSkillTraitValues.ubAWPercentReadyLMGReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWAutoFirePenaltyReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[5], ( gSkillTraitValues.ubAWAutoFirePenaltyReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubAWUnwantedBulletsReduction > 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsAutoWeapons[6]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_HEAVY_WEAPONS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubHWGrenadeLaunchersAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[0], ( gSkillTraitValues.ubHWGrenadeLaunchersAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWRocketLaunchersAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[1], ( gSkillTraitValues.ubHWRocketLaunchersAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWBonusCtHGrenadeLaunchers != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[2], ( gSkillTraitValues.ubHWBonusCtHGrenadeLaunchers * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWBonusCtHRocketLaunchers != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[3], ( gSkillTraitValues.ubHWBonusCtHRocketLaunchers * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWMortarAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[4], ( gSkillTraitValues.ubHWMortarAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWMortarCtHPenaltyReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[5], ( gSkillTraitValues.ubHWMortarCtHPenaltyReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWDamageTanksBonusPercent != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[6], ( gSkillTraitValues.ubHWDamageTanksBonusPercent * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubHWDamageBonusPercentForHW != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsHeavyWeapons[7], ( gSkillTraitValues.ubHWDamageBonusPercentForHW * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_PROF_SNIPER:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubSNBonusCtHRifles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[0], ( gSkillTraitValues.ubSNBonusCtHRifles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNBonusCtHSniperRifles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[1], ( gSkillTraitValues.ubSNBonusCtHSniperRifles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNEffRangeToTargetReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[2], ( gSkillTraitValues.ubSNEffRangeToTargetReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNAimingBonusPerClick != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[3], ( gSkillTraitValues.ubSNAimingBonusPerClick * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNDamageBonusPerClick != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[4], ( gSkillTraitValues.ubSNDamageBonusPerClick * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
if( gSkillTraitValues.ubSNDamageBonusFromNumClicks == 0)
|
||||
{
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsSniper[5] );
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsSniper[6] );
|
||||
}
|
||||
else if( gSkillTraitValues.ubSNDamageBonusFromNumClicks == 1 )
|
||||
{
|
||||
wcscat( atStr, gzIMPMajorTraitsHelpTextsSniper[6] );
|
||||
}
|
||||
else
|
||||
{
|
||||
wcscat( atStr, gzIMPMajorTraitsHelpTextsSniper[6] );
|
||||
wcscat( atStr, gzIMPMajorTraitsHelpTextsSniper[gSkillTraitValues.ubSNDamageBonusFromNumClicks + 4] );
|
||||
}
|
||||
wcscat( atStr, L"\n" );
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNChamberRoundAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[14], ( gSkillTraitValues.ubSNChamberRoundAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSNAimClicksAdded != 0 )
|
||||
{
|
||||
if( UsingNewCTHSystem() == true )
|
||||
{
|
||||
if( gSkillTraitValues.ubSNAimClicksAdded == 1 && !fExpertLevel )
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[17]);
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[18], ( gSkillTraitValues.ubSNAimClicksAdded * (fExpertLevel ? 2 : 1)));
|
||||
}
|
||||
else
|
||||
{
|
||||
if( gSkillTraitValues.ubSNAimClicksAdded == 1 && !fExpertLevel)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[15]);
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSniper[16], ( gSkillTraitValues.ubSNAimClicksAdded * (fExpertLevel ? 2 : 1)));
|
||||
}
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_RANGER:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubRABonusCtHRifles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[0], ( gSkillTraitValues.ubRABonusCtHRifles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRABonusCtHShotguns != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[1], ( gSkillTraitValues.ubRABonusCtHShotguns * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAPumpShotgunsAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[2], ( gSkillTraitValues.ubRAPumpShotgunsAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAFiringSpeedBonusShotguns != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[3], ( gSkillTraitValues.ubRAFiringSpeedBonusShotguns * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubRAAimClicksAdded != 0 )
|
||||
{
|
||||
if( (gSkillTraitValues.ubRAAimClicksAdded >= 2 && !fExpertLevel) || (gSkillTraitValues.ubRAAimClicksAdded == 1 && fExpertLevel) )
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[4], (UINT8)( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1) / 2.0f));
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsRanger[5], (UINT8)( gSkillTraitValues.ubRAAimClicksAdded * (fExpertLevel ? 2 : 1) / 2.0f));
|
||||
|
||||
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 );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_GUNSLINGER:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubGSFiringSpeedBonusPistols != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[0], ( gSkillTraitValues.ubGSFiringSpeedBonusPistols * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSEffectiveRangeBonusPistols != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[1], ( gSkillTraitValues.ubGSEffectiveRangeBonusPistols * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSBonusCtHPistols != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[2], ( gSkillTraitValues.ubGSBonusCtHPistols * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSBonusCtHMachinePistols != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[3], ( gSkillTraitValues.ubGSBonusCtHMachinePistols * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
if( gSkillTraitValues.ubGSCtHMPExcludeAuto )
|
||||
wcscat( atStr, gzIMPMajorTraitsHelpTextsGunslinger[4] );
|
||||
wcscat( atStr, L"\n");
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSAimingBonusPerClick != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[5], ( gSkillTraitValues.ubGSAimingBonusPerClick * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSPercentReadyPistolsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[6], ( gSkillTraitValues.ubGSPercentReadyPistolsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSRealoadSpeedHandgunsBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[7], ( gSkillTraitValues.ubGSRealoadSpeedHandgunsBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubGSAimClicksAdded != 0 )
|
||||
{
|
||||
if( gSkillTraitValues.ubGSAimClicksAdded == 1 && !fExpertLevel )
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[8], ( gSkillTraitValues.ubGSAimClicksAdded * (fExpertLevel ? 2 : 1)));
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsGunslinger[9], ( gSkillTraitValues.ubGSAimClicksAdded * (fExpertLevel ? 2 : 1)));
|
||||
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_MARTIAL_ARTS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubMAPunchAPsReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[0], ( gSkillTraitValues.ubMAPunchAPsReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMABonusCtHBareHands != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[1], ( gSkillTraitValues.ubMABonusCtHBareHands * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMABonusCtHBrassKnuckles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[2], ( gSkillTraitValues.ubMABonusCtHBrassKnuckles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMABonusDamageHandToHand != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[3], ( gSkillTraitValues.ubMABonusDamageHandToHand * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMABonusBreathDamageHandToHand != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[4], ( gSkillTraitValues.ubMABonusBreathDamageHandToHand * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.usMALostBreathRegainPenalty != 0 )
|
||||
{
|
||||
if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 25)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[5]);
|
||||
else if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 50)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[6]);
|
||||
else if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 100)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[7]);
|
||||
else if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 200)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[8]);
|
||||
else if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 400)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[9]);
|
||||
else if( (gSkillTraitValues.usMALostBreathRegainPenalty * (fExpertLevel ? 2 : 1)) <= 700)
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[10]);
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[11]);
|
||||
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.usMAAimedPunchDamageBonus != 0 )
|
||||
{
|
||||
if (!fCharacterIsMale || bBigBodySelected() || (gSkillTraitValues.fPermitExtraAnimationsOnlyToMA && (!gfSkillTraitQuestions[ubTraitNumber] || !gfSkillTraitQuestions2[ubTraitNumber])))
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[12], ( gSkillTraitValues.usMAAimedPunchDamageBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
else
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[13], ( gSkillTraitValues.usMAAimedPunchDamageBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAChanceToDodgeHtH != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[14], ( gSkillTraitValues.ubMAChanceToDodgeHtH * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAOnTopCTDHtHBareHanded != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[15], ( gSkillTraitValues.ubMAOnTopCTDHtHBareHanded * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
if( gSkillTraitValues.ubMAOnTopCTDHtHBrassKnuckles == gSkillTraitValues.ubMAOnTopCTDHtHBareHanded )
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsMartialArts[16] );
|
||||
else if( gSkillTraitValues.ubMAOnTopCTDHtHBrassKnuckles > 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[17], ( gSkillTraitValues.ubMAOnTopCTDHtHBrassKnuckles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
wcscat( apStr, L"\n" );
|
||||
}
|
||||
else if( gSkillTraitValues.ubMAOnTopCTDHtHBrassKnuckles != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[18], ( gSkillTraitValues.ubMAOnTopCTDHtHBrassKnuckles * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAChanceToDodgeMelee != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[19], ( gSkillTraitValues.ubMAChanceToDodgeMelee * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAReducedAPsToSteal != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[20], ( gSkillTraitValues.ubMAReducedAPsToSteal * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAAPsChangeStanceReduction != 0 && ( gSkillTraitValues.ubMAAPsChangeStanceReduction == gSkillTraitValues.ubMAApsTurnAroundReduction == gSkillTraitValues.ubMAAPsClimbOrJumpReduction ))
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[21], ( gSkillTraitValues.ubMAAPsChangeStanceReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
else
|
||||
{
|
||||
if( gSkillTraitValues.ubMAAPsChangeStanceReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[22], ( gSkillTraitValues.ubMAAPsChangeStanceReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAApsTurnAroundReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[23], ( gSkillTraitValues.ubMAApsTurnAroundReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAAPsClimbOrJumpReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[24], ( gSkillTraitValues.ubMAAPsClimbOrJumpReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
}
|
||||
if( gSkillTraitValues.ubMAReducedAPsRegisteredWhenMoving != 0 && gGameOptions.fImprovedInterruptSystem )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[27], ( gSkillTraitValues.ubMAReducedAPsRegisteredWhenMoving * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubMAChanceToCkickDoors != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[25], ( gSkillTraitValues.ubMAChanceToCkickDoors * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if (fCharacterIsMale && !bBigBodySelected() &&
|
||||
((gSkillTraitValues.fPermitExtraAnimationsOnlyToMA && fExpertLevel) ||
|
||||
!gSkillTraitValues.fPermitExtraAnimationsOnlyToMA ))
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsMartialArts[26]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_SQUADLEADER:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubSLBonusAPsPercent != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[0], ( gSkillTraitValues.ubSLBonusAPsPercent * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLEffectiveLevelInRadius != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[1], ( gSkillTraitValues.ubSLEffectiveLevelInRadius * (fExpertLevel ? 2 : 1)), (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLEffectiveLevelAsStandby != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[2], ( gSkillTraitValues.ubSLEffectiveLevelAsStandby * (fExpertLevel ? 2 : 1)));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLCollectiveInterruptsBonus != 0 && gGameOptions.fImprovedInterruptSystem )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[11], ( gSkillTraitValues.ubSLCollectiveInterruptsBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLOverallSuppresionBonusPercent != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[3], ( gSkillTraitValues.ubSLOverallSuppresionBonusPercent * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0], (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLMoraleGainBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[4], ( gSkillTraitValues.ubSLMoraleGainBonus * (fExpertLevel ? 2 : 1)));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLMoraleLossReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[5], ( gSkillTraitValues.ubSLMoraleLossReduction * (fExpertLevel ? 2 : 1)));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[6], gSkillTraitValues.usSLRadiusNormal);
|
||||
wcscat( apStr, atStr );
|
||||
if( gSkillTraitValues.usSLRadiusExtendedEar > gSkillTraitValues.usSLRadiusNormal )
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[7], gSkillTraitValues.usSLRadiusExtendedEar);
|
||||
|
||||
wcscat( apStr, atStr );
|
||||
wcscat( apStr, L"\n" );
|
||||
|
||||
if( gSkillTraitValues.ubSLMaxBonuses > 1 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[8], gSkillTraitValues.ubSLMaxBonuses ) ;
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
if( gSkillTraitValues.ubSLFearResistance != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[9], ( gSkillTraitValues.ubSLFearResistance * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0], (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubSLDeathMoralelossMultiplier != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsSquadleader[10], (1 + ( gSkillTraitValues.ubSLDeathMoralelossMultiplier * (fExpertLevel ? 2 : 1))), (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_TECHNICIAN:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.usTERepairSpeedBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[0], ( gSkillTraitValues.usTERepairSpeedBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.usTELockpickingBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[1], ( gSkillTraitValues.usTELockpickingBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.usTEDisarmElTrapBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[2], ( gSkillTraitValues.usTEDisarmElTrapBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.usTEAttachingItemsBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[3], ( gSkillTraitValues.usTEAttachingItemsBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubTEUnjamGunBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[4], ( gSkillTraitValues.ubTEUnjamGunBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubTERepairElectronicsPenaltyReduction != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[5], ( gSkillTraitValues.ubTERepairElectronicsPenaltyReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubTEChanceToDetectTrapsBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[6], ( gSkillTraitValues.ubTEChanceToDetectTrapsBonus * (fExpertLevel ? 2 : 1)));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubTECtHControlledRobotBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[7], ( gSkillTraitValues.ubTECtHControlledRobotBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0], (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubTETraitsNumToRepairRobot == 2 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[8], (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
else if( gSkillTraitValues.ubTETraitsNumToRepairRobot == 1 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[8], (fExpertLevel ? gzIMPSkillTraitsTextNewMajor[ubTraitNumber + NEWTRAIT_EXPERT_OFFSET] : gzIMPSkillTraitsTextNewMajor[ubTraitNumber]));
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
if( gSkillTraitValues.ubTERepairRobotPenaltyReduction != 0 && fExpertLevel)
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsTechnician[9], ( gSkillTraitValues.ubTERepairRobotPenaltyReduction * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_DOCTOR:
|
||||
{
|
||||
BOOLEAN fCanSurgery = FALSE;
|
||||
swprintf( apStr, L"" );
|
||||
if( gSkillTraitValues.ubDONumberTraitsNeededForSurgery != 0 && ((gSkillTraitValues.ubDOSurgeryHealPercentBase + gSkillTraitValues.ubDOSurgeryHealPercentOnTop) > 0))
|
||||
{
|
||||
if( gSkillTraitValues.ubDONumberTraitsNeededForSurgery <= (fExpertLevel ? 2 : 1))
|
||||
{
|
||||
fCanSurgery = TRUE;
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[1], (gSkillTraitValues.ubDOSurgeryHealPercentBase + ( gSkillTraitValues.ubDOSurgeryHealPercentOnTop * (fExpertLevel ? 2 : 1))), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
if( gSkillTraitValues.usDOSurgeryMedBagConsumption >= 60 )
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsDoctor[2] );
|
||||
|
||||
wcscat( apStr, L"\n" );
|
||||
}
|
||||
}
|
||||
if( (gSkillTraitValues.usDORepairStatsRateBasic + gSkillTraitValues.usDORepairStatsRateOnTop) > 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[3]);
|
||||
wcscat( apStr, atStr );
|
||||
if( fCanSurgery )
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsDoctor[4] );
|
||||
|
||||
wcscat( apStr, gzIMPMajorTraitsHelpTextsDoctor[5] );
|
||||
}
|
||||
if( gSkillTraitValues.usDODoctorAssignmentBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[6], ( gSkillTraitValues.usDODoctorAssignmentBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubDOBandagingSpeedPercent != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[7], ( gSkillTraitValues.ubDOBandagingSpeedPercent * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( gSkillTraitValues.ubDONaturalRegenBonus != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[8], ( gSkillTraitValues.ubDONaturalRegenBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
if( gSkillTraitValues.ubDOMaxRegenBonuses > 1 )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsDoctor[9], gSkillTraitValues.ubDOMaxRegenBonuses ) ;
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
wcscat( apStr, L"\n" );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_COVERT:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[0]);
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[1]);
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
if ( !fExpertLevel )
|
||||
{
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[2], gSkillTraitValues.sCOCloseDetectionRange);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[3], gSkillTraitValues.sCOCloseDetectionRangeSoldierCorpse);
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[4], ( gSkillTraitValues.sCOMeleeCTHBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[5], ( gSkillTraitValues.sCoMeleeInstakillBonus * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
|
||||
INT16 apreduction = ( gSkillTraitValues.sCODisguiseAPReduction * (fExpertLevel ? 2 : 1));
|
||||
swprintf( atStr, gzIMPMajorTraitsHelpTextsCovertOps[6], apreduction, sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS_NEW_MAJOR_NONE:
|
||||
{
|
||||
swprintf( apStr, gzIMPMajorTraitsHelpTextsNone[0] );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
switch( ubTraitNumber )
|
||||
{
|
||||
case IMP_SKILL_TRAITS__LOCKPICK:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[LOCKPICKING_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[0], ( gbSkillTraitBonus[LOCKPICKING_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__HAND_2_HAND:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[HANDTOHAND_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[1], ( gbSkillTraitBonus[HANDTOHAND_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[2], ( 3 * gbSkillTraitBonus[HANDTOHAND_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[3], ( gbSkillTraitBonus[HANDTOHAND_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__ELECTRONICS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[4] );
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__NIGHT_OPS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[5], (fExpertLevel ? 2 : 1));
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[6], (fExpertLevel ? 2 : 1));
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[7], (fExpertLevel ? 2 : 1));
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[8], (fExpertLevel ? 2 : 1));
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[9], (fExpertLevel ? 2 : 1));
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__THROWING:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[THROWING_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[10], ( gbSkillTraitBonus[THROWING_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[11], ( gbSkillTraitBonus[THROWING_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[12], ( 10 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__TEACHING:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gGameExternalOptions.ubTeachBonusToTrain != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[13], ( gGameExternalOptions.ubTeachBonusToTrain * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
if( (gGameExternalOptions.usTeacherTraitEffectOnLeadership - 100) > 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[14], ( (gGameExternalOptions.usTeacherTraitEffectOnLeadership - 100) * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__HEAVY_WEAPONS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[HEAVY_WEAPS_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[15], ( gbSkillTraitBonus[HEAVY_WEAPS_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__AUTO_WEAPONS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[16], ( 2 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[17] );
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__STEALTHY:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[18], ( 25 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
if( gGameExternalOptions.ubStealthTraitCoverValue != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[19], ( gGameExternalOptions.ubStealthTraitCoverValue * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__AMBIDEXTROUS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[20] );
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__KNIFING:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[KNIFING_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[21], ( gbSkillTraitBonus[KNIFING_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[22], ( gbSkillTraitBonus[KNIFING_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[23], ( gbSkillTraitBonus[KNIFING_OT] / 3 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[24], ( gbSkillTraitBonus[KNIFING_OT] / 2 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__PROF_SNIPER:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[PROF_SNIPER_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[25], ( gbSkillTraitBonus[PROF_SNIPER_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[26], ( 10 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__CAMO:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[27] );
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__MARTIAL_ARTS:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
if( gbSkillTraitBonus[MARTIALARTS_OT] != 0 )
|
||||
{
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[28], ( gbSkillTraitBonus[MARTIALARTS_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[29], ( gbSkillTraitBonus[MARTIALARTS_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[30], ( gbSkillTraitBonus[MARTIALARTS_OT] * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[31], ( gbSkillTraitBonus[MARTIALARTS_OT] * 2 / 3 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[32], ( gbSkillTraitBonus[MARTIALARTS_OT] / 2 * (fExpertLevel ? 2 : 1)), sSpecialCharacters[0]);
|
||||
wcscat( apStr, atStr );
|
||||
}
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[33]);
|
||||
wcscat( apStr, atStr );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[34]);
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
case IMP_SKILL_TRAITS__NONE:
|
||||
{
|
||||
swprintf( apStr, L"" );
|
||||
swprintf( atStr, gzIMPOldSkillTraitsHelpTexts[35] );
|
||||
wcscat( apStr, atStr );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Set region help text
|
||||
SetRegionFastHelpText( &(gMR_SkillTraitHelpTextRegions[ubTraitNumber]), apStr );
|
||||
SetRegionHelpEndCallback( &gMR_SkillTraitHelpTextRegions[ubTraitNumber], MSYS_NO_CALLBACK );
|
||||
|
||||
return;
|
||||
}
|
||||
Reference in New Issue
Block a user