diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm
index fb0e4ecd51..70453f57ce 100644
--- a/code/__defines/misc.dm
+++ b/code/__defines/misc.dm
@@ -439,6 +439,7 @@ GLOBAL_LIST_EMPTY(##LIST_NAME);\
#define VOLUME_CHANNEL_DOORS "Doors"
#define VOLUME_CHANNEL_INSTRUMENTS "Instruments"
#define VOLUME_CHANNEL_WEATHER "Weather"
+#define VOLUME_CHANNEL_SPECIES_SOUNDS "Species Sounds"
// Make sure you update this or clients won't be able to adjust the channel
GLOBAL_LIST_INIT(all_volume_channels, list(
@@ -448,7 +449,8 @@ GLOBAL_LIST_INIT(all_volume_channels, list(
VOLUME_CHANNEL_VORE,
VOLUME_CHANNEL_DOORS,
VOLUME_CHANNEL_INSTRUMENTS,
- VOLUME_CHANNEL_WEATHER
+ VOLUME_CHANNEL_WEATHER,
+ VOLUME_CHANNEL_SPECIES_SOUNDS
))
#define APPEARANCECHANGER_CHANGED_RACE "Race"
diff --git a/code/game/sound.dm b/code/game/sound.dm
index 18b969a2ac..46bb795a00 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -308,3 +308,132 @@ var/list/goon_speak_pug_sound = list('sound/talksounds/goon/pug.ogg', 'sound/tal
var/list/goon_speak_pugg_sound = list('sound/talksounds/goon/pugg.ogg', 'sound/talksounds/goon/pugg_ask.ogg', 'sound/talksounds/goon/pugg_exclaim.ogg')
var/list/goon_speak_roach_sound = list('sound/talksounds/goon/roach.ogg', 'sound/talksounds/goon/roach_ask.ogg', 'sound/talksounds/goon/roach_exclaim.ogg')
var/list/goon_speak_skelly_sound = list('sound/talksounds/goon/skelly.ogg', 'sound/talksounds/goon/skelly_ask.ogg', 'sound/talksounds/goon/skelly_exclaim.ogg')
+
+// CHOMPEdit Start: Species sounds. This is probably inefficient, but I'm sure someone will yell at me or just do it better later:tm:
+#define canine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg'), "pain" = list('modular_chomp/sound/voice/pain/canine/wolf_pain.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain2.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain3.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain4.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/canine/wolf_death1.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death2.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death3.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death4.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death5.ogg'))
+#define feline_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg'), "pain" = list('modular_chomp/sound/voice/pain/feline/feline_pain.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/feline/feline_death.ogg'))
+#define cervine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg'), "pain" = null, "gasp" = null, "death" = list('modular_chomp/sound/voice/death/cervine/cervine_death.ogg'))
+#define robot_sounds list("cough" = list('sound/effects/mob_effects/m_machine_cougha.ogg', 'sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/machine_sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream_silicon.ogg', 'modular_chomp/sound/voice/android_scream.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream1.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream2.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/robotic/robot_pain1.ogg', 'modular_chomp/sound/voice/pain/robotic/robot_pain2.ogg', 'modular_chomp/sound/voice/pain/robotic/robot_pain3.ogg'), "gasp" = null, "death" = list('modular_chomp/sound/voice/borg_deathsound.ogg'))
+#define male_generic_sounds list("cough" = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream/generic/male/male_scream_1.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_2.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_3.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_4.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_5.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_6.ogg'), "pain" = list('modular_chomp/sound/voice/pain/generic/male/male_pain_1.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_2.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_3.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_4.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_5.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_6.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_7.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_8.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/generic/male/male_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/male/male_gasp2.ogg', 'modular_chomp/sound/voice/gasp/generic/male/male_gasp3.ogg'), "death" = list('modular_chomp/sound/voice/death/generic/male/male_death_1.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_2.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_3.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_4.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_5.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_6.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_7.ogg'))
+#define female_generic_sounds list("cough" = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg'), "sneeze" = list('sound/effects/mob_effects/f_sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream/generic/female/female_scream_1.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_2.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_3.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_4.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_5.ogg'), "pain" = list('modular_chomp/sound/voice/pain/generic/female/female_pain_1.ogg', 'modular_chomp/sound/voice/pain/generic/female/female_pain_2.ogg', 'modular_chomp/sound/voice/pain/generic/female/female_pain_3.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg'), "death" = list('modular_chomp/sound/voice/death/generic/female/female_death_1.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_2.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_3.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_4.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_5.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_6.ogg'))
+#define spider_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/spiderchitter.ogg'), "pain" = list('sound/voice/spiderchitter.ogg'), "gasp" = null, "death" = list('modular_chomp/sound/voice/death/spider/spider_death.ogg'))
+#define mouse_sounds list("cough" = list('sound/effects/mouse_squeak.ogg'), "sneeze" = list('sound/effects/mouse_squeak.ogg'), "scream" = list('sound/effects/mouse_squeak_loud.ogg'), "pain" = list('sound/effects/mouse_squeak.ogg'), "gasp" = list('sound/effects/mouse_squeak.ogg'), "death" = list('sound/effects/mouse_squeak_loud.ogg'))
+#define lizard_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg'), "pain" = list('modular_chomp/sound/voice/pain/lizard/lizard_pain.ogg'), "gasp" = null, "death" = list('modular_chomp/sound/voice/death/lizard/lizard_death.ogg'))
+#define vox_sounds list("cough" = list('sound/voice/shriekcough.ogg'), "sneeze" = list('sound/voice/shrieksneeze.ogg'), "scream" = list('sound/voice/shriek1.ogg'), "pain" = list('sound/voice/shriek1.ogg'), "gasp" = null, "death" = null)
+#define slime_sounds list("cough" = list('sound/effects/slime_squish.ogg'), "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
+#define xeno_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/xeno/alien_roar1.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar2.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar3.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar4.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar5.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar6.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar7.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar8.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar9.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar10.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar11.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar12.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/xeno/alien_hiss1.ogg'), "death" = list('modular_chomp/sound/voice/death/xeno/xeno_death.ogg', 'modular_chomp/sound/voice/death/xeno/xeno_death2.ogg'))
+#define teshari_sounds list("cough" = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg'), "sneeze" = list('sound/effects/mob_effects/tesharisneeze.ogg'), "scream" = list('sound/effects/mob_effects/teshariscream.ogg'), "pain" = null, "gasp" = null, "death" = null)
+#define raccoon_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/raccoon.ogg'), "pain" = list('sound/voice/raccoon.ogg'), "gasp" = null, "death" = list('sound/voice/raccoon.ogg'))
+#define metroid_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/metroid/metroidsee.ogg'), "pain" = list('sound/metroid/metroidsee.ogg'), "gasp" = null, "death" = list('sound/metroid/metroiddeath.ogg'))
+#define vulpine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/vulpine/fox_yip1.ogg', 'modular_chomp/sound/voice/scream/vulpine/fox_yip2.ogg', 'modular_chomp/sound/voice/scream/vulpine/fox_yip3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/vulpine/fox_pain1.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain2.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain3.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain4.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/canine/wolf_death1.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death2.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death3.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death4.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death5.ogg'))
+#define no_sounds list("cough" = null, "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
+#define use_default list("cough" = null, "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
+/*
+ * TBD Sound Defines below
+*/
+/*
+#define avian_sounds list(
+ "scream" = list(),
+ "pain" = list(),
+ "gasp" = list(),
+ "death" = list()
+)
+#define slime_sounds list(
+ "scream" = list(),
+ "pain" = list(),
+ "gasp" = list(),
+ "death" = list()
+)
+#define vulpine_sounds list(
+ "scream" = list(),
+ "pain" = list(),
+ "gasp" = list(),
+ "death" = list()
+)
+#define lizard_sounds list(
+ "scream" = list(),
+ "pain" = list(),
+ "gasp" = list(),
+ "death" = list()
+)
+*/
+
+// Not sure we even really need this
+// var/list/species_sounds = list()
+
+// Global list containing all of our sound options.
+var/list/species_sound_map = list(
+ "Canine" = canine_sounds,
+ "Cervine" = cervine_sounds,
+ "Feline" = feline_sounds,
+ "Human Male" = male_generic_sounds,
+ "Human Female" = female_generic_sounds,
+ "Lizard" = lizard_sounds,
+ "Metroid" = metroid_sounds,
+ "Mouse" = mouse_sounds,
+ "Raccoon" = raccoon_sounds,
+ "Robotic" = robot_sounds,
+ "Slime" = slime_sounds,
+ "Spider" = spider_sounds,
+ "Teshari" = teshari_sounds,
+ "Vox" = vox_sounds,
+ "Vulpine" = vulpine_sounds,
+ "Xeno" = xeno_sounds,
+ "None" = no_sounds,
+ "Unset" = use_default
+)
+
+/* // Not sure we even really need this
+/hook/startup/proc/Init_species_sounds() // The entries we're checking over MUST have unique keys.
+ for(var/i in species_sound_map)
+ species_sounds |= species_sound_map[i]
+ return 1
+*/
+
+/*
+ * Call this for when you need a sound from an already-identified list - IE, "Canine". pick() cannot parse procs.
+ * Indexes must be pre-calculated by the time it reaches here - for instance;
+ * var/mob/living/M = user
+ * get_species_sound(M.client.pref.species_sound)["scream"] will return get_species_sound("Robotic")["scream"]
+ * This can be paired with get_gendered_sound, like so: get_species_sound(get_gendered_sound(M))["emote"] <- get_gendered_sound will return whatever we have of the 3 valid options, and then get_species_sound will match that to the actual sound list.
+ * The get_species_sound proc will retrieve and return the list based on the key given - get_species_sound("Robotic")["scream"] will return list('modular_chomp/sound/voice/scream_silicon.ogg', 'modular_chomp/sound/voice/android_scream.ogg', etc)
+ * If you are adding new calls of this, follow the syntax of get_species_sound(species)["scream"] - you must attach ["emote"] to the end, outside the ()
+ * If your species has a gendered sound, DON'T PANIC. Simply set the gender_specific_species_sounds var on the species to true, and when you call this, do it like so:
+ * 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]
+
+/*
+ * The following helper proc will select a species' default sounds - useful for if we're set to "Unset"
+ * Yes it's a one-line proc, but I wanted to reduce duplicated lines as much as possible.
+*/
+/proc/select_default_species_sound(var/datum/preferences/pref) // Called in character setup. This is similar to check_gendered_sounds, except here we pull from the prefs.
+ var/datum/species/valid = coalesce(GLOB.all_species[pref.custom_base], GLOB.all_species[pref.species])
+ if(valid.gender_specific_species_sounds) // Do we have gender-specific sounds?
+ if(pref.identifying_gender == FEMALE && valid.species_sounds_female)
+ return valid.species_sounds_female
+ else if(pref.identifying_gender == MALE && valid.species_sounds_male)
+ return valid.species_sounds_male
+ else // Failsafe. Update if there's ever gendered sounds for HERM/Neuter/etc
+ return valid.species_sounds
+ else
+ return valid.species_sounds
+
+/proc/get_gendered_sound(var/mob/living/user) // Called anywhere we need gender-specific species sounds. Gets the gender-specific sound if one exists, but otherwise, will return the species-generic sound list.
+ var/mob/living/carbon/human/H = user
+ if(ishuman(H))
+ if(H.species.gender_specific_species_sounds) // Do we have gender-specific sounds?
+ if(H.identifying_gender == FEMALE && H.species.species_sounds_female)
+ return H.species.species_sounds_female
+ else if(H.identifying_gender == MALE && H.species.species_sounds_male)
+ return H.species.species_sounds_male
+ else // Failsafe. Update if there's ever gendered sounds for HERM/Neuter/etc
+ return H.species.species_sounds
+ else
+ return H.species.species_sounds
+ else
+ return user.species_sounds
+
+
+// CHOMPEdit End
diff --git a/code/modules/client/preference_setup/vore/02_size.dm b/code/modules/client/preference_setup/vore/02_size.dm
index f554db44ae..0f123e14a6 100644
--- a/code/modules/client/preference_setup/vore/02_size.dm
+++ b/code/modules/client/preference_setup/vore/02_size.dm
@@ -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,9 @@
pref.size_multiplier = initial(pref.size_multiplier)
if(!(pref.custom_speech_bubble in selectable_speech_bubbles))
pref.custom_speech_bubble = "default"
+ // var/datum/species/selected_species = GLOB.all_species[pref.species] // CHOMPEdit
+ if(!(pref.species_sound)) // CHOMPEdit // && selected_species.selects_bodytype
+ pref.species_sound = "Unset" // CHOMPEdit - otherwise, we leave this as null or w/e the default is
/datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character)
character.weight = pref.weight_vr
@@ -114,10 +120,25 @@
. += "Scale: [round(pref.size_multiplier*100)]%
"
. += "Scaled Appearance: [pref.fuzzy ? "Fuzzy" : "Sharp"]
"
. += "Scaling Center: [pref.offset_override ? "Odd" : "Even"]
" //CHOMPEdit
+ . += "
" // CHOMPEdit: Fancy:tm:
+ . += "Mob Speech/Noise Customization" // CHOMPEdit: Fancy:tm:
+ . += "
" // CHOMPEdit
. += "Voice Frequency: [pref.voice_freq]
"
. += "Voice Sounds: [pref.voice_sound]
"
. += "Test Selected Voice
"
. += "Custom Speech Bubble: [pref.custom_speech_bubble]
"
+ // CHOMPEdit Start: Pain/Scream/Death Custom Sounds
+ // var/datum/species/selected_species = GLOB.all_species[pref.species]
+ // if(selected_species.selects_bodytype)
+ . += "
"
+ . += "Species Sounds: [pref.species_sound]
"
+ . += "Test Cough Sounds
"
+ . += "Test Sneeze Sounds
"
+ . += "Test Scream Sounds
"
+ . += "Test Pain Sounds
"
+ . += "Test Gasp Sounds
"
+ . += "Test Death Sounds
"
+ // CHOMPEdit End: Pain/Scream/Death Custom Sounds
. += "
"
. += "Relative Weight: [pref.weight_vr]
"
. += "Weight Gain Rate: [pref.weight_gain]
"
@@ -210,8 +231,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
@@ -258,5 +281,104 @@
S.frequency = pick(pref.voice_freq)
S.volume = 50
SEND_SOUND(user, S)
-
- return ..();
\ No newline at end of file
+ // 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 = species_sound_map
+ var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's species sounds? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "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["cough_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["cough"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["cough"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have cough sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ else if(href_list["sneeze_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["sneeze"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["sneeze"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have sneeze sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ else if(href_list["scream_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["scream"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["scream"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have scream sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ else if(href_list["pain_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["pain"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["pain"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have pain sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ else if(href_list["gasp_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["gasp"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["gasp"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have gasp sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ else if(href_list["death_test"])
+ var/sound/S
+ var/ourpref = pref.species_sound
+ var/oursound = get_species_sound(ourpref)["death"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "Unset")
+ oursound = get_species_sound(select_default_species_sound(user))["death"]
+ S = sound(pick(oursound))
+ if(pref.species_sound == "None" || oursound == null)
+ to_chat(user, "This set does not have death sounds!")
+ return TOPIC_REFRESH
+ S.frequency = pick(pref.voice_freq)
+ S.volume = 20
+ SEND_SOUND(user, S)
+ return TOPIC_REFRESH
+ // CHOMPEdit End
+ return ..();
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index d367d6233a..042e4b7a4b 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -263,6 +263,17 @@
//Any additional non-trait settings can be applied here
new_S.blood_color = pref.blood_color
+ /*
+ if(pref.species_sound) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds. Don't try to do this if it doesn't exist. // && new_S.selects_bodytype && pref.custom_base) // 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
+ */
+ // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds.
+ var/species_sounds_to_copy = pref.species_sound // What sounds are we using?
+ if(species_sounds_to_copy == "Unset") // Are we unset?
+ species_sounds_to_copy = select_default_species_sound(pref) // This will also grab gendered versions of the sounds, if they exist.
+
+ new_S.species_sounds = species_sounds_to_copy // Now we send our sounds over to the mob
+
if(pref.species == SPECIES_CUSTOM)
//Statistics for this would be nice
var/english_traits = english_list(new_S.traits, and_text = ";", comma_text = ";")
diff --git a/code/modules/emotes/definitions/audible_cough.dm b/code/modules/emotes/definitions/audible_cough.dm
index 4e28d1db91..e30b0be3fd 100644
--- a/code/modules/emotes/definitions/audible_cough.dm
+++ b/code/modules/emotes/definitions/audible_cough.dm
@@ -12,41 +12,23 @@
emote_volume_synthetic = 50
conscious = FALSE
- emote_sound_synthetic = list(
- FEMALE = list(
- 'sound/effects/mob_effects/f_machine_cougha.ogg',
- 'sound/effects/mob_effects/f_machine_coughb.ogg'
- ),
- MALE = list(
- 'sound/effects/mob_effects/m_machine_cougha.ogg',
- 'sound/effects/mob_effects/m_machine_coughb.ogg',
- 'sound/effects/mob_effects/m_machine_coughc.ogg'
- ),
- NEUTER = list(
- 'sound/effects/mob_effects/m_machine_cougha.ogg',
- 'sound/effects/mob_effects/m_machine_coughb.ogg',
- 'sound/effects/mob_effects/m_machine_coughc.ogg'
- ),
- PLURAL = list(
- 'sound/effects/mob_effects/m_machine_cougha.ogg',
- 'sound/effects/mob_effects/m_machine_coughb.ogg',
- 'sound/effects/mob_effects/m_machine_coughc.ogg'
- )
- )
+// CHOMPEdit Start: Standardize Species Sounds
+ // emote_sound_synthetic = list()
/decl/emote/audible/cough/get_emote_sound(var/atom/user)
if(ishuman(user) && !check_synthetic(user))
var/mob/living/carbon/human/H = user
- if(H.get_gender() == FEMALE)
- if(length(H.species.female_cough_sounds))
- return list(
- "sound" = H.species.female_cough_sounds,
- "vol" = emote_volume
- )
- else
- if(length(H.species.male_cough_sounds))
- return list(
- "sound" = H.species.male_cough_sounds,
- "vol" = emote_volume
- )
+ var/vol = H.species.cough_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["cough"],
+ "vol" = vol,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ if(check_synthetic(user))
+ return list(
+ "sound" = get_species_sound("Robotic")["cough"],
+ "vol" = emote_volume,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+// CHOMPEdit End
return ..()
diff --git a/code/modules/emotes/definitions/audible_scream_ch.dm b/code/modules/emotes/definitions/audible_scream_ch.dm
index 16b5805993..91b3fbf85f 100644
--- a/code/modules/emotes/definitions/audible_scream_ch.dm
+++ b/code/modules/emotes/definitions/audible_scream_ch.dm
@@ -1,13 +1,33 @@
/decl/emote/audible/scream/get_emote_sound(var/atom/user)
..()
- var/mob/living/carbon/human/H = user
- if(H.get_gender() == FEMALE)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ var/vol = H.species.scream_volume
return list(
- "sound" = H.species.female_scream_sound,
- "vol" = emote_volume
- )
+ "sound" = get_species_sound(get_gendered_sound(H))["scream"],
+ "vol" = vol,
+ "exr" = 20,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ /* // Not sure if needed, screams are a carbon-only thing rn.
else
- return list(
- "sound" = H.species.male_scream_sound,
- "vol" = emote_volume
- )
\ No newline at end of file
+ var/mob/living/M = user
+ if((M.get_gender() == FEMALE) && female_scream_sound) // If our mob has custom sounds per-gender defined, most won't.
+ return list(
+ "sound" = female_scream_sound,
+ "vol" = 60,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ else if((M.get_gender() == MALE) && male_scream_sound) // If our mob has custom sounds per-gender defined, most won't.
+ return list(
+ "sound" = male_scream_sound,
+ "vol" = 60,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ else
+ return list(
+ "sound" = scream_sound,
+ "vol" = 60,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ */
diff --git a/code/modules/emotes/definitions/audible_scream_vr.dm b/code/modules/emotes/definitions/audible_scream_vr.dm
index c063a87a17..a8635c0166 100644
--- a/code/modules/emotes/definitions/audible_scream_vr.dm
+++ b/code/modules/emotes/definitions/audible_scream_vr.dm
@@ -1,6 +1,8 @@
/decl/emote/audible/scream/get_emote_sound(var/atom/user)
if(ishuman(user))
var/mob/living/carbon/human/H = user
+ // CHOMPEdit Start: Commenting out bc _ch calls parent.
+ /*
if(H.get_gender() == FEMALE)
return list(
"sound" = H.species.female_scream_sound,
@@ -10,4 +12,11 @@
return list(
"sound" = H.species.male_scream_sound,
"vol" = emote_volume
- )
\ No newline at end of file
+ */
+ var/vol = H.species.scream_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["scream"],
+ "vol" = vol,
+ "exr" = 20,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
diff --git a/code/modules/emotes/definitions/audible_sneeze.dm b/code/modules/emotes/definitions/audible_sneeze.dm
index a15cbaf46d..3d745fa1b7 100644
--- a/code/modules/emotes/definitions/audible_sneeze.dm
+++ b/code/modules/emotes/definitions/audible_sneeze.dm
@@ -2,12 +2,6 @@
key = "sneeze"
emote_message_1p = "You sneeze."
emote_message_3p = "sneezes."
- emote_sound_synthetic = list(
- FEMALE = 'sound/effects/mob_effects/machine_sneeze.ogg',
- MALE = 'sound/effects/mob_effects/f_machine_sneeze.ogg',
- NEUTER = 'sound/effects/mob_effects/f_machine_sneeze.ogg',
- PLURAL = 'sound/effects/mob_effects/f_machine_sneeze.ogg'
- )
emote_message_synthetic_1p = "You emit a robotic sneeze."
emote_message_synthetic_1p_target = "You emit a robotic sneeze towards TARGET."
emote_message_synthetic_3p = "emits a robotic sneeze."
@@ -16,14 +10,13 @@
/decl/emote/audible/sneeze/get_emote_sound(var/atom/user)
if(ishuman(user) && !check_synthetic(user))
var/mob/living/carbon/human/H = user
- if(H.get_gender() == FEMALE)
- return list(
- "sound" = H.species.female_sneeze_sound,
- "vol" = emote_volume
- )
- else
- return list(
- "sound" = H.species.male_sneeze_sound,
- "vol" = emote_volume
+ // CHOMPEdit Start: Standardize Species Sounds
+ var/vol = H.species.sneeze_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["sneeze"],
+ "vol" = vol,
+ "exr" = 20,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
)
+ // CHOMPEdit End
return ..()
diff --git a/code/modules/emotes/definitions/human.dm b/code/modules/emotes/definitions/human.dm
index b8571fa164..7addc1222c 100644
--- a/code/modules/emotes/definitions/human.dm
+++ b/code/modules/emotes/definitions/human.dm
@@ -4,12 +4,21 @@
/decl/emote/human/deathgasp
key = "deathgasp"
+/decl/emote/human/deathgasp/get_emote_sound(user)
+ var/mob/living/carbon/human/H = user
+ var/vol = H.species.death_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["death"],
+ "vol" = vol,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+
/decl/emote/human/deathgasp/do_emote(mob/living/carbon/human/user)
if(istype(user) && user.species.get_death_message(user) == DEATHGASP_NO_MESSAGE)
to_chat(user, SPAN_WARNING("Your species has no deathgasp."))
return
- . = ..()
-
+ . = ..()
+
/decl/emote/human/deathgasp/get_emote_message_3p(var/mob/living/carbon/human/user)
return "[user.species.get_death_message(user)]"
diff --git a/code/modules/emotes/emote_define.dm b/code/modules/emotes/emote_define.dm
index f6502015de..e8303d0b29 100644
--- a/code/modules/emotes/emote_define.dm
+++ b/code/modules/emotes/emote_define.dm
@@ -29,8 +29,8 @@ var/global/list/emotes_by_key
var/emote_message_radio_synthetic // As above, but for synthetics.
var/emote_message_muffled // A message to show if the emote is audible and the user is muzzled.
- var/list/emote_sound // A sound for the emote to play.
- // Can either be a single sound, a list of sounds to pick from, or an
+ var/list/emote_sound // A sound for the emote to play.
+ // Can either be a single sound, a list of sounds to pick from, or an
// associative array of gender to single sounds/a list of sounds.
var/list/emote_sound_synthetic // As above, but used when check_synthetic() is true.
var/emote_volume = 50 // Volume of sound to play.
@@ -42,7 +42,7 @@ var/global/list/emotes_by_key
var/check_range // falsy, or a range outside which the emote will not work
var/conscious = TRUE // Do we need to be awake to emote this?
var/emote_range = 0 // If >0, restricts emote visibility to viewers within range.
-
+
var/sound_preferences = list(/datum/client_preference/emote_noises) // Default emote sound_preferences is just emote_noises. Belch emote overrides this list for pref-checks.
var/sound_vary = FALSE
@@ -187,12 +187,12 @@ var/global/list/emotes_by_key
if(islist(sound_to_play) && length(sound_to_play))
sound_to_play = pick(sound_to_play)
if(sound_to_play)
- //CHOMPEdit Add - Preference for variable pitch
+ //CHOMPEdit Add - Preference for variable pitch + Extra range argument
if(istype(user, /mob))
var/mob/u = user
- playsound(user.loc, sound_to_play, use_sound["vol"], u.is_preference_enabled(/datum/client_preference/random_emote_pitch) && sound_vary, frequency = u.voice_freq, preference = sound_preferences) //CHOMPEdit
+ playsound(user.loc, sound_to_play, use_sound["vol"], u.is_preference_enabled(/datum/client_preference/random_emote_pitch) && sound_vary, extrarange = use_sound["exr"], frequency = u.voice_freq, preference = sound_preferences, volume_channel = use_sound["volchannel"]) //CHOMPEdit
else
- playsound(user.loc, sound_to_play, use_sound["vol"], sound_vary, frequency = null, preference = sound_preferences) //VOREStation Add - Preference
+ playsound(user.loc, sound_to_play, use_sound["vol"], sound_vary, extrarange = use_sound["exr"], frequency = null, preference = sound_preferences, volume_channel = use_sound["volchannel"]) //VOREStation Add - Preference // CHOMPEdit: volume channel + range
//CHOMPEdit End - Previous line used to be outside an if/else before the edit.
/decl/emote/proc/mob_can_use(var/mob/user)
diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm
index 1aefd5e2a4..06eca155a1 100644
--- a/code/modules/mob/living/bot/bot.dm
+++ b/code/modules/mob/living/bot/bot.dm
@@ -42,6 +42,8 @@
var/frustration = 0
var/max_frustration = 0
+ can_pain_emote = FALSE // CHOMPEdit: Sanity/safety, if bots ever get emotes later, undo this
+
/mob/living/bot/New()
..()
update_icons()
@@ -325,7 +327,7 @@
if(makeStep(patrol_path))
frustration = 0
else if(max_frustration)
- frustration++
+ frustration++
//CHOMPEdit End
return
diff --git a/code/modules/mob/living/carbon/brain/brain.dm b/code/modules/mob/living/carbon/brain/brain.dm
index 8743d0b7e4..c2f7d49ba8 100644
--- a/code/modules/mob/living/carbon/brain/brain.dm
+++ b/code/modules/mob/living/carbon/brain/brain.dm
@@ -9,6 +9,7 @@
icon = 'icons/obj/surgery.dmi'
icon_state = "brain1"
no_vore = TRUE //VOREStation Edit - PLEASE. lol.
+ can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
/mob/living/carbon/brain/Initialize()
. = ..()
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index df195a495e..0e2e7598ff 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -152,4 +152,39 @@
damage = damage * damage_mod
- return damage
\ No newline at end of file
+ return damage
+
+/*
+ * CHOMPEdit Start: Pain/etc calculations, but more efficient:tm: - this should work for literally anything that applies to health. Far better than slapping emote("pain") everywhere like scream does.
+ * The reason we're doing this here is to enable carbons to handle pain differently if they need to - in this case, we're going to check if we're synthetic here, anyways. Essentially a dupe of human_damage.dm's updatehealth()
+ * Human updatehealth() doesn't call parent, so we can safely ignore human checks, but we're going to put sanity in anyways
+*/
+/mob/living/carbon/updatehealth()
+ if(status_flags & GODMODE)
+ health = 100
+ set_stat(CONSCIOUS)
+ else
+ var/initialhealth = health // CHOMPEdit: Getting our health before this check
+ health = getMaxHealth() - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
+ if(!((ishuman(src)) || (issilicon(src))) && can_feel_pain() || ((src.isSynthetic() && synth_cosmetic_pain))) // Only run this if we're non-human/non-silicon + can feel pain, bc humans already do this. human_damage doesn't call parent, but sanity is better here.
+ if(health < initialhealth) // Did we lose health?
+ // Yes. How much by?
+ var/damage = initialhealth - health // Get our damage (say, 200 - 180 = 20, etc etc)
+ var/pain_noise
+ if(species)
+ pain_noise = (damage * species.pain_mod) // Multiply the incoming damage by our mod. 50 damage becomes 25 x 0.6 on highest strength, meaning prob 15. 50 x 1.4 means prob 35, etc.
+ else // Sanity, in case we don't have a species
+ pain_noise = (damage * rand(0.5, 1.5)) // Multiply damage by our rand mod. 50 damage becomes 50 x 0.5, means prob 25. 50 x 1.5 means prob 75, etc.
+ switch(damage)
+ if(-INFINITY to 0)
+ return
+ if(1 to 25)
+ if(prob(pain_noise) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(26 to 50)
+ if(prob(pain_noise * 1.5) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(51 to INFINITY)
+ if(prob(pain_noise * 3) && !isbelly(loc)) // More likely, most severe damage. No pain noises inside bellies.
+ emote("pain")
+ // CHOMPEdit End: Pain
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index b8e4629299..0eb409370a 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -87,8 +87,13 @@
if(O.client && O.client.is_preference_enabled(/datum/client_preference/show_dsay))
to_chat(O, "[src] has died in [get_area(src)]. [ghost_follow_link(src, O)] ")
+ /* // CHOMPEdit Start: Replacing this with our own death sounds. :3
if(!gibbed && species.death_sound)
playsound(src, species.death_sound, 80, 1, 1)
+ */
+ if(!gibbed && !isbelly(loc))
+ playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), src.species.death_volume, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS)
+ // CHOMPEdit End
if(ticker && ticker.mode)
sql_report_death(src)
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index 0ab5bc5adc..8e8b349de6 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -173,7 +173,8 @@ var/list/_human_default_emotes = list(
/decl/emote/audible/croak_skrell,
//VOREStation Add End
//CHOMP Add start
- /decl/emote/audible/prbt2
+ /decl/emote/audible/prbt2,
+ /decl/emote/audible/pain
//CHOMP Add end
)
@@ -316,7 +317,8 @@ var/list/_simple_mob_default_emotes = list(
/decl/emote/audible/purr,
/decl/emote/audible/purrlong,
//CHOMP Add start
- /decl/emote/audible/prbt2
+ /decl/emote/audible/prbt2,
+ /decl/emote/audible/pain
//CHOMP Add end
)
//VOREStation Add End
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index b79f96633f..15f767e434 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -15,7 +15,30 @@
total_brute += O.brute_dam
total_burn += O.burn_dam
+ // CHOMPEdit Start: Pain/etc calculations, but more efficient:tm: - this should work for literally anything that applies to health. Far better than slapping emote("pain") everywhere like scream does.
+ var/initialhealth = health // CHOMPEdit: Getting our health before this check
health = getMaxHealth() - getOxyLoss() - getToxLoss() - getCloneLoss() - total_burn - total_brute
+ if(can_feel_pain() || ((isSynthetic() && synth_cosmetic_pain))) // Are we capable of feeling pain?
+ if(health < initialhealth) // Did we lose health?
+ // Yes. How much by?
+ var/damage = initialhealth - health // Get our damage (say, 200 - 180 = 20, etc etc)
+ var/pain_noise = (damage * species.pain_mod) // Multiply the incoming damage by our mod. 50 damage becomes 25 x 0.6 on highest strength, meaning prob 15. 50 x 1.4 means prob 35, etc.
+ switch(damage)
+ if(-INFINITY to 0)
+ //TODO: fix husking
+ if( ((getMaxHealth() - total_burn) < config.health_threshold_dead * huskmodifier) && stat == DEAD)
+ ChangeToHusk()
+ return
+ if(1 to 25)
+ if(prob(pain_noise) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(26 to 50)
+ if(prob(pain_noise * 1.5) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(51 to INFINITY)
+ if(prob(pain_noise * 3) && !isbelly(loc)) // More likely, most severe damage. No pain noises inside bellies.
+ emote("pain")
+ // CHOMPEdit End: Pain
//TODO: fix husking
if( ((getMaxHealth() - total_burn) < config.health_threshold_dead * huskmodifier) && stat == DEAD)
@@ -614,6 +637,20 @@ This function restores all organs.
if(organ.take_damage(0, damage, sharp, edge, used_weapon))
UpdateDamageIcon()
+ // CHOMPEdit: Pain Emotes!
+ var/pain_noise = (damage * species.pain_mod) // Halve the incoming, then multiply it by our mod. 50 damage becomes 25 x 0.6 on highest strength, meaning prob 15. 50 x 1.4 means prob 35, etc.
+ switch(damage)
+ if(0 to 25)
+ if(prob(pain_noise) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(26 to 50)
+ if(prob(pain_noise * 1.5) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(51 to INFINITY)
+ if(prob(pain_noise * 3) && !isbelly(loc)) // More likely, most severe damage. No pain noises inside bellies.
+ emote("pain")
+ // CHOMPEdit End
+
// Will set our damageoverlay icon to the next level, which will then be set back to the normal level the next mob.Life().
updatehealth()
BITSET(hud_updateflag, HEALTH_HUD)
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index d6e87f6e0b..2d8f236877 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -62,6 +62,7 @@
//Moving around with fractured ribs won't do you any good
if (prob(10) && !stat && can_feel_pain() && chem_effects[CE_PAINKILLER] < 50 && E.is_broken() && E.internal_organs.len)
custom_pain("Pain jolts through your broken [E.encased ? E.encased : E.name], staggering you!", 50)
+ emote("pain") // CHOMPStation Add: You SHOULD make a noise here.
drop_item(loc)
Stun(2)
@@ -166,6 +167,8 @@
if(!isbelly(loc)) //VOREStation Add
var/emote_scream = pick("screams in pain and ", "lets out a sharp cry and ", "cries out and ")
custom_emote(VISIBLE_MESSAGE, "[(can_feel_pain()) ? "" : emote_scream ]drops what they were holding in their [E.name]!")
+ if(can_feel_pain())
+ emote("pain") // CHOMPStation Add: You SHOULD make a noise here.
else if(E.is_malfunctioning())
switch(E.body_part)
@@ -203,7 +206,7 @@
/mob/living/carbon/human/proc/set_gender(var/g)
if(g != gender)
gender = g
-
+
if(dna.GetUIState(DNA_UI_GENDER) ^ gender == FEMALE) // XOR will catch both cases where they do not match
dna.SetUIState(DNA_UI_GENDER, gender == FEMALE)
- sync_organ_dna(dna)
\ No newline at end of file
+ sync_organ_dna(dna)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 4f497e1cd9..8c9f03ec54 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1884,17 +1884,27 @@
if (prob(5))
if(traumatic_shock >= 80)
to_chat(src, "[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!")
+ // CHOMPEdit: Pain
+ if(prob(20) && !isbelly(loc)) // Hopefully not spammy, only 20% of the time will we groan in pain + sanity for in-belly
+ emote("pain")
+ // CHOMPEdit End
Weaken(20)
if(shock_stage >= 120)
if (prob(2))
if(traumatic_shock >= 80)
to_chat(src, "[pick("You black out", "You feel like you could die any moment now", "You are about to lose consciousness")]!")
+ // CHOMPEdit: Pain
+ if(prob(40) && !isbelly(loc)) // Hopefully not spammy, only 40% of the time will we groan in pain + sanity for in-belly
+ emote("pain")
+ // CHOMPEdit End
Paralyse(5)
if(shock_stage == 150)
if(!isbelly(loc)) //VOREStation Edit
custom_emote(VISIBLE_MESSAGE, "can no longer stand, collapsing!")
+ if(prob(60)) // Hopefully not spammy, only 60% of the time will we groan in pain
+ emote("pain")
Weaken(20)
if(shock_stage >= 150)
diff --git a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm
index 8e129555b0..b49645029b 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/shadow.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/shadow.dm
@@ -12,8 +12,9 @@
has_organ = list()
siemens_coefficient = 0
- male_scream_sound = null //CHOMPedit It has no mouth yet it must scream
- female_scream_sound = null //CHOMPedit
+ // CHOMPedit: No sounds for this species
+ // male_scream_sound = null //CHOMPedit It has no mouth yet it must scream
+ // female_scream_sound = null //CHOMPedit
blood_color = "#CCCCCC"
flesh_color = "#AAAAAA"
@@ -33,4 +34,4 @@
/datum/species/shadow/handle_death(var/mob/living/carbon/human/H)
spawn(1)
new /obj/effect/decal/cleanable/ash(H.loc)
- qdel(H)
\ No newline at end of file
+ qdel(H)
diff --git a/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm b/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
index ebc5237c08..14109882dc 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/skeleton.dm
@@ -15,8 +15,9 @@
spawn_flags = SPECIES_IS_RESTRICTED
appearance_flags = null
- male_scream_sound = null //CHOMPedit Screaming skeletons would be funny, but needs better sounds
- female_scream_sound = null //CHOMPedit
+ // CHOMPedit: No sounds for this species
+ // male_scream_sound = null //CHOMPedit Screaming skeletons would be funny, but needs better sounds
+ // female_scream_sound = null //CHOMPedit
show_ssd = null
@@ -53,4 +54,4 @@
heat_level_2 = 3000
heat_level_3 = 4000
- body_temperature = T20C
\ No newline at end of file
+ body_temperature = T20C
diff --git a/code/modules/mob/living/carbon/human/species/outsider/vox.dm b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
index 29117ede0a..7a7844efe6 100644
--- a/code/modules/mob/living/carbon/human/species/outsider/vox.dm
+++ b/code/modules/mob/living/carbon/human/species/outsider/vox.dm
@@ -28,12 +28,17 @@
scream_verb_1p = "shriek"
scream_verb_3p = "shrieks"
- male_scream_sound = 'sound/voice/shriek1.ogg'
- female_scream_sound = 'sound/voice/shriek1.ogg'
- male_cough_sounds = list('sound/voice/shriekcough.ogg')
- female_cough_sounds = list('sound/voice/shriekcough.ogg')
- male_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
- female_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
+ pain_verb_1p = "shriek"
+ pain_verb_3p = "shrieks"
+ species_sounds = "Vox"
+ // CHOMPedit: Species Sounds Standardization
+ // male_scream_sound = list('sound/voice/shriek1.ogg') // CHOMPEdit: List-ified
+ // female_scream_sound = list('sound/voice/shriek1.ogg') // CHOMPEdit: List-ified
+ // male_cough_sounds = list('sound/voice/shriekcough.ogg')
+ // female_cough_sounds = list('sound/voice/shriekcough.ogg')
+ // male_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
+ // female_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
+ // CHOMPEdit End
warning_low_pressure = 50
hazard_low_pressure = 0
diff --git a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm
index 2b8edb450f..836194f2e0 100644
--- a/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm
+++ b/code/modules/mob/living/carbon/human/species/shadekin/shadekin.dm
@@ -22,8 +22,8 @@
unarmed_types = list(/datum/unarmed_attack/stomp, /datum/unarmed_attack/kick, /datum/unarmed_attack/claws/shadekin, /datum/unarmed_attack/bite/sharp/shadekin)
rarity_value = 15 //INTERDIMENSIONAL FLUFFERS
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
inherent_verbs = list(/mob/proc/adjust_hive_range)
@@ -63,10 +63,10 @@
// has_glowing_eyes = TRUE //Applicable through neutral taits.
death_message = "phases to somewhere far away!"
- male_cough_sounds = null
- female_cough_sounds = null
- male_sneeze_sound = null
- female_sneeze_sound = null
+ // male_cough_sounds = null
+ // female_cough_sounds = null
+ // male_sneeze_sound = null
+ // female_sneeze_sound = null
speech_bubble_appearance = "ghost"
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index 20646a16f6..04cc78d436 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -80,12 +80,32 @@
//Soundy emotey things.
var/scream_verb_1p = "scream"
var/scream_verb_3p = "screams"
+ // CHOMPEdit Start: Overriding with our own species-specific sounds.
+ // If you're wanting to know where the lists are per-species, go to sound.dm
+ /*
var/male_scream_sound = list('sound/effects/mob_effects/m_scream_1.ogg','sound/effects/mob_effects/m_scream_2.ogg','sound/effects/mob_effects/m_scream_3.ogg','sound/effects/mob_effects/m_scream_4.ogg') //CHOMpedit start : Added tgstation screams
var/female_scream_sound = list('sound/effects/mob_effects/f_scream_1.ogg','sound/effects/mob_effects/f_scream_2.ogg','sound/effects/mob_effects/f_scream_3.ogg','sound/effects/mob_effects/f_scream_4.ogg') //CHOMPedit end
var/male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg')
var/female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg')
var/male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg'
var/female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg'
+ */
+ /* Our base species sounds.
+ * Note that species_sounds is meant to be used in the place of gendered sound.
+ * If your species has gendered sounds, set 'gender_specific_species_sounds' to TRUE, and define your gendered sounds below.
+ */
+ var/species_sounds = "None"
+ var/gender_specific_species_sounds = FALSE // This variable controls if our audible emotes pick based off of gender. Only humans have these so far.
+ var/species_sounds_male = "None" // Safely ignored if the above is set FALSE
+ var/species_sounds_female = "None" // Safely ignored if the above is set FALSE
+ var/cough_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
+ var/sneeze_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
+ var/scream_volume = 60 // Self-explanatory, define this separately on your species if the sound files are louder.
+ var/pain_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
+ var/gasp_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
+ var/death_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
+ // var/species_sounds_herm // If you want a custom sound played for other genders, just add them like so
+ // CHOMPEdit End
// Combat/health/chem/etc. vars.
var/total_health = 100 // How much damage the mob can take before entering crit.
@@ -575,4 +595,3 @@
/datum/species/proc/post_spawn_special(mob/living/carbon/human/H)
return
-
diff --git a/code/modules/mob/living/carbon/human/species/station/alraune.dm b/code/modules/mob/living/carbon/human/species/station/alraune.dm
index 665408704a..74ad9920b4 100644
--- a/code/modules/mob/living/carbon/human/species/station/alraune.dm
+++ b/code/modules/mob/living/carbon/human/species/station/alraune.dm
@@ -17,8 +17,8 @@
base_species = SPECIES_ALRAUNE
selects_bodytype = SELECTS_BODYTYPE_CUSTOM //VOREStation edit
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
wikilink="https://wiki.chompstation13.net/index.php?title=Alraune" //CHOMPedit: add wiki link
body_temperature = T20C
diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
index c140d7c8bd..b8b3fd357b 100644
--- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm
@@ -16,8 +16,8 @@
you select and set this species as your species. Please look at the VORE tab if you select this species."
catalogue_data = list(/datum/category_item/catalogue/fauna/custom_species)
- male_scream_sound = null //CHOMPedit These are going to be a hassle for custom species if not null
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit These are going to be a hassle for custom species if not null
+ // female_scream_sound = null //CHOMPedit
name_language = null // Use the first-name last-name generator rather than a language scrambler
min_age = 18
diff --git a/code/modules/mob/living/carbon/human/species/station/golem.dm b/code/modules/mob/living/carbon/human/species/station/golem.dm
index 76b5fb7c38..f08eddeb8a 100644
--- a/code/modules/mob/living/carbon/human/species/station/golem.dm
+++ b/code/modules/mob/living/carbon/human/species/station/golem.dm
@@ -11,8 +11,8 @@
spawn_flags = SPECIES_IS_RESTRICTED
siemens_coefficient = 0
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
assisted_langs = list()
@@ -38,4 +38,4 @@
H.mind.special_role = "Golem"
H.real_name = "adamantine golem ([rand(1, 1000)])"
H.name = H.real_name
- ..()
\ No newline at end of file
+ ..()
diff --git a/code/modules/mob/living/carbon/human/species/station/greyYW.dm b/code/modules/mob/living/carbon/human/species/station/greyYW.dm
index b392691a28..852186daef 100644
--- a/code/modules/mob/living/carbon/human/species/station/greyYW.dm
+++ b/code/modules/mob/living/carbon/human/species/station/greyYW.dm
@@ -27,8 +27,8 @@
darksight = 5
reagent_tag = IS_GREY
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
min_age = 18
max_age = 130
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey.dm b/code/modules/mob/living/carbon/human/species/station/monkey.dm
index 35e975282e..6efc9b4220 100644
--- a/code/modules/mob/living/carbon/human/species/station/monkey.dm
+++ b/code/modules/mob/living/carbon/human/species/station/monkey.dm
@@ -22,8 +22,8 @@
tail = "chimptail"
fire_icon_state = "monkey"
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
unarmed_types = list(/datum/unarmed_attack/bite, /datum/unarmed_attack/claws)
inherent_verbs = list(/mob/living/proc/ventcrawl)
diff --git a/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
index 583d7798db..7e6546f84a 100644
--- a/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/monkey_vr.dm
@@ -6,8 +6,8 @@
tail = null //The tail is part of its body due to tail using the "icons/effects/species.dmi" file. It must be null, or they'll have a chimp tail.
greater_form = "Akula"
default_language = "Skrellian" //Closest we have.
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
/datum/species/monkey/sergal
name = SPECIES_MONKEY_SERGAL
@@ -16,8 +16,8 @@
deform = 'icons/mob/human_races/monkeys/r_sergaling_vr.dmi'
tail = null
default_language = LANGUAGE_SAGARU
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
/datum/species/monkey/sparra
name = SPECIES_MONKEY_NEVREAN
@@ -27,8 +27,8 @@
icobase = 'icons/mob/human_races/monkeys/r_sparra_vr.dmi'
deform = 'icons/mob/human_races/monkeys/r_sparra_vr.dmi'
default_language = LANGUAGE_BIRDSONG
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
/* Example from Polaris code
@@ -58,8 +58,9 @@
flesh_color = "#966464"
base_color = "#000000"
tail = null
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ species_sounds = "Canine"
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
//INSERT CODE HERE SO MONKEYS CAN BE SPAWNED.
//Also, M was added to the end of the spawn names to signify that it's a monkey, since some names were conflicting.
@@ -74,4 +75,4 @@
..(new_loc, "Sparra")
/mob/living/carbon/human/wolpin/New(var/new_loc)
- ..(new_loc, "Wolpin")
\ No newline at end of file
+ ..(new_loc, "Wolpin")
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
index 66ae511d85..33081a28bb 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
@@ -42,16 +42,17 @@ var/datum/species/shapeshifter/promethean/prometheans
speech_bubble_appearance = "slime"
- male_cough_sounds = list('sound/effects/slime_squish.ogg')
- female_cough_sounds = list('sound/effects/slime_squish.ogg')
+ // male_cough_sounds = list('sound/effects/slime_squish.ogg')
+ // female_cough_sounds = list('sound/effects/slime_squish.ogg')
+ species_sounds = "Slime"
min_age = 1
max_age = 16
economic_modifier = 3
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
gluttonous = 1
virus_immune = 1
diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm
index 93ba33de30..437255541c 100644
--- a/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -39,6 +39,13 @@
O_INTESTINE = /obj/item/organ/internal/intestine
)
+ // CHOMPEdit: Species Specific Sounds
+ species_sounds = "Human Male"
+ gender_specific_species_sounds = TRUE
+ species_sounds_male = "Human Male"
+ species_sounds_female = "Human Female"
+ // CHOMPEdit End
+
inherent_verbs = list(
/mob/living/carbon/human/proc/tie_hair)
@@ -77,9 +84,13 @@
max_age = 260
economic_modifier = 10
-
- male_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg') //CHOMPedit added unathi scream
- female_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg') //CHOMPedit
+
+ // CHOMPEdit: Reverted these back to Polaris, but commented them out. We're using species-specific sounds instead.
+ // male_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg')
+ // female_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg')
+
+ pain_verb_1p = list("hiss", "growl") // CHOMPEdit: Unathi pain emotes
+ pain_verb_3p = list("hisses", "growls") // CHOMPEdit: Pain emotes
blurb = "A heavily reptillian species, Unathi hail from the \
Uuosa-Eso system, which roughly translates to 'burning mother'.
Coming from a harsh, inhospitable \
@@ -206,8 +217,14 @@
economic_modifier = 10
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // CHOMPEdit Start: Species sounds
+ species_sounds = "Feline"
+ // male_scream_sound = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
+ //female_scream_sound = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
+
+ pain_verb_1p = list("hiss", "growl", "yowl") // CHOMPEdit: Unathi pain emotes
+ pain_verb_3p = list("hisses", "growls", "yowls") // CHOMPEdit: Pain emotes
+ // CHOMPEdit End
blurb = "The Tajaran are a mammalian species resembling roughly felines, hailing from Meralar in the Rarkajar system. \
While reaching to the stars independently from outside influences, the humans engaged them in peaceful trade contact \
@@ -315,8 +332,8 @@
economic_modifier = 10
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
darksight = 4
flash_mod = 1.2
@@ -420,8 +437,8 @@
min_age = 16
max_age = 90
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "The Zaddat are an Unathi client race only recently introduced to SolGov space. Having evolved on \
the high-pressure and post-apocalyptic world of Xohok, Zaddat require an environmental suit called a Shroud \
@@ -541,8 +558,9 @@
economic_modifier = 10
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // CHOMPEdit: For shits and giggles, I want someone to give the Diona plant sounds from like, WoW. lmao
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
index 7f730d6b58..7b4d4563e4 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
@@ -35,8 +35,7 @@
min_age = 18
max_age = 80
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ species_sounds = "Unset" // CHOMPEdit: Chimera get a default/safety of unset, going off their icon base if there's none overriding.
blurb = "Some amalgamation of different species from across the universe,with extremely unstable DNA, making them unfit for regular cloners. \
Widely known for their voracious nature and violent tendencies when stressed or left unfed for long periods of time. \
@@ -357,8 +356,9 @@
min_age = 18
max_age = 80
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ species_sounds = "Spider"
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "Vasilissans are a tall, lanky, spider like people. \
Each having four eyes, an extra four, large legs sprouting from their back, and a chitinous plating on their body, and the ability to spit webs \
@@ -437,8 +437,11 @@
min_age = 18
max_age = 200
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // CHOMPEdit Start: Species Sounds
+ species_sounds = "Canine"
+ // male_scream_sound = null
+ // female_scream_sound = null
+ // CHOMPEdit End
blurb = "Big buff werewolves. These are a limited functionality event species that are not balanced for regular gameplay. Adminspawn only."
@@ -473,4 +476,3 @@
BP_L_FOOT = list("path" = /obj/item/organ/external/foot),
BP_R_FOOT = list("path" = /obj/item/organ/external/foot/right)
)
-
diff --git a/code/modules/mob/living/carbon/human/species/station/station_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
index ce30464ade..097e95e4dc 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_vr.dm
@@ -21,8 +21,9 @@
min_age = 18
max_age = 110
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ species_sounds = "Canine" // CHOMPEdit: Species sounds
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "There are two subspecies of Sergal; Southern and Northern. Northern sergals are a highly aggressive race \
that lives in the plains and tundra of their homeworld. They are characterized by long, fluffy fur bodies with cold colors; \
@@ -33,7 +34,7 @@
lifespan, but due to their lust for violence, only a handful have ever survived beyond the age of 80, such as the infamous and \
legendary General Rain Silves who is claimed to have lived to 5000."
-//CHOMPStation Removal
+//CHOMPStation Removal
// wikilink="https://www.yawn.ocry.com/Sergal"
catalogue_data = list(/datum/category_item/catalogue/fauna/sergal)
@@ -91,8 +92,8 @@
min_age = 18
max_age = 110
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "The Akula are a species of amphibious humanoids like the Skrell, but have an appearance very similar to that of a shark. \
They were first discovered as a primitive race of underwater dwelling tribal creatures by the Skrell. At first they were not believed \
@@ -102,7 +103,7 @@
surviving in open air for long periods of time. However, Akula even today still require a high humidity environment to avoid drying out \
after a few days, which would make life on an arid world like Virgo-Prime nearly impossible if it were not for Skrellean technology to aid them."
-//CHOMPStation Removal
+//CHOMPStation Removal
// wikilink="https://www.yawn.ocry.com/Akula"
catalogue_data = list(/datum/category_item/catalogue/fauna/akula)
@@ -147,8 +148,9 @@
min_age = 18
max_age = 110
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
+ // CHOMPEdit Start: Missing Sounds, so none for this race.
blurb = "Nevreans are a race of avian and dinosaur-like creatures living on Tal. They belong to a group of races that hails from Eltus, \
in the Vilous system. Unlike sergals whom they share a star system with, their species is a very peaceful one. They possess remarkable \
@@ -197,8 +199,9 @@
min_age = 18
max_age = 110
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
+ species_sounds = "Vulpine" // CHOMPEdit: Species Sounds
blurb = "The fox-like Zorren are native to Virgo-Prime, however there are two distinct varieties of Zorren one with large ears and shorter fur, \
and the other with longer fur that is a bit more vibrant. The long-eared, short-furred Zorren have come to be known as Flatland Zorren as that \
@@ -255,27 +258,34 @@
inherent_verbs = list(/mob/living/carbon/human/proc/lick_wounds,
/mob/living/carbon/human/proc/tie_hair)
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
+ // female_scream_sound = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
+ // CHOMPEdit Start: Add Pain/Gasp/Death sounds
+ pain_verb_1p = list("yelp", "growl")
+ pain_verb_3p = list("yelps", "growls")
+
+ species_sounds = "Canine"
+
+ // CHOMPEdit End
//CHOMPStation Removal
// wikilink="https://wiki.vore-station.net/Backstory#Vulpkanin"
catalogue_data = list(/datum/category_item/catalogue/fauna/vulpkanin)
-
+
//Furry fox-like animals shouldn't start freezing at 5 degrees celsius.
//Minor cold is resisted, but not severe frost.
- cold_discomfort_level = 263 //Not as good at surviving the frost as tajara, but still better than humans.
-
+ cold_discomfort_level = 263 //Not as good at surviving the frost as tajara, but still better than humans.
+
cold_level_1 = 243 //Default 260, other values remain at default. Starts taking damage at -30 celsius. Default tier 2 is -70 and tier 3 is -150
-
-
- breath_cold_level_1 = 220 // Default 240, lower is better.
-
+
+
+ breath_cold_level_1 = 220 // Default 240, lower is better.
+
//While foxes can survive in deserts, that's handled by zorren. It's a good contrast that our vulp find heat a little uncomfortable.
-
+
heat_discomfort_level = 295 //Just above standard 20 C to avoid heat message spam, same as Taj
-
+
heat_level_1 = 345 //Default 360
heat_level_2 = 390 //Default 400
heat_level_3 = 900 //Default 1000
@@ -296,7 +306,7 @@
min_age = 18
max_age = 110
-
+
heat_discomfort_strings = list(
"Your fur prickles in the heat.",
"You feel uncomfortably warm.",
@@ -380,7 +390,7 @@
min_age = 18
wikilink="https://wiki.chompstation13.net/index.php?title=Diona" //CHOMPedit
genders = list(MALE, FEMALE, PLURAL, NEUTER)
-
+
//CHOMPedit start
/datum/species/shapeshifter/promethean
spawn_flags = SPECIES_CAN_JOIN
@@ -417,7 +427,7 @@
tail_animation = 'icons/mob/species/vox/tail.dmi'
deform = 'icons/mob/human_races/r_def_vox_old.dmi'
color_mult = 1
-
+
descriptors = list(
/datum/mob_descriptor/vox_markings = 0
)
@@ -448,15 +458,13 @@
base_color = "#EECEB3"
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
blurb = "An Avian species, coming from a distant planet, the Rapalas are the very proud race.\
Sol researchers have commented on them having a very close resemblance to the mythical race called 'Harpies',\
who are known for having massive winged arms and talons as feet. They've been clocked at speeds of over 35 miler per hour chasing the planet's many fish-like fauna.\
The Rapalan's home-world 'Verita' is a strangely habitable gas giant, while no physical earth exists, there are fertile floating islands orbiting around the planet from past asteroid activity."
-//CHOMPStation Removal
+//CHOMPStation Removal
// wikilink="https://www.yawn.ocry.com/Rapala"
catalogue_data = list(/datum/category_item/catalogue/fauna/rapala)
@@ -478,15 +486,15 @@
deform = 'icons/mob/human_races/r_shadekin_vr.dmi'
tail = "tail"
icobase_tail = 1
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
blurb = "Very little is known about these creatures. They appear to be largely mammalian in appearance. \
Seemingly very rare to encounter, there have been widespread myths of these creatures the galaxy over, \
but next to no verifiable evidence to their existence. However, they have recently been more verifiably \
documented in the Virgo system, following a mining bombardment of Virgo 3. The crew of NSB Adephagia have \
taken to calling these creatures 'Shadekin', and the name has generally stuck and spread. " //TODO: Something more fitting for black-eyes
-//CHOMPStation Removal
+//CHOMPStation Removal
// wikilink = "https://wiki.vore-station.net/Shadekin"
catalogue_data = list(/datum/category_item/catalogue/fauna/shadekin)
@@ -538,10 +546,12 @@
//has_glowing_eyes = TRUE // Applicable through traits.
+ /* // CHOMPEdit: Not defined
male_cough_sounds = null
female_cough_sounds = null
male_sneeze_sound = null
female_sneeze_sound = null
+ */
speech_bubble_appearance = "ghost"
@@ -602,8 +612,9 @@
min_age = 18
max_age = 80
- male_scream_sound = null //CHOMPedit
- female_scream_sound = null //CHOMPedit
+ // male_scream_sound = null //CHOMPedit
+ // female_scream_sound = null //CHOMPedit
+ species_sounds = "Vulpine" // CHOMPEdit: Species Sounds
//primitive_form = "" //We don't have fennec-monkey sprites.
spawn_flags = SPECIES_IS_RESTRICTED
@@ -636,8 +647,9 @@
min_age = 18
max_age = 80
- male_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit Scree
- female_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit
+ species_sounds = "Xeno"
+ // male_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit Scree
+ // female_scream_sound = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg') //CHOMPedit
blurb = "Xenomorphs hybrids are a mixture of xenomorph DNA and some other humanoid species. \
Xenomorph hyrids mostly have had had their natural aggression removed due to the gene modification process \
@@ -687,6 +699,8 @@
catalogue_data = list(/datum/category_item/catalogue/fauna/altevian)
+ species_sounds = "Mouse" // CHOMPEdit: Species Sounds
+
spawn_flags = SPECIES_CAN_JOIN
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
diff --git a/code/modules/mob/living/carbon/human/species/station/teshari.dm b/code/modules/mob/living/carbon/human/species/station/teshari.dm
index 050e3a729b..4931596e52 100644
--- a/code/modules/mob/living/carbon/human/species/station/teshari.dm
+++ b/code/modules/mob/living/carbon/human/species/station/teshari.dm
@@ -19,14 +19,16 @@
health_hud_intensity = 3
- male_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
- female_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
- male_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
- female_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
+ // CHOMPEdit Start: Species Sounds
+ species_sounds = "Teshari"
+ // male_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
+ // female_cough_sounds = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg')
+ // male_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
+ // female_sneeze_sound = 'sound/effects/mob_effects/tesharisneeze.ogg'
//CHOMPStation Add. Y'know I should probably just put this upstream.
- male_scream_sound = 'sound/effects/mob_effects/teshariscream.ogg'
- female_scream_sound = 'sound/effects/mob_effects/teshariscream.ogg'
+ // male_scream_sound = 'sound/effects/mob_effects/teshariscream.ogg'
+ // female_scream_sound = 'sound/effects/mob_effects/teshariscream.ogg'
center_offset = 0 //CHOMPEdit
//CHOMPStation Add End
diff --git a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
index c9254c0c9a..0054bbb623 100644
--- a/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
+++ b/code/modules/mob/living/carbon/human/species/virtual_reality/avatar.dm
@@ -18,10 +18,10 @@
assisted_langs = list()
- male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg')
- female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg')
- male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg'
- female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg'
+ // male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg')
+ // female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg')
+ // male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg'
+ // female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg'
valid_transform_species = list(SPECIES_HUMAN, SPECIES_HUMAN_VATBORN, SPECIES_UNATHI, SPECIES_TAJ, SPECIES_SKRELL, SPECIES_DIONA, SPECIES_TESHARI, SPECIES_VOX, SPECIES_MONKEY, SPECIES_SKELETON)
@@ -127,4 +127,4 @@
if(I)
unEquip(I,force = TRUE)
release_vore_contents(include_absorbed = TRUE, silent = TRUE)
- qdel(src)
\ No newline at end of file
+ qdel(src)
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index a5e5fece26..722062803c 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -26,4 +26,12 @@
for(var/datum/soul_link/S as anything in shared_soul_links)
S.sharer_died(gibbed)
+ // CHOMPStation Edit: All mobs can play a death_sound if set. On carbons, this is going to be handled by species.
+ if(!gibbed && !isbelly(loc))
+ 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
+ playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), 50, 1, 20, volume_channel = VOLUME_CHANNEL_SPECIES_SOUNDS)
+ // CHOMPStation Add End
+
. = ..()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 739842bf3c..7a446f3bd6 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -123,7 +123,27 @@
health = 100
set_stat(CONSCIOUS)
else
+ // CHOMPEdit Start: Pain/etc calculations, but more efficient:tm: - this should work for literally anything that applies to health. Far better than slapping emote("pain") everywhere like scream does.
+ var/initialhealth = health // CHOMPEdit: Getting our health before this check
health = getMaxHealth() - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
+ if(!((ishuman(src)) || (issilicon(src))) && src.can_pain_emote) // Only run this if we're non-human/non-silicon (bots and mechanical simplemobs should be allowed to make pain sounds) & can emote pain, bc humans + carbons already do this. human_damage doesn't call parent, but sanity is better here.
+ if(health < initialhealth) // Did we lose health?
+ // Yes. How much by?
+ var/damage = initialhealth - health // Get our damage (say, 200 - 180 = 20, etc etc)
+ var/pain_noise = (damage * rand(0.5, 1.5)) // Multiply damage by our rand mod. 50 damage becomes 50 x 0.5, means prob 25. 50 x 1.5 means prob 75, etc.
+ switch(damage)
+ if(-INFINITY to 0)
+ return
+ if(1 to 25)
+ if(prob(pain_noise) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(26 to 50)
+ if(prob(pain_noise * 1.5) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ if(51 to INFINITY)
+ if(prob(pain_noise * 3) && !isbelly(loc)) // More likely, most severe damage. No pain noises inside bellies.
+ emote("pain")
+ // CHOMPEdit End: Pain
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
//affects them once clothing is factored in. ~Errorage
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
index 33677238c0..213a5a80db 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm
@@ -118,6 +118,9 @@
)
can_be_drop_prey = FALSE //CHOMP Add
+ species_sounds = "Spider"
+ pain_emote_1p = list("chitter", "click") //CHOMP Add
+ pain_emote_3p = list("chitters", "clicks") //CHOMP Add
/mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A)
if(isliving(A))
@@ -148,4 +151,4 @@
poison_per_bite *= 1.3
/decl/mob_organ_names/spider
- hit_zones = list("cephalothorax", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "pedipalp", "mouthparts")
\ No newline at end of file
+ hit_zones = list("cephalothorax", "abdomen", "left forelegs", "right forelegs", "left hind legs", "right hind legs", "pedipalp", "mouthparts")
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
index 88908ba29d..c9fe11b486 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/mouse.dm
@@ -41,10 +41,14 @@
say_list_type = /datum/say_list/mouse
var/body_color //brown, gray and white, leave blank for random
-
+
//CHOMP Addition: Added these vore variables in and swapped the booleans from their defaults too.
can_be_drop_prey = TRUE
can_be_drop_pred = FALSE
+ species_sounds = "Mouse"
+
+ pain_emote_1p = list("squeak", "squik") // CHOMP Addition: Pain/etc sounds
+ pain_emote_1p = list("squeaks", "squiks") // CHOMP Addition: Pain/etc sounds
/mob/living/simple_mob/animal/passive/mouse/New()
..()
@@ -177,7 +181,7 @@
min_n2 = 0
max_n2 = 0
maxbodytemp = 700
-
+
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
//The names Cheese... Agent Cheese
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/raccoon_ch.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/raccoon_ch.dm
index 198dd4e96f..01f8ddc569 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/raccoon_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/raccoon_ch.dm
@@ -33,6 +33,10 @@
vore_icons = SA_ICON_LIVING | SA_ICON_REST
center_offset = 0
+ species_sounds = "Raccoon"
+ pain_emote_1p = list("chitter")
+ pain_emote_3p = list("chitters")
+
/mob/living/simple_mob/animal/passive/raccoon_ch/Initialize()
. = ..()
ghostjoin = 1
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm
index 33acad33df..e0be03396d 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/pets/dog.dm
@@ -27,6 +27,11 @@
var/obj/item/inventory_head
var/obj/item/inventory_back
+ // CHOMPAdd: :c
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+
/mob/living/simple_mob/animal/passive/dog/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/newspaper))
@@ -284,4 +289,4 @@
icon_dead = "brittany_dead"
/decl/mob_organ_names/corgi
- hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "tail", "heart") //You monster.
\ No newline at end of file
+ hit_zones = list("head", "body", "left foreleg", "right foreleg", "left hind leg", "right hind leg", "tail", "heart") //You monster.
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
index 45e5f92f0a..6ee3ca8d92 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/racoon.dm
@@ -69,6 +69,11 @@
var/list/friend_loot_list = list(/obj/item/weapon/coin) // What will make this animal non-hostile if held?
var/randomize_size = TRUE
can_be_drop_prey = TRUE //CHOMP Add
+ // CHOMPAdd: Pain/Death Sounds
+ species_sounds = "Raccoon"
+ pain_emote_1p = list("chitter")
+ pain_emote_3p = list("chitters")
+
/mob/living/simple_mob/animal/sif/sakimm/verb/remove_hat()
set name = "Remove Hat"
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army_ch.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army_ch.dm
index 420f3a498f..2c1264c69b 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/mouse_army_ch.dm
@@ -62,8 +62,11 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
var/rank //pyro, operative, ammo, stealth. more to come. Do not leave blank.
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ species_sounds = "Mouse"
+ pain_emote_1p = list("squeak", "squik") // CHOMP Addition: Pain/etc sounds
+ pain_emote_1p = list("squeaks", "squiks") // CHOMP Addition: Pain/etc sounds
/mob/living/simple_mob/animal/space/mouse_army/New()
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/vox.dm b/code/modules/mob/living/simple_mob/subtypes/animal/vox.dm
index 78063ee90a..4cc3b416d1 100644
--- a/code/modules/mob/living/simple_mob/subtypes/animal/vox.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/animal/vox.dm
@@ -8,6 +8,12 @@
min_n2 = 0 //breathe N2
max_n2 = 0
+ // CHOMPAdd: Pain sounds
+ species_sounds = "Vox"
+ pain_emote_1p = list("shriek")
+ pain_emote_3p = list("shrieks")
+ // CHOMPAdd End
+
/mob/living/simple_mob/vox/armalis
name = "serpentine alien"
real_name = "serpentine alien"
diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm
index 9cd2582bd1..c6e78d0520 100644
--- a/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/blob/blob.dm
@@ -29,8 +29,9 @@
mob_class = MOB_CLASS_SLIME
ai_holder_type = /datum/ai_holder/simple_mob/melee
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
/mob/living/simple_mob/blob/speech_bubble_appearance()
return "slime"
@@ -88,4 +89,4 @@
return ally
/decl/mob_organ_names/blob
- hit_zones = list("mass")
\ No newline at end of file
+ hit_zones = list("mass")
diff --git a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
index 4d4fda0c29..96012ad12e 100644
--- a/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/blob/spore.dm
@@ -30,6 +30,8 @@
var/can_infest = FALSE
var/is_infesting = FALSE
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
+
/datum/say_list/spore
emote_see = list("sways", "inflates briefly")
diff --git a/code/modules/mob/living/simple_mob/subtypes/horror/horror .dm b/code/modules/mob/living/simple_mob/subtypes/horror/horror .dm
index 472af6dd6b..339a6ad606 100644
--- a/code/modules/mob/living/simple_mob/subtypes/horror/horror .dm
+++ b/code/modules/mob/living/simple_mob/subtypes/horror/horror .dm
@@ -4,6 +4,8 @@
icon = 'icons/mob/horror_show/GHPS.dmi'
icon_gib = "generic_gib"
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
+
/datum/ai_holder/simple_mob/horror
hostile = TRUE // The majority of simplemobs are hostile, gaslamps are nice.
cooperative = FALSE
@@ -26,4 +28,4 @@
minbodytemp = 0
maxbodytemp = 700
- can_be_drop_prey = FALSE //CHOMP Add
\ No newline at end of file
+ can_be_drop_prey = FALSE //CHOMP Add
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid_ch.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid_ch.dm
new file mode 100644
index 0000000000..8abf4fe5e1
--- /dev/null
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/humanoid_ch.dm
@@ -0,0 +1,9 @@
+// Basically, all we're doing here (for now) is defining pain/etc sounds for combat use
+/mob/living/simple_mob/humanoid
+ pain_emote_1p = list("shout out in pain", "growl in pain", "grunt in pain", "gasp out in pain")
+ pain_emote_3p = list("shouts out in pain", "growls in pain", "grunts in pain", "gasps out in pain")
+ species_sounds = "Human Male" // Yes, we should allow them to differ based on gender, but if someone's making a custom humanoid later:tm: - set your humanoid's species_sounds to match, or var-edit it after spawn.
+
+/mob/living/simple_mob/humanoid/Initialize()
+
+ . = ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/humanoid/posessed_ch.dm b/code/modules/mob/living/simple_mob/subtypes/humanoid/posessed_ch.dm
index ee87745973..861e83a0fb 100644
--- a/code/modules/mob/living/simple_mob/subtypes/humanoid/posessed_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/humanoid/posessed_ch.dm
@@ -47,6 +47,7 @@
ai_holder_type = /datum/ai_holder/simple_mob/merc
say_list_type = /datum/say_list/possessed //Set to Null on silenced.
+ can_pain_emote = FALSE
// corpse = /obj/effect/landmark/mobcorpse/possessed
// Will eventually leave a full corpse with an activated RIG on it. But not yet.
@@ -155,4 +156,4 @@
desc = "A blood-red hardsuit featuring some fairly illegal technology. Seems to be worn down and damaged but moving with surprising speed!"
movement_cooldown = 3 //You can try running
base_attack_cooldown = 3 //You will just die tired
- melee_miss_chance = 25 //Not very coordinated though
\ No newline at end of file
+ melee_miss_chance = 25 //Not very coordinated though
diff --git a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
index b20bdbb4cd..75497a7b21 100644
--- a/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/illusion/illusion.dm
@@ -24,6 +24,8 @@
var/atom/movable/copying = null // The thing we're trying to look like.
var/realistic = FALSE // If true, things like bullets and weapons will hit it, to be a bit more convincing from a distance.
+ can_pain_emote = FALSE // CHOMPEdit: Hallucinations can't feel pain and shouldn't take damage anyways, but, sanity
+
/mob/living/simple_mob/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance().
return
@@ -113,4 +115,4 @@
/mob/living/simple_mob/illusion/get_catalogue_delay()
if(copying)
- return copying.get_catalogue_delay()
\ No newline at end of file
+ return copying.get_catalogue_delay()
diff --git a/code/modules/mob/living/simple_mob/subtypes/metroid/metBaseType.dm b/code/modules/mob/living/simple_mob/subtypes/metroid/metBaseType.dm
index 57cc5f4b0b..92b99b84f7 100644
--- a/code/modules/mob/living/simple_mob/subtypes/metroid/metBaseType.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/metroid/metBaseType.dm
@@ -59,9 +59,14 @@
var/evo_limit = 0
var/next
meat_type = /obj/item/toy/figure/bounty_hunter
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = TRUE
+ species_sounds = "Metroid"
+ pain_emote_1p = list("skree")
+ pain_emote_3p = list("skrees")
+
/mob/living/simple_mob/metroid/Initialize()
nutrition = 100 //Have them start off pretty hungry still.
existing_metroids += src //Keep track of how many for the event.
@@ -114,5 +119,5 @@
)
/mob/living/simple_mob/metroid/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 75, 1)
- ..()
\ No newline at end of file
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 75, 1)
+ ..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm b/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm
index 3e5e64ecf8..7a7c14dd4a 100644
--- a/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/metroid/metTypes.dm
@@ -71,7 +71,7 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
/mob/living/simple_mob/metroid/mine/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 50, 1)
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 50, 1)
..()
if(prob(20))
visible_message("\The [src] dropped some toy!")
@@ -213,7 +213,7 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
..()
/mob/living/simple_mob/metroid/juvenile/super/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/alpha
@@ -266,7 +266,7 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
..()
/mob/living/simple_mob/metroid/juvenile/alpha/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/alpha //active noms
@@ -343,7 +343,7 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
..()
/mob/living/simple_mob/metroid/juvenile/gamma/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/gamma //active noms
@@ -441,7 +441,7 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
..()
/mob/living/simple_mob/metroid/juvenile/zeta/death()
- playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroiddeath.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/zeta //active noms
@@ -533,12 +533,14 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
evo_limit = 2000
next = "/mob/living/simple_mob/metroid/juvenile/queen"
+ death_sound_override = list('sound/metroid/metroidomegadeath.ogg') // We override the death sound to play our custom here
+
/mob/living/simple_mob/metroid/juvenile/omega/Initialize()
playsound(src, 'sound/metroid/metroidomega.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/omega/death()
- playsound(src, 'sound/metroid/metroidomegadeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroidomegadeath.ogg', 100, 1)
..()
/mob/living/simple_mob/metroid/juvenile/omega //active noms
@@ -628,13 +630,15 @@ GLOBAL_VAR_INIT(queen_amount, 0) //We only gonna want 1 queen in the world.
next = null
is_queen = TRUE
+ death_sound_override = list('sound/metroid/metroidqueendeath.ogg') // We override the death sound to play our custom here
+
/mob/living/simple_mob/metroid/juvenile/queen/Initialize()
playsound(src, 'sound/metroid/metroidqueen.ogg', 100, 1)
GLOB.queen_amount++
..()
/mob/living/simple_mob/metroid/juvenile/queen/death()
- playsound(src, 'sound/metroid/metroidqueendeath.ogg', 100, 1)
+ // playsound(src, 'sound/metroid/metroidqueendeath.ogg', 100, 1)
GLOB.queen_amount--
..()
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
index f1c089f78b..08df5b4ad0 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/constructs/_construct.dm
@@ -63,6 +63,7 @@
// var/do_glow = TRUE
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
/mob/living/simple_mob/construct/place_spell_in_hand(var/path)
if(!path || !ispath(path))
@@ -157,4 +158,4 @@
/mob/living/simple_mob/construct/proc/remove_glow()
cut_overlays()
-*/
\ No newline at end of file
+*/
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm
index 95e3ecebe8..738cd0f1e2 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/creature.dm
@@ -29,8 +29,9 @@
speak_emote = list("gibbers")
ai_holder_type = /datum/ai_holder/simple_mob/melee
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
// Strong Variant
/mob/living/simple_mob/creature/strong
@@ -72,4 +73,4 @@
melee_damage_upper = 25
/decl/mob_organ_names/abberation
- hit_zones = list("fleshy mass", "maw", "eye(?)", "orifice(?)")
\ No newline at end of file
+ hit_zones = list("fleshy mass", "maw", "eye(?)", "orifice(?)")
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm
index 36b68d05ca..86dccd8523 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/faithless.dm
@@ -41,8 +41,9 @@
min_n2 = 0
max_n2 = 0
minbodytemp = 0
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
/mob/living/simple_mob/faithless/Process_Spacemove(var/check_drift = 0)
return 1
@@ -81,4 +82,4 @@
melee_damage_upper = 28
/decl/mob_organ_names/faithless
- hit_zones = list("body", "left appendage", "right appendage", "shadowy tendrils", "head", "right stump", "left stump", "infernal eye")
\ No newline at end of file
+ hit_zones = list("body", "left appendage", "right appendage", "shadowy tendrils", "head", "right stump", "left stump", "infernal eye")
diff --git a/code/modules/mob/living/simple_mob/subtypes/occult/unknown.dm b/code/modules/mob/living/simple_mob/subtypes/occult/unknown.dm
index 1671459c30..78ca7d4831 100644
--- a/code/modules/mob/living/simple_mob/subtypes/occult/unknown.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/occult/unknown.dm
@@ -40,8 +40,9 @@
var/all_special_attacks = list(GA_ADS, GA_CALLDOWN, GA_LINES, GA_BULLETHELL, GA_ILLUSION, GA_CONFUSION, GA_SPEEDUP)
loot_list = list(/obj/item/device/nif/glitch = 100)
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
/obj/item/projectile/energy/slow_orb
name = "TROJAN"
@@ -317,6 +318,8 @@
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/bossmob_glitch_fake
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
+
/mob/living/simple_mob/glitch_boss_fake/strong
maxHealth = 100
health = 100
@@ -346,4 +349,4 @@
pointblank = TRUE
intelligence_level = AI_SMART
vision_range = 9
- closest_distance = 4
\ No newline at end of file
+ closest_distance = 4
diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm
index 7b0f11ed6f..5c8c6003e2 100644
--- a/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/plant/tomato.dm
@@ -28,8 +28,9 @@
meat_type = /obj/item/weapon/reagent_containers/food/snacks/tomatomeat
meat_amount = 4
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain and shouldn't take damage anyways, but, sanity
/decl/mob_organ_names/tomato
- hit_zones = list("flesh", "leaf", "mouth")
\ No newline at end of file
+ hit_zones = list("flesh", "leaf", "mouth")
diff --git a/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm
index a9b95c9d70..db68032789 100644
--- a/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/plant/tree.dm
@@ -31,8 +31,9 @@
meat_amount = 2
pixel_x = -16
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ can_pain_emote = FALSE // CHOMPEdit: Can't feel pain and shouldn't take damage anyways, but, sanity
/mob/living/simple_mob/animal/space/tree/apply_melee_effects(var/atom/A)
if(isliving(A))
@@ -48,4 +49,4 @@
qdel(src)
/decl/mob_organ_names/tree
- hit_zones = list("trunk", "branches", "twigs")
\ No newline at end of file
+ hit_zones = list("trunk", "branches", "twigs")
diff --git a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
index e2d4ecea57..78b27372a4 100644
--- a/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/slime/slime.dm
@@ -81,9 +81,15 @@ var/list/_slime_default_emotes = list(
var/mood = ":3" // Icon to use to display 'mood', as an overlay.
can_enter_vent_with = list(/obj/item/clothing/head)
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: Pain Sounds
+ species_sounds = "Slime"
+ pain_emote_1p = list("squish", "squelch")
+ pain_emote_3p = list("squishes", "squelches")
+ // CHOMPAdd End
+
/mob/living/simple_mob/slime/get_available_emotes()
return global._slime_default_emotes.Copy()
@@ -253,4 +259,4 @@ var/list/_slime_default_emotes = list(
visible_message("\The [src] squishes!")
/decl/mob_organ_names/slime
- hit_zones = list("cytoplasmic membrane")
\ No newline at end of file
+ hit_zones = list("cytoplasmic membrane")
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demonAI_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demonAI_ch.dm
index 51e1f8ca99..e9e45ec776 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/demon/demonAI_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/demon/demonAI_ch.dm
@@ -62,6 +62,8 @@
var/blood_spawn = 0
var/is_shifting = FALSE
+ can_pain_emote = FALSE
+
/mob/living/simple_mob/vore/demonAI/init_vore()
if(!voremob_loaded)
return
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm
index 071aef71ca..94b5780f32 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm
@@ -50,6 +50,11 @@
say_list_type = /datum/say_list/fennec
ai_holder_type = /datum/ai_holder/simple_mob/passive
+ // CHOMPAdd: :c
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ species_sounds = "Vulpine"
+
// Activate Noms!
/mob/living/simple_mob/vore/fennec
vore_active = 1
@@ -58,12 +63,12 @@
vore_pounce_chance = 40
vore_default_mode = DM_HOLD
vore_icons = SA_ICON_LIVING
-
+
/mob/living/simple_mob/vore/fennec/init_vore() // CHOMPEdit - Allow for customizing bellies on vorecritters
if(!voremob_loaded)
return
. = ..()
-
+
var/obj/belly/B = vore_selected
B.name = "stomach"
B.desc = "Warm, slick, and wet. You're somewhere hot, tight, and very cramped, unless you happen to somehow be smaller than the fennec you're in! It's hard to see, as rippling pink walls clench and smother over your form. If you don't want to be here, a newspaper from a friend ought to get you out. ...right?"
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm
index 94ec99eeee..b4a63adb93 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/goia_ch.dm
@@ -28,6 +28,11 @@
vore_pounce_chance = 35 //More likely to nom
vore_icons = SA_ICON_LIVING | SA_ICON_REST
+ // CHOMPAdd: Don't think its checked, but just in case
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+
/mob/living/simple_mob/otie/zorgoia/New()
..()
switch(rand(9))
@@ -77,4 +82,4 @@
emote_hear = list("chuffs", "murrs", "churls", "hisses", "lets out a cougar like scream", "yawns")
emote_see = list("licks their maw", "stretches", "yawns", "noodles")
say_maybe_target = list("weh?")
- say_got_target = list("Rurrr!", "ROAR!", "RAH!")
\ No newline at end of file
+ say_got_target = list("Rurrr!", "ROAR!", "RAH!")
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/greatwolf.dm b/code/modules/mob/living/simple_mob/subtypes/vore/greatwolf.dm
index e9c0c867bd..aac01fc1af 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/greatwolf.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/greatwolf.dm
@@ -39,8 +39,13 @@
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ // CHOMPAdd End
/mob/living/simple_mob/vore/greatwolf
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander.dm b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander.dm
index 061e1fc450..82a9665959 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander.dm
@@ -48,8 +48,13 @@
vore_bump_emote = "tries to snap up"
nom_mob = TRUE
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ pain_sound = canine_pain_sounds
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ death_sound = canine_death_sounds
/datum/category_item/catalogue/fauna/leopardmander
name = "Sivian Fauna - Va'aen Drake"
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm
index 8c2a2d7027..fb2565b004 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/leopardmander_ch.dm
@@ -49,6 +49,11 @@
vore_bump_emote = "tries to snap up"
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Canine" // Argue about whether it should have canine or feline later
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ // CHOMPAdd End
/datum/category_item/catalogue/fauna/leopardmander
name = "Sivian Fauna - Va'aen Drake"
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
index 3297640ce1..799bf66503 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm
@@ -46,8 +46,14 @@
var/mob/living/carbon/human/friend
var/tamed = 0
var/tame_chance = 50 //It's a fiddy-fiddy default you may get a buddy pal or you may get mauled and ate. Win-win!
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ // CHOMPAdd End
+
// Activate Noms!
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm
index eff23b4b90..15c4e21700 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm
@@ -41,8 +41,14 @@
say_list_type = /datum/say_list/panther
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Feline"
+ pain_emote_1p = list("yowl", "growl")
+ pain_emote_3p = list("yowls", "growls")
+ // CHOMPAdd End
+
// Activate Noms!
/mob/living/simple_mob/vore/aggressive/panther
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm
index aab12f953b..450955ca01 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm
@@ -32,19 +32,25 @@
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
catalogue_data = list(/datum/category_item/catalogue/fauna/wolf)
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ // CHOMPAdd End
+
// Activate Noms!
/mob/living/simple_mob/animal/wolf
vore_active = 1
vore_icons = SA_ICON_LIVING
-
+
/mob/living/simple_mob/animal/wolf/init_vore() // CHOMPEdit - Allow for customizing bellies on vorecritters
if(!voremob_loaded)
return
. = ..()
-
+
var/obj/belly/B = vore_selected
B.vore_sound = "Tauric Swallow" // CHOMPedit - Fancy Vore Sounds
B.release_sound = "Pred Escape" // CHOMPedit - Fancy Vore Sounds
diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm
index 94f2e35469..55ca77dae4 100644
--- a/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm
+++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolfgirl.dm
@@ -23,8 +23,14 @@
say_list_type = /datum/say_list/wolfgirl
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl
-
+
can_be_drop_prey = FALSE //CHOMP Add
+ // CHOMPAdd: :c
+ species_sounds = "Canine"
+ pain_emote_1p = list("yelp", "whine", "bark", "growl")
+ pain_emote_3p = list("yelps", "whines", "barks", "growls")
+ // CHOMPAdd End
+
// Activate Noms!
/mob/living/simple_mob/vore/wolfgirl
diff --git a/code/modules/mob/living/voice/voice_vr.dm b/code/modules/mob/living/voice/voice_vr.dm
index 0eabd01a34..ac84856d9a 100644
--- a/code/modules/mob/living/voice/voice_vr.dm
+++ b/code/modules/mob/living/voice/voice_vr.dm
@@ -1,2 +1,3 @@
/mob/living/voice
- no_vore = TRUE
\ No newline at end of file
+ no_vore = TRUE
+ can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
diff --git a/code/modules/organs/pain.dm b/code/modules/organs/pain.dm
index d26b7e3088..5348b69f06 100644
--- a/code/modules/organs/pain.dm
+++ b/code/modules/organs/pain.dm
@@ -38,12 +38,20 @@
multilimb_pain_time = world.time + (100 - power)
last_pain_message = message
to_chat(src,message)
+ // CHOMPAdd: Emote in pain for custom pain, too
+ if(prob(power / 10) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ // CHOMPAdd End
else if(force || (message != last_pain_message) || (world.time >= next_pain_time))
last_pain_message = message
to_chat(src,message)
next_pain_time = world.time + (100 - power)
multilimb_pain_time = world.time + (100 - power)
+ // CHOMPAdd: Emote in pain for custom pain, too
+ if(prob(power / 10) && !isbelly(loc)) // No pain noises inside bellies.
+ emote("pain")
+ // CHOMPAdd End
/mob/living/carbon/human/proc/handle_pain()
if(stat)
diff --git a/modular_chomp/code/modules/emotes/definitions/audiable.dm b/modular_chomp/code/modules/emotes/definitions/audiable.dm
index 71b57b06c0..b01c5c2f37 100644
--- a/modular_chomp/code/modules/emotes/definitions/audiable.dm
+++ b/modular_chomp/code/modules/emotes/definitions/audiable.dm
@@ -7,4 +7,15 @@
emote_message_3p = "prbts."
emote_message_1p_target = "You prbt at TARGET."
emote_message_3p_target = "prbts at TARGET."
- emote_sound = 'sound/voice/prbt2.ogg'
\ No newline at end of file
+ emote_sound = 'sound/voice/prbt2.ogg'
+
+/decl/emote/audible/gasp/get_emote_sound(var/atom/user)
+ ..()
+ var/mob/living/carbon/human/H = user
+ // CHOMPEdit: Standardize Species Sounds Getters
+ var/vol = H.species.gasp_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["gasp"],
+ "vol" = vol,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
diff --git a/modular_chomp/code/modules/emotes/definitions/audible_pain.dm b/modular_chomp/code/modules/emotes/definitions/audible_pain.dm
new file mode 100644
index 0000000000..6a9ef0f319
--- /dev/null
+++ b/modular_chomp/code/modules/emotes/definitions/audible_pain.dm
@@ -0,0 +1,44 @@
+/decl/emote/audible/pain
+ key = "pain"
+ emote_message_1p = "You yell in pain!"
+ emote_message_3p = "yells in pain!"
+
+/decl/emote/audible/pain/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ return "You [pick(H.species.pain_verb_1p)] in pain!"
+ else
+ var/mob/living/M = user
+ if(M.pain_emote_1p) // Sanity
+ return "You [pick(M.pain_emote_1p)]!"
+ . = ..()
+
+/decl/emote/audible/pain/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ return "[pick(H.species.pain_verb_3p)] in pain!"
+ else
+ var/mob/living/M = user
+ if(M.pain_emote_3p) // Sanity
+ return "[pick(M.pain_emote_3p)]!"
+ . = ..()
+
+/decl/emote/audible/pain/get_emote_sound(var/atom/user)
+ ..()
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ var/vol = H.species.pain_volume
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(H))["pain"],
+ "vol" = vol,
+ "exr" = 20,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
+ else
+ var/mob/living/M = user
+ return list(
+ "sound" = get_species_sound(get_gendered_sound(M))["pain"],
+ "vol" = 50,
+ "exr" = 20,
+ "volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
+ )
diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm
index 597f95bac5..5fdf4d4e35 100644
--- a/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm
+++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species.dm
@@ -49,4 +49,4 @@
/datum/species/handle_environment_special(var/mob/living/carbon/human/H)
for(var/datum/trait/env_trait in env_traits)
env_trait.handle_environment_special(H)
- return
\ No newline at end of file
+ return
diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/species_vr.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/species_vr.dm
new file mode 100644
index 0000000000..b452877e35
--- /dev/null
+++ b/modular_chomp/code/modules/mob/living/carbon/human/species/species_vr.dm
@@ -0,0 +1,71 @@
+/datum/species/proc/copy_species_sounds(var/datum/species/S, var/species_sounds, var/custom_base)
+ switch(species_sounds)
+ get_species_sound(species_sounds)
+ if("Canine")
+ S.male_scream_sound = canine_scream_sounds
+ S.female_scream_sound = canine_scream_sounds
+ S.male_gasp_sound = canine_gasp_sounds
+ S.female_gasp_sound = canine_gasp_sounds
+ S.male_pain_sound = canine_pain_sounds
+ S.female_pain_sound = canine_pain_sounds
+ S.male_death_sound = canine_death_sounds
+ S.female_death_sound = canine_death_sounds
+ if("Feline")
+ S.male_scream_sound = feline_scream_sounds
+ S.female_scream_sound = feline_scream_sounds
+ S.male_gasp_sound = feline_gasp_sounds
+ S.female_gasp_sound = feline_gasp_sounds
+ S.male_pain_sound = feline_pain_sounds
+ S.female_pain_sound = feline_pain_sounds
+ S.male_death_sound = feline_death_sounds
+ S.female_death_sound = feline_death_sounds
+ if("Cervine")
+ S.male_scream_sound = cervine_scream_sounds
+ S.female_scream_sound = cervine_scream_sounds
+ S.male_gasp_sound = null
+ S.female_gasp_sound = null
+ S.male_pain_sound = null
+ S.female_pain_sound = null
+ S.male_death_sound = cervine_death_sounds
+ S.female_death_sound = cervine_death_sounds
+ if("Generic/Human")
+ S.male_scream_sound = male_generic_scream_sounds
+ S.female_scream_sound = female_generic_scream_sounds
+ S.male_gasp_sound = male_generic_gasp_sounds
+ S.female_gasp_sound = female_generic_gasp_sounds
+ S.male_pain_sound = male_generic_pain_sounds
+ S.female_pain_sound = female_generic_pain_sounds
+ S.male_death_sound = male_generic_death_sounds
+ S.female_death_sound = female_generic_death_sounds
+ if("Robotic")
+ S.male_scream_sound = robot_scream_sounds
+ S.female_scream_sound = robot_scream_sounds
+ S.male_gasp_sound = null
+ S.female_gasp_sound = null
+ S.male_pain_sound = robot_pain_sounds
+ S.female_pain_sound = robot_pain_sounds
+ S.male_death_sound = robot_death_sounds
+ S.female_death_sound = robot_death_sounds
+ if("Unset") // If our users haven't set anything, pick the sounds based off our custom base - Vulp gets canine, etc etc.
+ var/datum/species/os
+ if(!custom_base) // Safety
+ os = base_species
+ else
+ os = GLOB.all_species[custom_base]
+ S.male_scream_sound = os.male_scream_sound
+ S.female_scream_sound = os.female_scream_sound
+ S.male_gasp_sound = os.male_gasp_sound
+ S.female_gasp_sound = os.female_gasp_sound
+ S.male_pain_sound = os.male_pain_sound
+ S.female_pain_sound = os.female_pain_sound
+ S.male_death_sound = os.male_death_sound
+ S.female_death_sound = os.female_death_sound
+ if("None") // If our users intentionally want no sounds
+ S.male_scream_sound = null
+ S.female_scream_sound = null
+ S.male_gasp_sound = null
+ S.female_gasp_sound = null
+ S.male_pain_sound = null
+ S.female_pain_sound = null
+ S.male_death_sound = null
+ S.female_death_sound = null
diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm
index 5a9c295cb0..23574da8ae 100644
--- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm
+++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/protean/protean_species.dm
@@ -30,8 +30,8 @@
breath_type = null
poison_type = null
- male_scream_sound = null
- female_scream_sound = null
+ // male_scream_sound = null
+ // female_scream_sound = null
virus_immune = 1
blood_volume = 0
@@ -60,8 +60,7 @@
rarity_value = 5
- female_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg'
- male_scream_sound = 'modular_chomp/sound/voice/scream_silicon.ogg'
+ species_sounds = "Robotic"
crit_mod = 4 //Unable to go crit
var/obj/item/weapon/rig/protean/OurRig
diff --git a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm
index b671169a2f..4da1bb87d4 100644
--- a/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm
+++ b/modular_chomp/code/modules/mob/living/carbon/human/species/station/station.dm
@@ -1,6 +1,10 @@
//Any species commented out here must be made restricted elsewhere. They are kept here for easy reference of what we disabled.
//Note that at the time of this PR we are simply disabling everything new to discuss keeping versus scrapping later.
+/datum/species
+ var/pain_verb_1p = list("shout", "growl", "grunt", "gasp")
+ var/pain_verb_3p = list("shouts", "growls", "grunts", "gasps")
+
///datum/species/zaddat
// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled elsewhere.
@@ -77,4 +81,3 @@
/datum/species/protean
digi_allowed = TRUE
-
diff --git a/modular_chomp/code/modules/mob/living/living.dm b/modular_chomp/code/modules/mob/living/living.dm
index 09ac2f3762..3a45d96a4f 100644
--- a/modular_chomp/code/modules/mob/living/living.dm
+++ b/modular_chomp/code/modules/mob/living/living.dm
@@ -1,6 +1,21 @@
/mob/living
// var/ear_deaf_loop = FALSE // Are we already playing our deafened loop? Checked for safety so we don't deafen our players. (Not sure if we need this bc looping sounds datums have protection for starts being called repeatedly, commented out)
var/datum/looping_sound/mob/deafened/deaf_loop
+ /* TL;DR - the following is a lot of copypasta, but allows us to give simplemobs pain and death sounds.
+ * Different from carbons, where we check species, here we just check on the mob itself.
+ * TBD: Maybe port over from species to mob?
+ */
+ var/can_pain_emote = TRUE
+ var/pain_emote_1p = null
+ var/pain_emote_3p = null
+ var/species_sounds = "None" // By default, we have nothing.
+ var/death_sound_override = null
+ /* // Not sure if needed, screams aren't a carbon thing rn.
+ var/scream_sound = null
+ var/female_scream_sound = null
+ var/male_scream_sound = null
+ var/scream_emote = null
+ */
/mob/living/Initialize()
. = ..()
diff --git a/modular_chomp/sound/voice/death/canine/wolf_death1.ogg b/modular_chomp/sound/voice/death/canine/wolf_death1.ogg
new file mode 100644
index 0000000000..168f8ad6c2
Binary files /dev/null and b/modular_chomp/sound/voice/death/canine/wolf_death1.ogg differ
diff --git a/modular_chomp/sound/voice/death/canine/wolf_death2.ogg b/modular_chomp/sound/voice/death/canine/wolf_death2.ogg
new file mode 100644
index 0000000000..9e158091e3
Binary files /dev/null and b/modular_chomp/sound/voice/death/canine/wolf_death2.ogg differ
diff --git a/modular_chomp/sound/voice/death/canine/wolf_death3.ogg b/modular_chomp/sound/voice/death/canine/wolf_death3.ogg
new file mode 100644
index 0000000000..dba735f5aa
Binary files /dev/null and b/modular_chomp/sound/voice/death/canine/wolf_death3.ogg differ
diff --git a/modular_chomp/sound/voice/death/canine/wolf_death4.ogg b/modular_chomp/sound/voice/death/canine/wolf_death4.ogg
new file mode 100644
index 0000000000..0395cfa209
Binary files /dev/null and b/modular_chomp/sound/voice/death/canine/wolf_death4.ogg differ
diff --git a/modular_chomp/sound/voice/death/canine/wolf_death5.ogg b/modular_chomp/sound/voice/death/canine/wolf_death5.ogg
new file mode 100644
index 0000000000..c2fb41e1da
Binary files /dev/null and b/modular_chomp/sound/voice/death/canine/wolf_death5.ogg differ
diff --git a/modular_chomp/sound/voice/death/cervine/cervine_death.ogg b/modular_chomp/sound/voice/death/cervine/cervine_death.ogg
new file mode 100644
index 0000000000..6ffbf27cd1
Binary files /dev/null and b/modular_chomp/sound/voice/death/cervine/cervine_death.ogg differ
diff --git a/modular_chomp/sound/voice/death/feline/feline_death.ogg b/modular_chomp/sound/voice/death/feline/feline_death.ogg
new file mode 100644
index 0000000000..b4710a2754
Binary files /dev/null and b/modular_chomp/sound/voice/death/feline/feline_death.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_1.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_1.ogg
new file mode 100644
index 0000000000..b5c0daf5c9
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_1.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_2.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_2.ogg
new file mode 100644
index 0000000000..639306f66c
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_2.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_3.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_3.ogg
new file mode 100644
index 0000000000..71015d2b82
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_3.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_4.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_4.ogg
new file mode 100644
index 0000000000..45e11421cd
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_4.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_5.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_5.ogg
new file mode 100644
index 0000000000..b0f93a6ce4
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_5.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/female/female_death_6.ogg b/modular_chomp/sound/voice/death/generic/female/female_death_6.ogg
new file mode 100644
index 0000000000..2a414f3269
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/female/female_death_6.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_1.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_1.ogg
new file mode 100644
index 0000000000..3da1953d99
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_1.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_2.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_2.ogg
new file mode 100644
index 0000000000..eb79677737
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_2.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_3.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_3.ogg
new file mode 100644
index 0000000000..c5eac27e59
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_3.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_4.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_4.ogg
new file mode 100644
index 0000000000..5feb54b123
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_4.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_5.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_5.ogg
new file mode 100644
index 0000000000..6989fafcdd
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_5.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_6.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_6.ogg
new file mode 100644
index 0000000000..107ef06948
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_6.ogg differ
diff --git a/modular_chomp/sound/voice/death/generic/male/male_death_7.ogg b/modular_chomp/sound/voice/death/generic/male/male_death_7.ogg
new file mode 100644
index 0000000000..591c56b7fb
Binary files /dev/null and b/modular_chomp/sound/voice/death/generic/male/male_death_7.ogg differ
diff --git a/modular_chomp/sound/voice/death/lizard/lizard_death.ogg b/modular_chomp/sound/voice/death/lizard/lizard_death.ogg
new file mode 100644
index 0000000000..d42db48374
Binary files /dev/null and b/modular_chomp/sound/voice/death/lizard/lizard_death.ogg differ
diff --git a/modular_chomp/sound/voice/death/spider/spider_death.ogg b/modular_chomp/sound/voice/death/spider/spider_death.ogg
new file mode 100644
index 0000000000..e03acecc92
Binary files /dev/null and b/modular_chomp/sound/voice/death/spider/spider_death.ogg differ
diff --git a/modular_chomp/sound/voice/death/xeno/xeno_death.ogg b/modular_chomp/sound/voice/death/xeno/xeno_death.ogg
new file mode 100644
index 0000000000..3762b1e683
Binary files /dev/null and b/modular_chomp/sound/voice/death/xeno/xeno_death.ogg differ
diff --git a/modular_chomp/sound/voice/death/xeno/xeno_death2.ogg b/modular_chomp/sound/voice/death/xeno/xeno_death2.ogg
new file mode 100644
index 0000000000..9cb00d374d
Binary files /dev/null and b/modular_chomp/sound/voice/death/xeno/xeno_death2.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg b/modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg
new file mode 100644
index 0000000000..894e6b2d55
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg b/modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg
new file mode 100644
index 0000000000..eb0d9926c8
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg b/modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg
new file mode 100644
index 0000000000..e06d178523
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg b/modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg
new file mode 100644
index 0000000000..a9683910d5
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/generic/male/male_gasp1.ogg b/modular_chomp/sound/voice/gasp/generic/male/male_gasp1.ogg
new file mode 100644
index 0000000000..ab513a5b2d
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/generic/male/male_gasp1.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/generic/male/male_gasp2.ogg b/modular_chomp/sound/voice/gasp/generic/male/male_gasp2.ogg
new file mode 100644
index 0000000000..33e87af4ee
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/generic/male/male_gasp2.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/generic/male/male_gasp3.ogg b/modular_chomp/sound/voice/gasp/generic/male/male_gasp3.ogg
new file mode 100644
index 0000000000..ca9c423b7a
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/generic/male/male_gasp3.ogg differ
diff --git a/modular_chomp/sound/voice/gasp/xeno/alien_hiss1.ogg b/modular_chomp/sound/voice/gasp/xeno/alien_hiss1.ogg
new file mode 100644
index 0000000000..f29323687b
Binary files /dev/null and b/modular_chomp/sound/voice/gasp/xeno/alien_hiss1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/canine/wolf_pain.ogg b/modular_chomp/sound/voice/pain/canine/wolf_pain.ogg
new file mode 100644
index 0000000000..c86dea537b
Binary files /dev/null and b/modular_chomp/sound/voice/pain/canine/wolf_pain.ogg differ
diff --git a/modular_chomp/sound/voice/pain/canine/wolf_pain2.ogg b/modular_chomp/sound/voice/pain/canine/wolf_pain2.ogg
new file mode 100644
index 0000000000..3d3fc32ffd
Binary files /dev/null and b/modular_chomp/sound/voice/pain/canine/wolf_pain2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/canine/wolf_pain3.ogg b/modular_chomp/sound/voice/pain/canine/wolf_pain3.ogg
new file mode 100644
index 0000000000..1223c4f73f
Binary files /dev/null and b/modular_chomp/sound/voice/pain/canine/wolf_pain3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/canine/wolf_pain4.ogg b/modular_chomp/sound/voice/pain/canine/wolf_pain4.ogg
new file mode 100644
index 0000000000..224ff50a31
Binary files /dev/null and b/modular_chomp/sound/voice/pain/canine/wolf_pain4.ogg differ
diff --git a/modular_chomp/sound/voice/pain/feline/feline_pain.ogg b/modular_chomp/sound/voice/pain/feline/feline_pain.ogg
new file mode 100644
index 0000000000..4a24bae3e1
Binary files /dev/null and b/modular_chomp/sound/voice/pain/feline/feline_pain.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/female/female_pain_1.ogg b/modular_chomp/sound/voice/pain/generic/female/female_pain_1.ogg
new file mode 100644
index 0000000000..944518095b
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/female/female_pain_1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/female/female_pain_2.ogg b/modular_chomp/sound/voice/pain/generic/female/female_pain_2.ogg
new file mode 100644
index 0000000000..aa2eaba352
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/female/female_pain_2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/female/female_pain_3.ogg b/modular_chomp/sound/voice/pain/generic/female/female_pain_3.ogg
new file mode 100644
index 0000000000..c21d462ba5
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/female/female_pain_3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_1.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_1.ogg
new file mode 100644
index 0000000000..bf8e75fa8d
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_2.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_2.ogg
new file mode 100644
index 0000000000..b56dd913b6
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_3.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_3.ogg
new file mode 100644
index 0000000000..dbecee87bd
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_4.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_4.ogg
new file mode 100644
index 0000000000..59a865574f
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_4.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_5.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_5.ogg
new file mode 100644
index 0000000000..5292671585
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_5.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_6.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_6.ogg
new file mode 100644
index 0000000000..41feebf8c5
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_6.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_7.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_7.ogg
new file mode 100644
index 0000000000..488e5a99fe
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_7.ogg differ
diff --git a/modular_chomp/sound/voice/pain/generic/male/male_pain_8.ogg b/modular_chomp/sound/voice/pain/generic/male/male_pain_8.ogg
new file mode 100644
index 0000000000..b2afea3365
Binary files /dev/null and b/modular_chomp/sound/voice/pain/generic/male/male_pain_8.ogg differ
diff --git a/modular_chomp/sound/voice/pain/lizard/lizard_pain.ogg b/modular_chomp/sound/voice/pain/lizard/lizard_pain.ogg
new file mode 100644
index 0000000000..8b1bca088c
Binary files /dev/null and b/modular_chomp/sound/voice/pain/lizard/lizard_pain.ogg differ
diff --git a/modular_chomp/sound/voice/pain/robotic/robot_pain1.ogg b/modular_chomp/sound/voice/pain/robotic/robot_pain1.ogg
new file mode 100644
index 0000000000..8c155c18c6
Binary files /dev/null and b/modular_chomp/sound/voice/pain/robotic/robot_pain1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/robotic/robot_pain2.ogg b/modular_chomp/sound/voice/pain/robotic/robot_pain2.ogg
new file mode 100644
index 0000000000..4ec71e874e
Binary files /dev/null and b/modular_chomp/sound/voice/pain/robotic/robot_pain2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/robotic/robot_pain3.ogg b/modular_chomp/sound/voice/pain/robotic/robot_pain3.ogg
new file mode 100644
index 0000000000..3f2a8ff647
Binary files /dev/null and b/modular_chomp/sound/voice/pain/robotic/robot_pain3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/vulpine/fox_pain1.ogg b/modular_chomp/sound/voice/pain/vulpine/fox_pain1.ogg
new file mode 100644
index 0000000000..e3bf86e69f
Binary files /dev/null and b/modular_chomp/sound/voice/pain/vulpine/fox_pain1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/vulpine/fox_pain2.ogg b/modular_chomp/sound/voice/pain/vulpine/fox_pain2.ogg
new file mode 100644
index 0000000000..d45d568757
Binary files /dev/null and b/modular_chomp/sound/voice/pain/vulpine/fox_pain2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/vulpine/fox_pain3.ogg b/modular_chomp/sound/voice/pain/vulpine/fox_pain3.ogg
new file mode 100644
index 0000000000..611a99d849
Binary files /dev/null and b/modular_chomp/sound/voice/pain/vulpine/fox_pain3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/vulpine/fox_pain4.ogg b/modular_chomp/sound/voice/pain/vulpine/fox_pain4.ogg
new file mode 100644
index 0000000000..d94dfefc05
Binary files /dev/null and b/modular_chomp/sound/voice/pain/vulpine/fox_pain4.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar1.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar1.ogg
new file mode 100644
index 0000000000..302ebf8104
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar1.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar10.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar10.ogg
new file mode 100644
index 0000000000..1672c58d3e
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar10.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar11.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar11.ogg
new file mode 100644
index 0000000000..6a3f694d0c
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar11.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar12.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar12.ogg
new file mode 100644
index 0000000000..aa7c0064b1
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar12.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar2.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar2.ogg
new file mode 100644
index 0000000000..c670730c4f
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar2.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar3.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar3.ogg
new file mode 100644
index 0000000000..73da74d97a
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar3.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar4.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar4.ogg
new file mode 100644
index 0000000000..e5c7a6b985
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar4.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar5.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar5.ogg
new file mode 100644
index 0000000000..4f96d740c0
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar5.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar6.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar6.ogg
new file mode 100644
index 0000000000..868e926f77
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar6.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar7.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar7.ogg
new file mode 100644
index 0000000000..5deec41a04
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar7.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar8.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar8.ogg
new file mode 100644
index 0000000000..70564ea3d0
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar8.ogg differ
diff --git a/modular_chomp/sound/voice/pain/xeno/alien_roar9.ogg b/modular_chomp/sound/voice/pain/xeno/alien_roar9.ogg
new file mode 100644
index 0000000000..1bec52faa0
Binary files /dev/null and b/modular_chomp/sound/voice/pain/xeno/alien_roar9.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream.ogg
new file mode 100644
index 0000000000..e56fdc76b6
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg
new file mode 100644
index 0000000000..2c457b3048
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg
new file mode 100644
index 0000000000..915bba8793
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg
new file mode 100644
index 0000000000..5f7e0dc571
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg
new file mode 100644
index 0000000000..d9e7cf77d5
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg differ
diff --git a/modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg b/modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg
new file mode 100644
index 0000000000..690b7f0c26
Binary files /dev/null and b/modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg differ
diff --git a/modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg b/modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg
new file mode 100644
index 0000000000..6860612a0d
Binary files /dev/null and b/modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg differ
diff --git a/modular_chomp/sound/voice/scream/feline/feline_scream.ogg b/modular_chomp/sound/voice/scream/feline/feline_scream.ogg
new file mode 100644
index 0000000000..a01047304d
Binary files /dev/null and b/modular_chomp/sound/voice/scream/feline/feline_scream.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/female/female_scream_1.ogg b/modular_chomp/sound/voice/scream/generic/female/female_scream_1.ogg
new file mode 100644
index 0000000000..93bf9b7e4a
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/female/female_scream_1.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/female/female_scream_2.ogg b/modular_chomp/sound/voice/scream/generic/female/female_scream_2.ogg
new file mode 100644
index 0000000000..9ca58d86b0
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/female/female_scream_2.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/female/female_scream_3.ogg b/modular_chomp/sound/voice/scream/generic/female/female_scream_3.ogg
new file mode 100644
index 0000000000..593b0f76bc
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/female/female_scream_3.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/female/female_scream_4.ogg b/modular_chomp/sound/voice/scream/generic/female/female_scream_4.ogg
new file mode 100644
index 0000000000..a838c298df
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/female/female_scream_4.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/female/female_scream_5.ogg b/modular_chomp/sound/voice/scream/generic/female/female_scream_5.ogg
new file mode 100644
index 0000000000..de81de5990
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/female/female_scream_5.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_1.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_1.ogg
new file mode 100644
index 0000000000..dc36553769
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_1.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_2.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_2.ogg
new file mode 100644
index 0000000000..9c92a37409
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_2.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_3.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_3.ogg
new file mode 100644
index 0000000000..c77aa75074
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_3.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_4.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_4.ogg
new file mode 100644
index 0000000000..d5c2655380
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_4.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_5.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_5.ogg
new file mode 100644
index 0000000000..cad0ee02c1
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_5.ogg differ
diff --git a/modular_chomp/sound/voice/scream/generic/male/male_scream_6.ogg b/modular_chomp/sound/voice/scream/generic/male/male_scream_6.ogg
new file mode 100644
index 0000000000..a778537745
Binary files /dev/null and b/modular_chomp/sound/voice/scream/generic/male/male_scream_6.ogg differ
diff --git a/modular_chomp/sound/voice/scream/robotic/robot_scream1.ogg b/modular_chomp/sound/voice/scream/robotic/robot_scream1.ogg
new file mode 100644
index 0000000000..4442624b10
Binary files /dev/null and b/modular_chomp/sound/voice/scream/robotic/robot_scream1.ogg differ
diff --git a/modular_chomp/sound/voice/scream/robotic/robot_scream2.ogg b/modular_chomp/sound/voice/scream/robotic/robot_scream2.ogg
new file mode 100644
index 0000000000..28a9c26469
Binary files /dev/null and b/modular_chomp/sound/voice/scream/robotic/robot_scream2.ogg differ
diff --git a/modular_chomp/sound/voice/scream/robotic/robot_scream3.ogg b/modular_chomp/sound/voice/scream/robotic/robot_scream3.ogg
new file mode 100644
index 0000000000..ba1308ef0b
Binary files /dev/null and b/modular_chomp/sound/voice/scream/robotic/robot_scream3.ogg differ
diff --git a/modular_chomp/sound/voice/scream/vulpine/fox_yip1.ogg b/modular_chomp/sound/voice/scream/vulpine/fox_yip1.ogg
new file mode 100644
index 0000000000..3feea0a467
Binary files /dev/null and b/modular_chomp/sound/voice/scream/vulpine/fox_yip1.ogg differ
diff --git a/modular_chomp/sound/voice/scream/vulpine/fox_yip2.ogg b/modular_chomp/sound/voice/scream/vulpine/fox_yip2.ogg
new file mode 100644
index 0000000000..8478eee546
Binary files /dev/null and b/modular_chomp/sound/voice/scream/vulpine/fox_yip2.ogg differ
diff --git a/modular_chomp/sound/voice/scream/vulpine/fox_yip3.ogg b/modular_chomp/sound/voice/scream/vulpine/fox_yip3.ogg
new file mode 100644
index 0000000000..974f597bbd
Binary files /dev/null and b/modular_chomp/sound/voice/scream/vulpine/fox_yip3.ogg differ
diff --git a/sound/voice/raccoon.ogg b/sound/voice/raccoon.ogg
new file mode 100644
index 0000000000..4e5937b734
Binary files /dev/null and b/sound/voice/raccoon.ogg differ
diff --git a/vorestation.dme b/vorestation.dme
index 8c6578a3ae..33e4339d2c 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -3306,6 +3306,7 @@
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\clown.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\cultist_ch.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid.dm"
+#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid_ch.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\humanoid_vr.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates.dm"
#include "code\modules\mob\living\simple_mob\subtypes\humanoid\pirates_ch.dm"
@@ -4578,6 +4579,7 @@
#include "modular_chomp\code\modules\datums\supplypacks\munitions.dm"
#include "modular_chomp\code\modules\datums\supplypacks\science.dm"
#include "modular_chomp\code\modules\emotes\definitions\audiable.dm"
+#include "modular_chomp\code\modules\emotes\definitions\audible_pain.dm"
#include "modular_chomp\code\modules\food\drinkgglass\metaglass.dm"
#include "modular_chomp\code\modules\food\food\drinks\bottle.dm"
#include "modular_chomp\code\modules\materials\materials\gems.dm"