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