diff --git a/code/_globalvars/lists/mobs.dm b/code/_globalvars/lists/mobs.dm
index 57a0746ed28..7c3da2f99c3 100644
--- a/code/_globalvars/lists/mobs.dm
+++ b/code/_globalvars/lists/mobs.dm
@@ -3,7 +3,6 @@ var/list/admins = list() //all clients whom are admins
var/list/deadmins = list() //all clients who have used the de-admin verb.
var/list/directory = list() //all ckeys with associated client
var/list/stealthminID = list() //reference list with IDs that store ckeys, for stealthmins
-var/global/list/current_watchlist = list() //stores players that are currently online and in the watchlist
//Since it didn't really belong in any other category, I'm putting this here
//This is for procs to replace all the goddamn 'in world's that are chilling around the code
diff --git a/code/controllers/subsystem/garbage.dm b/code/controllers/subsystem/garbage.dm
index 2204b66004c..26dfbfee0ad 100644
--- a/code/controllers/subsystem/garbage.dm
+++ b/code/controllers/subsystem/garbage.dm
@@ -567,7 +567,6 @@ var/datum/subsystem/garbage_collector/SSgarbage
SearchVar(deadmins)
SearchVar(directory)
SearchVar(stealthminID)
- SearchVar(current_watchlist)
SearchVar(player_list)
SearchVar(mob_list)
SearchVar(living_mob_list)
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index e0f3eb437bf..4fbd792b90f 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -9,7 +9,6 @@
Show Job Debug
Admin Log
Show Admin List
- Show online players in the watchlist
"}
@@ -120,13 +119,6 @@
dat += "[ckey] - [D.rank.name]
"
usr << browse(dat, "window=showadmins;size=600x500")
- if("show_current_watchlist")
- var/dat = "Watchlist:
"
- if(current_watchlist)
- for(var/ckey in current_watchlist)
- dat += "[ckey] - [current_watchlist[ckey]]"
- usr << browse(dat, "window=showcurrentwatchlist;size=600x500")
-
if("tdomereset")
if(!check_rights(R_ADMIN))
return
diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm
index 7411de7fd29..0b6dddedc1a 100644
--- a/code/modules/admin/sql_message_system.dm
+++ b/code/modules/admin/sql_message_system.dm
@@ -154,7 +154,7 @@
message_admins("[key_name_admin(usr)] has toggled [target_ckey]'s [type] made by [admin_ckey] to [secret ? "not secret" : "secret"]")
browse_messages(target_ckey = target_ckey)
-/proc/browse_messages(type, target_ckey, index, linkless = 0)
+/proc/browse_messages(type, target_ckey, index, linkless = 0, filter)
if(!dbcon.IsConnected())
usr << "Failed to establish database connection."
return
@@ -176,7 +176,11 @@
output += "\[Add memo\]"
else if(type == "watchlist entry")
output += "Watchlist entries
"
- output += "\[Add watchlist entry\]"
+ output += "\[Add watchlist entry\]"
+ if(filter)
+ output += "|\[Unfilter clients\]"
+ else
+ output += "|\[Filter offline clients\]"
output += ruler
var/DBQuery/query_get_type_messages = dbcon.NewQuery("SELECT id, targetckey, adminckey, text, timestamp, server, lasteditor FROM [format_table_name("messages")] WHERE type = '[type]'")
if(!query_get_type_messages.Execute())
@@ -186,6 +190,8 @@
while(query_get_type_messages.NextRow())
var/id = query_get_type_messages.item[1]
var/t_ckey = query_get_type_messages.item[2]
+ if(type == "watchlist entry" && filter && !(t_ckey in directory))
+ continue
var/admin_ckey = query_get_type_messages.item[3]
var/text = query_get_type_messages.item[4]
var/timestamp = query_get_type_messages.item[5]
@@ -229,13 +235,20 @@
data += " \[Delete\]"
if(type == "note")
data += " [secret ? "\[Secret\]" : "\[Not secret\]"]"
- data += " \[Edit\]"
+ if(type == "message sent")
+ data += " Message has been sent"
+ if(editor_ckey)
+ data += "|"
+ else
+ data += " \[Edit\]"
if(editor_ckey)
data += " Last edit by [editor_ckey] (Click here to see edit log)"
data += "
[text]
"
switch(type)
if("message")
messagedata += data
+ if("message sent")
+ messagedata += data
if("watchlist entry")
watchdata += data
if("note")
@@ -303,7 +316,7 @@ proc/get_message_output(type, target_ckey)
log_game("SQL ERROR obtaining id, adminckey, text, timestamp, lasteditor from messages table. Error : \[[err]\]\n")
return
while(query_get_message_output.NextRow())
- var/id = query_get_message_output.item[1]
+ var/message_id = query_get_message_output.item[1]
var/admin_ckey = query_get_message_output.item[2]
var/text = query_get_message_output.item[3]
var/timestamp = query_get_message_output.item[4]
@@ -311,15 +324,19 @@ proc/get_message_output(type, target_ckey)
switch(type)
if("message")
output += "Admin message left by [admin_ckey] on [timestamp]"
- output += "
[text]"
- delete_message(id, 0)
+ output += "
[text]
"
+ var/DBQuery/query_message_read = dbcon.NewQuery("UPDATE [format_table_name("messages")] SET type = 'message sent' WHERE id = [message_id]")
+ if(!query_message_read.Execute())
+ var/err = query_message_read.ErrorMsg()
+ log_game("SQL ERROR updating message type. Error : \[[err]\]\n")
+ return
if("watchlist entry")
message_admins("Notice: [key_name_admin(target_ckey)] is on the watchlist and has just connected - Reason: [text]")
send2irc_adminless_only("Watchlist", "[key_name(target_ckey)] is on the watchlist and has just connected - Reason: [text]")
if("memo")
output += "Memo by [admin_ckey] on [timestamp]"
if(editor_ckey)
- output += "
Last edit by [editor_ckey] (Click here to see edit log)"
+ output += "
Last edit by [editor_ckey] (Click here to see edit log)"
output += "
[text]
"
return output
@@ -368,4 +385,4 @@ this proc can take several minutes to execute fully if converting and cause DD t
world << "Deleting NOTESFILE"
fdel(NOTESFILE)
world << "Finished mass note conversion, remember to turn off AUTOCONVERT_NOTES"*/
-#undef NOTESFILE
\ No newline at end of file
+#undef NOTESFILE
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 1cd42d6eb1f..3ce2157aa55 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1087,6 +1087,9 @@
else if(href_list["showwatch"])
browse_messages("watchlist entry")
+ else if(href_list["showwatchfilter"])
+ browse_messages("watchlist entry", filter = 1)
+
else if(href_list["showmessageckey"])
var/target = href_list["showmessageckey"]
browse_messages(target_ckey = target)
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index 67252a405c1..77d6ca571ea 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -2,7 +2,6 @@
SStgui.on_logout(src)
unset_machine()
player_list -= src
- current_watchlist -= ckey
log_access("Logout: [key_name(src)]")
if(admin_datums[src.ckey])
if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.