diff --git a/core/src/com/unciv/ui/screens/devconsole/ConsoleCivCommands.kt b/core/src/com/unciv/ui/screens/devconsole/ConsoleCivCommands.kt index a481a97891..9fc6f2860f 100644 --- a/core/src/com/unciv/ui/screens/devconsole/ConsoleCivCommands.kt +++ b/core/src/com/unciv/ui/screens/devconsole/ConsoleCivCommands.kt @@ -2,6 +2,7 @@ package com.unciv.ui.screens.devconsole import com.unciv.logic.civilization.PlayerType import com.unciv.models.ruleset.Policy +import com.unciv.models.ruleset.tech.Technology import com.unciv.models.ruleset.unique.Unique import com.unciv.models.ruleset.unique.UniqueTriggerActivation import com.unciv.models.stats.Stat @@ -59,5 +60,29 @@ internal class ConsoleCivCommands : ConsoleCommandNode { DevConsoleResponse.OK } }, + + "addtech" to ConsoleAction("civ addtechnology ") { console, params -> + val civ = console.getCivByName(params[0]) + val tech = console.findCliInput(params[1]) + ?: throw ConsoleErrorException("Unrecognized technology") + if (civ.tech.isResearched(tech.name)) + DevConsoleResponse.hint("${civ.civName} already has researched ${tech.name}") + else { + civ.tech.addTechnology(tech.name, false) + DevConsoleResponse.OK + } + }, + + "removetech" to ConsoleAction("civ removetechnology ") { console, params -> + val civ = console.getCivByName(params[0]) + val tech = console.findCliInput(params[1]) + ?: throw ConsoleErrorException("Unrecognized technology") + if (!civ.tech.isResearched(tech.name)) + DevConsoleResponse.hint("${civ.civName} does not have ${tech.name}") + else { + civ.tech.techsResearched.removeAll { it == tech.name } // Can have multiple for researchable techs + DevConsoleResponse.OK + } + }, ) } diff --git a/core/src/com/unciv/ui/screens/devconsole/ConsoleParameterType.kt b/core/src/com/unciv/ui/screens/devconsole/ConsoleParameterType.kt index c8201a41b0..c69b361645 100644 --- a/core/src/com/unciv/ui/screens/devconsole/ConsoleParameterType.kt +++ b/core/src/com/unciv/ui/screens/devconsole/ConsoleParameterType.kt @@ -32,6 +32,7 @@ internal enum class ConsoleParameterType( buildingName( { ruleset.buildings.keys } ), direction( { RiverGenerator.RiverDirections.names } ), policyName( { ruleset.policyBranches.keys + ruleset.policies.keys } ), + techName( { ruleset.technologies.keys } ), cityName( { civilizations.flatMap { civ -> civ.cities.map { it.name } } } ), triggeredUniqueTemplate( { UniqueType.values().filter { it.canAcceptUniqueTarget(UniqueTarget.Triggerable) }.map { it.text } }, preferquoted = true ), ;