// This function changes the graphic of the statue and adds the exit grid... void ChangeO3SectorStatue( BOOLEAN fFromExplosion ) { EXITGRID ExitGrid; UINT16 usTileIndex; INT16 sX, sY; // Remove old graphic ApplyMapChangesToMapTempFile( TRUE ); // Remove it! // Get index for it... GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 5 ), &usTileIndex ); RemoveStruct( 13830, usTileIndex ); // Add new one... if ( fFromExplosion ) { // Use damaged peice GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 7 ), &usTileIndex ); } else { GetTileIndexFromTypeSubIndex( EIGHTOSTRUCT, (INT8)( 8 ), &usTileIndex ); // Play sound... PlayJA2Sample( OPEN_STATUE, RATE_11025, HIGHVOLUME, 1, MIDDLEPAN ); } AddStructToHead( 13830, usTileIndex ); // Add exit grid ExitGrid.ubGotoSectorX = 3; ExitGrid.ubGotoSectorY = MAP_ROW_O; ExitGrid.ubGotoSectorZ = 1; ExitGrid.usGridNo = 13037; AddExitGridToWorld( 13669, &ExitGrid ); gpWorldLevelData[ 13669 ].uiFlags |= MAPELEMENT_REVEALED; // Turn off permenant changes.... ApplyMapChangesToMapTempFile( FALSE ); // Re-render the world! gTacticalStatus.uiFlags |= NOHIDE_REDUNDENCY; // FOR THE NEXT RENDER LOOP, RE-EVALUATE REDUNDENT TILES InvalidateWorldRedundency( ); SetRenderFlags(RENDER_FLAG_FULL); // Redo movement costs.... ConvertGridNoToXY( 13830, &sX, &sY ); RecompileLocalMovementCostsFromRadius( 13830, 5 ); }
void Add3X3Pit( INT32 iMapIndex ) { EXITGRID ExitGrid; if( !gfEditMode ) ApplyMapChangesToMapTempFile( TRUE ); AddObjectToTail( iMapIndex + 159, REGWATERTEXTURE1 ); AddObjectToTail( iMapIndex - 1, REGWATERTEXTURE2 ); AddObjectToTail( iMapIndex - 161, REGWATERTEXTURE3 ); AddObjectToTail( iMapIndex + 160, REGWATERTEXTURE4 ); AddObjectToTail( iMapIndex, REGWATERTEXTURE5 ); AddObjectToTail( iMapIndex - 160, REGWATERTEXTURE6 ); AddObjectToTail( iMapIndex + 161, REGWATERTEXTURE7 ); AddObjectToTail( iMapIndex + 1, REGWATERTEXTURE8 ); AddObjectToTail( iMapIndex - 159, REGWATERTEXTURE9 ); if( !gfEditMode ) { //Add the exitgrids associated with the pit. ExitGrid.ubGotoSectorX = (UINT8)gWorldSectorX; ExitGrid.ubGotoSectorY = (UINT8)gWorldSectorY; ExitGrid.ubGotoSectorZ = (UINT8)(gbWorldSectorZ+1); ExitGrid.usGridNo = (UINT16)iMapIndex; AddExitGridToWorld( iMapIndex + 159, &ExitGrid ); AddExitGridToWorld( iMapIndex - 1, &ExitGrid ); AddExitGridToWorld( iMapIndex - 161, &ExitGrid ); AddExitGridToWorld( iMapIndex + 160, &ExitGrid ); AddExitGridToWorld( iMapIndex, &ExitGrid ); AddExitGridToWorld( iMapIndex - 160, &ExitGrid ); AddExitGridToWorld( iMapIndex + 161, &ExitGrid ); AddExitGridToWorld( iMapIndex + 1, &ExitGrid ); AddExitGridToWorld( iMapIndex - 159, &ExitGrid ); RecompileLocalMovementCostsFromRadius( (INT16)iMapIndex, 2 ); } MarkWorldDirty(); if( !gfEditMode ) ApplyMapChangesToMapTempFile( FALSE ); }
void Add5X5Pit( INT32 iMapIndex ) { EXITGRID ExitGrid; if( !gfEditMode ) ApplyMapChangesToMapTempFile( TRUE ); AddObjectToTail( iMapIndex + 318, REGWATERTEXTURE10 ); AddObjectToTail( iMapIndex + 158, REGWATERTEXTURE11 ); AddObjectToTail( iMapIndex - 2, REGWATERTEXTURE12 ); AddObjectToTail( iMapIndex - 162, REGWATERTEXTURE13 ); AddObjectToTail( iMapIndex - 322, REGWATERTEXTURE14 ); AddObjectToTail( iMapIndex + 319, REGWATERTEXTURE15 ); AddObjectToTail( iMapIndex + 159, REGWATERTEXTURE16 ); AddObjectToTail( iMapIndex - 1, REGWATERTEXTURE17 ); AddObjectToTail( iMapIndex - 161, REGWATERTEXTURE18 ); AddObjectToTail( iMapIndex - 321, REGWATERTEXTURE19 ); AddObjectToTail( iMapIndex + 320, REGWATERTEXTURE20 ); AddObjectToTail( iMapIndex + 160, REGWATERTEXTURE21 ); AddObjectToTail( iMapIndex, REGWATERTEXTURE22 ); AddObjectToTail( iMapIndex - 160, REGWATERTEXTURE23 ); AddObjectToTail( iMapIndex - 320, REGWATERTEXTURE24 ); AddObjectToTail( iMapIndex + 321, REGWATERTEXTURE25 ); AddObjectToTail( iMapIndex + 161, REGWATERTEXTURE26 ); AddObjectToTail( iMapIndex + 1, REGWATERTEXTURE27 ); AddObjectToTail( iMapIndex - 159, REGWATERTEXTURE28 ); AddObjectToTail( iMapIndex - 319, REGWATERTEXTURE29 ); AddObjectToTail( iMapIndex + 322, REGWATERTEXTURE30 ); AddObjectToTail( iMapIndex + 162, REGWATERTEXTURE31 ); AddObjectToTail( iMapIndex + 2, REGWATERTEXTURE32 ); AddObjectToTail( iMapIndex - 158, REGWATERTEXTURE33 ); AddObjectToTail( iMapIndex - 318, REGWATERTEXTURE34 ); if( !gfEditMode ) { //Add the exitgrids associated with the pit. ExitGrid.ubGotoSectorX = (UINT8)gWorldSectorX; ExitGrid.ubGotoSectorY = (UINT8)gWorldSectorY; ExitGrid.ubGotoSectorZ = (UINT8)(gbWorldSectorZ+1); ExitGrid.usGridNo = (UINT16)iMapIndex; AddExitGridToWorld( iMapIndex + 318, &ExitGrid ); AddExitGridToWorld( iMapIndex + 158, &ExitGrid ); AddExitGridToWorld( iMapIndex - 2, &ExitGrid ); AddExitGridToWorld( iMapIndex - 162, &ExitGrid ); AddExitGridToWorld( iMapIndex - 322, &ExitGrid ); AddExitGridToWorld( iMapIndex + 319, &ExitGrid ); AddExitGridToWorld( iMapIndex + 159, &ExitGrid ); AddExitGridToWorld( iMapIndex - 1, &ExitGrid ); AddExitGridToWorld( iMapIndex - 161, &ExitGrid ); AddExitGridToWorld( iMapIndex - 321, &ExitGrid ); AddExitGridToWorld( iMapIndex + 320, &ExitGrid ); AddExitGridToWorld( iMapIndex + 160, &ExitGrid ); AddExitGridToWorld( iMapIndex, &ExitGrid ); AddExitGridToWorld( iMapIndex - 160, &ExitGrid ); AddExitGridToWorld( iMapIndex - 320, &ExitGrid ); AddExitGridToWorld( iMapIndex + 321, &ExitGrid ); AddExitGridToWorld( iMapIndex + 161, &ExitGrid ); AddExitGridToWorld( iMapIndex + 1, &ExitGrid ); AddExitGridToWorld( iMapIndex - 159, &ExitGrid ); AddExitGridToWorld( iMapIndex - 319, &ExitGrid ); AddExitGridToWorld( iMapIndex + 322, &ExitGrid ); AddExitGridToWorld( iMapIndex + 162, &ExitGrid ); AddExitGridToWorld( iMapIndex + 2, &ExitGrid ); AddExitGridToWorld( iMapIndex - 158, &ExitGrid ); AddExitGridToWorld( iMapIndex - 318, &ExitGrid ); RecompileLocalMovementCostsFromRadius( (INT16)iMapIndex, 3 ); } MarkWorldDirty(); if( !gfEditMode ) ApplyMapChangesToMapTempFile( FALSE ); }