From 5d503752561d1e7e1cdad779d509f8770e52cc33 Mon Sep 17 00:00:00 2001 From: IndigoFox Date: Thu, 22 Feb 2024 08:28:18 -0800 Subject: [PATCH] improve static line protection logic --- .../functions/fn_staticLineProtection.sqf | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/framework/client/functions/fn_staticLineProtection.sqf b/framework/client/functions/fn_staticLineProtection.sqf index 752a533..7d562f3 100644 --- a/framework/client/functions/fn_staticLineProtection.sqf +++ b/framework/client/functions/fn_staticLineProtection.sqf @@ -14,10 +14,27 @@ player addEventHandler ["GetOutMan", { ((getPosATL _vehicle)#2) < 100 ) exitWith {}; + // disable damage for the unit to avoid collision damage _unit allowDamage false; - (vehicle _unit) allowDamage false; - [{ - _this allowDamage true; - (vehicle _this) allowDamage true; - }, _unit, 5] call CBA_fnc_waitAndExecute; + // 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; }]; \ No newline at end of file