diff --git a/GainStation13/code/modules/mob/living/emote_modular.dm b/GainStation13/code/modules/mob/living/emote_modular.dm new file mode 100644 index 00000000..f8ddbcd3 --- /dev/null +++ b/GainStation13/code/modules/mob/living/emote_modular.dm @@ -0,0 +1,4 @@ +// This is a file for emotes that have been rewritten to be more modular. Such as varying based on species or whathave you. May move this later or something. + + +//I was going to put screams in here but I overhauled it in a different more austistic way diff --git a/GainStation13/code/modules/mob/living/emote_ported.dm b/GainStation13/code/modules/mob/living/emote_ported.dm new file mode 100644 index 00000000..cfd5ac8d --- /dev/null +++ b/GainStation13/code/modules/mob/living/emote_ported.dm @@ -0,0 +1,230 @@ +// This is an emote file for random shit we've ported. Im just copying the style recipes_ported.dm did, yell at me if im wrong later. +// It said it was lazy but personally I think this might be a better way of organizing otherwise unique content that we're porting +// for ourselves. -Reo + +// I found this tacked onto the bottom of code/modules/mob/living/emote.dm. No //code add: notice or anything. Moving it here, +// since it seems to all be ported emotes. -Reo +/* +//Carl wuz here +//FUCK YOU CARL SUCK MY BALLS YOU WHORE +/datum/emote/living/tesh_sneeze + key = "tesh_sneeze" + key_third_person = "sneezes" + message = "sneezes." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/tesh_sneeze/can_run_emote(mob/living/user, status_check = TRUE) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + return !C.silent + +/datum/emote/living/tesh_sneeze/run_emote(mob/user, params) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + if(!C.mind || C.mind.miming)//no cute sneezing for you. + return + if(ishumanbasic(C)) + playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) + if(is_species(user, /datum/species/avian))//This is required(related to subtypes), otherwise it doesn't play the noises. Sometimes. Always sometimes. Just how it be. + playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) + if(is_species(user, /datum/species/mammal))//Just because the avian subspecies doesn't have proper sprites. Some people can't use it. + playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) + +/datum/emote/living/racc + key = "racc_chitter" + key_third_person = "chitters" + message = "chitters." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/racc/can_run_emote(mob/living/user, status_check = TRUE) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + return !C.silent + +/datum/emote/living/racc/run_emote(mob/user, params) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + if(!C.mind || C.mind.miming) + return + if(ishumanbasic(C)) + playsound(C, pick('hyperstation/sound/voice/emotes/racc_chitter_1.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_2.ogg',\ + 'hyperstation/sound/voice/emotes/racc_chitter_3.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_4.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_5.ogg',\ + 'hyperstation/sound/voice/emotes/racc_chitter_6.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_7.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_8.ogg'), 50, 1) + if(is_species(user, /datum/species/mammal)) + playsound(C, pick('hyperstation/sound/voice/emotes/racc_chitter_1.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_2.ogg',\ + 'hyperstation/sound/voice/emotes/racc_chitter_3.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_4.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_5.ogg',\ + 'hyperstation/sound/voice/emotes/racc_chitter_6.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_7.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_8.ogg'), 50, 1) + +/datum/emote/living/bat + key = "bat_chitter" + key_third_person = "chitters" + message = "chitters." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/bat/can_run_emote(mob/living/user, status_check = TRUE) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + return !C.silent + +/datum/emote/living/bat/run_emote(mob/user, params) + . = ..() + if(. && iscarbon(user)) + var/mob/living/carbon/C = user + if(!C.mind || C.mind.miming) + return + if(ishumanbasic(C)) + playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) + if(is_species(user, /datum/species/mammal)) + playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) + if(is_species(user, /datum/species/avian))//this and mammal should be considered the same AAAAAAAAAAAA + playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) +*/ +//End of the random emotes I found in mob/living + + +//Rewrites of the above start. +/datum/emote/living/carbon/teshsneeze + key = "teshsneeze" + key_third_person = "sneezes" + message = "sneezes." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/teshsneeze/get_sound() + return pick('GainStation13/sound/voice/teshari/teshsneeze.ogg', 'GainStation13/sound/voice/teshari/teshsneezeb.ogg') + +/datum/emote/living/carbon/racc + key = "racc_chitter" + key_third_person = "raccchitters" + message = "chitters." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/racc/get_sound() + return pick('hyperstation/sound/voice/emotes/racc_chitter_1.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_2.ogg',\ + 'hyperstation/sound/voice/emotes/racc_chitter_3.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_4.ogg', \ + 'hyperstation/sound/voice/emotes/racc_chitter_5.ogg','hyperstation/sound/voice/emotes/racc_chitter_6.ogg', \ + 'hyperstation/sound/voice/emotes/racc_chitter_7.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_8.ogg') + +/datum/emote/living/carbon/bat + key = "bat_chitter" + key_third_person = "bat_chitters" + message = "chitters." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/carbon/bat/get_sound() + return pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', \ + 'hyperstation/sound/voice/emotes/bat_c3.ogg', 'hyperstation/sound/voice/emotes/bat_c4.ogg', \ + 'hyperstation/sound/voice/emotes/bat_c5.ogg','hyperstation/sound/voice/emotes/bat_c6.ogg', \ + 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ + 'hyperstation/sound/voice/emotes/bat_c9.ogg') + +//Rewrites of the above end. + +//Ported from Vorestation +/datum/emote/living/carbon/teshsqueak + key = "teshsurprise" //Originally, It was just "surprised" but I dont think that's very telling of a teshari emote. + key_third_person = "teshsurprised" + message = "chirps in surprise!" + message_param = "chirps in surprise at %t!" + emote_type = EMOTE_AUDIBLE + sound = 'GainStation13/sound/voice/teshari/teshsqueak.ogg' // Copyright CC BY 3.0 InspectorJ (freesound.org) for the source audio. + +/datum/emote/living/carbon/teshchirp + key = "tchirp" + key_third_person = "tchirps" + message = "chirps!" + message_param = "chirps at %t!" + emote_type = EMOTE_AUDIBLE + sound = 'GainStation13/sound/voice/teshari/teshchirp.ogg' // Copyright Sampling+ 1.0 Incarnidine (freesound.org) for the source audio. + +/datum/emote/living/carbon/teshtrill + key = "trill" + key_third_person = "trills" + message = "trills." + message_param = "trills at %t." + emote_type = EMOTE_AUDIBLE + sound = 'GainStation13/sound/voice/teshari/teshtrill.ogg' // Copyright CC BY-NC 3.0 Arnaud Coutancier (freesound.org) for the source audio. + +/datum/emote/living/sneeze/teshsneeze //Replace this with a modular species/tongue based sneeze system later. Also piggybacking on normal sneezes + key = "teshsneeze" + key_third_person = "teshsneezes" + message = "sneezes." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/sneeze/teshsneeze/get_sound() +return pick('GainStation13/sound/voice/teshari/teshsneeze.ogg', 'GainStation13/sound/voice/teshari/teshsneezeb.ogg') + +/datum/emote/living/cough/teshcough //Same as above. Replace with a modular system later. + key = "teshcough" + key_third_person = "teshcoughs" + message = "coughs." + emote_type = EMOTE_AUDIBLE + +/datum/emote/living/cough/teshcough/get_sound() + return pick('GainStation13/sound/voice/teshari/teshcougha.ogg', 'GainStation13/sound/voice/teshari/teshcoughb.ogg') + +/datum/emote/living/carbon/teshscream + key = "teshscream" + key_third_person = "teshscreams" + message = "screams!" + message_param = "screams at %t!" + emote_type = EMOTE_AUDIBLE + sound = 'GainStation13/sound/voice/teshari/teshscream.ogg' + +/datum/emote/living/teppi + key = "gyoh" + key_third_person = "gyohs" + message = "gyohs" + var/bigsound = list('GainStation13/sound/voice/teppi/gyooh1.ogg', 'GainStation13/sound/voice/teppi/gyooh2.ogg', \ + 'GainStation13/sound/voice/teppi/gyooh3.ogg', 'GainStation13/sound/voice/teppi/gyooh4.ogg', \ + 'GainStation13/sound/voice/teppi/gyooh5.ogg', 'GainStation13/sound/voice/teppi/gyooh6.ogg') + var/smolsound = list('GainStation13/sound/voice/teppi/whine1.ogg', 'GainStation13/sound/voice/teppi/whine2.ogg') + +/datum/emote/living/teppi/run_emote(mob/living/user, params) + /* //If we port teppi later, Enable this. + if(istype(user, /mob/living/simple_mob/vore/alienanimals/teppi)) + if(istype(user, /mob/living/simple_mob/vore/alienanimals/teppi/baby)) + sound = pick(smolsound) + else + sound = pick(bigsound) + return ..() + */ + if(user.size_multipler >= 1.5) + sound = pick(bigsound) + else + sound = pick(smolsound) + . = ..() + +/datum/emote/living/teppi/rumble + key = "rumble" + key_third_person = "rumbles" + message = "rumbles contentedly." + sound = 'GainStation13/sound/voice/teppi/cute_rumble.ogg' + var/bigsound = list('GainStation13/sound/voice/teppi/rumble.ogg') + var/smolsound = list('GainStation13/sound/voice/teppi/cute_rumble.ogg') + +//Vorestation ports end. + +//Ported from Chompstation +/datum/emote/living/wawa + key = "wawa" + key_third_person = "wawas" + message = "wawas." + message_param = "wawas at %t." + emote_type = EMOTE_AUDIBLE + sound = 'GainStation13/sound/voice/emotes/wawa.ogg' + +//Chompstation ports end. diff --git a/GainStation13/sound/voice/emotes/wawa.ogg b/GainStation13/sound/voice/emotes/wawa.ogg new file mode 100644 index 00000000..39539705 Binary files /dev/null and b/GainStation13/sound/voice/emotes/wawa.ogg differ diff --git a/GainStation13/sound/voice/teshari/tesharicougha.ogg b/GainStation13/sound/voice/teshari/tesharicougha.ogg new file mode 100644 index 00000000..cbc85d52 Binary files /dev/null and b/GainStation13/sound/voice/teshari/tesharicougha.ogg differ diff --git a/GainStation13/sound/voice/teshari/tesharicoughb.ogg b/GainStation13/sound/voice/teshari/tesharicoughb.ogg new file mode 100644 index 00000000..b0e0c994 Binary files /dev/null and b/GainStation13/sound/voice/teshari/tesharicoughb.ogg differ diff --git a/GainStation13/sound/voice/teshari/teshariscream.ogg b/GainStation13/sound/voice/teshari/teshariscream.ogg new file mode 100644 index 00000000..9beb0106 Binary files /dev/null and b/GainStation13/sound/voice/teshari/teshariscream.ogg differ diff --git a/GainStation13/sound/voice/teshari/tesharisneeze.ogg b/GainStation13/sound/voice/teshari/tesharisneeze.ogg new file mode 100644 index 00000000..b344bbcf Binary files /dev/null and b/GainStation13/sound/voice/teshari/tesharisneeze.ogg differ diff --git a/GainStation13/sound/voice/teshari/tesharisneezeb.ogg b/GainStation13/sound/voice/teshari/tesharisneezeb.ogg new file mode 100644 index 00000000..f7428654 Binary files /dev/null and b/GainStation13/sound/voice/teshari/tesharisneezeb.ogg differ diff --git a/GainStation13/sound/voice/teshari/teshchirp.ogg b/GainStation13/sound/voice/teshari/teshchirp.ogg new file mode 100644 index 00000000..f13c80dd Binary files /dev/null and b/GainStation13/sound/voice/teshari/teshchirp.ogg differ diff --git a/GainStation13/sound/voice/teshari/teshscream.ogg b/GainStation13/sound/voice/teshari/teshscream.ogg new file mode 100644 index 00000000..9beb0106 Binary files /dev/null and b/GainStation13/sound/voice/teshari/teshscream.ogg differ diff --git a/GainStation13/sound/voice/teshari/teshsqueak.ogg b/GainStation13/sound/voice/teshari/teshsqueak.ogg new file mode 100644 index 00000000..41d205ab Binary files /dev/null and b/GainStation13/sound/voice/teshari/teshsqueak.ogg differ diff --git a/GainStation13/sound/voice/teshari/teshtrill.ogg b/GainStation13/sound/voice/teshari/teshtrill.ogg new file mode 100644 index 00000000..db30e988 Binary files /dev/null and b/GainStation13/sound/voice/teshari/teshtrill.ogg differ diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index 658a9244..0d52ee47 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -20,6 +20,9 @@ var/list/mob_type_blacklist_typecache //Types that are NOT allowed to use that emote var/list/mob_type_ignore_stat_typecache var/stat_allowed = CONSCIOUS + var/sound //Sound to play when emote is called + var/vary = FALSE + var/only_forced_audio = FALSE //can only code call this event instead of the player. var/static/list/emote_list = list() var/static/regex/stop_bad_mime = regex(@"says|exclaims|yells|asks") @@ -60,6 +63,10 @@ user.log_message(msg, LOG_EMOTE) msg = "[user] " + msg + var/tmp_sound = get_sound(user) + if(tmp_sound && (!only_forced_audio || !intentional)) + playsound(user, tmp_sound, 50, vary) + for(var/mob/M in GLOB.dead_mob_list) if(!M.client || isnewplayer(M)) continue @@ -72,6 +79,9 @@ else user.visible_message(msg) +/datum/emote/proc/get_sound(mob/living/user) + return sound //by default just return this var. + /datum/emote/proc/replace_pronoun(mob/user, message) if(findtext(message, "their")) message = replacetext(message, "their", user.p_their()) @@ -136,13 +146,3 @@ var/mob/living/L = user if(HAS_TRAIT(L, TRAIT_EMOTEMUTE)) return FALSE - -/datum/emote/sound - var/sound //Sound to play when emote is called - var/vary = FALSE //used for the honk borg emote - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) - -/datum/emote/sound/run_emote(mob/user, params) - . = ..() - if(.) - playsound(user.loc, sound, 50, vary) diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 5136edce..bebb54c0 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -58,6 +58,23 @@ message = "mumbles!" emote_type = EMOTE_AUDIBLE +/datum/emote/living/carbon/human/scream + key = "scream" + key_third_person = "screams" + message = "screams!" + emote_type = EMOTE_AUDIBLE + //cooldown = 10 SECONDS + vary = TRUE + +/datum/emote/living/carbon/human/scream/get_sound(mob/living/user) + if(!ishuman(user)) + return + var/mob/living/carbon/human/H = user + if(H.mind?.miming) + return + if(H.dna?.species) //Stealing yog's implementation, lol + return H.dna.species.get_scream_sound(H) + /datum/emote/living/carbon/human/pale key = "pale" message = "goes pale for a second." @@ -159,36 +176,44 @@ var/turf/T = loc T.Entered(src) -/datum/emote/sound/human - mob_type_allowed_typecache = list(/mob/living/carbon/human) - emote_type = EMOTE_AUDIBLE +/datum/emote/living/carbon/human/robot_tongue/can_run_emote(mob/user, status_check, intentional) + //var/obj/item/organ/tongue/T = user.getorganslot("tongue") + //return T?.status == ORGAN_ROBOTIC && ..() + return ..() //Remove this if we do want to restrict this to synthetic tongues. -/datum/emote/sound/human/buzz +/datum/emote/living/carbon/human/robot_tongue/beep + key = "beep" + key_third_person = "beeps" + message = "beeps." + message_param = "beeps at %t." + sound = 'sound/machines/twobeep.ogg' + +/datum/emote/living/carbon/human/robot_tongue/buzz key = "buzz" key_third_person = "buzzes" message = "buzzes." message_param = "buzzes at %t." sound = 'sound/machines/buzz-sigh.ogg' -/datum/emote/sound/human/buzz2 +/datum/emote/living/carbon/human/robot_tongue/buzz2 key = "buzz2" message = "buzzes twice." sound = 'sound/machines/buzz-two.ogg' -/datum/emote/sound/human/ping +/datum/emote/living/carbon/human/robot_tongue/ping key = "ping" key_third_person = "pings" message = "pings." message_param = "pings at %t." sound = 'sound/machines/ping.ogg' -/datum/emote/sound/human/chime +/datum/emote/living/carbon/human/robot_tongue/chime key = "chime" key_third_person = "chimes" message = "chimes." sound = 'sound/machines/chime.ogg' -/datum/emote/sound/human/squeak +/datum/emote/living/carbon/human/robot_tongue/squeak key = "squeak" key_third_person = "squeaks" message = "lets out a squeak." diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 1b2cac39..a3297521 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -3,91 +3,150 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species - var/id // if the game needs to manually check your race to do something not included in a proc here, it will use this - var/limbs_id //this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans. - var/name // this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever - var/default_color = "#FFF" // if alien colors are disabled, this is the color that will be used by that race - - var/sexes = 1 // whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows + /// if the game needs to manually check your race to do something not included in a proc here, it will use this + var/id + ///this is used if you want to use a different species limb sprites. Mainly used for angels as they look like humans. + var/limbs_id + /// this is the fluff name. these will be left generic (such as 'Lizardperson' for the lizard race) so servers can change them to whatever + var/name + /// if alien colors are disabled, this is the color that will be used by that race + var/default_color = "#FFF" + /// whether or not the race has sexual characteristics. at the moment this is only 0 for skeletons and shadows + var/sexes = 1 + ///A list that contains pixel offsets for various clothing features, if your species is a different shape var/list/offset_features = list(OFFSET_UNIFORM = list(0,0), OFFSET_ID = list(0,0), OFFSET_GLOVES = list(0,0), OFFSET_GLASSES = list(0,0), OFFSET_EARS = list(0,0), OFFSET_SHOES = list(0,0), OFFSET_S_STORE = list(0,0), OFFSET_FACEMASK = list(0,0), OFFSET_HEAD = list(0,0), OFFSET_FACE = list(0,0), OFFSET_BELT = list(0,0), OFFSET_BACK = list(0,0), OFFSET_SUIT = list(0,0), OFFSET_NECK = list(0,0)) - - var/hair_color // this allows races to have specific hair colors... if null, it uses the H's hair/facial hair colors. if "mutcolor", it uses the H's mutant_color - var/hair_alpha = 255 // the alpha used by the hair. 255 is completely solid, 0 is transparent. + /// this allows races to have specific hair colors... if null, it uses the H's hair/facial hair colors. if "mutcolor", it uses the H's mutant_color + var/hair_color + /// the alpha used by the hair. 255 is completely solid, 0 is transparent. + var/hair_alpha = 255 var/wing_color // GS13: Hair gradients from Skyrat - var/grad_style // The gradient style used for the mob's hair. - var/grad_color // The gradient color used to color the gradient. + /// The gradient style used for the mob's hair. + var/grad_style + /// The gradient color used to color the gradient. + var/grad_color - var/use_skintones = 0 // does it use skintones or not? (spoiler alert this is only used by humans) - var/exotic_blood = "" // If your race wants to bleed something other than bog standard blood, change this to reagent id. - var/exotic_bloodtype = "" //If your race uses a non standard bloodtype (A+, O-, AB-, etc) - var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human //What the species drops on gibbing + /// does it use skintones or not? (spoiler alert this is only used by humans) + var/use_skintones = FALSE + /// If your race wants to bleed something other than bog standard blood, change this to reagent id. + var/exotic_blood = "" + ///If your race uses a non standard bloodtype (A+, O-, AB-, etc) + var/exotic_bloodtype = "" + ///What the species drops on gibbing + var/meat = /obj/item/reagent_containers/food/snacks/meat/slab/human var/list/gib_types = list(/obj/effect/gibspawner/human, /obj/effect/gibspawner/human/bodypartless) + ///What, if any, leather will be droppe var/skinned_type + ///What kind of foods the species loves var/liked_food = NONE + ///What kind of foods the species dislikes! var/disliked_food = GROSS + ///What kind of foods cause harm to the species var/toxic_food = TOXIC - var/list/no_equip = list() // slots the race can't equip stuff to - var/nojumpsuit = 0 // this is sorta... weird. it basically lets you equip stuff that usually needs jumpsuits without one, like belts and pockets and ids - var/blacklisted = 0 //Flag to exclude from green slime core species. - var/dangerous_existence //A flag for transformation spells that tells them "hey if you turn a person into one of these without preperation, they'll probably die!" - var/say_mod = "says" // affects the speech message - var/list/default_features = list() // Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have. - var/list/mutant_bodyparts = list() // Visible CURRENT bodyparts that are unique to a species. DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK SHIT UP! Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by handle_mutant_bodyparts() below. - var/list/mutant_organs = list() //Internal organs that are unique to this race. - var/speedmod = 0 // this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster - var/armor = 0 // overall defense for the race... or less defense, if it's negative. - var/brutemod = 1 // multiplier for brute damage - var/burnmod = 1 // multiplier for burn damage - var/coldmod = 1 // multiplier for cold damage - var/heatmod = 1 // multiplier for heat damage - var/stunmod = 1 // multiplier for stun duration - var/punchdamagelow = 0 //lowest possible punch damage - var/punchdamagehigh = 9 //highest possible punch damage - var/punchstunthreshold = 9//damage at which punches from this race will stun //yes it should be to the attacked race but it's not useful that way even if it's logical - var/siemens_coeff = 1 //base electrocution coefficient - var/damage_overlay_type = "human" //what kind of damage overlays (if any) appear on our species when wounded? - var/fixed_mut_color = "" //to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"] - var/inert_mutation = DWARFISM //special mutation that can be found in the genepool. Dont leave empty or changing species will be a headache - var/list/special_step_sounds //Sounds to override barefeet walkng - var/grab_sound //Special sound for grabbing + /// slots the race can't equip stuff to + var/list/no_equip = list() + // this is sorta... weird. it basically lets you equip stuff that usually needs jumpsuits without one, like belts and pockets and ids + var/nojumpsuit = 0 + ///Flag to exclude from green slime core species. + var/blacklisted = 0 + ///A flag for transformation spells that tells them "hey if you turn a person into one of these without preperation, they'll probably die!" + var/dangerous_existence + /// affects the speech message + var/say_mod = "says" + /// Default mutant bodyparts for this species. Don't forget to set one for every mutant bodypart you allow this species to have. + var/list/default_features = list() + /// Visible CURRENT bodyparts that are unique to a species. DO NOT USE THIS AS A LIST OF ALL POSSIBLE BODYPARTS AS IT WILL FUCK SHIT UP! Changes to this list for non-species specific bodyparts (ie cat ears and tails) should be assigned at organ level if possible. Layer hiding is handled by handle_mutant_bodyparts() below. + var/list/mutant_bodyparts = list() + ///Internal organs that are unique to this race. + var/list/mutant_organs = list() + /// this affects the race's speed. positive numbers make it move slower, negative numbers make it move faster + var/speedmod = 0 + /// overall defense for the race... or less defense, if it's negative. + var/armor = 0 + /// multiplier for brute damage + var/brutemod = 1 + /// multiplier for burn damage + var/burnmod = 1 + /// multiplier for cold damage + var/coldmod = 1 + /// multiplier for heat damage + var/heatmod = 1 + /// multiplier for stun duration + var/stunmod = 1 + ///lowest possible punch damage + var/punchdamagelow = 0 + ///highest possible punch damage + var/punchdamagehigh = 9 + ///damage at which punches from this race will stun //yes it should be to the attacked race but it's not useful that way even if it's logical + var/punchstunthreshold = 9 + ///base electrocution coefficient + var/siemens_coeff = 1 + ///what kind of damage overlays (if any) appear on our species when wounded? + var/damage_overlay_type = "human" + ///to use MUTCOLOR with a fixed color that's independent of dna.feature["mcolor"] + var/fixed_mut_color = "" + ///special mutation that can be found in the genepool. Dont leave empty or changing species will be a headache + var/inert_mutation = DWARFISM + ///Sounds to override barefeet walkng + var/list/special_step_sounds + ///Special sound for grabbing + var/grab_sound + /// audio of a species' scream //Stolen from yogs lol + var/screamsound - // species-only traits. Can be found in DNA.dm + /// species-only traits. Can be found in DNA.dm var/list/species_traits = list() - // generic traits tied to having the species + /// generic traits tied to having the species var/list/inherent_traits = list() + ///biotypes, used for viruses and the like var/list/inherent_biotypes = MOB_ORGANIC|MOB_HUMANOID - - var/attack_verb = "punch" // punch-specific attack verb + /// punch-specific attack verb + var/attack_verb = "punch" + ///the melee attack sound var/sound/attack_sound = 'sound/weapons/punch1.ogg' + ///the swing and miss sound var/sound/miss_sound = 'sound/weapons/punchmiss.ogg' - var/mob/living/list/ignored_by = list() // list of mobs that will ignore this species + /// list of mobs that will ignore this species + var/mob/living/list/ignored_by = list() //Breathing! - var/obj/item/organ/lungs/mutantlungs = null + ///what type of gas is breathed var/breathid = "o2" + ///Replaces default brain with a different organ var/obj/item/organ/brain/mutant_brain = /obj/item/organ/brain + ///Replaces default heart with a different organ var/obj/item/organ/heart/mutant_heart = /obj/item/organ/heart + ///Replaces default lungs with a different organ + var/obj/item/organ/lungs/mutantlungs = null + ///Replaces default eyes with a different organ var/obj/item/organ/eyes/mutanteyes = /obj/item/organ/eyes + ///Replaces default ears with a different organ var/obj/item/organ/ears/mutantears = /obj/item/organ/ears - var/obj/item/mutanthands + ///Replaces default tongue with a different organ var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue - var/obj/item/organ/tail/mutanttail = null - + ///Replaces default liver with a different organ var/obj/item/organ/liver/mutantliver + ///Replaces default stomach with a different organ var/obj/item/organ/stomach/mutantstomach + ///Forces a species tail + var/obj/item/organ/tail/mutanttail = null + ///Forces an item into this species' hands. Only an honorary mutantthing because this is not an organ and not loaded in the same way, you've been warned to do your research. + var/obj/item/mutanthands var/override_float = FALSE //Citadel snowflake var/fixed_mut_color2 = "" var/fixed_mut_color3 = "" - var/whitelisted = 0 //Is this species restricted to certain players? - var/whitelist = list() //List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. + ///Is this species restricted to certain players? + var/whitelisted = 0 + ///List the ckeys that can use this species, if it's whitelisted.: list("John Doe", "poopface666") Spaces & capitalization can be included or ignored entirely for each key as it checks for both. + var/whitelist = list() - var/icon_limbs //Overrides the icon used for the limbs of this species. Mainly for downstream, and also because hardcoded icons disgust me. Implemented and maintained as a favor in return for a downstream's implementation of synths. + ///Overrides the icon used for the limbs of this species. Mainly for downstream, and also because hardcoded icons disgust me. Implemented and maintained as a favor in return for a downstream's implementation of synths. + var/icon_limbs /// Our default override for typing indicator state var/typing_indicator_state @@ -2451,3 +2510,10 @@ GLOBAL_LIST_EMPTY(roundstart_races) /datum/species/proc/start_wagging_tail(mob/living/carbon/human/H) /datum/species/proc/stop_wagging_tail(mob/living/carbon/human/H) + +//Gainstation add: Screamcode I stole from yogs +/datum/species/proc/get_scream_sound(mob/living/carbon/human/H) + if(islist(screamsound)) + return pick(screamsound) + return screamsound +//Gainstation add End diff --git a/code/modules/mob/living/carbon/human/species_types/felinid.dm b/code/modules/mob/living/carbon/human/species_types/felinid.dm index ab611301..880141a5 100644 --- a/code/modules/mob/living/carbon/human/species_types/felinid.dm +++ b/code/modules/mob/living/carbon/human/species_types/felinid.dm @@ -13,6 +13,8 @@ liked_food = MEAT | RAW | DAIRY disliked_food = FRIED | FRUIT + screamsound = list('sound/voice/catpeople/scream1.ogg', 'sound/voice/catpeople/scream2.ogg', 'sound/voice/catpeople/scream3.ogg') + /datum/species/human/felinid/qualifies_for_rank(rank, list/features) return TRUE diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 6bb04fdf..bfec4d34 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -12,6 +12,8 @@ liked_food = GROSS exotic_bloodtype = "BUG" + screamsound = 'modular_citadel/sound/voice/scream_moth.ogg' + /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) if(chem.type == /datum/reagent/toxin/pestkiller) H.adjustToxLoss(3) diff --git a/code/modules/mob/living/carbon/human/species_types/humans.dm b/code/modules/mob/living/carbon/human/species_types/humans.dm index b4accdb2..ae2e7260 100644 --- a/code/modules/mob/living/carbon/human/species_types/humans.dm +++ b/code/modules/mob/living/carbon/human/species_types/humans.dm @@ -10,6 +10,18 @@ disliked_food = GROSS | RAW liked_food = JUNKFOOD | FRIED + var/list/female_screams = list('sound/voice/human/femalescream_1.ogg', 'sound/voice/human/femalescream_2.ogg', 'sound/voice/human/femalescream_3.ogg', 'sound/voice/human/femalescream_4.ogg', 'sound/voice/human/femalescream_5.ogg') + var/list/male_screams = list('sound/voice/human/malescream_1.ogg', 'sound/voice/human/malescream_2.ogg', 'sound/voice/human/malescream_3.ogg', 'sound/voice/human/malescream_4.ogg', 'sound/voice/human/malescream_5.ogg') + +/datum/species/human/get_scream_sound(mob/living/carbon/human/H) + if(H.gender == FEMALE) + return pick(female_screams) + else + if(prob(1)) + return sound = pick('modular_citadel/sound/voice/scream_m1.ogg', 'modular_citadel/sound/voice/scream_m2.ogg', \ + 'sound/voice/human/wilhelm_scream.ogg') + return pick(male_screams) + /datum/species/human/qualifies_for_rank(rank, list/features) return TRUE //Pure humans are always allowed in all roles. diff --git a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm index 17327b2c..c3781240 100644 --- a/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/lizardpeople.dm @@ -23,6 +23,8 @@ liked_food = GROSS | MEAT inert_mutation = FIREBREATH + screamsound = 'modular_citadel/sound/voice/scream_lizard.ogg' + /datum/species/lizard/after_equip_job(datum/job/J, mob/living/carbon/human/H) H.grant_language(/datum/language/draconic) diff --git a/code/modules/mob/living/carbon/human/species_types/mothmen.dm b/code/modules/mob/living/carbon/human/species_types/mothmen.dm index ab6952cc..e194332b 100644 --- a/code/modules/mob/living/carbon/human/species_types/mothmen.dm +++ b/code/modules/mob/living/carbon/human/species_types/mothmen.dm @@ -15,6 +15,8 @@ disliked_food = FRUIT | GROSS toxic_food = MEAT | RAW exotic_bloodtype = "BUG" + + screamsound = 'sound/voice/moth/scream_moth.ogg' /datum/species/moth/on_species_gain(mob/living/carbon/C) . = ..() diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index ef9c2c11..1f209794 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -13,6 +13,8 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = GROSS | MEAT | RAW | DAIRY + + screamsound = 'modular_citadel/sound/voice/scream_skeleton.ogg' /datum/species/skeleton/check_roundstart_eligible() if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index e7395db3..453534ac 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -16,6 +16,8 @@ var/list/initial_inherent_traits = list(TRAIT_VIRUSIMMUNE,TRAIT_NODISMEMBER,TRAIT_NOHUNGER,TRAIT_NOTHIRST,TRAIT_NOLIMBDISABLE,TRAIT_NOBREATH) var/disguise_fail_health = 75 //When their health gets to this level their synthflesh partially falls off var/datum/species/fake_species = null //a species to do most of our work for us, unless we're damaged + + screamsound = list('goon/sound/robot_scream.ogg', 'modular_citadel/sound/voice/scream_silicon.ogg') /datum/species/synth/military name = "Military Synth" diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm index f6c9b095..f5e79ba7 100644 --- a/code/modules/mob/living/emote.dm +++ b/code/modules/mob/living/emote.dm @@ -277,6 +277,12 @@ message = "screams." message_mime = "acts out a scream!" emote_type = EMOTE_AUDIBLE + mob_type_blacklist_typecache = list(/mob/living/carbon/human) //Humans get specialized scream. + +/datum/emote/living/scream/select_message_type(mob/user, intentional) + . = ..() + if(!intentional && isanimal(user)) + return "makes a loud and pained whimper." /datum/emote/living/scowl key = "scowl" @@ -525,13 +531,13 @@ to_chat(user, message) -/datum/emote/sound/beep +/datum/emote/beep key = "beep" key_third_person = "beeps" message = "beeps." message_param = "beeps at %t." sound = 'sound/machines/twobeep.ogg' - mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon, /mob/living/carbon/human) + mob_type_allowed_typecache = list(/mob/living/brain, /mob/living/silicon) /datum/emote/living/circle key = "circle" @@ -561,91 +567,3 @@ to_chat(user, "You ready your slapping hand.") else to_chat(user, "You're incapable of slapping in your current state.") - -//Carl wuz here -//FUCK YOU CARL SUCK MY BALLS YOU WHORE -/datum/emote/living/tesh_sneeze - key = "tesh_sneeze" - key_third_person = "sneezes" - message = "sneezes." - emote_type = EMOTE_AUDIBLE - -/datum/emote/living/tesh_sneeze/can_run_emote(mob/living/user, status_check = TRUE) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - return !C.silent - -/datum/emote/living/tesh_sneeze/run_emote(mob/user, params) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - if(!C.mind || C.mind.miming)//no cute sneezing for you. - return - if(ishumanbasic(C)) - playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) - if(is_species(user, /datum/species/avian))//This is required(related to subtypes), otherwise it doesn't play the noises. Sometimes. Always sometimes. Just how it be. - playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) - if(is_species(user, /datum/species/mammal))//Just because the avian subspecies doesn't have proper sprites. Some people can't use it. - playsound(C, pick('hyperstation/sound/voice/emotes/tesh_sneeze1.ogg', 'hyperstation/sound/voice/emotes/tesh_sneeze1b.ogg'), 50, 1) - -/datum/emote/living/racc - key = "racc_chitter" - key_third_person = "chitters" - message = "chitters." - emote_type = EMOTE_AUDIBLE - -/datum/emote/living/racc/can_run_emote(mob/living/user, status_check = TRUE) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - return !C.silent - -/datum/emote/living/racc/run_emote(mob/user, params) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - if(!C.mind || C.mind.miming) - return - if(ishumanbasic(C)) - playsound(C, pick('hyperstation/sound/voice/emotes/racc_chitter_1.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_2.ogg',\ - 'hyperstation/sound/voice/emotes/racc_chitter_3.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_4.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_5.ogg',\ - 'hyperstation/sound/voice/emotes/racc_chitter_6.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_7.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_8.ogg'), 50, 1) - if(is_species(user, /datum/species/mammal)) - playsound(C, pick('hyperstation/sound/voice/emotes/racc_chitter_1.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_2.ogg',\ - 'hyperstation/sound/voice/emotes/racc_chitter_3.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_4.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_5.ogg',\ - 'hyperstation/sound/voice/emotes/racc_chitter_6.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_7.ogg', 'hyperstation/sound/voice/emotes/racc_chitter_8.ogg'), 50, 1) - -/datum/emote/living/bat - key = "bat_chitter" - key_third_person = "chitters" - message = "chitters." - emote_type = EMOTE_AUDIBLE - -/datum/emote/living/bat/can_run_emote(mob/living/user, status_check = TRUE) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - return !C.silent - -/datum/emote/living/bat/run_emote(mob/user, params) - . = ..() - if(. && iscarbon(user)) - var/mob/living/carbon/C = user - if(!C.mind || C.mind.miming) - return - if(ishumanbasic(C)) - playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) - if(is_species(user, /datum/species/mammal)) - playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) - if(is_species(user, /datum/species/avian))//this and mammal should be considered the same AAAAAAAAAAAA - playsound(C, pick('hyperstation/sound/voice/emotes/bat_c1.ogg', 'hyperstation/sound/voice/emotes/bat_c2.ogg', 'hyperstation/sound/voice/emotes/bat_c3.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c4.ogg', 'hyperstation/sound/voice/emotes/bat_c5.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c6.ogg', 'hyperstation/sound/voice/emotes/bat_c7.ogg', 'hyperstation/sound/voice/emotes/bat_c8.ogg',\ - 'hyperstation/sound/voice/emotes/bat_c9.ogg'), 50, 1) diff --git a/code/modules/mob/living/silicon/robot/emote.dm b/code/modules/mob/living/silicon/robot/emote.dm index 65e1047c..9b2eed17 100644 --- a/code/modules/mob/living/silicon/robot/emote.dm +++ b/code/modules/mob/living/silicon/robot/emote.dm @@ -2,59 +2,55 @@ mob_type_allowed_typecache = list(/mob/living/silicon) emote_type = EMOTE_AUDIBLE -/datum/emote/sound/silicon - mob_type_allowed_typecache = list(/mob/living/silicon) - emote_type = EMOTE_AUDIBLE - /datum/emote/silicon/boop key = "boop" key_third_person = "boops" message = "boops." -/datum/emote/sound/silicon/buzz +/datum/emote/silicon/buzz key = "buzz" key_third_person = "buzzes" message = "buzzes." message_param = "buzzes at %t." sound = 'sound/machines/buzz-sigh.ogg' -/datum/emote/sound/silicon/buzz2 +/datum/emote/silicon/buzz2 key = "buzz2" message = "buzzes twice." sound = 'sound/machines/buzz-two.ogg' -/datum/emote/sound/silicon/chime +/datum/emote/silicon/chime key = "chime" key_third_person = "chimes" message = "chimes." sound = 'sound/machines/chime.ogg' -/datum/emote/sound/silicon/honk +/datum/emote/silicon/honk key = "honk" key_third_person = "honks" message = "honks." vary = TRUE sound = 'sound/items/bikehorn.ogg' -/datum/emote/sound/silicon/ping +/datum/emote/silicon/ping key = "ping" key_third_person = "pings" message = "pings." message_param = "pings at %t." sound = 'sound/machines/ping.ogg' -/datum/emote/sound/silicon/chime +/datum/emote/silicon/chime key = "chime" key_third_person = "chimes" message = "chimes." sound = 'sound/machines/chime.ogg' -/datum/emote/sound/silicon/sad +/datum/emote/silicon/sad key = "sad" message = "plays a sad trombone..." sound = 'sound/misc/sadtrombone.ogg' -/datum/emote/sound/silicon/warn +/datum/emote/silicon/warn key = "warn" message = "blares an alarm!" sound = 'sound/machines/warning-buzzer.ogg' diff --git a/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm b/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm index 100db061..d64406a6 100644 --- a/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm +++ b/code/modules/mob/living/simple_animal/hostile/gorilla/emotes.dm @@ -1,8 +1,8 @@ -/datum/emote/sound/gorilla +/datum/emote/gorilla mob_type_allowed_typecache = /mob/living/simple_animal/hostile/gorilla mob_type_blacklist_typecache = list() -/datum/emote/sound/gorilla/ooga +/datum/emote/gorilla/ooga key = "ooga" key_third_person = "oogas" message = "oogas." diff --git a/code/modules/surgery/organs/helpers.dm b/code/modules/surgery/organs/helpers.dm index 964349b7..ad0c0d8f 100644 --- a/code/modules/surgery/organs/helpers.dm +++ b/code/modules/surgery/organs/helpers.dm @@ -1,9 +1,27 @@ +/** + * Get the organ object from the mob matching the passed in typepath + * + * Arguments: + * * typepath The typepath of the organ to get + */ /mob/proc/getorgan(typepath) return - +/** + * Get organ objects by zone + * + * This will return a list of all the organs that are relevant to the zone that is passedin + * + * Arguments: + * * zone [a BODY_ZONE_X define](https://github.com/tgstation/tgstation/blob/master/code/__DEFINES/combat.dm#L187-L200) + */ /mob/proc/getorganszone(zone) return - +/** + * Get an organ relating to a specific slot + * + * Arguments: + * * slot Slot to get the organ from + */ /mob/proc/getorganslot(slot) return diff --git a/goon/sound/robot_scream.ogg b/goon/sound/robot_scream.ogg new file mode 100644 index 00000000..5db056a7 Binary files /dev/null and b/goon/sound/robot_scream.ogg differ diff --git a/modular_citadel/code/modules/mob/cit_emotes.dm b/modular_citadel/code/modules/mob/cit_emotes.dm index 4134e35a..c293650d 100644 --- a/modular_citadel/code/modules/mob/cit_emotes.dm +++ b/modular_citadel/code/modules/mob/cit_emotes.dm @@ -44,6 +44,7 @@ sound = 'modular_citadel/sound/voice/scream_monkey.ogg' if(istype(user, /mob/living/simple_animal/hostile/gorilla)) sound = 'sound/creatures/gorilla.ogg' + /* //Gainstation Remove: Human species scream overhaul oops if(ishuman(user)) user.adjustOxyLoss(5) sound = pick('modular_citadel/sound/voice/scream_m1.ogg', 'modular_citadel/sound/voice/scream_m2.ogg') @@ -57,6 +58,7 @@ sound = 'modular_citadel/sound/voice/scream_skeleton.ogg' if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/insect)) sound = 'modular_citadel/sound/voice/scream_moth.ogg' + */ if(isalien(user)) sound = 'sound/voice/hiss6.ogg' LAZYINITLIST(user.alternate_screams) @@ -70,7 +72,7 @@ message = "makes a very loud noise." . = ..() -/datum/emote/sound/carbon/snap +/datum/emote/carbon/snap key = "snap" key_third_person = "snaps" muzzle_ignore = TRUE diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm index 69acb888..e5638f9b 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/furrypeople.dm @@ -13,6 +13,18 @@ meat = /obj/item/reagent_containers/food/snacks/meat/slab/human/mutant/mammal liked_food = MEAT | FRIED disliked_food = TOXIC + //Same as humans + var/list/female_screams = list('sound/voice/human/femalescream_1.ogg', 'sound/voice/human/femalescream_2.ogg', 'sound/voice/human/femalescream_3.ogg', 'sound/voice/human/femalescream_4.ogg', 'sound/voice/human/femalescream_5.ogg') + var/list/male_screams = list('sound/voice/human/malescream_1.ogg', 'sound/voice/human/malescream_2.ogg', 'sound/voice/human/malescream_3.ogg', 'sound/voice/human/malescream_4.ogg', 'sound/voice/human/malescream_5.ogg') + +/datum/species/human/get_scream_sound(mob/living/carbon/human/H) + if(H.gender == FEMALE) + return pick(female_screams) + else + if(prob(1)) + return sound = pick('modular_citadel/sound/voice/scream_m1.ogg', 'modular_citadel/sound/voice/scream_m2.ogg', \ + 'sound/voice/human/wilhelm_scream.ogg') + return pick(male_screams) //Curiosity killed the cat's wagging tail. /datum/species/mammal/spec_death(gibbed, mob/living/carbon/human/H) diff --git a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm index f1f7c07a..1ce5f59c 100644 --- a/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm +++ b/modular_citadel/code/modules/mob/living/carbon/human/species_types/ipc.dm @@ -19,6 +19,8 @@ mutantstomach = /obj/item/organ/stomach/ipc mutanteyes = /obj/item/organ/eyes/ipc + screamsound = list('goon/sound/robot_scream.ogg', 'modular_citadel/sound/voice/scream_silicon.ogg') + exotic_bloodtype = "HF" var/datum/action/innate/monitor_change/screen diff --git a/sound/voice/catpeople/scream1.ogg b/sound/voice/catpeople/scream1.ogg new file mode 100644 index 00000000..ea40a7a4 Binary files /dev/null and b/sound/voice/catpeople/scream1.ogg differ diff --git a/sound/voice/catpeople/scream2.ogg b/sound/voice/catpeople/scream2.ogg new file mode 100644 index 00000000..c6f0642a Binary files /dev/null and b/sound/voice/catpeople/scream2.ogg differ diff --git a/sound/voice/catpeople/scream3.ogg b/sound/voice/catpeople/scream3.ogg new file mode 100644 index 00000000..eb204044 Binary files /dev/null and b/sound/voice/catpeople/scream3.ogg differ diff --git a/sound/voice/human/femalescream_1.ogg b/sound/voice/human/femalescream_1.ogg new file mode 100644 index 00000000..c0f80a14 Binary files /dev/null and b/sound/voice/human/femalescream_1.ogg differ diff --git a/sound/voice/human/femalescream_2.ogg b/sound/voice/human/femalescream_2.ogg new file mode 100644 index 00000000..978a236d Binary files /dev/null and b/sound/voice/human/femalescream_2.ogg differ diff --git a/sound/voice/human/femalescream_3.ogg b/sound/voice/human/femalescream_3.ogg new file mode 100644 index 00000000..30e4150a Binary files /dev/null and b/sound/voice/human/femalescream_3.ogg differ diff --git a/sound/voice/human/femalescream_4.ogg b/sound/voice/human/femalescream_4.ogg new file mode 100644 index 00000000..bb73a1ef Binary files /dev/null and b/sound/voice/human/femalescream_4.ogg differ diff --git a/sound/voice/human/femalescream_5.ogg b/sound/voice/human/femalescream_5.ogg new file mode 100644 index 00000000..96a08297 Binary files /dev/null and b/sound/voice/human/femalescream_5.ogg differ diff --git a/sound/voice/human/malescream_1.ogg b/sound/voice/human/malescream_1.ogg new file mode 100644 index 00000000..ee9005b8 Binary files /dev/null and b/sound/voice/human/malescream_1.ogg differ diff --git a/sound/voice/human/malescream_2.ogg b/sound/voice/human/malescream_2.ogg new file mode 100644 index 00000000..989b612a Binary files /dev/null and b/sound/voice/human/malescream_2.ogg differ diff --git a/sound/voice/human/malescream_3.ogg b/sound/voice/human/malescream_3.ogg new file mode 100644 index 00000000..902db1c1 Binary files /dev/null and b/sound/voice/human/malescream_3.ogg differ diff --git a/sound/voice/human/malescream_4.ogg b/sound/voice/human/malescream_4.ogg new file mode 100644 index 00000000..62f787d4 Binary files /dev/null and b/sound/voice/human/malescream_4.ogg differ diff --git a/sound/voice/human/malescream_5.ogg b/sound/voice/human/malescream_5.ogg new file mode 100644 index 00000000..2aec2c71 Binary files /dev/null and b/sound/voice/human/malescream_5.ogg differ diff --git a/sound/voice/human/wilhelm_scream.ogg b/sound/voice/human/wilhelm_scream.ogg new file mode 100644 index 00000000..9a81c47f Binary files /dev/null and b/sound/voice/human/wilhelm_scream.ogg differ diff --git a/sound/voice/teppi/cute_rumble.ogg b/sound/voice/teppi/cute_rumble.ogg new file mode 100644 index 00000000..af739eac Binary files /dev/null and b/sound/voice/teppi/cute_rumble.ogg differ diff --git a/sound/voice/teppi/gyooh1.ogg b/sound/voice/teppi/gyooh1.ogg new file mode 100644 index 00000000..0aa7df90 Binary files /dev/null and b/sound/voice/teppi/gyooh1.ogg differ diff --git a/sound/voice/teppi/gyooh2.ogg b/sound/voice/teppi/gyooh2.ogg new file mode 100644 index 00000000..f522ab3b Binary files /dev/null and b/sound/voice/teppi/gyooh2.ogg differ diff --git a/sound/voice/teppi/gyooh3.ogg b/sound/voice/teppi/gyooh3.ogg new file mode 100644 index 00000000..445549da Binary files /dev/null and b/sound/voice/teppi/gyooh3.ogg differ diff --git a/sound/voice/teppi/gyooh4.ogg b/sound/voice/teppi/gyooh4.ogg new file mode 100644 index 00000000..c7eed0a0 Binary files /dev/null and b/sound/voice/teppi/gyooh4.ogg differ diff --git a/sound/voice/teppi/gyooh5.ogg b/sound/voice/teppi/gyooh5.ogg new file mode 100644 index 00000000..69aa095b Binary files /dev/null and b/sound/voice/teppi/gyooh5.ogg differ diff --git a/sound/voice/teppi/gyooh6.ogg b/sound/voice/teppi/gyooh6.ogg new file mode 100644 index 00000000..9d7d5d67 Binary files /dev/null and b/sound/voice/teppi/gyooh6.ogg differ diff --git a/sound/voice/teppi/roar.ogg b/sound/voice/teppi/roar.ogg new file mode 100644 index 00000000..b15261e0 Binary files /dev/null and b/sound/voice/teppi/roar.ogg differ diff --git a/sound/voice/teppi/rumble.ogg b/sound/voice/teppi/rumble.ogg new file mode 100644 index 00000000..0d78c28d Binary files /dev/null and b/sound/voice/teppi/rumble.ogg differ diff --git a/sound/voice/teppi/snoot1.ogg b/sound/voice/teppi/snoot1.ogg new file mode 100644 index 00000000..6083d3ea Binary files /dev/null and b/sound/voice/teppi/snoot1.ogg differ diff --git a/sound/voice/teppi/snoot2.ogg b/sound/voice/teppi/snoot2.ogg new file mode 100644 index 00000000..180bcdb5 Binary files /dev/null and b/sound/voice/teppi/snoot2.ogg differ diff --git a/sound/voice/teppi/whine1.ogg b/sound/voice/teppi/whine1.ogg new file mode 100644 index 00000000..afd57567 Binary files /dev/null and b/sound/voice/teppi/whine1.ogg differ diff --git a/sound/voice/teppi/whine2.ogg b/sound/voice/teppi/whine2.ogg new file mode 100644 index 00000000..690b4415 Binary files /dev/null and b/sound/voice/teppi/whine2.ogg differ