Skip to content

Commit

Permalink
Tighten RulesetValidator for Terrain (#10355)
Browse files Browse the repository at this point in the history
* Tighten RulesetValidator for Terrain

* Fix unintended indentation (say that fast repeatedly)
  • Loading branch information
SomeTroglodyte authored Oct 29, 2023
1 parent 5dde55a commit 74cfda9
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions core/src/com/unciv/models/ruleset/validation/RulesetValidator.kt
Original file line number Diff line number Diff line change
Expand Up @@ -328,9 +328,23 @@ class RulesetValidator(val ruleset: Ruleset) {
if (ruleset.terrains.values.none { it.type == TerrainType.Land && !it.impassable })
lines += "No passable land terrains exist!"
for (terrain in ruleset.terrains.values) {
for (baseTerrain in terrain.occursOn)
if (!ruleset.terrains.containsKey(baseTerrain))
lines += "${terrain.name} occurs on terrain $baseTerrain which does not exist!"
for (baseTerrainName in terrain.occursOn) {
val baseTerrain = ruleset.terrains[baseTerrainName]
if (baseTerrain == null)
lines += "${terrain.name} occurs on terrain $baseTerrainName which does not exist!"
else if (baseTerrain.type == TerrainType.NaturalWonder)
lines.add("${terrain.name} occurs on natural wonder $baseTerrainName: Unsupported.", RulesetErrorSeverity.WarningOptionsOnly)
}
if (terrain.type == TerrainType.NaturalWonder) {
if (terrain.turnsInto == null)
lines += "Natural Wonder ${terrain.name} is missing the turnsInto attribute!"
val baseTerrain = ruleset.terrains[terrain.turnsInto]
if (baseTerrain == null)
lines += "${terrain.name} turns into terrain ${terrain.turnsInto} which does not exist!"
else if (!baseTerrain.type.isBaseTerrain)
// See https://github.com/hackedpassword/Z2/blob/main/HybridTileTech.md for a clever exploit
lines.add("${terrain.name} turns into terrain ${terrain.turnsInto} which is not a base terrain!", RulesetErrorSeverity.Warning)
}
uniqueValidator.checkUniques(terrain, lines, rulesetSpecific, tryFixUnknownUniques)
}
}
Expand Down

0 comments on commit 74cfda9

Please sign in to comment.