No longer attempts to attack city that contains a unit

Battle visualization bug fixed
This commit is contained in:
Yair Morgenstern
2018-04-04 17:37:59 +03:00
parent 36c2afd026
commit 4e36aa0d5a
3 changed files with 8 additions and 7 deletions

View File

@ -21,8 +21,8 @@ android {
applicationId "com.unciv.game"
minSdkVersion 14
targetSdkVersion 26
versionCode 32
versionName "1.3.5"
versionCode 33
versionName "1.4"
}
buildTypes {
release {

View File

@ -86,10 +86,11 @@ class GameInfo {
if(unit.health < 50) continue // do nothing but heal
// if there is an attackable unit in the vicinity, attack!
val tilesViewableToCiv = civInfo.getViewableTiles().toHashSet()
val attackableTiles = civInfo.getViewableTiles()
.filter { it.unit != null && it.unit!!.owner != civInfo.civName && !it.isCityCenter }.toHashSet()
val distanceToTiles = unit.getDistanceToTiles()
val unitTileToAttack = distanceToTiles.keys.firstOrNull{ tilesViewableToCiv.contains(it) &&
it.unit != null && it.unit!!.owner != civInfo.civName && !it.isCityCenter }
val unitTileToAttack = distanceToTiles.keys.firstOrNull{ attackableTiles.contains(it)}
if(unitTileToAttack!=null){
val unitToAttack =unitTileToAttack.unit!!
if(unitToAttack.getBaseUnit().unitType == UnitType.Civilian){ // kill
@ -118,7 +119,7 @@ class GameInfo {
// else, find the closest enemy unit that we know of within 5 spaces and advance towards it
val closestUnit = tileMap.getTilesInDistance(unit.getTile().position, 5)
.firstOrNull{ tilesViewableToCiv.contains(it) && it.unit!=null && it.unit!!.owner!=civInfo.civName }
.firstOrNull{ attackableTiles.contains(it) }
if(closestUnit!=null){
unit.headTowards(closestUnit.position)

View File

@ -51,7 +51,7 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
row()
var damageToDefender = battle.calculateDamageToDefender(attacker,defender)
var damageToAttacker = battle.calculateDamageToAttacker(defender,attacker)
var damageToAttacker = battle.calculateDamageToAttacker(attacker,defender)
if (damageToAttacker>attacker.getHealth() && damageToDefender>defender.getHealth() // when damage exceeds health, we don't want to show negative health numbers