mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
edf4a70ed6
* Simplify main fuel loop * Remove unecessary action macro * Add container refueling * Fuel counter behaviour is now consistent for both limited and unlimited fuel sources * Update maxFuel and refuelContainer whenever fueling begins * Update maxFuel and refuelContainer whenever fueling begins * Prevent loading of fuel sources into cargo when they have a nozzle connected to them * Added action to check how much fuel is left in a jerry can * Prevent jerry cans from being picked up if they have a nozzle connected to them * Added function to check if a nozzle can be connected to an object * Prevent fuel sources which have their nozzle deployed from being loaded * Compute both tank volumes inside of refuel instead of durring turn on * Didn't mean to delete these * Allow for user defined fuel capacities * Handle more edge cases with infinite fuel sources * Refuel - Prevent fuel sources from being dragged while they're refueling other things * Refuel - Added flow rate multiplier for refueling fuel sources * Refuel - Use FUNC instead of DFUNC for nozzle actions * Refuel - getCapacity should return REFUEL_DISABLED_FUEL instead of 0 when argument is not a fuel source * Refuel - Correctly reset fuel counter when fueling a new target * Refuel - Implemented all suggested changes * Refuel - Added newlines to end of files * Refuel - Added missing newline at end of XEH_PREP * Only setFuel once per jerry can creation Co-authored-by: PabstMirror <pabstmirror@gmail.com> * Calling getFuel will initialize the fuel source * Refuel - Add newline to end of file --------- Co-authored-by: BaerMitUmlaut <baermitumlaut@users.noreply.github.com> Co-authored-by: PabstMirror <pabstmirror@gmail.com>
49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
#include "script_component.hpp"
|
|
/*
|
|
* Author: Glowbal
|
|
* Check if item can be loaded into other Object.
|
|
*
|
|
* Arguments:
|
|
* 0: Item <OBJECT or STRING>
|
|
* 1: Holder Object (Vehicle) <OBJECT>
|
|
* 2: Ignore interaction distance and stability checks <BOOL>
|
|
*
|
|
* Return Value:
|
|
* Can load in <BOOL>
|
|
*
|
|
* Example:
|
|
* [item, holder] call ace_cargo_fnc_canLoadItemIn
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
params [["_item", "", [objNull,""]], "_vehicle", ["_ignoreInteraction", false]];
|
|
|
|
if ((!_ignoreInteraction) && {speed _vehicle > 1 || {((getPos _vehicle) select 2) > 3}}) exitWith {TRACE_1("vehicle not stable",_vehicle); false};
|
|
|
|
if (_item isEqualType objNull && {{alive _x && {getText (configOf _x >> "simulation") != "UAVPilot"}} count crew _item > 0}) exitWith {
|
|
TRACE_1("item is occupied",_item);
|
|
false
|
|
};
|
|
|
|
private _itemSize = [_item] call FUNC(getSizeItem);
|
|
private _validItem = false;
|
|
if (_item isEqualType "") then {
|
|
_validItem =
|
|
isClass (configFile >> "CfgVehicles" >> _item) &&
|
|
{getNumber (configFile >> "CfgVehicles" >> _item >> QGVAR(canLoad)) == 1};
|
|
} else {
|
|
_validItem =
|
|
(alive _item) &&
|
|
{_ignoreInteraction || {([_item, _vehicle] call EFUNC(interaction,getInteractionDistance)) < MAX_LOAD_DISTANCE}} &&
|
|
{!(_item getVariable [QEGVAR(cookoff,isCookingOff), false])} &&
|
|
{isNull(_item getVariable [QEGVAR(refuel,nozzle), objNull])} && // Objects which have a refueling nozzle connected to them cannot be loaded
|
|
{isNull(_item getVariable [QEGVAR(refuel,ownedNozzle), objNull])}; // Fuel sources which have their nozzle out cannot be loaded
|
|
};
|
|
|
|
_validItem &&
|
|
{_itemSize > 0} &&
|
|
{alive _vehicle} &&
|
|
{_itemSize <= ([_vehicle] call FUNC(getCargoSpaceLeft))} &&
|
|
{locked _vehicle < 2}
|