From 0a5aefcdd9e977b9de795de8fd7cd7e3dbfb5ea7 Mon Sep 17 00:00:00 2001 From: Federico Luongo Date: Sun, 19 Jan 2020 17:43:52 +0100 Subject: [PATCH] Fix Legalism Policy (#1724) Closes #1712 --- .../com/unciv/logic/city/CityConstructions.kt | 17 ++++++++--------- core/src/com/unciv/logic/city/CityInfo.kt | 3 ++- .../unciv/logic/civilization/PolicyManager.kt | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/core/src/com/unciv/logic/city/CityConstructions.kt b/core/src/com/unciv/logic/city/CityConstructions.kt index 1c0bd619ba..1f4a945a5a 100644 --- a/core/src/com/unciv/logic/city/CityConstructions.kt +++ b/core/src/com/unciv/logic/city/CityConstructions.kt @@ -48,6 +48,9 @@ class CityConstructions { fun getConstructableUnits() = cityInfo.getRuleset().units.values .asSequence().filter { it.isBuildable(this) } + fun getBasicCultureBuildings() = cityInfo.getRuleset().buildings.values + .asSequence().filter { it.culture > 0f && !it.isWonder && !it.isNationalWonder && it.replaces == null } + /** * @return [Stats] provided by all built buildings in city plus the bonus from Library */ @@ -279,22 +282,18 @@ class CityConstructions { } fun hasBuildableCultureBuilding(): Boolean { - val basicCultureBuildings = listOf("Monument", "Temple", "Opera House", "Museum") - .map { cityInfo.civInfo.getEquivalentBuilding(it) } - - return basicCultureBuildings + return getBasicCultureBuildings() + .map { cityInfo.civInfo.getEquivalentBuilding(it.name) } .filter { it.isBuildable(this) || it.name == currentConstruction} .any() } fun addCultureBuilding(): String? { - val basicCultureBuildings = listOf("Monument", "Temple", "Opera House", "Museum") - .map { cityInfo.civInfo.getEquivalentBuilding(it) } - - val buildableCultureBuildings = basicCultureBuildings + val buildableCultureBuildings = getBasicCultureBuildings() + .map { cityInfo.civInfo.getEquivalentBuilding(it.name) } .filter { it.isBuildable(this) || it.name == currentConstruction } - if (buildableCultureBuildings.isEmpty()) + if (!buildableCultureBuildings.any()) return null val cultureBuildingToBuild = buildableCultureBuildings.minBy { it.cost }!!.name diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index ff24336f87..fd6fbdf957 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -76,7 +76,8 @@ class CityInfo { civInfo.cities = civInfo.cities.toMutableList().apply { add(this@CityInfo) } civInfo.addNotification("[$name] has been founded!", cityLocation, Color.PURPLE) - if (civInfo.policies.isAdopted("Legalism") && civInfo.cities.size <= 4) cityConstructions.addCultureBuilding() + civInfo.policies.tryAddLegalismBuildings() + if (civInfo.cities.size == 1) { cityConstructions.addBuilding("Palace") cityConstructions.currentConstruction = Constants.worker // Default for first city only! diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.kt b/core/src/com/unciv/logic/civilization/PolicyManager.kt index f97c860688..c7b0073425 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.kt +++ b/core/src/com/unciv/logic/civilization/PolicyManager.kt @@ -135,7 +135,7 @@ class PolicyManager { if(!canAdoptPolicy()) shouldOpenPolicyPicker=false } - private fun tryAddLegalismBuildings() { + fun tryAddLegalismBuildings() { val candidateCities = civInfo.cities .sortedBy { it.turnAcquired } .subList(0, min(4, civInfo.cities.size))