Resolved #8050 - "Occurs at temperature between [amount] and [amount] and humidity between [amount] and [amount]" now applicable to resources

This commit is contained in:
Yair Morgenstern 2022-11-27 20:02:05 +02:00
parent d1225377e0
commit 1b8c98eed3
5 changed files with 16 additions and 4 deletions

View File

@ -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

View File

@ -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()
}
}

View File

@ -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)

View File

@ -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),

View File

@ -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