diff --git a/Tactical/Handle Items.cpp b/Tactical/Handle Items.cpp index 0f6529a6..ce4c41d4 100644 --- a/Tactical/Handle Items.cpp +++ b/Tactical/Handle Items.cpp @@ -6094,6 +6094,11 @@ void AddBlueFlag( INT32 sGridNo ,INT8 bLevel ) void RemoveBlueFlag( INT32 sGridNo, INT8 bLevel ) { ApplyMapChangesToMapTempFile( TRUE ); + + // player mine present + if( gpWorldLevelData[sGridNo].uiFlags & MAPELEMENT_PLAYER_MINE_PRESENT ) + RemoveMineFlagFromMapTempFile( sGridNo ); + gpWorldLevelData[sGridNo].uiFlags &= ~(MAPELEMENT_PLAYER_MINE_PRESENT); if ( bLevel == 0 ) diff --git a/TileEngine/SaveLoadMap.cpp b/TileEngine/SaveLoadMap.cpp index 668e08a6..c2d14ffd 100644 --- a/TileEngine/SaveLoadMap.cpp +++ b/TileEngine/SaveLoadMap.cpp @@ -43,6 +43,8 @@ void AddObjectFromMapTempFileToMap( INT32 uiMapIndex, UINT16 usIndex ); void AddBloodOrSmellFromMapTempFileToMap( MODIFY_MAP *pMap ); // sevenfm void AddMineFlagFromMapTempFileToMap( MODIFY_MAP *pMap ); +void RemoveMineFlagFromMap( INT32 usGridNo ); + void SetSectorsRevealedBit( UINT32 usMapIndex ); void SetMapRevealedStatus(); void DamageStructsFromMapTempFile( MODIFY_MAP * pMap ); @@ -485,10 +487,7 @@ BOOLEAN LoadAllMapChangesFromMapTempFileAndApplyThem( ) case SLM_BLOOD_SMELL: AddBloodOrSmellFromMapTempFileToMap( pMap ); break; -// sevenfm - case SLM_MINE_PRESENT: - AddMineFlagFromMapTempFileToMap( pMap ); - break; + case SLM_DAMAGED_STRUCT: DamageStructsFromMapTempFile( pMap ); break; @@ -536,6 +535,15 @@ BOOLEAN LoadAllMapChangesFromMapTempFileAndApplyThem( ) SaveModifiedMapStructToMapTempFile( pMap, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); break; #endif +// sevenfm + case SLM_MINE_PRESENT: + AddMineFlagFromMapTempFileToMap( pMap ); + break; + + case SLM_REMOVE_MINE_PRESENT: + RemoveMineFlagFromMap( pMap->usGridNo ); + break; + default: AssertMsg( 0, "ERROR! Map Type not in switch when loading map changes from temp file"); break; @@ -773,6 +781,17 @@ void SaveMineFlagFromMapToTempFile() } } } + +void RemoveMineFlagFromMapTempFile( INT32 usGridNo) +{ + MODIFY_MAP Map; + + memset( &Map, 0, sizeof( MODIFY_MAP ) ); + Map.usGridNo = usGridNo; + Map.ubType = SLM_REMOVE_MINE_PRESENT; + SaveModifiedMapStructToMapTempFile( &Map, gWorldSectorX, gWorldSectorY, gbWorldSectorZ ); +} + void SaveBloodSmellAndRevealedStatesFromMapToTempFile() { MODIFY_MAP Map; @@ -898,6 +917,11 @@ void AddMineFlagFromMapTempFileToMap( MODIFY_MAP *pMap ) gpWorldLevelData[ pMap->usGridNo ].uiFlags |= MAPELEMENT_PLAYER_MINE_PRESENT; } +void RemoveMineFlagFromMap( INT32 usGridNo ) +{ + gpWorldLevelData[ usGridNo ].uiFlags &= ~(MAPELEMENT_PLAYER_MINE_PRESENT); +} + BOOLEAN SaveRevealedStatusArrayToRevealedTempFile( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ ) { diff --git a/TileEngine/SaveLoadMap.h b/TileEngine/SaveLoadMap.h index 8b0cdabb..8d71015f 100644 --- a/TileEngine/SaveLoadMap.h +++ b/TileEngine/SaveLoadMap.h @@ -48,6 +48,7 @@ enum #endif // sevenfm SLM_MINE_PRESENT, + SLM_REMOVE_MINE_PRESENT, // silversurfer: we need this to get rid of the mine flag otherwise any tile that ever had a mine on it will forever be flagged with MAPELEMENT_PLAYER_MINE_PRESENT }; typedef struct//dnl ch86 250214 @@ -92,6 +93,7 @@ void SaveBloodSmellAndRevealedStatesFromMapToTempFile(); // sevenfm void SaveMineFlagFromMapToTempFile(); +void RemoveMineFlagFromMapTempFile( INT32 usGridNo); BOOLEAN SaveRevealedStatusArrayToRevealedTempFile( INT16 sSectorX, INT16 sSectorY, INT8 bSectorZ );