diff --git a/code/game/sound.dm b/code/game/sound.dm
index 14269acb81f..8033e928173 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -15,6 +15,7 @@ var/list/ricochet = list('sound/weapons/effects/ric1.ogg', 'sound/weapons/effect
var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/machines/terminal_button02.ogg', 'sound/machines/terminal_button03.ogg',
'sound/machines/terminal_button04.ogg', 'sound/machines/terminal_button05.ogg', 'sound/machines/terminal_button06.ogg',
'sound/machines/terminal_button07.ogg', 'sound/machines/terminal_button08.ogg')
+var/list/growls = list('sound/goonstation/voice/growl1.ogg', 'sound/goonstation/voice/growl2.ogg', 'sound/goonstation/voice/growl3.ogg')
/proc/playsound(var/atom/source, soundin, vol as num, vary, extrarange as num, falloff, var/is_global, var/pitch)
@@ -142,4 +143,6 @@ var/list/terminal_type = list('sound/machines/terminal_button01.ogg', 'sound/mac
soundin = pick(ricochet)
if("terminal_type")
soundin = pick(terminal_type)
+ if("growls")
+ soundin = pick(growls)
return soundin
diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm
index e5778b6fbca..67bdd3f3412 100644
--- a/code/modules/mob/living/carbon/human/emote.dm
+++ b/code/modules/mob/living/carbon/human/emote.dm
@@ -36,8 +36,18 @@
if("drone","drones","hum","hums","rumble","rumbles")
if(species.name == "Drask") //Only Drask can make whale noises
on_CD = handle_emote_CD() //proc located in code\modules\mob\emote.dm
+ else
+ return
+ if("howl", "howls")
+ if (species.name == "Vulpkanin") //Only Vulpkanin can howl
+ on_CD = handle_emote_CD(100)
else
return
+ if("growl", "growls")
+ if (species.name == "Vulpkanin") //Only Vulpkanin can growl
+ on_CD = handle_emote_CD()
+ else
+ return
if("squish", "squishes")
var/found_slime_bodypart = 0
@@ -91,8 +101,21 @@
if("me") //OKAY SO RANT TIME, THIS FUCKING HAS TO BE HERE OR A SHITLOAD OF THINGS BREAK
return custom_emote(m_type, message) //DO YOU KNOW WHY SHIT BREAKS? BECAUSE SO MUCH OLDCODE CALLS mob.emote("me",1,"whatever_the_fuck_it_wants_to_emote")
//WHO THE FUCK THOUGHT THAT WAS A GOOD FUCKING IDEA!?!?
- if("ping", "pings")
+
+ if("howl", "howls")
var/M = handle_emote_param(param) //Check to see if the param is valid (mob with the param name is in view).
+ message = "[src] howls[M ? " at [M]" : ""]!"
+ playsound(loc, 'sound/goonstation/voice/howl.ogg', 100, 0, 10)
+ m_type = 2
+
+ if("growl", "growls")
+ var/M = handle_emote_param(param)
+ message = "[src] growls[M ? " at [M]" : ""]."
+ playsound(loc, "growls", 80, 0)
+ m_type = 2
+
+ if("ping", "pings")
+ var/M = handle_emote_param(param)
message = "[src] pings[M ? " at [M]" : ""]."
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index e1f8a4b6116..150f2d647bc 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -169,6 +169,8 @@
base_color = "#CF4D2F"
butt_sprite = "vulp"
+ scream_verb = "yelps"
+
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
diff --git a/sound/goonstation/voice/growl1.ogg b/sound/goonstation/voice/growl1.ogg
new file mode 100644
index 00000000000..d5152d9c057
Binary files /dev/null and b/sound/goonstation/voice/growl1.ogg differ
diff --git a/sound/goonstation/voice/growl2.ogg b/sound/goonstation/voice/growl2.ogg
new file mode 100644
index 00000000000..5c48053ac68
Binary files /dev/null and b/sound/goonstation/voice/growl2.ogg differ
diff --git a/sound/goonstation/voice/growl3.ogg b/sound/goonstation/voice/growl3.ogg
new file mode 100644
index 00000000000..bcacf2442f0
Binary files /dev/null and b/sound/goonstation/voice/growl3.ogg differ
diff --git a/sound/goonstation/voice/howl.ogg b/sound/goonstation/voice/howl.ogg
new file mode 100644
index 00000000000..778fd6b2483
Binary files /dev/null and b/sound/goonstation/voice/howl.ogg differ