{
  x = xprevious;
  y = yprevious;
  if (abs(hspeed) >= abs(vspeed) && not place_meeting(x+hspeed,y,obj_wall_basic)) 
    { x += hspeed; exit;}
  if not place_meeting(x,y+vspeed,obj_wall_basic) 
    { y += vspeed; exit;}
  if not place_meeting(x+hspeed,y,obj_wall_basic) 
    { x += hspeed; exit;}
}