diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index c073cd6d50..605fea6cd9 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -223,21 +223,24 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
- if(prob(10)) //Less often than gurgles. People might leave this on forever.
- if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
- SEND_SOUND(M,prey_digest)
- play_sound = pick(pred_digest)
+ if(M.absorbable == FALSE)
+ return
+ else
+ if(prob(10)) //Less often than gurgles. People might leave this on forever.
+ if(M && M.client && M.is_preference_enabled(/datum/client_preference/digestion_noises))
+ SEND_SOUND(M,prey_digest)
+ play_sound = pick(pred_digest)
- if(M.absorbed)
- continue
+ if(M.absorbed)
+ continue
- if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them.
- var/oldnutrition = (M.nutrition * 0.05)
- M.nutrition = (M.nutrition * 0.95)
- owner.nutrition += oldnutrition
- else if(M.nutrition < 100) //When they're finally drained.
- absorb_living(M)
- to_update = TRUE
+ if(M.nutrition >= 100) //Drain them until there's no nutrients left. Slowly "absorb" them.
+ var/oldnutrition = (M.nutrition * 0.05)
+ M.nutrition = (M.nutrition * 0.95)
+ 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)
diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm
index 467cfc9d17..6582a840c4 100644
--- a/code/modules/vore/eating/living_vr.dm
+++ b/code/modules/vore/eating/living_vr.dm
@@ -3,6 +3,7 @@
var/digestable = TRUE // Can the mob be digested inside a belly?
var/devourable = TRUE // Can the mob be devoured at all?
var/feeding = TRUE // Can the mob be vorishly force fed or fed to others?
+ var/absorbable = TRUE // Are you allowed to absorb this person? TFF addition 14/12/19
var/digest_leave_remains = FALSE // Will this mob leave bones/skull/etc after the melty demise?
var/allowmobvore = TRUE // Will simplemobs attempt to eat the mob?
var/showvoreprefs = TRUE // Determines if the mechanical vore preferences button will be displayed on the mob or not.
@@ -220,6 +221,7 @@
P.digestable = src.digestable
P.devourable = src.devourable
P.feeding = src.feeding
+ P.absorbable = src.absorbable //TFF 14/12/19 - choose whether allowing absorbing
P.digest_leave_remains = src.digest_leave_remains
P.allowmobvore = src.allowmobvore
P.vore_taste = src.vore_taste
@@ -249,6 +251,7 @@
digestable = P.digestable
devourable = P.devourable
feeding = P.feeding
+ absorbable = P.absorbable //TFF 14/12/19 - choose whether allowing absorbing
digest_leave_remains = P.digest_leave_remains
allowmobvore = P.allowmobvore
vore_taste = P.vore_taste
@@ -710,6 +713,7 @@
dispvoreprefs += "Digestable: [digestable ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Devourable: [devourable ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Feedable: [feeding ? "Enabled" : "Disabled"]
"
+ dispvoreprefs += "Absorption Permission: [absorbable ? "Allowed" : "Disallowed"]
"
dispvoreprefs += "Leaves Remains: [digest_leave_remains ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Mob Vore: [allowmobvore ? "Enabled" : "Disabled"]
"
dispvoreprefs += "Healbelly permission: [permit_healbelly ? "Allowed" : "Disallowed"]
"
diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm
index aff39a3c4c..ea77dd5c6b 100644
--- a/code/modules/vore/eating/vore_vr.dm
+++ b/code/modules/vore/eating/vore_vr.dm
@@ -46,6 +46,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
var/digestable = TRUE
var/devourable = TRUE
var/feeding = TRUE
+ var/absorbable = TRUE //TFF 14/12/19 - choose whether allowing absorbing
var/digest_leave_remains = FALSE
var/allowmobvore = TRUE
var/list/belly_prefs = list()
@@ -116,6 +117,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
digestable = json_from_file["digestable"]
devourable = json_from_file["devourable"]
feeding = json_from_file["feeding"]
+ absorbable = json_from_file["absorbable"] //TFF 14/12/19 - choose whether allowing absorbing
digest_leave_remains = json_from_file["digest_leave_remains"]
allowmobvore = json_from_file["allowmobvore"]
vore_taste = json_from_file["vore_taste"]
@@ -131,6 +133,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
devourable = TRUE
if(isnull(feeding))
feeding = TRUE
+ if(isnull(absorbable))
+ absorbable = TRUE
if(isnull(digest_leave_remains))
digest_leave_remains = FALSE
if(isnull(allowmobvore))
@@ -154,6 +158,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE
"version" = version,
"digestable" = digestable,
"devourable" = devourable,
+ "absorbable" = absorbable,
"feeding" = feeding,
"digest_leave_remains" = digest_leave_remains,
"allowmobvore" = allowmobvore,
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index c31fe98714..d1800bb61e 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -326,6 +326,11 @@
dat += "
Toggle Feeding (Currently: ON)"
if(FALSE)
dat += "
Toggle Feeding (Currently: OFF)"
+ switch(user.absorbable)
+ if(TRUE)
+ dat += "Toggle Absorbtion Permission (Currently: ON)"
+ if(FALSE)
+ dat += "Toggle Absorbtion Permission (Currently: OFF)"
switch(user.digest_leave_remains)
if(TRUE)
dat += "Toggle Leaving Remains (Currently: ON)"
@@ -961,6 +966,19 @@
if(user.client.prefs_vr)
user.client.prefs_vr.feeding = user.feeding
+ if(href_list["toggleabsorbable"])
+ var/choice = alert(user, "This button allows preds to know whether you prefer or don't prefer to be absorbed. Currently you are [user.absorbable? "" : "not"] giving permission.", "", "Allow absorption", "Cancel", "Disallow absorption")
+ switch(choice)
+ if("Cancel")
+ return FALSE
+ if("Allow absorption")
+ user.absorbable = TRUE
+ if("Disallow absorption")
+ user.absorbable = FALSE
+
+ if(user.client.prefs_vr)
+ user.client.prefs_vr.absorbable = user.absorbable
+
if(href_list["toggledlm"])
var/choice = alert(user, "This button allows preds to have your remains be left in their belly after you are digested. This will only happen if pred sets their belly to do so. Remains consist of skeletal parts. Currently you are [user.digest_leave_remains? "" : "not"] leaving remains.", "", "Allow Post-digestion Remains", "Cancel", "Disallow Post-digestion Remains")
switch(choice)