diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 9d6ab8410c..00be22e99c 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -109,10 +109,12 @@ mob.control_object.loc = get_step(mob.control_object,direct) return - +#define MOVEMENT_DELAY_BUFFER 0.75 +#define MOVEMENT_DELAY_BUFFER_DELTA 1.25 /client/Move(n, direct) if(world.time < move_delay) return 0 + var/old_move_delay = move_delay move_delay = world.time+world.tick_lag //this is here because Move() can now be called mutiple times per tick if(!mob || !mob.loc) return 0 @@ -159,7 +161,11 @@ //We are now going to move moving = 1 - move_delay = mob.movement_delay() + world.time + var/delay = mob.movement_delay() + if (old_move_delay + (delay*MOVEMENT_DELAY_BUFFER_DELTA) + MOVEMENT_DELAY_BUFFER > world.time) + move_delay = old_move_delay + delay + else + move_delay = delay + world.time if(mob.confused) if(mob.confused > 40)