diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 0bc6760607..3c41000dbc 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -63,7 +63,7 @@ object Battle { postBattleNationUniques(defender, attackedTile, attacker) // This needs to come BEFORE the move-to-tile, because if we haven't conquered it we can't move there =) - if (defender.isDefeated() && defender is CityCombatant && attacker.isMelee()) + if (defender.isDefeated() && defender is CityCombatant && attacker is MapUnitCombatant && attacker.isMelee() && !attacker.unit.hasUnique("Unable to capture cities")) conquerCity(defender.city, attacker) // we're a melee unit and we destroyed\captured an enemy unit diff --git a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt index d517f147c5..c5de1253f7 100644 --- a/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt +++ b/core/src/com/unciv/logic/map/UnitMovementAlgorithms.kt @@ -8,12 +8,14 @@ class UnitMovementAlgorithms(val unit:MapUnit) { // This function is called ALL THE TIME and should be as time-optimal as possible! fun getMovementCostBetweenAdjacentTiles(from: TileInfo, to: TileInfo, civInfo: CivilizationInfo): Float { - if (unit.allTilesCosts1) - return 1f if ((from.isLand != to.isLand) && !unit.civInfo.nation.embarkDisembarkCosts1 && unit.type.isLandUnit()) return 100f // this is embarkment or disembarkment, and will take the entire turn + // land units will still spend all movement points to embark even with this unique + if (unit.allTilesCosts1) + return 1f + var extraCost = 0f val toOwner = to.getOwner()