modding: added "for every adjacent [tileFilter]" unique modifier

This commit is contained in:
yairm210 2024-10-31 10:20:01 +02:00
parent 30f996c90f
commit 73103e017a
2 changed files with 15 additions and 2 deletions

View File

@ -76,19 +76,31 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
}
private fun getUniqueMultiplier(stateForConditionals: StateForConditionals): Int {
val forEveryModifiers = getModifiers(UniqueType.ForEveryCountable)
val forEveryAmountModifiers = getModifiers(UniqueType.ForEveryAmountCountable)
var amount = 1
val forEveryModifiers = getModifiers(UniqueType.ForEveryCountable)
for (conditional in forEveryModifiers) { // multiple multipliers DO multiply.
val multiplier = Countables.getCountableAmount(conditional.params[0], stateForConditionals)
if (multiplier != null) amount *= multiplier
}
val forEveryAmountModifiers = getModifiers(UniqueType.ForEveryAmountCountable)
for (conditional in forEveryAmountModifiers) { // multiple multipliers DO multiply.
val multiplier = Countables.getCountableAmount(conditional.params[1], stateForConditionals)
val perEvery = conditional.params[0].toInt()
if (multiplier != null) amount *= multiplier / perEvery
}
if (stateForConditionals.relevantTile != null){
val forEveryAdjacentTileModifiers = getModifiers(UniqueType.ForEveryAdjacentTile)
for (conditional in forEveryAdjacentTileModifiers) {
val multiplier = stateForConditionals.relevantTile!!.neighbors
.count { it.matchesFilter(conditional.params[0]) }
amount *= multiplier
}
}
return amount.coerceAtLeast(0)
}

View File

@ -938,6 +938,7 @@ enum class UniqueType(
ShowsWhenUnbuilable("Shown while unbuilable", UniqueTarget.Building, UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
ModifierHiddenFromUsers("hidden from users", UniqueTarget.MetaModifier),
ForEveryCountable("for every [countable]", UniqueTarget.MetaModifier),
ForEveryAdjacentTile("for every adjacent [tileFilter]", UniqueTarget.MetaModifier),
ForEveryAmountCountable("for every [amount] [countable]", UniqueTarget.MetaModifier),
ModifiedByGameSpeed("(modified by game speed)", UniqueTarget.MetaModifier,
docDescription = "Can only be applied to certain uniques, see details of each unique for specifics"),