mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 02:09:41 +00:00
Update 1.0
Refactors lists into #defines, promptly cries. This part is agony and still worked on. Simplemobs can play injury sounds as well, selecting a sound based off a global list. Pain emotes occur based on updatehealth(), with respect to silicons and such. Pain emotes also occur at a 60% chance on traumatic shock. Simplemobs can also play death sounds based off the species sounds lists. Add Mouse, Robotic, Spider, None as options to the voice list. Fixes runtime/bug with Silicons (borgs) trying to get species var.
This commit is contained in:
@@ -310,37 +310,70 @@ var/list/goon_speak_roach_sound = list('sound/talksounds/goon/roach.ogg', 'sound
|
||||
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 Pain/Scream/Death sounds. This is probably inefficient, but I'm sure someone will yell at me or just do it better later:tm:
|
||||
var/list/canine_scream_sounds = 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')
|
||||
var/list/canine_pain_sounds = 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')
|
||||
var/list/canine_gasp_sounds = list('modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg')
|
||||
var/list/canine_death_sounds = 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')
|
||||
var/list/feline_scream_sounds = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg')
|
||||
var/list/feline_pain_sounds = list('modular_chomp/sound/voice/pain/feline/feline_pain.ogg')
|
||||
var/list/feline_gasp_sounds = list('modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg')
|
||||
var/list/feline_death_sounds = list('modular_chomp/sound/voice/death/feline/feline_death.ogg')
|
||||
var/list/cervine_scream_sounds = list('modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg')
|
||||
// var/list/cervine_pain_sounds = list() // Doesn't exist
|
||||
// var/list/cervine_gasp_sounds = list() // Doesn't exist
|
||||
var/list/cervine_death_sounds = list('modular_chomp/sound/voice/death/cervine/cervine_death.ogg')
|
||||
// var/list/avian_scream_sounds = list() // TBD
|
||||
// var/list/avian_pain_sounds = list() // TBD
|
||||
// var/list/avian_death_sounds = list() // TBD
|
||||
var/list/male_generic_scream_sounds = 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')
|
||||
var/list/male_generic_pain_sounds = 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')
|
||||
var/list/male_generic_gasp_sounds = 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')
|
||||
var/list/male_generic_death_sounds = 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')
|
||||
var/list/female_generic_scream_sounds = 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')
|
||||
var/list/female_generic_pain_sounds = 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')
|
||||
var/list/female_generic_gasp_sounds = list('modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg')
|
||||
var/list/female_generic_death_sounds = 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 canine_sounds list("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("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("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("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("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("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("scream" = list('sound/voice/spiderchitter.ogg'), "pain" = null, "gasp" = null, "death" = list('modular_chomp/sound/voice/death/spider/spider_death.ogg'))
|
||||
#define mouse_sounds list("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 no_sounds list("scream" = null, "pain" = null, "gasp" = null, "death" = null)
|
||||
#define use_default list("scream" = null, "pain" = null, "gasp" = null, "death" = null)
|
||||
/*
|
||||
var/list/vulpine_scream_sounds = list()
|
||||
var/list/vulpine_pain_sounds = list()
|
||||
var/list/vulpine_gasp_sounds = list()
|
||||
var/list/vulpine_death_sounds = list()
|
||||
var/list/lizard_scream_sounds = list('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg')
|
||||
var/list/lizard_pain_sounds = list()
|
||||
var/list/lizard_gasp_sounds = list()
|
||||
var/list/lizard_death_sounds = list()
|
||||
* 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()
|
||||
)
|
||||
*/
|
||||
|
||||
var/list/species_sounds = list()
|
||||
|
||||
var/list/species_sound_map = list(
|
||||
"Canine" = canine_sounds,
|
||||
"Feline" = feline_sounds,
|
||||
"Cervine" = cervine_sounds,
|
||||
"Robotic" = robot_sounds,
|
||||
"Human Male" = male_generic_sounds,
|
||||
"Human Female" = female_generic_sounds,
|
||||
"Spider" = spider_sounds,
|
||||
"Mouse" = mouse_sounds,
|
||||
"None" = no_sounds,
|
||||
"Unset" = use_default
|
||||
)
|
||||
|
||||
/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
|
||||
|
||||
/proc/get_species_sound(var/sounds)
|
||||
/*
|
||||
if(user.pref.species_sounds == "Unset")
|
||||
return species_sound_map[coalesce(user.pref.custom_base, user.pref.species)]
|
||||
*/
|
||||
return species_sound_map[sounds]
|
||||
// CHOMPEdit End
|
||||
|
||||
@@ -62,8 +62,9 @@
|
||||
pref.size_multiplier = initial(pref.size_multiplier)
|
||||
if(!(pref.custom_speech_bubble in selectable_speech_bubbles))
|
||||
pref.custom_speech_bubble = "default"
|
||||
if(!(pref.species_sound)) // CHOMPEdit
|
||||
pref.species_sound = "Unset" // CHOMPEdit
|
||||
// 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
|
||||
@@ -120,10 +121,10 @@
|
||||
. += "<a href='?src=\ref[src];voice_test=1'><b>Test Selected Voice</b></a><br>"
|
||||
. += "<b>Custom Speech Bubble:</b> <a href='?src=\ref[src];customize_speech_bubble=1'>[pref.custom_speech_bubble]</a><br>"
|
||||
// CHOMPEdit Start: Pain/Scream/Death Custom Sounds
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
// var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
// if(selected_species.selects_bodytype)
|
||||
. += "<br>"
|
||||
. += "<b>Species Sounds:</b> <a href='?src=\ref[src];species_sound_options=1'>[pref.species_sound]</a><br>"
|
||||
. += "<b>Species Injury Sounds:</b> <a href='?src=\ref[src];species_sound_options=1'>[pref.species_sound]</a><br>"
|
||||
. += "<a href='?src=\ref[src];scream_test=1'><b>Test Scream Sounds</b></a><br>"
|
||||
. += "<a href='?src=\ref[src];pain_test=1'><b>Test Pain Sounds</b></a><br>"
|
||||
. += "<a href='?src=\ref[src];gasp_test=1'><b>Test Gasp Sounds</b></a><br>"
|
||||
@@ -273,26 +274,28 @@
|
||||
return TOPIC_REFRESH // CHOMPEdit
|
||||
// CHOMPEdit Start: Pain/Scream/Death sounds
|
||||
else if(href_list["species_sound_options"]) // You shouldn't be able to see this option if you don't have the option to select a custom icon base, so we don't need to re-check for safety here.
|
||||
var/list/possible_species_sound_types = list(
|
||||
"Unset",
|
||||
"Generic/Human",
|
||||
"Canine",
|
||||
"Feline",
|
||||
"Cervine")
|
||||
//"Vulpine") TBD! Need moar sounds. :3
|
||||
var/list/possible_species_sound_types = species_sound_map
|
||||
testing("Loading species sound types for selection.")
|
||||
var/choice = tgui_input_list(usr, "Which set of sounds would you like to use for your character's pain, death, gasp, and scream sounds?", "Species Sounds", possible_species_sound_types)
|
||||
if(!choice)
|
||||
return TOPIC_REFRESH // No choice? Don't reset our selection
|
||||
else
|
||||
pref.species_sound = choice
|
||||
testing("Setting species sound type to [choice].")
|
||||
return TOPIC_REFRESH
|
||||
else if(href_list["scream_test"])
|
||||
var/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
// if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
testing("About to test our voice. User is [user]. Our chosen species sound is [pref.species_sound].")
|
||||
testing("Species Sound map returns [get_species_sound(pref.species_sound)].")
|
||||
testing("We are fetching a sound, and will get [pick(species_sound_map[pref.species_sound["scream"]])].")
|
||||
S = sound(pick(species_sound_map[pref.species_sound["scream"]]))
|
||||
//S = sound(pick(get_species_sound(pref.species_sound["scream"])))
|
||||
/*
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_scream_sounds))
|
||||
S = sound(pick(canine_sounds["scream"]))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_scream_sounds))
|
||||
if("Cervine")
|
||||
@@ -303,38 +306,60 @@
|
||||
else
|
||||
S = sound(pick(male_generic_scream_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
var/datum/species/os
|
||||
if(!pref.custom_base) // Safety
|
||||
os = selected_species
|
||||
else
|
||||
os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_scream_sound))
|
||||
else
|
||||
S = sound(pick(os.male_scream_sound))
|
||||
if("Robotic")
|
||||
S = sound(pick(robot_scream_sounds))
|
||||
if("None" || null)
|
||||
to_chat(user, "<span class='warning'>This set does not have scream sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
*/
|
||||
if(pref.species_sound == "Unset")
|
||||
S = sound(pick(get_species_sound(coalesce(pref.species_sound, pref.custom_base, pref.species))["scream"]))
|
||||
if(pref.species_sound == "None" || pref.species_sound["scream"] == null || S == null)
|
||||
to_chat(user, "<span class='warning'>This set does not have scream sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
/*
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_scream_sound))
|
||||
S = sound(pick(selected_species.female_scream_sound))
|
||||
else
|
||||
S = sound(pick(os.male_scream_sound))
|
||||
S = sound(pick(selected_species.male_scream_sound))
|
||||
if(S == null)
|
||||
to_chat(user, "<span class='warning'>This species does not have scream sounds!</span>")
|
||||
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/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
//if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
S = sound(pick(species_sound_map[pref.species_sound["pain"]]))
|
||||
//S = sound(pick(get_species_sound(pref.species_sound["pain"])))
|
||||
/*
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_pain_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_pain_sounds))
|
||||
if("Cervine")
|
||||
to_chat("<span class='warning'>This set does not have pain sounds!</span>")
|
||||
to_chat(user, "<span class='warning'>This set does not have pain sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
@@ -342,37 +367,59 @@
|
||||
else
|
||||
S = sound(pick(male_generic_pain_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
var/datum/species/os
|
||||
if(!pref.custom_base) // Safety
|
||||
os = selected_species
|
||||
else
|
||||
os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_pain_sound))
|
||||
else
|
||||
S = sound(pick(os.male_pain_sound))
|
||||
if("Robotic")
|
||||
S = sound(pick(robot_pain_sounds))
|
||||
if("None" || null)
|
||||
to_chat(user, "<span class='warning'>This set does not have pain sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
*/
|
||||
if(pref.species_sound == "Unset")
|
||||
S = sound(pick(get_species_sound(coalesce(pref.species_sound, pref.custom_base, pref.species))["pain"]))
|
||||
if(pref.species_sound == "None" || pref.species_sound["pain"] == null || S == null)
|
||||
to_chat(user, "<span class='warning'>This set does not have pain sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
/*
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_pain_sound))
|
||||
S = sound(pick(selected_species.female_pain_sound))
|
||||
else
|
||||
S = sound(pick(os.male_pain_sound))
|
||||
S = sound(pick(selected_species.male_pain_sound))
|
||||
if(S == null)
|
||||
to_chat(user, "<span class='warning'>This species does not have pain sounds!</span>")
|
||||
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/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
// if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
S = sound(pick(species_sound_map[pref.species_sound["gasp"]]))
|
||||
//S = sound(pick(get_species_sound(pref.species_sound["gasp"])))
|
||||
/*
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_gasp_sounds))
|
||||
if("Feline")
|
||||
S = sound(pick(feline_gasp_sounds))
|
||||
if("Cervine")
|
||||
to_chat("<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
to_chat(user, "<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
if("Generic/Human")
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
@@ -380,30 +427,53 @@
|
||||
else
|
||||
S = sound(pick(male_generic_gasp_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
var/datum/species/os
|
||||
if(!pref.custom_base) // Safety
|
||||
os = selected_species
|
||||
else
|
||||
os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_gasp_sound))
|
||||
else
|
||||
S = sound(pick(os.male_gasp_sound))
|
||||
if("Robotic")
|
||||
to_chat(user, "<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
if("None" || null)
|
||||
to_chat(user, "<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
*/
|
||||
if(pref.species_sound == "Unset")
|
||||
S = sound(pick(get_species_sound(coalesce(pref.species_sound, pref.custom_base, pref.species))["gasp"]))
|
||||
if(pref.species_sound == "None" || pref.species_sound["gasp"] == null || S == null)
|
||||
to_chat(user, "<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
/*
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_gasp_sound))
|
||||
S = sound(pick(selected_species.female_gasp_sound))
|
||||
else
|
||||
S = sound(pick(os.male_gasp_sound))
|
||||
S = sound(pick(selected_species.male_gasp_sound))
|
||||
if(S == null)
|
||||
to_chat(user, "<span class='warning'>This species does not have gasp sounds!</span>")
|
||||
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/datum/species/selected_species = GLOB.all_species[pref.species]
|
||||
if(selected_species.selects_bodytype)
|
||||
// if(selected_species.selects_bodytype)
|
||||
var/sound/S
|
||||
S = sound(pick(species_sound_map[pref.species_sound["death"]]))
|
||||
// S = sound(pick(get_species_sound(pref.species_sound["death"])))
|
||||
/*
|
||||
switch(pref.species_sound)
|
||||
if("Canine")
|
||||
S = sound(pick(canine_death_sounds))
|
||||
@@ -417,25 +487,44 @@
|
||||
else
|
||||
S = sound(pick(male_generic_death_sounds))
|
||||
if("Unset")
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
var/datum/species/os
|
||||
if(!pref.custom_base) // Safety
|
||||
os = selected_species
|
||||
else
|
||||
os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_death_sound))
|
||||
else
|
||||
S = sound(pick(os.male_death_sound))
|
||||
if("Robotic")
|
||||
S = sound(pick(robot_death_sounds))
|
||||
if("None" || null)
|
||||
to_chat(user, "<span class='warning'>This set does not have death sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
*/
|
||||
if(pref.species_sound == "Unset")
|
||||
S = sound(pick(get_species_sound(coalesce(pref.species_sound, pref.custom_base, pref.species))["death"]))
|
||||
if(pref.species_sound == "None" || pref.species_sound["gasp"] == null || S == null)
|
||||
to_chat(user, "<span class='warning'>This set does not have gasp sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
/*
|
||||
else
|
||||
var/sound/S
|
||||
var/datum/species/os = GLOB.all_species[pref.custom_base]
|
||||
if(pref.identifying_gender == FEMALE)
|
||||
S = sound(pick(os.female_death_sound))
|
||||
S = sound(pick(selected_species.female_death_sound))
|
||||
else
|
||||
S = sound(pick(os.male_death_sound))
|
||||
S = sound(pick(selected_species.male_death_sound))
|
||||
if(S == null)
|
||||
to_chat(user, "<span class='warning'>This species does not have death sounds!</span>")
|
||||
return TOPIC_REFRESH
|
||||
S.frequency = pick(pref.voice_freq)
|
||||
S.volume = 20
|
||||
SEND_SOUND(user, S)
|
||||
return TOPIC_REFRESH
|
||||
*/
|
||||
// CHOMPEdit End
|
||||
return ..();
|
||||
|
||||
@@ -257,8 +257,12 @@
|
||||
//Any additional non-trait settings can be applied here
|
||||
new_S.blood_color = pref.blood_color
|
||||
|
||||
if(pref.species_sound && new_S.selects_bodytype && pref.custom_base) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds. Don't try to do this if it doesn't exist, we aren't a custom species, and we don't have a custom base.
|
||||
/*
|
||||
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.
|
||||
new_S.species_sounds = coalesce(pref.species_sound, pref.custom_base, pref.species)
|
||||
|
||||
if(pref.species == SPECIES_CUSTOM)
|
||||
//Statistics for this would be nice
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/decl/emote/audible/scream/get_emote_sound(var/atom/user)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(H.get_gender() == FEMALE)
|
||||
return list(
|
||||
@@ -15,3 +16,25 @@
|
||||
"exr" = 20,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
/* // Not sure if needed, screams are a carbon-only thing rn.
|
||||
else
|
||||
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_INJ_DEATH
|
||||
)
|
||||
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_INJ_DEATH
|
||||
)
|
||||
else
|
||||
return list(
|
||||
"sound" = scream_sound,
|
||||
"vol" = 60,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
*/
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
. = ..()
|
||||
|
||||
@@ -153,3 +153,38 @@
|
||||
damage = damage * damage_mod
|
||||
|
||||
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
|
||||
|
||||
@@ -317,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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1857,6 +1857,10 @@
|
||||
if(shock_stage == 40)
|
||||
if(traumatic_shock >= 80)
|
||||
to_chat(src, "<span class='danger'>[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!</span>")
|
||||
// CHOMPEdit: Pain
|
||||
if(prob(60) && !isbelly(loc)) // Hopefully not spammy, only 60% of the time will we groan in pain + sanity for in-belly
|
||||
emote("pain")
|
||||
// CHOMPEdit End
|
||||
|
||||
if (shock_stage >= 60)
|
||||
if(shock_stage == 60 && !isbelly(loc)) //VOREStation Edit
|
||||
@@ -1864,23 +1868,37 @@
|
||||
if (prob(2))
|
||||
if(traumatic_shock >= 80)
|
||||
to_chat(src, "<span class='danger'>[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!</span>")
|
||||
// CHOMPEdit: Pain
|
||||
if(prob(60) && !isbelly(loc)) // Hopefully not spammy, only 60% of the time will we groan in pain + sanity for in-belly
|
||||
emote("pain")
|
||||
// CHOMPEdit End
|
||||
Weaken(20)
|
||||
|
||||
if(shock_stage >= 80)
|
||||
if (prob(5))
|
||||
if(traumatic_shock >= 80)
|
||||
to_chat(src, "<span class='danger'>[pick("The pain is excruciating", "Please, just end the pain", "Your whole body is going numb")]!</span>")
|
||||
// CHOMPEdit: Pain
|
||||
if(prob(60) && !isbelly(loc)) // Hopefully not spammy, only 80% 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, "<span class='danger'>[pick("You black out", "You feel like you could die any moment now", "You are about to lose consciousness")]!</span>")
|
||||
// CHOMPEdit: Pain
|
||||
if(prob(60) && !isbelly(loc)) // Hopefully not spammy, only 60% 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)
|
||||
|
||||
@@ -26,4 +26,15 @@
|
||||
for(var/datum/soul_link/S as anything in shared_soul_links)
|
||||
S.sharer_died(gibbed)
|
||||
|
||||
// CHOMPStation Add: All mobs can play a death_sound if set. On carbons, this is going to be handled by species.
|
||||
if(!gibbed && (male_death_sound || female_death_sound) && !isbelly(loc))
|
||||
var/gender = src.gender
|
||||
if(gender == FEMALE)
|
||||
playsound(src, pick(female_death_sound), 40, 1, 20, volume_channel = VOLUME_CHANNEL_INJ_DEATH)
|
||||
else // Until we get more, sorry. :c
|
||||
playsound(src, pick(male_death_sound), 40, 1, 20, volume_channel = VOLUME_CHANNEL_INJ_DEATH)
|
||||
else if(!gibbed && death_sound && !isbelly(loc))
|
||||
playsound(src, pick(death_sound), 40, 1, 20, volume_channel = VOLUME_CHANNEL_INJ_DEATH)
|
||||
// CHOMPStation Add End
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -118,6 +118,17 @@
|
||||
)
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
pain_emote_1p = list("chitter", "click") //CHOMP Add
|
||||
pain_emote_3p = list("chitters", "clicks") //CHOMP Add
|
||||
|
||||
// CHOMPAdd: Has to be done on Init or New, bc we can't set a var to a non-constant
|
||||
/mob/living/simple_mob/animal/giant_spider/Initialize()
|
||||
pain_sound = get_species_sound(spider_sounds["pain"])
|
||||
death_sound = get_species_sound(spider_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
|
||||
// CHOMPAdd End
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
|
||||
@@ -46,9 +46,14 @@
|
||||
can_be_drop_prey = TRUE
|
||||
can_be_drop_pred = FALSE
|
||||
|
||||
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()
|
||||
..()
|
||||
|
||||
pain_sound = get_species_sound(mouse_sounds["pain"]) // CHOMP Addition: Pain/etc sounds
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
|
||||
|
||||
@@ -33,6 +33,11 @@
|
||||
vore_icons = SA_ICON_LIVING | SA_ICON_REST
|
||||
center_offset = 0
|
||||
|
||||
pain_sound = list('sound/voice/raccoon.ogg')
|
||||
pain_emote_1p = list("chitter")
|
||||
pain_emote_3p = list("chitters")
|
||||
death_sound = list('sound/voice/raccoon.ogg')
|
||||
|
||||
/mob/living/simple_mob/animal/passive/raccoon_ch/Initialize()
|
||||
. = ..()
|
||||
ghostjoin = 1
|
||||
|
||||
@@ -27,6 +27,17 @@
|
||||
var/obj/item/inventory_head
|
||||
var/obj/item/inventory_back
|
||||
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
// CHOMPAdd: Has to be done on Init or New, bc we can't set a var to a non-constant
|
||||
/mob/living/simple_mob/animal/passive/dog/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
/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))
|
||||
|
||||
@@ -69,6 +69,12 @@
|
||||
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
|
||||
pain_sound = list('sound/voice/raccoon.ogg')
|
||||
pain_emote_1p = list("chitter")
|
||||
pain_emote_3p = list("chitters")
|
||||
death_sound = list('sound/voice/raccoon.ogg')
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/sakimm/verb/remove_hat()
|
||||
set name = "Remove Hat"
|
||||
|
||||
@@ -64,10 +64,14 @@
|
||||
var/rank //pyro, operative, ammo, stealth. more to come. Do not leave blank.
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
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()
|
||||
..()
|
||||
|
||||
pain_sound = get_species_sound(mouse_sounds["pain"]) // CHOMPAdd: Pain sounds
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
min_n2 = 0 //breathe N2
|
||||
max_n2 = 0
|
||||
|
||||
// CHOMPAdd: Pain sounds
|
||||
pain_sound = list('sound/voice/shriek1.ogg')
|
||||
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"
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/mob/living/simple_mob/blob/speech_bubble_appearance()
|
||||
return "slime"
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
var/can_infest = FALSE
|
||||
var/is_infesting = FALSE
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/datum/say_list/spore
|
||||
emote_see = list("sways", "inflates briefly")
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
icon = 'icons/mob/horror_show/GHPS.dmi'
|
||||
icon_gib = "generic_gib"
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/datum/ai_holder/simple_mob/horror
|
||||
hostile = TRUE // The majority of simplemobs are hostile, gaslamps are nice.
|
||||
cooperative = FALSE
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
// 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")
|
||||
|
||||
/mob/living/simple_mob/humanoid/Initialize()
|
||||
pain_sound = get_species_sound(male_generic_sounds["pain"])
|
||||
female_pain_sound = get_species_sound(female_generic_sounds["pain"])
|
||||
male_pain_sound = get_species_sound(male_generic_sounds["pain"])
|
||||
death_sound = get_species_sound(male_generic_sounds["death"])
|
||||
male_death_sound = get_species_sound(male_generic_sounds["death"])
|
||||
female_death_sound = get_species_sound(female_generic_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
@@ -47,6 +47,8 @@
|
||||
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
|
||||
death_sound = null
|
||||
|
||||
// corpse = /obj/effect/landmark/mobcorpse/possessed
|
||||
// Will eventually leave a full corpse with an activated RIG on it. But not yet.
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Hallucinations shouldn't trigger death sounds anyways, but, sanity
|
||||
|
||||
/mob/living/simple_mob/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance().
|
||||
return
|
||||
|
||||
|
||||
@@ -62,6 +62,12 @@
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
can_pain_emote = TRUE
|
||||
pain_sound = list('sound/metroid/metroidsee.ogg')
|
||||
pain_emote_1p = list("skree")
|
||||
pain_emote_3p = list("skrees")
|
||||
death_sound = list('sound/metroid/metroiddeath.ogg')
|
||||
|
||||
/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 +120,5 @@
|
||||
)
|
||||
|
||||
/mob/living/simple_mob/metroid/death()
|
||||
playsound(src, 'sound/metroid/metroiddeath.ogg', 75, 1)
|
||||
// playsound(src, 'sound/metroid/metroiddeath.ogg', 75, 1)
|
||||
..()
|
||||
@@ -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("<span class='notice'>\The [src] dropped some toy!</span>")
|
||||
@@ -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 = list('sound/metroid/metroidomegadeath.ogg')
|
||||
|
||||
/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 = list('sound/metroid/metroidqueendeath.ogg')
|
||||
|
||||
/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--
|
||||
..()
|
||||
|
||||
|
||||
@@ -63,6 +63,8 @@
|
||||
// var/do_glow = TRUE
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/mob/living/simple_mob/construct/place_spell_in_hand(var/path)
|
||||
if(!path || !ispath(path))
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
// Strong Variant
|
||||
/mob/living/simple_mob/creature/strong
|
||||
|
||||
@@ -43,6 +43,8 @@
|
||||
minbodytemp = 0
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/mob/living/simple_mob/faithless/Process_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
|
||||
@@ -42,6 +42,8 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/obj/item/projectile/energy/slow_orb
|
||||
name = "TROJAN"
|
||||
@@ -317,6 +319,9 @@
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/bossmob_glitch_fake
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds
|
||||
|
||||
/mob/living/simple_mob/glitch_boss_fake/strong
|
||||
maxHealth = 100
|
||||
health = 100
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds anyways, but, sanity
|
||||
|
||||
/decl/mob_organ_names/tomato
|
||||
hit_zones = list("flesh", "leaf", "mouth")
|
||||
@@ -33,6 +33,8 @@
|
||||
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
|
||||
death_sound = null // CHOMPEdit: Shouldn't trigger death sounds anyways, but, sanity
|
||||
|
||||
/mob/living/simple_mob/animal/space/tree/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
|
||||
@@ -84,6 +84,12 @@ var/list/_slime_default_emotes = list(
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
// CHOMPAdd: Pain Sounds
|
||||
pain_sound = 'sound/effects/slime_squish.ogg'
|
||||
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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -50,6 +50,17 @@
|
||||
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")
|
||||
|
||||
/mob/living/simple_mob/vore/fennec/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/fennec
|
||||
vore_active = 1
|
||||
|
||||
@@ -28,6 +28,10 @@
|
||||
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
|
||||
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))
|
||||
@@ -51,6 +55,8 @@
|
||||
color = "#ff9f00"
|
||||
if(9)
|
||||
color = "#393939"
|
||||
pain_sound = get_species_sound(canine_sounds["pain"]) // CHOMPAdd: Pain
|
||||
death_sound = get_species_sound(canine_sounds["death"]) // CHOMPAdd: Pain
|
||||
|
||||
/mob/living/simple_mob/otie/zorgoia/feral //gets the pet2tame feature. starts out hostile tho so get gamblin'
|
||||
name = "agressive zorgoia"
|
||||
|
||||
@@ -41,6 +41,16 @@
|
||||
buckle_lying = FALSE
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/vore/greatwolf/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
/mob/living/simple_mob/vore/greatwolf
|
||||
|
||||
|
||||
@@ -50,6 +50,11 @@
|
||||
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"
|
||||
|
||||
@@ -49,6 +49,16 @@
|
||||
vore_bump_emote = "tries to snap up"
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/vore/leopardmander/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
/datum/category_item/catalogue/fauna/leopardmander
|
||||
name = "Sivian Fauna - Va'aen Drake"
|
||||
|
||||
@@ -48,6 +48,17 @@
|
||||
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
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/otie/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
|
||||
// Activate Noms!
|
||||
|
||||
|
||||
@@ -43,6 +43,17 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yowl", "growl")
|
||||
pain_emote_3p = list("yowls", "growls")
|
||||
|
||||
/mob/living/simple_mob/vore/aggressive/panther/Initialize()
|
||||
pain_sound = get_species_sound(feline_sounds["pain"])
|
||||
death_sound = get_species_sound(feline_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/aggressive/panther
|
||||
|
||||
@@ -34,6 +34,17 @@
|
||||
catalogue_data = list(/datum/category_item/catalogue/fauna/wolf)
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/animal/wolf/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/animal/wolf
|
||||
|
||||
@@ -25,6 +25,17 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/vore/wolfgirl/Initialize()
|
||||
pain_sound = get_species_sound(canine_sounds["pain"])
|
||||
death_sound = get_species_sound(canine_sounds["death"])
|
||||
|
||||
. = ..()
|
||||
// CHOMPAdd End
|
||||
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/wolfgirl
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
/mob/living/voice
|
||||
no_vore = TRUE
|
||||
can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
|
||||
|
||||
@@ -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) && !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) && !isbelly(loc)) // No pain noises inside bellies.
|
||||
emote("pain")
|
||||
// CHOMPAdd End
|
||||
|
||||
/mob/living/carbon/human/proc/handle_pain()
|
||||
if(stat)
|
||||
|
||||
@@ -7,16 +7,25 @@
|
||||
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
|
||||
if(H.get_gender() == FEMALE)
|
||||
return list(
|
||||
@@ -32,3 +41,23 @@
|
||||
"exr" = 10,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
else
|
||||
var/mob/living/M = user
|
||||
if((M.get_gender() == FEMALE) && M.female_pain_sound) // If our mob has custom sounds per-gender defined, most won't.
|
||||
return list(
|
||||
"sound" = M.female_pain_sound,
|
||||
"vol" = 80,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
else if((M.get_gender() == MALE) && M.male_pain_sound) // If our mob has custom sounds per-gender defined, most won't.
|
||||
return list(
|
||||
"sound" = M.male_pain_sound,
|
||||
"vol" = 80,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
else
|
||||
return list(
|
||||
"sound" = M.pain_sound,
|
||||
"vol" = 80,
|
||||
"volchannel" = VOLUME_CHANNEL_INJ_DEATH
|
||||
)
|
||||
|
||||
@@ -19,14 +19,16 @@
|
||||
var/digi_allowed = FALSE
|
||||
var/vanity_base_fit //when shapeshifting using vanity_copy_to, this allows you to have add something so they can go back to their original species fit
|
||||
|
||||
male_scream_sound = 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')
|
||||
female_scream_sound = 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')
|
||||
var/male_gasp_sound = 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')
|
||||
var/female_gasp_sound = list('modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg')
|
||||
var/male_pain_sound = 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')
|
||||
var/female_pain_sound = 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')
|
||||
var/male_death_sound = 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')
|
||||
var/female_death_sound = 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')
|
||||
var/species_sounds
|
||||
|
||||
male_scream_sound = null
|
||||
female_scream_sound = null
|
||||
var/male_gasp_sound = null
|
||||
var/female_gasp_sound = null
|
||||
var/male_pain_sound = null
|
||||
var/female_pain_sound = null
|
||||
var/male_death_sound = null
|
||||
var/female_death_sound = null
|
||||
|
||||
// Handles non-standard eyes when using a species that utilizes a custom base icon set.
|
||||
// Eye data is stored in the head organ, and this needs to be handled specially.
|
||||
@@ -59,3 +61,14 @@
|
||||
for(var/datum/trait/env_trait in env_traits)
|
||||
env_trait.handle_environment_special(H)
|
||||
return
|
||||
|
||||
/datum/species/New()
|
||||
male_scream_sound = get_species_sound(male_generic_sounds["scream"])
|
||||
female_scream_sound = get_species_sound(female_generic_sounds["scream"])
|
||||
male_gasp_sound = get_species_sound(male_generic_sounds["gasp"])
|
||||
female_gasp_sound = get_species_sound(female_generic_sounds["gasp"])
|
||||
male_pain_sound = get_species_sound(male_generic_sounds["pain"])
|
||||
female_pain_sound = get_species_sound(female_generic_sounds["pain"])
|
||||
male_death_sound = get_species_sound(male_generic_sounds["death"])
|
||||
female_death_sound = get_species_sound(female_generic_sounds["death"])
|
||||
..()
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/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
|
||||
@@ -36,8 +37,21 @@
|
||||
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 = GLOB.all_species[custom_base]
|
||||
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
|
||||
@@ -46,3 +60,12 @@
|
||||
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
|
||||
|
||||
@@ -15,3 +15,24 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
|
||||
..()
|
||||
verbs |= /mob/living/proc/click_self
|
||||
*/
|
||||
|
||||
/mob/living
|
||||
/* 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_sound = null
|
||||
var/female_pain_sound = null
|
||||
var/male_pain_sound = null
|
||||
var/pain_emote_1p = null
|
||||
var/pain_emote_3p = 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
|
||||
*/
|
||||
var/death_sound = null
|
||||
var/male_death_sound = null
|
||||
var/female_death_sound = null
|
||||
|
||||
BIN
modular_chomp/sound/voice/death/spider/spider_death.ogg
Normal file
BIN
modular_chomp/sound/voice/death/spider/spider_death.ogg
Normal file
Binary file not shown.
BIN
sound/voice/raccoon.ogg
Normal file
BIN
sound/voice/raccoon.ogg
Normal file
Binary file not shown.
@@ -3297,6 +3297,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"
|
||||
@@ -4584,7 +4585,6 @@
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\update_icons.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_shapeshift_ch.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\species_vr.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\outsider\vox.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\prommie_blob.dm"
|
||||
#include "modular_chomp\code\modules\mob\living\carbon\human\species\station\station.dm"
|
||||
|
||||
Reference in New Issue
Block a user