diff --git a/android/assets/jsons/Civ V - Vanilla/Buildings.json b/android/assets/jsons/Civ V - Vanilla/Buildings.json index 0483b447ec..eb52818d53 100644 --- a/android/assets/jsons/Civ V - Vanilla/Buildings.json +++ b/android/assets/jsons/Civ V - Vanilla/Buildings.json @@ -160,7 +160,7 @@ "xpForNewUnits": 15, "hurryCostModifier": 25, "maintenance": 1, - "uniques": ["Culture and Gold costs of acquiring new tiles reduced by 25% in this city"], + "uniques": ["-[25]% Culture cost of acquiring tiles [in this city]","-[25]% Gold cost of acquiring tiles [in this city]"], "requiredTech": "Bronze Working" }, { @@ -532,7 +532,7 @@ "culture": 1, "greatPersonPoints": {"production": 1}, "isWonder": true, - "uniques": ["Cost of acquiring new tiles reduced by 25%"], + "uniques": ["-[25]% Culture cost of acquiring tiles [in all cities]","-[25]% Gold cost of acquiring tiles [in all cities]"], "requiredTech": "Chivalry", "quote": "'The temple is like no other building in the world. It has towers and decoration and all the refinements which the human genius can conceive of.' - Antonio da Magdalena" }, diff --git a/android/assets/jsons/Civ V - Vanilla/Nations.json b/android/assets/jsons/Civ V - Vanilla/Nations.json index 3308899531..1b589d84d1 100644 --- a/android/assets/jsons/Civ V - Vanilla/Nations.json +++ b/android/assets/jsons/Civ V - Vanilla/Nations.json @@ -262,7 +262,7 @@ "outerColor": [ 28,51,119], "innerColor": [255,255,255], "uniqueName": "Manifest Destiny", - "uniques": ["+1 Sight for all land military units", "-50% cost when purchasing tiles"], + "uniques": ["+1 Sight for all land military units", "-[50]% Gold cost of acquiring tiles [in all cities]"], "cities": ["Washington","New York","Boston","Philadelphia","Atlanta","Chicago","Seattle","San Francisco","Los Angeles","Houston", "Portland","St. Louis","Miami","Buffalo","Detroit","New Orleans","Baltimore","Denver","Cincinnati","Dallas","Memphis", "Cleveland","Kansas City","San Diego","Richmond","Las Vegas","Phoenix","Albuquerque","Minneapolis","Pittsburgh", diff --git a/android/assets/jsons/Civ V - Vanilla/Policies.json b/android/assets/jsons/Civ V - Vanilla/Policies.json index 08c7df4a3f..2324974d61 100644 --- a/android/assets/jsons/Civ V - Vanilla/Policies.json +++ b/android/assets/jsons/Civ V - Vanilla/Policies.json @@ -2,7 +2,7 @@ { "name": "Tradition", "era": "Ancient era", - "uniques": ["[+3 Culture] in capital", "Increased rate of border expansion"], + "uniques": ["[+3 Culture] in capital", "-[25]% Culture cost of acquiring tiles [in all cities]"], "policies": [ { "name": "Aristocracy", diff --git a/core/src/com/unciv/logic/city/CityExpansionManager.kt b/core/src/com/unciv/logic/city/CityExpansionManager.kt index 7c987d1ee0..52d3f9750b 100644 --- a/core/src/com/unciv/logic/city/CityExpansionManager.kt +++ b/core/src/com/unciv/logic/city/CityExpansionManager.kt @@ -33,11 +33,17 @@ class CityExpansionManager { // The second seems to be more based, so I'll go with that fun getCultureToNextTile(): Int { var cultureToNextTile = 6 * (max(0, tilesClaimed()) + 1.4813).pow(1.3) + for (unique in cityInfo.civInfo.getMatchingUniques("-[]% Culture cost of acquiring tiles []")) { + if (cityInfo.matchesFilter(unique.params[1])) + cultureToNextTile *= (100 - unique.params[0].toFloat()) / 100 + } + // Deprecated as of 3.12.10 - replaced with "-[]% Culture cost of acquiring tiles []", either [in capital] or [in this city] or [in all cities] if (cityInfo.civInfo.hasUnique("Cost of acquiring new tiles reduced by 25%")) 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.hasUnique("Increased rate of border expansion")) cultureToNextTile *= 0.75 + return cultureToNextTile.roundToInt() } @@ -56,14 +62,18 @@ class CityExpansionManager { val distanceFromCenter = tileInfo.aerialDistanceTo(cityInfo.getCenterTile()) var cost = baseCost * (distanceFromCenter - 1) + tilesClaimed() * 5.0 + for (unique in cityInfo.civInfo.getMatchingUniques("-[]% Gold cost of acquiring tiles []")) { + if (cityInfo.matchesFilter(unique.params[1])) + cost *= (100 - unique.params[0].toFloat()) / 100 + } + // Deprecated as of 3.12.10 - replaced with "-[]% Gold cost of acquiring tiles []", either [in capital] or [in this city] or [in all cities] if (cityInfo.civInfo.hasUnique("Cost of acquiring new tiles reduced by 25%")) cost *= 0.75 //Speciality of Angkor Wat if (cityInfo.containsBuildingUnique("Culture and Gold costs of acquiring new tiles reduced by 25% in this city")) cost *= 0.75 // Specialty of Krepost - if (cityInfo.civInfo.hasUnique("-50% cost when purchasing tiles")) cost /= 2 - return cost.toInt() + return cost.roundToInt() }