diff --git a/android/assets/jsons/Civ V - Vanilla/Policies.json b/android/assets/jsons/Civ V - Vanilla/Policies.json index f0414d75eb..8127f30b8a 100644 --- a/android/assets/jsons/Civ V - Vanilla/Policies.json +++ b/android/assets/jsons/Civ V - Vanilla/Policies.json @@ -2,11 +2,11 @@ { "name": "Tradition", "era": "Ancient era", - "effect": "+3 culture in capital and increased rate of border expansion", + "uniques": ["+3 culture in capital", "Increased rate of border expansion"], "policies": [ { "name": "Aristocracy", - "effect": "+15% production when constructing wonders, +1 happiness for every 10 citizens in a city", + "uniques": ["+15% production when constructing wonders", "+1 happiness for every 10 citizens in a city"], "row": 1, "column": 1 }, diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index e228db93f2..9983a80786 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -38,7 +38,7 @@ class CityExpansionManager { cultureToNextTile *= 0.75 //Speciality of Angkor Wat if (cityInfo.containsBuildingUnique("Culture and Gold costs of acquiring new tiles reduced by 25% in this city")) cultureToNextTile *= 0.75 // Specialty of Krepost - if (cityInfo.civInfo.policies.isAdopted("Tradition")) cultureToNextTile *= 0.75 + if (cityInfo.civInfo.hasUnique("Increased rate of border expansion")) cultureToNextTile *= 0.75 return cultureToNextTile.roundToInt() } diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index c42c438406..aa5d1e32e5 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -205,7 +205,7 @@ class CityStats { newHappinessList["Population"] = -unhappinessFromCitizens * unhappinessModifier var happinessFromPolicies = 0f - if (civInfo.policies.hasEffect("+15% production when constructing wonders, +1 happiness for every 10 citizens in a city")) + if (civInfo.hasUnique("+1 happiness for every 10 citizens in a city")) happinessFromPolicies += (cityInfo.population.population / 10).toFloat() if (civInfo.policies.hasEffect("+1 gold and -1 unhappiness for every 2 citizens in capital") && cityInfo.isCapital()) @@ -262,7 +262,7 @@ class CityStats { private fun getStatsFromPolicies(adoptedPolicies: PolicyManager): Stats { val stats = Stats() - if (adoptedPolicies.hasEffect("+3 culture in capital and increased rate of border expansion") && cityInfo.isCapital()) + if (adoptedPolicies.hasEffect("+3 culture in capital") && cityInfo.isCapital()) stats.culture += 3f if (adoptedPolicies.hasEffect("+10% food growth and +2 food in capital") && cityInfo.isCapital()) stats.food += 2f @@ -346,7 +346,7 @@ class CityStats { stats.science += 15f if (policies.contains("Total War") && currentConstruction is BaseUnit && !currentConstruction.unitType.isCivilian()) stats.production += 15f - if (policies.contains("Aristocracy") + if (cityInfo.civInfo.hasUnique("+15% production when constructing wonders") && currentConstruction is Building && currentConstruction.isWonder) stats.production += 15f diff --git a/core/src/com/unciv/logic/civilization/PolicyManager.kt b/core/src/com/unciv/logic/civilization/PolicyManager.kt index c4b4b97d79..451775cdcd 100644 --- a/core/src/com/unciv/logic/civilization/PolicyManager.kt +++ b/core/src/com/unciv/logic/civilization/PolicyManager.kt @@ -36,10 +36,12 @@ class PolicyManager { return toReturn } + fun getPolicyByName(name:String): Policy = getAllPolicies().first { it.name==name } + fun setTransients(){ - val allPolicies = getAllPolicies() - val effectsOfCurrentPolicies = adoptedPolicies.map { adoptedPolicy -> allPolicies.first { it.name==adoptedPolicy }.effect } + val effectsOfCurrentPolicies = adoptedPolicies.map { getPolicyByName(it).effect } policyEffects.addAll(effectsOfCurrentPolicies) + adoptedPolicies.map { getPolicyByName(it).uniques }.forEach { policyEffects.addAll(it) } } private fun getAllPolicies() = civInfo.gameInfo.ruleSet.policyBranches.values.asSequence() @@ -114,6 +116,7 @@ class PolicyManager { adoptedPolicies.add(policy.name) policyEffects.add(policy.effect) + policyEffects.addAll(policy.uniques) if (!branchCompletion) { val branch = policy.branch diff --git a/core/src/com/unciv/models/ruleset/Policy.kt b/core/src/com/unciv/models/ruleset/Policy.kt index 1ed5d89b0e..011094efa3 100644 --- a/core/src/com/unciv/models/ruleset/Policy.kt +++ b/core/src/com/unciv/models/ruleset/Policy.kt @@ -7,6 +7,7 @@ open class Policy : INamed { override lateinit var name: String lateinit var effect: String + var uniques: ArrayList = ArrayList() var row: Int = 0 var column: Int = 0 var requires: ArrayList? = null