diff --git a/core/src/com/unciv/logic/automation/BattleHelper.kt b/core/src/com/unciv/logic/automation/BattleHelper.kt index a79f4d3cb6..2fd1fc481d 100644 --- a/core/src/com/unciv/logic/automation/BattleHelper.kt +++ b/core/src/com/unciv/logic/automation/BattleHelper.kt @@ -102,6 +102,11 @@ object BattleHelper { if (tileCombatant.getCivInfo() == combatant.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 && combatant.unit.hasUnique(UniqueType.CanOnlyAttackUnits) && combatant.unit.getMatchingUniques(UniqueType.CanOnlyAttackUnits).none { tileCombatant.matchesCategory(it.params[0]) } diff --git a/core/src/com/unciv/logic/battle/ICombatant.kt b/core/src/com/unciv/logic/battle/ICombatant.kt index 8238b83743..cd1c76736e 100644 --- a/core/src/com/unciv/logic/battle/ICombatant.kt +++ b/core/src/com/unciv/logic/battle/ICombatant.kt @@ -31,6 +31,14 @@ interface ICombatant { if (this is CityCombatant) return false 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 { return this is CityCombatant }