- Bugfix: AI acts strange (does not shoot out of weapon range, ...) when NCTH is enabled

o AICalcChanceToHitGun the change to hit is reduced to zero if the AI exceeds the gun range by 10% and is only 50% when in that range. 
o I've changed that code to use externalize the parameters to the CTHConstants.ini file. 
o The result is no change in how actual code runs but now those hard coded parameters should be modifiable.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4713 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
Wanne
2011-10-15 19:57:54 +00:00
parent b4f6c3e3ed
commit 73dc6f250d
3 changed files with 19 additions and 5 deletions
+13 -3
View File
@@ -8045,15 +8045,25 @@ UINT32 AICalcChanceToHitGun(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 ubAimTim
}
FLOAT dGunRange = (FLOAT)(GunRange( &(pSoldier->inv[pSoldier->ubAttackingHand]), pSoldier ) );
if ( (dGunRange * 1.1f) < d2DDistance)
FLOAT dMaxGunRange = dGunRange * gGameCTHConstants.MAX_EFFECTIVE_RANGE_MULTIPLIER;
if ( dMaxGunRange < d2DDistance)
{
// Weapon out of conceivable hit range. Reduce chance to hit to 0!
return (0);
}
else if ( dGunRange < d2DDistance)
{
// Just outside range. Reduce considerably!
return (uiChance / 2);
FLOAT dChance = (FLOAT)uiChance;
FLOAT dMaxChanceReduction = (dChance * gGameCTHConstants.MAX_EFFECTIVE_RANGE_REDUCTION);
if (gGameCTHConstants.MAX_EFFECTIVE_USE_GRADIENT)
{
// Just outside range. Reduce considerably!
return min(uiChance, (UINT)(dChance - (dMaxChanceReduction * ((d2DDistance - dGunRange) / (dMaxGunRange - dGunRange)))));
}
else
{
return (UINT)(dChance - dMaxChanceReduction);
}
}
}
return( uiChance );