mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-22 02:42:16 -04:00
Fixed building maintenance unique
This commit is contained in:
parent
5b5495397f
commit
89f6b6fe8b
@ -30,6 +30,7 @@ import com.unciv.models.ruleset.unit.BaseUnit
|
||||
import com.unciv.models.stats.Stat
|
||||
import com.unciv.models.stats.Stats
|
||||
import com.unciv.models.translations.tr
|
||||
import com.unciv.ui.components.extensions.toPercent
|
||||
import com.unciv.ui.components.fonts.Fonts
|
||||
import com.unciv.ui.screens.civilopediascreen.CivilopediaCategories
|
||||
import com.unciv.ui.screens.civilopediascreen.FormattedLine
|
||||
@ -118,13 +119,26 @@ class CityConstructions : IsPartOfGameInfoSerialization {
|
||||
/**
|
||||
* @return Maintenance cost of all built buildings
|
||||
*/
|
||||
fun getMaintenanceCosts(): Int {
|
||||
var maintenanceCost = 0
|
||||
fun getMaintenanceCosts(): Float {
|
||||
var maintenanceCost = 0f
|
||||
val freeBuildings = city.civ.civConstructions.getFreeBuildingNames(city)
|
||||
|
||||
val buildingMaintenanceUniques = city.getMatchingUniques(UniqueType.BuildingMaintenance)
|
||||
.filter { city.matchesFilter(it.params[2]) }.toList()
|
||||
|
||||
for (building in getBuiltBuildings().filterNot { it.name in freeBuildings }) {
|
||||
var maintenanceForThisBuilding = building.maintenance.toFloat()
|
||||
for (unique in buildingMaintenanceUniques)
|
||||
if (building.matchesFilter(unique.params[1]))
|
||||
maintenanceForThisBuilding *= unique.params[0].toPercent()
|
||||
|
||||
maintenanceCost += maintenanceForThisBuilding
|
||||
}
|
||||
|
||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenanceOld)) {
|
||||
maintenanceCost = (maintenanceCost * unique.params[0].toPercent())
|
||||
}
|
||||
|
||||
for (building in getBuiltBuildings())
|
||||
if (building.name !in freeBuildings)
|
||||
maintenanceCost += building.maintenance
|
||||
|
||||
return maintenanceCost
|
||||
}
|
||||
|
@ -16,7 +16,6 @@ import com.unciv.models.stats.Stats
|
||||
import com.unciv.ui.components.extensions.toPercent
|
||||
import com.unciv.utils.DebugUtils
|
||||
import kotlin.math.min
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
|
||||
class StatTreeNode {
|
||||
@ -331,23 +330,11 @@ class CityStats(val city: City) {
|
||||
|
||||
private fun getBuildingMaintenanceCosts(): Float {
|
||||
// Same here - will have a different UI display.
|
||||
var buildingsMaintenance = city.cityConstructions.getMaintenanceCosts().toFloat() // this is AFTER the bonus calculation!
|
||||
var buildingsMaintenance = city.cityConstructions.getMaintenanceCosts() // this is AFTER the bonus calculation!
|
||||
if (!city.civ.isHuman()) {
|
||||
buildingsMaintenance *= city.civ.gameInfo.getDifficulty().aiBuildingMaintenanceModifier
|
||||
}
|
||||
|
||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenanceOld)) {
|
||||
buildingsMaintenance *= unique.params[0].toPercent()
|
||||
}
|
||||
|
||||
for (unique in city.getMatchingUniques(UniqueType.BuildingMaintenance)) {
|
||||
city.cityConstructions.getBuiltBuildings().filter {
|
||||
it.matchesFilter(unique.params[1])
|
||||
}.forEach {
|
||||
it.maintenance = (it.maintenance * unique.params[0].toPercent()).roundToInt()
|
||||
}
|
||||
}
|
||||
|
||||
return buildingsMaintenance
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user