mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-29 06:51:30 -04: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 {
|
private fun getUniqueMultiplier(stateForConditionals: StateForConditionals): Int {
|
||||||
val forEveryModifiers = getModifiers(UniqueType.ForEveryCountable)
|
|
||||||
val forEveryAmountModifiers = getModifiers(UniqueType.ForEveryAmountCountable)
|
|
||||||
var amount = 1
|
var amount = 1
|
||||||
|
|
||||||
|
val forEveryModifiers = getModifiers(UniqueType.ForEveryCountable)
|
||||||
for (conditional in forEveryModifiers) { // multiple multipliers DO multiply.
|
for (conditional in forEveryModifiers) { // multiple multipliers DO multiply.
|
||||||
val multiplier = Countables.getCountableAmount(conditional.params[0], stateForConditionals)
|
val multiplier = Countables.getCountableAmount(conditional.params[0], stateForConditionals)
|
||||||
if (multiplier != null) amount *= multiplier
|
if (multiplier != null) amount *= multiplier
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val forEveryAmountModifiers = getModifiers(UniqueType.ForEveryAmountCountable)
|
||||||
for (conditional in forEveryAmountModifiers) { // multiple multipliers DO multiply.
|
for (conditional in forEveryAmountModifiers) { // multiple multipliers DO multiply.
|
||||||
val multiplier = Countables.getCountableAmount(conditional.params[1], stateForConditionals)
|
val multiplier = Countables.getCountableAmount(conditional.params[1], stateForConditionals)
|
||||||
val perEvery = conditional.params[0].toInt()
|
val perEvery = conditional.params[0].toInt()
|
||||||
if (multiplier != null) amount *= multiplier / perEvery
|
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)
|
return amount.coerceAtLeast(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -938,6 +938,7 @@ enum class UniqueType(
|
|||||||
ShowsWhenUnbuilable("Shown while unbuilable", UniqueTarget.Building, UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
|
ShowsWhenUnbuilable("Shown while unbuilable", UniqueTarget.Building, UniqueTarget.Unit, flags = UniqueFlag.setOfHiddenToUsers),
|
||||||
ModifierHiddenFromUsers("hidden from users", UniqueTarget.MetaModifier),
|
ModifierHiddenFromUsers("hidden from users", UniqueTarget.MetaModifier),
|
||||||
ForEveryCountable("for every [countable]", UniqueTarget.MetaModifier),
|
ForEveryCountable("for every [countable]", UniqueTarget.MetaModifier),
|
||||||
|
ForEveryAdjacentTile("for every adjacent [tileFilter]", UniqueTarget.MetaModifier),
|
||||||
ForEveryAmountCountable("for every [amount] [countable]", UniqueTarget.MetaModifier),
|
ForEveryAmountCountable("for every [amount] [countable]", UniqueTarget.MetaModifier),
|
||||||
ModifiedByGameSpeed("(modified by game speed)", UniqueTarget.MetaModifier,
|
ModifiedByGameSpeed("(modified by game speed)", UniqueTarget.MetaModifier,
|
||||||
docDescription = "Can only be applied to certain uniques, see details of each unique for specifics"),
|
docDescription = "Can only be applied to certain uniques, see details of each unique for specifics"),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user