Thanks Method
, I'll start on it now :P
Never knew about FindObjectEx resetting the value! It does explain some weird bugs I had though 
EDIT 3: How does this look:
Code:
function OwnObstacleR (ObjectTile, FrontTile : TPoint; UpText, Option : string; ObjectID, Height, Length : Integer): boolean;
begin
MyPosition := GetMyPos;
if not ((MyPosition.x = FrontTile.x) and (MyPosition.y = FrontTile.y)) then
begin
Result := False;
WriteLn('ERROR: REFLECTION: Not in position!');
Exit;
end;
if not FindObjectEx(ObjectTile, ObjectID, Length) then
begin
Result := False;
WriteLn('ERROR: REFLECTION: Object not found!');
Exit;
end;
MSPoint := TileToMS(ObjectTile, Height);
MMouse(MSPoint.x, MSPoint.y, 5, 5);
Wait(100+random(50));
if IsUpText(UpText) then
begin
GetMousePos(MSPoint.x, MSPoint.y);
Mouse(MSPoint.x, MSPoint.y, 0, 0, False);
R_ChooseOption(Option);
Result := True;
end else
begin
Result := False
WriteLn('ERROR: REFLECTION: UpText not found!');
Exit;
end;
end;
Wasn't nearly as hard as I thought :P