diff --git a/Tactical/opplist.cpp b/Tactical/opplist.cpp index e47e8a23c..ce761bca8 100644 --- a/Tactical/opplist.cpp +++ b/Tactical/opplist.cpp @@ -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 diff --git a/TacticalAI/DecideAction.cpp b/TacticalAI/DecideAction.cpp index dfb7b0010..d3fa766e4 100644 --- a/TacticalAI/DecideAction.cpp +++ b/TacticalAI/DecideAction.cpp @@ -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