diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 1e012d10027..02a146fac31 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -193,7 +193,6 @@ for (var/datum/computer_file/program/messenger/app in data["targets"]) if(!QDELETED(app)) app.receive_message(src) - data["targets"] = null // Request Console signal datum /datum/signal/subspace/messaging/rc/broadcast() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 563de90377d..bc643cc9d45 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -473,14 +473,20 @@ GLOBAL_LIST_EMPTY(preferences_datums) * Arguments: * * client/prefs_holder - the client to get the chat_toggles pref from. */ -/proc/get_chat_toggles(client/prefs_holder) - if(!prefs_holder) - return FALSE - if(prefs_holder && !prefs_holder?.prefs) - stack_trace("[prefs_holder?.mob] ([prefs_holder?.ckey]) had null prefs, which shouldn't be possible!") - return FALSE +/proc/get_chat_toggles(client/target) + if(ismob(target)) + var/mob/target_mob = target + target = target_mob.client - return prefs_holder?.prefs.chat_toggles + if(isnull(target)) + return NONE + + var/datum/preferences/preferences = target.prefs + if(isnull(preferences)) + stack_trace("[key_name(target)] preference datum was null") + return NONE + + return preferences.chat_toggles /// Sanitizes the preferences, applies the randomization prefs, and then applies the preference to the human mob. /datum/preferences/proc/safe_transfer_prefs_to(mob/living/carbon/human/character, icon_updates = TRUE, is_antag = FALSE) diff --git a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm index 5aeb529494f..33b9b454401 100644 --- a/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm +++ b/code/modules/modular_computers/file_system/programs/messenger/messenger_program.dm @@ -608,10 +608,11 @@ // Show it to ghosts var/ghost_message = span_game_say("[span_name("[sender]")] [rigged ? "(as [span_name(fake_name)]) Rigged " : ""]PDA Message --> [span_name("[signal.format_target()]")]: \"[signal.format_message()]\"") - var/list/ghosts = GLOB.dead_player_list + GLOB.current_observers_list - for(var/mob/player_mob as anything in ghosts) - if(isobserver(player_mob) && (get_chat_toggles(player_mob.client) & CHAT_GHOSTPDA)) - to_chat(player_mob, "[FOLLOW_LINK(player_mob, sender)] [ghost_message]") + var/list/message_listeners = GLOB.dead_player_list + GLOB.current_observers_list + for(var/mob/listener as anything in message_listeners) + if(!(get_chat_toggles(listener) & CHAT_GHOSTPDA)) + continue + to_chat(listener, "[FOLLOW_LINK(listener, sender)] [ghost_message]") to_chat(sender, span_info("PDA message sent to [signal.format_target()]: \"[message]\""))