mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-24 03:53:12 -04:00
Resolved #10674 - added mod checker warning that movement uniques do not always work with conditionals
This commit is contained in:
parent
805f008af5
commit
c0f837628b
@ -124,4 +124,25 @@ class MapUnitCache(private val mapUnit: MapUnit) {
|
||||
.mapNotNull { mapUnit.civ.gameInfo.ruleset.tileImprovements[it.params[0]] }
|
||||
.any { it.hasUnique(UniqueType.TakesOverAdjacentTiles) }
|
||||
}
|
||||
|
||||
companion object {
|
||||
val UnitMovementUniques = setOf(
|
||||
UniqueType.AllTilesCost1Move,
|
||||
UniqueType.CanPassImpassable,
|
||||
UniqueType.IgnoresTerrainCost,
|
||||
UniqueType.IgnoresZOC,
|
||||
UniqueType.RoughTerrainPenalty,
|
||||
UniqueType.CannotMove,
|
||||
UniqueType.CanMoveOnWater,
|
||||
UniqueType.DoubleMovementOnTerrain,
|
||||
UniqueType.ReducedDisembarkCost,
|
||||
UniqueType.ReducedEmbarkCost,
|
||||
UniqueType.CanEnterIceTiles,
|
||||
UniqueType.CanEnterForeignTiles,
|
||||
UniqueType.CanEnterForeignTilesButLosesReligiousStrength,
|
||||
// Special - applied in Nation and not here, wshould be moved to mapunitcache as well
|
||||
UniqueType.ForestsAndJunglesAreRoads,
|
||||
UniqueType.IgnoreHillMovementCost
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.unciv.models.ruleset.validation
|
||||
|
||||
import com.unciv.logic.map.mapunit.MapUnitCache
|
||||
import com.unciv.models.ruleset.IRulesetObject
|
||||
import com.unciv.models.ruleset.Ruleset
|
||||
import com.unciv.models.ruleset.RulesetCache
|
||||
@ -83,6 +84,9 @@ class UniqueValidator(val ruleset: Ruleset) {
|
||||
addConditionalErrors(conditional, rulesetErrors, prefix, unique, reportRulesetSpecificErrors)
|
||||
}
|
||||
|
||||
if (unique.conditionals.any() && unique.type in MapUnitCache.UnitMovementUniques)
|
||||
rulesetErrors.add("$prefix unique \"${unique.text}\" contains a conditional on a unit movement unique. " +
|
||||
"Due to performance considerations, this conditional may not always apply.", RulesetErrorSeverity.WarningOptionsOnly)
|
||||
|
||||
if (reportRulesetSpecificErrors)
|
||||
// If we don't filter these messages will be listed twice as this function is called twice on most objects
|
||||
|
Loading…
x
Reference in New Issue
Block a user