mirror of
https://github.com/1dot13/source.git
synced 2026-09-09 14:46:05 +02:00
-CTD fix in Tixa in function FindBestPath in PathaAi.cpp
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@334 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+4
-1
@@ -28,8 +28,11 @@ UINT8 InternalDoorTravelCost( SOLDIERTYPE * pSoldier, INT32 iGridNo, UINT8 ubMov
|
|||||||
|
|
||||||
INT16 RecalculatePathCost( SOLDIERTYPE *pSoldier, UINT16 usMovementMode );
|
INT16 RecalculatePathCost( SOLDIERTYPE *pSoldier, UINT16 usMovementMode );
|
||||||
|
|
||||||
|
// Lesh: setup max length of path
|
||||||
|
#define MAX_PATH_DATA_LENGTH 512
|
||||||
|
|
||||||
// Exporting these global variables
|
// Exporting these global variables
|
||||||
extern UINT32 guiPathingData[256];
|
extern UINT32 guiPathingData[MAX_PATH_DATA_LENGTH];
|
||||||
extern UINT8 gubNPCAPBudget;
|
extern UINT8 gubNPCAPBudget;
|
||||||
extern UINT16 gusNPCMovementMode;
|
extern UINT16 gusNPCMovementMode;
|
||||||
extern UINT8 gubNPCDistLimit;
|
extern UINT8 gubNPCDistLimit;
|
||||||
|
|||||||
+5
-2
@@ -400,8 +400,11 @@ BOOLEAN gfPlotDirectPath = FALSE;
|
|||||||
BOOLEAN gfEstimatePath = FALSE;
|
BOOLEAN gfEstimatePath = FALSE;
|
||||||
BOOLEAN gfPathAroundObstacles = TRUE;
|
BOOLEAN gfPathAroundObstacles = TRUE;
|
||||||
|
|
||||||
static UINT32 guiPlottedPath[256];
|
// Lesh: fix CTD in Tixa
|
||||||
UINT32 guiPathingData[256];
|
// The game was trying to store very long path (270 cells) in 256-cell array and corrupted
|
||||||
|
// some data, not belonged to array. It was ordinary array boundary break.
|
||||||
|
static UINT32 guiPlottedPath[MAX_PATH_DATA_LENGTH];
|
||||||
|
UINT32 guiPathingData[MAX_PATH_DATA_LENGTH];
|
||||||
static INT32 giPathDataSize;
|
static INT32 giPathDataSize;
|
||||||
static INT32 giPlotCnt;
|
static INT32 giPlotCnt;
|
||||||
static UINT32 guiEndPlotGridNo;
|
static UINT32 guiEndPlotGridNo;
|
||||||
|
|||||||
@@ -1228,8 +1228,11 @@ INT16 FindSpotMaxDistFromOpponents(SOLDIERTYPE *pSoldier)
|
|||||||
|
|
||||||
// assume we have to stand up!
|
// assume we have to stand up!
|
||||||
// use the min macro here to make sure we don't wrap the UINT8 to 255...
|
// use the min macro here to make sure we don't wrap the UINT8 to 255...
|
||||||
|
// Lesh: for some reason this code still allows to wrap UINT8 at low values of gubNPCAPBudget
|
||||||
gubNPCAPBudget = gubNPCAPBudget = __min( gubNPCAPBudget, gubNPCAPBudget - GetAPsToChangeStance( pSoldier, ANIM_STAND ) );
|
//gubNPCAPBudget = gubNPCAPBudget = __min( gubNPCAPBudget, gubNPCAPBudget - GetAPsToChangeStance( pSoldier, ANIM_STAND ) );
|
||||||
|
// Lesh: will be using this form
|
||||||
|
if ( gubNPCAPBudget > GetAPsToChangeStance( pSoldier, ANIM_STAND ) )
|
||||||
|
gubNPCAPBudget = gubNPCAPBudget - GetAPsToChangeStance( pSoldier, ANIM_STAND );
|
||||||
//NumMessage("Search Range = ",iSearchRange);
|
//NumMessage("Search Range = ",iSearchRange);
|
||||||
//NumMessage("gubNPCAPBudget = ",gubNPCAPBudget);
|
//NumMessage("gubNPCAPBudget = ",gubNPCAPBudget);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user