From 74806e8eeca49884998c679173fa62c2291cab18 Mon Sep 17 00:00:00 2001 From: SeventhM <127357473+SeventhM@users.noreply.github.com> Date: Sun, 20 Oct 2024 04:20:44 -0700 Subject: [PATCH] Add unique to show construction when unbuildable (#12313) --- core/src/com/unciv/models/ruleset/Building.kt | 2 ++ core/src/com/unciv/models/ruleset/unique/UniqueType.kt | 1 + core/src/com/unciv/models/ruleset/unit/BaseUnit.kt | 2 ++ 3 files changed, 5 insertions(+) diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 7b3eebe5afd92..56b7882ee7075 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -244,6 +244,8 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction { if (cityConstructions.city.civ.civConstructions.countConstructedObjects(this) >= unique.params[0].toInt()) return false } + if (hasUnique(UniqueType.ShowsWhenUnbuilable, StateForConditionals(cityConstructions.city))) + return true val rejectionReasons = getRejectionReasons(cityConstructions) diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 3115985355034..5be1d9bf893a0 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -955,6 +955,7 @@ enum class UniqueType( UniqueTarget.Promotion, UniqueTarget.Policy, flags = UniqueFlag.setOfHiddenToUsers), HiddenFromCivilopedia("Will not be displayed in Civilopedia", *UniqueTarget.Displayable, flags = UniqueFlag.setOfHiddenToUsers), + ShowsWhenUnbuilable("Shown while unbuilable", UniqueTarget.Building, UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers), ModifierHiddenFromUsers("hidden from users", UniqueTarget.MetaModifier), ForEveryCountable("for every [countable]", UniqueTarget.MetaModifier), ForEveryAmountCountable("for every [amount] [countable]", UniqueTarget.MetaModifier), diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt index aba0a6fe2da40..d7c6e70483997 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnit.kt @@ -163,6 +163,8 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction { fun getDisbandGold(civInfo: Civilization) = getBaseGoldCost(civInfo, null).toInt() / 20 override fun shouldBeDisplayed(cityConstructions: CityConstructions): Boolean { + if (hasUnique(UniqueType.ShowsWhenUnbuilable, StateForConditionals(cityConstructions.city))) + return true val rejectionReasons = getRejectionReasons(cityConstructions) if (rejectionReasons.none { !it.shouldShow }) return true