From 172fee990298569dc4f72127e0a760add0fb9ed9 Mon Sep 17 00:00:00 2001 From: SeventhM <127357473+SeventhM@users.noreply.github.com> Date: Mon, 19 Jun 2023 09:01:40 -0700 Subject: [PATCH] Change the default cost of buildings and the default time of tile improvements (#9621) --- core/src/com/unciv/logic/map/mapunit/MapUnit.kt | 2 +- core/src/com/unciv/models/ruleset/Ruleset.kt | 2 +- core/src/com/unciv/models/ruleset/RulesetValidator.kt | 2 +- core/src/com/unciv/models/ruleset/tile/TileImprovement.kt | 4 ++-- .../com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt | 2 +- .../unciv/ui/screens/pickerscreens/ImprovementPickerScreen.kt | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt index c6699b99aa..bed2e656ed 100644 --- a/core/src/com/unciv/logic/map/mapunit/MapUnit.kt +++ b/core/src/com/unciv/logic/map/mapunit/MapUnit.kt @@ -817,7 +817,7 @@ class MapUnit : IsPartOfGameInfoSerialization { fun canBuildImprovement(improvement: TileImprovement, tile: Tile = currentTile): Boolean { // Workers (and similar) should never be able to (instantly) construct things, only build them // HOWEVER, they should be able to repair such things if they are pillaged - if (improvement.turnsToBuild == 0 + if (improvement.turnsToBuild == -1 && improvement.name != Constants.cancelImprovementOrder && tile.improvementInProgress != improvement.name ) return false diff --git a/core/src/com/unciv/models/ruleset/Ruleset.kt b/core/src/com/unciv/models/ruleset/Ruleset.kt index c9f11c73d6..655f122ec0 100644 --- a/core/src/com/unciv/models/ruleset/Ruleset.kt +++ b/core/src/com/unciv/models/ruleset/Ruleset.kt @@ -456,7 +456,7 @@ class Ruleset { * */ fun updateBuildingCosts() { for (building in buildings.values) { - if (building.cost == 0 && building.getMatchingUniques(UniqueType.Unbuildable).none { it.conditionals.isEmpty() }) { + if (building.cost == -1 && 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 diff --git a/core/src/com/unciv/models/ruleset/RulesetValidator.kt b/core/src/com/unciv/models/ruleset/RulesetValidator.kt index 01c660c1b7..cca1c98917 100644 --- a/core/src/com/unciv/models/ruleset/RulesetValidator.kt +++ b/core/src/com/unciv/models/ruleset/RulesetValidator.kt @@ -58,7 +58,7 @@ class RulesetValidator(val ruleset: Ruleset) { } for (building in ruleset.buildings.values) { - if (building.requiredTech == null && building.cost == 0 && !building.hasUnique( + if (building.requiredTech == null && building.cost == -1 && !building.hasUnique( UniqueType.Unbuildable)) lines += "${building.name} is buildable and therefore must either have an explicit cost or reference an existing tech!" diff --git a/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt b/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt index 075ab6abe8..a37f138fe7 100644 --- a/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt +++ b/core/src/com/unciv/models/ruleset/tile/TileImprovement.kt @@ -27,7 +27,7 @@ class TileImprovement : RulesetStatsObject() { override fun getUniqueTarget() = UniqueTarget.Improvement val shortcutKey: Char? = null // This is the base cost. A cost of 0 means created instead of buildable. - val turnsToBuild: Int = 0 + val turnsToBuild: Int = -1 fun getTurnsToBuild(civInfo: Civilization, unit: MapUnit): Int { @@ -269,7 +269,7 @@ class TileImprovement : RulesetStatsObject() { return ruleset.units.values.asSequence() .filter { unit -> - turnsToBuild != 0 + turnsToBuild != -1 && unit.getMatchingUniques(UniqueType.BuildImprovements, StateForConditionals.IgnoreConditionals) .any { matchesBuildImprovementsFilter(it.params[0]) } || unit.hasUnique(UniqueType.CreateWaterImprovements) diff --git a/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt b/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt index d9d346f5fd..047d5b26bb 100644 --- a/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt +++ b/core/src/com/unciv/ui/screens/diplomacyscreen/DiplomacyScreen.kt @@ -424,7 +424,7 @@ class DiplomacyScreen( if (otherCiv.cities.isEmpty()) return null val improvableResourceTiles = getImprovableResourceTiles(otherCiv) val improvements = - otherCiv.gameInfo.ruleset.tileImprovements.filter { it.value.turnsToBuild != 0 } + otherCiv.gameInfo.ruleset.tileImprovements.filter { it.value.turnsToBuild != -1 } var needsImprovements = false for (improvableTile in improvableResourceTiles) diff --git a/core/src/com/unciv/ui/screens/pickerscreens/ImprovementPickerScreen.kt b/core/src/com/unciv/ui/screens/pickerscreens/ImprovementPickerScreen.kt index c866a5b46b..69f946483b 100644 --- a/core/src/com/unciv/ui/screens/pickerscreens/ImprovementPickerScreen.kt +++ b/core/src/com/unciv/ui/screens/pickerscreens/ImprovementPickerScreen.kt @@ -89,7 +89,7 @@ class ImprovementPickerScreen( for (improvement in ruleSet.tileImprovements.values) { var suggestRemoval = false // canBuildImprovement() would allow e.g. great improvements thus we need to exclude them - except cancel - if (improvement.turnsToBuild == 0 && improvement.name != Constants.cancelImprovementOrder) continue + if (improvement.turnsToBuild == -1 && improvement.name != Constants.cancelImprovementOrder) continue if (improvement.name == tile.improvement) continue // also checked by canImprovementBeBuiltHere, but after more expensive tests if (!unit.canBuildImprovement(improvement)) continue