Thanks for the feedback. As you can see, I attempted to change the center_x/center_y in my previous reply. I replaced the "* .5" with "/2", thinking that might help but it didn't. For testing purposes, I also set center_x = 800 to see if things would mess up, but there was no discernible impact on the gameplay (center_y appears to work).

My main function is shown below. The important lines (I think) have a "$" in front of them.

function main()
{
level_load("") ;
mouse_mode = 2;
//mouse_map = cursor;
PatrolCraft.center_x = PatrolCraft.size_x * .5;
PatrolCraft.center_y = PatrolCraft.size_y * .5;
$ Turret.center_y = Turret.size_y * .5;
$ Turret.center_x = Turret.size_x * .5;
while (1)
{
x=PatrolCraft.pos_x ;
y=PatrolCraft.pos_y ;
if (key_d) PatrolCraft.pos_x += .9;
if (key_d) x+= 100;
if (key_w) PatrolCraft.pos_y -= .9;
if (key_w) y-= 100;
if (key_a) PatrolCraft.pos_x -= .9;
if (key_a) x-= 100;
if (key_s) PatrolCraft.pos_y += .9;
if (key_s) y+= 100;

vec_to_angle(PatrolCraft.angle, vector(x-PatrolCraft.pos_x, -y + PatrolCraft.pos_y,0));
Turret.pos_x = PatrolCraft.pos_x + 33;
Turret.pos_y = PatrolCraft.pos_y+ 13;
$ vec_to_angle(Turret.angle, vector(mouse_cursor.x - Turret.pos_x,-mouse_cursor.y+Turret.pos_y,0));
wait(4) ;
if(mouse_left) fire() ;
mouse_pos.x = mouse_cursor.x;
mouse_pos.y = mouse_cursor.y;
}