diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index c1d3aecb021..b352cb09ccd 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -20,6 +20,11 @@
keyslot1 = new /obj/item/device/encryptionkey/
recalculateChannels()
+/obj/item/device/radio/headset/talk_into(mob/living/M as mob, message, channel)
+ if (!listening)
+ return
+ ..()
+
/obj/item/device/radio/headset/receive_range(freq, level)
if(ishuman(src.loc))
var/mob/living/carbon/human/H = src.loc
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index c3c811e82eb..01eb03a4a17 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -60,7 +60,7 @@
on = 0
else
var/area/A = src.loc.loc
- if(!A || !isarea(A) || !A.master)
+ if(!A || !isarea(A) || !A.master || emped)
on = 0
else
on = A.master.powered(EQUIP) // set "on" to the power status
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 8d08d67dcc5..97ed76e4f90 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -24,6 +24,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/subspace_transmission = 0
var/syndie = 0//Holder to see if it's a syndicate encrpyed radio
var/maxf = 1499
+ var/emped = 0 // since radios don't use machinery stat binary flags they get a seperate variable
// "Example" = FREQ_LISTENING|FREQ_BROADCASTING
flags = FPRINT | CONDUCT | TABLEPASS
slot_flags = SLOT_BELT
@@ -83,11 +84,14 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
var/dat = ""
- if(!istype(src, /obj/item/device/radio/headset)) //Headsets dont get a mic button
- dat += "Microphone: [broadcasting ? "Engaged" : "Disengaged"]
"
-
- dat += {"
+ if(!istype(src, /obj/item/device/radio/headset))
+ dat += {"
+ Microphone: [broadcasting ? "Engaged" : "Disengaged"]
Speaker: [listening ? "Engaged" : "Disengaged"]
+ "}
+ else //Headsets dont get a mic button, speaker controls both
+ dat += "Power: [listening ? "Engaged" : "Disengaged"]
"
+ dat += {"
Frequency:
-
-
@@ -116,8 +120,7 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
/obj/item/device/radio/proc/text_sec_channel(var/chan_name, var/chan_stat)
var/list = !!(chan_stat&FREQ_LISTENING)!=0
return {"
- [chan_name]
- Speaker: [list ? "Engaged" : "Disengaged"]
+ [chan_name]: [list ? "Engaged" : "Disengaged"]
"}
/obj/item/device/radio/Topic(href, href_list)
@@ -223,6 +226,8 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
//world << "DEBUG: channel=\"[channel]\" switching to \"[channels[1]]\""
channel = channels[1]
connection = secure_radio_connections[channel]
+ if (!channels[channel]) // if the channel is turned off, don't broadcast
+ return
else
connection = radio_connection
channel = null
@@ -662,10 +667,20 @@ var/GLOBAL_RADIO_TYPE = 1 // radio type to use
else return
/obj/item/device/radio/emp_act(severity)
+ if (emped == 1) //
+ return
+ if (listening && ismob(loc)) // if the radio is turned on and on someone's person they notice
+ loc << "\The [src] overloads."
broadcasting = 0
listening = 0
for (var/ch_name in channels)
channels[ch_name] = 0
+ on = 0
+ spawn(200)
+ emped = 0
+ if (!istype(src, /obj/item/device/radio/intercom)) // intercoms will turn back on on their own
+ on = 1
+ emped = 1
..()
///////////////////////////////
diff --git a/html/changelog.html b/html/changelog.html
index 9b9e9af221c..687992138a6 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -62,6 +62,14 @@ should be listed in the changelog upon commit tho. Thanks. -->
+