mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-07 00:41:39 +07:00
AI: Finer-tuned Food ranking vs other stats for cities
This commit is contained in:
@ -40,6 +40,8 @@ object Automation {
|
|||||||
return rank
|
return rank
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val zeroFoodFocuses = setOf(CityFocus.CultureFocus, CityFocus.FaithFocus, CityFocus.GoldFocus,
|
||||||
|
CityFocus.HappinessFocus, CityFocus.ProductionFocus, CityFocus.ScienceFocus)
|
||||||
private fun rankStatsForCityWork(stats: Stats, city: City, cityStats: Stats, specialist: Boolean, localUniqueCache: LocalUniqueCache): Float {
|
private fun rankStatsForCityWork(stats: Stats, city: City, cityStats: Stats, specialist: Boolean, localUniqueCache: LocalUniqueCache): Float {
|
||||||
val cityAIFocus = city.cityAIFocus
|
val cityAIFocus = city.cityAIFocus
|
||||||
val yieldStats = stats.clone()
|
val yieldStats = stats.clone()
|
||||||
@ -62,23 +64,20 @@ object Automation {
|
|||||||
|
|
||||||
if (surplusFood > 0 && city.avoidGrowth) {
|
if (surplusFood > 0 && city.avoidGrowth) {
|
||||||
yieldStats.food = 0f // don't need more food!
|
yieldStats.food = 0f // don't need more food!
|
||||||
} else {
|
} else if (cityAIFocus in zeroFoodFocuses) {
|
||||||
if (cityAIFocus != CityFocus.NoFocus && cityAIFocus != CityFocus.FoodFocus && cityAIFocus != CityFocus.ProductionGrowthFocus && cityAIFocus != CityFocus.GoldGrowthFocus) {
|
// Focus on non-food/growth
|
||||||
// Focus on non-food/growth
|
if (surplusFood < 0)
|
||||||
if (surplusFood < 0)
|
yieldStats.food *= 8 // Starving, need Food, get to 0
|
||||||
yieldStats.food *= 8 // Starving, need Food, get to 0
|
else
|
||||||
else
|
yieldStats.food /= 2
|
||||||
yieldStats.food /= 2
|
} else if (!city.avoidGrowth) {
|
||||||
} else if (!city.avoidGrowth) {
|
// NoFocus or Food/Growth Focus. Target +2 Food Surplus
|
||||||
// NoFocus or Food/Growth Focus. Target +2 Food Surplus
|
if (surplusFood < 2)
|
||||||
if (surplusFood < 2)
|
yieldStats.food *= 8
|
||||||
yieldStats.food *= 8
|
else if (city.population.population < 5)
|
||||||
else if (cityAIFocus != CityFocus.FoodFocus)
|
yieldStats.food *= 3
|
||||||
yieldStats.food /= 2
|
else if (cityAIFocus == CityFocus.FoodFocus)
|
||||||
if (city.population.population < 5 && cityAIFocus != CityFocus.FoodFocus)
|
yieldStats.food *= 2
|
||||||
// NoFocus or GoldGrow or ProdGrow, not Avoid Growth, pop < 5. FoodFocus already does this up
|
|
||||||
yieldStats.food *= 3
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (city.population.population < 5) {
|
if (city.population.population < 5) {
|
||||||
|
Reference in New Issue
Block a user