From 2a01bbbdc5a5115cc1c6d80416ff5ff3d09cac30 Mon Sep 17 00:00:00 2001 From: Joan Lung Date: Thu, 24 Nov 2016 15:16:45 -0500 Subject: [PATCH] Clockcult AIs with borgs 'slaved' to them will convert them when hacking via the robotics console (#21646) * Clockcult AIs with borgs 'slaved' to them will convert them when hacking via the robotics console * leeeet's make this more obvious * " * this is okay i guess --- code/game/machinery/computer/robot.dm | 22 ++++++++++++++++------ code/modules/mob/living/silicon/silicon.dm | 2 +- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index f22497b08c2..3da164c0c4d 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -60,7 +60,9 @@ else dat += " Independent from AI |" if(issilicon(user) || IsAdminGhost(user)) - if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate)) + if(is_servant_of_ratvar(user) && user != R) + dat += "(Convert) " + else if(((issilicon(user) && is_special_character(user)) || IsAdminGhost(user)) && !R.emagged && (user != R || R.syndicate)) dat += "(Hack) " dat += "([R.canmove ? "Lockdown" : "Release"]) " dat += "(Destroy)" @@ -99,7 +101,7 @@ else if (href_list["killbot"]) if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["killbot"]) + var/mob/living/silicon/robot/R = locate(href_list["killbot"]) in silicon_mobs if(can_control(usr, R)) var/choice = input("Are you certain you wish to detonate [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) @@ -119,7 +121,7 @@ else if (href_list["stopbot"]) if(src.allowed(usr)) - var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) + var/mob/living/silicon/robot/R = locate(href_list["stopbot"]) in silicon_mobs if(can_control(usr, R)) var/choice = input("Are you certain you wish to [R.canmove ? "lock down" : "release"] [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm" && can_control(usr, R) && !..()) @@ -135,14 +137,22 @@ else if (href_list["magbot"]) if((issilicon(usr) && is_special_character(usr)) || IsAdminGhost(usr)) - var/mob/living/silicon/robot/R = locate(href_list["magbot"]) - if(istype(R) && !R.emagged && ((R.syndicate && R == usr)|| R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) + var/mob/living/silicon/robot/R = locate(href_list["magbot"]) in silicon_mobs + if(istype(R) && !R.emagged && ((R.syndicate && R == usr) || R.connected_ai == usr || IsAdminGhost(usr)) && !R.scrambledcodes && can_control(usr, R)) log_game("[key_name(usr)] emagged [R.name] using robotic console!") - message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)]. using robotic console!") + message_admins("[key_name_admin(usr)] emagged cyborg [key_name_admin(R)] using robotic console!") R.SetEmagged(1) if(is_special_character(R)) R.verbs += /mob/living/silicon/robot/proc/ResetSecurityCodes + else if(href_list["convert"]) + if(issilicon(usr) && is_special_character(usr)) + var/mob/living/silicon/robot/R = locate(href_list["convert"]) in silicon_mobs + if(istype(R) && !is_servant_of_ratvar(R) && is_servant_of_ratvar(usr) && R.connected_ai == usr) + log_game("[key_name(usr)] converted [R.name] using robotic console!") + message_admins("[key_name_admin(usr)] converted cyborg [key_name_admin(R)] using robotic console!") + add_servant_of_ratvar(R) + else if (href_list["killdrone"]) if(src.allowed(usr)) var/mob/living/simple_animal/drone/D = locate(href_list["killdrone"]) diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm index fe2f2c5a5d1..e06a6937d01 100644 --- a/code/modules/mob/living/silicon/silicon.dm +++ b/code/modules/mob/living/silicon/silicon.dm @@ -39,7 +39,7 @@ /mob/living/silicon/New() ..() - silicon_mobs |= src + silicon_mobs += src var/datum/atom_hud/data/diagnostic/diag_hud = huds[DATA_HUD_DIAGNOSTIC] diag_hud.add_to_hud(src) diag_hud_set_status()