mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
Merge branch 'master' into ExtraMercs
This commit is contained in:
+22
-27
@@ -1,6 +1,3 @@
|
||||
#ifdef PRECOMPILEDHEADERS
|
||||
#include "AI All.h"
|
||||
#else
|
||||
#include "ai.h"
|
||||
#include "Weapons.h"
|
||||
#include "opplist.h"
|
||||
@@ -28,7 +25,6 @@
|
||||
#include "Rotting Corpses.h" // sevenfm
|
||||
#include "wcheck.h" // sevenfm
|
||||
#include "SmokeEffects.h" // sevenfm
|
||||
#endif
|
||||
|
||||
#include "GameInitOptionsScreen.h"
|
||||
|
||||
@@ -788,10 +784,7 @@ BOOLEAN IsActionAffordable(SOLDIERTYPE *pSoldier, INT8 bAction)
|
||||
break;
|
||||
|
||||
case AI_ACTION_JUMP_WINDOW:
|
||||
if((UsingNewInventorySystem() == true) && pSoldier->inv[BPACKPOCKPOS].exists() == true
|
||||
//JMich.BackpackClimb
|
||||
&& ((gGameExternalOptions.sBackpackWeightToClimb == -1) || (INT16)pSoldier->inv[BPACKPOCKPOS].GetWeightOfObjectInStack() + Item[pSoldier->inv[BPACKPOCKPOS].usItem].sBackpackWeightModifier > gGameExternalOptions.sBackpackWeightToClimb )
|
||||
&& ((gGameExternalOptions.fUseGlobalBackpackSettings == TRUE) || (Item[pSoldier->inv[BPACKPOCKPOS].usItem].fAllowClimbing == FALSE)))
|
||||
if (!pSoldier->CanClimbWithCurrentBackpack())
|
||||
bMinPointsNeeded = GetAPsToJumpThroughWindows( pSoldier, TRUE );
|
||||
else
|
||||
bMinPointsNeeded = GetAPsToJumpFence( pSoldier, FALSE );
|
||||
@@ -5945,7 +5938,7 @@ INT32 RandomizeOpponentLocation(INT32 sSpot, SOLDIERTYPE *pOpponent, INT16 sMaxD
|
||||
}
|
||||
|
||||
// first call PrepareThreatlist to make threat list
|
||||
UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier)
|
||||
UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt)
|
||||
{
|
||||
CHECKF(pSoldier);
|
||||
|
||||
@@ -5955,7 +5948,7 @@ UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier)
|
||||
UINT16 ubClosestOpponentID = NOBODY;
|
||||
|
||||
// use global defined threat list
|
||||
for (uiLoop = 0; uiLoop < guiThreatCnt; uiLoop++)
|
||||
for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++)
|
||||
{
|
||||
// if for some reason we have incorrect location
|
||||
if (TileIsOutOfBounds(Threat[uiLoop].sGridNo))
|
||||
@@ -5975,7 +5968,7 @@ UINT16 ClosestKnownThreatID(SOLDIERTYPE *pSoldier)
|
||||
}
|
||||
|
||||
// first call PrepareThreatlist to make threat list
|
||||
UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax)
|
||||
UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT32 uiThreatCnt, UINT8 ubMax)
|
||||
{
|
||||
CHECKF(pSoldier);
|
||||
|
||||
@@ -5985,7 +5978,7 @@ UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax)
|
||||
UINT16 ubClosestOpponentID = NOBODY;
|
||||
|
||||
// use global defined threat list
|
||||
for (uiLoop = 0; uiLoop < guiThreatCnt; uiLoop++)
|
||||
for (uiLoop = 0; uiLoop < uiThreatCnt; uiLoop++)
|
||||
{
|
||||
// if for some reason we have incorrect location
|
||||
if (TileIsOutOfBounds(Threat[uiLoop].sGridNo))
|
||||
@@ -6008,7 +6001,7 @@ UINT16 ClosestSeenThreatID(SOLDIERTYPE *pSoldier, UINT8 ubMax)
|
||||
return(ubClosestOpponentID);
|
||||
}
|
||||
|
||||
void PrepareThreatlist(SOLDIERTYPE *pSoldier)
|
||||
UINT32 PrepareThreatlist(SOLDIERTYPE *pSoldier)
|
||||
{
|
||||
SOLDIERTYPE *pOpponent;
|
||||
INT32 iThreatRange, iClosestThreatRange = 1500;
|
||||
@@ -6021,10 +6014,10 @@ void PrepareThreatlist(SOLDIERTYPE *pSoldier)
|
||||
INT32 iThreatCertainty;
|
||||
INT32 iMaxThreatRange = MAX_THREAT_RANGE + AI_PATHCOST_RADIUS;
|
||||
|
||||
guiThreatCnt = 0;
|
||||
UINT32 uiThreatCnt = 0;
|
||||
|
||||
if (!pSoldier)
|
||||
return;
|
||||
return 0;
|
||||
|
||||
// look through all opponents for those we know of
|
||||
for (uiLoop = 0; uiLoop < guiNumMercSlots; uiLoop++)
|
||||
@@ -6072,35 +6065,37 @@ void PrepareThreatlist(SOLDIERTYPE *pSoldier)
|
||||
}
|
||||
|
||||
// remember this opponent as a current threat, but DON'T REDUCE FOR COVER!
|
||||
Threat[guiThreatCnt].iValue = CalcManThreatValue(pOpponent, pSoldier->sGridNo, FALSE, pSoldier);
|
||||
Threat[uiThreatCnt].iValue = CalcManThreatValue(pOpponent, pSoldier->sGridNo, FALSE, pSoldier);
|
||||
|
||||
// if the opponent is no threat at all for some reason
|
||||
if (Threat[guiThreatCnt].iValue == -999)
|
||||
if (Threat[uiThreatCnt].iValue == -999)
|
||||
{
|
||||
continue; // check next opponent
|
||||
}
|
||||
|
||||
Threat[guiThreatCnt].pOpponent = pOpponent;
|
||||
Threat[guiThreatCnt].sGridNo = sThreatLoc;
|
||||
Threat[guiThreatCnt].iCertainty = iThreatCertainty;
|
||||
Threat[guiThreatCnt].iOrigRange = iThreatRange;
|
||||
Threat[uiThreatCnt].pOpponent = pOpponent;
|
||||
Threat[uiThreatCnt].sGridNo = sThreatLoc;
|
||||
Threat[uiThreatCnt].iCertainty = iThreatCertainty;
|
||||
Threat[uiThreatCnt].iOrigRange = iThreatRange;
|
||||
|
||||
// calculate how many APs he will have at the start of the next turn
|
||||
Threat[guiThreatCnt].iAPs = pOpponent->CalcActionPoints();
|
||||
Threat[uiThreatCnt].iAPs = pOpponent->CalcActionPoints();
|
||||
|
||||
// sevenfm: more information
|
||||
Threat[guiThreatCnt].bLevel = bThreatLevel;
|
||||
Threat[guiThreatCnt].bKnowledge = bKnowledge;
|
||||
Threat[guiThreatCnt].bPersonalKnowledge = bPersonalKnowledge;
|
||||
Threat[guiThreatCnt].bPublicKnowledge = bPublicKnowledge;
|
||||
Threat[uiThreatCnt].bLevel = bThreatLevel;
|
||||
Threat[uiThreatCnt].bKnowledge = bKnowledge;
|
||||
Threat[uiThreatCnt].bPersonalKnowledge = bPersonalKnowledge;
|
||||
Threat[uiThreatCnt].bPublicKnowledge = bPublicKnowledge;
|
||||
|
||||
if (iThreatRange < iClosestThreatRange)
|
||||
{
|
||||
iClosestThreatRange = iThreatRange;
|
||||
}
|
||||
|
||||
guiThreatCnt++;
|
||||
uiThreatCnt++;
|
||||
}
|
||||
|
||||
return uiThreatCnt;
|
||||
}
|
||||
|
||||
UINT16 CountPublicKnownEnemies(SOLDIERTYPE *pSoldier, INT32 sGridNo, INT16 sDistance)
|
||||
|
||||
Reference in New Issue
Block a user