Merge branch 'master' into ExtraMercs

This commit is contained in:
Asdow
2023-07-26 13:17:49 +03:00
754 changed files with 9435 additions and 74371 deletions
+22 -27
View File
@@ -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)