if destination known/fixed....could use setatref(...) functions in pinx, piny.
Something like
on drop = setf(getref(user.dropflag),1)
pinx = if(user.dropflag =1 , setatref(blah blah blah)+setf(getref(user.dropflag),0),)
this approach works for aligning a shape on drop on a given grid (i do it for isometric grids)
though it is somewhat simpler than this.