diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java index 2dcf06894..acced11b8 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/MapController.java @@ -186,6 +186,13 @@ public final class MapController { if (!satisfiesCondition(replacement)) continue; else ConversationController.requirementFulfilled(world, replacement.requirement); tileMap.applyReplacement(replacement); + for (ReplaceableMapSection impactedReplacement : tileMap.replacements) { + if (impactedReplacement.isApplied && impactedReplacement.replacementArea.intersects(replacement.replacementArea)) { + //The applied replacement has overwritten changes made by a previously applied replacement. + //This previous replacement must now be considered as unapplied to let it be reapplied later eventually. + impactedReplacement.isApplied = false; + } + } hasUpdated = true; } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java index c85491380..aed27b394 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/map/TMXMapTranslator.java @@ -288,7 +288,8 @@ public final class TMXMapTranslator { else if (prop.name.equalsIgnoreCase(LAYERNAME_ABOVE)) layerNames.aboveLayersName = prop.value; else if (prop.name.equalsIgnoreCase(LAYERNAME_WALKABLE)) layerNames.walkableLayersName = prop.value; else if (AndorsTrailApplication.DEVELOPMENT_VALIDATEDATA) { - L.log("OPTIMIZE: Map " + map.name + " contains replace area with unknown property \"" + prop.name + "\"."); + if (!requirementPropertiesNames.contains(prop.name)) + L.log("OPTIMIZE: Map " + map.name + " contains replace area with unknown property \"" + prop.name + "\"."); } } MapSection replacementSection = transformMapSection(map, tileCache, position, layersPerLayerName, usedTileIDs, layerNames);