Observable move not unregistering correctly fix (#17387)

* Atomization

* oh the irony

---------

Co-authored-by: FluffyGhost <FluffyGhost>
This commit is contained in:
Fluffy
2023-09-22 15:20:56 +02:00
committed by GitHub
parent dd620796f0
commit c1ad1bdc35
2 changed files with 51 additions and 0 deletions
+10
View File
@@ -14,6 +14,16 @@ var/singleton/observ/moved/moved_event = new()
child = parent
parent = child.loc
/singleton/observ/moved/unregister(event_source, datum/listener, proc_call)
. = ..()
var/atom/movable/child = event_source
if(.)
var/atom/movable/parent = child.loc
while(istype(parent) && moved_event.is_listening(parent, child))
moved_event.unregister(parent, child, TYPE_PROC_REF(/atom/movable, recursive_move))
child = parent
parent = child.loc
/singleton/observ/moved/proc/register_all_movement(var/event_source, var/listener)
moved_event.register(event_source, listener, /atom/movable/proc/recursive_move)
dir_set_event.register(event_source, listener, /atom/proc/recursive_dir_set)