Resolved #8628 - modding: conditionally-unbuildable buildings display their cost

This commit is contained in:
Yair Morgenstern 2023-02-09 19:21:31 +02:00
parent 1daf76978b
commit 75d7494f89
2 changed files with 3 additions and 2 deletions

View File

@ -142,7 +142,8 @@ class CityConstructions : IsPartOfGameInfoSerialization {
val turnsToConstruction = turnsToConstruction(constructionName, useStoredProduction)
val currentProgress = if (useStoredProduction) getWorkDone(constructionName) else 0
val lines = ArrayList<String>()
val buildable = construction.uniqueObjects.none{ it.isOfType(UniqueType.Unbuildable) }
val buildable = !construction.getMatchingUniques(UniqueType.Unbuildable)
.any { it.conditionalsApply(StateForConditionals(city.civ, city)) }
if (buildable)
lines += (if (currentProgress == 0) "" else "$currentProgress/") +
"$cost${Fonts.production} $turnsToConstruction${Fonts.turn}"

View File

@ -415,7 +415,7 @@ class Ruleset {
* */
fun updateBuildingCosts() {
for (building in buildings.values) {
if (building.cost == 0 && !building.hasUnique(UniqueType.Unbuildable)) {
if (building.cost == 0 && building.getMatchingUniques(UniqueType.Unbuildable).none { it.conditionals.isEmpty() }) {
val column = technologies[building.requiredTech]?.column
?: throw UncivShowableException("Building '[${building.name}]' is buildable and therefore must either have an explicit cost or reference an existing tech.")
building.cost = if (building.isAnyWonder()) column.wonderCost else column.buildingCost