NEW_SUPPRESSION_CODE:

- increased min base value for suppression tolerance, so merc with low morale/level have higher base tolerance which can be reduced by other factors
- NEARBY_FRIENDLIES_AFFECT_TOLERANCE: penalty -0.5 if friend is cowering or unconscious, increased limits to +-5

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9183 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-10-15 09:05:32 +00:00
parent 6d14282538
commit 9fd9e82397
+14 -15
View File
@@ -8753,7 +8753,7 @@ INT8 CalcSuppressionTolerance( SOLDIERTYPE * pSoldier )
{
// limit base tolerance to 75% when having max morale and experience level
// calculate tolerance as percent of max tolerance from INI
bTolerance = gGameExternalOptions.ubSuppressionToleranceMax * (pSoldier->aiData.bMorale + 20 * EffectiveExpLevel(pSoldier, TRUE)) / 400;
bTolerance = gGameExternalOptions.ubSuppressionToleranceMax * (100 + pSoldier->aiData.bMorale + 10 * EffectiveExpLevel(pSoldier, TRUE)) / 400;
}
else
{
@@ -10926,30 +10926,29 @@ INT8 CheckStatusNearbyFriendliesSimple(SOLDIERTYPE *pSoldier)
{
sDistance = PythSpacesAway(pSoldier->sGridNo, pFriend->sGridNo);
// modifier depends on distance
iModifier = 1.0f * (FLOAT)sMinDistance / (FLOAT)max(sMinDistance, sDistance);
iModifier = 1.0f;
if (pFriend->stats.bLife >= OKLIFE)
{
// suppressed, half bonus
if(pFriend->IsCowering() || pFriend->IsUnconscious())
{
iModifier = iModifier / 2;
}
}
else
if (pFriend->stats.bLife < OKLIFE)
{
// dying, negative effect
iModifier = -iModifier;
iModifier = -1.0f;
}
else if (pFriend->IsCowering() || pFriend->IsUnconscious())
{
// suppressed, negative modifier
iModifier = -0.5f;
}
// modifier depends on distance
iModifier = iModifier * (FLOAT)sMinDistance / (FLOAT)max(sMinDistance, sDistance);
iFriendBonus += iModifier;
}
}
// Add no more than five points for nearby friends.
iFriendBonus = min(iFriendBonus, 3.0f);
iFriendBonus = max(iFriendBonus, -3.0f);
iFriendBonus = min(iFriendBonus, 5.0f);
iFriendBonus = max(iFriendBonus, -5.0f);
return (INT8)iFriendBonus;
}