diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index c700e2ba93b..13a05070dd4 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -17,6 +17,7 @@ S["tgui_input_lock"] >> pref.tgui_input_lock S["tgui_large_buttons"] >> pref.tgui_large_buttons S["tgui_swapped_buttons"] >> pref.tgui_swapped_buttons + S["chat_timestamp"] >> pref.chat_timestamp /datum/category_item/player_setup_item/player_global/ui/save_preferences(var/savefile/S) S["UI_style"] << pref.UI_style @@ -33,6 +34,7 @@ S["tgui_input_lock"] << pref.tgui_input_lock S["tgui_large_buttons"] << pref.tgui_large_buttons S["tgui_swapped_buttons"] << pref.tgui_swapped_buttons + S["chat_timestamp"] << pref.chat_timestamp /datum/category_item/player_setup_item/player_global/ui/sanitize_preferences() pref.UI_style = sanitize_inlist(pref.UI_style, all_ui_styles, initial(pref.UI_style)) @@ -49,6 +51,7 @@ pref.tgui_input_lock = sanitize_integer(pref.tgui_input_lock, 0, 1, initial(pref.tgui_input_lock)) pref.tgui_large_buttons = sanitize_integer(pref.tgui_large_buttons, 0, 1, initial(pref.tgui_large_buttons)) pref.tgui_swapped_buttons = sanitize_integer(pref.tgui_swapped_buttons, 0, 1, initial(pref.tgui_swapped_buttons)) + pref.chat_timestamp = sanitize_integer(pref.chat_timestamp, 0, 1, initial(pref.chat_timestamp)) /datum/category_item/player_setup_item/player_global/ui/content(var/mob/user) . = "UI Style: [pref.UI_style]
" @@ -65,6 +68,7 @@ . += "TGUI Input Lock: [(pref.tgui_input_lock) ? "Enabled" : "Disabled (default)"]
" . += "TGUI Large Buttons: [(pref.tgui_large_buttons) ? "Enabled (default)" : "Disabled"]
" . += "TGUI Swapped Buttons: [(pref.tgui_swapped_buttons) ? "Enabled" : "Disabled (default)"]
" + . += "Chat Timestamps: [(pref.chat_timestamp) ? "Enabled" : "Disabled (default)"]
" if(can_select_ooc_color(user)) . += "OOC Color:" if(pref.ooccolor == initial(pref.ooccolor)) @@ -150,6 +154,10 @@ pref.tgui_swapped_buttons = !pref.tgui_swapped_buttons return TOPIC_REFRESH + else if(href_list["chat_timestamps"]) + pref.chat_timestamp = !pref.chat_timestamp + return TOPIC_REFRESH + else if(href_list["reset"]) switch(href_list["reset"]) if("ui") diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9f2f1dba023..06c43619ab5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -32,6 +32,7 @@ var/list/preferences_datums = list() var/tgui_input_lock = FALSE var/tgui_large_buttons = TRUE var/tgui_swapped_buttons = FALSE + var/chat_timestamp = FALSE //character preferences var/real_name //our character's name diff --git a/code/modules/client/preferences_toggle_procs.dm b/code/modules/client/preferences_toggle_procs.dm index 07014c99a3d..dff1c3f5a2f 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -390,6 +390,16 @@ to_chat(src, span_notice("You have toggled TGUI input lock: [prefs.tgui_input_lock ? "ON" : "OFF"] \n \ This setting determines whether pressing enter on TGUI input sends the input, or creates a newline.")) +/client/verb/toggle_chat_timestamps() + set name = "Toggle Chat Timestamps" + set category = "Preferences" + set desc = "Toggles whether or not messages in chat will display timestamps. Enabling this will not add timestamps to messages that have already been sent." + + prefs.chat_timestamp = !prefs.chat_timestamp //There is no preference datum for tgui input lock, nor for any TGUI prefs. + SScharacter_setup.queue_preferences_save(prefs) + + to_chat(src, span_notice("You have toggled chat timestamps: [prefs.chat_timestamp ? "ON" : "OFF"].")) + /client/verb/toggle_status_indicators() set name = "Toggle Status Indicators" set category = "Preferences" diff --git a/code/modules/mob/hear_say.dm b/code/modules/mob/hear_say.dm index 1bf764f1db8..6d59392cf79 100644 --- a/code/modules/mob/hear_say.dm +++ b/code/modules/mob/hear_say.dm @@ -138,15 +138,28 @@ ai_holder.on_hear_say(speaker, multilingual_to_message(message_pieces)) /mob/proc/on_hear_say(var/message) - to_chat(src, "[message]") - if(teleop) + var/time = say_timestamp() + if(client) + if(client.prefs.chat_timestamp) + to_chat(src, "[time] [message]") + else + to_chat(src, "[message]") + else if(teleop) to_chat(teleop, "[create_text_tag("body", "BODY:", teleop.client)][message]") + else + to_chat(src, "[message]") /mob/living/silicon/on_hear_say(var/message) var/time = say_timestamp() - to_chat(src, "[time] [message]") - if(teleop) - to_chat(teleop, "[create_text_tag("body", "BODY:", teleop.client)][time] [message]") + if(client) + if(client.prefs.chat_timestamp) + to_chat(src, "[time] [message]") + else + to_chat(src, "[message]") + else if(teleop) + to_chat(teleop, "[create_text_tag("body", "BODY:", teleop.client)][message]") + else + to_chat(src, "[message]") // Checks if the mob's own name is included inside message. Handles both first and last names. /mob/proc/check_mentioned(var/message) @@ -199,7 +212,7 @@ on_hear_radio(part_a, part_b, speaker_name, track, part_c, message, part_d, part_e) /proc/say_timestamp() - return "\[[stationtime2text()]\]" + return "\[[time2text(world.timeofday, "hh:mm")]\]" /mob/proc/on_hear_radio(part_a, part_b, speaker_name, track, part_c, formatted, part_d, part_e) var/final_message = "[part_b][speaker_name][part_c][formatted][part_d]" diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 4856542a556..4352a2cbaf8 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -46,6 +46,7 @@ return ..() /mob/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) + var/time = say_timestamp() if(!client && !teleop) return @@ -68,9 +69,12 @@ if(stat == UNCONSCIOUS || sleeping > 0) to_chat(src, "... You can almost hear someone talking ...") else - to_chat(src,msg) - if(teleop) + if(client.prefs.chat_timestamp) + to_chat(src,"[time] [msg]") + else if(teleop) to_chat(teleop, create_text_tag("body", "BODY:", teleop.client) + "[msg]") + else + to_chat(src,msg) return // Show a message to all mobs and objects in sight of this one