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))