diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 4c51e5f474..c6a6f508bb 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -302,6 +302,7 @@ var/list/department_radio_keys = list(
var/list/listening
listening = get_mobs_in_view(message_range, src)
+ var/list/onscreen = get_mobs_in_view(7, src)
for(var/mob/M in player_list)
if (!M.client)
continue //skip monkeys and leavers
@@ -370,16 +371,19 @@ var/list/department_radio_keys = list(
for(var/mob/M in hearers(5, src))
if(M != src && is_speaking_radio)
M:show_message("[src] talks into [used_radios.len ? used_radios[1] : "radio"]")
-
+
var/rendered = null
+
if (length(heard_a))
var/message_a = say_quote(message,speaking)
if (italics)
message_a = "[message_a]"
+ var/message_ghost = "[message_a]" // bold so ghosts know the person is in view.
rendered = "[GetVoice()][alt_name] [message_a]"
- for (var/M in heard_a)
+ var/rendered_ghost = "[GetVoice()][alt_name] [message_ghost]"
+ for (var/mob/M in heard_a)
if(hascall(M,"show_message"))
var/deaf_message = ""
var/deaf_type = 1
@@ -388,7 +392,10 @@ var/list/department_radio_keys = list(
else
deaf_message = "You cannot hear yourself!"
deaf_type = 2 // Since you should be able to hear yourself without looking
- M:show_message(rendered, 2, deaf_message, deaf_type)
+ if (M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTEARS) && M in onscreen)
+ M:show_message(rendered_ghost, 2, deaf_message, deaf_type)
+ else
+ M:show_message(rendered, 2, deaf_message, deaf_type)
M << speech_bubble
if (length(heard_b))