[MIRROR] Disconnect and Reconnect messages for deadchat (#2174)

* Disconnect and Reconnect messages for deadchat (#55395)

adds messages to deadchat when a client with a mob disconnects or reconnects

* Disconnect and Reconnect messages for deadchat

* aaa

Co-authored-by: Emmanuel S <mrdoomboyo@gmail.com>
Co-authored-by: Useroth <37159550+Useroth@users.noreply.github.com>
Co-authored-by: Azarak <azarak10@gmail.com>
This commit is contained in:
SkyratBot
2020-12-17 02:56:49 +01:00
committed by GitHub
co-authored by Emmanuel S Useroth Azarak
parent 371842ec20
commit d37d6ce8d9
11 changed files with 76 additions and 9 deletions
+13 -2
View File
@@ -282,8 +282,9 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
else
message_admins("<span class='danger'><B>Notice: </B></span><span class='notice'>[key_name_admin(src)] has the same [matches] as [key_name_admin(C)] (no longer logged in). </span>")
log_admin_private("Notice: [key_name(src)] has the same [matches] as [key_name(C)] (no longer logged in).")
var/reconnecting = FALSE
if(GLOB.player_details[ckey])
reconnecting = TRUE
player_details = GLOB.player_details[ckey]
player_details.byond_version = full_version
else
@@ -380,7 +381,11 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
add_admin_verbs()
to_chat(src, get_message_output("memo"))
adminGreet()
if (mob && reconnecting)
var/stealth_admin = mob.client?.holder?.fakekey
var/announce_leave = mob.client?.prefs?.broadcast_login_logout
if (!stealth_admin)
deadchat_broadcast(" has reconnected.", "<b>[mob][mob.get_realname_string()]</b>", follow_target = mob, turf_target = get_turf(mob), message_type = DEADCHAT_LOGIN_LOGOUT, admin_only=!announce_leave)
add_verbs_from_config()
var/cached_player_age = set_client_age_from_db(tdata) //we have to cache this because other shit may change it and we need it's current value now down below.
if (isnum(cached_player_age) && cached_player_age == -1) //first connection
@@ -450,6 +455,12 @@ GLOBAL_LIST_INIT(blacklisted_builds, list(
return ..()
/client/Destroy()
if(mob)
var/stealth_admin = mob.client?.holder?.fakekey
var/announce_join = mob.client?.prefs?.broadcast_login_logout
if (!stealth_admin)
deadchat_broadcast(" has disconnected.", "<b>[mob][mob.get_realname_string()]</b>", follow_target = mob, turf_target = get_turf(mob), message_type = DEADCHAT_LOGIN_LOGOUT, admin_only=!announce_join)
GLOB.clients -= src
GLOB.directory -= ckey
log_access("Logout: [key_name(src)]")
+12
View File
@@ -137,6 +137,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/body_type
/// If we have persistent scars enabled
var/persistent_scars = TRUE
///If we want to broadcast deadchat connect/disconnect messages
var/broadcast_login_logout = TRUE
/datum/preferences/New(client/C)
parent = C
@@ -610,6 +612,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "<b>Ghosts of Others:</b> <a href='?_src_=prefs;task=input;preference=ghostothers'>[button_name]</a><br>"
dat += "<br>"
dat += "<b>Broadcast Login/Logout:</b> <a href='?_src_=prefs;preference=broadcast_login_logout'>[broadcast_login_logout ? "Broadcast" : "Silent"]</a><br>"
dat += "<b>See Login/Logout Messages:</b> <a href='?_src_=prefs;preference=hear_login_logout'>[(chat_toggles & CHAT_LOGIN_LOGOUT) ? "Allowed" : "Muted"]</a><br>"
dat += "<br>"
dat += "<b>Income Updates:</b> <a href='?_src_=prefs;preference=income_pings'>[(chat_toggles & CHAT_BANKCARD) ? "Allowed" : "Muted"]</a><br>"
dat += "<br>"
@@ -1776,6 +1782,12 @@ GLOBAL_LIST_EMPTY(preferences_datums)
if("ghost_laws")
chat_toggles ^= CHAT_GHOSTLAWS
if("hear_login_logout")
chat_toggles ^= CHAT_LOGIN_LOGOUT
if("broadcast_login_logout")
broadcast_login_logout = !broadcast_login_logout
if("income_pings")
chat_toggles ^= CHAT_BANKCARD
@@ -166,6 +166,8 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
READ_FILE(S["max_chat_length"], max_chat_length)
READ_FILE(S["see_chat_non_mob"] , see_chat_non_mob)
READ_FILE(S["see_rc_emotes"] , see_rc_emotes)
READ_FILE(S["broadcast_login_logout"] , broadcast_login_logout)
READ_FILE(S["tgui_fancy"], tgui_fancy)
READ_FILE(S["tgui_lock"], tgui_lock)
READ_FILE(S["buttons_locked"], buttons_locked)
@@ -226,6 +228,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
max_chat_length = sanitize_integer(max_chat_length, 1, CHAT_MESSAGE_MAX_LENGTH, initial(max_chat_length))
see_chat_non_mob = sanitize_integer(see_chat_non_mob, FALSE, TRUE, initial(see_chat_non_mob))
see_rc_emotes = sanitize_integer(see_rc_emotes, FALSE, TRUE, initial(see_rc_emotes))
broadcast_login_logout = sanitize_integer(broadcast_login_logout, FALSE, TRUE, initial(broadcast_login_logout))
tgui_fancy = sanitize_integer(tgui_fancy, FALSE, TRUE, initial(tgui_fancy))
tgui_lock = sanitize_integer(tgui_lock, FALSE, TRUE, initial(tgui_lock))
buttons_locked = sanitize_integer(buttons_locked, FALSE, TRUE, initial(buttons_locked))
@@ -289,6 +292,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["max_chat_length"], max_chat_length)
WRITE_FILE(S["see_chat_non_mob"], see_chat_non_mob)
WRITE_FILE(S["see_rc_emotes"], see_rc_emotes)
WRITE_FILE(S["broadcast_login_logout"], broadcast_login_logout)
WRITE_FILE(S["tgui_fancy"], tgui_fancy)
WRITE_FILE(S["tgui_lock"], tgui_lock)
WRITE_FILE(S["buttons_locked"], buttons_locked)
@@ -96,6 +96,17 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/settings/ghost/chatterbox, toggle_ghost_laws)(
/datum/verbs/menu/settings/ghost/chatterbox/toggle_ghost_laws/Get_checked(client/C)
return C.prefs.chat_toggles & CHAT_GHOSTLAWS
TOGGLE_CHECKBOX(/datum/verbs/menu/settings/ghost/chatterbox, toggle_hear_login_logout)()
set name = "Show/Hide Login/Logout messages"
set category = "Preferences"
set desc = "As a ghost, see when someone reconnects or disconnects"
usr.client.prefs.chat_toggles ^= CHAT_LOGIN_LOGOUT
to_chat(usr, "As a ghost, you will now [(usr.client.prefs.chat_toggles & CHAT_LOGIN_LOGOUT) ? "be notified" : "no longer be notified"] when someone disconnects or reconnects.")
usr.client.prefs.save_preferences()
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle Hearing Login/Logout", "[usr.client.prefs.chat_toggles & CHAT_LOGIN_LOGOUT ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/datum/verbs/menu/settings/ghost/chatterbox/toggle_hear_login_logout/Get_checked(client/C)
return C.prefs.chat_toggles & CHAT_LOGIN_LOGOUT
/datum/verbs/menu/settings/ghost/chatterbox/events
name = "Events"