Species Sounds Hotfix 2

Gives Cough/Sneeze/Gasp back default sounds if they lack one in their species list.
Fixes death sound doubling up.
Fixes runtime in sounds - it will now simply return null rather than trying to index the list and failing.
This commit is contained in:
Rykka Stormheart
2023-03-28 21:01:49 -07:00
parent 6916040a4d
commit c4921dfdf7
6 changed files with 26 additions and 5 deletions

View File

@@ -402,7 +402,9 @@ var/list/species_sound_map = list(
* get_species_sound(H.species.species_sounds_male)["emote"] // If we're male, and want an emote sound gendered correctly.
*/
/proc/get_species_sound(var/sounds)
return species_sound_map[sounds]
if(!islist(species_sound_map[sounds])) // We check here if this list actually has anything in it, or if we're about to return a null index
return null // Shitty failsafe but better than rewriting an entire litany of procs rn when I'm low on time - Rykka // list('modular_chomp/sound/voice/silence.ogg')
return species_sound_map[sounds] // Otherwise, successfully return our sound
/*
* The following helper proc will select a species' default sounds - useful for if we're set to "Unset"

View File

@@ -19,8 +19,14 @@
if(ishuman(user) && !check_synthetic(user))
var/mob/living/carbon/human/H = user
var/vol = H.species.cough_volume
var/s = get_species_sound(get_gendered_sound(H))["cough"]
if(!s && !(get_species_sound(H.species.species_sounds) == "None")) // Failsafe, so we always use the default cough/etc sounds. None will cancel out anyways.
if(H.identifying_gender == FEMALE)
s = get_species_sound("Human Female")["cough"]
else // Update this if we ever get herm/etc sounds.
s = get_species_sound("Human Male")["cough"]
return list(
"sound" = get_species_sound(get_gendered_sound(H))["cough"],
"sound" = s,
"vol" = vol,
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
)

View File

@@ -12,8 +12,14 @@
var/mob/living/carbon/human/H = user
// CHOMPEdit Start: Standardize Species Sounds
var/vol = H.species.sneeze_volume
var/s = get_species_sound(get_gendered_sound(H))["sneeze"]
if(!s && !(get_species_sound(H.species.species_sounds) == "None")) // Failsafe, so we always use the default sneeze/etc sounds. None will cancel out anyways.
if(H.identifying_gender == FEMALE)
s = get_species_sound("Human Female")["sneeze"]
else // Update this if we ever get herm/etc sounds.
s = get_species_sound("Human Male")["sneeze"]
return list(
"sound" = get_species_sound(get_gendered_sound(H))["sneeze"],
"sound" = s,
"vol" = vol,
"exr" = 20,
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS

View File

@@ -31,6 +31,7 @@
if(src.death_sound_override) // Do we override the death sounds from our species list - used by only a few specific mobs. If we do, do the next one instead
playsound(src, death_sound_override, 50, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS)
else
if(!ishuman(src)) // Safety, we're not going to double up on death noises if we're not human.
playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), 50, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS)
// CHOMPStation Add End

View File

@@ -14,8 +14,14 @@
var/mob/living/carbon/human/H = user
// CHOMPEdit: Standardize Species Sounds Getters
var/vol = H.species.gasp_volume
var/s = get_species_sound(get_gendered_sound(H))["gasp"]
if(!s && !(get_species_sound(H.species.species_sounds) == "None")) // Failsafe, so we always use the default gasp/etc sounds. None will cancel out anyways.
if(H.identifying_gender == FEMALE)
s = get_species_sound("Human Female")["gasp"]
else // Update this if we ever get herm/etc sounds.
s = get_species_sound("Human Male")["gasp"]
return list(
"sound" = get_species_sound(get_gendered_sound(H))["gasp"],
"sound" = s,
"vol" = vol,
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
)

Binary file not shown.