mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-30 07:21:34 -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 constructing [buildingName] =
|
||||||
due to founding a city =
|
due to founding a city =
|
||||||
due to discovering a Natural Wonder =
|
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 =
|
from the ruins =
|
||||||
|
|
||||||
# World Screen UI
|
# World Screen UI
|
||||||
|
@ -155,7 +155,7 @@ object Battle {
|
|||||||
for (unique in ourUnit.unit.getTriggeredUniques(UniqueType.TriggerUponDefeatingUnit, stateForConditionals))
|
for (unique in ourUnit.unit.getTriggeredUniques(UniqueType.TriggerUponDefeatingUnit, stateForConditionals))
|
||||||
if (unique.conditionals.any { it.type == UniqueType.TriggerUponDefeatingUnit
|
if (unique.conditionals.any { it.type == UniqueType.TriggerUponDefeatingUnit
|
||||||
&& enemy.unit.matchesFilter(it.params[0]) })
|
&& 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(),
|
val stateForConditionals = StateForConditionals(civInfo = ourUnit.getCivInfo(),
|
||||||
ourCombatant = ourUnit, theirCombatant=enemy, tile = attackedTile)
|
ourCombatant = ourUnit, theirCombatant=enemy, tile = attackedTile)
|
||||||
for (unique in ourUnit.unit.getTriggeredUniques(UniqueType.TriggerUponDefeat, stateForConditionals))
|
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) {
|
private fun tryEarnFromKilling(civUnit: ICombatant, defeatedUnit: MapUnitCombatant) {
|
||||||
@ -368,14 +368,14 @@ object Battle {
|
|||||||
val attackerDamageDealt = defenderHealthBefore - defender.getHealth()
|
val attackerDamageDealt = defenderHealthBefore - defender.getHealth()
|
||||||
|
|
||||||
if (attacker is MapUnitCombatant)
|
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 })
|
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)
|
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 })
|
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)
|
plunderFromDamage(attacker, defender, attackerDamageDealt)
|
||||||
return DamageDealt(attackerDamageDealt, defenderDamageDealt)
|
return DamageDealt(attackerDamageDealt, defenderDamageDealt)
|
||||||
|
@ -91,7 +91,7 @@ class UnitPromotions : IsPartOfGameInfoSerialization {
|
|||||||
for (unique in promotion.uniqueObjects)
|
for (unique in promotion.uniqueObjects)
|
||||||
if (unique.conditionalsApply(StateForConditionals(civInfo = unit.civ, unit = unit))
|
if (unique.conditionalsApply(StateForConditionals(civInfo = unit.civ, unit = unit))
|
||||||
&& unique.conditionals.none { it.type?.targetTypes?.contains(UniqueTarget.TriggerCondition) == true })
|
&& 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]
|
/** Gets all promotions this unit could currently "buy" with enough [XP]
|
||||||
|
@ -608,7 +608,8 @@ object UniqueTriggerActivation {
|
|||||||
fun triggerUnitwideUnique(
|
fun triggerUnitwideUnique(
|
||||||
unique: Unique,
|
unique: Unique,
|
||||||
unit: MapUnit,
|
unit: MapUnit,
|
||||||
notification: String? = null
|
notification: String? = null,
|
||||||
|
triggerNotificationText:String? = null
|
||||||
): Boolean {
|
): Boolean {
|
||||||
when (unique.type) {
|
when (unique.type) {
|
||||||
UniqueType.OneTimeUnitHeal -> {
|
UniqueType.OneTimeUnitHeal -> {
|
||||||
@ -649,7 +650,7 @@ object UniqueTriggerActivation {
|
|||||||
unit.civ.addNotification(notification, unit.getTile().position, NotificationCategory.Units, unit.name)
|
unit.civ.addNotification(notification, unit.getTile().position, NotificationCategory.Units, unit.name)
|
||||||
return true
|
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