43 lines
1.2 KiB
Plaintext
43 lines
1.2 KiB
Plaintext
params ["_unit", ["_sector", ""]];
|
|
|
|
_unit setUnitPos "UP";
|
|
_unit disableAI "MOVE";
|
|
private _move_is_disabled = true;
|
|
private _hostiles = 0;
|
|
private _ratio = 0.4;
|
|
private _range = 40;
|
|
|
|
while {_move_is_disabled && local _unit && alive _unit && !(captive _unit)} do {
|
|
|
|
if !(_sector isEqualTo "") then {
|
|
_ratio = [_sector] call F_getForceRatio;
|
|
};
|
|
|
|
_range = floor (linearConversion [0, 1, _ratio, 0, GRLIB_capture_size / 3 * 2, true]);
|
|
|
|
_hostiles = ((getPos _unit) nearEntities [["Man"], _range]) select {side _x == GRLIB_side_friendly};
|
|
|
|
if (_move_is_disabled &&
|
|
{
|
|
(_sector in blufor_sectors) ||
|
|
{!(_hostiles isEqualTo [])} ||
|
|
{damage _unit > 0.25}
|
|
}
|
|
) then {
|
|
_move_is_disabled = false;
|
|
_unit enableAI "MOVE";
|
|
_unit setUnitPos "AUTO";
|
|
};
|
|
|
|
if (_move_is_disabled) then {
|
|
private _target = assignedTarget _unit;
|
|
if(!(isnull _target)) then {
|
|
private _vd = (getPosASL _target) vectorDiff (getpos _unit);
|
|
private _newdir = (_vd select 0) atan2 (_vd select 1);
|
|
if (_newdir < 0) then {_dir = 360 + _newdir};
|
|
_unit setdir (_newdir);
|
|
};
|
|
};
|
|
sleep 5;
|
|
};
|