mirror of
https://github.com/1dot13/source.git
synced 2026-08-12 14:10:23 +02:00
- New Feature: enemy assassins disguise as militia and can ambush player mercs
- Fix: invalid GridNo for mounting weapons git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@5753 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
@@ -1459,6 +1459,59 @@ INT32 ClosestPC( SOLDIERTYPE *pSoldier, INT32 * psDistance )
|
||||
return( sGridNo );
|
||||
}
|
||||
|
||||
// Flugente: like ClosestPC(...), but does not account for covert or not visible mercs
|
||||
INT32 ClosestUnDisguisedPC( SOLDIERTYPE *pSoldier, INT32 * psDistance )
|
||||
{
|
||||
// used by NPCs... find the closest PC
|
||||
// NOTE: skips EPCs!
|
||||
|
||||
UINT8 ubLoop;
|
||||
SOLDIERTYPE *pTargetSoldier;
|
||||
INT32 sMinDist = WORLD_MAX;
|
||||
INT32 sDist;
|
||||
INT32 sGridNo = NOWHERE;
|
||||
|
||||
// Loop through all mercs on player team
|
||||
ubLoop = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
for ( ; ubLoop <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ubLoop++)
|
||||
{
|
||||
pTargetSoldier = Menptr + ubLoop;
|
||||
|
||||
if (!pTargetSoldier->bActive || !pTargetSoldier->bInSector)
|
||||
continue;
|
||||
|
||||
// if not conscious, skip him
|
||||
if (pTargetSoldier->stats.bLife < OKLIFE)
|
||||
continue;
|
||||
|
||||
if ( AM_AN_EPC( pTargetSoldier ) )
|
||||
continue;
|
||||
|
||||
if ( pTargetSoldier->bSoldierFlagMask & (SOLDIER_COVERT_CIV|SOLDIER_COVERT_SOLDIER) )
|
||||
continue;
|
||||
|
||||
sDist = PythSpacesAway(pSoldier->sGridNo,pTargetSoldier->sGridNo);
|
||||
|
||||
// if this PC is not visible to the soldier, then add a penalty to the distance
|
||||
// so that we weight in favour of visible mercs
|
||||
if ( pTargetSoldier->bTeam != pSoldier->bTeam && pSoldier->aiData.bOppList[ ubLoop ] != SEEN_CURRENTLY )
|
||||
continue;
|
||||
|
||||
if (sDist < sMinDist)
|
||||
{
|
||||
sMinDist = sDist;
|
||||
sGridNo = pTargetSoldier->sGridNo;
|
||||
}
|
||||
}
|
||||
|
||||
if ( psDistance )
|
||||
{
|
||||
*psDistance = sMinDist;
|
||||
}
|
||||
|
||||
return( sGridNo );
|
||||
}
|
||||
|
||||
INT32 FindClosestClimbPointAvailableToAI( SOLDIERTYPE * pSoldier, INT32 sStartGridNo, INT32 sDesiredGridNo, BOOLEAN fClimbUp )
|
||||
{
|
||||
INT32 sGridNo;
|
||||
|
||||
Reference in New Issue
Block a user