ACE3/addons/compat_sog/functions/fnc_handlePunjiTrapTrigger.sqf
Filip Maciejewski a7d8c3eb3a
Compat SOG - Make compat auto load if DLC is present (#9204)
* Move SOG compat to addons/

* Set component to skip loading when SOG not present

* Use skipWhenMissingDependencies for GRAD Trenches compatiblity

* Tools - Add SOG dlc launch config

* move trenches to sub config, handle grad with 2nd subconfig

* fix `Land_vn_b_prop_fueldrum_01` UBC

* use ifndef

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2023-09-03 11:31:45 -05:00

41 lines
1.4 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: GhostIsSpooky, veteran29
* Handler for 'detonation' of a local punji trap. Workaround for local-only ammo hit event.
*
* Arguments:
* 0: Punji trap <OBJECT>
*
* Return Value:
* None
*
* Example:
* [trap] call ace_compat_sog_fnc_handlePunjiTrapTrigger
*
* Public: No
*/
params ["_trap"];
if (!(["ACE_Medical"] call EFUNC(common,isModLoaded))) exitWith {};
private _radius = getNumber (configOf _trap >> "indirectHitRange");
private _affectedUnits = _trap nearEntities ["CAManBase", _radius];
private _spikesOffset = [configOf _trap >> QGVAR(spikesOffset), "ARRAY", [0,0,0]] call CBA_fnc_getConfigEntry;
if (_spikesOffset isNotEqualTo [0,0,0]) then {
private _spikesPos = _trap modelToWorld _spikesOffset;
private _spikesCheckSelection = getText (configOf _trap >> QGVAR(spikesCheckSelection));
private _spikesCheckRadius = getNumber (configOf _trap >> QGVAR(spikesCheckRadius));
TRACE_3("Using spikes offset for affected units",_spikesOffset,_spikesCheckSelection,_spikesCheckRadius);
_affectedUnits = _affectedUnits select {
private _distance = _spikesPos distance (_x modelToWorld (_x selectionPosition _spikesCheckSelection));
_distance <= _spikesCheckRadius // return
};
};
if (_affectedUnits isEqualTo []) exitWith {};
[QGVAR(handlePunjiTrapDamage), [_trap, _affectedUnits], _affectedUnits] call CBA_fnc_targetEvent;