diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index 9fc88e9ca5..8cdfaca59c 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -803,10 +803,16 @@ class MapUnit : IsPartOfGameInfoSerialization { fun canIntercept(attackedTile: Tile): Boolean { if (!canIntercept()) return false - if (currentTile.aerialDistanceTo(attackedTile) > baseUnit.interceptRange) return false + if (currentTile.aerialDistanceTo(attackedTile) > getInterceptionRange()) return false return true } + fun getInterceptionRange():Int { + val rangeFromUniques = getMatchingUniques(UniqueType.AirInterceptionRange, checkCivInfoUniques = true) + .sumOf { it.params[0].toInt() } + return baseUnit.interceptRange + rangeFromUniques + } + fun canIntercept(): Boolean { if (interceptChance() == 0) return false // Air Units can only Intercept if they didn't move this turn diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index a4cf2b3b36..6850f3e179 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -355,6 +355,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags: Movement("[amount] Movement", UniqueTarget.Unit, UniqueTarget.Global), Sight("[amount] Sight", UniqueTarget.Unit, UniqueTarget.Global, UniqueTarget.Terrain), Range("[amount] Range", UniqueTarget.Unit, UniqueTarget.Global), + AirInterceptionRange("[relativeAmount] Air Interception Range", UniqueTarget.Unit, UniqueTarget.Global), Heal("[amount] HP when healing", UniqueTarget.Unit, UniqueTarget.Global), SpreadReligionStrength("[relativeAmount]% Spread Religion Strength", UniqueTarget.Unit, UniqueTarget.Global), diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt index 98c275f4f0..38c041b0d5 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/UnitTable.kt @@ -13,13 +13,13 @@ import com.unciv.logic.city.City import com.unciv.logic.map.mapunit.MapUnit import com.unciv.logic.map.tile.Tile import com.unciv.models.translations.tr -import com.unciv.ui.components.widgets.UnitGroup import com.unciv.ui.components.extensions.addSeparator import com.unciv.ui.components.extensions.center import com.unciv.ui.components.extensions.darken import com.unciv.ui.components.extensions.toImageButton import com.unciv.ui.components.extensions.toLabel import com.unciv.ui.components.input.onClick +import com.unciv.ui.components.widgets.UnitGroup import com.unciv.ui.images.ImageGetter import com.unciv.ui.screens.basescreen.BaseScreen import com.unciv.ui.screens.civilopediascreen.CivilopediaCategories @@ -177,10 +177,10 @@ class UnitTable(val worldScreen: WorldScreen) : Table() { unitDescriptionTable.add(unit.getRange().toString()).padRight(10f) } - if (unit.baseUnit.interceptRange > 0) { + val interceptionRange = unit.getInterceptionRange() + if (interceptionRange > 0) { unitDescriptionTable.add(ImageGetter.getStatIcon("InterceptRange")).size(20f) - val range = if (unit.baseUnit.isRanged()) unit.getRange() else unit.baseUnit.interceptRange - unitDescriptionTable.add(range.toString()).padRight(10f) + unitDescriptionTable.add(interceptionRange.toString()).padRight(10f) } if (!unit.isCivilian()) {