Added unit conditional support to pillage yield uniques

This commit is contained in:
Yair Morgenstern 2024-02-01 22:20:57 +02:00
parent a215685b57
commit a8446be6ad

View File

@ -8,6 +8,7 @@ import com.unciv.logic.map.mapunit.MapUnit
import com.unciv.logic.map.tile.Tile
import com.unciv.models.UnitAction
import com.unciv.models.UnitActionType
import com.unciv.models.ruleset.unique.StateForConditionals
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.stats.Stat
import com.unciv.models.stats.Stats
@ -74,14 +75,15 @@ object UnitActionsPillage {
// Accumulate the loot
val pillageYield = Stats()
for (unique in improvement.getMatchingUniques(UniqueType.PillageYieldRandom)) {
val stateForConditionals = StateForConditionals(unit=unit)
for (unique in improvement.getMatchingUniques(UniqueType.PillageYieldRandom, stateForConditionals)) {
for ((stat, value) in unique.stats) {
// Unique text says "approximately [X]", so we add 0..X twice - think an RPG's 2d12
val looted = Random.nextInt((value + 1).toInt()) + Random.nextInt((value + 1).toInt())
pillageYield.add(stat, looted.toFloat())
}
}
for (unique in improvement.getMatchingUniques(UniqueType.PillageYieldFixed)) {
for (unique in improvement.getMatchingUniques(UniqueType.PillageYieldFixed, stateForConditionals)) {
pillageYield.add(unique.stats)
}