#include "..\script_component.hpp"

if ( !hasInterface ) exitWith {};

// Add GetOutMan event handler to grant temporary invincibility to players ejecting from vehicles
// Only for players who have "hooked up" using VS static line
// and are ejecting from a plane or helicopter above 100m
player addEventHandler ["GetOutMan", {
	params ["_unit", "_role", "_vehicle", "_turret", "_isEject"];
	if (!isEject) exitWith {};
	if (isNil {_unit getVariable "VS_Jump"}) exitWith {};
	if (
		not (_vehicle isKindOf "Plane" || _vehicle isKindOf "Helicopter") ||
		((getPosATL _vehicle)#2) < 100
	) exitWith {};

	// disable damage for the unit to avoid collision damage
	_unit allowDamage false;
	// tested - vehicle _unit is the _unit, as this EH runs when they have left the vehicle


	[
		{!isNull (objectParent _this)}, // condition - wait until player re-enters vehicle (chute)
		{
			// if they enter a chute within 5 seconds, disable chute damage
			(vehicle _this) allowDamage false;
			// then wait X seconds and re-enable damage for both
			[{
				_this allowDamage true;
				(vehicle _this) allowDamage true;
			}, _this, 5] call CBA_fnc_waitAndExecute;
		},
		_unit, // args
		2, // timeout
		{ // run on timeout, if for some reason they don't enter a chute
			// re-enable damage for unit
			_this allowDamage true;
		}
	] call CBA_fnc_waitUntilAndExecute;
}];