mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
85 lines
2.5 KiB
Plaintext
85 lines
2.5 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: commy2
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params ["_type", "_position", ["_group", grpNull], "_varName"];
|
|
|
|
private _player = player;
|
|
|
|
if (isNull _group) then {
|
|
_group = createGroup east;
|
|
};
|
|
|
|
private _target = _group createUnit [_type, [10, 10, 0], [], 0, "NONE"];
|
|
|
|
// _varName is used for respawning unit
|
|
if (isNil "_varName") then {
|
|
_varName = _target call BIS_fnc_netId;
|
|
};
|
|
|
|
// Set up AI
|
|
_target setPos _position;
|
|
_target setDir (_position getDir _player);
|
|
_target doWatch position _player;
|
|
_target addRating -10e10;
|
|
_target setUnitPos "UP";
|
|
_target setBehaviour "CARELESS";
|
|
_target setCombatMode "BLUE";
|
|
_target setSpeedMode "LIMITED";
|
|
_target disableAI "TARGET";
|
|
_target disableAI "AUTOTARGET";
|
|
_target allowFleeing 0;
|
|
_target setSpeaker "BASE";
|
|
|
|
[{
|
|
params ["_target", "_time"];
|
|
|
|
if (speaker _target == "BASE") exitWith {time > _time};
|
|
|
|
_target setSpeaker "BASE";
|
|
|
|
false
|
|
}, {}, [_target, time + 1]] call CBA_fnc_waitUntilAndExecute;
|
|
|
|
_player reveal [_target, 4];
|
|
|
|
// Copy player's gear onto target
|
|
if (vest _player != "") then { _target addVest vest _player; };
|
|
if (backpack _player != "") then { _target addBackpack backpack _player; };
|
|
if (headgear _player != "") then { _target addHeadgear headgear _player; };
|
|
if (goggles _player != "") then { _target addGoggles goggles _player; };
|
|
if (primaryWeapon _player != "") then { _target addWeapon primaryWeapon _player; };
|
|
if (secondaryWeapon _player != "") then { _target addWeapon secondaryWeapon _player; };
|
|
if (handgunWeapon _player != "") then { _target addWeapon handgunWeapon _player; };
|
|
|
|
// Save AI for respawn
|
|
_target setVehicleVarName _varName;
|
|
missionNamespace setVariable [_varName, _target];
|
|
|
|
_target switchMove "amovpercmstpslowwrfldnon";
|
|
_target setVariable ["origin", _position];
|
|
|
|
// When killed, respawn AI
|
|
_target addEventHandler ["Killed", {
|
|
params ["_target"];
|
|
|
|
// Killed may fire twice, 2nd will be null - https://github.com/acemod/ACE3/pull/7561
|
|
if (isNull _target) exitWith { TRACE_1("Ignoring null death",_target); };
|
|
|
|
private _position = _target getVariable ["origin", position _target];
|
|
private _varName = vehicleVarName _target;
|
|
|
|
[_target, true] spawn BIS_fnc_VREffectKilled;
|
|
|
|
// When unit's corpse is deleted, spawn in new one of same type
|
|
[{isNull (_this select 0)}, {
|
|
(_this select 1) call FUNC(createTarget);
|
|
}, [_target, [typeOf _target, _position, group _target, _varName]]] call CBA_fnc_waitUntilAndExecute;
|
|
}];
|
|
|
|
_target call BIS_fnc_VRHitpart;
|
|
_target
|