Skip to content

Commit 6663763

Browse files
committed
findFurthestTile no longer crashes when the unit has no tiles it can move to
1 parent 90abfda commit 6663763

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

core/src/com/unciv/logic/automation/BarbarianAutomation.kt

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,10 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
6464
val possibleHeal = unit.rankTileForHealing(unit.currentTile)
6565
if (possibleDamage > possibleHeal) {
6666
// run
67-
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles)
68-
unit.movement.moveToTile(furthestTile)
69-
} else {
70-
// heal
71-
unit.fortifyIfCan()
67+
val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
68+
if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
7269
}
70+
unit.fortifyIfCan()
7371
return
7472
}
7573

@@ -101,8 +99,8 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
10199
// 1 - heal or run if death is near
102100
if (unit.health < 50) {
103101
if (nearEnemyTiles.isNotEmpty()) {
104-
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles)
105-
unit.movement.moveToTile(furthestTile)
102+
val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
103+
if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
106104
}
107105
unit.fortifyIfCan()
108106

@@ -125,12 +123,13 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
125123
UnitAutomation().wander(unit, unitDistanceToTiles)
126124
}
127125

128-
private fun findFurthestTile(
126+
private fun findFurthestTileCanMoveTo(
129127
unit: MapUnit,
130128
unitDistanceToTiles: PathsToTilesWithinTurn,
131129
nearEnemyTiles: List<AttackableTile>
132-
): TileInfo {
130+
): TileInfo? {
133131
val possibleTiles = unitDistanceToTiles.keys.filter { unit.movement.canMoveTo(it) }
132+
if(possibleTiles.isEmpty()) return null
134133
val enemies = nearEnemyTiles.mapNotNull { it.tileToAttack.militaryUnit }
135134
var furthestTile: Pair<TileInfo, Float> = possibleTiles.random() to 0f
136135
for (enemy in enemies) {

0 commit comments

Comments
 (0)