mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 10:43:20 +00:00
170 lines
4.1 KiB
Plaintext
170 lines
4.1 KiB
Plaintext
#define PROCESS_ACCURACY 10
|
|
|
|
/****************************************************
|
|
INTERNAL ORGANS DEFINES
|
|
****************************************************/
|
|
|
|
|
|
// Brain is defined in brain_item.dm.
|
|
/obj/item/organ/heart
|
|
name = "heart"
|
|
icon_state = "heart-on"
|
|
organ_tag = "heart"
|
|
parent_organ = "chest"
|
|
dead_icon = "heart-off"
|
|
|
|
/obj/item/organ/lungs
|
|
name = "lungs"
|
|
icon_state = "lungs"
|
|
gender = PLURAL
|
|
organ_tag = "lungs"
|
|
parent_organ = "chest"
|
|
|
|
/obj/item/organ/lungs/process()
|
|
..()
|
|
|
|
if(!owner)
|
|
return
|
|
|
|
if (germ_level > INFECTION_LEVEL_ONE)
|
|
if(prob(5))
|
|
owner.emote("cough") //respitory tract infection
|
|
|
|
if(is_bruised())
|
|
if(prob(2))
|
|
spawn owner.emote("me", 1, "coughs up blood!")
|
|
owner.drip(10)
|
|
if(prob(4))
|
|
spawn owner.emote("me", 1, "gasps for air!")
|
|
owner.losebreath += 15
|
|
|
|
/obj/item/organ/kidneys
|
|
name = "kidneys"
|
|
icon_state = "kidneys"
|
|
gender = PLURAL
|
|
organ_tag = "kidneys"
|
|
parent_organ = "groin"
|
|
|
|
/obj/item/organ/kidneys/process()
|
|
|
|
..()
|
|
|
|
if(!owner)
|
|
return
|
|
|
|
// Coffee is really bad for you with busted kidneys.
|
|
// This should probably be expanded in some way, but fucked if I know
|
|
// what else kidneys can process in our reagent list.
|
|
var/datum/reagent/coffee = locate(/datum/reagent/drink/coffee) in owner.reagents.reagent_list
|
|
if(coffee)
|
|
if(is_bruised())
|
|
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY)
|
|
else if(is_broken())
|
|
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY)
|
|
|
|
/obj/item/organ/eyes
|
|
name = "eyeballs"
|
|
icon_state = "eyes"
|
|
gender = PLURAL
|
|
organ_tag = "eyes"
|
|
parent_organ = "head"
|
|
var/list/eye_colour = list(0,0,0)
|
|
|
|
/obj/item/organ/eyes/proc/update_colour()
|
|
if(!owner)
|
|
return
|
|
eye_colour = list(
|
|
owner.r_eyes ? owner.r_eyes : 0,
|
|
owner.g_eyes ? owner.g_eyes : 0,
|
|
owner.b_eyes ? owner.b_eyes : 0
|
|
)
|
|
|
|
/obj/item/organ/eyes/process() //Eye damage replaces the old eye_stat var.
|
|
..()
|
|
if(!owner)
|
|
return
|
|
if(is_bruised())
|
|
owner.eye_blurry = 20
|
|
if(is_broken())
|
|
owner.eye_blind = 20
|
|
|
|
/obj/item/organ/liver
|
|
name = "liver"
|
|
icon_state = "liver"
|
|
organ_tag = "liver"
|
|
parent_organ = "groin"
|
|
|
|
/obj/item/organ/liver/process()
|
|
|
|
..()
|
|
|
|
if(!owner)
|
|
return
|
|
|
|
if (germ_level > INFECTION_LEVEL_ONE)
|
|
if(prob(1))
|
|
owner << "\red Your skin itches."
|
|
if (germ_level > INFECTION_LEVEL_TWO)
|
|
if(prob(1))
|
|
spawn owner.vomit()
|
|
|
|
if(owner.life_tick % PROCESS_ACCURACY == 0)
|
|
|
|
//High toxins levels are dangerous
|
|
if(owner.getToxLoss() >= 60 && !owner.reagents.has_reagent("anti_toxin"))
|
|
//Healthy liver suffers on its own
|
|
if (src.damage < min_broken_damage)
|
|
src.damage += 0.2 * PROCESS_ACCURACY
|
|
//Damaged one shares the fun
|
|
else
|
|
var/obj/item/organ/O = pick(owner.internal_organs)
|
|
if(O)
|
|
O.damage += 0.2 * PROCESS_ACCURACY
|
|
|
|
//Detox can heal small amounts of damage
|
|
if (src.damage && src.damage < src.min_bruised_damage && owner.reagents.has_reagent("anti_toxin"))
|
|
src.damage -= 0.2 * PROCESS_ACCURACY
|
|
|
|
if(src.damage < 0)
|
|
src.damage = 0
|
|
|
|
// Get the effectiveness of the liver.
|
|
var/filter_effect = 3
|
|
if(is_bruised())
|
|
filter_effect -= 1
|
|
if(is_broken())
|
|
filter_effect -= 2
|
|
|
|
// Do some reagent filtering/processing.
|
|
for(var/datum/reagent/R in owner.reagents.reagent_list)
|
|
// Damaged liver means some chemicals are very dangerous
|
|
// The liver is also responsible for clearing out alcohol and toxins.
|
|
// Ethanol and all drinks are bad.K
|
|
if(istype(R, /datum/reagent/ethanol))
|
|
if(filter_effect < 3)
|
|
owner.adjustToxLoss(0.1 * PROCESS_ACCURACY)
|
|
owner.reagents.remove_reagent(R.id, R.custom_metabolism*filter_effect)
|
|
// Can't cope with toxins at all
|
|
else if(istype(R, /datum/reagent/toxin))
|
|
if(filter_effect < 3)
|
|
owner.adjustToxLoss(0.3 * PROCESS_ACCURACY)
|
|
owner.reagents.remove_reagent(R.id, ALCOHOL_METABOLISM*filter_effect)
|
|
|
|
/obj/item/organ/appendix
|
|
name = "appendix"
|
|
icon_state = "appendix"
|
|
parent_organ = "groin"
|
|
organ_tag = "appendix"
|
|
|
|
/obj/item/organ/appendix/removed()
|
|
|
|
if(owner)
|
|
var/inflamed = 0
|
|
for(var/datum/disease/appendicitis/appendicitis in owner.viruses)
|
|
inflamed = 1
|
|
appendicitis.cure()
|
|
owner.resistances += appendicitis
|
|
if(inflamed)
|
|
icon_state = "appendixinflamed"
|
|
name = "inflamed appendix"
|
|
..() |