diff --git a/code/__defines/sound.dm b/code/__defines/sound.dm
index 0995f0e071f..d954d34b2a0 100644
--- a/code/__defines/sound.dm
+++ b/code/__defines/sound.dm
@@ -8,11 +8,12 @@
#define CHANNEL_AMBIENCE 1018
#define CHANNEL_BUZZ 1017
#define CHANNEL_BICYCLE 1016
+#define CHANNEL_PREYLOOP 1015 //VORESTATION ADD - Fancy Sound Loop channel
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
//KEEP IT UPDATED
-#define CHANNEL_HIGHEST_AVAILABLE 1015
+#define CHANNEL_HIGHEST_AVAILABLE 1014 //VORESTATION EDIT - Fancy Sound Loop channel from 1015
#define SOUND_MINIMUM_PRESSURE 10
#define FALLOFF_SOUNDS 0.5
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index d1037b37abd..c9a64048a8b 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -42,40 +42,8 @@ var/global/list/item_vore_blacklist = list(
/obj/item/weapon/disk/nuclear,
/obj/item/clothing/suit/storage/hooded/wintercoat/roiz)
-var/global/list/digestion_sounds = list(
- 'sound/vore/digest1.ogg',
- 'sound/vore/digest2.ogg',
- 'sound/vore/digest3.ogg',
- 'sound/vore/digest4.ogg',
- 'sound/vore/digest5.ogg',
- 'sound/vore/digest6.ogg',
- 'sound/vore/digest7.ogg',
- 'sound/vore/digest8.ogg',
- 'sound/vore/digest9.ogg',
- 'sound/vore/digest10.ogg',
- 'sound/vore/digest11.ogg',
- 'sound/vore/digest12.ogg')
-
-var/global/list/death_sounds = list(
- 'sound/vore/death1.ogg',
- 'sound/vore/death2.ogg',
- 'sound/vore/death3.ogg',
- 'sound/vore/death4.ogg',
- 'sound/vore/death5.ogg',
- 'sound/vore/death6.ogg',
- 'sound/vore/death7.ogg',
- 'sound/vore/death8.ogg',
- '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(
+//Classic Vore sounds
+var/global/list/classic_vore_sounds = list(
"Gulp" = 'sound/vore/gulp.ogg',
"Insert" = 'sound/vore/insert.ogg',
"Insertion1" = 'sound/vore/insertion1.ogg',
@@ -86,15 +54,55 @@ var/global/list/vore_sounds = list(
"Squish2" = 'sound/vore/squish2.ogg',
"Squish3" = 'sound/vore/squish3.ogg',
"Squish4" = 'sound/vore/squish4.ogg',
- "Rustle (cloth)" = 'sound/effects/rustle5.ogg',
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
"None" = null)
-var/global/list/struggle_sounds = list(
- "Squish1" = 'sound/vore/squish1.ogg',
- "Squish2" = 'sound/vore/squish2.ogg',
- "Squish3" = 'sound/vore/squish3.ogg',
- "Squish4" = 'sound/vore/squish4.ogg')
+var/global/list/classic_release_sounds = list(
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ )
+//Poojy's Fancy Sounds
+var/global/list/fancy_vore_sounds = list(
+ "Gulp" = 'sound/vore/sunesound/pred/swallow_01.ogg',
+ "Swallow" = 'sound/vore/sunesound/pred/swallow_02.ogg',
+ "Insertion1" = 'sound/vore/sunesound/pred/insertion_01.ogg',
+ "Insertion2" = 'sound/vore/sunesound/pred/insertion_02.ogg',
+ "Tauric Swallow" = 'sound/vore/sunesound/pred/taurswallow.ogg',
+ "Stomach Move" = 'sound/vore/sunesound/pred/stomachmove.ogg',
+ "Schlorp" = 'sound/vore/sunesound/pred/schlorp.ogg',
+ "Squish1" = 'sound/vore/sunesound/pred/squish_01.ogg',
+ "Squish2" = 'sound/vore/sunesound/pred/squish_02.ogg',
+ "Squish3" = 'sound/vore/sunesound/pred/squish_03.ogg',
+ "Squish4" = 'sound/vore/sunesound/pred/squish_04.ogg',
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "None" = null
+ )
+
+var/global/list/fancy_release_sounds = list(
+ "Rustle (cloth)" = 'sound/effects/rustle1.ogg',
+ "Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
+ "Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
+ "Rustle 4 (cloth)" = 'sound/effects/rustle4.ogg',
+ "Rustle 5 (cloth)" = 'sound/effects/rustle5.ogg',
+ "Stomach Move" = 'sound/vore/sunesound/pred/stomachmove.ogg',
+ "Pred Escape" = 'sound/vore/sunesound/pred/escape.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ )
var/global/list/global_vore_egg_types = list(
"Unathi" = UNATHI_EGG,
diff --git a/code/game/sound.dm b/code/game/sound.dm
index b1f0c32f66c..cd3b140bd9f 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -137,6 +137,46 @@
if ("button") soundin = pick('sound/machines/button1.ogg','sound/machines/button2.ogg','sound/machines/button3.ogg','sound/machines/button4.ogg')
if ("switch") soundin = pick('sound/machines/switch1.ogg','sound/machines/switch2.ogg','sound/machines/switch3.ogg','sound/machines/switch4.ogg')
if ("casing_sound") soundin = pick('sound/weapons/casingfall1.ogg','sound/weapons/casingfall2.ogg','sound/weapons/casingfall3.ogg')
+ //VORESTATION EDIT - vore sounds for better performance
+ if ("hunger_sounds") soundin = pick('sound/vore/growl1.ogg','sound/vore/growl2.ogg','sound/vore/growl3.ogg','sound/vore/growl4.ogg','sound/vore/growl5.ogg')
+
+ if("classic_digestion_sounds") soundin = pick(
+ 'sound/vore/digest1.ogg','sound/vore/digest2.ogg','sound/vore/digest3.ogg','sound/vore/digest4.ogg',
+ 'sound/vore/digest5.ogg','sound/vore/digest6.ogg','sound/vore/digest7.ogg','sound/vore/digest8.ogg',
+ 'sound/vore/digest9.ogg','sound/vore/digest10.ogg','sound/vore/digest11.ogg','sound/vore/digest12.ogg')
+ if("classic_death_sounds") soundin = pick(
+ 'sound/vore/death1.ogg','sound/vore/death2.ogg','sound/vore/death3.ogg','sound/vore/death4.ogg','sound/vore/death5.ogg',
+ 'sound/vore/death6.ogg','sound/vore/death7.ogg','sound/vore/death8.ogg','sound/vore/death9.ogg','sound/vore/death10.ogg')
+ if("classic_struggle_sounds") soundin = pick('sound/vore/squish1.ogg','sound/vore/squish2.ogg','sound/vore/squish3.ogg','sound/vore/squish4.ogg')
+
+ if("fancy_prey_struggle") soundin = pick(
+ 'sound/vore/sunesound/prey/struggle_01.ogg','sound/vore/sunesound/prey/struggle_02.ogg','sound/vore/sunesound/prey/struggle_03.ogg',
+ 'sound/vore/sunesound/prey/struggle_04.ogg','sound/vore/sunesound/prey/struggle_05.ogg')
+ if("fancy_digest_pred") soundin = pick(
+ 'sound/vore/sunesound/pred/digest_01.ogg','sound/vore/sunesound/pred/digest_02.ogg','sound/vore/sunesound/pred/digest_03.ogg',
+ 'sound/vore/sunesound/pred/digest_04.ogg','sound/vore/sunesound/pred/digest_05.ogg','sound/vore/sunesound/pred/digest_06.ogg',
+ 'sound/vore/sunesound/pred/digest_07.ogg','sound/vore/sunesound/pred/digest_08.ogg','sound/vore/sunesound/pred/digest_09.ogg',
+ 'sound/vore/sunesound/pred/digest_10.ogg','sound/vore/sunesound/pred/digest_11.ogg','sound/vore/sunesound/pred/digest_12.ogg',
+ 'sound/vore/sunesound/pred/digest_13.ogg','sound/vore/sunesound/pred/digest_14.ogg','sound/vore/sunesound/pred/digest_15.ogg',
+ 'sound/vore/sunesound/pred/digest_16.ogg','sound/vore/sunesound/pred/digest_17.ogg','sound/vore/sunesound/pred/digest_18.ogg')
+ if("fancy_death_pred") soundin = pick(
+ 'sound/vore/sunesound/pred/death_01.ogg','sound/vore/sunesound/pred/death_02.ogg','sound/vore/sunesound/pred/death_03.ogg',
+ 'sound/vore/sunesound/pred/death_04.ogg','sound/vore/sunesound/pred/death_05.ogg','sound/vore/sunesound/pred/death_06.ogg',
+ 'sound/vore/sunesound/pred/death_07.ogg','sound/vore/sunesound/pred/death_08.ogg','sound/vore/sunesound/pred/death_09.ogg',
+ 'sound/vore/sunesound/pred/death_10.ogg')
+ if("fancy_digest_prey") soundin = pick(
+ 'sound/vore/sunesound/prey/digest_01.ogg','sound/vore/sunesound/prey/digest_02.ogg','sound/vore/sunesound/prey/digest_03.ogg',
+ 'sound/vore/sunesound/prey/digest_04.ogg','sound/vore/sunesound/prey/digest_05.ogg','sound/vore/sunesound/prey/digest_06.ogg',
+ 'sound/vore/sunesound/prey/digest_07.ogg','sound/vore/sunesound/prey/digest_08.ogg','sound/vore/sunesound/prey/digest_09.ogg',
+ 'sound/vore/sunesound/prey/digest_10.ogg','sound/vore/sunesound/prey/digest_11.ogg','sound/vore/sunesound/prey/digest_12.ogg',
+ 'sound/vore/sunesound/prey/digest_13.ogg','sound/vore/sunesound/prey/digest_14.ogg','sound/vore/sunesound/prey/digest_15.ogg',
+ 'sound/vore/sunesound/prey/digest_16.ogg','sound/vore/sunesound/prey/digest_17.ogg','sound/vore/sunesound/prey/digest_18.ogg')
+ if("fancy_death_prey") soundin = pick(
+ 'sound/vore/sunesound/prey/death_01.ogg','sound/vore/sunesound/prey/death_02.ogg','sound/vore/sunesound/prey/death_03.ogg',
+ 'sound/vore/sunesound/prey/death_04.ogg','sound/vore/sunesound/prey/death_05.ogg','sound/vore/sunesound/prey/death_06.ogg',
+ 'sound/vore/sunesound/prey/death_07.ogg','sound/vore/sunesound/prey/death_08.ogg','sound/vore/sunesound/prey/death_09.ogg',
+ 'sound/vore/sunesound/prey/death_10.ogg')
+ //END VORESTATION EDIT
return soundin
//Are these even used?
diff --git a/code/modules/client/preferences_vr.dm b/code/modules/client/preferences_vr.dm
index 61c2d83025a..5c8171ce27c 100644
--- a/code/modules/client/preferences_vr.dm
+++ b/code/modules/client/preferences_vr.dm
@@ -2,3 +2,35 @@
datum/preferences
var/show_in_directory = 1 //TFF 5/8/19 - show in Character Directory
var/sensorpref = 5 //TFF 5/8/19 - set character's suit sensor level
+
+//Why weren't these in game toggles already?
+/client/verb/toggle_eating_noises()
+ set name = "Eating Noises"
+ set category = "Preferences"
+ set desc = "Toggles Vore Eating noises."
+
+ var/pref_path = /datum/client_preference/eating_noises
+
+ toggle_preference(pref_path)
+
+ src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear eating related vore noises."
+
+ SScharacter_setup.queue_preferences_save(prefs)
+
+ feedback_add_details("admin_verb","TEatNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+
+
+/client/verb/toggle_digestion_noises()
+ set name = "Digestion Noises"
+ set category = "Preferences"
+ set desc = "Toggles Vore Digestion noises."
+
+ var/pref_path = /datum/client_preference/digestion_noises
+
+ toggle_preference(pref_path)
+
+ src << "You will [ (is_preference_enabled(pref_path)) ? "now" : "no longer"] hear digestion related vore noises."
+
+ SScharacter_setup.queue_preferences_save(prefs)
+
+ feedback_add_details("admin_verb","TDigestNoise") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index cb63df8d563..bfa1d82e374 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -923,7 +923,7 @@
overeatduration -= 2 //doubled the unfat rate
if(noisy == TRUE && nutrition < 250 && prob(10)) //VOREStation edit for hunger noises.
- var/growlsound = pick(hunger_sounds)
+ var/sound/growlsound = sound(get_sfx("hunger_sounds"))
var/growlmultiplier = 100 - (nutrition / 250 * 100)
playsound(src, growlsound, vol = growlmultiplier, vary = 1, falloff = 0.1, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
// VOREStation Edit End
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index d7559ce66c6..1c4fba15e2e 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -20,19 +20,22 @@
var/emote_time = 60 SECONDS // How long between stomach emotes at prey
var/digest_brute = 2 // Brute damage per tick in digestion mode
var/digest_burn = 2 // Burn damage per tick in digestion mode
- var/immutable = 0 // Prevents this belly from being deleted
- var/escapable = 0 // Belly can be resisted out of at any time
+ var/immutable = FALSE // Prevents this belly from being deleted
+ var/escapable = FALSE // Belly can be resisted out of at any time
var/escapetime = 60 SECONDS // Deciseconds, how long to escape this belly
var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles
var/absorbchance = 0 // % Chance of stomach beginning to absorb if prey struggles
var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles.
var/transferchance = 0 // % Chance of prey being
- var/can_taste = 0 // If this belly prints the flavor of prey when it eats someone.
+ var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone.
var/bulge_size = 0.25 // The minimum size the prey has to be in order to show up on examine.
var/shrink_grow_size = 1 // This horribly named variable determines the minimum/maximum size it will shrink/grow prey to.
var/transferlocation // Location that the prey is released if they struggle and get dropped off.
- var/release_sound = TRUE // Boolean for now, maybe replace with something else later
+ var/release_sound = "Splatter" // Sound for letting someone out. Replaced from True/false
var/mode_flags = 0 // Stripping, numbing, etc.
+ var/fancy_vore = FALSE // Using the new sounds?
+ var/is_wet = TRUE // Is this belly's insides made of slimy parts?
+ var/wet_loop = TRUE // Does the belly have a fleshy loop playing?
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
//Actual full digest modes
@@ -147,7 +150,11 @@
"item_digest_mode",
"contaminates",
"contamination_flavor",
- "contamination_color"
+ "contamination_color",
+ "release_sound",
+ "fancy_vore",
+ "is_wet",
+ "wet_loop"
)
/obj/belly/New(var/newloc)
@@ -175,7 +182,11 @@
//Sound w/ antispam flag setting
if(vore_sound && !recent_sound)
- var/soundfile = vore_sounds[vore_sound]
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_vore_sounds[vore_sound]
+ else
+ soundfile = fancy_vore_sounds[vore_sound]
if(soundfile)
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
recent_sound = TRUE
@@ -196,7 +207,7 @@
//Don't bother if we don't have contents
if(!contents.len)
- return 0
+ return FALSE
//Find where we should drop things into (certainly not the owner)
var/count = 0
@@ -218,8 +229,13 @@
//Print notifications/sound if necessary
if(!silent)
owner.visible_message("[owner] expels everything from their [lowertext(name)]!")
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_release_sounds[release_sound]
+ else
+ soundfile = fancy_release_sounds[release_sound]
+ if(soundfile)
+ playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
return count
@@ -258,8 +274,13 @@
//Print notifications/sound if necessary
if(!silent)
owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
- if(release_sound)
- playsound(src, 'sound/effects/splat.ogg', vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_release_sounds[release_sound]
+ else
+ soundfile = fancy_release_sounds[release_sound]
+ if(soundfile)
+ playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/eating_noises)
return 1
@@ -403,6 +424,8 @@
else if(M.reagents)
M.reagents.trans_to_holder(Pred.bloodstr, M.reagents.total_volume, 0.5, TRUE)
+ //Incase they have the loop going, let's double check to stop it.
+ M.stop_sound_channel(CHANNEL_PREYLOOP)
// Delete the digested mob
qdel(M)
@@ -515,9 +538,17 @@
M.show_message(struggle_outer_message, 2) // hearable
to_chat(R,struggle_user_message)
- var/strpick = pick(struggle_sounds)
- var/strsound = struggle_sounds[strpick]
- playsound(src, strsound, vary = 1, vol = 100, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
+ var/sound/struggle_snuggle
+ var/sound/struggle_rustle = sound(get_sfx("rustle"))
+
+ if(is_wet)
+ if(!fancy_vore)
+ struggle_snuggle = sound(get_sfx("classic_struggle_sounds"))
+ else
+ struggle_snuggle = sound(get_sfx("fancy_prey_struggle"))
+ playsound(src, struggle_snuggle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
+ else
+ playsound(src, struggle_rustle, vary = 1, vol = 75, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
if(escapable) //If the stomach has escapable enabled.
if(prob(escapechance)) //Let's have it check to see if the prey escapes first.
@@ -601,7 +632,11 @@
I.gurgle_contaminate(target.contents, target.contamination_flavor, target.contamination_color)
items_preserved -= content
if(!silent && target.vore_sound && !recent_sound)
- var/soundfile = vore_sounds[target.vore_sound]
+ var/soundfile
+ if(!fancy_vore)
+ soundfile = classic_vore_sounds[target.vore_sound]
+ else
+ soundfile = fancy_vore_sounds[target.vore_sound]
if(soundfile)
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/client_preference/digestion_noises)
owner.updateVRPanel()
@@ -639,6 +674,10 @@
dupe.contaminates = contaminates
dupe.contamination_flavor = contamination_flavor
dupe.contamination_color = contamination_color
+ dupe.release_sound = release_sound
+ dupe.fancy_vore = fancy_vore
+ dupe.is_wet = is_wet
+ dupe.wet_loop = wet_loop
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index d7c40618719..f66edcbf80c 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -24,6 +24,35 @@
if(M.digestable || digest_mode != DM_DIGEST) // don't give digesty messages to indigestible people
to_chat(M,"[pick(EL)]")
+///////////////////// Prey Loop Refresh/hack //////////////////////
+ for(var/mob/living/M in contents)
+ M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case, because byond is whack and you can't trust it
+ if(isbelly(M.loc)) //sanity check
+ if(world.time > M.next_preyloop) //We don't want it to overlap, but we also want it to replay.
+ if(is_wet && wet_loop) // Is it a fleshy environment, and does the pred have a fleshy heartbeat loop to play?
+ if(!M.client)
+ continue
+ if(M.is_preference_enabled(/datum/client_preference/digestion_noises)) //then we check if the mob has sounds enabled at all
+ var/sound/preyloop = sound('sound/vore/sunesound/prey/loop.ogg')
+ M.playsound_local(get_turf(src),preyloop, 80,0, channel = CHANNEL_PREYLOOP)
+ M.next_preyloop = (world.time + 52 SECONDS)
+
+/////////////////////////// Sound Selections ///////////////////////////
+ var/sound/prey_digest
+ var/sound/prey_death
+ var/sound/pred_digest
+ var/sound/pred_death
+ if(!fancy_vore)
+ prey_digest = sound(get_sfx("classic_digestion_sounds"))
+ prey_death = sound(get_sfx("classic_death_sounds"))
+ pred_digest = sound(get_sfx("classic_digestion_sounds"))
+ pred_death = sound(get_sfx("classic_death_sounds"))
+ else
+ prey_digest = sound(get_sfx("fancy_digest_prey"))
+ prey_death = sound(get_sfx("fancy_death_prey"))
+ pred_digest = sound(get_sfx("fancy_digest_pred"))
+ pred_death = sound(get_sfx("fancy_death_pred"))
+
/////////////////////////// Exit Early ////////////////////////////
var/list/touchable_atoms = contents - items_preserved
if(!length(touchable_atoms))
@@ -47,7 +76,7 @@
else
items_preserved |= I
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ play_sound = pick(pred_digest)
else if(item_digest_mode == IM_DIGEST)
if(I.digest_stage && I.digest_stage > 0)
digest_item(I)
@@ -56,7 +85,7 @@
did_an_item = TRUE
to_update = TRUE
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ play_sound = pick(pred_digest)
//Handle eaten mobs
else if(isliving(A))
@@ -96,11 +125,15 @@
else
items_preserved |= I
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ if(L && L.client && L.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(L,prey_digest)
+ play_sound = pick(pred_digest)
else if(item_digest_mode == IM_DIGEST)
digest_item(I)
if(prob(25)) //Less often than with normal digestion
- play_sound = pick(digestion_sounds)
+ if(L && L.client && L.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(L,prey_digest)
+ play_sound = pick(pred_digest)
to_update = TRUE
break
//get rid of things like blood drops and gibs that end up in there
@@ -115,7 +148,10 @@
else if(digest_mode == DM_DIGEST)
if(prob(50)) //Was SO OFTEN. AAAA.
- play_sound = pick(digestion_sounds)
+ for(var/mob/M in contents)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
for (var/target in touchable_mobs)
var/mob/living/M = target
@@ -142,7 +178,9 @@
to_chat(owner,"" + digest_alert_owner + "")
to_chat(M,"" + digest_alert_prey + "")
- play_sound = pick(death_sounds)
+ play_sound = pick(pred_death)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_death)
if((mode_flags & DM_FLAG_LEAVEREMAINS) && M.digest_leave_remains)
handle_remains_leaving(M)
digestion_death(M)
@@ -183,7 +221,9 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
if(prob(10)) //Less often than gurgles. People might leave this on forever.
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.absorbed)
continue
@@ -216,7 +256,9 @@
var/mob/living/M = target
if(prob(10)) //Less often than gurgles. People might leave this on forever.
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.nutrition >= 100) //Drain them until there's no nutrients left.
var/oldnutrition = (M.nutrition * 0.05)
@@ -230,7 +272,9 @@
var/mob/living/M = target
if(prob(10)) //Infinite gurgles!
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier > shrink_grow_size) //Shrink until smol.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick.
@@ -247,7 +291,9 @@
var/mob/living/M = target
if(prob(10))
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier < shrink_grow_size) //Grow until large.
M.resize(M.size_multiplier+0.01) //Grow by 1% per tick.
@@ -261,7 +307,9 @@
var/mob/living/M = target
if(prob(10))
- play_sound = pick(digestion_sounds)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
if(M.size_multiplier > shrink_grow_size && owner.size_multiplier < 2) //Grow until either pred is large or prey is small.
owner.resize(owner.size_multiplier+0.01) //Grow by 1% per tick.
@@ -276,7 +324,10 @@
else if(digest_mode == DM_HEAL)
if(prob(50)) //Wet heals! The secret is you can leave this on for gurgle noises for fun.
- play_sound = pick(digestion_sounds)
+ for(var/mob/M in contents)
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
for (var/target in touchable_mobs)
var/mob/living/M = target
@@ -303,7 +354,9 @@
/////////////////////////// Make any noise ///////////////////////////
if(play_sound)
- playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
+ for(var/mob/M in hearers(4, owner)) //so we don't fill the whole room with the sound effect
+ if(M && M.client && (isturf(M.loc) || (M.loc != src.contents)) && M.is_preference_enabled(/datum/client_preference/digestion_noises)) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check
+ SEND_SOUND(M, play_sound) //these are all external sound triggers now, so it's ok.
if(to_update)
for(var/mob/living/M in contents)
if(M.client)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 1b666c8fe81..7097aaf27d9 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -1,12 +1,12 @@
///////////////////// Mob Living /////////////////////
/mob/living
- var/digestable = 1 // Can the mob be digested inside a belly?
- var/digest_leave_remains = 0 // Will this mob leave bones/skull/etc after the melty demise?
- var/allowmobvore = 1 // Will simplemobs attempt to eat the mob?
- var/showvoreprefs = 1 // Determines if the mechanical vore preferences button will be displayed on the mob or not.
+ var/digestable = TRUE // Can the mob be digested inside a belly?
+ var/digest_leave_remains = FALSE // Will this mob leave bones/skull/etc after the melty demise?
+ var/allowmobvore = TRUE // Will simplemobs attempt to eat the mob?
+ var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not.
var/obj/belly/vore_selected // Default to no vore capability.
var/list/vore_organs = list() // List of vore containers inside a mob
- var/absorbed = 0 // If a mob is absorbed into another
+ var/absorbed = FALSE // If a mob is absorbed into another
var/weight = 137 // Weight for mobs for weightgain system
var/weight_gain = 1 // How fast you gain weight
var/weight_loss = 0.5 // How fast you lose weight
@@ -15,16 +15,17 @@
var/revive_ready = REVIVING_READY // Only used for creatures that have the xenochimera regen ability, so far.
var/metabolism = 0.0015
var/vore_taste = null // What the character tastes like
- var/no_vore = 0 // If the character/mob can vore.
- var/openpanel = 0 // Is the vore panel open?
- var/noisy = 0 // Toggle audible hunger.
+ var/no_vore = FALSE // If the character/mob can vore.
+ var/openpanel = FALSE // Is the vore panel open?
+ var/noisy = FALSE // Toggle audible hunger.
var/absorbing_prey = 0 // Determines if the person is using the succubus drain or not. See station_special_abilities_vr.
var/drain_finalized = 0 // Determines if the succubus drain will be KO'd/absorbed. Can be toggled on at any time.
var/fuzzy = 1 // Preference toggle for sharp/fuzzy icon.
var/tail_alt = 0 // Tail layer toggle.
var/permit_healbelly = TRUE
- var/can_be_drop_prey = 0
- var/can_be_drop_pred = 1 // Mobs are pred by default.
+ var/can_be_drop_prey = FALSE
+ var/can_be_drop_pred = TRUE // Mobs are pred by default.
+ var/next_preyloop // For Fancy sound internal loop
//
// Hook for generic creation of stuff on new creatures
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index 2b4a82da6c1..efc0c451c8b 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -19,6 +19,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
-Aro <3 */
+#define VORE_VERSION 1 //This is a Define so you don't have to worry about magic numbers.
+
//
// Overrides/additions to stock defines go here, as well as hooks. Sort them by
// the object they are overriding. So all /mob/living together, etc.
@@ -139,7 +141,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
/datum/vore_preferences/proc/save_vore()
if(!path) return 0
- var/version = 1 //For "good times" use in the future
+ var/version = VORE_VERSION //For "good times" use in the future
var/list/settings_list = list(
"version" = version,
"digestable" = digestable,
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 4bd8a7bc585..1527092a295 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -189,6 +189,13 @@
dat += "Name:"
dat += " '[selected.name]'"
+ //Belly Type button
+ dat += "
Is this belly fleshy:"
+ dat += "[selected.is_wet ? "Yes" : "No"]"
+ if(selected.is_wet)
+ dat += "Internal loop for prey?:"
+ dat += "[selected.wet_loop ? "Yes" : "No"]"
+
//Digest Mode Button
dat += "
Belly Mode:"
var/mode = selected.digest_mode
@@ -229,10 +236,18 @@
dat += "
Flavor Text:"
dat += " '[selected.desc]'"
+ //Belly Sound Fanciness
+ dat += "
Use Fancy Sounds:"
+ dat += "[selected.fancy_vore ? "Yes" : "No"]"
+
//Belly sound
- dat += "
Set Vore Sound"
+ dat += "
Vore Sound: [selected.vore_sound]"
dat += "Test"
+ //Release sound
+ dat += "
Release Sound: [selected.release_sound]"
+ dat += "Test"
+
//Belly messages
dat += "
Belly Messages"
@@ -293,27 +308,27 @@
dat += "