From 8a4d8806a93de1a5ba95593d0ced925b2546e081 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 23 Apr 2024 02:09:52 -0400 Subject: [PATCH] Just a liddol ol thang --- code/modules/mob/living/carbon/human/human.dm | 6 ++++++ .../mob/living/carbon/human/species/species_rs.dm | 3 ++- .../human/species/station/traits_vr/neutral.dm | 8 ++++++++ code/modules/vore/eating/belly_obj_vr.dm | 4 +++- code/modules/vore/eating/living_vr.dm | 2 +- code/modules/vore/eating/vorepanel_vr.dm | 13 ++++++++++++- 6 files changed, 32 insertions(+), 4 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index b5030a40f0c..62359de0d74 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -1614,6 +1614,12 @@ /mob/living/carbon/human/can_feel_pain(var/obj/item/organ/check_organ) if(isSynthetic()) return 0 + //RS ADD START + if(!species.digest_pain && (isbelly(src.loc) || istype(src.loc, /turf/simulated/floor/water/digestive_enzymes))) + var/obj/belly/b = src.loc + if(b.digest_mode == DM_DIGEST || b.digest_mode == DM_SELECT) + return FALSE + //RS ADD END for(var/datum/modifier/M in modifiers) if(M.pain_immunity == TRUE) return 0 diff --git a/code/modules/mob/living/carbon/human/species/species_rs.dm b/code/modules/mob/living/carbon/human/species/species_rs.dm index 74e3dc0ca8a..0904c357cb6 100644 --- a/code/modules/mob/living/carbon/human/species/species_rs.dm +++ b/code/modules/mob/living/carbon/human/species/species_rs.dm @@ -1,8 +1,9 @@ /datum/species var/vore_belly_default_variant = "H" + var/digest_pain = TRUE /datum/species/unathi vore_belly_default_variant = "L" /datum/species/teshari - vore_belly_default_variant = "T" \ No newline at end of file + vore_belly_default_variant = "T" diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index ffafc749852..35ba73fd09d 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -1008,3 +1008,11 @@ desc = "Makes your nice clawed, scaled, hooved, armored, or otherwise just awfully calloused feet immune to glass shards." cost = 0 var_changes = list("flags" = NO_MINOR_CUT) //Checked the flag is only used by shard stepping. +//RS ADD +/datum/trait/neutral/nodigestpain + name = "Painless Digestion" + desc = "Makes it so that you feel no pain from being digested, even if you otherwise would." + cost = 0 + var_changes = list("digest_pain" = FALSE) + custom_only = FALSE + can_take = ORGANICS diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index dc7d59884f6..d10a57e2b30 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -449,7 +449,7 @@ // Release all contents of this belly into the owning mob's location. // 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(include_absorbed = FALSE, silent = FALSE) +/obj/belly/proc/release_all_contents(include_absorbed = FALSE, silent = FALSE, include_bones = FALSE) //RS EDIT //Don't bother if we don't have contents if(!contents.len) return FALSE @@ -463,6 +463,8 @@ var/mob/living/L = AM if(L.absorbed && !include_absorbed) continue + if(istype(AM, /obj/item/weapon/digestion_remains) && !include_bones) // RS ADD + continue //RS ADD count += release_specific_contents(AM, silent = TRUE) //Clean up our own business diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index b6602ab3cc8..e2728eca92f 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -317,7 +317,7 @@ // /mob/living/proc/release_vore_contents(var/include_absorbed = TRUE, var/silent = FALSE) for(var/obj/belly/B as anything in vore_organs) - B.release_all_contents(include_absorbed, silent) + B.release_all_contents(include_absorbed, silent, TRUE) //RS EDIT // // Returns examine messages for bellies diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 20134e733b2..87a61eba92c 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -737,8 +737,19 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", if(host.stat) to_chat(user,"You can't do that in your state!") return TRUE + //RS ADD START + var/bones_detected = FALSE + var/bone_time = FALSE + for(var/thing in host.vore_selected.contents) + if(istype(thing, /obj/item/weapon/digestion_remains)) + bones_detected = TRUE + break + if(bones_detected) + if(tgui_alert(user, "Do you want to include the remains that are inside your [lowertext(host.vore_selected)]?","",list("Yes","No")) == "Yes") + bone_time = TRUE + //RS ADD END - host.vore_selected.release_all_contents() + host.vore_selected.release_all_contents(include_bones = bone_time) //RS EDIT return TRUE if("Move all")