mirror of
https://github.com/1dot13/source.git
synced 2026-08-19 14:20:30 +02:00
AI and tactics improvements (by Sevenfm):
New options: AI_YELLOW_FLANKING - yellow flanking is disabled by default IMPROVED_TACTICAL_UI - use name color to show soldier's status (disguised, drunk) Removed obsolete options: SHOW_COVER_INDICATOR SHOW_ENEMY_RANK_ICON SHOW_ENEMY_AWARENESS Fixes and improvements: - collapsed enemies should not taunt - if soldier is unconscious, he can't see anything or anybody - ClosestReachableDisturbance - performance improvement - allow InternalGoAsFarAsPossibleTowards to jump over fences git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@8226 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+21
-15
@@ -948,6 +948,7 @@ INT32 ClosestReachableDisturbance(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK,
|
||||
INT8 *pbPersOL,*pbPublOL;
|
||||
INT32 sClimbGridNo;
|
||||
SOLDIERTYPE * pOpp;
|
||||
INT32 sDistToEnemy, sDistToClosestEnemy = 10000;
|
||||
|
||||
// sevenfm: safety check
|
||||
if ( pfChangeLevel )
|
||||
@@ -1034,23 +1035,28 @@ INT32 ClosestReachableDisturbance(SOLDIERTYPE *pSoldier, UINT8 ubUnconsciousOK,
|
||||
continue;
|
||||
}
|
||||
|
||||
iPathCost = EstimatePathCostToLocation( pSoldier, sGridNo, bLevel, FALSE, &fClimbingNecessary, &sClimbGridNo );
|
||||
|
||||
// if we can get there and it's first reachable enemy or closer than other known enemies
|
||||
if( iPathCost != 0 &&
|
||||
(TileIsOutOfBounds(sClosestDisturbance) || iPathCost < iShortestPath) )
|
||||
// sevenfm: if we found reachable enemy, check other enemies only if they are closer
|
||||
sDistToEnemy = PythSpacesAway( pSoldier->sGridNo, sGridNo );
|
||||
if (sDistToEnemy < sDistToClosestEnemy || TileIsOutOfBounds(sClosestDisturbance) )
|
||||
{
|
||||
if (fClimbingNecessary)
|
||||
{
|
||||
sClosestDisturbance = sClimbGridNo;
|
||||
}
|
||||
else
|
||||
{
|
||||
sClosestDisturbance = sGridNo;
|
||||
}
|
||||
iPathCost = EstimatePathCostToLocation( pSoldier, sGridNo, bLevel, FALSE, &fClimbingNecessary, &sClimbGridNo );
|
||||
|
||||
iShortestPath = iPathCost;
|
||||
fClosestClimbingNecessary = fClimbingNecessary;
|
||||
// if we can get there and it's first reachable enemy or closer than other known enemies
|
||||
if (iPathCost != 0 && (TileIsOutOfBounds(sClosestDisturbance) || iPathCost < iShortestPath))
|
||||
{
|
||||
if (fClimbingNecessary)
|
||||
{
|
||||
sClosestDisturbance = sClimbGridNo;
|
||||
}
|
||||
else
|
||||
{
|
||||
sClosestDisturbance = sGridNo;
|
||||
}
|
||||
|
||||
sDistToClosestEnemy = sDistToEnemy;
|
||||
iShortestPath = iPathCost;
|
||||
fClosestClimbingNecessary = fClimbingNecessary;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user