From 36c2afd026c4e57a5b9df92855ae2a73df27e52c Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 4 Apr 2018 17:16:28 +0300 Subject: [PATCH] Enemy units don't advance towards units they can't see (not viewable to civ) --- core/src/com/unciv/logic/GameInfo.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/com/unciv/logic/GameInfo.kt b/core/src/com/unciv/logic/GameInfo.kt index 6f92692a85..74d034b85b 100644 --- a/core/src/com/unciv/logic/GameInfo.kt +++ b/core/src/com/unciv/logic/GameInfo.kt @@ -86,8 +86,10 @@ 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 distanceToTiles = unit.getDistanceToTiles() - val unitTileToAttack = distanceToTiles.keys.firstOrNull{ it.unit != null && it.unit!!.owner != civInfo.civName && !it.isCityCenter } + val unitTileToAttack = distanceToTiles.keys.firstOrNull{ tilesViewableToCiv.contains(it) && + it.unit != null && it.unit!!.owner != civInfo.civName && !it.isCityCenter } if(unitTileToAttack!=null){ val unitToAttack =unitTileToAttack.unit!! if(unitToAttack.getBaseUnit().unitType == UnitType.Civilian){ // kill @@ -115,9 +117,8 @@ class GameInfo { // todo // else, find the closest enemy unit that we know of within 5 spaces and advance towards it - // todo this doesn't take into account which tiles are visible to the civ val closestUnit = tileMap.getTilesInDistance(unit.getTile().position, 5) - .firstOrNull{ it.unit!=null && it.unit!!.owner!=civInfo.civName } + .firstOrNull{ tilesViewableToCiv.contains(it) && it.unit!=null && it.unit!!.owner!=civInfo.civName } if(closestUnit!=null){ unit.headTowards(closestUnit.position)