ACE3/addons/medical_treatment/functions/fnc_placeInBodyBag.sqf
Brett 9e3409fc6e
Medical - Allow placing unconscious in a body bag (#7941)
* medical: allow placing unconscious in a bodybag

* Always show body bag action on non-awake units

Co-authored-by: PabstMirror <pabstmirror@gmail.com>
2020-10-29 11:37:36 -05:00

54 lines
1.7 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: Glowbal
* Places a dead body inside a body bag.
*
* Arguments:
* 0: Medic <OBJECT>
* 1: Patient <OBJECT>
*
* Return Value:
* None
*
* Example:
* [player, cursorObject] call ace_medical_treatment_fnc_placeInBodyBag
*
* Public: No
*/
params ["_medic", "_patient"];
TRACE_1("placeInBodyBag",_patient);
if ((alive _patient) && {!GVAR(allowBodyBagUnconscious)}) exitWith {
[_medic, "ACE_bodyBag"] call EFUNC(common,addToInventory); // re-add slighly used bodybag?
[LSTRING(bodybagWhileStillAlive)] call EFUNC(common,displayTextStructured);
};
if (!local _patient) exitWith {
TRACE_1("Calling where local",local _patient);
[QGVAR(placeInBodyBag), [nil, _patient], _patient] call CBA_fnc_targetEvent;
};
if (alive _patient) then {
TRACE_1("Manually killing with setDead",_patient);
[_patient, "buried_alive"] call EFUNC(medical_status,setDead);
};
private _position = (getPosASL _patient) vectorAdd [0, 0, 0.2];
private _headPos = _patient modelToWorldVisual (_patient selectionPosition "head");
private _spinePos = _patient modelToWorldVisual (_patient selectionPosition "Spine3");
private _direction = (_headPos vectorFromTo _spinePos) call CBA_fnc_vectDir;
// Move the body away so it won't collide with the body bag object
// This setPosASL seems to need to be called where the unit is local
_patient setPosASL [-5000, -5000, 0];
// Create the body bag object, set its position to prevent it from flipping
private _bodyBag = createVehicle ["ACE_bodyBagObject", [0, 0, 0], [], 0, "NONE"];
_bodyBag setPosASL _position;
_bodyBag setDir _direction;
// Server will handle hiding and deleting the body
["ace_placedInBodyBag", [_patient, _bodyBag]] call CBA_fnc_globalEvent;