When capturing settlers, fix finding the Worker units with conditionals (#13565)

* Fix capturing Settlers when Workers have conditional build improvements

* The ignore conditional for build improvement should apply to OneTimeFreeUnitsRuins too
This commit is contained in:
Rob Loach 2025-07-03 04:02:16 -04:00 committed by GitHub
parent 4f44c7236c
commit 212a772190
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 3 additions and 3 deletions

View File

@ -218,8 +218,8 @@ object BattleUnitCapture {
capturedUnit.cache.state = StateForConditionals(capturedUnit)
val workerTypeUnit = capturingCiv.gameInfo.ruleset.units.values
.firstOrNull { it.isCivilian() && it.getMatchingUniques(UniqueType.BuildImprovements)
.any { unique -> unique.params[0] == "Land" } }
.firstOrNull { it.isCivilian() && it.getMatchingUniques(UniqueType.BuildImprovements, StateForConditionals.IgnoreConditionals)
.any { unique -> unique.params[0] == "Land" } }
?: return null
return capturingCiv.units.placeUnitNearTile(capturedUnit.currentTile.position, workerTypeUnit, capturedUnit.id)
?.currentTile?.position

View File

@ -247,7 +247,7 @@ object UniqueTriggerActivation {
if (civUnit.isCityFounder() && civInfo.isOneCityChallenger()) {
val replacementUnit = ruleset.units.values
.firstOrNull {
it.getMatchingUniques(UniqueType.BuildImprovements)
it.getMatchingUniques(UniqueType.BuildImprovements, StateForConditionals.IgnoreConditionals)
.any { unique -> unique.params[0] == "Land" }
} ?: return null
civUnit = civInfo.getEquivalentUnit(replacementUnit.name)