Improved watched location AI code:

- check that we can see enemy if we raise weapon when considering using noise spot as watched location
- prefer hiding first when in dangerous place if hiding is possible

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8790 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Sevenfm
2020-04-20 22:14:45 +00:00
parent 3fe13b9161
commit 32b6ffe70f
2 changed files with 10 additions and 4 deletions
+6 -3
View File
@@ -6549,10 +6549,13 @@ void HearNoise(SOLDIERTYPE *pSoldier, UINT8 ubNoiseMaker, INT32 sGridNo, INT8 bL
!pSoldier->aiData.bNeutral &&
MercPtrs[ubNoiseMaker] &&
!MercPtrs[ubNoiseMaker]->aiData.bNeutral &&
!pSoldier->IsFlanking() &&
SoldierToVirtualSoldierLineOfSightTest(pSoldier, sGridNo, bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS))
!pSoldier->IsFlanking())
{
IncrementWatchedLoc(pSoldier->ubID, sGridNo, bLevel);
// check that we can see enemy if we raise weapon
gbForceWeaponReady = TRUE;
if (SoldierToVirtualSoldierLineOfSightTest(pSoldier, sGridNo, bLevel, ANIM_STAND, TRUE, CALC_FROM_ALL_DIRS))
IncrementWatchedLoc(pSoldier->ubID, sGridNo, bLevel);
gbForceWeaponReady = FALSE;
}
// Public info is not set unless EVERYONE on the team fails to see the
+4 -1
View File
@@ -3604,7 +3604,10 @@ INT8 DecideActionRed(SOLDIERTYPE *pSoldier)
CountFriendsBlack(pSoldier) > 0 )
{
// prefer hiding when in dangerous place
bWatchPts -= 10;
if (bHidePts > -90)
bWatchPts = min(bWatchPts, bHidePts - 1);
else
bWatchPts--;
}
// sevenfm: don't watch when overcrowded and not in a building