Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)

Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com>
Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
Time-Green
2025-08-11 18:36:50 +02:00
committed by GitHub
co-authored by MrMelbert SmArtKar
parent fc240dc1d1
commit 43fc75facb
28 changed files with 527 additions and 30 deletions
+10
View File
@@ -68,6 +68,12 @@
var/failing_desc = "has decayed for too long, and has turned a sickly color. It probably won't work without repairs."
/// Assoc list of alternate zones where this can organ be slotted to organ slot for that zone
var/list/valid_zones = null
/// The cell line we can spawn on us
var/cell_line = null
/// The minimum cells we can spawn
var/cells_minimum = 0
/// The maximum cells we can spawn
var/cells_maximum = 0
// Players can look at prefs before atoms SS init, and without this
// they would not be able to see external organs, such as moth wings.
@@ -90,6 +96,10 @@ INITIALIZE_IMMEDIATE(/obj/item/organ)
if(bodypart_overlay)
setup_bodypart_overlay()
if(cell_line && (organ_flags & ORGAN_ORGANIC))
AddElement(/datum/element/swabable, cell_line, cell_line_amount = rand(cells_minimum, cells_maximum))
START_PROCESSING(SSobj, src)
/obj/item/organ/Destroy()
@@ -21,6 +21,10 @@
// Love is stored in the heart.
food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/love = 2.5)
cell_line = CELL_LINE_ORGAN_HEART
cells_minimum = 1
cells_maximum = 2
// Heart attack code is in code/modules/mob/living/carbon/human/life.dm
/// Whether the heart is currently beating.
@@ -335,3 +339,69 @@
beat_noise = "the power of the podperson" // makes sense
foodtype_flags = PODPERSON_ORGAN_FOODTYPES
color = COLOR_LIME
/// An improved version of the organic heart, with more health and more "keeping you alive" potential
/obj/item/organ/heart/evolved
name = "evolved heart"
desc = "It beats ever strong."
icon_state = "heart-evolved-on"
base_icon_state = "heart-evolved"
maxHealth = STANDARD_ORGAN_THRESHOLD * 1.2
/// Chance to heal per on_life
var/healing_probability = 10
/// Base healing we receive per tick at 0 damage and for standard versions
var/base_healing = 1
/obj/item/organ/heart/evolved/on_life(seconds_per_tick, times_fired)
. = ..()
if(prob(healing_probability * seconds_per_tick))
var/damage_to_heal = base_healing * ((maxHealth - damage) / initial(maxHealth)) * seconds_per_tick
owner.heal_overall_damage(damage_to_heal, damage_to_heal, required_bodytype = BODYTYPE_ORGANIC)
if(owner.stat == HARD_CRIT && !owner.has_reagent(/datum/reagent/medicine/atropine, 5))
owner.reagents.add_reagent(/datum/reagent/medicine/atropine, 1 * seconds_per_tick)
/// A weaker evolved heart, but can block magic in exchange for our organs health!
/obj/item/organ/heart/evolved/sacred
name = "sacred heart"
desc = "Your foul magics stand no chance against the power of LOVE!!!"
icon_state = "heart-sacred-on"
base_icon_state = "heart-sacred"
healing_probability = 5
base_healing = 0.5
// How much damage each magic block deals to us
var/damage_per_block = 50
/obj/item/organ/heart/evolved/sacred/on_life(seconds_per_tick, times_fired)
. = ..()
if(IS_CULTIST(owner))
owner.reagents.add_reagent(/datum/reagent/water/holywater, 5 * seconds_per_tick)
/obj/item/organ/heart/evolved/sacred/on_mob_insert(mob/living/carbon/receiver, special, movement_flags)
. = ..()
receiver.AddComponent(/datum/component/anti_magic, block_magic = CALLBACK(src, PROC_REF(on_blocked)), check_blocking = CALLBACK(src, PROC_REF(check_block)))
/obj/item/organ/heart/evolved/sacred/on_mob_remove(mob/living/carbon/organ_owner, special, movement_flags)
. = ..()
qdel(organ_owner.GetComponent(/datum/component/anti_magic))
/// When we blocked damage, do PAIN on us
/obj/item/organ/heart/evolved/sacred/proc/on_blocked()
apply_organ_damage(damage_per_block)
owner.vomit(VOMIT_CATEGORY_BLOOD)
playsound(owner, 'sound/effects/health/slowbeat.ogg', 80)
/// We don't block magic if it would kill our heart
/obj/item/organ/heart/evolved/sacred/proc/check_block()
if(maxHealth - damage <= damage_per_block)
return FALSE
return TRUE
@@ -18,6 +18,10 @@
food_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue = 5, /datum/reagent/iron = 5)
grind_results = list(/datum/reagent/consumable/nutriment/peptides = 5)
cell_line = CELL_LINE_ORGAN_LIVER
cells_minimum = 1
cells_maximum = 2
/// Affects how much damage the liver takes from alcohol
var/alcohol_tolerance = ALCOHOL_RATE
/// The maximum volume of toxins the liver will ignore
@@ -328,6 +332,60 @@
organ_owner.reagents.remove_reagent(chem.type, REAGENTS_METABOLISM * seconds_per_tick)
return COMSIG_MOB_STOP_REAGENT_TICK
/obj/item/organ/liver/evolved
name = "evolved liver"
desc = "A more robust liver, better at everything."
icon_state = "evolved-liver"
alcohol_tolerance = ALCOHOL_RATE * 0.5
maxHealth = 1.2 * STANDARD_ORGAN_THRESHOLD
toxTolerance = 6 //can shrug off up to 6u of toxins
liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE
/obj/item/organ/liver/bloody
name = "leaky liver"
desc = "An extra spongy liver, only slightly better than a normal liver, but with an increased ability to replenish blood."
icon_state = "leaky-liver"
maxHealth = 1.1 * STANDARD_ORGAN_THRESHOLD
alcohol_tolerance = ALCOHOL_RATE * 0.8
toxTolerance = LIVER_DEFAULT_TOX_TOLERANCE + 1
liver_resistance = 1.1 * LIVER_DEFAULT_TOX_RESISTANCE
/obj/item/organ/liver/bloody/on_life(seconds_per_tick, times_fired)
. = ..()
if(owner.blood_volume < BLOOD_VOLUME_NORMAL)
owner.blood_volume += 4 * seconds_per_tick
/// Convert all non-alcoholic drinks into alcohol
/obj/item/organ/liver/distillery
name = "alcoholics delight"
desc = "The perfect liver, distilling non-alcoholic reagents into alcohol whenever possible."
icon_state = "liver-distillery"
organ_traits = list(TRAIT_ALCOHOL_TOLERANCE)
alcohol_tolerance = ALCOHOL_RATE * 0.1
/// Volume that is converted per second
var/ethanol_conversion = 0.2
/// What to convert stuff into
var/convert_into = /datum/reagent/consumable/ethanol
/obj/item/organ/liver/distillery/on_life(seconds_per_tick, times_fired)
. = ..()
for(var/datum/reagent/reagent as anything in owner.reagents.reagent_list)
// Already alcohol
if(istype(reagent, convert_into))
continue
owner.reagents.convert_reagent(reagent.type, convert_into, ethanol_conversion)
#undef LIVER_DEFAULT_TOX_TOLERANCE
#undef LIVER_DEFAULT_TOX_RESISTANCE
#undef LIVER_FAILURE_STAGE_SECONDS
@@ -18,6 +18,10 @@
low_threshold_cleared = span_info("You can breathe normally again.")
high_threshold_cleared = span_info("The constriction around your chest loosens as your breathing calms down.")
cell_line = CELL_LINE_ORGAN_LUNGS
cells_minimum = 1
cells_maximum = 2
var/failed = FALSE
var/operated = FALSE //whether we can still have our damages fixed through surgery
@@ -1077,6 +1081,17 @@
foodtype_flags = PODPERSON_ORGAN_FOODTYPES
color = COLOR_LIME
/obj/item/organ/lungs/evolved
name = "evolved lungs"
desc = "A pair of lungs, with an organic filtering system and a stronger musculature."
icon_state = "lungs-evolved"
safe_plasma_max = 8
safe_co2_max = 8
maxHealth = 1.2 * STANDARD_ORGAN_THRESHOLD
safe_oxygen_min = 8
#undef BREATH_RELATIONSHIP_INITIAL_GAS
#undef BREATH_RELATIONSHIP_CONVERT
#undef BREATH_RELATIONSHIP_MULTIPLIER
@@ -24,6 +24,10 @@
//This is a reagent user and needs more then the 10u from edible component
reagent_vol = 1000
cell_line = CELL_LINE_ORGAN_STOMACH
cells_minimum = 1
cells_maximum = 2
///The rate that disgust decays
var/disgust_metabolism = 1
@@ -565,4 +569,13 @@
movement_type = PHASING
organ_flags = parent_type::organ_flags | ORGAN_GHOST
/obj/item/organ/stomach/evolved
name = "evolved stomach"
desc = "It can draw nutrients from your food even harder!"
icon_state = "stomach-evolved"
maxHealth = 1.2 * STANDARD_ORGAN_THRESHOLD
disgust_metabolism = 2.5
metabolism_efficiency = 0.08
#undef STOMACH_METABOLISM_CONSTANT