diff --git a/code/game/objects/radio/radio.dm b/code/game/objects/radio/radio.dm index a4812ce53cf..1a0307fd97c 100644 --- a/code/game/objects/radio/radio.dm +++ b/code/game/objects/radio/radio.dm @@ -401,6 +401,17 @@ hear+=M return hear +/obj/item/device/radio/proc/borg(mob/user as mob, op) + if(!(issilicon(user))) + return + for (var/ch_name in channels) + radio_controller.remove_object(src, radiochannels[ch_name]) + secure_radio_connections = new + channels = op + for (var/ch_name in op) + secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT) + return + /obj/item/device/radio/examine() set src in view() diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 2313f43b56f..59fc7a2dbb0 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -71,6 +71,7 @@ hands.icon_state = "standard" icon_state = "robot" modtype = "Stand" + radio.borg(src, list()) if("Service") module = new /obj/item/weapon/robot_module/butler(src) @@ -87,12 +88,14 @@ else icon_state = "Service2" modtype = "Butler" + radio.borg(src, list()) if("Miner") module = new /obj/item/weapon/robot_module/miner(src) hands.icon_state = "miner" icon_state = "Miner" modtype = "Miner" + radio.borg(src, list("Mining" = 1)) if("Medical") var/sprite = input(src,"Chassis Style", "Chassis Style", "Cancel") in list("Humanoid","Non-Humanoid") @@ -103,6 +106,7 @@ if (sprite == "Non-Humanoid") src.icon_state = "surgeon" modtype = "Med" + radio.borg(src, list("Medical" = 1)) if("Security") var/sprite = input(src,"Chassis Style", "Chassis Style", "Cancel") in list("Humanoid","Non-Humanoid") @@ -113,6 +117,7 @@ if (sprite == "Non-Humanoid") src.icon_state = "bloodhound" modtype = "Sec" + radio.borg(src, list("Security" = 1)) if("Engineering") var/sprite = input(src,"Chassis Style", "Chassis Style", "Cancel") in list("Humanoid","Non-Humanoid") @@ -123,6 +128,7 @@ if (sprite == "Non-Humanoid") src.icon_state = "landmate" modtype = "Eng" + radio.borg(src, list("Engineering" = 1)) if("Janitor") var/sprite = input(src,"Chassis Style", "Chassis Style", "Cancel") in list("Humanoid","Non-Humanoid") @@ -133,6 +139,7 @@ if (sprite == "Non-Humanoid") src.icon_state = "mopgearrex" modtype = "Jan" + radio.borg(src, list()) overlays -= "eyes" //Takes off the eyes that it started with updateicon() diff --git a/code/modules/mob/living/silicon/say.dm b/code/modules/mob/living/silicon/say.dm index 6108dd392ba..53577373c05 100644 --- a/code/modules/mob/living/silicon/say.dm +++ b/code/modules/mob/living/silicon/say.dm @@ -26,9 +26,13 @@ message = copytext(message, 3) message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) holopad_talk(message) - else//Will not allow anyone by an active AI to use this function. - src << "This function is not available to you." - return + else if(istype(src,/mob/living/silicon/robot)) //Will not allow anyone by an active AI to use this function. + message = copytext(message, 3) + message = trim(copytext(sanitize(message), 1, MAX_MESSAGE_LEN)) + var/mob/living/silicon/robot/R = src + R.radio.talk_into(src, message, "department") + else + src << "You cannot use that channel." else return ..(message) else