Fixed a bug where units requiring nearby units for bonuses could find themselves (#6104)

* Fixed a bug where units requiring nearby units for bonuses could find themselves

* Added requested changes
This commit is contained in:
Xander Lenstra 2022-02-03 13:51:04 +01:00 committed by GitHub
parent 6925fc6909
commit 02c37f19fe
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,7 @@
package com.unciv.models.ruleset.unique
import com.unciv.logic.battle.CombatAction
import com.unciv.logic.battle.MapUnitCombatant
import com.unciv.logic.city.CityInfo
import com.unciv.models.stats.Stats
import com.unciv.models.translations.*
@ -75,6 +76,10 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
fun ruleset() = state.civInfo!!.gameInfo.ruleSet
val relevantUnitTile by lazy { state.attackedTile ?: state.unit?.getTile() }
val relevantUnit by lazy {
if (state.ourCombatant != null && state.ourCombatant is MapUnitCombatant) state.ourCombatant.unit
else state.unit
}
return when (condition.type) {
UniqueType.ConditionalWar -> state.civInfo?.isAtWar() == true
@ -142,8 +147,11 @@ class Unique(val text: String, val sourceObjectType: UniqueTarget? = null, val s
!= state.unit.getTile().getContinent()
)
UniqueType.ConditionalAdjacentUnit ->
state.civInfo != null && relevantUnitTile!!.neighbors.any {
state.civInfo != null
&& relevantUnit != null
&& relevantUnitTile!!.neighbors.any {
it.militaryUnit != null
&& it.militaryUnit != relevantUnit
&& it.militaryUnit!!.civInfo == state.civInfo
&& it.militaryUnit!!.matchesFilter(condition.params[0])
}