| 1 |
function unstick_from() |
| 2 |
{ |
| 3 |
var _dir = 0; |
| 4 |
var _len = 0; |
| 5 |
var _x = x; |
| 6 |
var _y = y; |
| 7 |
var _offset = round(irandom(359) / (360 / argument[0])) * (360 / argument[0]); |
| 8 |
while (place_meeting(x, y, argument[1])) |
| 9 |
{ |
| 10 |
x = _x; |
| 11 |
y = _y; |
| 12 |
x += round(lengthdir_x(_len, _dir + _offset)); |
| 13 |
y += round(lengthdir_y(_len, _dir + _offset)); |
| 14 |
_dir += (360 / argument[0]); |
| 15 |
if (_dir >= 360) |
| 16 |
{ |
| 17 |
_dir -= 360; |
| 18 |
_len++; |
| 19 |
} |
| 20 |
} |
| 21 |
if (argument_count > 2 && _len > argument[2]) |
| 22 |
{ |
| 23 |
_dir = point_direction(x, y, _x, _y); |
| 24 |
x = _x; |
| 25 |
y = _y; |
| 26 |
x += round(lengthdir_x(argument[2], _dir)); |
| 27 |
y += round(lengthdir_y(argument[2], _dir)); |
| 28 |
} |
| 29 |
return _len; |
| 30 |
} |