mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-26 06:40:08 +01:00
Sound Update: Pain/Scream/Gasp/Death Sounds
This PR adds the following sounds; Death sounds Scream sounds Pain sounds Gasp sounds The sounds are organized into a category under character setup - navigate to the VORE tab and select one based on your preference. If Unset, or not chosen, it will default to whatever the icon base is for your species - for instance, Vulpkanin will get the Canine sounds. Sounds are grouped into 4 major lists so far, with plans for more once I get more files; Canine (Scream/Gasp/Death/Pain) Feline (Scream/Gasp/Death/Pain) Cervine (Scream/Death only) Generic/Human (Scream/Gasp/Death/Pain) Vulpkanin use Canine sounds. Tajaran use Feline. Humans get Generic/Human. Cervine is unset on any species, allowed to be taken by customs. Vox have a pain sound. This also enables **pain** emotes. These can be manually done with *pain, or triggered automatically on taking an injury. The pain trigger respects species pain mods - for instance, if you have Major Pain Tolerance, you'll hear yourself growl in pain far less than someone who has Intolerance. Pain is **not** triggered by spicy food or hallucinations, as those two add halloss on directly. Only effects that apply damage will add on pain. You can test out these sounds in the Character Setup panel. See [here](https://streamable.com/o9wr9g), and here:  A demonstration of human sounds is available [here](https://streamable.com/hqwpel). Canine sounds [here](https://streamable.com/41d0oj) Demonstrations of it during combat [here](https://streamable.com/y4nxea) and [here](https://streamable.com/gj2gl3). These can be muted by navigating to Sound and setting the Mob Injury Sounds variable, seen here:  Species that currently lack sounds have had their audible sounds disabled to prevent jarring human noises from playing on non-human species. This can be overridden upon request, but for now, it will serve as hopeful inspiration to encourage additional files.
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
var/voice_freq = 42500 //CHOMPEdit - Why was the default 0
|
||||
var/voice_sound = "goon speak 1" //CHOMPEdit - Changed the default voice to one less jarring
|
||||
var/custom_speech_bubble = "default"
|
||||
var/species_sound = "Unset" // CHOMPEdit: Use default species pain/scream sounds based off icon base if none set, override otherwise
|
||||
|
||||
// Definition of the stuff for Sizing
|
||||
/datum/category_item/player_setup_item/vore/size
|
||||
@@ -34,6 +35,7 @@
|
||||
S["voice_freq"] >> pref.voice_freq
|
||||
S["voice_sound"] >> pref.voice_sound
|
||||
S["custom_speech_bubble"] >> pref.custom_speech_bubble
|
||||
S["species_sound"] >> pref.species_sound // CHOMPEdit
|
||||
|
||||
/datum/category_item/player_setup_item/vore/size/save_character(var/savefile/S)
|
||||
S["size_multiplier"] << pref.size_multiplier
|
||||
@@ -45,6 +47,7 @@
|
||||
S["voice_freq"] << pref.voice_freq
|
||||
S["voice_sound"] << pref.voice_sound
|
||||
S["custom_speech_bubble"] << pref.custom_speech_bubble
|
||||
S["species_sound"] << pref.species_sound // CHOMPEdit
|
||||
|
||||
|
||||
/datum/category_item/player_setup_item/vore/size/sanitize_character()
|
||||
@@ -59,6 +62,8 @@
|
||||
pref.size_multiplier = initial(pref.size_multiplier)
|
||||
if(!(pref.custom_speech_bubble in selectable_speech_bubbles))
|
||||
pref.custom_speech_bubble = "default"
|
||||
if(!(pref.species_sound)) // CHOMPEdit
|
||||
pref.species_sound = "Unset" // CHOMPEdit
|
||||
|
||||
/datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character)
|
||||
character.weight = pref.weight_vr
|
||||
@@ -107,10 +112,23 @@
|
||||
. += "<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>Scaling Center:</b> <a [pref.offset_override ? "" : ""] href='?src=\ref[src];toggle_offset_override=1'><b>[pref.offset_override ? "Odd" : "Even"]</b></a><br>" //CHOMPEdit
|
||||
. += "<br>" // CHOMPEdit: Fancy:tm:
|
||||
. += "<b>Mob Speech/Noise Customization</b>" // CHOMPEdit: Fancy:tm:
|
||||
. += "<br>" // CHOMPEdit
|
||||
. += "<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_sound]</a><br>"
|
||||
. += "<a href='?src=\ref[src];voice_test=1'><b>Test Selected Voice</b></a><br>"
|
||||
. += "<b>Custom Speech Bubble:</b> <a href='?src=\ref[src];customize_speech_bubble=1'>[pref.custom_speech_bubble]</a><br>"
|
||||
// CHOMPEdit Start: Pain/Scream/Death Custom Sounds
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
. += "<br>"
|
||||
. += "<b>Species Sounds:</b> <a href='?src=\ref[src];species_sound_options=1'>[pref.species_sound]</a><br>"
|
||||
. += "<a href='?src=\ref[src];scream_test=1'><b>Test Scream Sounds</b></a><br>"
|
||||
. += "<a href='?src=\ref[src];pain_test=1'><b>Test Pain Sounds</b></a><br>"
|
||||
. += "<a href='?src=\ref[src];gasp_test=1'><b>Test Gasp Sounds</b></a><br>"
|
||||
. += "<a href='?src=\ref[src];death_test=1'><b>Test Death Sounds</b></a><br>"
|
||||
// CHOMPEdit End: Pain/Scream/Death Custom Sounds
|
||||
. += "<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>"
|
||||
@@ -203,8 +221,10 @@
|
||||
"goon speak roach",
|
||||
"goon speak skelly")
|
||||
var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", possible_voice_types)
|
||||
if(!choice)
|
||||
if(!pref.voice_sound)
|
||||
pref.voice_sound = "goon speak 1" //CHOMPEdit - Defaults voice to a less jarring sound
|
||||
else if(!choice)
|
||||
return TOPIC_REFRESH // CHOMPEdit
|
||||
else
|
||||
pref.voice_sound = choice
|
||||
return TOPIC_REFRESH
|
||||
@@ -250,5 +270,172 @@
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 50
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH // CHOMPEdit
|
||||
// CHOMPEdit Start: Pain/Scream/Death sounds
|
||||
else if(href_list["species_sound_options"]) // You shouldn't be able to see this option if you don't have the option to select a custom icon base, so we don't need to re-check for safety here.
|
||||
var/list/possible_species_sound_types = list(
|
||||
"Unset",
|
||||
"Generic/Human",
|
||||
"Canine",
|
||||
"Feline",
|
||||
"Cervine")
|
||||
//"Vulpine") TBD! Need moar sounds. :3
|
||||
var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's pain, death, gasp, and scream sounds?", "Species Sounds", possible_species_sound_types)
|
||||
if(!choice)
|
||||
return TOPIC_REFRESH // No choice? Don't reset our selection
|
||||
else
|
||||
pref.species_sound = choice
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["scream_test"])
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_scream_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_scream_sounds))
|
||||
if("Cervine")
|
||||
S = sound(pick(cervine_scream_sounds))
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(female_generic_scream_sounds))
|
||||
else
|
||||
S = sound(pick(male_generic_scream_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_scream_sound))
|
||||
else
|
||||
S = sound(pick(os.male_scream_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_scream_sound))
|
||||
else
|
||||
S = sound(pick(os.male_scream_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
|
||||
return ..();
|
||||
else if(href_list["pain_test"])
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_pain_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_pain_sounds))
|
||||
if("Cervine")
|
||||
to_chat("<span class='warning'>This set does not have pain sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(female_generic_pain_sounds))
|
||||
else
|
||||
S = sound(pick(male_generic_pain_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_pain_sound))
|
||||
else
|
||||
S = sound(pick(os.male_pain_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_pain_sound))
|
||||
else
|
||||
S = sound(pick(os.male_pain_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["gasp_test"])
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_gasp_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_gasp_sounds))
|
||||
if("Cervine")
|
||||
to_chat("<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(female_generic_gasp_sounds))
|
||||
else
|
||||
S = sound(pick(male_generic_gasp_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_gasp_sound))
|
||||
else
|
||||
S = sound(pick(os.male_gasp_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_gasp_sound))
|
||||
else
|
||||
S = sound(pick(os.male_gasp_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["death_test"])
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_death_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_death_sounds))
|
||||
if("Cervine")
|
||||
S = sound(pick(cervine_death_sounds))
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(female_generic_death_sounds))
|
||||
else
|
||||
S = sound(pick(male_generic_death_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_death_sound))
|
||||
else
|
||||
S = sound(pick(os.male_death_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_death_sound))
|
||||
else
|
||||
S = sound(pick(os.male_death_sound))
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
// CHOMPEdit End
|
||||
return ..();
|
||||
|
||||
@@ -257,6 +257,9 @@
|
||||
//Any additional non-trait settings can be applied here
|
||||
new_S.blood_color = pref.blood_color
|
||||
|
||||
if(pref.species_sound && new_S.selects_bodytype && pref.custom_base) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds. Don't try to do this if it doesn't exist, we aren't a custom species, and we don't have a custom base.
|
||||
new_S.copy_species_sounds(new_S, pref.species_sound, pref.custom_base) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds
|
||||
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
//Statistics for this would be nice
|
||||
var/english_traits = english_list(new_S.traits, and_text = ";", comma_text = ";")
|
||||
|
||||
Reference in New Issue
Block a user