diff --git a/code/datums/components/atom_mounted.dm b/code/datums/components/atom_mounted.dm index 0d2382e6947..12d73e1ae24 100644 --- a/code/datums/components/atom_mounted.dm +++ b/code/datums/components/atom_mounted.dm @@ -8,25 +8,28 @@ if(!isobj(parent)) return COMPONENT_INCOMPATIBLE hanging_support_atom = target_structure - -/datum/component/atom_mounted/RegisterWithParent() - ADD_TRAIT(parent, TRAIT_WALLMOUNTED, REF(src)) RegisterSignal(hanging_support_atom, COMSIG_ATOM_EXAMINE, PROC_REF(on_examine)) if(isclosedturf(hanging_support_atom)) RegisterSignal(hanging_support_atom, COMSIG_TURF_CHANGE, PROC_REF(on_turf_changing)) else RegisterSignal(hanging_support_atom, COMSIG_QDELETING, PROC_REF(on_structure_delete)) + +/datum/component/atom_mounted/RegisterWithParent() + ADD_TRAIT(parent, TRAIT_WALLMOUNTED, REF(src)) RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move)) /datum/component/atom_mounted/UnregisterFromParent() REMOVE_TRAIT(parent, TRAIT_WALLMOUNTED, REF(src)) + UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) + +/datum/component/atom_mounted/Destroy(force) UnregisterSignal(hanging_support_atom, list(COMSIG_ATOM_EXAMINE)) if(isclosedturf(hanging_support_atom)) UnregisterSignal(hanging_support_atom, COMSIG_TURF_CHANGE) else UnregisterSignal(hanging_support_atom, COMSIG_QDELETING) - UnregisterSignal(parent, COMSIG_MOVABLE_MOVED) hanging_support_atom = null + return ..() /** * When the wall is examined, explains that it's supporting the linked object.