diff --git a/code/modules/mob/living/simple_animal/friendly/drone.dm b/code/modules/mob/living/simple_animal/friendly/drone.dm
index 7009e21f6e7..c04cc2f7a47 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone.dm
@@ -136,11 +136,11 @@
/mob/living/simple_animal/drone/IsAdvancedToolUser()
return 1
-/mob/living/simple_animal/drone/binarycheck()
- return 1
-
/mob/living/simple_animal/drone/radio(message, message_mode)
- if(message_mode != MODE_BINARY) //so they can hear binary but can't talk in it
+ if(message_mode == MODE_BINARY)
+ drone_chat(message)
+ return ITALICS | REDUCE_RANGE
+ else
..()
@@ -208,14 +208,24 @@
var/msg = "DRONE PING: [name]: [alert_s] priority alert in [A.name]!"
alert_drones(msg)
-/mob/living/simple_animal/drone/proc/alert_drones(msg)
- for(var/mob/living/simple_animal/drone/D in mob_list)
- if(D.stat != DEAD)
- for(var/F in src.faction)
- if(F in D.faction)
- D << msg
- break
+/mob/living/simple_animal/drone/proc/alert_drones(msg, dead_can_hear = 0)
+ for(var/mob/M in player_list)
+ var/send_msg = 0
+ if(istype(M, /mob/living/simple_animal/drone) && M.stat != DEAD)
+ for(var/F in src.faction)
+ if(F in M.faction)
+ send_msg = 1
+ break
+ else if(dead_can_hear && (M.stat == DEAD) && (M.client.prefs.toggles & CHAT_GHOSTEARS) && !istype(M, /mob/new_player))
+ send_msg = 1
+
+ if(send_msg)
+ M << msg
+
+/mob/living/simple_animal/drone/proc/drone_chat(msg)
+ var/rendered = "DRONE CHAT: [name]: [msg]"
+ alert_drones(rendered, 1)
/mob/living/simple_animal/drone/Login()
..()
@@ -305,7 +315,6 @@
/mob/living/simple_animal/drone/emp_act()
Stun(5)
src << "ER@%R: MME^RY CO#RU9T! R&$b@0tin)..."
- check_laws()
/mob/living/simple_animal/drone/proc/pick_colour()
var/colour = input("Choose your colour!", "Colour", "grey") in list("grey", "blue", "red", "green", "pink", "orange")