ACE3/addons/interaction/functions/fnc_canPullOutBody.sqf
BaerMitUmlaut 52ed0fc6be
Medical Engine - Prevent automatic unloading of dead or unconscious units (#7959)
* Lock seats of unconscious or dead units

* disable pullOutBody if medical is loaded

* fix undefined var and switch to objectParent

---------

Co-authored-by: Salluci <salluci.lovi@gmail.com>
Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
2023-07-22 09:41:20 +03:00

51 lines
1.2 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: Dystopian
* Checks if unit can pull target body out of vehicle.
*
* Arguments:
* 1: Body <OBJECT>
* 2: Unit <OBJECT>
*
* Return Value:
* Able to pull out target body <BOOL>
*
* Example:
* [crew cursorObject select 0, player] call ace_interaction_fnc_canPullOutBody
*
* Public: No
*/
params ["_body", "_unit"];
// Defer to ACE Medical's unload patient if present
if (["ace_medical"] call EFUNC(common,isModLoaded)) exitWith {false};
private _vehicle = objectParent _body;
if (
!isNull objectParent _unit
|| {alive _body}
|| {isNull _vehicle}
|| {1 < locked _vehicle}
|| {
0 < {alive _x} count crew _vehicle // alive is in vehicle
// group is used here for situations when side player == ENEMY
&& {0.6 > side group _unit getFriend side group _vehicle} // player is enemy
}
) exitWith {false};
((fullCrew [_vehicle, ""] select {_body == _x select 0}) select 0) params ["", "", "_cargoIndex", "_turretPath"];
private _locked = if (_turretPath isNotEqualTo []) then {
_vehicle lockedTurret _turretPath;
} else {
if (_cargoIndex > -1) then {
_vehicle lockedCargo _cargoIndex;
} else {
lockedDriver _vehicle;
};
};
!_locked