From 3e024178387262bef801c8e34ce94142cf01db21 Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Sat, 17 Nov 2018 22:01:47 +0200 Subject: [PATCH] AI units no longer attack from an embarked state (it's just not worth it) --- android/build.gradle | 4 ++-- core/src/com/unciv/logic/automation/UnitAutomation.kt | 6 +++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index c45da3673d..ea2969a898 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -21,8 +21,8 @@ android { applicationId "com.unciv.game" minSdkVersion 14 targetSdkVersion 26 - versionCode 160 - versionName "2.10.1" + versionCode 161 + versionName "2.10.2" } buildTypes { release { diff --git a/core/src/com/unciv/logic/automation/UnitAutomation.kt b/core/src/com/unciv/logic/automation/UnitAutomation.kt index a3cfb74af3..ddff9f8eb3 100644 --- a/core/src/com/unciv/logic/automation/UnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/UnitAutomation.kt @@ -10,6 +10,7 @@ import com.unciv.logic.civilization.DiplomaticStatus import com.unciv.logic.map.MapUnit import com.unciv.logic.map.TileInfo import com.unciv.models.gamebasics.GameBasics +import com.unciv.models.gamebasics.tile.TerrainType import com.unciv.ui.utils.getRandom import com.unciv.ui.worldscreen.unit.UnitAction import com.unciv.ui.worldscreen.unit.UnitActions @@ -151,9 +152,12 @@ class UnitAutomation{ // and then later we round it off to a whole. // So the poor unit thought it could attack from the tile, but when it comes to do so it has no movement points! // Silly floats, basically - val tilesToAttackFrom = unitDistanceToTiles.filter { unit.currentMovement - it.value > 0.1 } + var tilesToAttackFrom = unitDistanceToTiles.filter { unit.currentMovement - it.value > 0.1 } .map { it.key } .filter { unit.canMoveTo(it) || it==unit.getTile() } + if(unit.type.isLandUnit()) + tilesToAttackFrom = tilesToAttackFrom.filter { it.getBaseTerrain().type==TerrainType.Land } + for(reachableTile in tilesToAttackFrom){ // tiles we'll still have energy after we reach there val tilesInAttackRange = if (unit.hasUnique("Indirect fire")) reachableTile.getTilesInDistance(rangeOfAttack) else reachableTile.getViewableTiles(rangeOfAttack)