diff --git a/SQL/paradise_schema.sql b/SQL/paradise_schema.sql
index ed0845ed33f..7a2f396d89d 100644
--- a/SQL/paradise_schema.sql
+++ b/SQL/paradise_schema.sql
@@ -275,6 +275,7 @@ CREATE TABLE `player` (
`show_ghostitem_attack` smallint(4) DEFAULT '1',
`lastchangelog` varchar(32) NOT NULL DEFAULT '0',
`windowflashing` smallint(4) DEFAULT '1',
+ `ghost_anonsay` tinyint(1) DEFAULT '0',
`exp` mediumtext,
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
diff --git a/SQL/paradise_schema_prefixed.sql b/SQL/paradise_schema_prefixed.sql
index 216082157d4..7c4f0388a4c 100644
--- a/SQL/paradise_schema_prefixed.sql
+++ b/SQL/paradise_schema_prefixed.sql
@@ -274,6 +274,7 @@ CREATE TABLE `SS13_player` (
`show_ghostitem_attack` smallint(4) DEFAULT '1',
`lastchangelog` varchar(32) NOT NULL DEFAULT '0',
`windowflashing` smallint(4) DEFAULT '1',
+ `ghost_anonsay` tinyint(1) DEFAULT '0',
`exp` mediumtext,
PRIMARY KEY (`id`),
UNIQUE KEY `ckey` (`ckey`)
diff --git a/code/modules/client/preference/preferences.dm b/code/modules/client/preference/preferences.dm
index c9b3127094b..629c48d7c6d 100644
--- a/code/modules/client/preference/preferences.dm
+++ b/code/modules/client/preference/preferences.dm
@@ -95,6 +95,8 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
var/UI_style_alpha = 255
var/windowflashing = TRUE
+ //ghostly preferences
+ var/ghost_anonsay = 0
//character preferences
var/real_name //our character's name
@@ -444,6 +446,7 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
dat += "Ghost ears: [(toggles & CHAT_GHOSTEARS) ? "Nearest Creatures" : "All Speech"]
"
dat += "Ghost sight: [(toggles & CHAT_GHOSTSIGHT) ? "Nearest Creatures" : "All Emotes"]
"
dat += "Ghost radio: [(toggles & CHAT_GHOSTRADIO) ? "Nearest Speakers" : "All Chatter"]
"
+ dat += "Deadchat anonymity: [ghost_anonsay ? "Anonymous" : "Not Anonymous"]
"
dat += "
"
dat += "Special Role Settings"
@@ -1994,6 +1997,9 @@ var/global/list/special_role_times = list( //minimum age (in days) for accounts
if("ghost_radio")
toggles ^= CHAT_GHOSTRADIO
+ if("ghost_anonsay")
+ ghost_anonsay = !ghost_anonsay
+
if("save")
save_preferences(user)
save_character(user)
diff --git a/code/modules/client/preference/preferences_mysql.dm b/code/modules/client/preference/preferences_mysql.dm
index 8f1b11b5ca6..7791159c821 100644
--- a/code/modules/client/preference/preferences_mysql.dm
+++ b/code/modules/client/preference/preferences_mysql.dm
@@ -15,7 +15,8 @@
show_ghostitem_attack,
lastchangelog,
exp,
- windowflashing
+ windowflashing,
+ ghost_anonsay
FROM [format_table_name("player")]
WHERE ckey='[C.ckey]'"}
)
@@ -44,6 +45,7 @@
lastchangelog = query.item[13]
exp = query.item[14]
windowflashing = text2num(query.item[15])
+ ghost_anonsay = text2num(query.item[16])
//Sanitize
ooccolor = sanitize_hexcolor(ooccolor, initial(ooccolor))
@@ -60,6 +62,7 @@
lastchangelog = sanitize_text(lastchangelog, initial(lastchangelog))
exp = sanitize_text(exp, initial(exp))
windowflashing = sanitize_integer(windowflashing, 0, 1, initial(windowflashing))
+ ghost_anonsay = sanitize_integer(ghost_anonsay, 0, 1, initial(ghost_anonsay))
return 1
/datum/preferences/proc/save_preferences(client/C)
@@ -84,7 +87,8 @@
volume='[volume]',
nanoui_fancy='[nanoui_fancy]',
show_ghostitem_attack='[show_ghostitem_attack]',
- lastchangelog='[lastchangelog]'
+ lastchangelog='[lastchangelog]',
+ ghost_anonsay='[ghost_anonsay]'
WHERE ckey='[C.ckey]'"}
)
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index db6ef63ad22..75ff52b6478 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -22,7 +22,6 @@ var/list/image/ghost_darkness_images = list() //this is a list of images for thi
//Note that this is not a reliable way to determine if admins started as observers, since they change mobs a lot.
universal_speak = 1
var/atom/movable/following = null
- var/anonsay = 0
var/image/ghostimage = null //this mobs ghost image, for deleting and stuff
var/ghostvision = 1 //is the ghost able to see things humans can't?
var/seedarkness = 1
@@ -596,15 +595,12 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
//END TELEPORT HREF CODE
/mob/dead/observer/verb/toggle_anonsay()
+ set name = "Toggle Anonymous Dead-chat"
set category = "Ghost"
- set name = "Toggle Anonymous Chat"
set desc = "Toggles showing your key in dead chat."
-
- src.anonsay = !src.anonsay
- if(anonsay)
- to_chat(src, "Your key won't be shown when you speak in dead chat.")
- else
- to_chat(src, "Your key will be publicly visible again.")
+ client.prefs.ghost_anonsay = !client.prefs.ghost_anonsay
+ to_chat(src, "As a ghost, your key will [(client.prefs.ghost_anonsay) ? "no longer" : "now"] be shown when you speak in dead chat.")
+ client.prefs.save_preferences(src)
/mob/dead/observer/verb/toggle_ghostsee()
set name = "Toggle Ghost Vision"
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 483b765b65e..e36dc9ce494 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -423,9 +423,9 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HARM)
if(istype(subject, /mob/dead/observer))
DM = subject
if(check_rights(R_ADMIN|R_MOD,0,M)) // What admins see
- lname = "[keyname][(DM && DM.anonsay) ? "*" : (DM ? "" : "^")] ([name])"
+ lname = "[keyname][(DM && DM.client && DM.client.prefs.ghost_anonsay) ? "*" : (DM ? "" : "^")] ([name])"
else
- if(DM && DM.anonsay) // If the person is actually observer they have the option to be anonymous
+ if(DM && DM.client && DM.client.prefs.ghost_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])"
|