AI missionaries avoid cities with inquisitors (#7218)

This commit is contained in:
OptimizedForDensity 2022-06-20 15:46:11 -04:00 committed by GitHub
parent 18b91bba1e
commit 954d0e4fe0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 4 additions and 4 deletions

View File

@ -299,10 +299,10 @@ object SpecificUnitAutomation {
val city = unit.civInfo.gameInfo.getCities().asSequence()
.filter { it.religion.getMajorityReligion()?.name != unit.getReligionDisplayName() }
.filterNot { it.civInfo.isAtWarWith(unit.civInfo) }
.filter { it.civInfo.knows(unit.civInfo) && !it.civInfo.isAtWarWith(unit.civInfo) }
.filterNot { it.religion.isProtectedByInquisitor() }
.minByOrNull { it.getCenterTile().aerialDistanceTo(unit.currentTile) } ?: return
val destination = city.getTiles().asSequence()
.filter { unit.movement.canMoveTo(it) || it == unit.getTile() }
.sortedBy { it.aerialDistanceTo(unit.currentTile) }

View File

@ -283,10 +283,9 @@ class CityInfoReligionManager {
}
fun isProtectedByInquisitor(): Boolean {
for (tile in cityInfo.getCenterTile().neighbors)
for (tile in cityInfo.getCenterTile().getTilesInDistance(1))
if (tile.civilianUnit?.hasUnique(UniqueType.PreventSpreadingReligion) == true)
return true
if (cityInfo.getCenterTile().civilianUnit?.name == "Inquisitor") return true
return false
}

View File

@ -333,6 +333,7 @@ class ReligionManager {
if (missionary.getTile().getOwner() == null) return false
if (missionary.currentTile.owningCity?.religion?.getMajorityReligion()?.name == missionary.religion)
return false
if (missionary.getTile().getCity()!!.religion.isProtectedByInquisitor()) return false
return true
}