ACE3/addons/vehicle_damage/XEH_postInit.sqf
johnb432 dc56cdbd8b
Vehicle Damage - Fix applying medical damage to non-local and invulnerable units (#9988)
* Make medical damage apply to non-local units

* Update addons/vehicle_damage/functions/fnc_medicalDamage.sqf

Co-authored-by: PabstMirror <pabstmirror@gmail.com>

* Update addons/vehicle_damage/functions/fnc_medicalDamage.sqf

* Update fnc_medicalDamage.sqf

* Specify reason for death

---------

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2024-05-31 13:15:46 -07:00

66 lines
2.5 KiB
Plaintext

#include "script_component.hpp"
["ace_settingsInitialized", {
TRACE_1("settings init",GVAR(enabled));
if (GVAR(enabled)) then {
[QGVAR(medicalDamage), LINKFUNC(medicalDamage)] call CBA_fnc_addEventHandler;
[QGVAR(bailOut), {
params ["_center", "_crewman", "_vehicle"];
TRACE_3("bailOut",_center,_crewman,_vehicle);
if (isPlayer _crewman) exitWith {};
if (!alive _crewman || { !( [_crewman] call EFUNC(common,isAwake))} ) exitWith {};
unassignVehicle _crewman;
_crewman leaveVehicle _vehicle;
doGetOut _crewman;
private _angle = floor (random 360);
private _dist = (30 + (random 10));
private _escape = _center getPos [_dist, _angle];
_crewman doMove _escape;
_crewman setSpeedMode "FULL";
}] call CBA_fnc_addEventHandler;
["Tank", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
["Wheeled_APC_F", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
if (GVAR(enableCarDamage)) then {
["Car", "init", LINKFUNC(addEventHandler), true, [], true] call CBA_fnc_addClassEventHandler;
};
// blow off turret effect
/*
Disabled temporarily due to issues with being able to repair tanks after death. Needs work
*/
/*["Tank", "killed", {
if (random 1 < 0.15) then {
(_this select 0) call FUNC(blowOffTurret);
};
}, true, [], true] call CBA_fnc_addClassEventHandler;*/
// event to add a turret to a curator if the vehicle already belonged to that curator
if (isServer) then {
[QGVAR(addTurretToEditable), {
params ["_vehicle", "_turret"];
{
_x addCuratorEditableObjects [[_turret], false];
} forEach (objectCurators _vehicle);
}] 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;
}] call CBA_fnc_addEventHandler;