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"