Merge tag '3.5.3-patch1'

This commit is contained in:
Yair Morgenstern
2020-01-18 21:58:09 +02:00

View File

@ -64,12 +64,10 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
val possibleHeal = unit.rankTileForHealing(unit.currentTile) val possibleHeal = unit.rankTileForHealing(unit.currentTile)
if (possibleDamage > possibleHeal) { if (possibleDamage > possibleHeal) {
// run // run
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles) val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
unit.movement.moveToTile(furthestTile) if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
} else {
// heal
unit.fortifyIfCan()
} }
unit.fortifyIfCan()
return return
} }
@ -101,8 +99,8 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
// 1 - heal or run if death is near // 1 - heal or run if death is near
if (unit.health < 50) { if (unit.health < 50) {
if (nearEnemyTiles.isNotEmpty()) { if (nearEnemyTiles.isNotEmpty()) {
val furthestTile = findFurthestTile(unit, unitDistanceToTiles, nearEnemyTiles) val furthestTile = findFurthestTileCanMoveTo(unit, unitDistanceToTiles, nearEnemyTiles)
unit.movement.moveToTile(furthestTile) if(furthestTile!=null) unit.movement.moveToTile(furthestTile)
} }
unit.fortifyIfCan() unit.fortifyIfCan()
@ -125,12 +123,13 @@ class BarbarianAutomation(val civInfo: CivilizationInfo) {
UnitAutomation().wander(unit, unitDistanceToTiles) UnitAutomation().wander(unit, unitDistanceToTiles)
} }
private fun findFurthestTile( private fun findFurthestTileCanMoveTo(
unit: MapUnit, unit: MapUnit,
unitDistanceToTiles: PathsToTilesWithinTurn, unitDistanceToTiles: PathsToTilesWithinTurn,
nearEnemyTiles: List<AttackableTile> nearEnemyTiles: List<AttackableTile>
): TileInfo { ): TileInfo? {
val possibleTiles = unitDistanceToTiles.keys.filter { unit.movement.canMoveTo(it) } val possibleTiles = unitDistanceToTiles.keys.filter { unit.movement.canMoveTo(it) }
if(possibleTiles.isEmpty()) return null
val enemies = nearEnemyTiles.mapNotNull { it.tileToAttack.militaryUnit } val enemies = nearEnemyTiles.mapNotNull { it.tileToAttack.militaryUnit }
var furthestTile: Pair<TileInfo, Float> = possibleTiles.random() to 0f var furthestTile: Pair<TileInfo, Float> = possibleTiles.random() to 0f
for (enemy in enemies) { for (enemy in enemies) {