From 863cea572a4314109c756e6f04fa8704b66f4e89 Mon Sep 17 00:00:00 2001 From: skull132 Date: Thu, 5 Mar 2015 17:13:14 +0200 Subject: [PATCH] Radios for Posibrains General communication device. Handed in for general testing, reference ehancement #400. Known bugs: * Mob's own speech scrubbed out with asterisks --- .../mob/living/carbon/brain/posibrain.dm | 31 +++++++++++++++++++ code/modules/mob/living/carbon/brain/say.dm | 6 +++- 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/brain/posibrain.dm b/code/modules/mob/living/carbon/brain/posibrain.dm index 34078cee..59f83deb 100644 --- a/code/modules/mob/living/carbon/brain/posibrain.dm +++ b/code/modules/mob/living/carbon/brain/posibrain.dm @@ -14,6 +14,8 @@ locked = 0 mecha = null//This does not appear to be used outside of reference in mecha.dm. + var/obj/item/device/radio/radio = null//Let's give it a radio. + /obj/item/device/mmi/posibrain/attack_self(mob/user as mob) if(brainmob && !brainmob.key && searching == 0) @@ -142,4 +144,33 @@ // src.brainmob.brain_op_stage = 4.0 dead_mob_list -= src.brainmob + radio = new(src)//Spawns a radio inside the MMI. + radio.broadcasting = 0//So it's broadcasting from the start. + ..() + +/obj/item/device/mmi/posibrain/verb/Toggle_Broadcasting() //totally not nicking from certain places. Yay. + set name = "Toggle Broadcasting" + set desc = "Toggle broadcasting channel on or off." + set category = "Posi" + set src = usr.loc//In user location, or in MMI in this case. + set popup_menu = 0//Will not appear when right clicking. + + if(brainmob.stat)//Only the brainmob will trigger these so no further check is necessary. + brainmob << "Can't do that while incapacitated or dead." + + radio.broadcasting = radio.broadcasting==1 ? 0 : 1 + brainmob << "\blue Radio is [radio.broadcasting==1 ? "now" : "no longer"] broadcasting." + +/obj/item/device/mmi/posibrain/verb/Toggle_Listening() + set name = "Toggle Listening" + set desc = "Toggle listening channel on or off." + set category = "Posi" + set src = usr.loc + set popup_menu = 0 + + if(brainmob.stat) + brainmob << "Can't do that while incapacitated or dead." + + radio.listening = radio.listening==1 ? 0 : 1 + brainmob << "\blue Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast." \ No newline at end of file diff --git a/code/modules/mob/living/carbon/brain/say.dm b/code/modules/mob/living/carbon/brain/say.dm index 6f8de199..d205e586 100644 --- a/code/modules/mob/living/carbon/brain/say.dm +++ b/code/modules/mob/living/carbon/brain/say.dm @@ -3,7 +3,7 @@ if (silent) return - if(!(container && (istype(container, /obj/item/device/mmi) || istype(container, /obj/item/device/mmi/posibrain)))) + if(!(container && (istype(container, /obj/item/device/mmi)))) return //No MMI, can't speak, bucko./N else if(prob(emp_damage*4)) @@ -15,4 +15,8 @@ var/obj/item/device/mmi/radio_enabled/R = container if(R.radio) spawn(0) R.radio.hear_talk(src, sanitize(message)) + if(istype(container, /obj/item/device/mmi/posibrain))//For them posibrains that now get radios. Apparently. + var/obj/item/device/mmi/posibrain/R = container + if(R.radio) + spawn(0) R.radio.hear_talk(src, sanitize(message)) ..() \ No newline at end of file