From 65c963c109350eeb9e257732df6e1904738a276b Mon Sep 17 00:00:00 2001 From: Miauw Date: Sun, 7 Sep 2014 14:29:58 +0200 Subject: [PATCH] Adds a separate preference for whispers. Fixed #4658 Fixed #4712 --- code/__DEFINES/preferences.dm | 3 ++- code/modules/client/preferences.dm | 4 ++++ code/modules/client/preferences_toggles.dm | 9 +++++++++ code/modules/mob/living/carbon/human/whisper.dm | 5 +++-- code/modules/mob/living/say.dm | 2 +- 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 9e0496a9249..1472a045d2d 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -13,8 +13,9 @@ #define MEMBER_PUBLIC 1024 #define CHAT_PULLR 2048 #define INTENT_STYLE 4096 +#define CHAT_GHOSTWHISPER 8192 -#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE) +#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|CHAT_OOC|CHAT_DEAD|CHAT_GHOSTEARS|CHAT_GHOSTSIGHT|CHAT_PRAYER|CHAT_RADIO|MEMBER_PUBLIC|CHAT_PULLR|INTENT_STYLE|CHAT_GHOSTWHISPER) #define BE_TRAITOR 1 #define BE_OPERATIVE 2 diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 4e808277dc6..469cf18b1ad 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -217,6 +217,7 @@ datum/preferences dat += "Play lobby music: [(toggles & SOUND_LOBBY) ? "Yes" : "No"]
" dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
" dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
" + dat += "Ghost whispers: [(toggles & CHAT_GHOSTWHISPER) ? "Nearest Creatures" : "All Speech"]
" dat += "Pull requests: [(toggles & CHAT_PULLR) ? "Yes" : "No"]
" if(config.allow_Metadata) @@ -738,6 +739,9 @@ datum/preferences if("ghost_sight") toggles ^= CHAT_GHOSTSIGHT + if("ghost_whispers") + toggles ^= CHAT_GHOSTWHISPER + if("pull_requests") toggles ^= CHAT_PULLR diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm index 360a0fcf481..7e33cebffd0 100644 --- a/code/modules/client/preferences_toggles.dm +++ b/code/modules/client/preferences_toggles.dm @@ -17,6 +17,15 @@ prefs.save_preferences() feedback_add_details("admin_verb","TGS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! +/client/verb/toggle_ghost_whispers() + set name = "Show/Hide GhostWhispers" + set category = "Preferences" + set desc = ".Toggle between hearing all whispers, and only whispers of nearby mobs" + prefs.toggles ^= CHAT_GHOSTWHISPER + src << "As a ghost, you will now [(prefs.toggles & CHAT_GHOSTWHISPER) ? "see all whispers in the world" : "only see whispers from nearby mobs"]." + prefs.save_preferences() + feedback_add_details("admin_verb","TGW") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! + /client/proc/toggle_hear_radio() set name = "Show/Hide RadioChatter" set category = "Preferences" diff --git a/code/modules/mob/living/carbon/human/whisper.dm b/code/modules/mob/living/carbon/human/whisper.dm index 7423fdf456e..f3b6baae554 100644 --- a/code/modules/mob/living/carbon/human/whisper.dm +++ b/code/modules/mob/living/carbon/human/whisper.dm @@ -42,10 +42,11 @@ var/list/listening_dead = list() for(var/mob/M in player_list) - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTEARS) && client) + if(M.stat == DEAD && ((M.client.prefs.toggles & CHAT_GHOSTWHISPER) || (get_dist(M, src) <= 7))) listening_dead |= M - var/list/listening = get_hear(1, src) | listening_dead + var/list/listening = get_hear(1, src) + listening |= listening_dead var/list/eavesdropping = hearers(2, src) eavesdropping -= listening var/list/watching = hearers(5, src) diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index c325bc9836d..73f02e28830 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -143,7 +143,7 @@ var/list/department_radio_keys = list( var/list/listening = get_hearers_in_view(message_range, source) var/list/listening_dead = list() for(var/mob/M in player_list) - if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_GHOSTEARS) && client) // client is so that ghosts don't have to listen to mice + if(M.stat == DEAD && ((M.client.prefs.toggles & CHAT_GHOSTEARS) || (get_dist(M, src) <= 7))&& client) // client is so that ghosts don't have to listen to mice listening_dead |= M listening -= listening_dead //so ghosts dont hear stuff twice