Files
Bubberstation/code/modules/surgery/stomachpump.dm
T
6f655cb5b6 [MIRROR] Makes the stomach important part of eating (#633)
* Makes the stomach important part of eating (#53228)

This puts food you eat in to the stomach.
If you do not have a stomach you can not eat, if you try to swallow anything you will spew it out.

Changes to surgeries:

    Stomach pump can now be done on the living, and pushes out the reagents in the stomach.
    Blood filter is a new tool and cleans the reagents out of the body.

This also makes it so that reagents that do not metabolize can accumulate in the stomach reducing how much food you can eat.

* Makes the stomach important part of eating

Co-authored-by: NightRed <nightred@gmail.com>
2020-09-04 00:12:43 +01:00

53 lines
2.3 KiB
Plaintext

/datum/surgery/stomach_pump
name = "Stomach Pump"
steps = list(/datum/surgery_step/incise,
/datum/surgery_step/retract_skin,
/datum/surgery_step/incise,
/datum/surgery_step/clamp_bleeders,
/datum/surgery_step/stomach_pump,
/datum/surgery_step/close)
target_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey)
possible_locs = list(BODY_ZONE_CHEST)
requires_bodypart_type = TRUE
ignore_clothes = FALSE
var/accumulated_experience = 0
/datum/surgery/stomach_pump/can_start(mob/user, mob/living/carbon/target)
var/obj/item/organ/stomach/S = target.getorganslot(ORGAN_SLOT_STOMACH)
if(HAS_TRAIT(target, TRAIT_HUSK))
return FALSE
if(!S)
return FALSE
return ..()
//Working the stomach by hand in such a way that you induce vomiting.
/datum/surgery_step/stomach_pump
name = "Pump Stomach"
accept_hand = TRUE
repeatable = TRUE
time = 20
/datum/surgery_step/stomach_pump/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
display_results(user, target, "<span class='notice'>You begin pumping [target]'s stomach...</span>",
"<span class='notice'>[user] begins to pump [target]'s stomach.</span>",
"<span class='notice'>[user] begins to press on [target]'s chest.</span>")
/datum/surgery_step/stomach_pump/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery, default_display_results = FALSE)
if(ishuman(target))
var/mob/living/carbon/human/H = target
display_results(user, target, "<span class='notice'>[user] forces [H] to vomit, cleansing their stomach of some chemicals!</span>",
"<span class='notice'>[user] forces [H] to vomit, cleansing their stomach of some chemicals!</span>",
"[user] forces [H] to vomit!")
H.vomit(20, FALSE, TRUE, 1, TRUE, FALSE, purge = TRUE) //called with purge as true to lose more reagents
return ..()
/datum/surgery_step/stomach_pump/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(ishuman(target))
var/mob/living/carbon/human/H = target
display_results(user, target, "<span class='warning'>You screw up, brusing [H]'s chest!</span>",
"<span class='warning'>[user] screws up, brusing [H]'s chest!</span>",
"<span class='warning'>[user] screws up!</span>")
H.adjustOrganLoss(ORGAN_SLOT_STOMACH, 5)
H.adjustBruteLoss(5)