diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index d2d4821cd9..9857513e7e 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -1583,7 +1583,7 @@
return
// Puke if toxloss is too high
- if(!stat)
+ if(!stat && !isbelly(loc))
if (getToxLoss() >= 30 && isSynthetic())
if(!confused)
if(prob(5))
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 6297d002f5..5242eb687b 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -23,6 +23,8 @@
var/digest_brute = 0.5 // Brute damage per tick in digestion mode
var/digest_burn = 0.5 // Burn damage per tick in digestion mode
var/digest_oxy = 0 // Oxy damage per tick in digestion mode
+ var/digest_tox = 0 // Toxins damage per tick in digestion mode
+ var/digest_clone = 0 // Clone damage per tick in digestion mode
var/immutable = FALSE // Prevents this belly from being deleted
var/escapable = FALSE // Belly can be resisted out of at any time
var/escapetime = 20 SECONDS // Deciseconds, how long to escape this belly
@@ -178,6 +180,8 @@
"digest_brute",
"digest_burn",
"digest_oxy",
+ "digest_tox",
+ "digest_clone",
"immutable",
"can_taste",
"escapable",
@@ -1187,6 +1191,8 @@
dupe.digest_brute = digest_brute
dupe.digest_burn = digest_burn
dupe.digest_oxy = digest_oxy
+ dupe.digest_tox = digest_tox
+ dupe.digest_clone = digest_clone
dupe.immutable = immutable
dupe.can_taste = can_taste
dupe.escapable = escapable
diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm
index f08da0fdca..67605bf14b 100644
--- a/code/modules/vore/eating/bellymodes_datum_vr.dm
+++ b/code/modules/vore/eating/bellymodes_datum_vr.dm
@@ -55,13 +55,19 @@ GLOBAL_LIST_INIT(digest_modes, list())
var/old_brute = L.getBruteLoss()
var/old_burn = L.getFireLoss()
var/old_oxy = L.getOxyLoss()
+ var/old_tox = L.getToxLoss()
+ var/old_clone = L.getCloneLoss()
L.adjustBruteLoss(B.digest_brute)
L.adjustFireLoss(B.digest_burn)
L.adjustOxyLoss(B.digest_oxy)
+ L.adjustToxLoss(B.digest_tox)
+ L.adjustCloneLoss(B.digest_clone)
var/actual_brute = L.getBruteLoss() - old_brute
var/actual_burn = L.getFireLoss() - old_burn
var/actual_oxy = L.getOxyLoss() - old_oxy
- var/damage_gain = (actual_brute + actual_burn + actual_oxy/2)*(B.nutrition_percent / 100)
+ var/actual_tox = L.getToxLoss() - old_tox
+ var/actual_clone = L.getCloneLoss() - old_clone
+ var/damage_gain = (actual_brute + actual_burn + actual_oxy/2 + actual_tox + actual_clone*2)*(B.nutrition_percent / 100)
var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02
var/difference = B.owner.size_multiplier / L.size_multiplier
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 1477e61af3..80e9fb8058 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -186,6 +186,8 @@
"digest_brute" = selected.digest_brute,
"digest_burn" = selected.digest_burn,
"digest_oxy" = selected.digest_oxy,
+ "digest_tox" = selected.digest_tox,
+ "digest_clone" = selected.digest_clone,
"bulge_size" = selected.bulge_size,
"save_digest_mode" = selected.save_digest_mode,
"display_absorbed_examine" = selected.display_absorbed_examine,
@@ -1235,6 +1237,20 @@
var/new_new_damage = CLAMP(new_damage, 0, 12)
host.vore_selected.digest_oxy = new_new_damage
. = TRUE
+ if("b_tox_dmg")
+ var/new_damage = tgui_input_number(user, "Choose the amount of toxins damage prey will take per tick. Ranges from 0 to 6", "Set Belly Toxins Damage.", host.vore_selected.digest_tox, 6, 0)
+ if(new_damage == null)
+ return FALSE
+ var/new_new_damage = CLAMP(new_damage, 0, 6)
+ host.vore_selected.digest_tox = new_new_damage
+ . = TRUE
+ if("b_clone_dmg")
+ var/new_damage = tgui_input_number(user, "Choose the amount of brute DNA damage (clone) prey will take per tick. Ranges from 0 to 6", "Set Belly Clone Damage.", host.vore_selected.digest_clone, 6, 0)
+ if(new_damage == null)
+ return FALSE
+ var/new_new_damage = CLAMP(new_damage, 0, 6)
+ host.vore_selected.digest_clone = new_new_damage
+ . = TRUE
if("b_emoteactive")
host.vore_selected.emote_active = !host.vore_selected.emote_active
. = TRUE
diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js
index 9ec9eb7da0..9cf0f604f2 100644
--- a/tgui/packages/tgui/interfaces/VorePanel.js
+++ b/tgui/packages/tgui/interfaces/VorePanel.js
@@ -577,6 +577,8 @@ const VoreSelectedBellyOptions = (props, context) => {
digest_brute,
digest_burn,
digest_oxy,
+ digest_tox,
+ digest_clone,
bulge_size,
display_absorbed_examine,
shrink_grow_size,
@@ -686,6 +688,12 @@ const VoreSelectedBellyOptions = (props, context) => {
+
+
+
+