Files
Bubberstation/code/modules/research/techweb/nodes/robo_nodes.dm
Odairu ffc6ff0790 Adds a new station trait Head of Security AI (#3155)
## About The Pull Request
This PR adds a new station trait that does the following
- Disables HoS as a job
- Lowers Security Officer slots from 5 to 2
- Silicons default to Robocop lawset and have access to sec borgs
- Similar to AI law divergency, law boards are removed from the upload
- The AI is barred from antag status at a code level (this does not stop
subversion but it does stop malf)
## Why It's Good For The Game
The problem with security borgs was that they would often follow
spacelaw instead of their actual laws, it was suggested to me that I
make a station trait that puts them on robocop and allows them to pick
the model, this has the benefit of making them not available every
round, but still available sometimes outside of admin bus. Tweaks and
changes for things like how common this trait is can be adjusted in the
future of course!
## Proof Of Testing



https://github.com/user-attachments/assets/de849f59-517e-4a7b-bc11-79b512142717
<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
add: adds a new station trait - HoS AI
/🆑

---------

Co-authored-by: The Sharkening <95130227+StrangeWeirdKitten@users.noreply.github.com>
Co-authored-by: LT3 <83487515+lessthnthree@users.noreply.github.com>
2025-03-31 14:49:11 -04:00

102 lines
2.8 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(
"botnavbeacon",
"mechfab",
"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(
"exodrone_console",
"exodrone_launcher",
"exoscanner",
"exoscanner_console",
)
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(
"aicore",
"aifixer",
"aiupload",
"asimov_module",
"borg_ai_control",
"corporate_module",
"default_module",
"drone_module",
"freeform_module",
"intellicard",
"mecha_tracking_ai_control",
"nutimov_module",
"oxygen_module",
"paladin_module",
"protectstation_module",
"quarantine_module",
"remove_module",
"reset_module",
"robocop_module",
"safeguard_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",
"aifixer",
"aiupload",
"borg_ai_control",
"intellicard",
"mecha_tracking_ai_control",
)
else if(HAS_TRAIT(SSstation, STATION_TRAIT_UNIQUE_AI) || HAS_TRAIT(SSstation, STATION_TRAIT_HOS_AI)) //Bubber edit HoS AI station trait
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(
"ai_power_upgrade",
"antimov_module",
"asimovpp_module",
"balance_module",
"damaged_module",
"dungeon_master_module",
"freeformcore_module",
"hippocratic_module",
"hulkamania_module",
"liveandletlive_module",
"maintain_module",
"onehuman_module",
"overlord_module",
"painter_module",
"paladin_devotion_module",
"peacekeeper_module",
"purge_module",
"reporter_module",
"ten_commandments_module",
"thermurderdynamic_module",
"thinkermov_module",
"tyrant_module",
"yesman_module",
)
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = TECHWEB_TIER_3_POINTS)
announce_channels = list(RADIO_CHANNEL_SCIENCE, RADIO_CHANNEL_COMMAND)