From 4da6eeb82b20dc2ea069c4d4d92022d40e9bacef Mon Sep 17 00:00:00 2001 From: Amunak Date: Fri, 28 Nov 2014 12:23:59 +0100 Subject: [PATCH] Dead chat now uses a single proc for broadcast. Improved dchat formatting, added chattags --- code/modules/admin/verbs/deadsay.dm | 12 +---------- code/modules/mob/emote.dm | 19 ++---------------- code/modules/mob/mob_helpers.dm | 31 +++++++++++++++++++++++++++++ code/modules/mob/say.dm | 20 +------------------ 4 files changed, 35 insertions(+), 47 deletions(-) diff --git a/code/modules/admin/verbs/deadsay.dm b/code/modules/admin/verbs/deadsay.dm index d05bb3d9e7..1e03dc1775 100644 --- a/code/modules/admin/verbs/deadsay.dm +++ b/code/modules/admin/verbs/deadsay.dm @@ -35,16 +35,6 @@ if (!msg) return - var/rendered = "DEAD: [stafftype]([src.holder.fakekey ? pick("BADMIN", "hornigranny", "TLF", "scaredforshadows", "KSI", "Silnazi", "HerpEs", "BJ69", "SpoofedEdd", "Uhangay", "Wario90900", "Regarity", "MissPhareon", "LastFish", "unMportant", "Deurpyn", "Fatbeaver") : src.key]) says, \"[msg]\"" - - for (var/mob/M in player_list) - if (istype(M, /mob/new_player)) - continue - - if(M.client && M.client.holder && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to admins who have deadchat toggled on - M.show_message(rendered, 2) - - else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // show the message to regular ghosts who have deadchat toggled on - M.show_message(rendered, 2) + say_dead_direct("[stafftype]([src.holder.fakekey ? src.holder.fakekey : src.key]) says, \"[msg]\"") feedback_add_details("admin_verb","D") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! diff --git a/code/modules/mob/emote.dm b/code/modules/mob/emote.dm index 09418b8bb0..c6171b225b 100644 --- a/code/modules/mob/emote.dm +++ b/code/modules/mob/emote.dm @@ -90,20 +90,5 @@ input = message if(input) - message = "DEAD: [src] [message]" - else - return - - - if(message) - log_emote("Ghost/[src.key] : [message]") - - for(var/mob/M in player_list) - if(istype(M, /mob/new_player)) - continue - - if(M.client && M.client.holder && (M.client.holder.rights & R_ADMIN|R_MOD) && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to admins/mods - M << message - - else if(M.stat == DEAD && (M.client.prefs.toggles & CHAT_DEAD)) // Show the emote to regular ghosts with deadchat toggled on - M.show_message(message, 2) + log_emote("Ghost/[src.key] : [input]") + say_dead_direct(input, src) diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm index 90edb8863a..444c845921 100644 --- a/code/modules/mob/mob_helpers.dm +++ b/code/modules/mob/mob_helpers.dm @@ -465,3 +465,34 @@ proc/is_blind(A) if(get_area(M) == A) mobs += M return mobs + +//Direct dead say used both by emote and say +//It is somewhat messy. I don't know what to do. +//I know you can't see the change, but I rewrote the name code. It is significantly less messy now +/proc/say_dead_direct(var/message, var/mob/subject = null) + var/name + if(subject && subject.client) + var/client/C = subject.client + var/keyname = (C.holder && C.holder.fakekey) ? C.holder.fakekey : C.key + if(C.mob) //Most of the time this is the dead/observer mob; we can totally use him if there is no better name + var/mindname + var/realname = C.mob.real_name + if(C.mob.mind) + mindname = C.mob.mind.name + if(C.mob.mind.original && C.mob.mind.original.real_name) + realname = C.mob.mind.original.real_name + if(mindname && mindname != realname) + name = "[realname] died as [mindname]" + else + name = realname + name = "[keyname] ([name]) " + + for(var/mob/M in player_list) + if(M.client && ((!istype(M, /mob/new_player) && M.stat == DEAD) || (M.client.holder && !is_mentor(M.client))) && (M.client.prefs.toggles & CHAT_DEAD)) + var/follow = "" + if(subject) + if(subject != M) + follow = "(follow) " + if(M.stat != DEAD && M.client.holder) + follow = "(JMP) " + M << "" + create_text_tag("dead", "DEAD:", M.client) + " [name][follow][message]" diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 67ee6152a0..10e6c4266c 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -43,8 +43,6 @@ usr.emote(message) /mob/proc/say_dead(var/message) - var/name = src.real_name - if(say_disabled) //This is here to try to identify lag problems usr << "\red Speech is currently admin-disabled." return @@ -58,23 +56,7 @@ usr << "\red You have deadchat muted." return - if(mind && mind.name) - name = "[mind.name]" - else - name = real_name - if(name != real_name) - name += " (died as [real_name])" - - for(var/mob/M in player_list) - if(istype(M, /mob/new_player)) - continue - if(M.client && (M.stat == DEAD || (M.client.holder && !is_mentor(M.client)) && (M.client.prefs.toggles & CHAT_DEAD))) - var/follow = "" - if(src != M) - follow = " (follow)" - if(M.stat != DEAD && M.client.holder) - follow = " (JMP)" - M << "DEAD: [name][follow] [pick("complains","moans","whines","laments","blubbers")], \"[message]\"" + say_dead_direct("[pick("complains","moans","whines","laments","blubbers")], \"[message]\"", src) /mob/proc/say_understands(var/mob/other,var/datum/language/speaking = null)