From 1a1194236b5f577896db08b0b892b941299f0c89 Mon Sep 17 00:00:00 2001 From: yairm210 Date: Sun, 17 Oct 2021 21:16:14 +0300 Subject: [PATCH] Added overload to MapUnit.getMatchingUniques to get uniques from civ as well - see #5494 --- core/src/com/unciv/logic/map/MapUnit.kt | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/core/src/com/unciv/logic/map/MapUnit.kt b/core/src/com/unciv/logic/map/MapUnit.kt index 642cb4b95e..ce330d8b47 100644 --- a/core/src/com/unciv/logic/map/MapUnit.kt +++ b/core/src/com/unciv/logic/map/MapUnit.kt @@ -207,10 +207,16 @@ class MapUnit { fun getMatchingUniques(placeholderText: String): Sequence = tempUniques.asSequence().filter { it.placeholderText == placeholderText } - fun getMatchingUniques(uniqueType: UniqueType, stateForConditionals: StateForConditionals? = null) = sequence { + fun getMatchingUniques( + uniqueType: UniqueType, + stateForConditionals: StateForConditionals = StateForConditionals(civInfo, unit=this), + checkCivInfoUniques:Boolean = false + ) = sequence { yieldAll(tempUniques.asSequence() .filter { it.type == uniqueType && it.conditionalsApply(stateForConditionals) } ) + if (checkCivInfoUniques) + yieldAll(civInfo.getMatchingUniques(uniqueType, stateForConditionals)) } fun hasUnique(unique: String): Boolean { @@ -306,13 +312,11 @@ class MapUnit { if (isEmbarked()) 2 else baseUnit.movement - movement += (getMatchingUniques(UniqueType.Movement, StateForConditionals(civInfo = civInfo, unit = this)) + - civInfo.getMatchingUniques(UniqueType.Movement, StateForConditionals(civInfo = civInfo, unit = this))) + movement += getMatchingUniques(UniqueType.Movement, checkCivInfoUniques = true) .sumOf { it.params[0].toInt() } // Deprecated since 3.17.5 - for (unique in civInfo.getMatchingUniques(UniqueType.MovementUnits) - + getMatchingUniques(UniqueType.MovementUnits)) + for (unique in getMatchingUniques(UniqueType.MovementUnits, checkCivInfoUniques = true)) if (matchesFilter(unique.params[1])) movement += unique.params[0].toInt() @@ -346,9 +350,7 @@ class MapUnit { return 1 } - visibilityRange += (getMatchingUniques(UniqueType.Sight, StateForConditionals(civInfo = civInfo, unit = this)) - + civInfo.getMatchingUniques(UniqueType.Sight, StateForConditionals(civInfo = civInfo, unit = this)) - ).sumOf { it.params[0].toInt() } + visibilityRange += getMatchingUniques(UniqueType.Sight, checkCivInfoUniques = true).sumOf { it.params[0].toInt() } // Deprecated since 3.17.5 for (unique in getMatchingUniques(UniqueType.SightUnits)) @@ -1112,15 +1114,14 @@ class MapUnit { fun getPressureAddedFromSpread(): Int { var pressureAdded = baseUnit.religiousStrength.toFloat() - + // Deprecated since 3.17.5 for (unique in civInfo.getMatchingUniques(UniqueType.SpreadReligionStrengthUnits)) if (matchesFilter(unique.params[0])) pressureAdded *= unique.params[0].toPercent() // - - for (unique in getMatchingUniques(UniqueType.SpreadReligionStrength, StateForConditionals(civInfo = civInfo, unit = this)) - + civInfo.getMatchingUniques(UniqueType.SpreadReligionStrength, StateForConditionals(civInfo = civInfo, unit = this))) + + for (unique in getMatchingUniques(UniqueType.SpreadReligionStrength, checkCivInfoUniques = true)) pressureAdded *= unique.params[0].toPercent() return pressureAdded.toInt()