[MIRROR] More surgery tweaks and fixes (#12054)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-11-28 00:07:28 -05:00
committed by GitHub
co-authored by Cameron Lennox
parent 77ec7cd6e4
commit f72988f992
22 changed files with 200 additions and 185 deletions
+10 -7
View File
@@ -186,20 +186,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
@@ -736,13 +736,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 = 45 //ChompEdit matching our changes to broken bones for less squishy people.
encased = 0
encased = FALSE
spread_dam = 1
/*
+3 -3
View File
@@ -12,7 +12,7 @@
min_broken_damage = 60 // CHOMPEdit: Increase all min_broken_damage (Ribs should take more force to break)
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 = 50 // CHOMPEdit: Increase all min_broken_damage
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 = 50 // CHOMPEdit: Increase all min_broken_damage
w_class = ITEMSIZE_NORMAL
body_part = HEAD
vital = 1
vital = TRUE
parent_organ = BP_TORSO
joint = "jaw"
amputation_point = "neck"