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)