diff --git a/code/datums/locking_category.dm b/code/datums/locking_category.dm index b4185601f53..5be831d7cff 100644 --- a/code/datums/locking_category.dm +++ b/code/datums/locking_category.dm @@ -68,7 +68,7 @@ if (newer_loc) // Edge (no pun intended) case for map borders. new_loc = newer_loc - AM.forceMove(new_loc) + AM.forceMove(new_loc, 0, 0, owner.glide_size) // Modifies the atom to undo changes in lock(). /datum/locking_category/proc/unlock(var/atom/movable/AM) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index db2949dfb41..fcf0579b08e 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -150,18 +150,6 @@ return (3+(M.client.move_delayer.next_allowed - world.time))*world.tick_lag return max(5 * world.tick_lag, 1) -// This is designed to only be used occasionally, since procs add overhead. -/atom/movable/proc/reset_glide_size() - glide_size = Ceiling(WORLD_ICON_SIZE / src.get_move_delay() * world.tick_lag) - 1 //We always split up movements into cardinals for issues with diagonal movements. - //glide_size = WORLD_ICON_SIZE / max(move_delay, world.tick_lag) * world.tick_lag // Updated calc from http://www.byond.com/forum/?post=1573076 - -/mob/verb/fix_gliding() - set category = "OOC" - set name = "Fix Movement" - set desc = "Fixes jerky movement caused by BYOND being dumb." - reset_glide_size() - - /atom/movable/Move(newLoc,Dir=0,step_x=0,step_y=0) if(!loc || !newLoc) return 0 @@ -417,7 +405,9 @@ Obstacle.Bumped(src) // harderforce is for things like lighting overlays which should only be moved in EXTREMELY specific sitations. -/atom/movable/proc/forceMove(atom/destination,var/no_tp=0, var/harderforce = FALSE) +/atom/movable/proc/forceMove(atom/destination,var/no_tp=0, var/harderforce = FALSE, glide_size_override = 0) + if(glide_size_override) + glide_size = glide_size_override var/atom/old_loc = loc loc = destination last_moved = world.time