diff --git a/android/assets/jsons/translations/template.properties b/android/assets/jsons/translations/template.properties index 605ca6497f..27b14bdca1 100644 --- a/android/assets/jsons/translations/template.properties +++ b/android/assets/jsons/translations/template.properties @@ -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 diff --git a/core/src/com/unciv/logic/battle/Battle.kt b/core/src/com/unciv/logic/battle/Battle.kt index 82e87d5668..655ec56868 100644 --- a/core/src/com/unciv/logic/battle/Battle.kt +++ b/core/src/com/unciv/logic/battle/Battle.kt @@ -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) diff --git a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt index ac57bbdf83..68bb54cea7 100644 --- a/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt +++ b/core/src/com/unciv/logic/map/mapunit/UnitPromotions.kt @@ -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] diff --git a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt index 13e6a73ce2..61bc521353 100644 --- a/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt +++ b/core/src/com/unciv/models/ruleset/unique/UniqueTriggerActivation.kt @@ -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) } } }