From be46eba4651f03ab6dbc4766e77ea247847fa4a6 Mon Sep 17 00:00:00 2001 From: Artur <24881678+Arturlang@users.noreply.github.com> Date: Thu, 7 Apr 2022 14:10:51 +0300 Subject: [PATCH] Moves stasis handling to component-based --- code/datums/status_effects/debuffs.dm | 15 ++++++--------- code/modules/mob/living/life.dm | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index b7680c0d80..6737c2d034 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -154,25 +154,22 @@ . = ..() if(!.) return - owner.mobility_flags &= ~MOBILITY_USE - owner.mobility_flags &= ~MOBILITY_PICKUP - owner.mobility_flags &= ~MOBILITY_PULL - owner.mobility_flags &= ~MOBILITY_HOLD + RegisterSignal(owner, COMSIG_LIVING_LIFE, .proc/InterruptBiologicalLife) + owner.mobility_flags &= ~(MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_PULL | MOBILITY_HOLD) owner.update_mobility() owner.add_filter("stasis_status_ripple", 2, list("type" = "ripple", "flags" = WAVE_BOUNDED, "radius" = 0, "size" = 2)) var/filter = owner.get_filter("stasis_status_ripple") animate(filter, radius = 32, time = 15, size = 0, loop = -1) +/datum/status_effect/grouped/stasis/proc/InterruptBiologicalLife() + return COMPONENT_INTERRUPT_LIFE_BIOLOGICAL /datum/status_effect/grouped/stasis/tick() update_time_of_death() /datum/status_effect/grouped/stasis/on_remove() - owner.mobility_flags |= MOBILITY_USE - owner.mobility_flags |= MOBILITY_PICKUP - owner.mobility_flags |= MOBILITY_PULL - owner.mobility_flags |= MOBILITY_HOLD - owner.update_mobility() + UnregisterSignal(owner, COMSIG_LIVING_LIFE) + owner.mobility_flags |= MOBILITY_USE | MOBILITY_PICKUP | MOBILITY_PULL | MOBILITY_HOLD owner.remove_filter("stasis_status_ripple") update_time_of_death() return ..() diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm index dd050bda3e..6909100161 100644 --- a/code/modules/mob/living/life.dm +++ b/code/modules/mob/living/life.dm @@ -6,12 +6,11 @@ SHOULD_NOT_SLEEP(TRUE) if(mob_transforming) return - handle_traits() // eye, ear, brain damages handle_status_effects() //all special effects, stun, knockdown, jitteryness, hallucination, sleeping, etc . = SEND_SIGNAL(src, COMSIG_LIVING_LIFE, seconds, times_fired) if(!(. & COMPONENT_INTERRUPT_LIFE_PHYSICAL)) PhysicalLife(seconds, times_fired) - if(!(. & COMPONENT_INTERRUPT_LIFE_BIOLOGICAL) && !IS_IN_STASIS(src)) + if(!(. & COMPONENT_INTERRUPT_LIFE_BIOLOGICAL)) BiologicalLife(seconds, times_fired) // CODE BELOW SHOULD ONLY BE THINGS THAT SHOULD HAPPEN NO MATTER WHAT AND CAN NOT BE SUSPENDED! @@ -67,6 +66,7 @@ //stuff in the stomach handle_stomach() + handle_traits() // eye, ear, brain damages handle_block_parry(seconds)