From 78c5778342b72afaf04c63ec0025b11785fec9a3 Mon Sep 17 00:00:00 2001 From: Geeves Date: Sat, 31 Oct 2020 15:59:33 +0200 Subject: [PATCH] Autohiss QoL (#10377) --- SQL/migrate/V058__autohiss_setup.sql | 6 +++++ code/__defines/species_languages.dm | 7 ++++++ code/_helpers/global_lists.dm | 2 ++ .../preference_setup/general/02_language.dm | 22 ++++++++++++++++--- code/modules/client/preferences.dm | 1 + .../mob/abstract/new_player/new_player.dm | 2 ++ code/modules/mob/living/autohiss.dm | 8 +------ .../living/carbon/human/species/species.dm | 3 ++- .../changelogs/geeves-autohiss_char_setup.yml | 6 +++++ 9 files changed, 46 insertions(+), 11 deletions(-) create mode 100644 SQL/migrate/V058__autohiss_setup.sql create mode 100644 html/changelogs/geeves-autohiss_char_setup.yml diff --git a/SQL/migrate/V058__autohiss_setup.sql b/SQL/migrate/V058__autohiss_setup.sql new file mode 100644 index 00000000000..481001ee56f --- /dev/null +++ b/SQL/migrate/V058__autohiss_setup.sql @@ -0,0 +1,6 @@ +--- +--- Puts autohiss in character setup +--- + +ALTER TABLE `ss13_characters` + ADD COLUMN `autohiss` TINYINT NOT NULL DEFAULT 0 AFTER `accent`; diff --git a/code/__defines/species_languages.dm b/code/__defines/species_languages.dm index d7e2728c825..8c011c10e95 100644 --- a/code/__defines/species_languages.dm +++ b/code/__defines/species_languages.dm @@ -86,6 +86,13 @@ #define NO_STUTTER 256 // No stuttering, slurring, or other speech problems #define TCOMSSIM 512 // Can be synthesized in tcoms +// Autohiss +#define AUTOHISS_OFF 0 +#define AUTOHISS_BASIC 1 +#define AUTOHISS_FULL 2 + +#define AUTOHISS_NUM 3 + // Representative missions levels #define REPRESENTATIVE_MISSION_LOW 1 #define REPRESENTATIVE_MISSION_MEDIUM 2 diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm index 7ed017be3b3..dac0195ab16 100644 --- a/code/_helpers/global_lists.dm +++ b/code/_helpers/global_lists.dm @@ -155,6 +155,8 @@ var/global/list/cloaking_devices = list() rkey++ var/datum/species/S = new T S.race_key = rkey //Used in mob icon caching. + if(length(S.autohiss_basic_map) || length(S.autohiss_extra_map) || length(S.autohiss_basic_extend) || length(S.autohiss_extra_extend)) + S.has_autohiss = TRUE all_species[S.name] = S sortTim(all_species, /proc/cmp_text_asc) diff --git a/code/modules/client/preference_setup/general/02_language.dm b/code/modules/client/preference_setup/general/02_language.dm index 76ee52a915b..62e13114add 100644 --- a/code/modules/client/preference_setup/general/02_language.dm +++ b/code/modules/client/preference_setup/general/02_language.dm @@ -4,15 +4,18 @@ /datum/category_item/player_setup_item/general/language/load_character(var/savefile/S) S["language"] >> pref.alternate_languages + S["autohiss"] >> pref.autohiss_setting /datum/category_item/player_setup_item/general/language/save_character(var/savefile/S) S["language"] << pref.alternate_languages + S["autohiss"] << pref.autohiss_setting /datum/category_item/player_setup_item/general/language/gather_load_query() return list( "ss13_characters" = list( "vars" = list( - "language" = "alternate_languages" + "language" = "alternate_languages", + "autohiss" = "autohiss_setting" ), "args" = list("id") ) @@ -26,13 +29,15 @@ "ss13_characters" = list( "id" = 1, "ckey" = 1, - "language" + "language", + "autohiss" ) ) /datum/category_item/player_setup_item/general/language/gather_save_parameters() return list( "language" = list2params(pref.alternate_languages), + "autohiss" = pref.autohiss_setting, "id" = pref.current_character, "ckey" = PREF_CLIENT_CKEY ) @@ -41,6 +46,7 @@ if (sql_load) pref.alternate_languages = params2list(pref.alternate_languages) + pref.autohiss_setting = text2num(pref.autohiss_setting) if(!islist(pref.alternate_languages)) pref.alternate_languages = list() @@ -92,6 +98,11 @@ else dat += "- [pref.species] cannot choose secondary languages.
" + if(S.has_autohiss) + pref.autohiss_setting = clamp(pref.autohiss_setting, AUTOHISS_OFF, AUTOHISS_NUM - 1) + var/list/autohiss_to_word = list("Disabled", "Basic", "Full") + dat += "
Autohiss: [autohiss_to_word[pref.autohiss_setting + 1]]
" + . = dat.Join() /datum/category_item/player_setup_item/general/language/OnTopic(var/href,var/list/href_list, var/mob/user) @@ -127,4 +138,9 @@ else pref.alternate_languages |= new_lang return TOPIC_REFRESH - return ..() + else if(href_list["autohiss"]) + pref.autohiss_setting = (pref.autohiss_setting + 1) % AUTOHISS_NUM + if(isnull(pref.autohiss_setting)) + pref.autohiss_setting = AUTOHISS_OFF + return TOPIC_REFRESH + return ..() \ No newline at end of file diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index afa45cff5a1..3401d802799 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -65,6 +65,7 @@ datum/preferences var/species_preview //Used for the species selection window. var/list/alternate_languages = list() //Secondary language(s) var/list/language_prefixes = list() // Language prefix keys + var/autohiss_setting = AUTOHISS_OFF var/list/gear // Custom/fluff item loadout. var/list/gear_list = list() //Custom/fluff item loadouts. var/gear_slot = 1 //The current gear save slot diff --git a/code/modules/mob/abstract/new_player/new_player.dm b/code/modules/mob/abstract/new_player/new_player.dm index 3bcd3683306..76c06c51a31 100644 --- a/code/modules/mob/abstract/new_player/new_player.dm +++ b/code/modules/mob/abstract/new_player/new_player.dm @@ -376,6 +376,8 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player) else client.prefs.copy_to(new_character) + client.autohiss_mode = client.prefs.autohiss_setting + src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS cant last forever yo) if(mind) diff --git a/code/modules/mob/living/autohiss.dm b/code/modules/mob/living/autohiss.dm index 38140269d28..ab8e080f3e8 100644 --- a/code/modules/mob/living/autohiss.dm +++ b/code/modules/mob/living/autohiss.dm @@ -1,10 +1,3 @@ - -#define AUTOHISS_OFF 0 -#define AUTOHISS_BASIC 1 -#define AUTOHISS_FULL 2 - -#define AUTOHISS_NUM 3 - /mob/living/proc/handle_autohiss(message, datum/language/L) return message // no autohiss at this level @@ -35,6 +28,7 @@ to_chat(src, "Auto-hiss is now OFF.") /datum/species + var/has_autohiss = FALSE var/list/autohiss_basic_map = null var/list/autohiss_extra_map = null var/list/autohiss_exempt = null diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 191a05d60ff..ad9f57922f2 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -428,7 +428,8 @@ // Used to update alien icons for aliens. /datum/species/proc/handle_login_special(var/mob/living/carbon/human/H) - return + if(has_autohiss && H.client) + H.client.autohiss_mode = H.client.prefs.autohiss_setting // As above. /datum/species/proc/handle_logout_special(var/mob/living/carbon/human/H) diff --git a/html/changelogs/geeves-autohiss_char_setup.yml b/html/changelogs/geeves-autohiss_char_setup.yml new file mode 100644 index 00000000000..09c6bd5b774 --- /dev/null +++ b/html/changelogs/geeves-autohiss_char_setup.yml @@ -0,0 +1,6 @@ +author: Geeves + +delete-after: True + +changes: + - rscadd: "Autohissssss has been added to the character creation menu, and will now perssssisssst roundssss and logoutssss."