After a loong time of debugging, I figured out something strange.
I haven't programmed in BYOND in a while, so I'm assuming the atom.locs variable is relatively new.
I updated my game_del proc to accommodate for this variable:
game_del(atom/a)
if(!a)
return
var/list/built_in = list("type","parent_type","gender","verbs","vars","group","locs")
for(var/v in a.vars)
if(!(v in built_in))
a.vars[v] = null
del a
When I do this, all my mob's movements JUMP rather than SLIDE.
I tried compiling with different BYOND versions, ripped out all my Move() definitions to get everything stock.
When I remove "locs" from the built_in list, my movement reverts back to SLIDE.
Live debug when I have choppy movement:
FPS = 10
Tick lag = 1
glide_size = 8
animate_movement = 1
I can try to give more information, I figured I'd post this here and maybe somebody else might find this useful. It freaked me out for a good chunk of my day.
I don't see in particular how a del proc would break this, but perhaps try also putting animate_movement in your exclusion list.