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 0855958b6e1..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:
-
-
@@ -663,14 +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
- frequency += pick(-1,1)*2*rand(1,5) // shift the frequency a bit
- set_frequency(sanitize_frequency(frequency))
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 91e220b48fb..664042a33ff 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -56,7 +56,7 @@ should be listed in the changelog upon commit tho. Thanks. -->