Add unique to conditionally control construction costs

This commit is contained in:
Yair Morgenstern
2024-02-27 11:13:26 +02:00
parent b4cb0e3d75
commit 3689eed3aa
4 changed files with 13 additions and 0 deletions

View File

@ -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()) {

View File

@ -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 <if [buildingFilter] is constructed in all [non-[Puppeted]] cities>"))
RequiresBuildingInAllCities("Requires a [buildingFilter] in all cities", UniqueTarget.Building),

View File

@ -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())