Bugfix pile (#22823)

Fixes several runtimes from the past few weeks, some additional material
repath regressions, and the fact that if I shoot you with a stream of
ionized deuterium particles, it doesn't riddle you with cancer.

changes:
- bugfix: "Fixes emergency shields runtiming when hit by thrown
objects."
  - bugfix: "Fixes several stale global list runtimes."
- bugfix: "Fixes several health percentage checks that could use unset
initial health values."
  - bugfix: "Fixes additional materials regressions in INDRA code."
  - bugfix: "Fixes invalid fuel injector depletion math."
- bugfix: "Makes accelerated particles apply radiation damage to living
mobs they pass through."
This commit is contained in:
Batrachophreno
2026-07-12 18:06:28 +00:00
committed by GitHub
parent f39fd55441
commit 1c8c0c2221
178 changed files with 1040 additions and 794 deletions
@@ -1,7 +1,8 @@
/datum/psi_complexus/proc/update(var/force)
set waitfor = FALSE
if(force || last_psionic_rank != psionic_rank)
var/rank_changed = (get_rank() != last_psionic_rank)
if(force || rank_changed)
if(psionic_rank == 0)
qdel(src)
return
@@ -29,24 +30,27 @@
else if(psionic_rank == PSI_RANK_HARMONIOUS)
aura_color = "#64c464"
if(psionic_rank > PSI_RANK_SENSITIVE && (get_rank() != last_psionic_rank))
if(psionic_rank > PSI_RANK_SENSITIVE && rank_changed)
var/base_psi_points = 0
switch(psionic_rank)
if(PSI_RANK_HARMONIOUS)
psi_points = PSI_POINTS_HARMONIOUS
base_psi_points = PSI_POINTS_HARMONIOUS
if(PSI_RANK_APEX)
psi_points = PSI_POINTS_APEX
base_psi_points = PSI_POINTS_APEX
if(PSI_RANK_LIMITLESS)
psi_points = PSI_POINTS_LIMITLESS
else
psi_points = 0
base_psi_points = PSI_POINTS_LIMITLESS
ensure_base_psi_points(base_psi_points)
/// We had special abilities unique to our level, so get rid of 'em.
if(last_psionic_rank > PSI_RANK_HARMONIOUS)
wipe_user_abilities()
if(last_psionic_rank > PSI_RANK_SENSITIVE && psionic_rank < PSI_RANK_HARMONIOUS && (get_rank() != last_psionic_rank))
if(last_psionic_rank > PSI_RANK_SENSITIVE && psionic_rank < PSI_RANK_HARMONIOUS && rank_changed)
psi_points = 0
wipe_user_abilities()
if(rank_changed)
last_psionic_rank = psionic_rank
if(!announced && owner && owner.client && !QDELETED(src))
announced = TRUE
to_chat(owner, "<hr>")