mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-14 09:48:12 +07:00
Added "upon founding a city" trigger
This commit is contained in:
@ -930,6 +930,7 @@ due to adopting [policy] =
|
||||
due to discovering [naturalWonder] =
|
||||
due to entering the [eraName] =
|
||||
due to constructing [buildingName] =
|
||||
due to founding a city =
|
||||
from the ruins =
|
||||
|
||||
# World Screen UI
|
||||
|
@ -7,6 +7,8 @@ import com.unciv.logic.civilization.Proximity
|
||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||
import com.unciv.logic.civilization.managers.ReligionState
|
||||
import com.unciv.models.ruleset.nation.Nation
|
||||
import com.unciv.models.ruleset.unique.StateForConditionals
|
||||
import com.unciv.models.ruleset.unique.UniqueTriggerActivation
|
||||
import com.unciv.models.ruleset.unique.UniqueType
|
||||
|
||||
class CityFounder {
|
||||
@ -82,6 +84,12 @@ class CityFounder {
|
||||
triggerCitiesSettledNearOtherCiv(city)
|
||||
civInfo.gameInfo.cityDistances.setDirty()
|
||||
|
||||
|
||||
for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponFoundingCity,
|
||||
StateForConditionals(civInfo, city)
|
||||
))
|
||||
UniqueTriggerActivation.triggerCivwideUnique(unique, civInfo, city, triggerNotificationText = "due to founding a city")
|
||||
|
||||
return city
|
||||
}
|
||||
|
||||
|
@ -25,12 +25,12 @@ import kotlin.random.Random
|
||||
|
||||
// Buildings, techs, policies, ancient ruins and promotions can have 'triggered' effects
|
||||
object UniqueTriggerActivation {
|
||||
/** @return boolean whether an action was successfully performed */
|
||||
/** @return whether an action was successfully performed */
|
||||
fun triggerCivwideUnique(
|
||||
unique: Unique,
|
||||
civInfo: Civilization,
|
||||
city: City? = null,
|
||||
tile: Tile? = null,
|
||||
tile: Tile? = city?.getCenterTile(),
|
||||
notification: String? = null,
|
||||
triggerNotificationText: String? = null
|
||||
): Boolean {
|
||||
@ -205,8 +205,8 @@ object UniqueTriggerActivation {
|
||||
"in other cities" -> civInfo.cities.asSequence().filter { it != city }
|
||||
else -> civInfo.cities.asSequence().filter { it.matchesFilter(unique.params[1]) }
|
||||
}
|
||||
for (city in applicableCities) {
|
||||
city.population.addPopulation(unique.params[0].toInt())
|
||||
for (applicableCity in applicableCities) {
|
||||
applicableCity.population.addPopulation(unique.params[0].toInt())
|
||||
}
|
||||
if (notification != null && applicableCities.any())
|
||||
civInfo.addNotification(
|
||||
|
@ -710,6 +710,7 @@ enum class UniqueType(val text: String, vararg targets: UniqueTarget, val flags:
|
||||
TriggerUponDeclaringFriendship("upon declaring friendship", UniqueTarget.TriggerCondition),
|
||||
TriggerUponEnteringGoldenAge("upon entering a Golden Age", UniqueTarget.TriggerCondition),
|
||||
TriggerUponConqueringCity("upon conquering a city", UniqueTarget.TriggerCondition),
|
||||
TriggerUponFoundingCity("upon founding a city", UniqueTarget.TriggerCondition),
|
||||
TriggerUponConstructingBuilding("upon constructing [buildingFilter]", UniqueTarget.TriggerCondition),
|
||||
// Not auto cityfiltered, since 'in all cities' can be read 'only if it's in all cities'
|
||||
TriggerUponConstructingBuildingCityFilter("upon constructing [buildingFilter] [cityFilter]", UniqueTarget.TriggerCondition),
|
||||
|
Reference in New Issue
Block a user