From 9fd9e82397611e0694a0f9ce648fcfa6043002e4 Mon Sep 17 00:00:00 2001 From: Sevenfm Date: Fri, 15 Oct 2021 09:05:32 +0000 Subject: [PATCH] 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 --- Tactical/Overhead.cpp | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index 3aa663369..473ef4dec 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -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; }