Modding: Added "[relativeAmount] Air Interception Range" unique

This commit is contained in:
Yair Morgenstern 2023-11-18 19:16:33 +02:00
parent 870c146e34
commit 2b0568f025
3 changed files with 12 additions and 5 deletions

View File

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

View File

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

View File

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