diff --git a/android/assets/jsons/Civ V - Vanilla/Policies.json b/android/assets/jsons/Civ V - Vanilla/Policies.json index a563e5b1b8..97bddebac1 100644 --- a/android/assets/jsons/Civ V - Vanilla/Policies.json +++ b/android/assets/jsons/Civ V - Vanilla/Policies.json @@ -295,7 +295,6 @@ "name": "Commerce Complete", "effect": "+1 gold from every trading post, double gold from Great Merchant trade missions", "uniques": ["[+1 Gold] from every [Trading post]", "Double gold from Great Merchant trade missions"] - "uniques": "+1 } ] }, @@ -331,6 +330,7 @@ { "name": "Sovereignty", "effect": "+15% science while empire is happy", + "uniques": ["+15% science while empire is happy"], "requires": ["Humanism"], "row": 2, "column": 5 @@ -338,13 +338,15 @@ { "name": "Scientific Revolution", "effect": "Science gained from research agreements +50%", + "uniques": ["Science gained from research agreements +50%"], "requires": ["Free Thought"], "row": 3, "column": 1 }, { "name": "Rationalism Complete", - "effect": "+1 gold from all science buildings" + "effect": "+1 gold from all science buildings", + "unique": ["[+1 Gold] from all [Science] buildings"] } ] }, diff --git a/core/src/com/unciv/logic/city/CityStats.kt b/core/src/com/unciv/logic/city/CityStats.kt index bdc8a1f6bd..699e4fb755 100644 --- a/core/src/com/unciv/logic/city/CityStats.kt +++ b/core/src/com/unciv/logic/city/CityStats.kt @@ -365,7 +365,7 @@ class CityStats { stats.culture += 33f if (cityInfo.civInfo.hasUnique("+25% gold in capital") && cityInfo.isCapital()) stats.gold += 25f - if (policies.contains("Sovereignty") && cityInfo.civInfo.getHappiness() >= 0) + if (cityInfo.civInfo.getHappiness() >= 0 && cityInfo.civInfo.hasUnique("+15% science while empire is happy")) stats.science += 15f if (policies.contains("Total War") && currentConstruction is BaseUnit && !currentConstruction.unitType.isCivilian()) stats.production += 15f diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index c9571ce69a..b4adce3e55 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -169,9 +169,7 @@ class TechManager { private fun scienceFromResearchAgreements(): Int { // https://forums.civfanatics.com/resources/research-agreements-bnw.25568/ var researchAgreementModifier = 0.5f - if (civInfo.policies.isAdopted("Scientific Revolution")) - researchAgreementModifier += 0.25f - if (civInfo.hasUnique("Science gained from research agreements +50%")) + for(unique in civInfo.getMatchingUniques("Science gained from research agreements +50%")) researchAgreementModifier += 0.25f return (scienceFromResearchAgreements / 3 * researchAgreementModifier).toInt() } diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 02d7e5fdab..a0198be82c 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -146,8 +146,12 @@ class Building : NamedStats(), IConstruction{ if (adoptedPolicies.contains("Humanism") && hashSetOf("University", "Observatory", "Public School").contains(baseBuildingName )) stats.happiness += 1f - if (adoptedPolicies.contains("Rationalism Complete") && !isWonder && stats.science > 0) - stats.gold += 1f + if(!isWonder) + for(unique in civInfo.getMatchingUniques("[] from all [] buildings")){ + val placeholderParams = unique.getPlaceholderParameters() + if(isStatRelated(Stat.valueOf(placeholderParams[1]))) + stats.add(Stats.parse(placeholderParams[0])) + } if (adoptedPolicies.contains("Constitution") && isWonder) stats.culture += 2f