Try putting it in the End Step event so that it always happens after the player has moved.
Also I'd recommend you do:
x = object939.x;
y = object939.y;
Because don't forget, the object is really meant to be "above" the character, like in a true overhead game it would be coming out of your screen towards you. But because of the game's viewpoint, it only looks like its y should be lower. If you actually lower the y, then when it's thrown it could collide with things that aren't really in its path.
To make it appear higher but keep the object mask at the proper y, do this in the Draw event:
draw_sprite(sprite_index, -1, x, y-10+alteration);