diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm
index a133297315..a396cf9962 100644
--- a/code/__DEFINES/voreconstants.dm
+++ b/code/__DEFINES/voreconstants.dm
@@ -18,39 +18,6 @@
/* // removing sizeplay again
GLOBAL_LIST_INIT(player_sizes_list, list("Macro" = SIZESCALE_HUGE, "Big" = SIZESCALE_BIG, "Normal" = SIZESCALE_NORMAL, "Small" = SIZESCALE_SMALL, "Tiny" = SIZESCALE_TINY))
// Edited to make the new travis check go away
-
-
-GLOBAL_LIST_INIT(digest_pred, list(
- 'sound/vore/pred/digest_01.ogg',
- 'sound/vore/pred/digest_02.ogg',
- 'sound/vore/pred/digest_03.ogg',
- 'sound/vore/pred/digest_04.ogg',
- 'sound/vore/pred/digest_05.ogg',
- 'sound/vore/pred/digest_06.ogg',
- 'sound/vore/pred/digest_07.ogg',
- 'sound/vore/pred/digest_08.ogg',
- 'sound/vore/pred/digest_09.ogg',
- 'sound/vore/pred/digest_10.ogg',
- 'sound/vore/pred/digest_11.ogg',
- 'sound/vore/pred/digest_12.ogg',
- 'sound/vore/pred/digest_13.ogg',
- 'sound/vore/pred/digest_14.ogg',
- 'sound/vore/pred/digest_15.ogg',
- 'sound/vore/pred/digest_16.ogg',
- 'sound/vore/pred/digest_17.ogg',
- 'sound/vore/pred/digest_18.ogg'))
-
-GLOBAL_LIST_INIT(death_pred, list(
- 'sound/vore/pred/death_01.ogg',
- 'sound/vore/pred/death_02.ogg',
- 'sound/vore/pred/death_03.ogg',
- 'sound/vore/pred/death_04.ogg',
- 'sound/vore/pred/death_05.ogg',
- 'sound/vore/pred/death_06.ogg',
- 'sound/vore/pred/death_07.ogg',
- 'sound/vore/pred/death_08.ogg',
- 'sound/vore/pred/death_09.ogg',
- 'sound/vore/pred/death_10.ogg'))
*/
GLOBAL_LIST_INIT(vore_sounds, list(
@@ -66,79 +33,21 @@ GLOBAL_LIST_INIT(vore_sounds, list(
"Squish3" = 'sound/vore/pred/squish_03.ogg',
"Squish4" = 'sound/vore/pred/squish_04.ogg',
"Rustle (cloth)" = 'sound/effects/rustle5.ogg',
- "rustle2(cloth)" = 'sound/effects/rustle2.ogg',
- "rustle3(cloth)" = 'sound/effects/rustle3.ogg',
- "rustle4(cloth)" = 'sound/effects/rustle4.ogg',
- "rustle5(cloth)" = 'sound/effects/rustle5.ogg',
- "None" = null))
-/*
-GLOBAL_LIST_INIT(pred_struggle_sounds, list(
- "Struggle1" = 'sound/vore/pred/struggle_01.ogg',
- "Struggle2" = 'sound/vore/pred/struggle_02.ogg',
- "Struggle3" = 'sound/vore/pred/struggle_03.ogg',
- "Struggle4" = 'sound/vore/pred/struggle_04.ogg',
- "Struggle5" = 'sound/vore/pred/struggle_05.ogg'))
-
-GLOBAL_LIST_INIT(prey_vore_sounds, list(
- "Gulp" = 'sound/vore/prey/swallow_01.ogg',
- "Swallow" = 'sound/vore/prey/swallow_02.ogg',
- "Insertion1" = 'sound/vore/prey/insertion_01.ogg',
- "Insertion2" = 'sound/vore/prey/insertion_02.ogg',
- "Tauric Swallow" = 'sound/vore/prey/taurswallow.ogg',
- "Schlorp" = 'sound/vore/prey/schlorp.ogg',
- "Squish1" = 'sound/vore/prey/squish_01.ogg',
- "Squish2" = 'sound/vore/prey/squish_02.ogg',
- "Squish3" = 'sound/vore/prey/squish_03.ogg',
- "Squish4" = 'sound/vore/prey/squish_04.ogg'))
-
-
-GLOBAL_LIST_INIT(prey_struggle_sounds, list(
- "Struggle1" = 'sound/vore/prey/struggle_01.ogg',
- "Struggle2" = 'sound/vore/prey/struggle_02.ogg',
- "Struggle3" = 'sound/vore/prey/struggle_03.ogg',
- "Struggle4" = 'sound/vore/prey/struggle_04.ogg',
- "Struggle5" = 'sound/vore/prey/struggle_05.ogg'))
-
-GLOBAL_LIST_INIT(digest_prey, list(
- "digest1" = 'sound/vore/prey/digest_01.ogg',
- "digest2" = 'sound/vore/prey/digest_02.ogg',
- "digest3" = 'sound/vore/prey/digest_03.ogg',
- "digest4" = 'sound/vore/prey/digest_04.ogg',
- "digest5" = 'sound/vore/prey/digest_05.ogg',
- "digest6" = 'sound/vore/prey/digest_06.ogg',
- "digest7" = 'sound/vore/prey/digest_07.ogg',
- "digest8" = 'sound/vore/prey/digest_08.ogg',
- "digest9" = 'sound/vore/prey/digest_09.ogg',
- "digest10" = 'sound/vore/prey/digest_10.ogg',
- "digest11" = 'sound/vore/prey/digest_11.ogg',
- "digest12" = 'sound/vore/prey/digest_12.ogg',
- "digest13" = 'sound/vore/prey/digest_13.ogg',
- "digest14" = 'sound/vore/prey/digest_14.ogg',
- "digest15" = 'sound/vore/prey/digest_15.ogg',
- "digest16" = 'sound/vore/prey/digest_16.ogg',
- "digest17" = 'sound/vore/prey/digest_17.ogg',
- "digest18" = 'sound/vore/prey/digest_18.ogg'))
-
-GLOBAL_LIST_INIT(death_prey, list(
- "death1" = 'sound/vore/prey/death_01.ogg',
- "death2" = 'sound/vore/prey/death_02.ogg',
- "death3" = 'sound/vore/prey/death_03.ogg',
- "death4" = 'sound/vore/prey/death_04.ogg',
- "death5" = 'sound/vore/prey/death_05.ogg',
- "death6" = 'sound/vore/prey/death_06.ogg',
- "death7" = 'sound/vore/prey/death_07.ogg',
- "death8" = 'sound/vore/prey/death_08.ogg',
- "death9" = 'sound/vore/prey/death_09.ogg',
- "death10" = 'sound/vore/prey/death_10.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
+ ))
GLOBAL_LIST_INIT(release_sounds, list(
- "rustle (cloth)" = 'sound/effects/rustle1.ogg',
- "rustle2 (cloth)" = 'sound/effects/rustle2.ogg',
- "rustle3 (cloth)" = 'sound/effects/rustle3.ogg',
- "rustle4 (cloth)" = 'sound/effects/rustle4.ogg',
- "rustle5 (cloth)" = 'sound/effects/rustle5.ogg',
- "Stomach Move" = 'sound/vore/pred/stomachmove.ogg',
- "Pred Escape" = 'sound/vore/pred/escape.ogg',
- "Splatter" = 'sound/effects/splat.ogg',
- "None" = null))
\ No newline at end of file
+ "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/pred/stomachmove.ogg',
+ "Pred Escape" = 'sound/vore/pred/escape.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ )
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index d8635060ee..941ba0ec69 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -100,7 +100,7 @@
if(!target || !isturf(target.loc) || !isturf(loc) || stat == DEAD)
return
var/target_dir = get_dir(src,target)
-
+
var/static/list/cardinal_sidestep_directions = list(-90,-45,0,45,90)
var/static/list/diagonal_sidestep_directions = list(-45,0,45)
var/chosen_dir = 0
@@ -202,6 +202,8 @@
if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it
return FALSE
+ if(isbelly(the_target.loc)) //Target's inside a gut, forget about it too
+ return FALSE
if(search_objects < 2)
if(isliving(the_target))
var/mob/living/L = the_target
@@ -301,7 +303,7 @@
if(target)
if(targets_from && isturf(targets_from.loc) && target.Adjacent(targets_from)) //If they're next to us, attack
MeleeAction()
- else
+ else
if(rapid_melee > 1 && target_distance <= melee_queue_distance)
MeleeAction(FALSE)
in_melee = FALSE //If we're just preparing to strike do not enter sidestep mode
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
index 43bc2c26f8..92ac07b1a0 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm
@@ -83,18 +83,12 @@
if(L.stat != DEAD)
if(!client && ranged && ranged_cooldown <= world.time)
OpenFire()
-
- else if(L.stat >= SOFT_CRIT)
- if(vore_active == TRUE && L.devourable == TRUE)
- if(isliving(target) && !target.Adjacent(targets_from))
- return
- else
+ if(L.Adjacent(src) && (L.stat != CONSCIOUS))
+ if(vore_active && L.devourable == TRUE)
dragon_feeding(src,L)
- if(L.loc == src.contents)
- LoseTarget()
- return 0
- else
- devour(L)
+ LoseTarget()
+ else
+ devour(L)
/mob/living/simple_animal/hostile/megafauna/proc/devour(mob/living/L)
if(!L)
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 e76a09d4b7..142e5880d5 100644
--- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
@@ -15,7 +15,7 @@
desc = "It's a belly! You're in it!" // Flavor text description of inside sight/sound/smells/feels.
var/vore_sound = "Gulp" // Sound when ingesting someone
var/vore_verb = "ingest" // Verb for eating with this in messages
- var/release_sound = "Splatter"
+ var/release_sound = "Splatter" // Sound for letting someone out.
var/human_prey_swallow_time = 100 // Time in deciseconds to swallow /mob/living/carbon/human
var/nonhuman_prey_swallow_time = 30 // Time in deciseconds to swallow anything else
var/emote_time = 60 SECONDS // How long between stomach emotes at prey
@@ -30,7 +30,6 @@
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/silent = FALSE
var/transferlocation // Location that the prey is released if they struggle and get dropped off.
var/transferchance = 0 // % Chance of prey being transferred to transfer location when resisting
@@ -127,7 +126,6 @@
"escapechance",
"can_taste",
"bulge_size",
- "silent",
"transferlocation",
"transferchance",
"autotransferchance",
@@ -170,7 +168,7 @@
//Sound w/ antispam flag setting
if(is_wet && !recent_sound)
- for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
+ for(var/mob/M in get_hearers_in_view(2, get_turf(owner)))
if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
recent_sound = TRUE
@@ -184,7 +182,7 @@
// Release all contents of this belly into the owning mob's location.
// If that location is another mob, contents are transferred into whichever of its bellies the owning mob is in.
// Returns the number of mobs so released.
-/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE)
+/obj/belly/proc/release_all_contents(var/include_absorbed = FALSE, var/silent = FALSE)
var/atom/destination = drop_location()
var/count = 0
for(var/thing in contents)
@@ -203,7 +201,7 @@
SEND_SIGNAL(L, COMSIG_ADD_MOOD_EVENT, "emptyprey", /datum/mood_event/emptyprey)
AM.forceMove(destination) // Move the belly contents into the same location as belly's owner.
count++
- for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
+ for(var/mob/M in get_hearers_in_view(2, get_turf(owner)))
if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
if(!silent)
@@ -216,16 +214,15 @@
// Release a specific atom from the contents of this belly into the owning mob's location.
// If that location is another mob, the atom is transferred into whichever of its bellies the owning mob is in.
// Returns the number of atoms so released.
-/obj/belly/proc/release_specific_contents(var/atom/movable/M)
+/obj/belly/proc/release_specific_contents(var/atom/movable/M, var/silent = FALSE)
if (!(M in contents))
return FALSE // They weren't in this belly anyway
M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner.
items_preserved -= M
- if(release_sound)
- for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
- if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
- playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
+ for(var/mob/H in get_hearers_in_view(2, get_turf(owner)))
+ if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
+ playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
if(istype(M,/mob/living))
var/mob/living/ML = M
@@ -515,6 +512,11 @@
var/sound/prey_struggle = sound(get_sfx("prey_struggle"))
R.playsound_local(get_turf(R),prey_struggle,45,0)
+ else
+ for(var/mob/M in get_hearers_in_view(2, get_turf(owner)))
+ if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
+ playsound(get_turf(owner),"rustle",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED)
+
for(var/mob/M in get_hearers_in_view(3, get_turf(owner)))
if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES)) //Might as well censor the normies here too.
M.show_message(struggle_outer_message, 1) // visible
@@ -608,7 +610,6 @@
dupe.escapechance = escapechance
dupe.can_taste = can_taste
dupe.bulge_size = bulge_size
- dupe.silent = silent
dupe.transferlocation = transferlocation
dupe.transferchance = transferchance
dupe.autotransferchance = autotransferchance
diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
index 6c528f75a9..542241e9f2 100644
--- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
@@ -25,7 +25,7 @@
for(var/mob/living/M in contents)
if(isbelly(M.loc))
if(world.time > M.next_preyloop)
- if(!silent)
+ if(is_wet)
M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case
var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE)
M.playsound_local(get_turf(src),preyloop,80,0, channel = CHANNEL_PREYLOOP)
diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
index bc30de6ca6..3d20526a5c 100644
--- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
+++ b/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
@@ -18,9 +18,10 @@
var/dat = picker_holder.gen_vui(src)
- picker_holder.popup = new(src, "insidePanel","Vore Panel", 400, 600, picker_holder)
+ picker_holder.popup = new(src, "insidePanel","Vore Panel", 450, 700, picker_holder)
picker_holder.popup.set_content(dat)
picker_holder.popup.open()
+ src.openpanel = 1
/mob/living/proc/updateVRPanel() //Panel popup update call from belly events.
if(src.openpanel == 1)
@@ -30,7 +31,7 @@
var/dat = picker_holder.gen_vui(src)
- picker_holder.popup = new(src, "insidePanel","Vore Panel", 400, 600, picker_holder)
+ picker_holder.popup = new(src, "insidePanel","Vore Panel", 450, 700, picker_holder)
picker_holder.popup.set_content(dat)
picker_holder.popup.open()
@@ -39,7 +40,7 @@
//
/datum/vore_look
var/obj/belly/selected
- var/show_interacts = TRUE
+ var/show_interacts = 0
var/datum/browser/popup
var/loop = null; // Magic self-reference to stop the handler from being GC'd before user takes action.
@@ -61,7 +62,7 @@
var/obj/belly/inside_belly = userloc
var/mob/living/eater = inside_belly.owner
- //Don't display this part if we couldn't find the belly since could be held in hand.
+ //Don't display this part if we couldn't find the belly since could be held in hand.
if(inside_belly)
dat += "You are currently [user.absorbed ? "absorbed into " : "inside "] [eater]'s [inside_belly]!
"
@@ -102,7 +103,6 @@
dat += "