Various Surgery & Medical fixes, QoL, and adjustments (#18718)

* bunch of medical adjustments

* or so i thought

* De-death surgery

* Update carbon.dm

* Update mob_grab_specials.dm

* yeh

* Palpation

* internal bleeding

* Update life.dm

* duration increase

* adjust these

* Fixes a bug with defibs that I caused

When I reworked get_crit_point, it caused defibs to DEAL oxyloss instead of HEALING it, like it has been doing for the past 8 years. This fixes it.

* fixcees this

* fixes syringe stabbing

* Converts these to managed global lists

* gets rid of disabilities

* Change injury check to use do_after with delay

* lungfix

* actually remove the necrosis

* Fixes brain surgery

* fix language bug

* Update brain.dm

* ghetto surgery adjustments

Buffs some ghetto surgery
Makes some injuries sustained less gnarly if you fail with a ghetto tool.
Some mild typo fixes.
This commit is contained in:
Cameron Lennox
2025-11-08 18:24:55 -05:00
committed by GitHub
parent 0a4cae3217
commit 4899465a23
36 changed files with 495 additions and 340 deletions
+4 -2
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()
-2
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)
+12 -4
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)
+1
View File
@@ -81,6 +81,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