diff --git a/code/game/sound.dm b/code/game/sound.dm index 1ab8fc42f41a..e5cfc8c79a4a 100644 --- a/code/game/sound.dm +++ b/code/game/sound.dm @@ -353,6 +353,10 @@ S = pick('sound/voice/warcry/male_go.ogg', 'sound/voice/warcry/male_attack.ogg', 'sound/voice/warcry/male_charge.ogg', 'sound/voice/warcry/male_charge2.ogg', 'sound/voice/warcry/warcry_male_1.ogg', 'sound/voice/warcry/warcry_male_2.ogg', 'sound/voice/warcry/warcry_male_3.ogg', 'sound/voice/warcry/warcry_male_4.ogg', 'sound/voice/warcry/warcry_male_5.ogg', 'sound/voice/warcry/warcry_male_6.ogg', 'sound/voice/warcry/warcry_male_7.ogg', 'sound/voice/warcry/warcry_male_8.ogg', 'sound/voice/warcry/warcry_male_9.ogg', 'sound/voice/warcry/warcry_male_10.ogg', 'sound/voice/warcry/warcry_male_11.ogg', 'sound/voice/warcry/warcry_male_12.ogg', 'sound/voice/warcry/warcry_male_13.ogg', 'sound/voice/warcry/warcry_male_14.ogg', 'sound/voice/warcry/warcry_male_15.ogg', 'sound/voice/warcry/warcry_male_16.ogg', 'sound/voice/warcry/warcry_male_17.ogg', 'sound/voice/warcry/warcry_male_18.ogg', 'sound/voice/warcry/warcry_male_19.ogg', 'sound/voice/warcry/warcry_male_20.ogg', 'sound/voice/warcry/warcry_male_21.ogg', 'sound/voice/warcry/warcry_male_22.ogg', 'sound/voice/warcry/warcry_male_23.ogg', 'sound/voice/warcry/warcry_male_24.ogg', 'sound/voice/warcry/warcry_male_25.ogg', 'sound/voice/warcry/warcry_male_26.ogg', 'sound/voice/warcry/warcry_male_27.ogg', 'sound/voice/warcry/warcry_male_28.ogg', 'sound/voice/warcry/warcry_male_29.ogg', 'sound/voice/warcry/warcry_male_30.ogg', 'sound/voice/warcry/warcry_male_31.ogg', 'sound/voice/warcry/warcry_male_32.ogg', 'sound/voice/warcry/warcry_male_33.ogg', 'sound/voice/warcry/warcry_male_34.ogg', 'sound/voice/warcry/warcry_male_35.ogg', 5;'sound/voice/warcry/warcry_male_rare_1.ogg', 5;'sound/voice/warcry/warcry_male_rare_2.ogg', 5;'sound/voice/warcry/warcry_male_rare_3.ogg', 5;'sound/voice/warcry/warcry_male_rare_4.ogg', 5;'sound/voice/warcry/warcry_male_rare_5.ogg') if("male_upp_warcry") S = pick('sound/voice/upp_warcry/warcry_male_1.ogg', 'sound/voice/upp_warcry/warcry_male_2.ogg') + if("male_preburst") + S = pick("sound/voice/human_male_preburst1.ogg", 'sound/voice/human_male_preburst2.ogg', 'sound/voice/human_male_preburst3.ogg', 'sound/voice/human_male_preburst4.ogg', 'sound/voice/human_male_preburst5.ogg', 'sound/voice/human_male_preburst6.ogg', 'sound/voice/human_male_preburst7.ogg', 'sound/voice/human_male_preburst8.ogg', 'sound/voice/human_male_preburst9.ogg') + if("male_hugged") + S = pick("sound/voice/human_male_facehugged1.ogg", 'sound/voice/human_male_facehugged2.ogg', 'sound/voice/human_male_facehugged3.ogg') if("female_scream") S = pick('sound/voice/human_female_scream_1.ogg','sound/voice/human_female_scream_2.ogg','sound/voice/human_female_scream_3.ogg','sound/voice/human_female_scream_4.ogg',5;'sound/voice/human_female_scream_5.ogg') if("female_pain") @@ -363,6 +367,10 @@ S = pick('sound/voice/warcry/female_charge.ogg', 'sound/voice/warcry/female_yell1.ogg', 'sound/voice/warcry/warcry_female_1.ogg', 'sound/voice/warcry/warcry_female_2.ogg', 'sound/voice/warcry/warcry_female_3.ogg', 'sound/voice/warcry/warcry_female_4.ogg', 'sound/voice/warcry/warcry_female_5.ogg', 'sound/voice/warcry/warcry_female_6.ogg', 'sound/voice/warcry/warcry_female_7.ogg', 'sound/voice/warcry/warcry_female_8.ogg', 'sound/voice/warcry/warcry_female_9.ogg', 'sound/voice/warcry/warcry_female_10.ogg', 'sound/voice/warcry/warcry_female_11.ogg', 'sound/voice/warcry/warcry_female_12.ogg', 'sound/voice/warcry/warcry_female_13.ogg', 'sound/voice/warcry/warcry_female_14.ogg', 'sound/voice/warcry/warcry_female_15.ogg', 'sound/voice/warcry/warcry_female_16.ogg', 'sound/voice/warcry/warcry_female_17.ogg', 'sound/voice/warcry/warcry_female_18.ogg', 'sound/voice/warcry/warcry_female_19.ogg', 'sound/voice/warcry/warcry_female_20.ogg') if("female_upp_warcry") S = pick('sound/voice/upp_warcry/warcry_female_1.ogg', 'sound/voice/upp_warcry/warcry_female_2.ogg') + if("female_preburst") + S = pick("sound/voice/human_female_preburst1.ogg", 'sound/voice/human_female_preburst2.ogg', 'sound/voice/human_female_preburst3.ogg') + if("female_hugged") + S = pick("sound/voice/human_female_facehugged1.ogg", 'sound/voice/human_female_facehugged2.ogg') if("rtb_handset") S = pick('sound/machines/telephone/rtb_handset_1.ogg', 'sound/machines/telephone/rtb_handset_2.ogg', 'sound/machines/telephone/rtb_handset_3.ogg', 'sound/machines/telephone/rtb_handset_4.ogg', 'sound/machines/telephone/rtb_handset_5.ogg') if("bone_break") @@ -374,6 +382,8 @@ S = pick('sound/voice/cat_meow_1.ogg','sound/voice/cat_meow_2.ogg','sound/voice/cat_meow_3.ogg','sound/voice/cat_meow_4.ogg','sound/voice/cat_meow_5.ogg','sound/voice/cat_meow_6.ogg','sound/voice/cat_meow_7.ogg') if("pred_pain") S = pick('sound/voice/pred_pain1.ogg','sound/voice/pred_pain2.ogg','sound/voice/pred_pain3.ogg','sound/voice/pred_pain4.ogg','sound/voice/pred_pain5.ogg',5;'sound/voice/pred_pain_rare1.ogg') + if("pred_preburst") + S = pick('sound/voice/pred_pain_rare1.ogg') if("clownstep") S = pick('sound/effects/clownstep1.ogg', 'sound/effects/clownstep2.ogg') return S diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 7da0376bbef1..f789dd8a6827 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -219,6 +219,7 @@ var/pain_message = pick("OW!!", "AGH!!", "ARGH!!", "OUCH!!", "ACK!!", "OUF!") user.langchat_speech(pain_message, group, GLOB.all_languages, skip_language_check = TRUE, animation_style = LANGCHAT_FAST_POP, additional_styles = list("langchat_yell")) + /datum/emote/living/carbon/human/salute key = "salute" key_third_person = "salutes" @@ -382,3 +383,24 @@ return user.show_speech_bubble("scream") + +/datum/emote/living/carbon/human/burstscream + key = "burstscream" + message = "screams in agony!" + emote_type = EMOTE_AUDIBLE + stat_allowed = UNCONSCIOUS + +/datum/emote/living/carbon/human/burstscream/get_sound(mob/living/carbon/human/user) + if(!user.species) + return + if(user.species.burstscreams[user.gender]) + return user.species.burstscreams[user.gender] + if(user.species.burstscreams[NEUTER]) + return user.species.burstscreams[NEUTER] + +/datum/emote/living/carbon/human/burstscream/run_emote(mob/living/user, params, type_override, intentional) + . = ..() + if(!.) + return FALSE + + user.show_speech_bubble("pain") diff --git a/code/modules/mob/living/carbon/human/species/human.dm b/code/modules/mob/living/carbon/human/species/human.dm index 320aa9504826..e8fa59cb062b 100644 --- a/code/modules/mob/living/carbon/human/species/human.dm +++ b/code/modules/mob/living/carbon/human/species/human.dm @@ -91,6 +91,8 @@ uses_skin_color = TRUE special_body_types = TRUE + burstscreams = list(MALE = "male_preburst", FEMALE = "female_preburst") + /datum/species/human/handle_on_fire(humanoidmob) . = ..() INVOKE_ASYNC(humanoidmob, TYPE_PROC_REF(/mob, emote), pick("pain", "scream")) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 42338c2c40a2..a38a49f9a784 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -119,6 +119,9 @@ var/has_species_tab_items = FALSE + //Species specific emote sound lists + var/list/burstscreams = list() + /datum/species/New() if(unarmed_type) unarmed = new unarmed_type() diff --git a/code/modules/mob/living/carbon/human/species/yautja/_species.dm b/code/modules/mob/living/carbon/human/species/yautja/_species.dm index 042c9917af61..9a7d36f68efd 100644 --- a/code/modules/mob/living/carbon/human/species/yautja/_species.dm +++ b/code/modules/mob/living/carbon/human/species/yautja/_species.dm @@ -34,6 +34,8 @@ bloodsplatter_type = /obj/effect/temp_visual/dir_setting/bloodsplatter/yautjasplatter + burstscreams = list(MALE = "pred_preburst", FEMALE = "pred_preburst") + heat_level_1 = 500 heat_level_2 = 700 heat_level_3 = 1000 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 6b2739780288..8586d65cc25d 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -694,11 +694,14 @@ Applied by gun suicide and high impact bullet executions, removed by rejuvenate, /mob/living/carbon/human/update_burst() remove_overlay(BURST_LAYER) var/image/standing + var/bursting_icon = "stand" + if(isyautja(src)) + bursting_icon = "yautja_stand" switch(chestburst) if(1) - standing = image("icon" = 'icons/mob/xenos/effects.dmi',"icon_state" = "burst_stand", "layer" = -BURST_LAYER) + standing = image("icon" = 'icons/mob/xenos/effects.dmi',"icon_state" = "burst_[bursting_icon]", "layer" = -BURST_LAYER) if(2) - standing = image("icon" = 'icons/mob/xenos/effects.dmi',"icon_state" = "bursted_stand", "layer" = -BURST_LAYER) + standing = image("icon" = 'icons/mob/xenos/effects.dmi',"icon_state" = "bursted_[bursting_icon]", "layer" = -BURST_LAYER) else return overlays_standing[BURST_LAYER] = standing diff --git a/code/modules/mob/living/carbon/xenomorph/Embryo.dm b/code/modules/mob/living/carbon/xenomorph/Embryo.dm index 61ba87cd001b..e395820da94b 100644 --- a/code/modules/mob/living/carbon/xenomorph/Embryo.dm +++ b/code/modules/mob/living/carbon/xenomorph/Embryo.dm @@ -309,8 +309,11 @@ if(loc != victim) victim.chestburst = 0 return + if(ishuman(victim) || isyautja(victim)) + victim.emote("burstscream") + sleep(25) //Sound delay victim.update_burst() - sleep(6) //Sprite delay + sleep(10) //Sprite delay if(!victim || !victim.loc) return if(loc != victim) @@ -318,11 +321,6 @@ victim.update_burst() return - if(isyautja(victim)) - victim.emote("roar") - else - victim.emote("scream") - var/burstcount = 0 victim.spawn_gibs() diff --git a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm index 9a87f10d74a3..2ee9642c6067 100644 --- a/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm +++ b/code/modules/mob/living/carbon/xenomorph/Facehuggers.dm @@ -293,7 +293,7 @@ human.disable_lights() human.disable_special_items() if(ishuman_strict(human)) - playsound(loc, human.gender == "male" ? 'sound/misc/facehugged_male.ogg' : 'sound/misc/facehugged_female.ogg' , 25, 0) + playsound(loc, human.gender == "male" ? "male_hugged" : "female_hugged" , 25, 0) else if(isyautja(human)) playsound(loc, 'sound/voice/pred_facehugged.ogg', 65, FALSE) if(!sterile) diff --git a/icons/mob/xenos/effects.dmi b/icons/mob/xenos/effects.dmi index 132c5f78b0d7..dfdcbf95d54b 100644 Binary files a/icons/mob/xenos/effects.dmi and b/icons/mob/xenos/effects.dmi differ diff --git a/sound/misc/facehugged_female.ogg b/sound/voice/human_female_facehugged1.ogg similarity index 100% rename from sound/misc/facehugged_female.ogg rename to sound/voice/human_female_facehugged1.ogg diff --git a/sound/voice/human_female_facehugged2.ogg b/sound/voice/human_female_facehugged2.ogg new file mode 100644 index 000000000000..01352c449d9f Binary files /dev/null and b/sound/voice/human_female_facehugged2.ogg differ diff --git a/sound/voice/human_female_preburst1.ogg b/sound/voice/human_female_preburst1.ogg new file mode 100644 index 000000000000..8e4923eb93f4 Binary files /dev/null and b/sound/voice/human_female_preburst1.ogg differ diff --git a/sound/voice/human_female_preburst2.ogg b/sound/voice/human_female_preburst2.ogg new file mode 100644 index 000000000000..f4e8990f49d8 Binary files /dev/null and b/sound/voice/human_female_preburst2.ogg differ diff --git a/sound/voice/human_female_preburst3.ogg b/sound/voice/human_female_preburst3.ogg new file mode 100644 index 000000000000..481063183201 Binary files /dev/null and b/sound/voice/human_female_preburst3.ogg differ diff --git a/sound/misc/facehugged_male.ogg b/sound/voice/human_male_facehugged1.ogg similarity index 100% rename from sound/misc/facehugged_male.ogg rename to sound/voice/human_male_facehugged1.ogg diff --git a/sound/voice/human_male_facehugged2.ogg b/sound/voice/human_male_facehugged2.ogg new file mode 100644 index 000000000000..b701e1f50ea4 Binary files /dev/null and b/sound/voice/human_male_facehugged2.ogg differ diff --git a/sound/voice/human_male_facehugged3.ogg b/sound/voice/human_male_facehugged3.ogg new file mode 100644 index 000000000000..6d1292d0918a Binary files /dev/null and b/sound/voice/human_male_facehugged3.ogg differ diff --git a/sound/voice/human_male_preburst1.ogg b/sound/voice/human_male_preburst1.ogg new file mode 100644 index 000000000000..6f3e76997acc Binary files /dev/null and b/sound/voice/human_male_preburst1.ogg differ diff --git a/sound/voice/human_male_preburst2.ogg b/sound/voice/human_male_preburst2.ogg new file mode 100644 index 000000000000..40aea6a8ae8d Binary files /dev/null and b/sound/voice/human_male_preburst2.ogg differ diff --git a/sound/voice/human_male_preburst3.ogg b/sound/voice/human_male_preburst3.ogg new file mode 100644 index 000000000000..813c123ac8f2 Binary files /dev/null and b/sound/voice/human_male_preburst3.ogg differ diff --git a/sound/voice/human_male_preburst4.ogg b/sound/voice/human_male_preburst4.ogg new file mode 100644 index 000000000000..b58b7e6cabd6 Binary files /dev/null and b/sound/voice/human_male_preburst4.ogg differ diff --git a/sound/voice/human_male_preburst5.ogg b/sound/voice/human_male_preburst5.ogg new file mode 100644 index 000000000000..1d54adcaa7aa Binary files /dev/null and b/sound/voice/human_male_preburst5.ogg differ diff --git a/sound/voice/human_male_preburst6.ogg b/sound/voice/human_male_preburst6.ogg new file mode 100644 index 000000000000..c5b0f3d27a56 Binary files /dev/null and b/sound/voice/human_male_preburst6.ogg differ diff --git a/sound/voice/human_male_preburst7.ogg b/sound/voice/human_male_preburst7.ogg new file mode 100644 index 000000000000..adc8ea3a8c7b Binary files /dev/null and b/sound/voice/human_male_preburst7.ogg differ diff --git a/sound/voice/human_male_preburst8.ogg b/sound/voice/human_male_preburst8.ogg new file mode 100644 index 000000000000..f52d9da063b9 Binary files /dev/null and b/sound/voice/human_male_preburst8.ogg differ diff --git a/sound/voice/human_male_preburst9.ogg b/sound/voice/human_male_preburst9.ogg new file mode 100644 index 000000000000..c10942822113 Binary files /dev/null and b/sound/voice/human_male_preburst9.ogg differ