The issue was caused by Latin-Civs Mixed Militias being considered workers in ConstructionAutomation.addWorkerChoice() but not beign counted as one in ConstructionAutomation.workers. Now, any unit that can build improvements counts as a worker in it. In addition, the AI simulates military units that can found city, build improvements or are religious as civilians in peacetime and as soldiers in wartime.
This commit is contained in:
MioBestWaifu 2023-04-11 01:55:15 -03:00 committed by GitHub
parent 9ee653adae
commit e7d091197f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 1 deletions

View File

@ -38,7 +38,7 @@ class ConstructionAutomation(val cityConstructions: CityConstructions){
private val civUnits = civInfo.units.getCivUnits()
private val militaryUnits = civUnits.count { it.baseUnit.isMilitary() }
private val workers = civUnits.count { it.cache.hasUniqueToBuildImprovements && it.isCivilian() }.toFloat()
private val workers = civUnits.count { it.cache.hasUniqueToBuildImprovements}.toFloat()
private val cities = civInfo.cities.size
private val allTechsAreResearched = civInfo.gameInfo.ruleset.technologies.values
.all { civInfo.tech.isResearched(it.name) || !civInfo.tech.canBeResearched(it.name)}

View File

@ -152,6 +152,14 @@ object UnitAutomation {
unit.promotions.addPromotion(availablePromotions.toList().random().name)
}
//This allows for military units with certain civilian abilities to behave as civilians in peace and soldiers in war
if ((unit.hasUnique(UniqueType.BuildImprovements) || unit.hasUnique(UniqueType.FoundCity) ||
unit.hasUnique(UniqueType.ReligiousUnit) || unit.hasUnique(UniqueType.CreateWaterImprovements))
&& !unit.civ.isAtWar()){
automateCivilianUnit(unit)
return
}
if (unit.baseUnit.isAirUnit() && unit.canIntercept())
return SpecificUnitAutomation.automateFighter(unit)