Land melee units can only attack water units once they are able to embark (#6957)

This commit is contained in:
alexban011 2022-05-29 16:27:57 +03:00 committed by GitHub
parent 37d6233f5d
commit 57c027dca5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 0 deletions

View File

@ -102,6 +102,11 @@ object BattleHelper {
if (tileCombatant.getCivInfo() == combatant.getCivInfo()) return false if (tileCombatant.getCivInfo() == combatant.getCivInfo()) return false
if (!combatant.getCivInfo().isAtWarWith(tileCombatant.getCivInfo())) return false if (!combatant.getCivInfo().isAtWarWith(tileCombatant.getCivInfo())) return false
if (combatant is MapUnitCombatant && combatant.isLandUnit() && combatant.isMelee() &&
!combatant.hasUnique(UniqueType.LandUnitEmbarkation) && tile.isWater
)
return false
if (combatant is MapUnitCombatant && if (combatant is MapUnitCombatant &&
combatant.unit.hasUnique(UniqueType.CanOnlyAttackUnits) && combatant.unit.hasUnique(UniqueType.CanOnlyAttackUnits) &&
combatant.unit.getMatchingUniques(UniqueType.CanOnlyAttackUnits).none { tileCombatant.matchesCategory(it.params[0]) } combatant.unit.getMatchingUniques(UniqueType.CanOnlyAttackUnits).none { tileCombatant.matchesCategory(it.params[0]) }

View File

@ -31,6 +31,14 @@ interface ICombatant {
if (this is CityCombatant) return false if (this is CityCombatant) return false
return (this as MapUnitCombatant).unit.baseUnit.isAirUnit() return (this as MapUnitCombatant).unit.baseUnit.isAirUnit()
} }
fun isWaterUnit(): Boolean {
if (this is CityCombatant) return false
return (this as MapUnitCombatant).unit.baseUnit.isWaterUnit()
}
fun isLandUnit(): Boolean {
if (this is CityCombatant) return false
return (this as MapUnitCombatant).unit.baseUnit.isLandUnit()
}
fun isCity(): Boolean { fun isCity(): Boolean {
return this is CityCombatant return this is CityCombatant
} }