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

@ -217,19 +217,25 @@ object Battle {
return damageDealt + interceptDamage
}
private fun triggerCombatUniques(attacker: ICombatant, defender: ICombatant, attackedTile: Tile) {
val attackerContext = GameContext(attacker.getCivInfo(),
ourCombatant = attacker, theirCombatant = defender, tile = attackedTile, combatAction = CombatAction.Attack)
if (attacker is MapUnitCombatant)
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(),
ourCombatant = defender, theirCombatant = attacker, tile = attackedTile, combatAction = CombatAction.Defend)
if (defender is MapUnitCombatant)
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)
for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth)
{ it.params[0].toInt() <= defenderDamageDealt })
UniqueTriggerActivation.triggerUnique(unique, attacker.unit, triggerNotificationText = "due to losing [$defenderDamageDealt] HP")
{ it.params[0].toInt() <= defenderDamageDealt }) {
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)
for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth)
{ it.params[0].toInt() <= attackerDamageDealt })
UniqueTriggerActivation.triggerUnique(unique, defender.unit, triggerNotificationText = "due to losing [$attackerDamageDealt] HP")
{ it.params[0].toInt() <= attackerDamageDealt }) {
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)
return DamageDealt(attackerDamageDealt, defenderDamageDealt)