diff --git a/core/src/com/unciv/models/ruleset/Building.kt b/core/src/com/unciv/models/ruleset/Building.kt index 4b36d42fa9..adc5434950 100644 --- a/core/src/com/unciv/models/ruleset/Building.kt +++ b/core/src/com/unciv/models/ruleset/Building.kt @@ -114,6 +114,9 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction { for (unique in getMatchingUniques(UniqueType.CostIncreasesPerCity, stateForConditionals)) productionCost += civInfo.cities.size * unique.params[0].toInt() + for (unique in getMatchingUniques(UniqueType.CostPercentageChange, stateForConditionals)) + productionCost *= unique.params[0].toPercent() + if (civInfo.isCityState()) productionCost *= 1.5f if (civInfo.isHuman()) { diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt index 4fe71535e4..cb1f94594e 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueType.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueType.kt @@ -282,6 +282,7 @@ enum class UniqueType( CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building, UniqueTarget.Unit), CostIncreasesWhenBuilt("Cost increases by [amount] when built", UniqueTarget.Building, UniqueTarget.Unit), + CostPercentageChange("[amount]% production cost", UniqueTarget.Building, UniqueTarget.Unit, docDescription = "Intended to be used with conditionals to dynamically alter construction costs"), @Deprecated("as of 4.10.17", ReplaceWith("Only available ")) RequiresBuildingInAllCities("Requires a [buildingFilter] in all cities", UniqueTarget.Building), diff --git a/core/src/com/unciv/models/ruleset/unit/BaseUnitCost.kt b/core/src/com/unciv/models/ruleset/unit/BaseUnitCost.kt index f9fa361017..4b3302665c 100644 --- a/core/src/com/unciv/models/ruleset/unit/BaseUnitCost.kt +++ b/core/src/com/unciv/models/ruleset/unit/BaseUnitCost.kt @@ -19,6 +19,9 @@ class BaseUnitCost(val baseUnit: BaseUnit) { for (unique in baseUnit.getMatchingUniques(UniqueType.CostIncreasesWhenBuilt, stateForConditionals)) productionCost += civInfo.civConstructions.builtItemsWithIncreasingCost[baseUnit.name] * unique.params[0].toInt() + for (unique in baseUnit.getMatchingUniques(UniqueType.CostPercentageChange, stateForConditionals)) + productionCost *= unique.params[0].toPercent() + if (civInfo.isCityState()) productionCost *= 1.5f productionCost *= if (civInfo.isHuman()) diff --git a/docs/Modders/uniques.md b/docs/Modders/uniques.md index 926f53406c..56fb5306df 100644 --- a/docs/Modders/uniques.md +++ b/docs/Modders/uniques.md @@ -1070,6 +1070,12 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl Applicable to: Building, Unit +??? example "[amount]% Cost" + Intended to be used with conditionals to dynamically alter construction costs + Example: "[3]% Cost" + + Applicable to: Building, Unit + ??? example "Can only be built [cityFilter]" Example: "Can only be built [in all cities]"