Fixed a bug where buying units with faith would not increase in cost (#5546)

This commit is contained in:
Xander Lenstra 2021-10-24 19:44:03 +02:00 committed by GitHub
parent 6ac3547b8e
commit 074676c342
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 18 additions and 16 deletions

View File

@ -534,19 +534,21 @@ class CityConstructions {
if (!cityInfo.civInfo.gameInfo.gameParameters.godMode) {
val construction = getConstruction(constructionName)
if (construction is PerpetualConstruction) return false
val constructionCost =
(construction as INonPerpetualConstruction).getStatBuyCost(cityInfo, stat)
val constructionCost = (construction as INonPerpetualConstruction).getStatBuyCost(cityInfo, stat)
if (constructionCost == null) return false // We should never end up here anyway, so things have already gone _way_ wrong
cityInfo.addStat(stat, -1 * constructionCost)
if (cityInfo.civInfo.getMatchingUniques("May buy [] units for [] [] [] starting from the [] at an increasing price ([])")
.any {
val conditionalState = StateForConditionals(civInfo = cityInfo.civInfo, cityInfo = cityInfo)
if ((
cityInfo.civInfo.getMatchingUniques(UniqueType.BuyUnitsIncreasingCost, conditionalState) +
cityInfo.civInfo.getMatchingUniques(UniqueType.BuyBuildingsIncreasingCost, conditionalState)
).any {
(
construction is BaseUnit && construction.matchesFilter(it.params[0]) ||
construction is Building && construction.matchesFilter(it.params[0])
)
&& cityInfo.matchesFilter(it.params[3])
&& cityInfo.civInfo.getEraNumber() >= cityInfo.civInfo.gameInfo.ruleSet.eras[it.params[4]]!!.eraNumber
&& it.params[2] == stat.name
}
) {

View File

@ -151,6 +151,7 @@ enum class UniqueType(val text:String, vararg targets: UniqueTarget) {
FreeExtraAnyBeliefs("May choose [amount] additional belief(s) of any type when [foundingOrEnhancing] a religion", UniqueTarget.Global),
BuyUnitsIncreasingCost("May buy [baseUnitFilter] units for [amount] [stat] [cityFilter] at an increasing price ([amount])", UniqueTarget.Global),
BuyBuildingsIncreasingCost("May buy [buildingFilter] buildings for [amount] [stat] [cityFilter] at an increasing price ([amount])", UniqueTarget.Global),
@Deprecated("As of 3.17.9", ReplaceWith ("May buy [baseUnitFilter] units for [amount] [stat] [cityFilter] at an increasing price ([amount]) <starting from the [era]>"))
BuyUnitsIncreasingCostEra("May buy [baseUnitFilter] units for [amount] [stat] [cityFilter] starting from the [era] at an increasing price ([amount])", UniqueTarget.Global),
BuyUnitsByProductionCost("May buy [baseUnitFilter] units with [stat] for [amount] times their normal Production cost", UniqueTarget.FollowerBelief, UniqueTarget.Global),

View File

@ -319,9 +319,8 @@ class BaseUnit : RulesetObject(), INonPerpetualConstruction {
)
}
)
+ (cityInfo.getMatchingUniques(
UniqueType.BuyUnitsByProductionCost, conditionalState
).filter {
+ (cityInfo.getMatchingUniques(UniqueType.BuyUnitsByProductionCost, conditionalState)
.filter {
it.params[1] == stat.name
&& matchesFilter(it.params[0])
}.map {