mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-23 04:51:32 +01:00
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:
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user