mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
a85074a797
* Medical Engine - Remove ACE_HDBracket hitpoint * skip context 4 * move checks to vars * skip uav/logic entities * add check for arm/leg hitpoints * Update addons/medical_engine/functions/fnc_handleDamage.sqf Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com> * don't skip context 2 * clearer custom hitpoint array name * reenable compile cache * remove debug mode * lazy eval * whitespace * update comment * Update fnc_handleDamage.sqf header * Update addons/medical_engine/functions/fnc_handleDamage.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * Update addons/medical_engine/XEH_postInit.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> * update hitpoint test * missing " * Update addons/medical/dev/test_hitpointConfigs.sqf Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com> --------- Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com> Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
94 lines
3.3 KiB
Plaintext
94 lines
3.3 KiB
Plaintext
#include "script_component.hpp"
|
|
|
|
[QGVAR(updateDamageEffects), LINKFUNC(updateDamageEffects)] call CBA_fnc_addEventHandler;
|
|
["unit", {
|
|
params ["_new"];
|
|
[_new] call FUNC(updateDamageEffects); // Run on new controlled unit to update QGVAR(aimFracture)
|
|
}, true] call CBA_fnc_addPlayerEventHandler;
|
|
|
|
["CAManBase", "init", {
|
|
params ["_unit"];
|
|
|
|
if (unitIsUAV _unit) exitWith {TRACE_1("ignore UAV AI",typeOf _unit);};
|
|
if (getNumber (configOf _unit >> "isPlayableLogic") == 1) exitWith {TRACE_1("ignore logic unit",typeOf _unit);};
|
|
|
|
private _allHitPoints = getAllHitPointsDamage _unit param [0, []];
|
|
if ((GVAR(customHitpoints) arrayIntersect _allHitPoints) isNotEqualTo GVAR(customHitpoints)) exitWith {
|
|
ERROR_1("Bad hitpoints for unit type ""%1""",typeOf _unit);
|
|
};
|
|
|
|
// Calling this function inside curly brackets allows the usage of
|
|
// "exitWith", which would be broken with "HandleDamage" otherwise.
|
|
_unit setVariable [
|
|
QEGVAR(medical,HandleDamageEHID),
|
|
_unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}]
|
|
];
|
|
}, nil, [IGNORE_BASE_UAVPILOTS], true] call CBA_fnc_addClassEventHandler;
|
|
|
|
#ifdef DEBUG_MODE_FULL
|
|
[QEGVAR(medical,woundReceived), {
|
|
params ["_unit", "_damages", "_shooter", "_ammo"];
|
|
TRACE_4("wound",_unit,_damages,_shooter,_ammo);
|
|
//systemChat str _this;
|
|
}] call CBA_fnc_addEventHandler;
|
|
#endif
|
|
|
|
|
|
// this handles moving units into vehicles via load functions or zeus
|
|
// needed, because the vanilla INCAPACITATED state does not handle vehicles
|
|
["CAManBase", "GetInMan", {
|
|
params ["_unit", "", "_vehicle"];
|
|
|
|
if (local _unit && {lifeState _unit == "INCAPACITATED"}) then {
|
|
[_unit, true] call FUNC(setUnconsciousAnim);
|
|
};
|
|
|
|
if (local _vehicle) then {
|
|
[_unit] call FUNC(lockUnconsciousSeat);
|
|
};
|
|
}] call CBA_fnc_addClassEventHandler;
|
|
|
|
["CAManBase", "GetOutMan", {
|
|
params ["_unit", "", "_vehicle"];
|
|
|
|
if (local _vehicle) then {
|
|
[_unit] call FUNC(unlockUnconsciousSeat);
|
|
};
|
|
}] call CBA_fnc_addClassEventHandler;
|
|
|
|
// Fixes units being stuck in unconscious animation when being knocked over by a PhysX object
|
|
["CAManBase", "AnimDone", {
|
|
params ["_unit", "_anim"];
|
|
if (local _unit && {_anim find QUNCON_ANIM(face) != -1 && {lifeState _unit != "INCAPACITATED"}}) then {
|
|
[_unit, false] call FUNC(setUnconsciousAnim);
|
|
};
|
|
}] call CBA_fnc_addClassEventHandler;
|
|
|
|
["ace_unconscious", {
|
|
params ["_unit", "_unconscious"];
|
|
TRACE_3("unit uncon",_unit,objectParent _unit,local _unit);
|
|
if (!isNull objectParent _unit && {local objectParent _unit}) then {
|
|
if (_unconscious) then {
|
|
[_unit] call FUNC(lockUnconsciousSeat);
|
|
} else {
|
|
[_unit] call FUNC(unlockUnconsciousSeat);
|
|
};
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
["ace_killed", { // global event
|
|
params ["_unit"];
|
|
TRACE_3("unit Killed",_unit,objectParent _unit,local _unit);
|
|
if (!isNull objectParent _unit && {local objectParent _unit}) exitWith {
|
|
[_unit] call FUNC(lockUnconsciousSeat);
|
|
};
|
|
}] call CBA_fnc_addEventHandler;
|
|
|
|
["CAManBase", "Deleted", {
|
|
params ["_unit"];
|
|
TRACE_3("unit deleted",_unit,objectParent _unit,local _unit);
|
|
if ((!isNull objectParent _unit) && {local objectParent _unit}) then {
|
|
[_unit] call FUNC(unlockUnconsciousSeat);
|
|
};
|
|
}, true, []] call CBA_fnc_addClassEventHandler;
|