[MIRROR] Various Surgery & Medical fixes, QoL, and adjustments (#11949)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-11-08 21:23:20 -07:00
committed by GitHub
parent 56b99cc173
commit a6dcc16233
35 changed files with 500 additions and 216 deletions

View File

@@ -120,7 +120,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
brainmob.add_modifier(M.type)
if(H.mind)
H.mind.transfer_to(brainmob)
H.mind.transfer_to(brainmob) //mAYBE MAKE THIS FORCE....
brainmob.languages = H.languages
@@ -146,7 +146,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
var/obj/item/organ/internal/brain/B = src
if(istype(B) && owner)
if(istype(owner, /mob/living/carbon) && owner.ckey)
if(istype(owner, /mob/living/carbon) && (owner.ckey || owner.original_player))
B.transfer_identity(owner)
..()
@@ -159,8 +159,10 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
if(brainmob)
if(brainmob.mind)
brainmob.mind.transfer_to(target)
target.languages = brainmob.languages
else
target.key = brainmob.key
target.languages = brainmob.languages
..()
/obj/item/organ/internal/brain/proc/get_control_efficiency()

View File

@@ -9,8 +9,6 @@
var/acidtype = REAGENT_ID_STOMACID // Incase you want some stomach organ with, say, polyacid instead, or sulphuric.
var/max_acid_volume = 30
var/deadly_hold = TRUE // Does the stomach do damage to mobs eaten by its owner? Xenos should probably have this FALSE.
/obj/item/organ/internal/stomach/Initialize(mapload)
. = ..()
if(reagents)

View File

@@ -212,12 +212,20 @@ var/list/organ_cache = list()
/// Infection damage
//If the organ is dead, for the sake of organs that may have died due to non-infection, we'll only do damage if they have at least L1 infection (built up below)
if((status & ORGAN_DEAD) && antibiotics < ANTIBIO_OD && germ_level >= INFECTION_LEVEL_ONE)
infection_damage = max(1, 1 + round((germ_level - INFECTION_LEVEL_THREE)/200,0.25)) //1 Tox plus a little based on germ level
//If the organ is dead, for the sake of organs that may have died due to non-infection, we'll only do damage if they have at least L2 infection (built up below)
//A dead organ is bad, so you start getting flooded with toxins faster.
if((status & ORGAN_DEAD) && antibiotics < ANTIBIO_OD && germ_level >= INFECTION_LEVEL_TWO)
infection_damage = CLAMP(round((germ_level - INFECTION_LEVEL_TWO)/1000), 0.25, 1) //Between 0.25 to 1 tox per tick.
//Ideally, we want them to either: A. Reach Medical or B. have their organ die. Dying to toxins is lame.
//With this math: Toxins goes up by 0.001 per 2 seconds, up to 0.1. This means 200 seconds to reach 0.1 toxins per tick (germ level is now 700).
//Limb death happens at germ level 1000. This means another 600 seconds to reach there if untreated.
//Your kidneys helps purge toxins if you have 10% or less of your maxhealth in toxins damage. This is RNG though. (See kidneys/handle_organ_proc_special)
//So you COULD get really lucky and keep healing your toxins away until your limb dies, or you could get unlucky die to toxins first.
//Nonetheless, this should give a much more reasonable window for treatment.
else if(germ_level > INFECTION_LEVEL_TWO && antibiotics < ANTIBIO_OD)
infection_damage = max(0.25, 0.25 + round((germ_level - INFECTION_LEVEL_TWO)/200,0.25))
infection_damage = CLAMP(round((germ_level - INFECTION_LEVEL_TWO)/1000), 0, 0.1)
if(infection_damage)
owner.adjustToxLoss(infection_damage)

View File

@@ -82,6 +82,7 @@
var/cavity = 0
var/burn_stage = 0 //Surgical repair stage for burn.
var/brute_stage = 0 //Surgical repair stage for brute.
var/remove_necrosis = 0 //Surgical stage for necrosis removal.
// HUD element variable, see organ_icon.dm get_damage_hud_image()
var/image/hud_damage_image