mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-11 10:11:09 +00:00
About The Pull Request title. Also renames INORGANIC to MINERAL and removes it from simplemobs (never used for simplemobs) where it doesn't fit. Doesn't make sense to have both ORGANIC and INORGANIC as a flag. Why It's Good For The Game There's no reason to use a list for this. Changelog cl code: Changed mob biotypes from lists to flags. /cl
61 lines
1.6 KiB
Plaintext
61 lines
1.6 KiB
Plaintext
/datum/component/rot
|
|
var/amount = 1
|
|
|
|
/datum/component/rot/Initialize(new_amount)
|
|
if(!isatom(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
|
|
if(new_amount)
|
|
amount = new_amount
|
|
|
|
START_PROCESSING(SSprocessing, src)
|
|
|
|
/datum/component/rot/process()
|
|
var/atom/A = parent
|
|
|
|
var/turf/open/T = get_turf(A)
|
|
if(!istype(T) || T.return_air().return_pressure() > (WARNING_HIGH_PRESSURE - 10))
|
|
return
|
|
|
|
var/datum/gas_mixture/stank = new
|
|
ADD_GAS(/datum/gas/miasma, stank.gases)
|
|
stank.gases[/datum/gas/miasma][MOLES] = amount
|
|
stank.temperature = BODYTEMP_NORMAL // otherwise we have gas below 2.7K which will break our lag generator
|
|
T.assume_air(stank)
|
|
T.air_update_turf()
|
|
|
|
/datum/component/rot/corpse
|
|
amount = MIASMA_CORPSE_MOLES
|
|
|
|
/datum/component/rot/corpse/Initialize()
|
|
if(!iscarbon(parent))
|
|
return COMPONENT_INCOMPATIBLE
|
|
. = ..()
|
|
|
|
/datum/component/rot/corpse/process()
|
|
var/mob/living/carbon/C = parent
|
|
if(C.stat != DEAD)
|
|
qdel(src)
|
|
return
|
|
|
|
// Wait a bit before decaying
|
|
if(world.time - C.timeofdeath < 2 MINUTES)
|
|
return
|
|
|
|
// Properly stored corpses shouldn't create miasma
|
|
if(istype(C.loc, /obj/structure/closet/crate/coffin)|| istype(C.loc, /obj/structure/closet/body_bag) || istype(C.loc, /obj/structure/bodycontainer))
|
|
return
|
|
|
|
// No decay if formaldehyde in corpse or when the corpse is charred
|
|
if(C.reagents.has_reagent(/datum/reagent/toxin/formaldehyde, 15) || HAS_TRAIT(C, TRAIT_HUSK))
|
|
return
|
|
|
|
// Also no decay if corpse chilled or not organic/undead
|
|
if(C.bodytemperature <= T0C-10 || !(C.mob_biotypes & (MOB_ORGANIC|MOB_UNDEAD)))
|
|
return
|
|
|
|
..()
|
|
|
|
/datum/component/rot/gibs
|
|
amount = MIASMA_GIBS_MOLES
|