Modding: before/after/while researching tech uniques accept techFilter

This commit is contained in:
yairm210 2025-02-27 08:43:10 +02:00
parent cb6d99ae20
commit 4919368c17
2 changed files with 14 additions and 6 deletions

View File

@ -146,9 +146,17 @@ object Conditionals {
UniqueType.ConditionalReligionDisabled -> checkOnGameInfo { !isReligionEnabled() } UniqueType.ConditionalReligionDisabled -> checkOnGameInfo { !isReligionEnabled() }
UniqueType.ConditionalEspionageEnabled -> checkOnGameInfo { isEspionageEnabled() } UniqueType.ConditionalEspionageEnabled -> checkOnGameInfo { isEspionageEnabled() }
UniqueType.ConditionalEspionageDisabled -> checkOnGameInfo { !isEspionageEnabled() } UniqueType.ConditionalEspionageDisabled -> checkOnGameInfo { !isEspionageEnabled() }
UniqueType.ConditionalTech -> checkOnCiv { tech.isResearched(conditional.params[0]) } UniqueType.ConditionalTech -> checkOnCiv {
UniqueType.ConditionalNoTech -> checkOnCiv { !tech.isResearched(conditional.params[0]) } val filter = conditional.params[0]
UniqueType.ConditionalWhileResearching -> checkOnCiv { tech.currentTechnologyName() == conditional.params[0] } if (filter in gameInfo.ruleset.technologies) tech.isResearched(conditional.params[0]) // fast common case
else tech.researchedTechnologies.any { it.matchesFilter(filter) }
}
UniqueType.ConditionalNoTech -> checkOnCiv {
val filter = conditional.params[0]
if (filter in gameInfo.ruleset.technologies) !tech.isResearched(conditional.params[0]) // fast common case
else tech.researchedTechnologies.none { it.matchesFilter(filter) }
}
UniqueType.ConditionalWhileResearching -> checkOnCiv { tech.currentTechnology()?.matchesFilter(conditional.params[0]) == true }
UniqueType.ConditionalAfterPolicyOrBelief -> UniqueType.ConditionalAfterPolicyOrBelief ->
checkOnCiv { policies.isAdopted(conditional.params[0]) || religionManager.religion?.hasBelief(conditional.params[0]) == true } checkOnCiv { policies.isAdopted(conditional.params[0]) || religionManager.religion?.hasBelief(conditional.params[0]) == true }

View File

@ -698,9 +698,9 @@ enum class UniqueType(
ConditionalIfStartingInEra("if starting in the [era]", UniqueTarget.Conditional), ConditionalIfStartingInEra("if starting in the [era]", UniqueTarget.Conditional),
ConditionalFirstCivToResearch("if no other Civilization has researched this", UniqueTarget.Conditional), ConditionalFirstCivToResearch("if no other Civilization has researched this", UniqueTarget.Conditional),
ConditionalTech("after discovering [tech]", UniqueTarget.Conditional), ConditionalTech("after discovering [techFilter]", UniqueTarget.Conditional),
ConditionalNoTech("before discovering [tech]", UniqueTarget.Conditional), ConditionalNoTech("before discovering [techFilter]", UniqueTarget.Conditional),
ConditionalWhileResearching("while researching [tech]", UniqueTarget.Conditional, ConditionalWhileResearching("while researching [techFilter]", UniqueTarget.Conditional,
docDescription = "This condition is fulfilled while the technology is actively being researched (it is the one research points are added to)"), docDescription = "This condition is fulfilled while the technology is actively being researched (it is the one research points are added to)"),
ConditionalFirstCivToAdopt("if no other Civilization has adopted this", UniqueTarget.Conditional), ConditionalFirstCivToAdopt("if no other Civilization has adopted this", UniqueTarget.Conditional),