More surgery tweaks and fixes (#18823)

* Surgery Defines

Adds some defines to surgery to make it easier to track how 'open' someone is instead of magical numbers.

* Make frankensurgery less punishing

Makes frankensurgery less painful.

Resleeving is a thing and is MUCH easier to do.

Having brain surgery apply a permanent debuff to people just means that the 'ideal' thing is to always resleeve/clone. This gets rid of the debuff.

* Setting vital in a few places

* Makes infected wounds not kill in stomachs

Wounds still accumulate in stomachs, BUT the germ level of the external organ won't increase while being digested, meaning you won't get massive infections while doing a long-digestion scene.

It was done here instead of in handle_germ_effects() so you can't just eat someone with major infections and act as a statis stomach.

* Internal bleeding tweaks

Makes internal bleeding slower if you have the IB cure (myelamine)
Makes internal bleeding not get worse if you have the dermal equivalents of bicard+inaprovaline

* Update neck.dm

* Some more aggressive reform healing

Makes reform healing do some more healing to bring them back. Instead of healing just 6, heals a flat 25 now of brute, fire, clone, and toxins.

It then sees if you're 'below revival point' and if so, it gives you a much stronger heal to ENSURE you are brought back.

* forgor to check this in the .dmi

This is what happens when you have minitest selected and have your .dme ignored by default!

* Update blood.dm

* this comment is no longer relevent

We have LVADs now!

* Makes tourettes not trigger more if you have slow pulse

This was presumably meant to increase your chance of a tic if you have a higher pulse, not if you have a slower/more calm pulse.

* More edits

* Update generic.dm
This commit is contained in:
Cameron Lennox
2025-11-27 23:39:50 -05:00
committed by GitHub
parent 0fbb1b55ba
commit 9a2fa8b1cf
22 changed files with 211 additions and 196 deletions
+10 -7
View File
@@ -184,20 +184,23 @@ BLOOD_VOLUME_SURVIVE = 40
///Second, we process internal bleeding.
for(var/datum/wound/internal_bleeding/W in temp.wounds)
blood_loss_divisor = blood_loss_divisor+10 //IB is slower bloodloss than normal.
var/bicardose = reagents.get_reagent_amount(REAGENT_ID_BICARIDINE)
var/inaprovaline = reagents.get_reagent_amount(REAGENT_ID_INAPROVALINE)
var/bicardose
if(reagents.get_reagent_amount(REAGENT_ID_BICARIDINE) || reagents.get_reagent_amount(REAGENT_ID_BICARIDAZE))
bicardose = TRUE
var/inaprovaline
if(reagents.get_reagent_amount(REAGENT_ID_INAPROVALINE) || reagents.get_reagent_amount(REAGENT_ID_INAPROVALAZE))
inaprovaline = TRUE
var/myeldose = reagents.get_reagent_amount(REAGENT_ID_MYELAMINE)
if(!(W.can_autoheal() || (bicardose && inaprovaline) || myeldose)) //bicaridine and inaprovaline stop internal wounds from growing bigger with time, unless it is so small that it is already healing
W.open_wound(0.1)
if(prob(1))
custom_pain("You feel a stabbing pain in your [temp.name]!", 50)
if(CE_STABLE in chem_effects)
if((CE_STABLE in chem_effects) || myeldose)
blood_loss_divisor = max(blood_loss_divisor + 30, 1) //Inaprovaline is great on internal wounds.
if(temp.applied_pressure) //Putting pressure on the afflicted wound helps stop the arterial bleeding.
if(ishuman(temp.applied_pressure))
var/mob/living/carbon/human/H = temp.applied_pressure
H.bloody_hands(src, 0)
blood_loss_divisor += 30 //If you're putting pressure on that limb due to there being an external bleed there, you apply some pressure to the internal bleed as well.
blood_loss_divisor += 30
if(W.clamped)
blood_loss_divisor = blood_loss_divisor * 10 //We hemostatted the internal bleeding. Bloodloss is 10 times slower.
remove_blood(W.damage/blood_loss_divisor) //line should possibly be moved to handle_blood, so all the bleeding stuff is in one place. //Hi. 2025 here. Just did that. ~Diana
///Thirdly, we check to see if the limb is bleeding EXTERNALLY
+1 -2
View File
@@ -6,7 +6,7 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
desc = "A piece of juicy meat found in a person's head."
organ_tag = O_BRAIN
parent_organ = BP_HEAD
vital = 1
vital = TRUE
icon_state = "brain2"
force = 1.0
w_class = ITEMSIZE_SMALL
@@ -177,7 +177,6 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
parent_organ = BP_HEAD
icon = 'icons/mob/alien.dmi'
icon_state = "chitin"
vital = 1
can_assist = FALSE
/obj/item/organ/internal/brain/xeno
+1 -8
View File
@@ -48,14 +48,7 @@
parent_organ = BP_HEAD
icon_state = "brain_prosthetic"
organ_tag = "stack"
vital = 1
var/backup_time = 0
var/datum/mind/backup
/obj/item/organ/internal/stack/process()
if(owner && owner.stat != DEAD && !is_broken())
backup_time = world.time
if(owner.mind) backup = owner.mind
vital = TRUE
/obj/item/organ/internal/stack/vox/stack
name = "vox cortical stack"
+1 -1
View File
@@ -140,7 +140,7 @@ var/list/organ_cache = list()
STOP_PROCESSING(SSobj, src)
handle_organ_mod_special(TRUE)
if(owner && vital)
owner.can_defib = 0
owner.can_defib = FALSE
owner.death()
/obj/item/organ/proc/adjust_germ_level(var/amount) // Unless you're setting germ level directly to 0, use this proc instead
+4 -2
View File
@@ -737,13 +737,15 @@ Note that amputating the affected organ does in fact remove the infection from t
handle_germ_effects()
/obj/item/organ/external/proc/handle_germ_sync()
if(owner && isbelly(owner.loc)) //If we're in a belly, just skip infection spreading. This leads to extended vore scenes killing via infection.
return
var/antibiotics = owner.chem_effects[CE_ANTIBIOTIC]
for(var/datum/wound/W in wounds)
//Open wounds can become infected
if (owner.germ_level > W.germ_level && W.infection_check())
if(owner.germ_level > W.germ_level && W.infection_check())
W.germ_level++
if (antibiotics < ANTIBIO_NORM)
if(!antibiotics)
for(var/datum/wound/W in wounds)
//Infected wounds raise the organ's germ level
if (W.germ_level > germ_level)
+3 -3
View File
@@ -32,8 +32,8 @@
min_broken_damage = 50
w_class = ITEMSIZE_HUGE
body_part = UPPER_TORSO
vital = 1
cannot_amputate = 1
vital = TRUE
cannot_amputate = TRUE
parent_organ = null
gendered_icon = 1
@@ -242,5 +242,5 @@
amputation_point = "branch"
joint = "structural ligament"
dislocated = -1
vital = 0
vital = FALSE
slot_flags = SLOT_BELT
+2 -2
View File
@@ -4,7 +4,7 @@
icon_state = "scell"
organ_tag = O_CELL
parent_organ = BP_TORSO
vital = 1
vital = TRUE
var/defib_timer = 1 // This sits in the brain organ slot, but is not a brain.
/obj/item/organ/internal/cell/Initialize(mapload, internal)
@@ -34,7 +34,7 @@
name = "brain interface"
organ_tag = O_BRAIN
parent_organ = BP_HEAD
vital = 1
vital = TRUE
var/brain_type = /obj/item/mmi
var/obj/item/mmi/stored_mmi
robotic = ORGAN_ASSISTED
+3 -3
View File
@@ -51,10 +51,10 @@
/obj/item/organ/external/head/unbreakable/slime //They don't need this anymore.
nonsolid = 1
cannot_gib = 0
vital = 0
cannot_gib = FALSE
vital = FALSE
max_damage = 30
encased = 0
encased = FALSE
spread_dam = 1
/*
+3 -3
View File
@@ -12,7 +12,7 @@
min_broken_damage = 35
w_class = ITEMSIZE_HUGE
body_part = UPPER_TORSO
vital = 1
vital = TRUE
amputation_point = "spine"
joint = "neck"
dislocated = -1
@@ -62,7 +62,7 @@
min_broken_damage = 35
w_class = ITEMSIZE_LARGE
body_part = LOWER_TORSO
vital = 1
vital = TRUE
parent_organ = BP_TORSO
amputation_point = "lumbar"
joint = "hip"
@@ -275,7 +275,7 @@
min_broken_damage = 35
w_class = ITEMSIZE_NORMAL
body_part = HEAD
vital = 1
vital = TRUE
parent_organ = BP_TORSO
joint = "jaw"
amputation_point = "neck"