- Tweaked tunnel vision penalty calculation

- If both body items and weapon have tunnel vision penalties, use their maximum, not their sum

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8134 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Flugente
2016-04-03 16:53:17 +00:00
parent 6089e9a3b8
commit d0dc6c3230
2 changed files with 30 additions and 33 deletions
+15 -17
View File
@@ -1204,6 +1204,7 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
INT8 bLightLevel;
BOOLEAN sideViewLimit = FALSE;
SOLDIERTYPE* pSubject = SimpleFindSoldier( sSubjectGridNo, bLevel );
INT16 tunnelVisionInPercent = 0;
if (pSoldier->flags.uiStatusFlags & SOLDIER_MONSTER)
{
@@ -1271,27 +1272,19 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
sDistVisible = gbLookDistance[bFacingDir][bSubjectDir];
// Lesh: and this
if ( (sDistVisible == 0) && fLimitedVision )
return(0);
if ( sDistVisible != STRAIGHT )
{
INT16 tunnelVisionInPercent = GetPercentTunnelVision(pSoldier);
if ( tunnelVisionInPercent > 0)
{
sideViewLimit = TRUE;
sDistVisible = sDistVisible * (100 - tunnelVisionInPercent ) / 100 ;
}
}
// ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_INTERFACE, L"sDistVisible: %d", GetPercentTunnelVision(pSoldier) );
if ( sDistVisible == 0 && fLimitedVision )
return 0;
if ( sDistVisible == ANGLE && (pSoldier->bTeam == OUR_TEAM || pSoldier->aiData.bAlertStatus >= STATUS_RED ) )
{
sDistVisible = STRAIGHT;
}
if ( sDistVisible != STRAIGHT || ( fLimitedVision && (bFacingDir != bSubjectDir) ) )
{
tunnelVisionInPercent = GetPercentTunnelVision( pSoldier );
}
sDistVisible *= 2;
if ( pSoldier->usAnimState == RUNNING )
@@ -1302,6 +1295,13 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
sDistVisible = (INT16) (sDistVisible * ANGLE_RATIO);
}
}
// Flugente: we only apply tunnelvision now, after we've possibly extended the sight range, which results in finer differentiation of effects
if ( tunnelVisionInPercent > 0 )
{
sideViewLimit = TRUE;
sDistVisible = sDistVisible * (100 - tunnelVisionInPercent) / 100;
}
}
}
@@ -1352,8 +1352,6 @@ INT16 DistanceVisible( SOLDIERTYPE *pSoldier, INT8 bFacingDir, INT8 bSubjectDir,
IS_MERC_BODY_TYPE(pSoldier) && (pSoldier->bTeam == ENEMY_TEAM || pSoldier->bTeam == MILITIA_TEAM || pSoldier->bTeam == gbPlayerNum) &&
gGameExternalOptions.ubMaxSuppressionShock > 0 && sDistVisible > 0 )
{
// Make sure character is cowering.
if ( CoweringShockLevel(pSoldier) )
{