Nuke Limb Processing (#22814)

<img width="1549" height="857" alt="image"
src="https://github.com/user-attachments/assets/3830233d-0635-4942-b2aa-024651e6cffa"
/>

Limbs make up roughly half of the "Per additional player" processing
overhead, while Organs make up most of the other half.
Not every organ is an easy candidate for "Event-only processing", but
external limbs are significantly easier to do so.

So this PR makes it so that External Limbs no longer require Processing
unless an event happens that would justify them requiring processing.
Which SIGNIFICANTLY reduces the overall additional cost to the
Processing subsystem per player that joins the server.

Oh and I also made the Appendix and Kidneys not require constant
processing. The Appendix will only process if it is hit by an
Appendicitis event, and the Kidneys will only process if they are either
damaged, or you get poisoned.
This commit is contained in:
VMSolidus
2026-07-12 20:45:24 +00:00
committed by GitHub
parent 48d8a06d1c
commit e117ef3f87
44 changed files with 310 additions and 216 deletions
+5 -5
View File
@@ -37,13 +37,13 @@
to_chat(user, SPAN_NOTICE("You start by flowing your regenerative psionic energy through their vital organs..."))
for(var/obj/item/organ/O in H.internal_organs)
if(do_mob(user, H, 15 SECONDS))
if(O.damage > 0) // Fix internal damage
if(O.get_damage() > 0) // Fix internal damage
to_chat(user, SPAN_NOTICE("You mend their [O]'s bruising."))
O.heal_damage(O.damage)
O.heal_damage(O.get_damage())
if((O.status & ORGAN_BROKEN))
to_chat(user, SPAN_NOTICE("You restart their [O]'s functionality."))
O.status &= ~ORGAN_BROKEN
if(O.damage <= 5 && O.organ_tag == BP_EYES) // Fix eyes
if(O.get_damage() <= 5 && O.organ_tag == BP_EYES) // Fix eyes
H.sdisabilities &= ~BLIND
to_chat(user, SPAN_NOTICE("You continue by flowing your regenerative psionic energy through their limbs..."))
@@ -52,13 +52,13 @@
continue
if(do_mob(user, H, 15 SECONDS))
to_chat(user, SPAN_NOTICE("You mend their [O]'s bruising."))
O.heal_damage(0, O.damage, internal = TRUE, robo_repair = FALSE)
O.heal_damage(0, O.get_damage(), internal = TRUE, robo_repair = FALSE)
to_chat(user, SPAN_NOTICE("Finally, you begin flowing your regenerative psionic energy through their broken limbs..."))
for(var/obj/item/organ/E in H.bad_external_organs) // Fix bones
var/obj/item/organ/external/affected = E
if(do_mob(user, H, 10 SECONDS))
if((affected.damage < affected.min_broken_damage * GLOB.config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
if((affected.get_damage() < affected.min_broken_damage * GLOB.config.organ_health_multiplier) && (affected.status & ORGAN_BROKEN))
to_chat(user, SPAN_NOTICE("You mend their [affected] together."))
affected.status &= ~ORGAN_BROKEN
if((affected.status & ORGAN_ARTERY_CUT))
+1 -1
View File
@@ -67,7 +67,7 @@
to_chat(user, SPAN_WARNING("You notice some irregularity in the psionic flow through their [I]."))
if(I.is_broken())
to_chat(user, SPAN_WARNING("Your psionic flow through their [I] is <b>highly irregular</b>."))
if(I.damage)
if(I.get_damage())
to_chat(user, SPAN_WARNING("You are sure there is some damage in their [I]."))
var/pulse = target.get_pulse()
to_chat(user, SPAN_NOTICE("Their pulse is [pulse]."))
@@ -86,7 +86,7 @@
var/mob/living/carbon/human/pop = owner
if(pop.should_have_organ(BP_BRAIN))
var/obj/item/organ/internal/brain/sponge = pop.internal_organs_by_name[BP_BRAIN]
if(sponge && sponge.damage >= sponge.max_damage)
if(sponge && sponge.get_damage() >= sponge.max_damage)
var/obj/item/organ/external/affecting = pop.get_organ(sponge.parent_organ)
if(affecting && !affecting.is_stump())
affecting.droplimb(0, DROPLIMB_BLUNT)