I did this in SRL6 effectively letting the scripter decide whether to add or subtract the randomness, but allowing for either one. This is helpful, and nearly necessary as it allows for the scripter to specify in which direction to add randomness.
Simba Code:
function TPoint.rand(xx, yy : Integer): TPoint;
var
nx, ny, rx, ry: integer;
begin
nx := xx div abs(xx); //div by self to determine positive or negative
ny := yy div abs(yy);
rx := random(xx) * nx;
ry := random(yy) * ny;
result.x := x + rx;
result.y := y + ry;
end;
I know I've been gone for a bit, but this particular change probably could have waited until SRL6 is released.
Everything else seems to be all well though. Nice job everyone!