mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-20 19:56:51 +01:00
Add unique for increasing price every time it's built (#11100)
* Add unique for increasing price every time it's built * Update name to be more accurate * whoops
This commit is contained in:
parent
0be8fa8e39
commit
09413a3182
|
|
@ -345,6 +345,7 @@ class CityConstructions : IsPartOfGameInfoSerialization {
|
|||
city.civ.addNotification("No space available to place [${construction.name}] near [${city.name}]",
|
||||
city.location, NotificationCategory.Production, construction.name)
|
||||
}
|
||||
city.civ.civConstructions.builtItemsWithIncreasingCost[construction.name] += 1
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,9 @@ class CivConstructions : IsPartOfGameInfoSerialization {
|
|||
/** Maps construction names to the amount of times bought */
|
||||
val boughtItemsWithIncreasingPrice: Counter<String> = Counter()
|
||||
|
||||
/** Maps construction names to the amount of times built */
|
||||
val builtItemsWithIncreasingCost: Counter<String> = Counter()
|
||||
|
||||
/** Maps cities by id to a set of all free buildings by name they contain.
|
||||
* The building name is the Nation-specific equivalent if available.
|
||||
* Sources: [UniqueType.FreeStatBuildings] **and** [UniqueType.FreeSpecificBuildings]
|
||||
|
|
@ -51,6 +54,7 @@ class CivConstructions : IsPartOfGameInfoSerialization {
|
|||
toReturn.freeStatBuildingsProvided.putAll(freeStatBuildingsProvided)
|
||||
toReturn.freeSpecificBuildingsProvided.putAll(freeSpecificBuildingsProvided)
|
||||
toReturn.boughtItemsWithIncreasingPrice.add(boughtItemsWithIncreasingPrice) // add copies
|
||||
toReturn.builtItemsWithIncreasingCost.add(builtItemsWithIncreasingCost)
|
||||
return toReturn
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -105,6 +105,9 @@ class Building : RulesetStatsObject(), INonPerpetualConstruction {
|
|||
override fun getProductionCost(civInfo: Civilization): Int {
|
||||
var productionCost = cost.toFloat()
|
||||
|
||||
for (unique in getMatchingUniques(UniqueType.CostIncreasesWhenBuilt, StateForConditionals(civInfo)))
|
||||
productionCost += civInfo.civConstructions.builtItemsWithIncreasingCost[name] * unique.params[0].toInt()
|
||||
|
||||
for (unique in getMatchingUniques(UniqueType.CostIncreasesPerCity, StateForConditionals(civInfo)))
|
||||
productionCost += civInfo.cities.size * unique.params[0].toInt()
|
||||
|
||||
|
|
|
|||
|
|
@ -280,7 +280,8 @@ enum class UniqueType(
|
|||
///////////////////////////////////////// region 03 BUILDING UNIQUES /////////////////////////////////////////
|
||||
|
||||
|
||||
CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building),
|
||||
CostIncreasesPerCity("Cost increases by [amount] per owned city", UniqueTarget.Building, UniqueTarget.Unit),
|
||||
CostIncreasesWhenBuilt("Cost increases by [amount] when built", UniqueTarget.Building, UniqueTarget.Unit),
|
||||
|
||||
RequiresBuildingInAllCities("Requires a [buildingFilter] in all cities", UniqueTarget.Building),
|
||||
RequiresBuildingInSomeCities("Requires a [buildingFilter] in at least [amount] cities", UniqueTarget.Building),
|
||||
|
|
|
|||
|
|
@ -11,6 +11,13 @@ class BaseUnitCost(val baseUnit: BaseUnit) {
|
|||
|
||||
fun getProductionCost(civInfo: Civilization): Int {
|
||||
var productionCost = baseUnit.cost.toFloat()
|
||||
|
||||
for (unique in baseUnit.getMatchingUniques(UniqueType.CostIncreasesPerCity, StateForConditionals(civInfo)))
|
||||
productionCost += civInfo.cities.size * unique.params[0].toInt()
|
||||
|
||||
for (unique in baseUnit.getMatchingUniques(UniqueType.CostIncreasesWhenBuilt, StateForConditionals(civInfo)))
|
||||
productionCost += civInfo.civConstructions.builtItemsWithIncreasingCost[baseUnit.name] * unique.params[0].toInt()
|
||||
|
||||
if (civInfo.isCityState())
|
||||
productionCost *= 1.5f
|
||||
productionCost *= if (civInfo.isHuman())
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user