diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
index d49a825775..a651541870 100644
--- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
@@ -48,8 +48,6 @@
var/tmp/list/items_preserved = list() // Stuff that wont digest so we shouldn't process it again.
var/tmp/next_emote = 0 // When we're supposed to print our next emote, as a belly controller tick #
var/tmp/recent_sound = FALSE // Prevent audio spam
- var/tmp/last_hearcheck = 0
- var/tmp/list/hearing_mobs
// Don't forget to watch your commas at the end of each line if you change these.
var/list/struggle_messages_outside = list(
@@ -230,7 +228,7 @@
SEND_SIGNAL(ML, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
SEND_SIGNAL(ML, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
-
+
if(ML.absorbed)
ML.absorbed = FALSE
if(ishuman(M) && ishuman(OW))
@@ -254,14 +252,14 @@
return
if (prey.buckled)
prey.buckled.unbuckle_mob(prey,TRUE)
-
+
if(!isbelly(prey.loc))
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
SEND_SIGNAL(prey, COMSIG_ADD_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
else
SEND_SIGNAL(owner, COMSIG_CLEAR_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
SEND_SIGNAL(prey, COMSIG_CLEAR_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
-
+
prey.forceMove(src)
var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE)
if(!silent)
diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
index 804936087e..8b8781cb02 100644
--- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
@@ -1,5 +1,3 @@
-#define NORMIE_HEARCHECK 4
-
// Process the predator's effects upon the contents of its belly (i.e digestion/transformation etc)
/obj/belly/proc/process_belly(var/times_fired,var/wait) //Passed by controller
if((times_fired < next_process) || !contents.len)
@@ -47,7 +45,6 @@
////////////////////////// Sound vars /////////////////////////////
var/sound/prey_digest = sound(get_sfx("digest_prey"))
var/sound/prey_death = sound(get_sfx("death_prey"))
- var/turf/source = get_turf(owner)
///////////////////////////// DM_HOLD /////////////////////////////
@@ -58,17 +55,12 @@
else if(digest_mode == DM_DIGEST)
for (var/mob/living/M in contents)
if(prob(25))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "digest_pred")
- M.playsound_local(source, null, 45, falloff = 0, S = prey_digest)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ M.playsound_local(get_turf(M), prey_digest, 45)
//Pref protection!
if (!M.digestable || M.absorbed)
@@ -94,18 +86,13 @@
M.visible_message("You watch as [owner]'s form loses its additions.")
owner.nutrition += 400 // so eating dead mobs gives you *something*.
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "death_pred")
- M.playsound_local(source, null, 65, falloff = 0, S = prey_death)
+ M.stop_sound_channel(DIGESTION_NOISES)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(DIGESTION_NOISES)
M.stop_sound_channel(CHANNEL_PREYLOOP)
+ M.playsound_local(get_turf(M), prey_death, 65)
digestion_death(M)
owner.update_icons()
continue
@@ -128,17 +115,12 @@
if(digest_mode == DM_HEAL)
for (var/mob/living/M in contents)
if(prob(25))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "digest_pred")
- M.playsound_local(source, null, 45, falloff = 0, S = prey_digest)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ M.playsound_local(get_turf(M), prey_digest, 65)
if(M.stat != DEAD)
if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth))
@@ -152,17 +134,12 @@
if(digest_mode == DM_NOISY)
for (var/mob/living/M in contents)
if(prob(35))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "digest_pred")
- M.playsound_local(source, null, 45, falloff = 0, S = prey_digest)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_PRED)
+ M.playsound_local(get_turf(M), prey_digest, 65)
//////////////////////////// DM_ABSORB ////////////////////////////
@@ -170,18 +147,13 @@
for (var/mob/living/M in contents)
- if(prob(10))//Less often than gurgles. People might leave this on forever.
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "digest_pred")
- M.playsound_local(source, null, 45, falloff = 0, S = prey_digest)
+ if(prob(10)) //Less often than gurgles. People might leave this on forever.
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_PRED)
+ M.playsound_local(get_turf(M), prey_digest, 65)
if(M.absorbed)
continue
@@ -208,17 +180,12 @@
if(digest_mode == DM_DRAGON)
for (var/mob/living/M in contents)
if(prob(55)) //if you're hearing this, you're a vore ho anyway.
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "digest_pred")
- M.playsound_local(source, null, 45, falloff = 0, S = prey_digest)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ M.playsound_local(get_turf(M), prey_digest, 65)
//No digestion protection for megafauna.
@@ -240,17 +207,13 @@
to_chat(owner, "[digest_alert_owner]")
to_chat(M, "[digest_alert_prey]")
M.visible_message("You watch as [owner]'s guts loudly rumble as it finishes off a meal.")
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- LAZYCLEARLIST(hearing_mobs)
- for(var/mob/H in get_hearers_in_view(3, source))
- if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES) && !isbelly(H.loc))
- continue
- LAZYADD(hearing_mobs, H)
- last_hearcheck = world.time
- for(M in hearing_mobs)
- var/mob/i = M
- i.playsound_local(source, null, 45, falloff = 0, S = "death_pred")
- M.playsound_local(source, null, 65, falloff = 0, S = prey_death)
+
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
+ if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
+ playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
+ M.stop_sound_channel(CHANNEL_DIGEST)
+ M.playsound_local(get_turf(M), prey_death, 65)
M.spill_organs(FALSE,TRUE,TRUE)
M.stop_sound_channel(CHANNEL_PREYLOOP)
digestion_death(M)