From 3c08c90f2a8b5f1c55229398c560e7f0c503a9ce Mon Sep 17 00:00:00 2001 From: Cameron Lennox Date: Sat, 22 Feb 2025 03:51:17 -0500 Subject: [PATCH] Orbit fix [IDB IGNORE] [MDB IGNORE] (#17198) * wip orbit fix * dos fix --- code/datums/components/orbiter.dm | 8 ++++---- code/modules/mob/dead/observer/observer.dm | 3 ++- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 6e6cf9001ff..5b80b16e262 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -22,14 +22,14 @@ /datum/component/orbiter/RegisterWithParent() . = ..() var/atom/target = parent - while(ismovable(target)) + if(ismovable(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react)) target = target.loc /datum/component/orbiter/UnregisterFromParent() . = ..() var/atom/target = parent - while(ismovable(target)) + if(ismovable(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) target = target.loc @@ -119,12 +119,12 @@ // These are prety rarely activated, how often are you following something in a bag? if(oldloc && !isturf(oldloc)) // We used to be registered to it, probably var/atom/target = oldloc - while(ismovable(target)) + if(ismovable(target)) UnregisterSignal(target, COMSIG_MOVABLE_MOVED) target = target.loc if(orbited?.loc && orbited.loc != newturf) // We want to know when anything holding us moves too var/atom/target = orbited.loc - while(ismovable(target)) + if(ismovable(target)) RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react), TRUE) target = target.loc diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm index 66e23dee715..b6b38246bd7 100644 --- a/code/modules/mob/dead/observer/observer.dm +++ b/code/modules/mob/dead/observer/observer.dm @@ -645,7 +645,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp to_chat(src, span_filter_notice(span_red("You are dead! You have no mind to store memory!"))) /mob/observer/dead/Post_Incorpmove() - stop_following() + if(following) //This wasn't here before. It meant that we would do stop_following repeatedly every movement we made...Resulting in a DOS on our client. + stop_following() /mob/observer/dead/verb/analyze_air() set name = "Analyze Air"