Medical Adjustments (#17455)

* Defib and tank

* Defib, CPR, and stabilizer changes

qol: Defib now informs you WHY it's failing, so you can properly fix the problem.
balance: CPR can now REVIVE people if their HP is below a threshold with a 10% chance per CPR usage.
balance: CPR will cause the recipient to metabolize reagents.
balance: CPR now has a small chance of causing brute damage and rib fractures to the chest.
balance: Patient Stabilizer will cause the patient to metabolize reagents if dead.

* Broken bone fix

A fracture has a random chance of shifting around inside the first time you break it.

* shadekin runtime fix

* tgui

Adds two new TGUI states - living and living_adjacent
Fixes tram to allow mobs (and robots)

* Vital Organ chance fix

* flip flop
This commit is contained in:
Cameron Lennox
2025-04-07 04:58:56 -04:00
committed by GitHub
parent ffe4129bc8
commit d4e4c8268c
15 changed files with 195 additions and 47 deletions
+18 -1
View File
@@ -3,6 +3,8 @@
* Modifiers applied by Medical sources.
*/
//See blood.dm. This makes your blood volume & raw blood volume set to 100%.
//This means (as long as you have blood) you will not suffocate. Even with no heart or lungs.
/datum/modifier/bloodpump
name = "external blood pumping"
desc = "Your blood flows thanks to the wonderful power of science."
@@ -28,15 +30,30 @@
pulse_set_level = PULSE_SLOW
/datum/modifier/bloodpump/corpse/check_if_valid()
/datum/modifier/bloodpump_corpse/check_if_valid()
..()
if(holder.stat != DEAD)
src.expire()
//This INTENTIONALLY only happens on DEAD people. Alive people are metabolizing already (and can be healed quicker through things like brute packs) meaning they don't need this extra assistance!
//Why does it not make you bleed out? Because we'll let medical have a few benefits that don't come with innate downsides. It takes 2 seconds to resleeve someone. It takes a good amount of time to repair a corpse. Let's make the latter more appealing.
/datum/modifier/bloodpump_corpse/tick()
var/i = 5 //It's a controlled machine. It pumps at a nice, steady rate.
while(i-- > 0)
holder.handle_chemicals_in_body() // Circulates chemicals throughout the body.
/*
* Modifiers caused by chemicals or organs specifically.
*/
/datum/modifier/bloodpump_corpse/cpr
desc = "Your blood flows thanks to the wonderful power of CPR."
pulse_set_level = PULSE_NONE //No pulse. You're acting as their pulse.
/datum/modifier/bloodpump_corpse/tick()
var/i = rand(4,7) //CPR isn't perfect. You get some randomization in there.
while(i-- > 0)
holder.handle_chemicals_in_body() // Circulates chemicals throughout the body.
/datum/modifier/cryogelled
name = "cryogelled"
desc = "Your body begins to freeze."