From bd6290a49377f3d4ec4bdab5c99021fd91bcd31e Mon Sep 17 00:00:00 2001 From: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Date: Thu, 27 May 2021 00:59:40 +0200 Subject: [PATCH] [MIRROR] Some associated move fixes (#5977) * Some associated move fixes (#59299) * Moves the loc assignment for null doMove target locations to before exited() is called, making it consistent with other uses of the proc, and fixing a harddel caused by deleting something inside of an open storage component. The component assumes that the removed object has already exited its contents, and so readds it to the screen, causing PAIN Co-authored-by: Kylerace * Some associated move fixes Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Co-authored-by: Kylerace --- code/game/atoms_movable.dm | 4 ++-- code/game/objects/structures/tables_racks.dm | 2 ++ code/modules/events/immovable_rod.dm | 4 +++- code/modules/flufftext/Hallucination.dm | 2 ++ .../mob/living/simple_animal/hostile/megafauna/megafauna.dm | 3 +++ code/modules/recycling/disposal/holder.dm | 3 +++ 6 files changed, 15 insertions(+), 3 deletions(-) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index e677e7c33ba..80c9e10c44f 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -668,12 +668,12 @@ //If no destination, move the atom into nullspace (don't do this unless you know what you're doing) else . = TRUE - if (loc) + loc = null + if (oldloc) var/area/old_area = get_area(oldloc) oldloc.Exited(src, null) if(old_area) old_area.Exited(src, null) - loc = null Moved(oldloc, NONE, TRUE) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 496936cdee6..f28aab070f8 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -293,6 +293,8 @@ /obj/structure/table/rolling/Moved(atom/OldLoc, Dir) . = ..() + if(!loc) + return for(var/mob/living/living_mob in OldLoc.contents)//Kidnap everyone on top living_mob.forceMove(loc) for(var/x in attached_items) diff --git a/code/modules/events/immovable_rod.dm b/code/modules/events/immovable_rod.dm index 926c248d396..1467af22dbf 100644 --- a/code/modules/events/immovable_rod.dm +++ b/code/modules/events/immovable_rod.dm @@ -128,7 +128,9 @@ In my current plan for it, 'solid' will be defined as anything with density == 1 Bump(atom_entered) /obj/effect/immovablerod/Moved() - + if(!loc) + return ..() + for(var/atom/movable/to_bump in loc) if((to_bump != src) && !QDELETED(to_bump) && (to_bump.density || isliving(to_bump))) Bump(to_bump) diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm index b8964bb4602..1f3e8a46d1f 100644 --- a/code/modules/flufftext/Hallucination.dm +++ b/code/modules/flufftext/Hallucination.dm @@ -148,6 +148,8 @@ GLOBAL_LIST_INIT(hallucination_list, list( /obj/effect/hallucination/simple/Moved(atom/OldLoc, Dir) . = ..() + if(!loc) + return Show() /obj/effect/hallucination/simple/Destroy() diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 0a5cb689b62..3430df11b90 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -70,6 +70,9 @@ small_action.Grant(src) /mob/living/simple_animal/hostile/megafauna/Moved() + //Safety check + if(!loc) + return ..() if(nest && nest.parent && get_dist(nest.parent, src) > nest_range) var/turf/closest = get_turf(nest.parent) for(var/i = 1 to nest_range) diff --git a/code/modules/recycling/disposal/holder.dm b/code/modules/recycling/disposal/holder.dm index 9832a7dff82..0295ef4feb8 100644 --- a/code/modules/recycling/disposal/holder.dm +++ b/code/modules/recycling/disposal/holder.dm @@ -84,6 +84,9 @@ /obj/structure/disposalholder/Moved(atom/oldLoc, dir) . = ..() var/static/list/pipes_typecache = typecacheof(/obj/structure/disposalpipe) + //Moved to nullspace gang + if(!loc) + return if(!pipes_typecache[loc.type]) var/turf/T = get_turf(loc) if(T)