//This makes a program npc, or MrProg, be moved by any
//mover tiles it is atop. Obviously, it will eventually
//stop moving if the movement path comes to an end.
//The following arguments are not yet in, but will be:
//argument0 - Maximum speed to be moved.
//argument1 - Value to add to the default accelleration of 1.5.
//argument2 - Value to add to the default decellertaion of 0.5.

alarm[2] = 5;

sc = PCODE_MOVER;
stepcode = "
if(position_meeting(x+21,y+22,mtile1r))
    srspeed += 1.5;
else if(position_meeting(x+21,y+22,mtile1l))
    slspeed += 1.5;
else if(position_meeting(x+21,y+22,mtile1u))
    suspeed += 1.5;
else if(position_meeting(x+21,y+22,mtile1d))
    sdspeed += 1.5;
srspeed -= 0.5;
slspeed -= 0.5;
suspeed -= 0.5;
sdspeed -= 0.5;
if(srspeed > 5) {srspeed = 5;}
if(slspeed > 5) {slspeed = 5;}
if(suspeed > 5) {suspeed = 5;}
if(sdspeed > 5) {sdspeed = 5;}
if(srspeed < 0) {srspeed = 0;}
if(slspeed < 0) {slspeed = 0;}
if(suspeed < 0) {suspeed = 0;}
if(sdspeed < 0) {sdspeed = 0;}

x += srspeed;
x -= slspeed;
y -= suspeed;
y += sdspeed;

dir = point_direction(0,0,srspeed - slspeed,sdspeed - suspeed);
if(dir >= 0 && dir < 90 && sprite_index != SprUR)
    sprite_index = SprUR;
else if(dir >= 90 && dir < 180 && sprite_index != SprUL)
    sprite_index = SprUL;
else if(dir >= 180 && dir < 270 && sprite_index != SprDL)
    sprite_index = SprDL;
else if(dir >= 270 && dir <= 320 && sprite_index != SprDR)
    sprite_index = SprDR;
";