From 2d1e55a4d4f4a2d52047e618f934a0766a8bf1f7 Mon Sep 17 00:00:00 2001 From: PLynx Date: Sun, 3 Mar 2024 19:03:12 +0100 Subject: [PATCH] Add MovedToNewCapital buiding unique (#11213) * Added MovedToNewCapital building unique Yet to be tested * Applied the suggestions Of @yairm210 and @SomeTroglodyte --- .../com/unciv/logic/civilization/Civilization.kt | 16 ++++++++++++++++ .../unciv/models/ruleset/unique/UniqueType.kt | 1 + docs/Modders/uniques.md | 3 +++ 3 files changed, 20 insertions(+) diff --git a/core/src/com/unciv/logic/civilization/Civilization.kt b/core/src/com/unciv/logic/civilization/Civilization.kt index e9ebe6583c..a78d12614b 100644 --- a/core/src/com/unciv/logic/civilization/Civilization.kt +++ b/core/src/com/unciv/logic/civilization/Civilization.kt @@ -866,6 +866,22 @@ class Civilization : IsPartOfGameInfoSerialization { // move new capital city.cityConstructions.addBuilding(city.capitalCityIndicator()) city.isBeingRazed = false // stop razing the new capital if it was being razed + + // move the buildings with MovedToNewCapital unique + if (oldCapital != null) { + // Get the Set of the buildings to move + val buildingsToMove = oldCapital.cityConstructions.getBuiltBuildings().filter { + it.hasUnique(UniqueType.MovesToNewCapital) + }.toSet() + + // Remove the buildings from old capital + oldCapital.cityConstructions.removeBuildings(buildingsToMove) + + // Add the buildings to new capital + buildingsToMove.forEach { + city.cityConstructions.addBuilding(it) + } + } } oldCapital?.cityConstructions?.removeBuilding(oldCapital.capitalCityIndicator()) } diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 6e305a70ec..66f450c1ab 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -305,6 +305,7 @@ enum class UniqueType( Unsellable("Unsellable", UniqueTarget.Building), ObsoleteWith("Obsolete with [tech]", UniqueTarget.Building, UniqueTarget.Resource, UniqueTarget.Improvement), IndicatesCapital("Indicates the capital city", UniqueTarget.Building), + MovesToNewCapital("Moves to new capital when capital changes", UniqueTarget.Building), ProvidesExtraLuxuryFromCityResources("Provides 1 extra copy of each improved luxury resource near this City", UniqueTarget.Building), DestroyedWhenCityCaptured("Destroyed when the city is captured", UniqueTarget.Building), diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index 48914f1375..313517e77a 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -1126,6 +1126,9 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl ??? example "Indicates the capital city" Applicable to: Building +??? example "Moved to the new capital" + Applicable to: Building + ??? example "Provides 1 extra copy of each improved luxury resource near this City" Applicable to: Building