Merge pull request #13333 from Very-Soft/saysound

Say Sound!
This commit is contained in:
Casey
2022-07-15 21:36:40 -04:00
committed by GitHub
27 changed files with 206 additions and 5 deletions
@@ -95,7 +95,7 @@ var/list/_client_preferences_by_type
key = "DIGEST_NOISES"
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/belch_noises // Belching noises - pref toggle for 'em
description = "Burping"
key = "BELCH_NOISES"
@@ -108,7 +108,7 @@ var/list/_client_preferences_by_type
enabled_description = "Noisy"
disabled_description = "Silent"
/datum/client_preference/whisubtle_vis
description = "Whi/Subtles Ghost Visible"
description = "Whi/Subtles Ghost Visible"
key = "WHISUBTLE_VIS"
enabled_description = "Visible"
disabled_description = "Hidden"
@@ -299,6 +299,30 @@ var/list/_client_preferences_by_type
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/say_sounds
description = "Say Sounds"
key = "SAY_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/emote_sounds
description = "Me Sounds"
key = "EMOTE_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/whisper_sounds
description = "Whisper Sounds"
key = "WHISPER_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/subtle_sounds
description = "Subtle Sounds"
key = "SUBTLE_SOUNDS"
enabled_description = "On"
disabled_description = "Off"
/datum/client_preference/runechat_mob
description = "Runechat (Mobs)"
key = "RUNECHAT_MOB"
@@ -3,6 +3,8 @@
#define WEIGHT_MAX 500
#define WEIGHT_CHANGE_MIN 0
#define WEIGHT_CHANGE_MAX 100
#define MAX_VOICE_FREQ 70000
#define MIN_VOICE_FREQ 15000
// Define a place to save in character setup
/datum/preferences
@@ -12,6 +14,8 @@
var/weight_gain = 100 // Weight gain rate.
var/weight_loss = 50 // Weight loss rate.
var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon. Default sharp.
var/voice_freq = 0
var/voice_sounds_list
// Definition of the stuff for Sizing
/datum/category_item/player_setup_item/vore/size
@@ -24,6 +28,8 @@
S["weight_gain"] >> pref.weight_gain
S["weight_loss"] >> pref.weight_loss
S["fuzzy"] >> pref.fuzzy
S["voice_freq"] >> pref.voice_freq
S["voice_sounds_list"] >> pref.voice_sounds_list
/datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S)
S["size_multiplier"] << pref.size_multiplier
@@ -31,12 +37,16 @@
S["weight_gain"] << pref.weight_gain
S["weight_loss"] << pref.weight_loss
S["fuzzy"] << pref.fuzzy
S["voice_freq"] << pref.voice_freq
S["voice_sounds_list"] << pref.voice_sounds_list
/datum/category_item/player_setup_item/vore/size/sanitize_character()
pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr))
pref.weight_gain = sanitize_integer(pref.weight_gain, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_gain))
pref.weight_loss = sanitize_integer(pref.weight_loss, WEIGHT_CHANGE_MIN, WEIGHT_CHANGE_MAX, initial(pref.weight_loss))
pref.fuzzy = sanitize_integer(pref.fuzzy, 0, 1, initial(pref.fuzzy))
if(pref.voice_freq != 0)
pref.voice_freq = sanitize_integer(pref.voice_freq, MIN_VOICE_FREQ, MAX_VOICE_FREQ, initial(pref.fuzzy))
if(pref.size_multiplier == null || pref.size_multiplier < RESIZE_TINY || pref.size_multiplier > RESIZE_HUGE)
pref.size_multiplier = initial(pref.size_multiplier)
@@ -45,12 +55,21 @@
character.weight_gain = pref.weight_gain
character.weight_loss = pref.weight_loss
character.fuzzy = pref.fuzzy
character.voice_freq = pref.voice_freq
character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE)
switch(pref.voice_sounds_list)
if("beep-boop")
character.voice_sounds_list = pref.voice_sounds_list
else
character.voice_sounds_list = talk_sound
/datum/category_item/player_setup_item/vore/size/content(var/mob/user)
. += "<br>"
. += "<b>Scale:</b> <a href='?src=\ref[src];size_multiplier=1'>[round(pref.size_multiplier*100)]%</a><br>"
. += "<b>Scaled Appearance:</b> <a [pref.fuzzy ? "" : ""] href='?src=\ref[src];toggle_fuzzy=1'><b>[pref.fuzzy ? "Fuzzy" : "Sharp"]</b></a><br>"
. += "<b>Voice Frequency:</b> <a href='?src=\ref[src];voice_freq=1'>[pref.voice_freq]</a><br>"
// . += "<b>Voice Sounds:</b> <a href='?src=\ref[src];voice_sounds_list=1'>[pref.voice_sounds_list]</a><br>" //Maybe later when there's more options
. += "<br>"
. += "<b>Relative Weight:</b> <a href='?src=\ref[src];weight=1'>[pref.weight_vr]</a><br>"
. += "<b>Weight Gain Rate:</b> <a href='?src=\ref[src];weight_gain=1'>[pref.weight_gain]</a><br>"
@@ -104,4 +123,26 @@
pref.weight_loss = round(text2num(weight_loss_rate),1)
return TOPIC_REFRESH
else if(href_list["voice_freq"])
var/list/preset_voice_freqs = list("high" = MAX_VOICE_FREQ, "middle-high" = 56250, "middle" = 425000, "middle-low"= 28750, "low" = MIN_VOICE_FREQ, "custom" = 1, "random" = 0)
var/choice = tgui_input_list(usr, "What would you like to set your voice frequency to? ([MIN_VOICE_FREQ] - [MAX_VOICE_FREQ])", "Voice Frequency", preset_voice_freqs)
if(!choice)
return
choice = preset_voice_freqs[choice]
if(choice == 0)
pref.voice_freq = choice
return TOPIC_REFRESH
else if(choice == 1)
choice = tgui_input_number(user, "Choose your character's voice frequency, ranging from [MIN_VOICE_FREQ] to [MAX_VOICE_FREQ]", "Custom Voice Frequency", null, MAX_VOICE_FREQ, MIN_VOICE_FREQ, round_value = TRUE)
if(choice > MAX_VOICE_FREQ)
choice = MAX_VOICE_FREQ
else if(choice < MIN_VOICE_FREQ)
choice = MIN_VOICE_FREQ
pref.voice_freq = choice
return TOPIC_REFRESH
else if(href_list["voice_sounds_list"])
var/choice = tgui_alert(usr, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", list("beep-boop"))
if(choice)
pref.voice_sounds_list = choice
return ..();