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