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."