2016-10-07 02:21:01 +00:00
|
|
|
/*
|
|
|
|
* Author: commy2
|
|
|
|
* Damages a body part of a local unit. Does not kill the unit.
|
|
|
|
*
|
|
|
|
* Arguments:
|
|
|
|
* 0: Unit <OBJECT>
|
|
|
|
* 1: Body part, can be "Head", "Body", "LeftArm", "RightArm", "LeftLeg", "RightLeg" or "All" <STRING>
|
|
|
|
*
|
|
|
|
* Return Value:
|
|
|
|
* None
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
* [player, "HEAD"] call ace_medical_engine_fnc_updateBodyPartVisuals
|
|
|
|
*
|
|
|
|
* Public: No
|
|
|
|
*/
|
|
|
|
#include "script_component.hpp"
|
|
|
|
|
2016-10-07 03:10:43 +00:00
|
|
|
params ["_unit", "_bodyPart"];
|
2016-10-07 02:21:01 +00:00
|
|
|
|
|
|
|
if (_bodyPart == "All") exitWith {
|
|
|
|
[_unit, "Head"] call FUNC(updateBodyPartVisuals);
|
|
|
|
[_unit, "Body"] call FUNC(updateBodyPartVisuals);
|
|
|
|
[_unit, "LeftArm"] call FUNC(updateBodyPartVisuals);
|
|
|
|
[_unit, "RightArm"] call FUNC(updateBodyPartVisuals);
|
|
|
|
[_unit, "LeftLeg"] call FUNC(updateBodyPartVisuals);
|
|
|
|
[_unit, "RightLeg"] call FUNC(updateBodyPartVisuals);
|
|
|
|
};
|
|
|
|
|
|
|
|
private _affectedBodyParts = [_bodyPart];
|
|
|
|
|
|
|
|
switch (toLower _bodyPart) do {
|
|
|
|
case "leftarm";
|
|
|
|
case "rightarm": {
|
|
|
|
_bodyPart = "Arms";
|
|
|
|
_affectedBodyParts = ["LeftArm", "RightArm"];
|
|
|
|
};
|
|
|
|
|
|
|
|
case "leftleg";
|
|
|
|
case "rightleg": {
|
|
|
|
_bodyPart = "Legs";
|
|
|
|
_affectedBodyParts = ["LeftLeg", "RightLeg"];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
private _openWounds = _unit getVariable QEGVAR(medical,openWounds);
|
2016-12-05 20:34:20 +00:00
|
|
|
private _damageOnAffectedBodyParts = 0;
|
2016-10-07 02:21:01 +00:00
|
|
|
|
|
|
|
{
|
2016-12-05 20:34:20 +00:00
|
|
|
private _damageOnBodyPart = 0;
|
2016-10-13 07:47:52 +00:00
|
|
|
private _partIndex = ALL_BODY_PARTS find toLower _x;
|
2016-10-07 02:21:01 +00:00
|
|
|
|
|
|
|
{
|
2016-12-05 20:34:20 +00:00
|
|
|
_x params ["", "", "_bodyPartN", "", "_bleeding", "_damage"];
|
2016-10-07 02:21:01 +00:00
|
|
|
|
|
|
|
if (_bodyPartN isEqualTo _partIndex) then {
|
2016-12-05 20:34:20 +00:00
|
|
|
_damageOnBodyPart = _damageOnBodyPart + _damage;
|
2016-10-07 02:21:01 +00:00
|
|
|
};
|
|
|
|
} forEach _openWounds;
|
|
|
|
|
|
|
|
// report maximum of both legs or arms
|
2016-12-05 20:34:20 +00:00
|
|
|
_damageOnAffectedBodyParts = _damageOnAffectedBodyParts max _damageOnBodyPart;
|
2016-10-07 02:21:01 +00:00
|
|
|
} forEach _affectedBodyParts;
|
|
|
|
|
2016-12-05 20:34:20 +00:00
|
|
|
[_unit, _bodyPart, _damageOnAffectedBodyParts > 0.35] call FUNC(damageBodyPart);
|