diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 084df4c33b..471228740f 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -83,7 +83,13 @@ open class TileInfo : IsPartOfGameInfoSerialization { var terrainUniqueMap = UniqueMap() private set + @Transient + /** Between 0.0 and 1.0 - For map generation use only */ + var humidity:Double? = null + @Transient + /** Between -1.0 and 1.0 - For map generation use only */ + var temperature:Double? = null var naturalWonder: String? = null var resource: String? = null diff --git a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt index 38d69f2971..cf42d36b9b 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/MapGenerator.kt @@ -12,7 +12,6 @@ import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileMap import com.unciv.models.Counter import com.unciv.models.metadata.GameParameters -import com.unciv.models.metadata.GameSetupInfo import com.unciv.models.ruleset.Ruleset import com.unciv.models.ruleset.tile.ResourceType import com.unciv.models.ruleset.tile.Terrain @@ -534,6 +533,8 @@ class MapGenerator(val ruleset: Ruleset) { tile.baseTerrain = firstLandTerrain.name debug("applyHumidityAndTemperature: No terrain found for temperature: %s, humidity: %s", temperature, humidity) } + tile.humidity = humidity + tile.temperature = temperature tile.setTerrainTransients() } } diff --git a/core/src/com/unciv/logic/map/mapgenerator/MapRegions.kt b/core/src/com/unciv/logic/map/mapgenerator/MapRegions.kt index c37dc8ed40..3b25c9c6a1 100644 --- a/core/src/com/unciv/logic/map/mapgenerator/MapRegions.kt +++ b/core/src/com/unciv/logic/map/mapgenerator/MapRegions.kt @@ -1443,7 +1443,12 @@ class MapRegions (val ruleset: Ruleset){ if (tile.resource == null && tile.getLastTerrain().name in resource.terrainsCanBeFoundOn && !tile.getBaseTerrain().hasUnique(UniqueType.BlocksResources, conditionalTerrain) && - !resource.hasUnique(UniqueType.NoNaturalGeneration, conditionalTerrain)) { + !resource.hasUnique(UniqueType.NoNaturalGeneration, conditionalTerrain) && + resource.getMatchingUniques(UniqueType.TileGenerationConditions).none { + tile.temperature!! < it.params[0].toDouble() || tile.temperature!! > it.params[1].toDouble() + || tile.humidity!! < it.params[2].toDouble() || tile.humidity!! > it.params[3].toDouble() + } + ) { if (ratioProgress >= 1f && !(respectImpacts && tileData[tile.position]!!.impacts.containsKey(impactType))) { tile.setTileResource(resource, majorDeposit) diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 49ad9d1f45..9f81489494 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -527,7 +527,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: HasQuality("Considered [terrainQuality] when determining start locations", UniqueTarget.Terrain, flags = UniqueFlag.setOfHiddenToUsers), NoNaturalGeneration("Doesn't generate naturally", UniqueTarget.Terrain, UniqueTarget.Resource, flags = UniqueFlag.setOfHiddenToUsers), - TileGenerationConditions("Occurs at temperature between [amount] and [amount] and humidity between [amount] and [amount]", UniqueTarget.Terrain, flags = UniqueFlag.setOfHiddenToUsers), + TileGenerationConditions("Occurs at temperature between [amount] and [amount] and humidity between [amount] and [amount]", UniqueTarget.Terrain, UniqueTarget.Resource, flags = UniqueFlag.setOfHiddenToUsers), OccursInChains("Occurs in chains at high elevations", UniqueTarget.Terrain, flags = UniqueFlag.setOfHiddenToUsers), OccursInGroups("Occurs in groups around high elevations", UniqueTarget.Terrain, flags = UniqueFlag.setOfHiddenToUsers), MajorStrategicFrequency("Every [amount] tiles with this terrain will receive a major deposit of a strategic resource.", UniqueTarget.Terrain, flags = UniqueFlag.setOfHiddenToUsers), diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index 894dacac1e..0841f9d52f 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -1420,7 +1420,7 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl ??? example "Occurs at temperature between [amount] and [amount] and humidity between [amount] and [amount]" Example: "Occurs at temperature between [3] and [3] and humidity between [3] and [3]" - Applicable to: Terrain + Applicable to: Terrain, Resource ??? example "Occurs in chains at high elevations" Applicable to: Terrain