Ghosts/observers now have the option to be anonymous in deadchat.

It is a ghost-time preference that doesn't get saved. Admins see anonymous ghosts with a * next to their key. People talking in dead bodies are now always seen only with the name of their body (admins see their keys with a ^).
This commit is contained in:
Amunak
2014-12-04 11:46:31 +01:00
parent 9fe0cdac28
commit 39c6e3e431
2 changed files with 31 additions and 5 deletions

View File

@@ -22,6 +22,7 @@
universal_speak = 1
var/atom/movable/following = null
var/admin_ghosted = 0
var/anonsay = 0
/mob/dead/observer/New(mob/body)
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
@@ -588,8 +589,19 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
toggled_invisible = world.time
visible_message("<span class='emote'>It fades from sight...</span>", "<span class='info'>You are now invisible</span>")
else
src << "<span class='info>You are now visible</span>"
src << "<span class='info'>You are now visible</span>"
invisibility = invisibility == INVISIBILITY_OBSERVER ? 0 : INVISIBILITY_OBSERVER
// Give the ghost a cult icon which should be visible only to itself
toggle_icon("cult")
/mob/dead/observer/verb/toggle_anonsay()
set category = "Ghost"
set name = "Toggle Anonymous Chat"
set desc = "Toggles showing your key in dead chat."
src.anonsay = !src.anonsay
if(anonsay)
src << "<span class='info'>Your key won't be shown when you speak in dead chat.</span>"
else
src << "<span class='info'>Your key will be publicly visible again.</span>"

View File

@@ -471,9 +471,10 @@ proc/is_blind(A)
//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
var/keyname
if(subject && subject.client)
var/client/C = subject.client
var/keyname = (C.holder && C.holder.fakekey) ? C.holder.fakekey : C.key
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
@@ -485,17 +486,30 @@ proc/is_blind(A)
name = "[realname] died as [mindname]"
else
name = realname
name = "<span class='name'>[keyname] ([name])</span> "
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 = ""
var/follow
var/lname
if(subject)
if(subject != M)
follow = "(<a href='byond://?src=\ref[M];track=\ref[subject]'>follow</a>) "
if(M.stat != DEAD && M.client.holder)
follow = "(<a href='?src=\ref[M.client.holder];adminplayerobservejump=\ref[subject]'>JMP</a>) "
M << "<span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [name][follow][message]</span>"
var/mob/dead/observer/DM
if(istype(subject, /mob/dead/observer))
DM = subject
if(M.client.holder) // What admins see
lname = "[keyname][(DM && DM.anonsay) ? "*" : (DM ? "" : "^")] ([name])"
else
if(DM && DM.anonsay) // If the person is actually observer they have the option to be anonymous
lname = "Ghost of [name]"
else if(DM) // Non-anons
lname = "[keyname] ([name])"
else // Everyone else (dead people who didn't ghost yet, etc.)
lname = name
lname = "<span class='name'>[lname]</span> "
M << "<span class='deadsay'>" + create_text_tag("dead", "DEAD:", M.client) + " [lname][follow][message]</span>"
//Announces that a ghost has joined/left, mainly for use with wizards
/proc/announce_ghost_joinleave(O, var/joined_ghosts = 1, var/message = "")