diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm
index bb05efc975a..65084617ba1 100644
--- a/code/__DEFINES/preferences.dm
+++ b/code/__DEFINES/preferences.dm
@@ -10,6 +10,7 @@
#define SOUND_INSTRUMENTS 128
#define SOUND_SHIP_AMBIENCE 256
#define SOUND_PRAYERS 512
+#define ANNOUNCE_LOGIN 1024
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS)
@@ -43,4 +44,4 @@
#define BE_GANG 4096
#define BE_SHADOWLING 8192
#define BE_ABDUCTOR 16384
-#define BE_REVENANT 32768
+#define BE_REVENANT 32768
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index ff6f803f5f0..cb111d7c063 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -165,6 +165,9 @@
var/autoconvert_notes = 0 //if all connecting player's notes should attempt to be converted to the database
+ var/announce_admin_logout = 0
+ var/announce_admin_login = 0
+
/datum/configuration/New()
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
for(var/T in L)
@@ -347,6 +350,10 @@
world.log = newlog
if("autoconvert_notes")
config.autoconvert_notes = 1
+ if("announce_admin_logout")
+ config.announce_admin_logout = 1
+ if("announce_admin_login")
+ config.announce_admin_login = 1
else
diary << "Unknown setting in configuration: '[name]'"
diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm
index b4142a70058..2eb84777f6e 100644
--- a/code/modules/admin/admin.dm
+++ b/code/modules/admin/admin.dm
@@ -810,19 +810,14 @@ var/global/floorIsLava = 0
return 1
-/client/proc/adminGreet()
+/client/proc/adminGreet(logout)
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
- var/string = pick(
- "I welcome you to the server [key]!",
- "Happy to see you [key]!",
- "Ah, [key] logged, say hello!",
- "The server welcomes you [key]!",
- "Exceptional! [key] joined us, what an honour!",
- "Another amazing day, because [key] logged, say hi!",
- "Did anyone see? [key] logged, welcome!",
- "Monday to sunday, the server warmly welcomes you [key]!",
- "It's a pleasure to see you [key], greetings!",
- "Not a bad day if [key] joins, welcome, welcome!",
- "Surely it's nice to see you [key], have a heartly welcome!")
- //I really do
- message_admins("[string]")
\ No newline at end of file
+ var/string
+ if(logout && config && config.announce_admin_logout)
+ string = pick(
+ "Admin logout: [key_name(src)]")
+ else if(!logout && config && config.announce_admin_login && (prefs.toggles & ANNOUNCE_LOGIN))
+ string = pick(
+ "Admin login: [key_name(src)]")
+ if(string)
+ message_admins("[string]")
\ No newline at end of file
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 249cd05528b..82e0c143345 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1,6 +1,7 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
var/list/admin_verbs_default = list(
/client/proc/toggleadminhelpsound, /*toggles whether we hear a sound when adminhelps/PMs are used*/
+ /client/proc/toggleannouncelogin, /*toggles if an admin's login is announced during a round*/
/client/proc/deadmin_self, /*destroys our own admin datum so we can play as a regular player*/
/client/proc/cmd_admin_say, /*admin-only ooc chat*/
/client/proc/hide_verbs, /*hides all our adminverbs*/
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index 865906b154c..5ecd635021b 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -184,6 +184,7 @@ var/next_external_rsc = 0
//////////////
/client/Del()
if(holder)
+ adminGreet(1)
holder.owner = null
admins -= src
directory -= ckey
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index d0119b29ec5..3c11398621f 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -345,8 +345,8 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
if(user.client)
if(user.client.holder)
- dat += "Adminhelp Sound: "
- dat += "[(toggles & SOUND_ADMINHELP)?"On":"Off"]
"
+ dat += "Adminhelp Sound: [(toggles & SOUND_ADMINHELP)?"On":"Off"]
"
+ dat += "Announce Login: [(toggles & ANNOUNCE_LOGIN)?"On":"Off"]
"
if(unlock_content || check_rights_for(user.client, R_ADMIN))
dat += "OOC: Change
"
@@ -955,6 +955,8 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
if("hear_adminhelps")
toggles ^= SOUND_ADMINHELP
+ if("announce_login")
+ toggles ^= ANNOUNCE_LOGIN
if("ui")
switch(UI_style)
diff --git a/code/modules/client/preferences_toggles.dm b/code/modules/client/preferences_toggles.dm
index 99218130f57..7a44e73a182 100644
--- a/code/modules/client/preferences_toggles.dm
+++ b/code/modules/client/preferences_toggles.dm
@@ -64,6 +64,16 @@
usr << "You will [(prefs.toggles & SOUND_ADMINHELP) ? "now" : "no longer"] hear a sound when adminhelps arrive."
feedback_add_details("admin_verb","AHS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+/client/proc/toggleannouncelogin()
+ set name = "Do/Don't Announce Login"
+ set category = "Preferences"
+ set desc = "Toggle if you want an announcement to admins when you login during a round"
+ if(!holder) return
+ prefs.toggles ^= ANNOUNCE_LOGIN
+ prefs.save_preferences()
+ usr << "You will [(prefs.toggles & ANNOUNCE_LOGIN) ? "now" : "no longer"] have an announcement to other admins when you login."
+ feedback_add_details("admin_verb","TAL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
/client/proc/deadchat()
set name = "Show/Hide Deadchat"
set category = "Preferences"
diff --git a/code/modules/mob/logout.dm b/code/modules/mob/logout.dm
index 1892a98a99a..4c7da6069be 100644
--- a/code/modules/mob/logout.dm
+++ b/code/modules/mob/logout.dm
@@ -5,8 +5,6 @@
if(admin_datums[src.ckey])
if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
var/admins_number = admins.len
-
- message_admins("Admin logout: [key_name(src)]")
if(admins_number == 0) //Apparently the admin logging out is no longer an admin at this point, so we have to check this towards 0 and not towards 1. Awell.
var/cheesy_message = pick( list( \
"I have no admins online!",\
diff --git a/config/config.txt b/config/config.txt
index 6f12881387b..c1bed2e1a60 100644
--- a/config/config.txt
+++ b/config/config.txt
@@ -196,4 +196,10 @@ NOTIFY_NEW_PLAYER_AGE 0
#LOG_RUNTIMES
##Comment this out if you've used the mass conversion sql proc for notes or want to stop converting notes
-AUTOCONVERT_NOTES
\ No newline at end of file
+AUTOCONVERT_NOTES
+
+##Comment this out to stop admin messages sent anytime an admin disconnects from a round in play, you can edit the messages in admin.dm
+ANNOUNCE_ADMIN_LOGOUT
+
+##Uncomment to have an admin message sent anytime an admin connects to a round in play, you can edit the messages in admin.dm
+#ANNOUNCE_ADMIN_LOGIN
\ No newline at end of file