mirror of
https://github.com/1dot13/source.git
synced 2026-07-29 13:52:17 +02:00
Merged revision(s) 7082 from branches/ja2_source_official_2014:
Fix: huge amounts of memory are allocated for AStar pathing but are never used. This also causes a significant slowdown every time a turn ends git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7083 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+9
-9
@@ -15,9 +15,9 @@
|
||||
#ifdef JA2EDITOR
|
||||
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Unfinished Business - Map Editor v1.13.7083 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Map Editor v1.13.7083 (Development Build)" };
|
||||
#endif
|
||||
|
||||
// ------------------------------
|
||||
@@ -27,11 +27,11 @@
|
||||
|
||||
//DEBUG BUILD VERSION
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: Unfinished Business - v1.13.7083 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: JA2 Demo - v1.13.7083 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Debug: v1.13.7083 (Development Build)" };
|
||||
#endif
|
||||
|
||||
#elif defined CRIPPLED_VERSION
|
||||
@@ -46,16 +46,16 @@
|
||||
|
||||
//RELEASE BUILD VERSION
|
||||
#ifdef JA2UB
|
||||
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release Unfinished Business - v1.13.7083 (Development Build)" };
|
||||
#elif defined (JA113DEMO)
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release JA2 Demo - v1.13.7083 (Development Build)" };
|
||||
#else
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.7057 (Development Build)" };
|
||||
CHAR16 zVersionLabel[256] = { L"Release v1.13.7083 (Development Build)" };
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
CHAR8 czVersionNumber[16] = { "Build 14.03.12" }; //YY.MM.DD
|
||||
CHAR8 czVersionNumber[16] = { "Build 14.03.18" }; //YY.MM.DD
|
||||
CHAR16 zTrackingNumber[16] = { L"Z" };
|
||||
|
||||
// SAVE_GAME_VERSION is defined in header, change it there
|
||||
|
||||
+105
-177
@@ -532,12 +532,11 @@ void PreventFromTheFreezingBug(SOLDIERTYPE* pSoldier)
|
||||
// MAIN TACTICAL UI HANDLER
|
||||
UINT32 HandleTacticalUI( void )
|
||||
{
|
||||
UINT32 ReturnVal = GAME_SCREEN;
|
||||
UINT32 uiNewEvent;
|
||||
INT32 usMapPos;
|
||||
LEVELNODE *pIntTile;
|
||||
static LEVELNODE *pOldIntTile = NULL;
|
||||
|
||||
UINT32 ReturnVal = GAME_SCREEN;
|
||||
UINT32 uiNewEvent;
|
||||
INT32 usMapPos;
|
||||
LEVELNODE *pIntTile;
|
||||
static LEVELNODE *pOldIntTile = NULL;
|
||||
|
||||
// RESET FLAGS
|
||||
gfUIDisplayActionPoints = FALSE;
|
||||
@@ -630,7 +629,6 @@ UINT32 HandleTacticalUI( void )
|
||||
GetRTMouseButtonInput( &uiNewEvent );
|
||||
// FROM KEYBOARD
|
||||
GetKeyboardInput( &uiNewEvent );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -643,8 +641,6 @@ UINT32 HandleTacticalUI( void )
|
||||
// FROM KEYBOARD
|
||||
GetKeyboardInput( &uiNewEvent );
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -681,10 +677,8 @@ UINT32 HandleTacticalUI( void )
|
||||
{
|
||||
gfUISelectiveTargetFound = TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Check if current event has changed and clear event if so, to prepare it for execution
|
||||
// Clearing it does things like set first time flag, param variables, etc
|
||||
if ( uiNewEvent != guiOldEvent )
|
||||
@@ -739,7 +733,6 @@ UINT32 HandleTacticalUI( void )
|
||||
ErasePath( TRUE );
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check if menu event is done and if so set to privious mode
|
||||
@@ -777,7 +770,6 @@ UINT32 HandleTacticalUI( void )
|
||||
gfUIDisplayActionPoints = FALSE;
|
||||
}
|
||||
|
||||
|
||||
// Will set the cursor but only if different
|
||||
SetUIMouseCursor( );
|
||||
|
||||
@@ -791,7 +783,6 @@ UINT32 HandleTacticalUI( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return( ReturnVal );
|
||||
}
|
||||
|
||||
@@ -804,7 +795,6 @@ void SetUIMouseCursor( )
|
||||
static INT32 sOldExitGridNo = NOWHERE;
|
||||
static BOOLEAN fOkForExit = FALSE;
|
||||
|
||||
|
||||
// Check if we moved from confirm mode on exit arrows
|
||||
// If not in move mode, return!
|
||||
if ( gCurrentUIMode == MOVE_MODE )
|
||||
@@ -819,7 +809,6 @@ void SetUIMouseCursor( )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gfUIShowExitEast )
|
||||
{
|
||||
gfUIDisplayActionPoints = FALSE;
|
||||
@@ -901,7 +890,6 @@ void SetUIMouseCursor( )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gfUIShowExitSouth )
|
||||
{
|
||||
gfUIDisplayActionPoints = FALSE;
|
||||
@@ -932,8 +920,7 @@ void SetUIMouseCursor( )
|
||||
|
||||
MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL,
|
||||
VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK );
|
||||
|
||||
|
||||
|
||||
// Adjust where we blit our cursor!
|
||||
gsGlobalCursorYOffset = 0;
|
||||
SetCurrentCursorFromDatabase( CURSOR_NORMAL );
|
||||
@@ -956,7 +943,6 @@ void SetUIMouseCursor( )
|
||||
SetCurrentCursorFromDatabase( gUICursors[ guiNewUICursor ].usFreeCursorName );
|
||||
|
||||
gfViewPortAdjustedForSouth = TRUE;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -970,7 +956,6 @@ void SetUIMouseCursor( )
|
||||
MSYS_DefineRegion( &gViewportRegion, 0, 0 ,gsVIEWPORT_END_X, gsVIEWPORT_WINDOW_END_Y, MSYS_PRIORITY_NORMAL,
|
||||
VIDEO_NO_CURSOR, MSYS_NO_CALLBACK, MSYS_NO_CALLBACK );
|
||||
|
||||
|
||||
// Adjust where we blit our cursor!
|
||||
gsGlobalCursorYOffset = 0;
|
||||
SetCurrentCursorFromDatabase( CURSOR_NORMAL );
|
||||
@@ -1032,7 +1017,6 @@ void SetUIMouseCursor( )
|
||||
{
|
||||
sOldExitGridNo = NOWHERE;
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1081,13 +1065,11 @@ void ClearEvent( UI_EVENT *pUIEvent )
|
||||
pUIEvent->fDoneMenu = FALSE;
|
||||
pUIEvent->fFirstTime = TRUE;
|
||||
pUIEvent->uiMenuPreviousMode = 0;
|
||||
|
||||
}
|
||||
|
||||
void EndMenuEvent( UINT32 uiEvent )
|
||||
{
|
||||
gEvents[ uiEvent ].fDoneMenu = TRUE;
|
||||
|
||||
}
|
||||
|
||||
// HANDLER FUCNTIONS
|
||||
@@ -1108,13 +1090,12 @@ UINT32 UIHandleExit( UI_EVENT *pUIEvent )
|
||||
UINT32 UIHandleNewMerc( UI_EVENT *pUIEvent )
|
||||
{
|
||||
static UINT8 ubTemp = 3;
|
||||
INT32 usMapPos;
|
||||
INT32 usMapPos;
|
||||
static INT32 iSoldierCount=0;
|
||||
MERC_HIRE_STRUCT HireMercStruct;
|
||||
INT8 bReturnCode;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
|
||||
// Get Grid Corrdinates of mouse
|
||||
if( GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
@@ -1204,9 +1185,9 @@ UINT32 UIHandleNewBadMerc( UI_EVENT *pUIEvent )
|
||||
{
|
||||
switch( pSoldier->ubSoldierClass )
|
||||
{
|
||||
case SOLDIER_CLASS_ADMINISTRATOR: pSector->ubNumAdmins++; pSector->ubAdminsInBattle++; break;
|
||||
case SOLDIER_CLASS_ARMY: pSector->ubNumTroops++; pSector->ubTroopsInBattle++; break;
|
||||
case SOLDIER_CLASS_ELITE: pSector->ubNumElites++; pSector->ubElitesInBattle++; break;
|
||||
case SOLDIER_CLASS_ADMINISTRATOR: pSector->ubNumAdmins++; pSector->ubAdminsInBattle++; break;
|
||||
case SOLDIER_CLASS_ARMY: pSector->ubNumTroops++; pSector->ubTroopsInBattle++; break;
|
||||
case SOLDIER_CLASS_ELITE: pSector->ubNumElites++; pSector->ubElitesInBattle++; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1217,23 +1198,22 @@ UINT32 UIHandleNewBadMerc( UI_EVENT *pUIEvent )
|
||||
AllTeamsLookForAll( NO_INTERRUPTS );
|
||||
}
|
||||
}
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
|
||||
UINT32 UIHandleEnterEditMode( UI_EVENT *pUIEvent )
|
||||
{
|
||||
return( EDIT_SCREEN );
|
||||
return( EDIT_SCREEN );
|
||||
}
|
||||
|
||||
UINT32 UIHandleEnterPalEditMode( UI_EVENT *pUIEvent )
|
||||
{
|
||||
return( PALEDIT_SCREEN );
|
||||
return( PALEDIT_SCREEN );
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
|
||||
{
|
||||
CHAR16 zString[128];
|
||||
@@ -1262,7 +1242,7 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
|
||||
guiPreviousOptionScreen = guiCurrentScreen;
|
||||
|
||||
//increment end turn number
|
||||
guiLastSaveGameNum++;
|
||||
++guiLastSaveGameNum;
|
||||
if( guiLastSaveGameNum == 2 )
|
||||
guiLastSaveGameNum = 0;
|
||||
|
||||
@@ -1270,65 +1250,75 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
|
||||
SaveGame(SAVE__END_TURN_NUM, zString );
|
||||
}
|
||||
|
||||
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
|
||||
#ifdef USE_ASTAR_PATHS
|
||||
////ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ
|
||||
if ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
{
|
||||
memset( gubWorldTileInLight, FALSE, sizeof( gubWorldTileInLight ) );
|
||||
memset( gubIsCorpseThere, FALSE, sizeof( gubIsCorpseThere ) );
|
||||
memset( gubMerkCanSeeThisTile, FALSE, sizeof( gubMerkCanSeeThisTile ) );
|
||||
memset( gubWorldTileInLight, FALSE, sizeof( gubWorldTileInLight ) );
|
||||
memset( gubIsCorpseThere, FALSE, sizeof( gubIsCorpseThere ) );
|
||||
memset( gubMerkCanSeeThisTile, FALSE, sizeof( gubMerkCanSeeThisTile ) );
|
||||
|
||||
//ðàçâåðòêà öèêëà. ïðè èçìåíåíèè WORLD_MAX íà äð.çíà÷. íåîáõîäèìî áóäåò ïîä÷èùàòü õâîñòû! èáî îïàñíûé êîä!!! ;)
|
||||
//ðàçâåðòêà öèêëà. ïðè èçìåíåíèè WORLD_MAX íà äð.çíà÷. íåîáõîäèìî áóäåò ïîä÷èùàòü õâîñòû! èáî îïàñíûé êîä!!! ;)
|
||||
|
||||
// WANNE: We had a custom user map (Tixa, J9), where the following loop caused an unhandled exception.
|
||||
// The crash occurd at ~index 16000 when calling the method IsCorpseAtGridNo() ...
|
||||
// I don't know what causes it ...
|
||||
// Just try/catch (ugly, but works).
|
||||
__try
|
||||
{
|
||||
for(UINT32 i=0; i<(UINT32)WORLD_MAX ;i+=4)
|
||||
{
|
||||
gubWorldTileInLight[i] = InLightAtNight(i, gpWorldLevelData[ i ].sHeight);
|
||||
gubIsCorpseThere[i] = IsCorpseAtGridNo( i, gpWorldLevelData[ i ].sHeight );
|
||||
gubWorldTileInLight[i+1] = InLightAtNight(i+1, gpWorldLevelData[ i+1 ].sHeight);
|
||||
gubIsCorpseThere[i+1] = IsCorpseAtGridNo( i+1, gpWorldLevelData[ i+1 ].sHeight );
|
||||
gubWorldTileInLight[i+2] = InLightAtNight(i+2, gpWorldLevelData[ i+2 ].sHeight);
|
||||
gubIsCorpseThere[i+2] = IsCorpseAtGridNo( i+2, gpWorldLevelData[ i+2 ].sHeight );
|
||||
gubWorldTileInLight[i+3] = InLightAtNight(i+3, gpWorldLevelData[ i+3 ].sHeight);
|
||||
gubIsCorpseThere[i+3] = IsCorpseAtGridNo( i+3, gpWorldLevelData[ i+3 ].sHeight );
|
||||
}
|
||||
}
|
||||
__except( EXCEPTION_EXECUTE_HANDLER )
|
||||
{
|
||||
// WANNE: Ignore, so the game can continue ...
|
||||
}
|
||||
|
||||
INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
SOLDIERTYPE *tS;
|
||||
|
||||
INT16 sXOffset, sYOffset;
|
||||
INT32 sGridNo;UINT16 usSightLimit=0;
|
||||
|
||||
for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; tcnt++,tS++ )
|
||||
if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector )
|
||||
// WANNE: We had a custom user map (Tixa, J9), where the following loop caused an unhandled exception.
|
||||
// The crash occurd at ~index 16000 when calling the method IsCorpseAtGridNo() ...
|
||||
// I don't know what causes it ...
|
||||
// Just try/catch (ugly, but works).
|
||||
__try
|
||||
{
|
||||
for(UINT32 i=0; i<(UINT32)WORLD_MAX; i+=4)
|
||||
{
|
||||
gubWorldTileInLight[i] = InLightAtNight(i, gpWorldLevelData[ i ].sHeight);
|
||||
gubIsCorpseThere[i] = IsCorpseAtGridNo( i, gpWorldLevelData[ i ].sHeight );
|
||||
gubWorldTileInLight[i+1] = InLightAtNight(i+1, gpWorldLevelData[ i+1 ].sHeight);
|
||||
gubIsCorpseThere[i+1] = IsCorpseAtGridNo( i+1, gpWorldLevelData[ i+1 ].sHeight );
|
||||
gubWorldTileInLight[i+2] = InLightAtNight(i+2, gpWorldLevelData[ i+2 ].sHeight);
|
||||
gubIsCorpseThere[i+2] = IsCorpseAtGridNo( i+2, gpWorldLevelData[ i+2 ].sHeight );
|
||||
gubWorldTileInLight[i+3] = InLightAtNight(i+3, gpWorldLevelData[ i+3 ].sHeight);
|
||||
gubIsCorpseThere[i+3] = IsCorpseAtGridNo( i+3, gpWorldLevelData[ i+3 ].sHeight );
|
||||
}
|
||||
}
|
||||
__except( EXCEPTION_EXECUTE_HANDLER )
|
||||
{
|
||||
//loop through all the gridnos that we are interested in
|
||||
for (sYOffset = -30; sYOffset <= 30; sYOffset++)
|
||||
for (sXOffset = -30; sXOffset <= 30; sXOffset++)
|
||||
{
|
||||
sGridNo = tS->sGridNo + sXOffset + (MAXCOL * sYOffset);
|
||||
if ( sGridNo <= 0 || sGridNo >= WORLD_MAX )
|
||||
continue;
|
||||
//usSightLimit = tS->GetMaxDistanceVisible(sGridNo, FALSE, CALC_FROM_WANTED_DIR);
|
||||
if(gubMerkCanSeeThisTile[sGridNo]==0)
|
||||
gubMerkCanSeeThisTile[sGridNo]=//SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, FALSE, ANIM_STAND, TRUE, usSightLimit );
|
||||
SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, tS->pathing.bLevel,
|
||||
ANIM_STAND, TRUE, CALC_FROM_WANTED_DIR);
|
||||
// WANNE: Ignore, so the game can continue ...
|
||||
}
|
||||
|
||||
}//fo
|
||||
}//if
|
||||
INT32 tcnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
SOLDIERTYPE *tS;
|
||||
|
||||
INT16 sXOffset, sYOffset;
|
||||
INT32 sGridNo;
|
||||
UINT16 usSightLimit=0;
|
||||
|
||||
for ( tS = MercPtrs[ tcnt ]; tcnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; ++tcnt, tS++ )
|
||||
{
|
||||
if ( tS->stats.bLife >= OKLIFE && tS->sGridNo != NOWHERE && tS->bInSector )
|
||||
{
|
||||
//loop through all the gridnos that we are interested in
|
||||
for (sYOffset = -30; sYOffset <= 30; ++sYOffset)
|
||||
{
|
||||
for (sXOffset = -30; sXOffset <= 30; ++sXOffset)
|
||||
{
|
||||
sGridNo = tS->sGridNo + sXOffset + (MAXCOL * sYOffset);
|
||||
|
||||
if ( sGridNo <= 0 || sGridNo >= WORLD_MAX )
|
||||
continue;
|
||||
|
||||
//usSightLimit = tS->GetMaxDistanceVisible(sGridNo, FALSE, CALC_FROM_WANTED_DIR);
|
||||
if(gubMerkCanSeeThisTile[sGridNo]==0)
|
||||
{
|
||||
gubMerkCanSeeThisTile[sGridNo]=//SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, FALSE, ANIM_STAND, TRUE, usSightLimit );
|
||||
SoldierToVirtualSoldierLineOfSightTest( tS, sGridNo, tS->pathing.bLevel, ANIM_STAND, TRUE, CALC_FROM_WANTED_DIR);
|
||||
}
|
||||
}//fo
|
||||
}
|
||||
}//if
|
||||
}
|
||||
}
|
||||
//ddd îïòèìèçàöèÿ äëÿ õîäà äðàíèêîâ**
|
||||
|
||||
#endif
|
||||
|
||||
// End our turn!
|
||||
if (is_server || !is_client)
|
||||
{
|
||||
@@ -1336,7 +1326,6 @@ UINT32 UIHandleEndTurn( UI_EVENT *pUIEvent )
|
||||
}
|
||||
if(!is_server && is_client)
|
||||
{
|
||||
|
||||
if (INTERRUPT_QUEUED)
|
||||
{
|
||||
EndTurn( gbPlayerNum + 1 );//is ending interrupt instead
|
||||
@@ -1539,7 +1528,6 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent )
|
||||
fOverItems = FALSE;
|
||||
}
|
||||
|
||||
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( GetExitGrid( usMapPos, &ExitGrid ) && pSoldier->pathing.bLevel == 0 )
|
||||
@@ -1628,9 +1616,7 @@ UINT32 UIHandleMOnTerrain( UI_EVENT *pUIEvent )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
|
||||
//if ( fSetCursor && guiNewUICursor != ENTER_VEHICLE_UICURSOR )
|
||||
if ( fSetCursor && !gfBeginVehicleCursor )
|
||||
{
|
||||
@@ -1645,7 +1631,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
|
||||
// Get soldier
|
||||
if ( !GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
@@ -1660,7 +1645,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
|
||||
|
||||
// Change cusror to normal
|
||||
guiNewUICursor = NORMAL_FREEUICURSOR;
|
||||
|
||||
}
|
||||
|
||||
// Check for done flag
|
||||
@@ -1721,14 +1705,12 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
|
||||
|
||||
UIHandleSoldierStanceChange( pSoldier->ubID, ANIM_PRONE );
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
guiPendingOverrideEvent = A_CHANGE_TO_MOVE;
|
||||
|
||||
//pSoldier->usUIMovementMode = (INT8)pUIEvent->uiParams[ 0 ];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1738,7 +1720,6 @@ UINT32 UIHandleMovementMenu( UI_EVENT *pUIEvent )
|
||||
|
||||
UINT32 UIHandlePositionMenu( UI_EVENT *pUIEvent )
|
||||
{
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
@@ -1791,7 +1772,6 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, FALSE );
|
||||
@@ -1821,20 +1801,14 @@ UINT32 UIHandleAOnTerrain( UI_EVENT *pUIEvent )
|
||||
|
||||
gUITargetReady = TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
gUITargetReady = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return( GAME_SCREEN );
|
||||
|
||||
}
|
||||
@@ -1901,7 +1875,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
|
||||
|
||||
if ( pInvTile != NULL )
|
||||
{
|
||||
|
||||
fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, MOVEUI_TARGET_INTTILES );
|
||||
|
||||
//Set UI CURSOR
|
||||
@@ -1913,7 +1886,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
|
||||
gfUIHandleShowMoveGrid = 2;
|
||||
}
|
||||
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
@@ -1934,7 +1906,6 @@ UINT32 UIHandleCWait( UI_EVENT *pUIEvent )
|
||||
//DrawUIMovementPath( pSoldier, sMapPos, 0 );
|
||||
fSetCursor = HandleUIMovementCursor( pSoldier, uiCursorFlags, usMapPos, 0 );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return( GAME_SCREEN );
|
||||
@@ -1980,14 +1951,14 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
|
||||
{
|
||||
if ( OK_CONTROLLABLE_MERC( pSoldier ) && pSoldier->bAssignment == CurrentSquad( ) && !pSoldier->flags.fMercAsleep )
|
||||
{
|
||||
// If we can't be controlled, returninvalid...
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT )
|
||||
{
|
||||
if ( !pSoldier->CanRobotBeControlled( ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
// If we can't be controlled, returninvalid...
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_ROBOT )
|
||||
{
|
||||
if ( !pSoldier->CanRobotBeControlled( ) )
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
pSoldier->AdjustNoAPToFinishMove( FALSE );
|
||||
|
||||
@@ -2006,8 +1977,7 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
|
||||
|
||||
// Remove any previous actions
|
||||
pSoldier->aiData.ubPendingAction = NO_PENDING_ACTION;
|
||||
|
||||
|
||||
|
||||
//if ( !( gTacticalStatus.uiFlags & INCOMBAT ) && ( gAnimControl[ pSoldier->usAnimState ].uiFlags & ANIM_MOVING ) )
|
||||
//{
|
||||
// pSoldier->sRTPendingMovementGridNo = sMapPos;
|
||||
@@ -2033,7 +2003,6 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
|
||||
SetConfirmMovementModeCursor( pSoldier, TRUE );
|
||||
|
||||
gfUIAllMoveOn = 0;
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2061,11 +2030,9 @@ UINT32 UIHandleCMoveMerc( UI_EVENT *pUIEvent )
|
||||
{
|
||||
pSoldier->usUIMovementMode = pSoldier->GetMoveStateBasedOnStance( gAnimControl[ pSoldier->usAnimState ].ubEndHeight );
|
||||
}
|
||||
|
||||
|
||||
|
||||
sDestGridNo = usMapPos;
|
||||
|
||||
|
||||
// Get structure info for in tile!
|
||||
pIntTile = GetCurInteractiveTileGridNoAndStructure( &sIntTileGridNo, &pStructure );
|
||||
|
||||
@@ -2223,18 +2190,15 @@ UINT32 UIHandleMCycleMovement( UI_EVENT *pUIEvent )
|
||||
fGoodMode = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
} while( fGoodMode != TRUE );
|
||||
|
||||
gfPlotNewMovement = TRUE;
|
||||
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
UINT32 UIHandleCOnTerrain( UI_EVENT *pUIEvent )
|
||||
{
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
@@ -2242,19 +2206,18 @@ UINT32 UIHandleCOnTerrain( UI_EVENT *pUIEvent )
|
||||
UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
INT32 iPosDiff;
|
||||
INT32 iPosDiff;
|
||||
static UINT16 gusAnchorMouseY;
|
||||
static UINT16 usOldMouseY;
|
||||
static BOOLEAN ubNearHeigherLevel;
|
||||
static BOOLEAN ubNearLowerLevel;
|
||||
static BOOLEAN ubNearHeigherLevel;
|
||||
static BOOLEAN ubNearLowerLevel;
|
||||
static UINT8 ubUpHeight, ubDownDepth;
|
||||
static UINT32 uiOldShowUPDownArrows;
|
||||
INT8 bNewDirection;
|
||||
INT8 bNewDirection;
|
||||
|
||||
// Change cusror to normal
|
||||
guiNewUICursor = NO_UICURSOR;
|
||||
|
||||
|
||||
if ( pUIEvent->fFirstTime )
|
||||
{
|
||||
gusAnchorMouseY = gusMouseYPos;
|
||||
@@ -2347,10 +2310,7 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check if delta X has changed alot since last time
|
||||
@@ -2411,12 +2371,10 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if ( gusAnchorMouseY < gusMouseYPos )
|
||||
{
|
||||
|
||||
// Get soldier
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
@@ -2468,11 +2426,8 @@ UINT32 UIHandleMAdjustStanceMode( UI_EVENT *pUIEvent )
|
||||
gbClimbID = -1;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
uiOldShowUPDownArrows = guiShowUPDownArrows;
|
||||
@@ -2487,7 +2442,6 @@ UINT32 UIHandleAChangeToConfirmAction( UI_EVENT *pUIEvent )
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
HandleLeftClickCursor( pSoldier );
|
||||
|
||||
}
|
||||
|
||||
ResetBurstLocations( );
|
||||
@@ -2511,7 +2465,6 @@ UINT32 UIHandleCAOnTerrain( UI_EVENT *pUIEvent )
|
||||
guiNewUICursor = GetProperItemCursor( (UINT8)gusSelectedSoldier, pSoldier->inv[ HANDPOS ].usItem, usMapPos, TRUE );
|
||||
|
||||
UIHandleOnMerc( FALSE );
|
||||
|
||||
}
|
||||
|
||||
return( GAME_SCREEN );
|
||||
@@ -2618,7 +2571,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Cannot be fire if we are already in a fire animation....
|
||||
// this is to stop the shooting trigger/happy duded from contiously pressing fire...
|
||||
if ( !(gTacticalStatus.uiFlags & INCOMBAT) )
|
||||
@@ -2638,7 +2590,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
|
||||
// guiPendingOverrideEvent = A_CHANGE_TO_MOVE;
|
||||
}
|
||||
|
||||
|
||||
if (pSoldier->bWeaponMode == WM_ATTACHED_GL || pSoldier->bWeaponMode == WM_ATTACHED_GL_BURST || pSoldier->bWeaponMode == WM_ATTACHED_GL_AUTO )
|
||||
{
|
||||
iHandleReturn = HandleItem( pSoldier, sTargetGridNo, bTargetLevel, GetAttachedGrenadeLauncher(pObj), TRUE );
|
||||
@@ -2663,7 +2614,6 @@ void UIHandleMercAttack( SOLDIERTYPE *pSoldier , SOLDIERTYPE *pTargetSoldier, IN
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ( gTacticalStatus.uiFlags & TURNBASED && !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
{
|
||||
HandleUICursorRTFeedback( pSoldier );
|
||||
@@ -2711,11 +2661,10 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
|
||||
{
|
||||
INT32 usMapPos;
|
||||
SOLDIERTYPE *pSoldier, *pTSoldier = NULL;
|
||||
BOOLEAN fDidRequester = FALSE;
|
||||
BOOLEAN fDidRequester = FALSE;
|
||||
|
||||
if ( gusSelectedSoldier != NOBODY )
|
||||
{
|
||||
|
||||
if( !GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
return( GAME_SCREEN );
|
||||
@@ -2731,7 +2680,6 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
|
||||
pTSoldier = MercPtrs[ gusUIFullTargetID ];
|
||||
}
|
||||
|
||||
|
||||
if ( pTSoldier != NULL )
|
||||
{
|
||||
// If this is one of our own guys.....pop up requiester...
|
||||
@@ -2753,7 +2701,6 @@ UINT32 UIHandleCAMercShoot( UI_EVENT *pUIEvent )
|
||||
swprintf( zStr, TacticalStr[ ATTACK_OWN_GUY_PROMPT ], pTSoldier->GetName() );
|
||||
|
||||
DoMessageBox( MSG_BOX_BASIC_STYLE, zStr, GAME_SCREEN, ( UINT8 )MSG_BOX_FLAG_YESNO, AttackRequesterCallback, NULL );
|
||||
|
||||
}
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// SANDRO - Should we ask if we really want to do the surgery?
|
||||
@@ -2804,7 +2751,6 @@ UINT32 UIHandleAEndAction( UI_EVENT *pUIEvent )
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if ( ( gTacticalStatus.uiFlags & REALTIME ) || !( gTacticalStatus.uiFlags & INCOMBAT ) )
|
||||
@@ -2820,9 +2766,9 @@ UINT32 UIHandleAEndAction( UI_EVENT *pUIEvent )
|
||||
|
||||
gUITargetReady = FALSE;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
@@ -2850,7 +2796,6 @@ UINT32 UIHandleIOnTerrain( UI_EVENT *pUIEvent )
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
|
||||
if ( !UIHandleOnMerc( TRUE ) )
|
||||
{
|
||||
// Check if dest is OK
|
||||
@@ -2875,10 +2820,9 @@ UINT32 UIHandleIChangeToIdle( UI_EVENT *pUIEvent )
|
||||
UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
UINT8 ubNewStance;
|
||||
|
||||
guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
|
||||
UINT8 ubNewStance;
|
||||
|
||||
guiShowUPDownArrows = ARROWS_HIDE_UP | ARROWS_HIDE_DOWN;
|
||||
|
||||
gfIgnoreScrolling = FALSE;
|
||||
|
||||
@@ -2905,10 +2849,9 @@ UINT32 UIHandlePADJAdjustStance( UI_EVENT *pUIEvent )
|
||||
|
||||
// Once we have APs, we can safely reset nomove flag!
|
||||
// AdjustNoAPToFinishMove( pSoldier, FALSE );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
@@ -3018,11 +2961,10 @@ void AdjustSoldierCreationStartValues( )
|
||||
INT32 cnt;
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bFirstID;
|
||||
guiCreateGuyIndex = (INT16)cnt;
|
||||
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier++, cnt++ )
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ gbPlayerNum ].bLastID; pSoldier++, ++cnt )
|
||||
{
|
||||
if ( !pSoldier->bActive )
|
||||
{
|
||||
@@ -3034,7 +2976,7 @@ void AdjustSoldierCreationStartValues( )
|
||||
cnt = gTacticalStatus.Team[ gbPlayerNum ].bLastID + 1;
|
||||
guiCreateBadGuyIndex = (INT16)cnt;
|
||||
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; pSoldier++, cnt++ )
|
||||
for ( pSoldier = MercPtrs[ cnt ]; cnt <= gTacticalStatus.Team[ LAST_TEAM ].bLastID; pSoldier++, ++cnt )
|
||||
{
|
||||
if ( !pSoldier->bActive && cnt > gTacticalStatus.Team[ gbPlayerNum ].bLastID )
|
||||
{
|
||||
@@ -3042,7 +2984,6 @@ void AdjustSoldierCreationStartValues( )
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
BOOLEAN SelectedMercCanAffordAttack( )
|
||||
@@ -3057,14 +2998,13 @@ BOOLEAN SelectedMercCanAffordAttack( )
|
||||
|
||||
if ( gusSelectedSoldier != NOBODY )
|
||||
{
|
||||
|
||||
if( !GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
// Get soldier
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
// LOOK IN GUY'S HAND TO CHECK LOCATION
|
||||
usInHand = pSoldier->inv[HANDPOS].usItem;
|
||||
@@ -3120,7 +3060,6 @@ BOOLEAN SelectedMercCanAffordAttack( )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return( FALSE );
|
||||
@@ -3135,14 +3074,13 @@ BOOLEAN SelectedMercCanAffordMove( )
|
||||
LEVELNODE *pIntTile;
|
||||
|
||||
// Get soldier
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
if ( GetSoldier( &pSoldier, gusSelectedSoldier ) )
|
||||
{
|
||||
if( !GetMouseMapPos( &usMapPos) )
|
||||
{
|
||||
return( GAME_SCREEN );
|
||||
}
|
||||
|
||||
|
||||
// IF WE ARE OVER AN INTERACTIVE TILE, GIVE GRIDNO OF POSITION
|
||||
pIntTile = GetCurInteractiveTile( );
|
||||
|
||||
@@ -3405,7 +3343,6 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
|
||||
guiShowUPDownArrows = ARROWS_SHOW_DOWN_BESIDE | ARROWS_SHOW_UP_BESIDE;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -3455,7 +3392,6 @@ BOOLEAN UIHandleOnMerc( BOOLEAN fMovementMode )
|
||||
{
|
||||
if ( fMovementMode )
|
||||
{
|
||||
|
||||
// Check if this guy is on the enemy team....
|
||||
if ( !pSoldier->aiData.bNeutral && (pSoldier->bSide != gbPlayerNum ) )
|
||||
{
|
||||
@@ -3543,9 +3479,7 @@ UINT32 UIHandleIETOnTerrain( UI_EVENT *pUIEvent )
|
||||
|
||||
void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
SOLDIERTYPE *pSoldier;
|
||||
|
||||
pSoldier = MercPtrs[ ubSoldierID ];
|
||||
SOLDIERTYPE *pSoldier = MercPtrs[ ubSoldierID ];
|
||||
|
||||
// Is this a valid stance for our position?
|
||||
if ( !IsValidStance( pSoldier, bNewStance ) )
|
||||
@@ -3554,9 +3488,7 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, gzLateLocalizedString[ 4 ], pSoldier->GetName() );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
|
||||
else if ( pSoldier->flags.uiStatusFlags & SOLDIER_VEHICLE )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ VEHICLES_NO_STANCE_CHANGE_STR ] );
|
||||
}
|
||||
@@ -3564,18 +3496,15 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ ROBOT_NO_STANCE_CHANGE_STR ] );
|
||||
}
|
||||
else if ( pSoldier->bCollapsed )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pMessageStrings[ MSG_CANT_CHANGE_STANCE ], pSoldier->GetName() );
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pSoldier->bCollapsed )
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, pMessageStrings[ MSG_CANT_CHANGE_STANCE ], pSoldier->GetName() );
|
||||
}
|
||||
else
|
||||
{
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ CANNOT_STANCE_CHANGE_STR ], pSoldier->GetName() );
|
||||
}
|
||||
}
|
||||
ScreenMsg( FONT_MCOLOR_LTYELLOW, MSG_UI_FEEDBACK, TacticalStr[ CANNOT_STANCE_CHANGE_STR ], pSoldier->GetName() );
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3614,7 +3543,6 @@ void UIHandleSoldierStanceChange( UINT8 ubSoldierID, INT8 bNewStance )
|
||||
{
|
||||
// Change stance normally
|
||||
SendChangeSoldierStanceEvent( pSoldier, bNewStance );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -165,11 +165,16 @@ INT32 *gpDirtyData;
|
||||
UINT32 gSurfaceMemUsage;
|
||||
//UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2];
|
||||
UINT8 (*gubWorldMovementCosts)[MAXDIR][2] = NULL;//dnl ch43 260909
|
||||
|
||||
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
|
||||
#ifdef USE_ASTAR_PATHS
|
||||
//ddd äëÿ óáûñòðåíèÿ ïîèñêà îñâåùåííûõ ó÷àñòêîâ â ïàòõàè.
|
||||
BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ];
|
||||
BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ];
|
||||
INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ];
|
||||
//ddd
|
||||
#endif
|
||||
|
||||
// set to nonzero (locs of base gridno of structure are good) to have it defined by structure code
|
||||
INT16 gsRecompileAreaTop = 0;
|
||||
INT16 gsRecompileAreaLeft = 0;
|
||||
|
||||
@@ -283,6 +283,8 @@ typedef struct
|
||||
// World Data
|
||||
extern MAP_ELEMENT *gpWorldLevelData;
|
||||
|
||||
// Flugente: this stuff is only ever used in AStar pathing and is a unnecessary waste of resources otherwise, so I'm putting an end to this
|
||||
#ifdef USE_ASTAR_PATHS
|
||||
// World Movement Costs
|
||||
//UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2];
|
||||
//ddd Tables to track tactical value of grid tiles
|
||||
@@ -290,6 +292,7 @@ extern BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ];
|
||||
extern BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ]; //Tracks position of corpses for AI avoidance
|
||||
extern INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ]; //Tracks visibility my mercs
|
||||
//ddd
|
||||
#endif
|
||||
|
||||
extern UINT8 (*gubWorldMovementCosts)[MAXDIR][2];//dnl ch43 260909
|
||||
|
||||
|
||||
Reference in New Issue
Block a user