diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index e56f6d366c..c37c120b93 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -31,6 +31,7 @@ var/atom/movable/pulling var/grab_state = 0 var/throwforce = 0 + var/can_be_z_moved = TRUE /atom/movable/vv_edit_var(var_name, var_value) var/static/list/banned_edits = list("step_x", "step_y", "step_size") diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 3e7968a9d7..9ebe8f3c19 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -134,7 +134,7 @@ if ((!(A) || src != A.loc)) return - if(destination_z && destination_x && destination_y) + if(destination_z && destination_x && destination_y && !(A.pulledby || !A.can_be_z_moved)) var/tx = destination_x var/ty = destination_y var/turf/DT = locate(tx, ty, destination_z) @@ -157,8 +157,10 @@ A.forceMove(DT) if(AM) var/turf/T = get_step(A.loc,turn(A.dir, 180)) + AM.can_be_z_moved = FALSE AM.forceMove(T) A.start_pulling(AM) + AM.can_be_z_moved = TRUE //now we're on the new z_level, proceed the space drifting stoplag()//Let a diagonal move finish, if necessary