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.ConditionalEspionageEnabled -> checkOnGameInfo { isEspionageEnabled() }
UniqueType.ConditionalEspionageDisabled -> checkOnGameInfo { !isEspionageEnabled() }
UniqueType.ConditionalTech -> checkOnCiv { tech.isResearched(conditional.params[0]) }
UniqueType.ConditionalNoTech -> checkOnCiv { !tech.isResearched(conditional.params[0]) }
UniqueType.ConditionalWhileResearching -> checkOnCiv { tech.currentTechnologyName() == conditional.params[0] }
UniqueType.ConditionalTech -> checkOnCiv {
val filter = 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 ->
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),
ConditionalFirstCivToResearch("if no other Civilization has researched this", UniqueTarget.Conditional),
ConditionalTech("after discovering [tech]", UniqueTarget.Conditional),
ConditionalNoTech("before discovering [tech]", UniqueTarget.Conditional),
ConditionalWhileResearching("while researching [tech]", UniqueTarget.Conditional,
ConditionalTech("after discovering [techFilter]", UniqueTarget.Conditional),
ConditionalNoTech("before discovering [techFilter]", 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)"),
ConditionalFirstCivToAdopt("if no other Civilization has adopted this", UniqueTarget.Conditional),