diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index e2a1525663..75ac947ac9 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -30,6 +30,7 @@
var/cloaked = FALSE //If we're cloaked or not
var/image/cloaked_selfimage //The image we use for our client to let them see where we are
var/belly_cycles = 0 //CHOMPEdit: Counting current belly process cycles for autotransfer.
+ var/autotransferable = TRUE //CHOMPEdit: Toggle for autotransfer mechanics.
/atom/movable/Initialize(mapload)
. = ..()
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 86014281bf..4ae820b0ee 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -25,10 +25,16 @@
break
if(dest_belly)
for(var/atom/movable/M in autotransfer_queue)
+ if(!M.autotransferable)
+ autotransfer_queue -= M
+ continue
transfer_contents(M, dest_belly)
autotransfer_queue.Cut()
var/tally = 0
for(var/atom/movable/M in autotransferables)
+ if(!M.autotransferable)
+ autotransferables -= M
+ continue
if(isliving(M))
var/mob/living/L = M
if(L.absorbed)
@@ -152,7 +158,7 @@
formatted_message = replacetext(formatted_message, "%countprey", living_count)
formatted_message = replacetext(formatted_message, "%count", contents.len)
to_chat(M, "[formatted_message]")
-
+
if(to_update)
updateVRPanels()
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 84739af878..2a772e6c11 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -237,6 +237,7 @@
P.latejoin_prey = src.latejoin_prey
P.receive_reagents = src.receive_reagents
P.give_reagents = src.give_reagents
+ P.autotransferable = src.autotransferable
var/list/serialized = list()
@@ -279,6 +280,7 @@
latejoin_prey = P.latejoin_prey
receive_reagents = P.receive_reagents
give_reagents = P.give_reagents
+ autotransferable = P.autotransferable
if(bellies)
release_vore_contents(silent = TRUE)
@@ -893,6 +895,7 @@
dispvoreprefs += "Digestable: [digestable ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Devourable: [devourable ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Feedable: [feeding ? "Enabled" : "Disabled"]
"
+ dispvoreprefs += "Autotransferable: [autotransferable ? "Enabled" : "Disabled"]
" //CHOMPstation edit
dispvoreprefs += "Absorption Permission: [absorbable ? "Allowed" : "Disallowed"]
"
dispvoreprefs += "Leaves Remains: [digest_leave_remains ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Mob Vore: [allowmobvore ? "Enabled" : "Disabled"]
"
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index 3c43bf30a2..561372abd6 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -64,6 +64,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
var/give_reagents = FALSE
var/latejoin_vore = FALSE
var/latejoin_prey = FALSE
+ var/autotransferable = TRUE
//CHOMP stuff end
var/list/belly_prefs = list()
@@ -160,6 +161,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
latejoin_prey = json_from_file["latejoin_prey"]
receive_reagents = json_from_file["receive_reagents"]
give_reagents = json_from_file["give_reagents"]
+ autotransferable = json_from_file["autotransferable"]
//Quick sanitize
@@ -203,6 +205,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
receive_reagents = FALSE
if(isnull(give_reagents))
give_reagents = FALSE
+ if(isnull(autotransferable))
+ autotransferable = TRUE
return TRUE
@@ -234,6 +238,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"belly_prefs" = belly_prefs,
"receive_reagents" = receive_reagents,
"give_reagents" = give_reagents,
+ "autotransferable" = autotransferable
)
//List to JSON
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index e5a37594c4..2cbc7a81c4 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -302,6 +302,7 @@
//CHOMPedit start, liquid belly prefs
"liq_rec" = host.receive_reagents,
"liq_giv" = host.give_reagents,
+ "autotransferable" = host.autotransferable,
"noisy_full" = host.noisy_full //Belching while full
//CHOMPedit end
)
@@ -543,6 +544,12 @@
host.client.prefs_vr.give_reagents = host.give_reagents
unsaved_changes = TRUE
return TRUE
+ if("toggle_autotransferable")
+ host.autotransferable = !host.autotransferable
+ if(host.client.prefs_vr)
+ host.client.prefs_vr.autotransferable = host.autotransferable
+ unsaved_changes = TRUE
+ return TRUE
//Belch code
if("toggle_noisy_full")
host.noisy_full = !host.noisy_full
diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js
index 0a8d13e0f7..9eaf8d446d 100644
--- a/tgui/packages/tgui/interfaces/VorePanel.js
+++ b/tgui/packages/tgui/interfaces/VorePanel.js
@@ -1106,6 +1106,7 @@ const VoreUserPreferences = (props, context) => {
noisy_full,
liq_rec,
liq_giv,
+ autotransferable,
} = data.prefs;
const {
@@ -1387,6 +1388,19 @@ const VoreUserPreferences = (props, context) => {
disabled: "Do Not Allow Taking Liquids",
},
},
+ autotransferable: {
+ action: "toggle_autotransferable",
+ test: autotransferable,
+ tooltip: {
+ main: "This button is for allowing or preventing belly auto-transfer mechanics from moving you.",
+ enable: "Click here to allow autotransfer.",
+ disable: "Click here to prevent autotransfer.",
+ },
+ content: {
+ enabled: "Auto-Transfer Allowed",
+ disabled: "Do Not Allow Auto-Transfer",
+ },
+ },
};
return tabIndex===4 ? null : (
@@ -1450,6 +1464,9 @@ const VoreUserPreferences = (props, context) => {
+
+
+