mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-15 18:28:42 +07:00
Changed tech trigger to accept tech filters
This commit is contained in:
@ -301,8 +301,12 @@ class TechManager : IsPartOfGameInfoSerialization {
|
||||
if (!unique.hasTriggerConditional() && unique.conditionalsApply(StateForConditionals(civInfo)))
|
||||
UniqueTriggerActivation.triggerUnique(unique, civInfo, triggerNotificationText = triggerNotificationText)
|
||||
|
||||
for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponResearchOld))
|
||||
if (unique.conditionals.any {it.type == UniqueType.TriggerUponResearchOld && it.params[0] == techName})
|
||||
UniqueTriggerActivation.triggerUnique(unique, civInfo, triggerNotificationText = triggerNotificationText)
|
||||
|
||||
for (unique in civInfo.getTriggeredUniques(UniqueType.TriggerUponResearch))
|
||||
if (unique.conditionals.any {it.type == UniqueType.TriggerUponResearch && it.params[0] == techName})
|
||||
if (unique.conditionals.any {it.type == UniqueType.TriggerUponResearch && newTech.matchesFilter(it.params[0]) })
|
||||
UniqueTriggerActivation.triggerUnique(unique, civInfo, triggerNotificationText = triggerNotificationText)
|
||||
|
||||
|
||||
|
@ -522,6 +522,24 @@ enum class UniqueParameterType(
|
||||
}
|
||||
},
|
||||
|
||||
/** Implemented by [Technology.matchesFilter][com.unciv.models.ruleset.tech.Technology.matchesFilter] */
|
||||
TechFilter("techFilter", "Agriculture") {
|
||||
private val knownValues = setOf("All", "all")
|
||||
|
||||
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
|
||||
UniqueType.UniqueParameterErrorSeverity? = getErrorSeverityForFilter(parameterText, ruleset)
|
||||
|
||||
override fun isKnownValue(parameterText: String, ruleset: Ruleset): Boolean {
|
||||
if (parameterText in knownValues) return true
|
||||
if (parameterText in ruleset.technologies) return true
|
||||
if (parameterText in ruleset.eras) return true
|
||||
return false
|
||||
}
|
||||
|
||||
override fun getTranslationWriterStringsForOutput() = knownValues
|
||||
},
|
||||
|
||||
|
||||
/** unused at the moment with vanilla rulesets */
|
||||
Specialist("specialist", "Merchant", "The name of any specialist") {
|
||||
override fun getErrorSeverity(parameterText: String, ruleset: Ruleset):
|
||||
|
@ -83,7 +83,7 @@ enum class UniqueTarget(
|
||||
/** All targets that can display their Uniques */
|
||||
// As Array so it can used in a vararg parameter list.
|
||||
val Displayable = arrayOf(
|
||||
Building, Unit, UnitType, Improvement, Tech, FollowerBelief,
|
||||
Building, Unit, UnitType, Improvement, Tech, FollowerBelief, FounderBelief,
|
||||
Terrain, Resource, Policy, Promotion, Nation, Ruins, Speed
|
||||
)
|
||||
}
|
||||
|
@ -775,7 +775,9 @@ enum class UniqueType(
|
||||
|
||||
///////////////////////////////////////// region 10 TRIGGERS /////////////////////////////////////////
|
||||
|
||||
TriggerUponResearch("upon discovering [tech]", UniqueTarget.TriggerCondition),
|
||||
TriggerUponResearch("upon discovering [techFilter] technology", UniqueTarget.TriggerCondition),
|
||||
@Deprecated("as of 4.10.15", ReplaceWith("upon discovering [tech] technology"))
|
||||
TriggerUponResearchOld("upon discovering [tech]", UniqueTarget.TriggerCondition),
|
||||
TriggerUponEnteringEra("upon entering the [era]", UniqueTarget.TriggerCondition),
|
||||
TriggerUponAdoptingPolicyOrBelief("upon adopting [policy/belief]", UniqueTarget.TriggerCondition),
|
||||
TriggerUponDeclaringWar("upon declaring war with a major Civilization", UniqueTarget.TriggerCondition),
|
||||
|
Reference in New Issue
Block a user