From 57c027dca5e0b7ba7c55039194baac172e6d5341 Mon Sep 17 00:00:00 2001 From: alexban011 Date: Sun, 29 May 2022 16:27:57 +0300 Subject: [PATCH] Land melee units can only attack water units once they are able to embark (#6957) --- core/src/com/unciv/logic/automation/BattleHelper.kt | 5 +++++ core/src/com/unciv/logic/battle/ICombatant.kt | 8 ++++++++ 2 files changed, 13 insertions(+) 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 }