mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-22 20:49:36 +07:00
modding: added "for every adjacent [tileFilter]" unique modifier
This commit is contained in:
parent
30f996c90f
commit
73103e017a
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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"),
|
||||
|
Loading…
Reference in New Issue
Block a user