diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm index 5d04b83e73..f47aa9e14e 100644 --- a/code/modules/client/preference_setup/global/01_ui.dm +++ b/code/modules/client/preference_setup/global/01_ui.dm @@ -16,6 +16,7 @@ S["tgui_input_mode"] >> pref.tgui_input_mode 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 @@ -31,6 +32,7 @@ S["tgui_input_mode"] << pref.tgui_input_mode 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)) @@ -46,6 +48,7 @@ pref.tgui_input_mode = sanitize_integer(pref.tgui_input_mode, 0, 1, initial(pref.tgui_input_mode)) 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]
" @@ -61,6 +64,7 @@ . += "TGUI Input Framework: [(pref.tgui_input_mode) ? "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)) @@ -142,6 +146,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 c81cce1ecc..687d6df6cf 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -31,6 +31,7 @@ var/list/preferences_datums = list() var/tgui_input_mode = FALSE // All the Input Boxes (Text,Number,List,Alert) 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 0e83638e88..d74d3c178f 100644 --- a/code/modules/client/preferences_toggle_procs.dm +++ b/code/modules/client/preferences_toggle_procs.dm @@ -379,6 +379,16 @@ You will have to reload VChat and/or reconnect to the server for these changes to take place. \ VChat message persistence is not guaranteed if you change this again before the start of the next round.") +/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 6e2b08bdce..ae249d6762 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 2730d4f327..4653da4082 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