diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm index 816e572be4f..96e670cbd63 100644 --- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm +++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm @@ -5,6 +5,7 @@ attack_sound = 'sound/weapons/etherealhit.ogg' miss_sound = 'sound/weapons/etherealmiss.ogg' meat = /obj/item/food/meat/slab/human/mutant/ethereal + mutantlungs = /obj/item/organ/lungs/ethereal mutantstomach = /obj/item/organ/stomach/ethereal mutanttongue = /obj/item/organ/tongue/ethereal mutantheart = /obj/item/organ/heart/ethereal diff --git a/code/modules/surgery/organs/lungs.dm b/code/modules/surgery/organs/lungs.dm index f8b614360df..99887a3baf2 100644 --- a/code/modules/surgery/organs/lungs.dm +++ b/code/modules/surgery/organs/lungs.dm @@ -122,6 +122,10 @@ //Vars for n2o and healium induced euphorias. var/n2o_euphoria = EUPHORIA_LAST_FLAG var/healium_euphoria = EUPHORIA_LAST_FLAG + + //Handle subtypes' breath processing + handle_gas_override(breather,breath_gases, gas_breathed) + //-- OXY --// //Too much oxygen! //Yes, some species may not like it. @@ -427,6 +431,9 @@ return TRUE +///override this for breath handling unique to lung subtypes, breath_gas is the list of gas in the breath while gas breathed is just what is being added or removed from that list, just as they are when this is called in check_breath() +/obj/item/organ/lungs/proc/handle_gas_override(mob/living/carbon/human/breather, list/breath_gas, gas_breathed) + return /obj/item/organ/lungs/proc/handle_too_little_breath(mob/living/carbon/human/suffocator = null, breath_pp = 0, safe_breath_min = 0, true_pp = 0) . = 0 @@ -609,3 +616,19 @@ suffers_miasma = FALSE #undef GAS_TOLERANCE + +/obj/item/organ/lungs/ethereal + name = "aeration reticulum" + desc = "These exotic lungs seem crunchier than most." + icon_state = "lungs_ethereal" + heat_level_1_threshold = FIRE_MINIMUM_TEMPERATURE_TO_SPREAD // 150C or 433k, in line with ethereal max safe body temperature + heat_level_2_threshold = 473 + heat_level_3_threshold = 1073 + + +/obj/item/organ/lungs/ethereal/handle_gas_override(mob/living/carbon/human/breather, list/breath_gases, gas_breathed) + // H2O electrolysis + gas_breathed = breath_gases[/datum/gas/water_vapor][MOLES] + breath_gases[/datum/gas/oxygen][MOLES] += gas_breathed + breath_gases[/datum/gas/hydrogen][MOLES] += gas_breathed*2 + breath_gases[/datum/gas/water_vapor][MOLES] -= gas_breathed diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index e1a163b930c..a7eea046908 100755 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ