Add in Target Unit check for uniques when entering combat (#13804)

* Add in Target Unit check for uniques when entering combat

* Flip check to be easier to read

* I'm petty enough to notice the whitespace diff

* And I noticed the wrong one, lol
This commit is contained in:
SeventhM 2025-08-15 00:40:56 -07:00 committed by GitHub
parent 1a1844641e
commit ff3c17d9fb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -223,13 +223,19 @@ object Battle {
ourCombatant = attacker, theirCombatant = defender, tile = attackedTile, combatAction = CombatAction.Attack) ourCombatant = attacker, theirCombatant = defender, tile = attackedTile, combatAction = CombatAction.Attack)
if (attacker is MapUnitCombatant) if (attacker is MapUnitCombatant)
for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponCombat, attackerContext)) { for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponCombat, attackerContext)) {
UniqueTriggerActivation.triggerUnique(unique, attacker.unit) val unit = if (unique.params[0] == Constants.targetUnit && defender is MapUnitCombatant)
defender.unit
else attacker.unit
UniqueTriggerActivation.triggerUnique(unique, unit)
} }
val defenderContext = GameContext(defender.getCivInfo(), val defenderContext = GameContext(defender.getCivInfo(),
ourCombatant = defender, theirCombatant = attacker, tile = attackedTile, combatAction = CombatAction.Defend) ourCombatant = defender, theirCombatant = attacker, tile = attackedTile, combatAction = CombatAction.Defend)
if (defender is MapUnitCombatant) if (defender is MapUnitCombatant)
for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponCombat, defenderContext)) { for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponCombat, defenderContext)) {
UniqueTriggerActivation.triggerUnique(unique, defender.unit) val unit = if (unique.params[0] == Constants.targetUnit && attacker is MapUnitCombatant)
attacker.unit
else defender.unit
UniqueTriggerActivation.triggerUnique(unique, unit)
} }
} }
@ -365,13 +371,21 @@ object Battle {
if (attacker is MapUnitCombatant) if (attacker is MapUnitCombatant)
for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth) for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth)
{ it.params[0].toInt() <= defenderDamageDealt }) { it.params[0].toInt() <= defenderDamageDealt }) {
UniqueTriggerActivation.triggerUnique(unique, attacker.unit, triggerNotificationText = "due to losing [$defenderDamageDealt] HP") val unit = if (unique.params[0] == Constants.targetUnit && defender is MapUnitCombatant)
defender.unit
else attacker.unit
UniqueTriggerActivation.triggerUnique(unique, unit, triggerNotificationText = "due to losing [$defenderDamageDealt] HP")
}
if (defender is MapUnitCombatant) if (defender is MapUnitCombatant)
for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth) for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth)
{ it.params[0].toInt() <= attackerDamageDealt }) { it.params[0].toInt() <= attackerDamageDealt }) {
UniqueTriggerActivation.triggerUnique(unique, defender.unit, triggerNotificationText = "due to losing [$attackerDamageDealt] HP") val unit = if (unique.params[0] == Constants.targetUnit && attacker is MapUnitCombatant)
attacker.unit
else defender.unit
UniqueTriggerActivation.triggerUnique(unique, unit, triggerNotificationText = "due to losing [$attackerDamageDealt] HP")
}
plunderFromDamage(attacker, defender, attackerDamageDealt) plunderFromDamage(attacker, defender, attackerDamageDealt)
return DamageDealt(attackerDamageDealt, defenderDamageDealt) return DamageDealt(attackerDamageDealt, defenderDamageDealt)