mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-28 22:37:02 -04:00
Resolved #8888 - Added trigger condition notification for several unit triggers
This commit is contained in:
parent
855a818a84
commit
6aef2ff3c6
@ -965,6 +965,10 @@ due to entering the [eraName] =
|
||||
due to constructing [buildingName] =
|
||||
due to founding a city =
|
||||
due to discovering a Natural Wonder =
|
||||
due to our [unitName] defeating a [unitName] =
|
||||
due to our [unitName] being defeated by a [unitName] =
|
||||
due to our [unitName] losing [amount] HP =
|
||||
due to our [unitName] being promoted =
|
||||
from the ruins =
|
||||
|
||||
# World Screen UI
|
||||
|
@ -155,7 +155,7 @@ object Battle {
|
||||
for (unique in ourUnit.unit.getTriggeredUniques(UniqueType.TriggerUponDefeatingUnit, stateForConditionals))
|
||||
if (unique.conditionals.any { it.type == UniqueType.TriggerUponDefeatingUnit
|
||||
&& enemy.unit.matchesFilter(it.params[0]) })
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, ourUnit.unit)
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, ourUnit.unit, triggerNotificationText = "due to our [${ourUnit.getName()}] defeating a [${enemy.getName()}]")
|
||||
}
|
||||
|
||||
|
||||
@ -197,7 +197,7 @@ object Battle {
|
||||
val stateForConditionals = StateForConditionals(civInfo = ourUnit.getCivInfo(),
|
||||
ourCombatant = ourUnit, theirCombatant=enemy, tile = attackedTile)
|
||||
for (unique in ourUnit.unit.getTriggeredUniques(UniqueType.TriggerUponDefeat, stateForConditionals))
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, ourUnit.unit)
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, ourUnit.unit, triggerNotificationText = "due to our [${ourUnit.getName()}] being defeated by a [${enemy.getName()}]")
|
||||
}
|
||||
|
||||
private fun tryEarnFromKilling(civUnit: ICombatant, defeatedUnit: MapUnitCombatant) {
|
||||
@ -368,14 +368,14 @@ object Battle {
|
||||
val attackerDamageDealt = defenderHealthBefore - defender.getHealth()
|
||||
|
||||
if (attacker is MapUnitCombatant)
|
||||
for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponPromotion))
|
||||
for (unique in attacker.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth))
|
||||
if (unique.conditionals.any { it.params[0].toInt() <= defenderDamageDealt })
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, attacker.unit)
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, attacker.unit, "due to losing [$defenderDamageDealt] HP")
|
||||
|
||||
if (defender is MapUnitCombatant)
|
||||
for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponPromotion))
|
||||
for (unique in defender.unit.getTriggeredUniques(UniqueType.TriggerUponLosingHealth))
|
||||
if (unique.conditionals.any { it.params[0].toInt() <= attackerDamageDealt })
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, defender.unit)
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, defender.unit, "due to losing [$attackerDamageDealt] HP")
|
||||
|
||||
plunderFromDamage(attacker, defender, attackerDamageDealt)
|
||||
return DamageDealt(attackerDamageDealt, defenderDamageDealt)
|
||||
|
@ -91,7 +91,7 @@ class UnitPromotions : IsPartOfGameInfoSerialization {
|
||||
for (unique in promotion.uniqueObjects)
|
||||
if (unique.conditionalsApply(StateForConditionals(civInfo = unit.civ, unit = unit))
|
||||
&& unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.TriggerCondition) == true })
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, unit)
|
||||
UniqueTriggerActivation.triggerUnitwideUnique(unique, unit, "due to our [${unit.name}] being promoted")
|
||||
}
|
||||
|
||||
/** Gets all promotions this unit could currently "buy" with enough [XP]
|
||||
|
@ -608,7 +608,8 @@ object UniqueTriggerActivation {
|
||||
fun triggerUnitwideUnique(
|
||||
unique: Unique,
|
||||
unit: MapUnit,
|
||||
notification: String? = null
|
||||
notification: String? = null,
|
||||
triggerNotificationText:String? = null
|
||||
): Boolean {
|
||||
when (unique.type) {
|
||||
UniqueType.OneTimeUnitHeal -> {
|
||||
@ -649,7 +650,7 @@ object UniqueTriggerActivation {
|
||||
unit.civ.addNotification(notification, unit.getTile().position, NotificationCategory.Units, unit.name)
|
||||
return true
|
||||
}
|
||||
else -> return triggerCivwideUnique(unique, civInfo = unit.civ, tile=unit.currentTile)
|
||||
else -> return triggerCivwideUnique(unique, civInfo = unit.civ, tile=unit.currentTile, triggerNotificationText = triggerNotificationText)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user