2015-01-11 18:24:19 +00:00
|
|
|
#include "script_component.hpp"
|
2015-04-18 17:57:11 +00:00
|
|
|
private["_checkPos", "_i", "_largest", "_largestSpot", "_list", "_outliers", "_remainingSpots", "_samplePos", "_spot", "_spots", "_testPos"];
|
2015-01-11 18:24:19 +00:00
|
|
|
_list = _this select 0;
|
|
|
|
_checkPos = _this select 1;
|
|
|
|
_spots = [];
|
|
|
|
_outliers = [];
|
|
|
|
_spot = [];
|
|
|
|
_testPos = (_list select 0) select 0;
|
|
|
|
{
|
2015-04-02 16:35:36 +00:00
|
|
|
_samplePos = _x select 0;
|
|
|
|
if(!lineIntersects [_samplePos, _checkPos] && {!terrainIntersectASL [_samplePos, _checkPos]}) then {
|
|
|
|
if(_samplePos distance _testPos < 2) then {
|
|
|
|
_spot pushBack _samplePos;
|
|
|
|
} else {
|
|
|
|
_outliers pushBack _samplePos;
|
|
|
|
};
|
|
|
|
};
|
2015-01-11 18:24:19 +00:00
|
|
|
} forEach _list;
|
|
|
|
_spots pushBack _spot;
|
|
|
|
|
|
|
|
if(count _outliers > 0) then {
|
2015-04-02 16:35:36 +00:00
|
|
|
for "_i" from 1 to 3 do {
|
|
|
|
_remainingSpots = _outliers;
|
|
|
|
_outliers = [];
|
|
|
|
_spot = [];
|
|
|
|
_testPos = (_remainingSpots select 0);
|
|
|
|
{
|
|
|
|
_samplePos = _x;
|
|
|
|
if(!lineIntersects [_samplePos, _checkPos] && {!terrainIntersectASL [_samplePos, _checkPos]}) then {
|
|
|
|
if(_samplePos distance _testPos < 2) then {
|
|
|
|
_spot pushBack _samplePos;
|
|
|
|
} else {
|
|
|
|
_outliers pushBack _samplePos;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
} forEach _remainingSpots;
|
|
|
|
_spots pushBack _spot;
|
|
|
|
};
|
2015-01-11 18:24:19 +00:00
|
|
|
};
|
|
|
|
_largest = 0;
|
|
|
|
_largestSpot = [];
|
|
|
|
{
|
2015-04-02 16:35:36 +00:00
|
|
|
if((count _x) > _largest) then {
|
|
|
|
_largest = (count _x);
|
|
|
|
_largestSpot = _x;
|
|
|
|
};
|
2015-01-11 18:24:19 +00:00
|
|
|
} forEach _spots;
|
|
|
|
// player sideChat format["g: %1", _spots];
|
|
|
|
_largestSpot select (random (floor(count _largestSpot)));
|