From 29de629db972bdac30a26d8174c42ef4e7cb6e31 Mon Sep 17 00:00:00 2001 From: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> Date: Wed, 26 May 2021 14:22:53 -0700 Subject: [PATCH] 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 --- 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 7cc1a87c7ca..9a4561f0d47 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)