diff --git a/core/src/com/unciv/logic/civilization/TechManager.kt b/core/src/com/unciv/logic/civilization/TechManager.kt index ce0e72c590..3296357fc3 100644 --- a/core/src/com/unciv/logic/civilization/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/TechManager.kt @@ -119,6 +119,8 @@ class TechManager { fun canBeResearched(techName: String): Boolean { val tech = getRuleset().technologies[techName]!! + if (tech.uniqueObjects.any { it.placeholderText=="Incompatible with []" && isResearched(it.params[0]) }) + return false if (isResearched(tech.name) && !tech.isContinuallyResearchable()) return false return tech.prerequisites.all { isResearched(it) } @@ -128,7 +130,7 @@ class TechManager { //endregion - fun getRequiredTechsToDestination(destinationTech: Technology): List { + fun getRequiredTechsToDestination(destinationTech: Technology): List { val prerequisites = Stack() val checkPrerequisites = ArrayDeque() @@ -146,7 +148,7 @@ class TechManager { prerequisites.add(techToCheck) } - return prerequisites.sortedBy { it.column!!.columnNumber }.map { it.name } + return prerequisites.sortedBy { it.column!!.columnNumber } } fun getScienceFromGreatScientist(): Int { diff --git a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt index adbed70a0c..bf4ac00f80 100644 --- a/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt +++ b/core/src/com/unciv/ui/pickerscreens/TechPickerScreen.kt @@ -248,10 +248,17 @@ class TechPickerScreen(internal val civInfo: CivilizationInfo, centerOnTech: Tec return } - + val pathToTech = civTech.getRequiredTechsToDestination(tech) + for (requiredTech in pathToTech) + for (unique in requiredTech.uniqueObjects) + if (unique.placeholderText == "Incompatible with []" && civTech.isResearched(unique.params[0])) { + rightSideButton.setText(unique.text.tr()) + rightSideButton.disable() + return + } tempTechsToResearch.clear() - tempTechsToResearch.addAll(civTech.getRequiredTechsToDestination(tech)) + tempTechsToResearch.addAll(pathToTech.map { it.name }) pick("Research [${tempTechsToResearch[0]}]".tr()) setButtonsInfo()