diff --git a/code/__DEFINES/citadel_defines.dm b/code/__DEFINES/citadel_defines.dm
index 7744b24d0f..e5749764e0 100644
--- a/code/__DEFINES/citadel_defines.dm
+++ b/code/__DEFINES/citadel_defines.dm
@@ -128,3 +128,6 @@
//component stuff
#define COMSIG_COMBAT_TOGGLED "combatmode_toggled" //called by combat mode toggle on all equipped items. args: (mob/user, combatmode)
+
+//belly sound pref things
+#define NORMIE_HEARCHECK 4
diff --git a/code/game/objects/items/devices/dogborg_sleeper.dm b/code/game/objects/items/devices/dogborg_sleeper.dm
index 5af643217d..bbac39afff 100644
--- a/code/game/objects/items/devices/dogborg_sleeper.dm
+++ b/code/game/objects/items/devices/dogborg_sleeper.dm
@@ -18,6 +18,8 @@
var/escape_in_progress = FALSE
var/message_cooldown
var/breakout_time = 300
+ var/tmp/last_hearcheck = 0
+ var/tmp/list/hearing_mobs
var/list/items_preserved = list()
var/static/list/important_items = typecacheof(list(
/obj/item/hand_tele,
@@ -45,10 +47,16 @@
// Bags are prohibited from this due to the potential explotation of objects, same with brought
-/obj/item/dogborg/sleeper/New()
- ..()
+/obj/item/dogborg/sleeper/Initialize()
+ . = ..()
update_icon()
item_flags |= NOBLUDGEON //No more attack messages
+ START_PROCESSING(SSobj, src)
+
+/obj/item/dogborg/sleeper/Destroy()
+ STOP_PROCESSING(SSobj, src)
+ go_out() //just... sanity I guess, edge case shit
+ return ..()
/obj/item/dogborg/sleeper/Exit(atom/movable/O)
return 0
@@ -86,7 +94,6 @@
target.forceMove(src)
target.reset_perspective(src)
update_gut()
- START_PROCESSING(SSobj, src)
user.visible_message("[hound.name]'s medical pod lights up and expands as [target.name] slips inside into their [src.name].", "Your medical pod lights up as [target] slips into your [src]. Life support functions engaged.")
message_admins("[key_name(hound)] has sleeper'd [key_name(patient)] as a dogborg. [ADMIN_JMP(src)]")
playsound(hound, 'sound/effects/bin_close.ogg', 100, 1)
@@ -137,7 +144,8 @@
else //You clicked eject with nothing in you, let's just reset stuff to be sure.
items_preserved.Cut()
cleaning = FALSE
- update_gut()
+ update_gut()
+
/obj/item/dogborg/sleeper/attack_self(mob/user)
if(..())
@@ -265,7 +273,6 @@
patient_laststat = null
patient = null
hound.update_icons()
- return
//Gurgleborg process
/obj/item/dogborg/sleeper/proc/clean_cycle()
@@ -274,6 +281,10 @@
if(!(I in contents))
items_preserved -= I
var/list/touchable_items = contents - items_preserved
+ var/sound/prey_digest = sound(get_sfx("digest_prey"))
+ var/sound/prey_death = sound(get_sfx("death_prey"))
+ var/sound/pred_digest = sound(get_sfx("digest_pred"))
+ var/sound/pred_death = sound(get_sfx("death_pred"))
if(cleaning_cycles)
cleaning_cycles--
cleaning = TRUE
@@ -294,7 +305,7 @@
to_chat(T,"You feel [hound]'s belly slowly churn around your form, breaking you down into a soft slurry to be used as power for [hound]'s systems.")
hound.cell.give(30000) //Fueeeeellll
if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- var/turf/source = get_turf(owner)
+ var/turf/source = get_turf(hound)
LAZYCLEARLIST(hearing_mobs)
for(var/mob/H in get_hearers_in_view(3, source))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
@@ -337,13 +348,12 @@
to_chat(hound, "Your [src] is now clean. Ending self-cleaning cycle.")
cleaning = FALSE
update_gut()
- return
//sound effects
for(var/mob/living/M in contents)
if(prob(50))
if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
- var/turf/source = get_turf(owner)
+ var/turf/source = get_turf(hound)
LAZYCLEARLIST(hearing_mobs)
for(var/mob/H in get_hearers_in_view(3, source))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
@@ -425,7 +435,6 @@
brigman.forceMove(src)
brigman.reset_perspective(src)
update_gut()
- START_PROCESSING(SSobj, src)
user.visible_message("[hound.name]'s mobile brig clunks in series as [brigman] slips inside.", "Your mobile brig groans lightly as [brigman] slips inside.")
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1) // Really don't need ERP sound effects for robots
return
@@ -499,7 +508,6 @@
trashman.forceMove(src)
trashman.reset_perspective(src)
update_gut()
- START_PROCESSING(SSobj, src)
user.visible_message("[hound.name]'s garbage processor groans lightly as [trashman] slips inside.", "Your garbage compactor groans lightly as [trashman] slips inside.")
playsound(hound, 'sound/effects/bin_close.ogg', 80, 1)
return
diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
index 25255814a5..707e3106af 100644
--- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
@@ -1,4 +1,4 @@
-#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