diff --git a/code/__DEFINES/voreconstants.dm b/code/__DEFINES/voreconstants.dm
index 710b11ae16..9c91de0be2 100644
--- a/code/__DEFINES/voreconstants.dm
+++ b/code/__DEFINES/voreconstants.dm
@@ -20,7 +20,7 @@ GLOBAL_LIST_INIT(player_sizes_list, list("Macro" = SIZESCALE_HUGE, "Big" = SIZES
// Edited to make the new travis check go away
*/
-GLOBAL_LIST_INIT(vore_sounds, list(
+GLOBAL_LIST_INIT(pred_vore_sounds, list(
"Gulp" = 'sound/vore/pred/swallow_01.ogg',
"Swallow" = 'sound/vore/pred/swallow_02.ogg',
"Insertion1" = 'sound/vore/pred/insertion_01.ogg',
@@ -40,7 +40,27 @@ GLOBAL_LIST_INIT(vore_sounds, list(
"None" = null
))
-GLOBAL_LIST_INIT(release_sounds, list(
+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',
+ "Stomach Move" = 'sound/vore/prey/stomachmove.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',
+ "Rustle (cloth)" = 'sound/effects/rustle5.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(pred_release_sounds, list(
"Rustle (cloth)" = 'sound/effects/rustle1.ogg',
"Rustle 2 (cloth)" = 'sound/effects/rustle2.ogg',
"Rustle 3 (cloth)" = 'sound/effects/rustle3.ogg',
@@ -51,3 +71,15 @@ GLOBAL_LIST_INIT(release_sounds, list(
"Splatter" = 'sound/effects/splat.ogg',
"None" = null
))
+
+GLOBAL_LIST_INIT(prey_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/prey/stomachmove.ogg',
+ "Pred Escape" = 'sound/vore/prey/escape.ogg',
+ "Splatter" = 'sound/effects/splat.ogg',
+ "None" = null
+ ))
diff --git a/code/modules/mob/living/carbon/human/dummy.dm b/code/modules/mob/living/carbon/human/dummy.dm
index 3406d29b3a..6da188dd2d 100644
--- a/code/modules/mob/living/carbon/human/dummy.dm
+++ b/code/modules/mob/living/carbon/human/dummy.dm
@@ -4,6 +4,7 @@
status_flags = GODMODE|CANPUSH
mouse_drag_pointer = MOUSE_INACTIVE_POINTER
var/in_use = FALSE
+ no_vore = TRUE
INITIALIZE_IMMEDIATE(/mob/living/carbon/human/dummy)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
index 26f146b952..8c06b01402 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon_vore.dm
@@ -42,7 +42,7 @@
autotransferwait = 200
/obj/belly/megafauna/dragon/gut
- name = "stomach"
+ name = "gut"
vore_capacity = 5 //I doubt this many people will actually last in the gut, but...
vore_sound = "Tauric Swallow"
desc = "With a rush of burning ichor greeting you, you're introduced to the Drake's stomach. Wrinkled walls greedily grind against you, acidic slimes working into your body as you become fuel and nutriton for a superior predator. All that's left is your body's willingness to resist your destiny."
diff --git a/code/modules/mob/living/simple_animal/simple_animal_vr.dm b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
index 666de9cef0..700ee3b7ce 100644
--- a/code/modules/mob/living/simple_animal/simple_animal_vr.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal_vr.dm
@@ -29,21 +29,22 @@
/mob/living/simple_animal/Destroy()
release_vore_contents(include_absorbed = TRUE, silent = TRUE)
prey_excludes.Cut()
+ QDEL_NULL_LIST(vore_organs)
. = ..()
// Update fullness based on size & quantity of belly contents
/mob/living/simple_animal/proc/update_fullness(var/atom/movable/M)
var/new_fullness = 0
- for(var/I in vore_organs)
- var/datum/belly/B = vore_organs[I]
- if (!(M in B.internal_contents))
+ for(var/belly in vore_organs)
+ var/obj/belly/B = vore_organs[belly]
+ if (!(M in B.contents))
return FALSE // Nothing's inside
new_fullness += M
vore_fullness = new_fullness
/mob/living/simple_animal/death()
- release_vore_contents(silent = TRUE)
+ release_vore_contents()
. = ..()
// Simple animals have only one belly. This creates it (if it isn't already set up)
@@ -51,16 +52,18 @@
vore_init = TRUE
if(CHECK_BITFIELD(flags_1, HOLOGRAM_1))
return
- if(vore_organs.len)
- return
- if(no_vore) //If it can't vore, let's not give it a stomach.
+ if(!vore_active || no_vore) //If it can't vore, let's not give it a stomach.
return
if(vore_active && !IsAdvancedToolUser()) //vore active, but doesn't have thumbs to grab people with.
verbs |= /mob/living/simple_animal/proc/animal_nom
- var/obj/belly/B = new /obj/belly(src)
+ if(LAZYLEN(vore_organs))
+ return
+
+ LAZYINITLIST(vore_organs)
+ var/obj/belly/B = new (src)
vore_selected = B
- B.immutable = 1
+ B.immutable = TRUE
B.name = vore_stomach_name ? vore_stomach_name : "stomach"
B.desc = vore_stomach_flavor ? vore_stomach_flavor : "Your surroundings are warm, soft, and slimy. Makes sense, considering you're inside \the [name]."
B.digest_mode = vore_default_mode
@@ -125,13 +128,12 @@
// Simple nom proc for if you get ckey'd into a simple_animal mob! Avoids grabs.
//
/mob/living/simple_animal/proc/animal_nom(var/mob/living/T in oview(1))
- set name = "Animal Nom"
+ set name = "Animal Nom (pull target)"
set category = "Vore"
set desc = "Since you can't grab, you get a verb!"
if (stat != CONSCIOUS)
return
- if (T.devourable == FALSE)
- to_chat(usr, "You can't eat this!")
+ if(!T.devourable)
return
- return vore_attack(usr,T,usr)
+ return vore_attack(src,T,src)
diff --git a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm b/code/modules/mob/living/simple_animal/simplemob_vore_values.dm
similarity index 98%
rename from modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm
rename to code/modules/mob/living/simple_animal/simplemob_vore_values.dm
index 78e18fdb5e..22ed5e3ab4 100644
--- a/modular_citadel/code/modules/mob/living/simple_animal/simplemob_vore_values.dm
+++ b/code/modules/mob/living/simple_animal/simplemob_vore_values.dm
@@ -129,6 +129,8 @@
vore_default_mode = DM_DIGEST
/mob/living/simple_animal/hostile/carp
+ devourable = TRUE
+ digestable = TRUE
feeding = TRUE
vore_active = TRUE
isPredator = TRUE
diff --git a/modular_citadel/code/modules/vore/eating/belly_dat_vr.dm b/code/modules/vore/eating/belly_dat_vr.dm
similarity index 100%
rename from modular_citadel/code/modules/vore/eating/belly_dat_vr.dm
rename to code/modules/vore/eating/belly_dat_vr.dm
diff --git a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj.dm
similarity index 78%
rename from modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
rename to code/modules/vore/eating/belly_obj.dm
index 1ad29c1af3..741aff5f9a 100644
--- a/modular_citadel/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj.dm
@@ -38,6 +38,7 @@
var/swallow_time = 10 SECONDS // for mob transfering automation
var/vore_capacity = 1 // simple animal nom capacity
var/is_wet = TRUE // Is this belly inside slimy parts?
+ var/wet_loop = TRUE // Does this belly have a slimy internal loop?
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
var/tmp/static/list/digest_modes = list(DM_HOLD,DM_DIGEST,DM_HEAL,DM_NOISY,DM_ABSORB,DM_UNABSORB) // Possible digest modes
@@ -138,13 +139,17 @@
"digest_messages_prey",
"examine_messages",
"emote_lists",
- "is_wet"
+ "is_wet",
+ "wet_loop"
)
//ommitted list
// "shrink_grow_size",
-/obj/belly/New(var/newloc)
- . = ..(newloc)
+/obj/belly/Initialize()
+ . = ..()
+ take_ownership(src.loc)
+
+/obj/belly/proc/take_ownership(var/newloc)
//If not, we're probably just in a prefs list or something.
if(isliving(newloc))
owner = loc
@@ -152,13 +157,11 @@
SSbellies.belly_list += src
/obj/belly/Destroy()
+ SSbellies.belly_list -= src
if(owner)
- Remove(owner)
- return ..()
-
-/obj/belly/proc/Remove(mob/living/owner)
- owner.vore_organs -= src
- owner = null
+ owner.vore_organs -= src
+ owner = null
+ . = ..()
// Called whenever an atom enters this belly
/obj/belly/Entered(var/atom/movable/thing,var/atom/OldLoc)
@@ -169,13 +172,22 @@
to_chat(owner,"[thing] slides into your [lowertext(name)].")
//Sound w/ antispam flag setting
- if(is_wet && (world.time > recent_sound))
- var/turf/source = get_turf(owner)
- var/sound/eating = GLOB.vore_sounds[vore_sound]
- for(var/mob/living/M in get_hearers_in_view(3, source))
- if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
- SEND_SOUND(M, eating)
- recent_sound = (world.time + 20 SECONDS)
+ if(vore_sound && !recent_sound)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+ last_hearcheck = world.time
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ var/sound/eating = GLOB.pred_vore_sounds[vore_sound]
+ SEND_SOUND(H,eating)
+ else if(H && H in contents && H.client)
+ var/sound/eating = GLOB.prey_vore_sounds[vore_sound]
+ SEND_SOUND(H,eating)
+ recent_sound = TRUE
//Messages if it's a mob
if(isliving(thing))
@@ -187,7 +199,7 @@
// 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, var/silent = FALSE)
- var/atom/destination = drop_location()
+// var/atom/destination = drop_location()
//Don't bother if we don't have contents
if(!contents.len)
return FALSE
@@ -207,22 +219,30 @@
SEND_SIGNAL(L, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
SEND_SIGNAL(OW, COMSIG_ADD_MOOD_EVENT, "emptypred", /datum/mood_event/emptypred)
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/living/M in get_hearers_in_view(2, get_turf(owner)))
- if(M.client && (M.client.prefs.cit_toggles & EATING_NOISES))
- var/sound/releasement = GLOB.release_sounds[release_sound]
- SEND_SOUND(M, releasement)
+ count += release_specific_contents(AM, silent = TRUE)
//Clean up our own business
items_preserved.Cut()
- if(isanimal(owner))
- owner.update_icons()
+ owner.update_icons()
if(!silent)
+ if(release_sound && !recent_sound)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+ last_hearcheck = world.time
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ var/sound/releasement = GLOB.pred_release_sounds[release_sound]
+ SEND_SOUND(H,releasement)
+ else if(H && H in contents && H.client)
+ var/sound/releasement = GLOB.prey_release_sounds[release_sound]
+ SEND_SOUND(H,releasement)
+ recent_sound = TRUE
owner.visible_message("[owner] expels everything from their [lowertext(name)]!")
- items_preserved.Cut()
- owner.update_icons()
return count
@@ -235,16 +255,13 @@
M.forceMove(drop_location()) // Move the belly contents into the same location as belly's owner.
items_preserved -= M
- if(!silent)
- for(var/mob/living/H in get_hearers_in_view(2, get_turf(owner)))
- if(H.client && (H.client.prefs.cit_toggles & EATING_NOISES))
- var/sound/releasement = GLOB.release_sounds[release_sound]
- SEND_SOUND(H, releasement)
+
if(istype(M,/mob/living))
var/mob/living/ML = M
var/mob/living/OW = owner
- ML.stop_sound_channel(CHANNEL_PREYLOOP)
+ if(ML.client)
+ ML.stop_sound_channel(CHANNEL_PREYLOOP) //Stop the internal loop, it'll restart if the isbelly check on next tick anyway
ML.cure_blind("belly_[REF(src)]")
SEND_SIGNAL(OW, COMSIG_CLEAR_MOOD_EVENT, "fedpred", /datum/mood_event/fedpred)
SEND_SIGNAL(ML, COMSIG_CLEAR_MOOD_EVENT, "fedprey", /datum/mood_event/fedprey)
@@ -263,12 +280,27 @@
Pred.reagents.trans_to(Prey, Pred.reagents.total_volume / absorbed_count)
//Clean up our own business
- if(isanimal(owner))
- owner.update_icons()
+ owner.update_icons()
if(!silent)
+ if(release_sound && !recent_sound)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+ last_hearcheck = world.time
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ var/sound/releasement = GLOB.pred_release_sounds[release_sound]
+ SEND_SOUND(H,releasement)
+ else if(H && H in contents && H.client)
+ var/sound/releasement = GLOB.prey_release_sounds[release_sound]
+ SEND_SOUND(H,releasement)
+ recent_sound = TRUE
owner.visible_message("[owner] expels [M] from their [lowertext(name)]!")
- owner.update_icons()
+
return TRUE
// Actually perform the mechanics of devouring the tasty prey.
@@ -312,15 +344,26 @@
/obj/belly/proc/transfer_contents(var/atom/movable/content, var/obj/belly/target, silent = FALSE)
if(!(content in src) || !istype(target))
return
+ content.forceMove(target)
for(var/mob/living/M in contents)
M.cure_blind("belly_[REF(src)]")
- target.nom_mob(content, target.owner)
- if(!silent)
- var/turf/source = get_turf(owner)
- var/sound/eating = GLOB.vore_sounds[vore_sound]
- for(var/mob/living/M in get_hearers_in_view(3, source))
- if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
- SEND_SOUND(M, eating)
+// target.nom_mob(content, target.owner)
+ if(vore_sound && !recent_sound && !silent)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+ last_hearcheck = world.time
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ var/sound/eating = GLOB.pred_vore_sounds[vore_sound]
+ SEND_SOUND(H,eating)
+ else if(H && H in contents && H.client)
+ var/sound/eating = GLOB.prey_vore_sounds[vore_sound]
+ SEND_SOUND(H,eating)
+ recent_sound = TRUE
owner.updateVRPanel()
for(var/mob/living/M in contents)
@@ -424,9 +467,12 @@
if(!M.dropItemToGround(W))
qdel(W)
+ //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)
- M.stop_sound_channel(CHANNEL_PREYLOOP)
+
//Update owner
owner.updateVRPanel()
@@ -470,7 +516,7 @@
/obj/belly/drop_location()
//Should be the case 99.99% of the time
if(owner)
- return owner.loc
+ return owner.drop_location()
//Sketchy fallback for safety, put them somewhere safe.
else if(ismob(src))
testing("[src] (\ref[src]) doesn't have an owner, and dropped someone at a latespawn point!")
@@ -525,24 +571,31 @@
struggle_outer_message = "" + struggle_outer_message + ""
struggle_user_message = "" + struggle_user_message + ""
- var/turf/source = get_turf(owner)
- var/sound/struggle_snuggle = sound(get_sfx("struggle_sound"))
+ var/sound/pred_struggle_snuggle = sound(get_sfx("struggle_sound"))
+ var/sound/prey_struggle_snuggle = sound(get_sfx("prey_struggle"))
var/sound/struggle_rustle = sound(get_sfx("rustle"))
+ LAZYCLEARLIST(hearing_mobs)
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
+ if(!H.client || !(H.client.prefs.cit_toggles & EATING_NOISES))
+ continue
+ LAZYADD(hearing_mobs, H)
+
if(is_wet)
- for(var/mob/living/M in get_hearers_in_view(3, source))
- if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
- SEND_SOUND(M, struggle_snuggle)
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_struggle_snuggle)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_struggle_snuggle)
else
- for(var/mob/living/M in get_hearers_in_view(3, source))
- if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
- SEND_SOUND(M, struggle_rustle)
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client)
+ SEND_SOUND(H, struggle_rustle)
- var/list/watching = hearers(3, owner)
- for(var/mob/living/M in watching)
- 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
+ for(var/mob/living/H in hearing_mobs)
+ if(H && H.client && (isturf(H.loc)))
+ H.show_message(struggle_outer_message, 1) // visible
to_chat(R,struggle_user_message)
@@ -551,8 +604,10 @@
to_chat(R,"You start to climb out of \the [lowertext(name)].")
to_chat(owner,"Someone is attempting to climb out of your [lowertext(name)]!")
if(do_after(R, escapetime))
- if((owner.stat || escapable) && (R.loc == src)) //Can still escape?
+ if((escapable) && (R.loc == src)) //Can still escape?
release_specific_contents(R)
+ to_chat(R,"You climb out of \the [lowertext(name)].")
+ to_chat(owner,"[R] climbs out of your [lowertext(name)]!")
return
else if(R.loc != src) //Aren't even in the belly. Quietly fail.
return
@@ -560,41 +615,41 @@
to_chat(R,"Your attempt to escape [lowertext(name)] has failed!")
to_chat(owner,"The attempt to escape from your [lowertext(name)] has failed!")
return
- else if(prob(transferchance) && transferlocation) //Next, let's have it see if they end up getting into an even bigger mess then when they started.
- var/obj/belly/dest_belly
- for(var/belly in owner.vore_organs)
- var/obj/belly/B = belly
- if(B.name == transferlocation)
- dest_belly = B
- break
+ else if(prob(transferchance) && transferlocation) //Next, let's have it see if they end up getting into an even bigger mess then when they started.
+ var/obj/belly/dest_belly
+ for(var/belly in owner.vore_organs)
+ var/obj/belly/B = belly
+ if(B.name == transferlocation)
+ dest_belly = B
+ break
- if(!dest_belly)
- to_chat(owner, "Something went wrong with your belly transfer settings. Your [lowertext(name)] has had it's transfer chance and transfer location cleared as a precaution.")
- transferchance = 0
- transferlocation = null
+ if(!dest_belly)
+ to_chat(owner, "Something went wrong with your belly transfer settings. Your [lowertext(name)] has had it's transfer chance and transfer location cleared as a precaution.")
+ transferchance = 0
+ transferlocation = null
+ return
+
+ to_chat(R,"Your attempt to escape [lowertext(name)] has failed and your struggles only results in you sliding into [owner]'s [transferlocation]!")
+ to_chat(owner,"Someone slid into your [transferlocation] due to their struggling inside your [lowertext(name)]!")
+ transfer_contents(R, dest_belly)
return
- to_chat(R,"Your attempt to escape [lowertext(name)] has failed and your struggles only results in you sliding into [owner]'s [transferlocation]!")
- to_chat(owner,"Someone slid into your [transferlocation] due to their struggling inside your [lowertext(name)]!")
- transfer_contents(R, dest_belly)
- return
+ else if(prob(absorbchance) && digest_mode != DM_ABSORB) //After that, let's have it run the absorb chance.
+ to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to cling more tightly...")
+ to_chat(owner,"You feel your [lowertext(name)] start to cling onto its contents...")
+ digest_mode = DM_ABSORB
+ return
- else if(prob(absorbchance) && digest_mode != DM_ABSORB) //After that, let's have it run the absorb chance.
- to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to cling more tightly...")
- to_chat(owner,"You feel your [lowertext(name)] start to cling onto its contents...")
- digest_mode = DM_ABSORB
- return
+ else if(prob(digestchance) && digest_mode != DM_DIGEST) //Finally, let's see if it should run the digest chance.
+ to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to get more active...")
+ to_chat(owner,"You feel your [lowertext(name)] beginning to become active!")
+ digest_mode = DM_DIGEST
+ return
- else if(prob(digestchance) && digest_mode != DM_DIGEST) //Finally, let's see if it should run the digest chance.
- to_chat(R,"In response to your struggling, \the [lowertext(name)] begins to get more active...")
- to_chat(owner,"You feel your [lowertext(name)] beginning to become active!")
- digest_mode = DM_DIGEST
- return
-
- else //Nothing interesting happened.
- to_chat(R,"You make no progress in escaping [owner]'s [lowertext(name)].")
- to_chat(owner,"Your prey appears to be unable to make any progress in escaping your [lowertext(name)].")
- return
+ else //Nothing interesting happened.
+ to_chat(R,"You make no progress in escaping [owner]'s [lowertext(name)].")
+ to_chat(owner,"Your prey appears to be unable to make any progress in escaping your [lowertext(name)].")
+ return
/obj/belly/proc/get_mobs_and_objs_in_belly()
var/list/see = list()
@@ -641,6 +696,7 @@
dupe.swallow_time = swallow_time
dupe.vore_capacity = vore_capacity
dupe.is_wet = is_wet
+ dupe.wet_loop = wet_loop
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes.dm
similarity index 76%
rename from modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
rename to code/modules/vore/eating/bellymodes.dm
index da323f02e2..0ecaf49abc 100644
--- a/modular_citadel/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes.dm
@@ -18,27 +18,29 @@
return SSBELLIES_PROCESSED
next_process = times_fired + (6 SECONDS/wait) //Set up our next process time.
+ var/to_update = FALSE
/////////////////////////// Auto-Emotes ///////////////////////////
if(contents.len && next_emote <= times_fired)
next_emote = times_fired + round(emote_time/wait,1)
var/list/EL = emote_lists[digest_mode]
- for(var/mob/living/M in contents)
- if(M.digestable || !(digest_mode == DM_DIGEST)) // don't give digesty messages to indigestible people
- to_chat(M,"[pick(EL)]")
+ if(LAZYLEN(EL))
+ for(var/mob/living/M in contents)
+ 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)
- if(isbelly(M.loc))
+ if(M && isbelly(M.loc))
if(world.time > M.next_preyloop)
- if(is_wet)
+ if(is_wet && wet_loop)
if(!M.client)
continue
M.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case
if(M.client.prefs.cit_toggles & DIGESTION_NOISES)
- var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE)
+ var/sound/preyloop = sound('sound/vore/prey/loop.ogg')
M.playsound_local(get_turf(src),preyloop, 80,0, channel = CHANNEL_PREYLOOP)
- M.next_preyloop = (world.time + 52 SECONDS)
+ M.next_preyloop = (world.time + 51 SECONDS)
/////////////////////////// Exit Early ////////////////////////////
@@ -56,7 +58,6 @@
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"))
- var/turf/source = get_turf(owner)
///////////////////////////// DM_HOLD /////////////////////////////
if(digest_mode == DM_HOLD)
@@ -70,18 +71,18 @@
for (var/mob/living/M in contents)
if(prob(25))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_digest)
//Pref protection!
if (!M.digestable || M.absorbed)
@@ -107,21 +108,22 @@
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)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_death)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_death)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_death)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_death)
M.stop_sound_channel(CHANNEL_PREYLOOP)
digestion_death(M)
owner.update_icons()
+ to_update = TRUE
continue
@@ -136,48 +138,45 @@
if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
digest_item(T)
- owner.updateVRPanel()
-
///////////////////////////// DM_HEAL /////////////////////////////
if(digest_mode == DM_HEAL)
for (var/mob/living/M in contents)
if(prob(25))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_digest)
if(M.stat != DEAD)
if(owner.nutrition >= NUTRITION_LEVEL_STARVING && (M.health < M.maxHealth))
M.adjustBruteLoss(-3)
M.adjustFireLoss(-3)
owner.nutrition -= 5
- return
////////////////////////// DM_NOISY /////////////////////////////////
//for when you just want people to squelch around
if(digest_mode == DM_NOISY)
if(prob(35))
- if((world.time - NORMIE_HEARCHECK) > last_hearcheck)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_digest)
//////////////////////////// DM_ABSORB ////////////////////////////
@@ -186,18 +185,18 @@
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)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_digest)
if(M.absorbed)
continue
@@ -208,16 +207,18 @@
owner.nutrition += oldnutrition
else if(M.nutrition < 100) //When they're finally drained.
absorb_living(M)
+ to_update = TRUE
//////////////////////////// DM_UNABSORB ////////////////////////////
else if(digest_mode == DM_UNABSORB)
for (var/mob/living/M in contents)
if(M.absorbed && owner.nutrition >= 100)
- M.absorbed = 0
+ M.absorbed = FALSE
to_chat(M,"You suddenly feel solid again ")
to_chat(owner,"You feel like a part of you is missing.")
owner.nutrition -= 100
+ to_update = TRUE
//////////////////////////DM_DRAGON /////////////////////////////////////
//because dragons need snowflake guts
@@ -228,18 +229,18 @@
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)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_digest)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_digest)
//No digestion protection for megafauna.
@@ -261,22 +262,23 @@
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)
+ if((world.time + NORMIE_HEARCHECK) > last_hearcheck)
LAZYCLEARLIST(hearing_mobs)
- for(var/mob/living/H in get_hearers_in_view(3, source))
+ for(var/mob/living/H in get_hearers_in_view(3, owner))
if(!H.client || !(H.client.prefs.cit_toggles & DIGESTION_NOISES))
continue
LAZYADD(hearing_mobs, H)
last_hearcheck = world.time
for(var/mob/living/H in hearing_mobs)
- if(!isbelly(H.loc))
- H.playsound_local(source, null, 45, falloff = 0, S = pred_death)
- else if(H in contents)
- H.playsound_local(source, null, 65, falloff = 0, S = prey_death)
+ if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
+ SEND_SOUND(H,pred_death)
+ else if(H && H in contents && H.client)
+ SEND_SOUND(H,prey_death)
M.spill_organs(FALSE,TRUE,TRUE)
M.stop_sound_channel(CHANNEL_PREYLOOP)
digestion_death(M)
owner.update_icons()
+ to_update = TRUE
continue
@@ -291,4 +293,11 @@
if(istype(T,/obj/item/reagent_containers/food) || istype(T,/obj/item/organ))
digest_item(T)
- owner.updateVRPanel()
\ No newline at end of file
+ if(to_update)
+ for(var/mob/living/M in contents)
+ if(M.client)
+ M.updateVRPanel()
+ if(owner.client)
+ owner.updateVRPanel()
+
+ return SSBELLIES_PROCESSED
\ No newline at end of file
diff --git a/modular_citadel/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act.dm
similarity index 100%
rename from modular_citadel/code/modules/vore/eating/digest_act_vr.dm
rename to code/modules/vore/eating/digest_act.dm
diff --git a/modular_citadel/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living.dm
similarity index 93%
rename from modular_citadel/code/modules/vore/eating/living_vr.dm
rename to code/modules/vore/eating/living.dm
index d9adde04d1..9fdb7aa764 100644
--- a/modular_citadel/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living.dm
@@ -8,7 +8,7 @@
var/feeding = FALSE // Are we going to feed someone else?
var/vore_taste = null // What the character tastes like
var/no_vore = FALSE // If the character/mob can vore.
- var/openpanel = 0 // Is the vore panel open?
+ var/openpanel = FALSE // Is the vore panel open?
var/absorbed = FALSE //are we absorbed?
var/next_preyloop
var/vore_init = FALSE //Has this mob's vore been initialized yet?
@@ -23,16 +23,16 @@
M.verbs += /mob/living/proc/escapeOOC
if(M.no_vore) //If the mob isn't supposed to have a stomach, let's not give it an insidepanel so it can make one for itself, or a stomach.
- return 1
+ return TRUE
M.verbs += /mob/living/proc/insidePanel
//Tries to load prefs if a client is present otherwise gives freebie stomach
- spawn(10 SECONDS) // long delay because the server delays in its startup. just on the safe side.
+ spawn(2 SECONDS) // long delay because the server delays in its startup. just on the safe side.
if(M)
M.init_vore()
- //Return 1 to hook-caller
- return 1
+ //return TRUE to hook-caller
+ return TRUE
/mob/living/proc/init_vore()
vore_init = TRUE
@@ -54,10 +54,10 @@
LAZYINITLIST(vore_organs)
var/obj/belly/B = new /obj/belly(src)
vore_selected = B
- B.immutable = 1
+ B.immutable = TRUE
B.name = "Stomach"
B.desc = "It appears to be rather warm and wet. Makes sense, considering it's inside [name]."
- B.can_taste = 1
+ B.can_taste = TRUE
return TRUE
// Handle being clicked, perhaps with something to devour
@@ -84,7 +84,7 @@
return
feed_self_to_grabbed(user, pred)
- if(pred == user) //you click yourself
+ else if(pred == user) //you click yourself
if(!is_vore_predator(src))
to_chat(user, "You aren't voracious enough.")
return
@@ -126,7 +126,7 @@
//Sanity
if(!user || !prey || !pred || !istype(belly) || !(belly in pred.vore_organs))
testing("[user] attempted to feed [prey] to [pred], via [lowertext(belly.name)] but it went wrong.")
- return FALSE
+ return
if (!prey.devourable)
to_chat(user, "This can't be eaten!")
@@ -151,9 +151,14 @@
user.visible_message(attempt_msg)
// Now give the prey time to escape... return if they did
- var/swallow_time = delay || ishuman(prey) ? belly.human_prey_swallow_time : belly.nonhuman_prey_swallow_time
+ var/swallow_time
+ if(delay)
+ swallow_time = delay
+ else
+ swallow_time = istype(prey, /mob/living/carbon/human) ? belly.human_prey_swallow_time : belly.nonhuman_prey_swallow_time
- if(!do_mob(src, user, swallow_time))
+ //Timer and progress bar
+ if(!do_after(user, swallow_time, prey))
return FALSE // Prey escaped (or user disabled) before timer expired.
if(!prey.Adjacent(user)) //double check'd just in case they moved during the timer and the do_mob didn't fail for whatever reason
@@ -162,13 +167,6 @@
// If we got this far, nom successful! Announce it!
user.visible_message(success_msg)
- // incredibly contentious eating noises time
- var/turf/source = get_turf(user)
- var/sound/eating = GLOB.vore_sounds[belly.vore_sound]
- for(var/mob/living/M in get_hearers_in_view(3, source))
- if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
- SEND_SOUND(M, eating)
-
// Actually shove prey into the belly.
belly.nom_mob(prey, user)
stop_pulling()
@@ -183,7 +181,7 @@
if(prey.ckey)
prey_stat = prey.stat//only return this if they're not an unmonkey or whatever
if(!prey.client)//if they disconnected, tell us
- prey_braindead = 1
+ prey_braindead = TRUE
if (pred == user)
message_admins("[ADMIN_LOOKUPFLW(pred)] ate [ADMIN_LOOKUPFLW(prey)][!prey_braindead ? "" : " (BRAINDEAD)"][prey_stat ? " (DEAD/UNCONSCIOUS)" : ""].")
pred.log_message("[key_name(pred)] ate [key_name(prey)].", LOG_ATTACK)
@@ -212,15 +210,15 @@
//Other overridden resists go here
- return 0
+ return FALSE
// internal slimy button in case the loop stops playing but the player wants to hear it
/mob/living/proc/preyloop_refresh()
set name = "Internal loop refresh"
set category = "Vore"
+ src.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case
if(isbelly(loc))
- src.stop_sound_channel(CHANNEL_PREYLOOP) // sanity just in case
- var/sound/preyloop = sound('sound/vore/prey/loop.ogg', repeat = TRUE)
+ var/sound/preyloop = sound('sound/vore/prey/loop.ogg')
SEND_SOUND(src, preyloop)
else
to_chat(src, "You aren't inside anything, you clod.")
@@ -265,28 +263,28 @@
//
/mob/living/proc/save_vore_prefs()
if(!client || !client.prefs_vr)
- return 0
+ return FALSE
if(!copy_to_prefs_vr())
- return 0
+ return FALSE
if(!client.prefs_vr.save_vore())
- return 0
+ return FALSE
- return 1
+ return TRUE
/mob/living/proc/apply_vore_prefs()
if(!client || !client.prefs_vr)
- return 0
+ return FALSE
if(!client.prefs_vr.load_vore())
- return 0
+ return FALSE
if(!copy_from_prefs_vr())
- return 0
+ return FALSE
- return 1
+ return TRUE
/mob/living/proc/copy_to_prefs_vr()
if(!client || !client.prefs_vr)
to_chat(src,"You attempted to save your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.")
- return 0
+ return FALSE
var/datum/vore_preferences/P = client.prefs_vr
@@ -302,7 +300,7 @@
P.belly_prefs = serialized
- return 1
+ return TRUE
//
// Proc for applying vore preferences, given bellies
@@ -310,7 +308,7 @@
/mob/living/proc/copy_from_prefs_vr()
if(!client || !client.prefs_vr)
to_chat(src,"You attempted to apply your vore prefs but somehow you're in this character without a client.prefs_vr variable. Tell a dev.")
- return 0
+ return FALSE
vorepref_init = TRUE
var/datum/vore_preferences/P = client.prefs_vr
@@ -325,7 +323,7 @@
for(var/entry in P.belly_prefs)
list_to_object(entry,src)
- return 1
+ return TRUE
//
// Release everything in every vore organ
diff --git a/modular_citadel/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore.dm
similarity index 94%
rename from modular_citadel/code/modules/vore/eating/vore_vr.dm
rename to code/modules/vore/eating/vore.dm
index dc813d70aa..a9b14dcdc8 100644
--- a/modular_citadel/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore.dm
@@ -84,22 +84,22 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
/datum/vore_preferences/proc/load_vore()
if(!client || !client_ckey)
- return 0 //No client, how can we save?
+ return FALSE //No client, how can we save?
if(!client.prefs || !client.prefs.default_slot)
- return 0 //Need to know what character to load!
+ return FALSE //Need to know what character to load!
slot = client.prefs.default_slot
load_path(client_ckey,slot)
- if(!path) return 0 //Path couldn't be set?
+ if(!path) return FALSE //Path couldn't be set?
if(!fexists(path)) //Never saved before
save_vore() //Make the file first
- return 1
+ return TRUE
var/list/json_from_file = json_decode(file2text(path))
if(!json_from_file)
- return 0 //My concern grows
+ return FALSE //My concern grows
var/version = json_from_file["version"]
json_from_file = patch_version(json_from_file,version)
@@ -120,11 +120,11 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
if(isnull(belly_prefs))
belly_prefs = list()
- return 1
+ return TRUE
/datum/vore_preferences/proc/save_vore()
if(!path)
- return 0
+ return FALSE
var/version = VORE_VERSION //For "good times" use in the future
var/list/settings_list = list(
@@ -140,7 +140,7 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
var/json_to_file = json_encode(settings_list)
if(!json_to_file)
testing("Saving: [path] failed jsonencode")
- return 0
+ return FALSE
//Write it out
//#ifdef RUST_G
@@ -153,9 +153,9 @@ GLOBAL_LIST_EMPTY(vore_preferences_datums)
//#endif
if(!fexists(path))
testing("Saving: [path] failed file write")
- return 0
+ return FALSE
- return 1
+ return TRUE
/* commented out list things
"allowmobvore" = allowmobvore,
diff --git a/modular_citadel/code/modules/vore/eating/voreitems.dm b/code/modules/vore/eating/voreitems.dm
similarity index 100%
rename from modular_citadel/code/modules/vore/eating/voreitems.dm
rename to code/modules/vore/eating/voreitems.dm
diff --git a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel.dm
similarity index 92%
rename from modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
rename to code/modules/vore/eating/vorepanel.dm
index ae7da895a6..962fe54af7 100644
--- a/modular_citadel/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel.dm
@@ -21,10 +21,10 @@
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
+ src.openpanel = TRUE
/mob/living/proc/updateVRPanel() //Panel popup update call from belly events.
- if(src.openpanel == 1)
+ if(src.openpanel == TRUE)
var/datum/vore_look/picker_holder = new()
picker_holder.loop = picker_holder
picker_holder.selected = vore_selected
@@ -40,7 +40,7 @@
//
/datum/vore_look
var/obj/belly/selected
- var/show_interacts = 0
+ var/show_interacts = FALSE
var/datum/browser/popup
var/loop = null; // Magic self-reference to stop the handler from being GC'd before user takes action.
@@ -163,6 +163,9 @@
//Belly Type button
dat += "
Is 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:"
@@ -241,21 +244,19 @@
dat += "