Files
Bubberstation/code/modules/research/techweb/nodes/robo_nodes.dm
vect0r ab365f9fb4 Adds the ability for an AI to remotely charge an APC with an upgrade disk (#86470)
## About The Pull Request

Adds an upgrade disk that gives the ability to remotely charge an APC
with the AIs backup power (the one that runs down when there is no power
in an APC). This tech disk is under advanced AI tech

Also added the ability to make new disks with the new object type
/obj/item/aiupgrade, and made it so not every AI module is malf, now
only subtypes of /datum/ai_module/malf show up on malf upgrade screens

## Why It's Good For The Game
Adds the ability for an AI to assist crewmembers who do not have power,
which is a pretty interesting interaction. Does chem not have power and
is trying to make some healing chems? you can provide power for them for
a bit, but they better hurry!


## Changelog
🆑
add: Added the remote power AI disk
code: made it possible to easily add new AI upgrade disks
/🆑

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
2024-09-19 09:24:43 +00:00

101 lines
2.7 KiB
Plaintext

/datum/techweb_node/robotics
id = TECHWEB_NODE_ROBOTICS
starting_node = TRUE
display_name = "Robotics"
description = "Programmable machines that make our lives lazier."
design_ids = list(
"mechfab",
"botnavbeacon",
"paicard",
)
/datum/techweb_node/exodrone
id = TECHWEB_NODE_EXODRONE
display_name = "Exploration Drones"
description = "Adapted arcade machines to covertly harness gamers' skills in controlling real drones for practical purposes."
prereq_ids = list(TECHWEB_NODE_ROBOTICS)
design_ids = list(
"exoscanner_console",
"exoscanner",
"exodrone_console",
"exodrone_launcher",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
// AI root node
/datum/techweb_node/ai
id = TECHWEB_NODE_AI
display_name = "Artificial Intelligence"
description = "Exploration of AI systems, more intelligent than the entire crew put together."
prereq_ids = list(TECHWEB_NODE_ROBOTICS)
design_ids = list(
"aiupload",
"aifixer",
"intellicard",
"mecha_tracking_ai_control",
"borg_ai_control",
"aicore",
"reset_module",
"asimov_module",
"default_module",
"nutimov_module",
"paladin_module",
"robocop_module",
"corporate_module",
"drone_module",
"oxygen_module",
"safeguard_module",
"protectstation_module",
"quarantine_module",
"freeform_module",
"remove_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_1_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE)
/datum/techweb_node/ai/New()
. = ..()
if(HAS_TRAIT(SSstation, STATION_TRAIT_HUMAN_AI))
design_ids -= list(
"aicore",
"borg_ai_control",
"intellicard",
"mecha_tracking_ai_control",
"aifixer",
"aiupload",
)
else if(HAS_TRAIT(SSstation, STATION_TRAIT_UNIQUE_AI))
research_costs[TECHWEB_POINT_TYPE_GENERIC] *= 3
/datum/techweb_node/ai_laws
id = TECHWEB_NODE_AI_LAWS
display_name = "Advanced AI Upgrades"
description = "Delving into sophisticated AI directives, with hopes that they won't lead to humanity's extinction."
prereq_ids = list(TECHWEB_NODE_AI)
design_ids = list(
"asimovpp_module",
"paladin_devotion_module",
"dungeon_master_module",
"painter_module",
"ten_commandments_module",
"hippocratic_module",
"maintain_module",
"liveandletlive_module",
"reporter_module",
"yesman_module",
"hulkamania_module",
"peacekeeper_module",
"overlord_module",
"tyrant_module",
"antimov_module",
"balance_module",
"thermurderdynamic_module",
"damaged_module",
"freeformcore_module",
"onehuman_module",
"purge_module",
"ai_power_upgrade"
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_COMMAND)