diff --git a/android/assets/jsons/Civ V - Vanilla/Nations.json b/android/assets/jsons/Civ V - Vanilla/Nations.json index 574a42ca..be05a0ed 100644 --- a/android/assets/jsons/Civ V - Vanilla/Nations.json +++ b/android/assets/jsons/Civ V - Vanilla/Nations.json @@ -30,7 +30,7 @@ "outerColor": [27,53,63], "innerColor": [213,249,255], "unique": "INGENUITY", - "uniques": ["Receive free [Great Scientist] when you discover [Writing]", "Earn Great Scientists 50% faster"] + "uniques": ["Receive free [Great Scientist] when you discover [Writing]", "[Great Scientist] is earned [50]% faster"] "cities": ["Babylon","Akkad","Dur-Kurigalzu","Nippur","Borsippa","Sippar","Opis","Mari","Shushan","Eshnunna", "Ellasar","Erech","Kutha","Sirpurla","Neribtum","Ashur","Ninveh","Nimrud","Arbela","Nuzi", "Arrapkha","Tutub","Shaduppum","Rapiqum","Mashkan Shapir","Tuttul","Ramad","Ana","Haradum","Agrab", diff --git a/android/assets/jsons/Civ V - Vanilla/Policies.json b/android/assets/jsons/Civ V - Vanilla/Policies.json index 4eacb73b..5714d7f0 100644 --- a/android/assets/jsons/Civ V - Vanilla/Policies.json +++ b/android/assets/jsons/Civ V - Vanilla/Policies.json @@ -269,7 +269,7 @@ { "name": "Entrepreneurship", "effect": "Great Merchants are earned 25% faster, +1 Science from every Mint, Market, Bank and Stock Exchange.", - "uniques": ["Great Merchants are earned 25% faster", "[+1 Science] from every [Mint]", "[+1 Science] from every [Market]", + "uniques": ["[Great Merchant] is earned [25]% faster", "[+1 Science] from every [Mint]", "[+1 Science] from every [Market]", "[+1 Science] from every [Bank]", "[+1 Science] from every [Stock Exchange]" ], "requires": ["Trade Unions"], "row": 2, diff --git a/android/assets/jsons/Civ V - Vanilla/Units.json b/android/assets/jsons/Civ V - Vanilla/Units.json index f2904b81..0950d7b5 100644 --- a/android/assets/jsons/Civ V - Vanilla/Units.json +++ b/android/assets/jsons/Civ V - Vanilla/Units.json @@ -1290,33 +1290,33 @@ { "name": "Great Artist", "unitType": "Civilian", - "uniques": ["Can start an 8-turn golden age", "Can construct [Landmark]", "Great Person", "Unbuildable"], + "uniques": ["Can start an 8-turn golden age", "Can construct [Landmark]", "Great Person - [Culture]", "Unbuildable"], "movement": 2 }, { "name": "Great Scientist", "unitType": "Civilian", - "uniques": ["Can hurry technology research", "Can construct [Academy]", "Great Person", "Unbuildable"], + "uniques": ["Can hurry technology research", "Can construct [Academy]", "Great Person - [Science]", "Unbuildable"], "movement": 2 }, { "name": "Great Merchant", "unitType": "Civilian", "uniques": ["Can undertake a trade mission with City-State, giving a large sum of gold and [30] Influence", - "Can construct [Customs house]", "Great Person", "Unbuildable"], + "Can construct [Customs house]", "Great Person - [Gold]", "Unbuildable"], "movement": 2 }, { "name": "Great Engineer", "unitType": "Civilian", - "uniques": ["Can speed up construction of a wonder", "Can construct [Manufactory]", "Great Person", "Unbuildable"], + "uniques": ["Can speed up construction of a wonder", "Can construct [Manufactory]", "Great Person - [Production]", "Unbuildable"], "movement": 2 }, { "name": "Great General", "unitType": "Civilian", "uniques": ["Can start an 8-turn golden age", "Bonus for units in 2 tile radius 15%", "Can construct [Citadel]", - "Great Person", "Unbuildable"], + "Great Person - [War]", "Unbuildable"], "movement": 2 }, { @@ -1325,7 +1325,7 @@ "uniqueTo": "Mongolia", "replaces": "Great General", "uniques": ["Can start an 8-turn golden age","Bonus for units in 2 tile radius 15%", - "Heal adjacent units for an additional 15 HP per turn", "Can construct [Citadel]", "Great Person", "Unbuildable"], + "Heal adjacent units for an additional 15 HP per turn", "Can construct [Citadel]", "Great Person - [War]", "Unbuildable"], "movement": 5 } ] diff --git a/buildSrc/src/main/kotlin/BuildConfig.kt b/buildSrc/src/main/kotlin/BuildConfig.kt index c717ad68..0a8ab245 100644 --- a/buildSrc/src/main/kotlin/BuildConfig.kt +++ b/buildSrc/src/main/kotlin/BuildConfig.kt @@ -3,8 +3,8 @@ package com.unciv.build object BuildConfig { const val kotlinVersion = "1.3.71" const val appName = "Unciv" - const val appCodeNumber = 454 - const val appVersion = "3.9.17" + const val appCodeNumber = 455 + const val appVersion = "3.9.17-patch1" const val gdxVersion = "1.9.10" const val roboVMVersion = "2.3.1" diff --git a/core/src/com/unciv/logic/city/CityInfo.kt b/core/src/com/unciv/logic/city/CityInfo.kt index e34ea70a..81ea2aeb 100644 --- a/core/src/com/unciv/logic/city/CityInfo.kt +++ b/core/src/com/unciv/logic/city/CityInfo.kt @@ -19,7 +19,9 @@ import com.unciv.logic.trade.TradeType import com.unciv.models.ruleset.tile.ResourceSupplyList import com.unciv.models.ruleset.tile.ResourceType import com.unciv.models.ruleset.unit.BaseUnit +import com.unciv.models.stats.Stat import com.unciv.models.stats.Stats +import com.unciv.models.translations.equalsPlaceholderText import com.unciv.models.translations.getPlaceholderParameters import com.unciv.ui.utils.withoutItem import java.util.* @@ -259,6 +261,18 @@ class CityInfo { stats["Buildings"] = buildingStats for (entry in stats) { + for (unique in civInfo.getMatchingUniques("[] is earned []% faster")) { + val params = unique.getPlaceholderParameters() + val unit = civInfo.gameInfo.ruleSet.units[params[0]] + if (unit == null) continue + val greatUnitUnique = unit.uniques.firstOrNull { it.equalsPlaceholderText("Great Person - []") } + if (greatUnitUnique == null) continue + val statName = greatUnitUnique.getPlaceholderParameters()[0] + val stat = Stat.values().firstOrNull { it.name == statName } + // this is not very efficient, and if it causes problems we can try and think of a way of improving it + if (stat != null) entry.value.add(stat, entry.value.get(stat) * params[1].toInt()) + } + if (civInfo.nation.unique == UniqueAbility.INGENUITY) entry.value.science *= 1.5f if (civInfo.hasUnique("Great Merchants are earned 25% faster")) diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index 9ce16c23..a7441cd3 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -497,7 +497,7 @@ class CivilizationInfo { val cityToAddTo = city ?: cities.random() val unit = getEquivalentUnit(unitName) placeUnitNearTile(cityToAddTo.location, unit.name) - if ("Great Person" in unit.uniques) + if (unit.uniques.any { it.equalsPlaceholderText("Great Person - []") }) addNotification("A [${unit.name}] has been born in [${cityToAddTo.name}]!", cityToAddTo.location, Color.GOLD) } diff --git a/core/src/com/unciv/logic/map/TileInfo.kt b/core/src/com/unciv/logic/map/TileInfo.kt index 5a1f43e2..23f3fe01 100644 --- a/core/src/com/unciv/logic/map/TileInfo.kt +++ b/core/src/com/unciv/logic/map/TileInfo.kt @@ -258,7 +258,7 @@ open class TileInfo { if (unique == placeholderParams[1]) stats.add(Stats.parse(placeholderParams[0])) } - + if (containsGreatImprovement() && observingCiv.hasUnique("Tile yield from Great Improvements +100%")) stats.add(improvement) // again, for the double effect