diff --git a/addons/cookoff/XEH_PREP.hpp b/addons/cookoff/XEH_PREP.hpp index f1deb8eaed..d2b63ac65d 100644 --- a/addons/cookoff/XEH_PREP.hpp +++ b/addons/cookoff/XEH_PREP.hpp @@ -6,3 +6,4 @@ PREP(cookOffBox); PREP(blowOffTurret); PREP(detonateAmmunition); PREP(getVehicleAmmo); +PREP(handleDamageEjectIfDestroyed); diff --git a/addons/cookoff/XEH_postInit.sqf b/addons/cookoff/XEH_postInit.sqf index 1c93ee501c..94fe8899de 100644 --- a/addons/cookoff/XEH_postInit.sqf +++ b/addons/cookoff/XEH_postInit.sqf @@ -102,3 +102,13 @@ if (isServer) then { } forEach allCurators; }] call CBA_fnc_addEventHandler; }; + +// init eject from destroyed vehicle +{ + [_x, "init", { + params ["_vehicle"]; + if (!alive _vehicle) exitWith {}; + TRACE_2("ejectIfDestroyed init",_vehicle,typeOf _vehicle); + _vehicle addEventHandler ["HandleDamage", {call FUNC(handleDamageEjectIfDestroyed)}]; + }, true, [], true] call CBA_fnc_addClassEventHandler; +} forEach EJECT_IF_DESTROYED_VEHICLES; diff --git a/addons/cookoff/functions/fnc_handleDamageEjectIfDestroyed.sqf b/addons/cookoff/functions/fnc_handleDamageEjectIfDestroyed.sqf new file mode 100644 index 0000000000..05fa73415e --- /dev/null +++ b/addons/cookoff/functions/fnc_handleDamageEjectIfDestroyed.sqf @@ -0,0 +1,33 @@ +#include "script_component.hpp" +/* + * Author: Dystopian + * Ejects crew from destroyed vehicle. + * Should be called from HandleDamage EH. + * + * Arguments: + * HandleDamage EH + * + * Return Value: + * None + * + * Example: + * _this call ace_cookoff_fnc_handleDamageEjectIfDestroyed + * + * Public: No + */ + +params ["_vehicle", "", "", "", "_ammo"]; + +if (alive _vehicle) exitWith {}; + +TRACE_2("ejectIfDestroyed HDEH",typeOf _vehicle,_this); + +if (!IS_EXPLOSIVE_AMMO(_ammo)) then { + { + if (alive _x) then { + moveOut _x; + }; + } forEach crew _vehicle; +}; + +_vehicle removeEventHandler ["HandleDamage", _thisEventHandler]; diff --git a/addons/cookoff/script_component.hpp b/addons/cookoff/script_component.hpp index 5daa0e8330..3c28864932 100644 --- a/addons/cookoff/script_component.hpp +++ b/addons/cookoff/script_component.hpp @@ -27,3 +27,5 @@ // Delay between flame effect for players in a cooking off vehicle #define FLAME_EFFECT_DELAY 0.4 + +#define EJECT_IF_DESTROYED_VEHICLES ["Boat_Transport_02_base_F", "Rubber_duck_base_F"]