diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 5b3fdafb68f..6d0f3e6ed23 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -114,6 +114,4 @@ #define EASYLIMBATTACHMENT 23 #define TOXINLOVER 24 #define DIGITIGRADE 25 //Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) -#define NO_UNDERWEAR 26 -#define NOLIVER 27 -#define NOSTOMACH 28 +#define NO_UNDERWEAR 26 diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 30c19cc575a..5b3dfbb9941 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -118,9 +118,7 @@ MASS SPECTROMETER if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.undergoing_cardiac_arrest() && H.stat != DEAD) - to_chat(user, "Subject suffering from heart attack: apply defibrillator immediately!") - if(H.undergoing_liver_failure() && H.stat != DEAD) - to_chat(user, "Subject suffering from liver failure: apply corazone and begin a liver transplant immediately!") + to_chat(user, "Subject suffering from heart attack: Apply defibrillator immediately!") to_chat(user, "Analyzing results for [M]:\n\tOverall status: [mob_status]") @@ -146,13 +144,7 @@ MASS SPECTROMETER else if (M.getBrainLoss() >= 10) to_chat(user, "\tBrain damage detected. Subject may have had a concussion.") - if(ishuman(M)) - var/mob/living/carbon/human/H = M - var/ldamage = H.return_liver_damage() - if(ldamage > 10) - to_chat(user, "\t[ldamage > 45 ? "severe" : "minor"] liver damage detected.") - - // Body part damage report + // Organ damage report if(iscarbon(M) && mode == 1) var/mob/living/carbon/C = M var/list/damaged = C.get_damaged_bodyparts(1,1) diff --git a/code/modules/mob/living/carbon/carbon_defines.dm b/code/modules/mob/living/carbon/carbon_defines.dm index fec1422ff13..f447261dd5d 100644 --- a/code/modules/mob/living/carbon/carbon_defines.dm +++ b/code/modules/mob/living/carbon/carbon_defines.dm @@ -47,4 +47,4 @@ var/list/hand_bodyparts = list() //a collection of arms (or actually whatever the fug /bodyparts you monsters use to wreck my systems) var/icon_render_key = "" - var/static/list/limb_icon_cache = list() \ No newline at end of file + var/static/list/limb_icon_cache = list() diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 0f0c0e57ab0..ae866128e4d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -51,18 +51,6 @@ if(!(NOBLOOD in dna.species.species_traits)) internal_organs += new /obj/item/organ/heart - if(!(NOLIVER in dna.species.species_traits)) - if(dna.species.mutantliver) - internal_organs += new dna.species.mutantliver() - else - internal_organs += new /obj/item/organ/liver() - - if(!(NOSTOMACH in dna.species.species_traits)) - if(dna.species.mutantstomach) - internal_organs += new dna.species.mutantstomach() - else - internal_organs += new /obj/item/organ/stomach() - internal_organs += new dna.species.mutanteyes internal_organs += new dna.species.mutantears internal_organs += new dna.species.mutanttongue diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 15decb81841..ad860f1f20f 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -267,6 +267,13 @@ return min(1,thermal_protection) + +/mob/living/carbon/human/handle_chemicals_in_body() + if(reagents) + reagents.metabolize(src, can_overdose=1) + dna.species.handle_chemicals_in_body(src) + + /mob/living/carbon/human/handle_random_events() //Puke if toxloss is too high if(!stat) diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 70f7a809af0..3f66fc72c17 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -71,9 +71,6 @@ var/obj/item/mutanthands = null var/obj/item/organ/tongue/mutanttongue = /obj/item/organ/tongue - var/obj/item/organ/liver/mutantliver - var/obj/item/organ/stomach/mutantstomach - /////////// // PROCS // /////////// @@ -132,11 +129,6 @@ var/obj/item/organ/ears/ears = C.getorganslot("ears") var/obj/item/organ/tongue/tongue = C.getorganslot("tongue") - var/obj/item/organ/liver/liver = C.getorganslot("liver") - var/obj/item/organ/stomach/stomach = C.getorganslot("stomach") - - - if((NOBLOOD in species_traits) && heart) heart.Remove(C) qdel(heart) @@ -148,10 +140,6 @@ qdel(lungs) lungs = null - QDEL_NULL(liver) - - QDEL_NULL(stomach) - if(C.get_bodypart("head")) if(eyes) qdel(eyes) @@ -175,20 +163,6 @@ lungs = new() lungs.Insert(C) - if((!(NOLIVER in species_traits)) && (!liver)) - if(mutantliver) - liver = new mutantliver() - else - liver = new() - liver.Insert(C) - - if((!(NOSTOMACH in species_traits)) && (!stomach)) - if(mutantstomach) - stomach = new mutantstomach() - else - stomach = new() - stomach.Insert(C) - if((NOHUNGER in species_traits) && appendix) qdel(appendix) else if((!(NOHUNGER in species_traits)) && (!appendix)) @@ -853,10 +827,10 @@ //LIFE// //////// -/datum/species/proc/handle_digestion(mob/living/carbon/human/H) +/datum/species/proc/handle_chemicals_in_body(mob/living/carbon/human/H) //The fucking FAT mutation is the dumbest shit ever. It makes the code so difficult to work with - if(H.disabilities & FAT)//I share your pain, past coder. + if(H.disabilities & FAT) if(H.overeatduration < 100) to_chat(H, "You feel fit again!") H.disabilities &= ~FAT diff --git a/code/modules/mob/living/carbon/human/species_types/flypeople.dm b/code/modules/mob/living/carbon/human/species_types/flypeople.dm index 6331d15789f..e1b9f0b86c3 100644 --- a/code/modules/mob/living/carbon/human/species_types/flypeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/flypeople.dm @@ -3,8 +3,6 @@ id = "fly" say_mod = "buzzes" mutanttongue = /obj/item/organ/tongue/fly - mutantliver = /obj/item/organ/liver/fly - mutantstomach = /obj/item/organ/stomach/fly meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/fly /datum/species/fly/handle_chemicals(datum/reagent/chem, mob/living/carbon/human/H) diff --git a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm index 6ac2934ea42..664eabefcdd 100644 --- a/code/modules/mob/living/carbon/human/species_types/plasmamen.dm +++ b/code/modules/mob/living/carbon/human/species_types/plasmamen.dm @@ -7,8 +7,6 @@ species_traits = list(NOBLOOD,RESISTCOLD,RADIMMUNE,NOTRANSSTING,VIRUSIMMUNE,NOHUNGER) mutantlungs = /obj/item/organ/lungs/plasmaman mutanttongue = /obj/item/organ/tongue/bone/plasmaman - mutantliver = /obj/item/organ/liver/plasmaman - mutantstomach = /obj/item/organ/stomach/plasmaman dangerous_existence = 1 //So so much blacklisted = 1 //See above burnmod = 1.5 diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm index f44867a59d2..504dd0ff60c 100644 --- a/code/modules/mob/living/carbon/life.dm +++ b/code/modules/mob/living/carbon/life.dm @@ -22,9 +22,6 @@ //Updates the number of stored chemicals for powers handle_changeling() - if(stat != DEAD) - handle_liver() - if(stat != DEAD) return 1 @@ -281,6 +278,10 @@ radiation = max(radiation-3,0) adjustToxLoss(3) +/mob/living/carbon/handle_chemicals_in_body() + if(reagents) + reagents.metabolize(src) + /mob/living/carbon/handle_stomach() set waitfor = 0 @@ -385,42 +386,3 @@ if(360.15 to INFINITY) //360.15 is 310.15 + 50, the temperature where you start to feel effects. //We totally need a sweat system cause it totally makes sense...~ bodytemperature += min((body_temperature_difference / BODYTEMP_AUTORECOVERY_DIVISOR), -BODYTEMP_AUTORECOVERY_MINIMUM) //We're dealing with negative numbers -///////// -//LIVER// -///////// - -/mob/living/carbon/proc/handle_liver() - var/obj/item/organ/liver/liver = getorganslot("liver") - if(liver) - if(liver.damage >= 100) - liver.failing = TRUE - liver_failure() - else - liver.failing = FALSE - - if(((!(NOLIVER in dna.species.species_traits)) && (!liver))) - liver_failure() - -/mob/living/carbon/proc/undergoing_liver_failure() - var/obj/item/organ/liver/liver = getorganslot("liver") - if(liver && liver.failing) - return TRUE - -/mob/living/carbon/proc/return_liver_damage() - var/obj/item/organ/liver/liver = getorganslot("liver") - if(liver) - return liver.damage - -/mob/living/carbon/proc/applyLiverDamage(var/d) - var/obj/item/organ/liver/L = getorganslot("liver") - if(L) - L.damage += d - -/mob/living/carbon/proc/liver_failure() - if(reagents.get_reagent_amount("corazone"))//corazone is processed here an not in the liver because a failing liver can't metabolize reagents - reagents.remove_reagent("corazone", 1) //corazone slowly deletes itself. - return - adjustToxLoss(8) - if(prob(30)) - to_chat(src, "You feel confused and nauseous...")//actual symptoms of liver failure - diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index 74c8eea002e..303673ca02e 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -48,6 +48,10 @@ domutcheck() ..() +/mob/living/carbon/monkey/handle_chemicals_in_body() + if(reagents) + reagents.metabolize(src, can_overdose=1) + /mob/living/carbon/monkey/handle_breath_temperature(datum/gas_mixture/breath) if(abs(310.15 - breath.temperature) > 50) switch(breath.temperature) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 9e08e58f862..0250c6fb513 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -43,8 +43,6 @@ internal_organs += new /obj/item/organ/tongue internal_organs += new /obj/item/organ/eyes internal_organs += new /obj/item/organ/ears - internal_organs += new /obj/item/organ/liver - internal_organs += new /obj/item/organ/stomach ..() /mob/living/carbon/monkey/movement_delay() diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index 30210627d64..e0a1217363c 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -24,6 +24,9 @@ if(stat != DEAD) //Mutations and radiation handle_mutations_and_radiation() + if(stat != DEAD) + //Chemicals in the body + handle_chemicals_in_body() if(stat != DEAD) //Random events (vomiting etc) handle_random_events() @@ -57,6 +60,9 @@ radiation = 0 //so radiation don't accumulate in simple animals return +/mob/living/proc/handle_chemicals_in_body() + return + /mob/living/proc/handle_diginvis() if(!digitaldisguise) src.digitaldisguise = image(loc = src) diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm index 944e03190fe..85729df0222 100644 --- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm @@ -38,8 +38,6 @@ All effects don't start immediately, but rather get worse over time; the rate is var/mob/living/carbon/human/H = M if(H.drunkenness < volume * boozepwr * ALCOHOL_THRESHOLD_MODIFIER) H.drunkenness = max((H.drunkenness + (sqrt(volume) * boozepwr * ALCOHOL_RATE)), 0) //Volume, power, and server alcohol rate effect how quickly one gets drunk - var/obj/item/organ/liver/L = H.getorganslot("liver") - H.applyLiverDamage((max(sqrt(volume) * boozepwr * L.alcohol_tolerance, 0))/10) return ..() || . /datum/reagent/consumable/ethanol/reaction_obj(obj/O, reac_volume) diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm index 56922316f58..a59af94aee4 100644 --- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm @@ -686,7 +686,7 @@ taste_description = "dull toxin" /datum/reagent/medicine/oculine/on_mob_life(mob/living/M) - var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight") + var/obj/item/organ/eyes/eyes = M.getorganslot("eyes_sight") if (!eyes) return if(M.disabilities & BLIND) @@ -1129,7 +1129,7 @@ ..() /datum/reagent/medicine/corazone - // Heart attack code will not do damage if corazone is present + // Heart attack code will not do as damage if corazone is present // because it's SPACE MAGIC ASPIRIN name = "Corazone" id = "corazone" diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm index 9c19826fc58..726131d12ec 100644 --- a/code/modules/surgery/organs/heart.dm +++ b/code/modules/surgery/organs/heart.dm @@ -28,8 +28,9 @@ /obj/item/organ/heart/attack_self(mob/user) ..() if(!beating) - user.visible_message("[user] squeezes [src] to \ - make it beat again!","You squeeze [src] to make it beat again!") + visible_message("[user] squeezes [src] to \ + make it beat again!", "You squeeze \ + [src] to make it beat again!") Restart() addtimer(CALLBACK(src, .proc/stop_if_unowned), 80) diff --git a/code/modules/surgery/organs/liver.dm b/code/modules/surgery/organs/liver.dm deleted file mode 100755 index a1cdd40bfc4..00000000000 --- a/code/modules/surgery/organs/liver.dm +++ /dev/null @@ -1,66 +0,0 @@ -#define LIVER_DEFAULT_HEALTH 100 //amount of damage required for liver failure -#define LIVER_DEFAULT_TOX_TOLERANCE 3 //amount of toxins the liver can filter out -#define LIVER_DEFAULT_TOX_LETHALITY 0.5 //lower values lower how harmful toxins are to the liver - -/obj/item/organ/liver - name = "liver" - icon_state = "liver" - origin_tech = "biotech=3" - w_class = WEIGHT_CLASS_NORMAL - zone = "chest" - slot = "liver" - desc = "Pairing suggestion: chianti and fava beans." - var/damage = 0 //liver damage, 0 is no damage, damage=maxHealth causes liver failure - var/alcohol_tolerance = ALCOHOL_RATE//affects how much damage the liver takes from alcohol - var/failing //is this liver failing? - var/maxHealth = LIVER_DEFAULT_HEALTH - var/toxTolerance = LIVER_DEFAULT_TOX_TOLERANCE//maximum amount of toxins the liver can just shrug off - var/toxLethality = LIVER_DEFAULT_TOX_LETHALITY//affects how much damage toxins do to the liver - var/filterToxins = TRUE //whether to filter toxins - -/obj/item/organ/liver/on_life() - var/mob/living/carbon/C = owner - - //slowly heal liver damage - damage = max(0, damage - 0.1) - if(damage > maxHealth)//cap liver damage - damage = maxHealth - - if(istype(C)) - if(!failing)//can't process reagents with a failing liver - if(filterToxins) - //handle liver toxin filtration - var/toxamount - var/static/list/listOfToxinsInThisBitch = typesof(/datum/reagent/toxin) - for(var/datum/reagent/toxin/toxin in listOfToxinsInThisBitch) - toxamount += C.reagents.get_reagent_amount(initial(toxin.id)) - - if(toxamount <= toxTolerance && toxamount > 0) - for(var/datum/reagent/toxin/toxin in listOfToxinsInThisBitch) - C.reagents.remove_reagent(initial(toxin.id), 1) - else if(toxamount > toxTolerance) - damage += toxamount*toxLethality - - - //metabolize reagents - C.reagents.metabolize(C, can_overdose=TRUE) - - if(damage > 10 && prob(damage/3))//the higher the damage the higher the probability - to_chat(C, "You feel [pick("nauseous", "dull pain in your lower body", "confused")].") - -/obj/item/organ/liver/prepare_eat() - var/obj/S = ..() - S.reagents.add_reagent("iron", 5) - return S - -/obj/item/organ/liver/fly - name = "insectoid liver" - icon_state = "liver-x" //xenomorph liver? It's just a black liver so it fits. - desc = "A mutant liver designed to handle the unique diet of a flyperson." - alcohol_tolerance = 0.007 //flies eat vomit, so a lower alcohol tolerance is perfect! - -/obj/item/organ/liver/plasmaman - name = "reagent processing crystal" - icon_state = "pliver" - desc = "A large crystal that is somehow capable of metabolizing chemicals, these are found in plasmamen." - diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index 12fdadaeb1a..e27337a813e 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -113,26 +113,6 @@ breathes = FALSE if(NOBLOOD in dna.species.species_traits) blooded = FALSE - var/has_liver = (!(NOLIVER in dna.species.species_traits)) - var/has_stomach = (!(NOSTOMACH in dna.species.species_traits)) - - if(has_liver && !getorganslot("liver")) - var/obj/item/organ/liver/LI - - if(dna.species.mutantliver) - LI = new dna.species.mutantliver() - else - LI = new() - LI.Insert(src) - - if(has_stomach && !getorganslot("stomach")) - var/obj/item/organ/stomach/S - - if(dna.species.mutantstomach) - S = new dna.species.mutantstomach() - else - S = new() - S.Insert(src) if(breathes && !getorganslot("lungs")) var/obj/item/organ/lungs/L = new() diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm deleted file mode 100755 index 74bc7821b0a..00000000000 --- a/code/modules/surgery/organs/stomach.dm +++ /dev/null @@ -1,25 +0,0 @@ -/obj/item/organ/stomach - name = "stomach" - icon_state = "stomach" - origin_tech = "biotech=4" - w_class = WEIGHT_CLASS_NORMAL - zone = "chest" - slot = "stomach" - attack_verb = list("gored", "squished", "slapped", "digested") - desc = "Onaka ga suite imasu." - -/obj/item/organ/stomach/on_life() - var/mob/living/carbon/human/H = owner - - if(istype(H)) - H.dna.species.handle_digestion(H) - -/obj/item/organ/stomach/fly - name = "insectoid stomach" - icon_state = "stomach-x" //xenomorph liver? It's just a black liver so it fits. - desc = "A mutant stomach designed to handle the unique diet of a flyperson." - -/obj/item/organ/stomach/plasmaman - name = "digestive crystal" - icon_state = "pstomach" - desc = "A strange crystal that is responsible for metabolizing the unseen energy force that feeds plasmamen." diff --git a/tgstation.dme b/tgstation.dme index d977d57dc72..08a51574511 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -2111,10 +2111,8 @@ #include "code\modules\surgery\organs\eyes.dm" #include "code\modules\surgery\organs\heart.dm" #include "code\modules\surgery\organs\helpers.dm" -#include "code\modules\surgery\organs\liver.dm" #include "code\modules\surgery\organs\lungs.dm" #include "code\modules\surgery\organs\organ_internal.dm" -#include "code\modules\surgery\organs\stomach.dm" #include "code\modules\surgery\organs\tails.dm" #include "code\modules\surgery\organs\tongue.dm" #include "code\modules\surgery\organs\vocal_cords.dm"