diff --git a/GainStation13/sound/voice/voices/speak_1.ogg b/GainStation13/sound/voice/voices/human.ogg
similarity index 100%
rename from GainStation13/sound/voice/voices/speak_1.ogg
rename to GainStation13/sound/voice/voices/human.ogg
diff --git a/GainStation13/sound/voice/voices/speak_1_ask.ogg b/GainStation13/sound/voice/voices/human_ask.ogg
similarity index 100%
rename from GainStation13/sound/voice/voices/speak_1_ask.ogg
rename to GainStation13/sound/voice/voices/human_ask.ogg
diff --git a/GainStation13/sound/voice/voices/speak_1_exclaim.ogg b/GainStation13/sound/voice/voices/human_exclaim.ogg
similarity index 100%
rename from GainStation13/sound/voice/voices/speak_1_exclaim.ogg
rename to GainStation13/sound/voice/voices/human_exclaim.ogg
diff --git a/GainStation13/sound/voice/voices/lizard.ogg b/GainStation13/sound/voice/voices/lizard.ogg
new file mode 100644
index 00000000..48638b0f
Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard.ogg differ
diff --git a/GainStation13/sound/voice/voices/lizard_ask.ogg b/GainStation13/sound/voice/voices/lizard_ask.ogg
new file mode 100644
index 00000000..60cf84ff
Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard_ask.ogg differ
diff --git a/GainStation13/sound/voice/voices/lizard_exclaim.ogg b/GainStation13/sound/voice/voices/lizard_exclaim.ogg
new file mode 100644
index 00000000..20d3c0b7
Binary files /dev/null and b/GainStation13/sound/voice/voices/lizard_exclaim.ogg differ
diff --git a/GainStation13/sound/voice/voices/roach.ogg b/GainStation13/sound/voice/voices/roach.ogg
new file mode 100644
index 00000000..55a2ad8a
Binary files /dev/null and b/GainStation13/sound/voice/voices/roach.ogg differ
diff --git a/GainStation13/sound/voice/voices/roach_ask.ogg b/GainStation13/sound/voice/voices/roach_ask.ogg
new file mode 100644
index 00000000..dc15d884
Binary files /dev/null and b/GainStation13/sound/voice/voices/roach_ask.ogg differ
diff --git a/GainStation13/sound/voice/voices/roach_exclaim.ogg b/GainStation13/sound/voice/voices/roach_exclaim.ogg
new file mode 100644
index 00000000..3a5a17d4
Binary files /dev/null and b/GainStation13/sound/voice/voices/roach_exclaim.ogg differ
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 7399e5bd..b7c55eec 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -107,6 +107,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
var/starting_weight = 0 //how thicc you wanna be at start
var/wg_rate = 0.5
var/wl_rate = 0.5
+ var/voice = "human"
//HS13 jobs
var/sillyroles = TRUE //for clown and mime
@@ -446,6 +447,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
dat += "
Body
"
dat += "Gender:[gender == MALE ? "Male" : (gender == FEMALE ? "Female" : (gender == PLURAL ? "Non-binary" : "Object"))]
"
dat += "Species:[pref_species.id]
"
+ dat += "Voice:[voice ? voice : "None"]
"
dat += "Custom Species Name:[custom_species ? custom_species : "None"]
"
dat += "Random Body
"
dat += "Always Random Body:[be_random_body ? "Yes" : "No"]
"
@@ -1996,6 +1998,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
else
custom_species = null
+ if("voice_select")
+ var/chosenvoice = input(user, "Select your character's voice.", "Voice Selection", voice) in list("human", "roach", "lizard")
+ voice = chosenvoice
+
if("mutant_color")
var/new_mutantcolor = input(user, "Choose your character's alien/mutant color:", "Character Preference","#"+features["mcolor"]) as color|null
if(new_mutantcolor)
@@ -2957,6 +2963,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
character.name = character.real_name
character.nameless = nameless
character.custom_species = custom_species
+ character.voice = voice
//h13 character custom body size, make sure to set to 100% if the player hasn't choosen one yet.
character.custom_body_size = body_size
diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm
index 959b10a9..872eeaef 100644
--- a/code/modules/client/preferences_savefile.dm
+++ b/code/modules/client/preferences_savefile.dm
@@ -372,6 +372,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
S["skin_tone"] >> skin_tone
S["hair_style_name"] >> hair_style
S["facial_style_name"] >> facial_hair_style
+ S["voice"] >> voice
// GS13: Hair gradients from Skyrat
S["grad_style"] >> grad_style
S["grad_color"] >> grad_color
@@ -638,6 +639,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car
WRITE_FILE(S["skin_tone"] , skin_tone)
WRITE_FILE(S["hair_style_name"] , hair_style)
WRITE_FILE(S["facial_style_name"] , facial_hair_style)
+ WRITE_FILE(S["voice"] , voice)
// GS13: Hair gradients from Skyrat
WRITE_FILE(S["grad_style"] , grad_style)
WRITE_FILE(S["grad_color"] , grad_color)
diff --git a/code/modules/mob/living/carbon/human/human_defines.dm b/code/modules/mob/living/carbon/human/human_defines.dm
index 71f919fd..d3090a5e 100644
--- a/code/modules/mob/living/carbon/human/human_defines.dm
+++ b/code/modules/mob/living/carbon/human/human_defines.dm
@@ -79,3 +79,5 @@
var/account_id
can_be_held = "micro"
appearance_flags = KEEP_TOGETHER|TILE_BOUND|PIXEL_SCALE|LONG_GLIDE
+
+ var/voice = "human"
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index bd7f61a2..1f314db2 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -497,7 +497,9 @@
. = ..()
message = null
emote_type = EMOTE_VISIBLE
- playsound(usr.loc, 'GainStation13/sound/voice/voices/speak_1.ogg', 90, 10)
+ if(ishuman(usr))
+ var/mob/living/carbon/human/H = usr
+ playsound(usr.loc, "GainStation13/sound/voice/voices/[H.voice].ogg", 90, 10)
/datum/emote/living/custom/replace_pronoun(mob/user, message)
return message
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 57b7fc09..02a1e166 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -219,22 +219,24 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
if(pressure < ONE_ATMOSPHERE*0.4) //Thin air, let's italicise the message
spans |= SPAN_ITALICS
- if(message_mode == MODE_WHISPER)
+ if(ishuman(src))
+ var/mob/living/carbon/human/H = src
+ var/vmod = ""
switch(say_mod(message, message_mode))
if("asks")
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1_ask.ogg', 45, 5, -3)
- if("exclaims" || "yells")
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1_exclaim.ogg', 45, 5, -3)
- else
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1.ogg', 45, 5, -3)
- else
+ vmod = "_ask"
+ if("exclaims")
+ vmod = "_exclaim"
+ if("yells")
+ vmod = "_exclaim"
switch(say_mod(message, message_mode))
- if("asks")
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1_ask.ogg', 90, 10, message_range)
- if("exclaims" || "yells")
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1_exclaim.ogg', 90, 10, message_range)
+ if("whispers")
+ playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 45, 5, -3)
+ if("yells")
+ playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 130, 10, message_range+2)
else
- playsound(src.loc, 'GainStation13/sound/voice/voices/speak_1.ogg', 90, 10, message_range)
+ playsound(src.loc, "GainStation13/sound/voice/voices/[H.voice][vmod].ogg", 90, 10, message_range)
+
//playsound(user.loc, pick('GainStation13/sound/voice/voices/speak_1.ogg', 'GainStation13/sound/voice/voices/speak_1_ask.ogg', 'GainStation13/sound/voice/voices/speak_1_exclaim.ogg'), 90, 10)
send_speech(message, message_range, src, bubble_type, spans, language, message_mode)
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index d46b9d73..0c642cc9 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -72,7 +72,9 @@ proc/get_top_level_mob(var/mob/S)
if(M.stat == DEAD && M.client && (M.client?.prefs?.chat_toggles & CHAT_GHOSTSIGHT) && !(M in viewers(T, null)))
M.show_message(message)
- playsound(usr.loc, 'GainStation13/sound/voice/voices/speak_1.ogg', 90, 10)
+ if(ishuman(usr))
+ var/mob/living/carbon/human/H = usr
+ playsound(usr.loc, "GainStation13/sound/voice/voices/[H.voice].ogg", 90, 10)
if(emote_type == EMOTE_AUDIBLE)
user.audible_message(message=message,hearing_distance=1)