diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 225c32aa482..e2c1097513a 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -68,6 +68,13 @@ var/global/list/death_sounds = list(
'sound/vore/death9.ogg',
'sound/vore/death10.ogg')
+var/global/list/hunger_sounds = list(
+ 'sound/vore/growl1.ogg',
+ 'sound/vore/growl2.ogg',
+ 'sound/vore/growl3.ogg',
+ 'sound/vore/growl4.ogg',
+ 'sound/vore/growl5.ogg')
+
var/global/list/vore_sounds = list(
"Gulp" = 'sound/vore/gulp.ogg',
"Insert" = 'sound/vore/insert.ogg',
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index b7adf59dcf9..63485522d5e 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -16,6 +16,7 @@
var/openpanel = 0 // Is the vore panel open?
var/conceal_nif = 0 // Do they wish to conceal their NIF from examine?
var/nif_examine = "There's a certain spark to their eyes" //The examine text of their NIF. This is the default placeholder.
+ var/noisy = 0 // Toggle audible hunger.
//
// Hook for generic creation of stuff on new creatures
@@ -178,6 +179,15 @@
if(B.internal_contents.len)
B.process_Life() //AKA 'do bellymodes_vr.dm'
+ if(noisy > 0 && nutrition < 100 && prob(10))
+ var/growlsound = pick(hunger_sounds)
+ if(nutrition < 50)
+ for(var/mob/hearer in range(1,src))
+ hearer << sound(growlsound,volume=80)
+ else
+ for(var/mob/hearer in range(1,src))
+ hearer << sound(growlsound,volume=35)
+
if(air_master.current_cycle%90 != 1) return //Occasionally do supercleanups.
for (var/I in vore_organs)
var/datum/belly/B = vore_organs[I]
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index ceea1c88bcd..61d6f2a5029 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -273,6 +273,7 @@
dat += "Save Prefs"
dat += "Refresh"
dat += "Set Flavor"
+ dat += "
Toggle Hunger Noises"
switch(user.digestable)
if(1)
@@ -765,5 +766,15 @@
if(user.client.prefs_vr)
user.client.prefs_vr.digestable = user.digestable
+ if(href_list["togglenoisy"])
+ var/choice = alert(user, "Toggle audible hunger noises. Currently: [user.noisy ? "Enabled" : "Disabled"]", "", "Enable audible hunger", "Cancel", "Disable audible hunger")
+ switch(choice)
+ if("Cancel")
+ return 0
+ if("Enable audible hunger")
+ user.noisy = 1
+ if("Disable audible hunger")
+ user.noisy = 0
+
//Refresh when interacted with, returning 1 makes vore_look.Topic update
return 1
diff --git a/sound/vore/growl1.ogg b/sound/vore/growl1.ogg
new file mode 100644
index 00000000000..6a9cef89884
Binary files /dev/null and b/sound/vore/growl1.ogg differ
diff --git a/sound/vore/growl2.ogg b/sound/vore/growl2.ogg
new file mode 100644
index 00000000000..17a9a945599
Binary files /dev/null and b/sound/vore/growl2.ogg differ
diff --git a/sound/vore/growl3.ogg b/sound/vore/growl3.ogg
new file mode 100644
index 00000000000..f5a2f75434b
Binary files /dev/null and b/sound/vore/growl3.ogg differ
diff --git a/sound/vore/growl4.ogg b/sound/vore/growl4.ogg
new file mode 100644
index 00000000000..5fb3c2db79a
Binary files /dev/null and b/sound/vore/growl4.ogg differ
diff --git a/sound/vore/growl5.ogg b/sound/vore/growl5.ogg
new file mode 100644
index 00000000000..95ba675a751
Binary files /dev/null and b/sound/vore/growl5.ogg differ