New options in ja2_options.ini (by Sevenfm)

1) PLAYER_HIT_COUNT = 0
This works as ENEMY_HIT_COUNT option, but for player mercs.
Possible values: 0 - 4

2) SOLDIER_TOOLTIP_DISPLAY_SUPPRESSION_INFO = TRUE
Show additional info in tactical tooltip:
- APs lost due to suppression
- Suppression Tolerance
- Effective Shock Level ( Shock level modified by traits and backgrounds. This value is compared with current suppression tolerance to determine "cowering" effect )
- AI morale level

3) SHOW_ENEMY_WEAPON = TRUE
Show enemy weapon name above soldier - after health, name and rank.
You can see exact weapon name only on short distances, range calculation is similar to dynamic tooltips and based on soldiers actual viewing range and experience.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@6691 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2013-12-16 09:13:55 +00:00
parent 9691b728db
commit f8a0a5eb2c
19 changed files with 379 additions and 233 deletions
+42 -14
View File
@@ -8344,6 +8344,9 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
fCower = false;
// SANDRO - STOMP traits
// sevenfm: moved bShockForCower calculation to CalcEffectiveShockLevel()
INT8 bShockForCower = CalcEffectiveShockLevel( pSoldier );
/*
INT8 bShockForCower = pSoldier->aiData.bShock;
if ( gGameOptions.fNewTraitSystem )
{
@@ -8365,6 +8368,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
// Flugente: personal fear resistance
bShockForCower = (INT8)((bShockForCower * (100 - pSoldier->GetFearResistanceBonus()) / 100 ) + 0.5);
}
*/
if (bShockForCower >= bTolerance)
{
fCower = true;
@@ -8604,7 +8608,7 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
pSoldier->ubLastSuppression = pSoldier->ubSuppressionPoints;
pSoldier->ubLastAP = ubPointsLost;
// add suppression valued from hit to shock valued calculated in this function
// add suppression values from hit to shock values calculated in this function
pSoldier->ubLastShock += pSoldier->ubLastShockFromHit;
pSoldier->ubLastShockFromHit = 0;
pSoldier->ubLastAP += pSoldier->ubLastAPFromHit;
@@ -8612,19 +8616,17 @@ void HandleSuppressionFire( UINT8 ubTargetedMerc, UINT8 ubCausedAttacker )
pSoldier->ubLastMorale += pSoldier->ubLastMoraleFromHit;
pSoldier->ubLastMoraleFromHit = 0;
if( ubPointsLost > 0 )
{
if( pSoldier->flags.fDisplayDamage )
{
// prolongate damage show time
pSoldier->bDisplayDamageCount = 0;
}
else
{
// start new damage show counter
// determine if any suppression value will be shown
BOOLEAN showSuppression = FALSE;
if( gGameExternalOptions.ubShowSuppressionCount ||
gGameExternalOptions.ubShowShockCount ||
gGameExternalOptions.ubShowAPCount ||
gGameExternalOptions.ubShowMoraleCount )
showSuppression = TRUE;
// show suppression counters - use original damage counter timer for this
if( showSuppression && ubPointsLost > 0 )
SetDamageDisplayCounter( pSoldier );
}
}
// HEADROCK HAM 3.5: After sufficient testing, suppression clearing now works immediately at the end of
// the attack. ubAPsLostToSuppression is only cleared at the end of the turn, but no longer plays a role
@@ -10575,4 +10577,30 @@ void KillOnePrisoner( SECTORINFO *pSectorInfo )
break;
}
}
}
}
INT8 CalcEffectiveShockLevel( SOLDIERTYPE * pSoldier )
{
INT8 bShockForCower = pSoldier->aiData.bShock;
if ( gGameOptions.fNewTraitSystem )
{
// Squadleader's resistance to cowering
if ( HAS_SKILL_TRAIT( pSoldier, SQUADLEADER_NT ))
{
bShockForCower = (INT8)((bShockForCower * (100 - gSkillTraitValues.ubSLFearResistance * NUM_SKILL_TRAITS( pSoldier, SQUADLEADER_NT )) /100) + 0.5);
}
// Check for character traits
if ( gMercProfiles[pSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_INTELLECTUAL )
{
bShockForCower = (INT8)((bShockForCower * 23 / 20 ) + 0.5); // +15% as shock
}
else if ( gMercProfiles[pSoldier->ubProfile].bCharacterTrait == CHAR_TRAIT_DAUNTLESS )
{
bShockForCower = (INT8)((bShockForCower * 17 / 20 ) + 0.5); // -15% as shock
}
// Flugente: personal fear resistance
bShockForCower = (INT8)((bShockForCower * (100 - pSoldier->GetFearResistanceBonus()) / 100 ) + 0.5);
}
return bShockForCower;
}