ACE3/addons/common/functions/fnc_nearestVehiclesFreeSeat.sqf
PabstMirror e8693c8db9
Various - Use configOf command for faster lookup (#8100)
* configOf

* replace some use of CBA_fnc_getObjectConfig
2021-02-18 12:58:08 -06:00

34 lines
1.2 KiB
Plaintext

#include "script_component.hpp"
/*
* Author: 654wak654
* Returns a list of vehicles near given unit that the unit can be a passenger in.
*
* Arguments:
* 0: Unit <OBJECT>
* 1: Distance <NUMBER><OPTIONAL>
* 2: Restriceted to cargo only <BOOL><OPTIONAL>
*
* Return Value:
* Nearest vehicles with a free seat <ARRAY>
*
* Example:
* [cursorObject] call ace_common_fnc_nearestVehiclesFreeSeat
*
* Public: Yes
*/
params ["_unit", ["_distance", 10], ["_cargoOnly", false]];
private _nearVehicles = nearestObjects [_unit, ["Car", "Air", "Tank", "Ship_F", "Pod_Heli_Transport_04_crewed_base_F"], _distance];
_nearVehicles select {
// Filter cargo seats that will eject unconscious units (e.g. quad bike)
private _canSitInCargo = (!(_unit getVariable ['ACE_isUnconscious', false])) || {(getNumber (configOf _x >> "ejectDeadCargo")) == 0};
((fullCrew [_x, "", true]) findIf {
_x params ["_body", "_role", "_cargoIndex"];
(isNull _body) // seat empty
&& {_role != "DRIVER"} // not driver seat
&& {_canSitInCargo || {_cargoIndex == -1}} // won't be ejected (uncon)
&& {(!_cargoOnly) || {_cargoIndex != -1}} // not restricted (captive)
}) > -1
}