Fix: Any tile that once had a player mine on it forever kept that flag. The map temp file will now be updated with a remove flag tag so that when a map is loaded the player mine flag will be removed.

If your savegame is already bugged you will need to step on each tile that had a mine to remove the player mine flag once.

git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@7796 3b4a5df2-a311-0410-b5c6-a8a6f20db521
This commit is contained in:
silversurfer
2015-03-22 13:27:44 +00:00
parent 8ef0c1e353
commit 37f1ac452a
3 changed files with 35 additions and 4 deletions
+28 -4
View File
@@ -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 )
{