diff --git a/code/modules/client/preferences/types/misc.dm b/code/modules/client/preferences/types/misc.dm index 5341737eb5a..54a85477e30 100644 --- a/code/modules/client/preferences/types/misc.dm +++ b/code/modules/client/preferences/types/misc.dm @@ -75,3 +75,9 @@ savefile_key = "MessengerEmbeds" default_value = TRUE savefile_identifier = PREFERENCE_PLAYER + +/datum/preference/toggle/autopunctuation + category = PREFERENCE_CATEGORY_GAME_PREFERENCES + savefile_key = "AutoPunctuation" + default_value = FALSE + savefile_identifier = PREFERENCE_PLAYER diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 694160dde97..8bad39f94f7 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -192,6 +192,13 @@ var/list/channel_to_radio_key = new return // VOREStation Edit End + // If the message ends in an alphanumeric character (therefore, not punctuation), + // and autopunctuation is turned on, add a period. + // This must be done right here, before parse_languages is called, to make sure it's in the last multilingual say piece. + if(contains_az09(copytext(message, length(message)))) + if(client?.prefs?.read_preference(/datum/preference/toggle/autopunctuation)) + message += "." + //Parse the language code and consume it var/list/message_pieces = parse_languages(message) if(istype(message_pieces, /datum/multilingual_say_piece)) // Little quark for dealing with hivemind/signlang languages. diff --git a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx index 9a7a92d86a4..8361e5cca20 100644 --- a/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx +++ b/tgui/packages/tgui/interfaces/PreferencesMenu/preferences/features/game_preferences/misc.tsx @@ -80,3 +80,11 @@ export const MessengerEmbeds: FeatureToggle = { 'When enabled, PDAs and Communicators will attempt to embed links from discord & imgur.', component: CheckboxInput, }; + +export const AutoPunctuation: FeatureToggle = { + name: 'Automatic Punctuation', + category: 'GAMEPLAY', + description: + 'When enabled, if your message ends in a letter with no punctuation, a period will be added.', + component: CheckboxInput, +};