Added 'trigger upon promotion', 'trigger upon conquering city' unit trigger

This commit is contained in:
Yair Morgenstern
2023-02-26 22:04:57 +02:00
parent 67f4704ca2
commit faada0ac79
3 changed files with 10 additions and 6 deletions

View File

@ -557,7 +557,7 @@ object Battle {
for (airUnit in airUnits.toList()) airUnit.destroy()
}
val stateForConditionals = StateForConditionals(civInfo = attackerCiv, unit = attacker.unit, ourCombatant = attacker, attackedTile = city.getCenterTile())
val stateForConditionals = StateForConditionals(civInfo = attackerCiv, city=city, unit = attacker.unit, ourCombatant = attacker, attackedTile = city.getCenterTile())
for (unique in attacker.getMatchingUniques(UniqueType.CaptureCityPlunder, stateForConditionals, true)) {
attackerCiv.addStat(
Stat.valueOf(unique.params[2]),
@ -584,9 +584,8 @@ object Battle {
if (attackerCiv.isCurrentPlayer())
UncivGame.Current.settings.addCompletedTutorialTask("Conquer a city")
for (unique in attackerCiv.getTriggeredUniques(UniqueType.TriggerUponConqueringCity,
StateForConditionals(attackerCiv, city, attacker.unit, attackedTile = city.getCenterTile() )
))
for (unique in attackerCiv.getTriggeredUniques(UniqueType.TriggerUponConqueringCity, stateForConditionals)
+ attacker.unit.getTriggeredUniques(UniqueType.TriggerUponConqueringCity, stateForConditionals))
UniqueTriggerActivation.triggerCivwideUnique(unique, attackerCiv, city)
}

View File

@ -64,6 +64,9 @@ class UnitPromotions : IsPartOfGameInfoSerialization {
if (!isFree) {
XP -= xpForNextPromotion()
numberOfPromotions++
for (unique in unit.getTriggeredUniques(UniqueType.TriggerUponPromotion))
UniqueTriggerActivation.triggerUnitwideUnique(unique, unit)
}
val ruleset = unit.civ.gameInfo.ruleset

View File

@ -714,7 +714,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
TriggerUponDeclaringWar("upon declaring war with a major Civilization", UniqueTarget.TriggerCondition),
TriggerUponDeclaringFriendship("upon declaring friendship", UniqueTarget.TriggerCondition),
TriggerUponEnteringGoldenAge("upon entering a Golden Age", UniqueTarget.TriggerCondition),
TriggerUponConqueringCity("upon conquering a city", UniqueTarget.TriggerCondition),
/** Can be placed upon both units and as global */
TriggerUponConqueringCity("upon conquering a city", UniqueTarget.TriggerCondition, UniqueTarget.UnitTriggerable),
TriggerUponFoundingCity("upon founding a city", UniqueTarget.TriggerCondition),
TriggerUponDiscoveringNaturalWonder("upon discovering a Natural Wonder", UniqueTarget.TriggerCondition),
TriggerUponConstructingBuilding("upon constructing [buildingFilter]", UniqueTarget.TriggerCondition),
@ -732,7 +733,8 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
///////////////////////////////////////// region UNIT TRIGGERS /////////////////////////////////////////
TriggerUponDefeatingUnit("upon defeating a [mapUnitFilter] unit", UniqueTarget.UnitTriggerCondition),
TriggerUponDefeat("upon defeat", UniqueTarget.UnitTriggerCondition),
TriggerUponDefeat("upon being defeated", UniqueTarget.UnitTriggerCondition),
TriggerUponPromotion("upon being promoted", UniqueTarget.UnitTriggerCondition),
//endregion