modding: Added "upon gaining a [unitFilter] unit" trigger condition

This commit is contained in:
Yair Morgenstern 2023-02-22 09:32:50 +02:00
parent 8565762df3
commit 7b1a5e296c
5 changed files with 13 additions and 5 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 888 KiB

After

Width:  |  Height:  |  Size: 887 KiB

View File

@ -7,6 +7,7 @@ import com.unciv.logic.civilization.Civilization
import com.unciv.logic.civilization.NotificationCategory
import com.unciv.logic.map.mapunit.MapUnit
import com.unciv.logic.map.tile.Tile
import com.unciv.models.ruleset.unique.UniqueTriggerActivation
import com.unciv.models.ruleset.unique.UniqueType
import com.unciv.models.ruleset.unit.BaseUnit
@ -67,7 +68,12 @@ class UnitManager(val civInfo:Civilization) {
* @return created [MapUnit] or null if no suitable location was found
* */
fun placeUnitNearTile(location: Vector2, unitName: String): MapUnit? {
return civInfo.gameInfo.tileMap.placeUnitNearTile(location, unitName, civInfo)
val unit = civInfo.gameInfo.tileMap.placeUnitNearTile(location, unitName, civInfo)
if (unit != null)
for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponGainingUnit))
UniqueTriggerActivation.triggerCivwideUnique(unique, civInfo)
return unit
}
fun getCivUnitsSize(): Int = unitList.size
fun getCivUnits(): Sequence<MapUnit> = unitList.asSequence()

View File

@ -715,6 +715,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
TriggerUponConstructingBuilding("upon constructing [buildingFilter]", UniqueTarget.TriggerCondition),
// We have a separate trigger to include the cityFilter, since '[in all cities]' can be read '*only* if it's in all cities'
TriggerUponConstructingBuildingCityFilter("upon constructing [buildingFilter] [cityFilter]", UniqueTarget.TriggerCondition),
TriggerUponGainingUnit("upon gaining a [unitFilter] unit", UniqueTarget.TriggerCondition),
TriggerUponFoundingPantheon("upon founding a Pantheon", UniqueTarget.TriggerCondition),
TriggerUponFoundingReligion("upon founding a Religion", UniqueTarget.TriggerCondition),

View File

@ -65,10 +65,6 @@ object UnitActionsUpgrade{
unit.destroy(destroyTransportedUnit = false)
val newUnit = civInfo.units.placeUnitNearTile(unitTile.position, upgradedUnit.name)
/** We were UNABLE to place the new unit, which means that the unit failed to upgrade!
* The only known cause of this currently is "land units upgrading to water units" which fail to be placed.
*/
/** We were UNABLE to place the new unit, which means that the unit failed to upgrade!
* The only known cause of this currently is "land units upgrading to water units" which fail to be placed.
*/

View File

@ -1918,6 +1918,11 @@ Simple unique parameters are explained by mouseover. Complex parameters are expl
Applicable to: TriggerCondition
??? example "&lt;upon gaining a [unitFilter] unit&gt;"
Example: "&lt;upon gaining a [Unknown] unit&gt;"
Applicable to: TriggerCondition
??? example "&lt;upon founding a Pantheon&gt;"
Applicable to: TriggerCondition