Origin is top left. +X is right. +Y is down.
lv_destPos = OrderGetTargetPoint(EventUnitOrder());
lv_destX = PointGetX(lv_destPos);
lv_destY = PointGetY(lv_destPos);
lv_curX = PointGetX(lv_curPos);
lv_curY = PointGetY(lv_curPos);
//get slope
lv_m = (lv_curY-lv_destY)/(lv_curX-lv_destX);
//get y intercept
lv_b = lv_y - (lv_m * lv_x);
//clicked to right
if(lv_destX > lv_curX)
{
lv_destX = lv_destX + 50.0;
lv_destY = (lv_m * lv_destX) + lv_b;
}else
{
//clicked to left
if(lv_destX < lv_curX)
{
lv_destX = lv_destX - 50.0;
lv_destY = (lv_m * lv_destX) + lv_b;
}else
{
//clicked below
if(lv_destY > lv_curY)
{
lv_destY = lv_destY+50;
lv_destX = (lv_destY - lv_b)/lv_m;
}else
{
//clicked above
lv_destY = lv_destY-50;
lv_destX = (lv_destY - lv_b)/lv_m;
}
}
}
lv_destPos = Point(lv_destX, lv_destY);