mirror of
https://github.com/1dot13/source.git
synced 2026-08-05 14:00:23 +02:00
************************************************************
* Merged Source Code from Development Trunk: Revision 4063 * ************************************************************ - Source Code is merged from: https://81.169.133.124/source/ja2/branches/Wanne/JA2%201.13%20MP - This will be the Source for the Beta 2011 Test git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@4064 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
+272
-1
@@ -68,6 +68,8 @@
|
||||
#include "LoadScreen.h"//dnl ch30 150909
|
||||
#include "Interface Cursors.h"
|
||||
#include "Simple Render Utils.h"//dnl ch54 111009
|
||||
///ddd
|
||||
#include "gamesettings.h"
|
||||
#endif
|
||||
|
||||
#define SET_MOVEMENTCOST( a, b, c, d ) ( ( gubWorldMovementCosts[ a ][ b ][ c ] < d ) ? ( gubWorldMovementCosts[ a ][ b ][ c ] = d ) : 0 );
|
||||
@@ -159,7 +161,11 @@ INT32 *gpDirtyData;
|
||||
UINT32 gSurfaceMemUsage;
|
||||
//UINT8 gubWorldMovementCosts[ WORLD_MAX ][MAXDIR][2];
|
||||
UINT8 (*gubWorldMovementCosts)[MAXDIR][2] = NULL;//dnl ch43 260909
|
||||
|
||||
//ddd äëÿ óáûñòðåíèÿ ïîèñêà îñâåùåííûõ ó÷àñòêîâ â ïàòõàè.
|
||||
BOOLEAN gubWorldTileInLight[ MAX_ALLOWED_WORLD_MAX ];
|
||||
BOOLEAN gubIsCorpseThere[ MAX_ALLOWED_WORLD_MAX ];
|
||||
INT32 gubMerkCanSeeThisTile[ MAX_ALLOWED_WORLD_MAX ];
|
||||
//ddd
|
||||
// set to nonzero (locs of base gridno of structure are good) to have it defined by structure code
|
||||
INT16 gsRecompileAreaTop = 0;
|
||||
INT16 gsRecompileAreaLeft = 0;
|
||||
@@ -735,6 +741,48 @@ void CompileWorldTerrainIDs( void )
|
||||
}
|
||||
}
|
||||
|
||||
///dddokno {
|
||||
#pragma optimize("gpt",on)
|
||||
__forceinline
|
||||
BOOLEAN IsNotRestrictedWindow(STRUCTURE * pStructure)
|
||||
{
|
||||
|
||||
if ( (pStructure->fFlags & STRUCTURE_WALLNWINDOW) && gGameExternalOptions.fCanJumpThroughWindows
|
||||
&& !(pStructure->fFlags & STRUCTURE_SPECIAL)
|
||||
&& (pStructure->fFlags & STRUCTURE_OPEN)
|
||||
&& (pStructure->pDBStructureRef->pDBStructure->bPartnerDelta == NO_PARTNER_STRUCTURE) )
|
||||
{
|
||||
//ðó÷íàÿ ïðîâåðêà íà çàêîëî÷åíûå îêíà ;( {
|
||||
//build_13.sti - çàêîëî÷åííûå îêíà íäåêñ:
|
||||
|
||||
LEVELNODE *pNode = NULL;// STRUCTURE *pBase=NULL;
|
||||
UINT32 uiTileType=0;
|
||||
//pBase = FindStructure( pStructure->sGridNo, STRUCTURE_WALLNWINDOW );
|
||||
//if(pBase!= NULL)
|
||||
pNode = FindLevelNodeBasedOnStructure( pStructure->sGridNo, pStructure );
|
||||
//pNode = gpWorldLevelData[ pStructure->sGridNo ].pStructHead;
|
||||
if(pNode != NULL)
|
||||
GetTileType( pNode->usIndex, &uiTileType );
|
||||
|
||||
UINT16 RestrSubIndex;
|
||||
GetSubIndexFromTileIndex( pNode->usIndex, (UINT16 *)&RestrSubIndex );
|
||||
|
||||
//ýòîò òèï îêîí íå ñîäåðæèòñÿ â 0 òàéëñåòå, ïðîâåðêà íóëåâîãî òàéëñåòà â ýòîì ñëó÷àå íå íóæíà
|
||||
if ( _stricmp( gTilesets[ giCurrentTilesetID ].TileSurfaceFilenames[ uiTileType ], "build_13.sti" ) == 0
|
||||
//&& ( pNode->usIndex == 814 || pNode->usIndex == 816 || pNode->usIndex == 817 || pNode->usIndex == 823) -çàïðåùàåò òîëüêî â êîíêðåòíîì òàéëñåòå ;( â äðóãîì íå ñðàáîòàåò
|
||||
&& (RestrSubIndex == 40 || RestrSubIndex == 41 || RestrSubIndex == 37 || RestrSubIndex == 38
|
||||
|| RestrSubIndex == 43 || RestrSubIndex == 44 || RestrSubIndex == 46 || RestrSubIndex == 47) //íîìåðà ôðåéìîâ â ñòèøêå
|
||||
|
||||
)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
///dddokno }
|
||||
|
||||
void CompileTileMovementCosts( INT32 usGridNo )
|
||||
{
|
||||
UINT8 ubTerrainID;
|
||||
@@ -845,6 +893,229 @@ void CompileTileMovementCosts( INT32 usGridNo )
|
||||
}
|
||||
// all other passable structures do not block movement in any way
|
||||
}
|
||||
|
||||
/*
|
||||
//dddokno{ =============================================================
|
||||
else if ( IsNotRestrictedWindow(pStructure) )
|
||||
{
|
||||
// standard door
|
||||
switch( pStructure->ubWallOrientation )
|
||||
{
|
||||
case OUTSIDE_TOP_LEFT:
|
||||
SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_WALL );
|
||||
SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_JUMPABLEWINDOW );
|
||||
SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_WALL );
|
||||
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHEAST, 0, TRAVELCOST_WALL );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_JUMPABLEWINDOW_N );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHWEST, 0, TRAVELCOST_WALL );
|
||||
|
||||
// DO CORNERS
|
||||
SET_MOVEMENTCOST( usGridNo - 1, NORTHWEST, 0, TRAVELCOST_WALL );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, NORTHEAST, 0, TRAVELCOST_WALL );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_WALL );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_WALL );
|
||||
|
||||
break;
|
||||
|
||||
case INSIDE_TOP_LEFT:
|
||||
SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_WALL );
|
||||
SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_JUMPABLEWINDOW );
|
||||
SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_WALL );
|
||||
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_JUMPABLEWINDOW_N );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
// DO CORNERS
|
||||
SET_MOVEMENTCOST( usGridNo - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
break;
|
||||
|
||||
case OUTSIDE_TOP_RIGHT:
|
||||
SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_JUMPABLEWINDOW );
|
||||
SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
|
||||
SET_MOVEMENTCOST( usGridNo + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, EAST, 0, TRAVELCOST_JUMPABLEWINDOW_W );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
// DO CORNERS
|
||||
SET_MOVEMENTCOST( usGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo - WORLD_COLS, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case INSIDE_TOP_RIGHT:
|
||||
SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_JUMPABLEWINDOW );
|
||||
SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
|
||||
SET_MOVEMENTCOST( usGridNo + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, EAST, 0, TRAVELCOST_JUMPABLEWINDOW_W );
|
||||
SET_MOVEMENTCOST( usGridNo + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
// DO CORNERS
|
||||
SET_MOVEMENTCOST( usGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo - WORLD_COLS, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
SET_MOVEMENTCOST( usGridNo + WORLD_COLS, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
break;
|
||||
|
||||
|
||||
//switch( pStructure->ubWallOrientation )
|
||||
//{
|
||||
// case OUTSIDE_TOP_LEFT: //3 \# - êëåòêà âíóòðè ïîìåùåíèÿ, ñòåíà íàðóæó
|
||||
// case INSIDE_TOP_LEFT: //1 -êëåòêà ñíàðóæè ïîìåùåíèÿ \¹ ñòåíà âíóòðü
|
||||
// SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_JUMPABLEWINDOW );
|
||||
// SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_OBSTACLE);
|
||||
// SET_CURRMOVEMENTCOST( EAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( EAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHEAST, TRAVELCOST_OBSTACLE);
|
||||
// SET_CURRMOVEMENTCOST( SOUTH, TRAVELCOST_JUMPABLEWINDOW);
|
||||
// SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// //?
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + 1, EAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - 1, WEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
//
|
||||
|
||||
|
||||
// break;
|
||||
|
||||
// case OUTSIDE_TOP_RIGHT: //4 #/ //êëåòêà âíóòðè ïîìåùåíèÿ, ñòåíà íàðóæó
|
||||
|
||||
// case INSIDE_TOP_RIGHT:
|
||||
|
||||
// //2 #/
|
||||
// //. ñòåíà ñòîèò íà ïðàâîì íèæí. êðàþ è ñìîòðèò íà ÞÂ
|
||||
// // êëåòêà íàõîäèòñÿ ñíàðóæè ïîìåùåíèÿ, ñòåíà âíóòðè êëåòêè
|
||||
|
||||
|
||||
// SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( EAST, TRAVELCOST_JUMPABLEWINDOW );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTH, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_JUMPABLEWINDOW );
|
||||
// SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// //?
|
||||
// // set values for the tiles EXITED from this location
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// // make sure no obstacle costs exists before changing path cost to 0
|
||||
// if ( gubWorldMovementCosts[ sGridNo + 1 ][ EAST ][ 0 ] < TRAVELCOST_BLOCKED )
|
||||
// {
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo + 1, EAST, 0, TRAVELCOST_NONE );
|
||||
// }
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// if ( gubWorldMovementCosts[ sGridNo - 1 ][ WEST ][ 0 ] < TRAVELCOST_BLOCKED )
|
||||
// {
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo - 1, WEST, 0, TRAVELCOST_NONE );
|
||||
// }
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
|
||||
|
||||
// break;
|
||||
// default:
|
||||
// // corners aren't jumpable
|
||||
// for (ubDirLoop=0; ubDirLoop < NUM_WORLD_DIRECTIONS; ubDirLoop++)
|
||||
// {
|
||||
// SET_CURRMOVEMENTCOST( ubDirLoop, TRAVELCOST_OBSTACLE );
|
||||
// }
|
||||
// break;
|
||||
//}
|
||||
|
||||
|
||||
|
||||
//************************************ñòàðûé ïî÷òè ðàáîòàþùèé êîä. òîêà àè èíîãäà òóïèò ))
|
||||
//if ( (pStructure->fFlags & STRUCTURE_WALLNWINDOW) //&& !(pStructure->fFlags & STRUCTURE_SPECIAL)
|
||||
// && (pStructure->fFlags & STRUCTURE_WALLSTUFF)==0 )
|
||||
//if(pStructure->pDBStructureRef->pDBStructure->bPartnerDelta == NO_PARTNER_STRUCTURE)
|
||||
|
||||
// jumpable!
|
||||
// switch( pStructure->ubWallOrientation )
|
||||
// {
|
||||
// case OUTSIDE_TOP_LEFT:
|
||||
// case INSIDE_TOP_LEFT:
|
||||
// // can be jumped north and south
|
||||
// SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_FENCE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( EAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTH, TRAVELCOST_FENCE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// // set values for the tiles EXITED from this location
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_NONE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + 1, EAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_NONE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - 1, WEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// break;
|
||||
|
||||
// case OUTSIDE_TOP_RIGHT:
|
||||
// case INSIDE_TOP_RIGHT:
|
||||
// // can be jumped east and west
|
||||
// SET_CURRMOVEMENTCOST( NORTH, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( EAST, TRAVELCOST_FENCE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHEAST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTH, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( SOUTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// SET_CURRMOVEMENTCOST( WEST, TRAVELCOST_FENCE );
|
||||
// SET_CURRMOVEMENTCOST( NORTHWEST, TRAVELCOST_OBSTACLE );
|
||||
// // set values for the tiles EXITED from this location
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS, NORTH, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS + 1, NORTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// // make sure no obstacle costs exists before changing path cost to 0
|
||||
// if ( gubWorldMovementCosts[ sGridNo + 1 ][ EAST ][ 0 ] < TRAVELCOST_BLOCKED )
|
||||
// {
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo + 1, EAST, 0, TRAVELCOST_NONE );
|
||||
// }
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS + 1, SOUTHEAST, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS, SOUTH, 0, TRAVELCOST_OBSTACLE );
|
||||
// SET_MOVEMENTCOST( sGridNo + WORLD_COLS - 1, SOUTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// if ( gubWorldMovementCosts[ sGridNo - 1 ][ WEST ][ 0 ] < TRAVELCOST_BLOCKED )
|
||||
// {
|
||||
// FORCE_SET_MOVEMENTCOST( sGridNo - 1, WEST, 0, TRAVELCOST_NONE );
|
||||
// }
|
||||
// SET_MOVEMENTCOST( sGridNo - WORLD_COLS - 1, NORTHWEST, 0, TRAVELCOST_OBSTACLE );
|
||||
// break;
|
||||
|
||||
// //default:
|
||||
// // corners aren't jumpable
|
||||
// for (ubDirLoop=0; ubDirLoop < NUM_WORLD_DIRECTIONS; ubDirLoop++)
|
||||
// {
|
||||
// SET_CURRMOVEMENTCOST( ubDirLoop, TRAVELCOST_OBSTACLE );
|
||||
// }
|
||||
// break;
|
||||
// }//switch
|
||||
//}//}if dddokno==============================================================================
|
||||
*/
|
||||
|
||||
else if (pStructure->fFlags & STRUCTURE_BLOCKSMOVES)
|
||||
{
|
||||
if ( (pStructure->fFlags & STRUCTURE_FENCE) && !(pStructure->fFlags & STRUCTURE_SPECIAL) )
|
||||
|
||||
Reference in New Issue
Block a user