Use TACTICAL_RANGE instead of DAY_VISION_RANGE for AI calculations.

Implemented Black cover advance code for AI: try to get closer to enemy using cover if soldier has low CTH or enemy too far for shooting or soldier has high morale or no cover at spot.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8931 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2021-02-11 19:11:54 +00:00
parent 02cba3e1e5
commit 18dcced82a
5 changed files with 195 additions and 39 deletions
+5 -5
View File
@@ -4115,7 +4115,7 @@ UINT8 CountFriendsBlack( SOLDIERTYPE *pSoldier, INT32 sClosestOpponent )
//sFriendClosestOpponent = ClosestKnownOpponent( pFriend, NULL, NULL );
sFriendClosestOpponent = ClosestSeenOpponent( pFriend, NULL, NULL );
if(!TileIsOutOfBounds(sFriendClosestOpponent) &&
PythSpacesAway( sClosestOpponent, sFriendClosestOpponent ) < (INT16)DAY_VISION_RANGE / 4 &&
PythSpacesAway( sClosestOpponent, sFriendClosestOpponent ) < (INT16)TACTICAL_RANGE / 4 &&
pFriend->aiData.bAlertStatus == STATUS_BLACK &&
pFriend->stats.bLife > pFriend->stats.bLifeMax / 2 &&
( GetNearestRottingCorpseAIWarning( pFriend->sGridNo ) == 0 && !InLightAtNight(pFriend->sGridNo, pFriend->pathing.bLevel) ||
@@ -4506,7 +4506,7 @@ UINT8 RedSmokeDanger(INT32 sGridNo, INT8 bLevel)
UINT32 uiCnt;
INT32 sDist;
INT32 sClosestDist;
INT32 sMaxDist = min(gSkillTraitValues.usVOMortarRadius, DAY_VISION_RANGE);
INT32 sMaxDist = min(gSkillTraitValues.usVOMortarRadius, TACTICAL_RANGE);
INT32 sClosestSmoke = NOWHERE;
UINT8 ubDangerPercent = 0;
@@ -5011,7 +5011,7 @@ BOOLEAN AICheckIsSniper(SOLDIERTYPE *pSoldier)
return FALSE;
}*/
if ((AIGunRange(pSoldier) > DAY_VISION_RANGE || AICheckHasWeaponOfType(pSoldier, GUN_SN_RIFLE)) &&
if ((AIGunRange(pSoldier) > TACTICAL_RANGE || AICheckHasWeaponOfType(pSoldier, GUN_SN_RIFLE)) &&
AIGunScoped(pSoldier) &&
pSoldier->stats.bMarksmanship > 90 &&
gGameOptions.fNewTraitSystem &&
@@ -5044,7 +5044,7 @@ BOOLEAN AICheckIsMarksman(SOLDIERTYPE *pSoldier)
return FALSE;
}
if (AIGunRange(pSoldier) >= DAY_VISION_RANGE &&
if (AIGunRange(pSoldier) >= TACTICAL_RANGE &&
(AIGunScoped(pSoldier) || pSoldier->stats.bMarksmanship > 90 || gGameOptions.fNewTraitSystem && HAS_SKILL_TRAIT(pSoldier, SNIPER_NT)))
{
return TRUE;
@@ -5633,7 +5633,7 @@ BOOLEAN AICheckShortWeaponRange(SOLDIERTYPE *pSoldier)
return TRUE;
}
if (AIGunRange(pSoldier) < DAY_VISION_RANGE / 2)
if (AIGunRange(pSoldier) < TACTICAL_RANGE / 2)
{
return TRUE;
}