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()