- new option AI_SAFE_SUPPRESSION adds additional checks for AI to avoid hitting friends when using suppression fire.
- chance to use suppression fire depends on actual chance to hit and SUPPRESSION_EFFECTIVENESS option
- reduced short burst to 2 bullets.
- improved code to use short burst

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8901 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-10-16 17:53:02 +00:00
parent d867051cd6
commit 47c58e79d5
5 changed files with 68 additions and 7 deletions
+38
View File
@@ -6138,3 +6138,41 @@ UINT8 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier)
return ubNum;
}
// sevenfm: check if suppression is possible (count friends in the fire direction)
BOOLEAN CheckSuppressionDirection(SOLDIERTYPE *pSoldier, INT32 sTargetGridNo, INT8 bTargetLevel)
{
SOLDIERTYPE * pFriend;
UINT8 ubShootingDir;
UINT32 uiLoop;
CHECKF(pSoldier);
CHECKF(!TileIsOutOfBounds(sTargetGridNo));
ubShootingDir = AIDirection(pSoldier->sGridNo, sTargetGridNo);
for (uiLoop = 0; uiLoop < guiNumMercSlots; ++uiLoop)
{
pFriend = MercSlots[uiLoop];
if (pFriend &&
pFriend != pSoldier &&
pFriend->bActive &&
pFriend->bVisible == TRUE &&
pFriend->stats.bLife >= OKLIFE &&
(pFriend->bSide == pSoldier->bSide || CONSIDERED_NEUTRAL(pSoldier, pFriend)) &&
(pFriend->pathing.bLevel == pSoldier->pathing.bLevel || pFriend->pathing.bLevel == bTargetLevel) &&
ubShootingDir == AIDirection(pSoldier->sGridNo, pFriend->sGridNo) &&
PythSpacesAway(pSoldier->sGridNo, pFriend->sGridNo) > 1 &&
PythSpacesAway(pSoldier->sGridNo, pFriend->sGridNo) < 2 * TACTICAL_RANGE &&
(gAnimControl[pFriend->usAnimState].ubHeight == ANIM_STAND || gGameExternalOptions.fAllowTargetHeadAndLegIfProne) &&
//!pFriend->IsCowering() &&
AISoldierToSoldierChanceToGetThrough(pSoldier, pFriend) > 25)
//LocationToLocationLineOfSightTest(pSoldier->sGridNo, pSoldier->pathing.bLevel, pFriend->sGridNo, pFriend->pathing.bLevel, TRUE, NO_DISTANCE_LIMIT))
{
return FALSE;
}
}
return TRUE;
}