Files
DayZ-Epoch/SQF/dayz_code/actions/jerry_fill.sqf
AirwavesMan 9ad86a84a3 Group sounds and zombie calls
dayz_zombieSpeak and player_alertZombies are called often together or should be. fnc_alertZombies groups them together and uses the given parameters. This streamlines and corrects the missing or incorrect calls from dayz_zombieSpeak or player_alertZombies.
2020-09-12 01:30:45 +02:00

85 lines
3.0 KiB
Plaintext

if (dayz_actionInProgress) exitWith {localize "str_player_actionslimit" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_qty","_finished","_qty20","_qty5","_qty210","_magazines","_cursorTarget","_fuelAmount","_fuelNeeded"];
player removeAction s_player_fillfuel;
//s_player_fillfuel = -1;
_cursorTarget = _this select 3;
_magazines = magazines player;
//Limit Fuel in tankers
_fuelAmount = _cursorTarget getVariable "FuelAmount";
if (isNil "_fuelAmount") then {
_fuelAmount = floor(Random dayz_randomMaxFuelAmount) max (dayz_randomMaxFuelAmount * 0.10);
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
};
_qty5 = {_x == "ItemFuelcanEmpty"} count _magazines;
_qty20 = {_x == "ItemJerrycanEmpty"} count _magazines;
_qty210 = {_x == "ItemFuelBarrelEmpty"} count _magazines;
_qty = _qty5 + _qty20 + _qty210;
_fuelNeeded = (_qty5 * 5) + (_qty20 * 20) + (_qty210 * 210);
//Inform if there is not enough to fill all containers in inventory, then proceed to fill available containers
if (_fuelAmount < _fuelNeeded) then {format[localize "str_fill_notenough",typeOf _cursorTarget,_fuelAmount,_fuelNeeded] call dayz_rollingMessages;};
//If there is not enough to fill any of their cans then exit
if (_fuelAmount < 5 or (_fuelAmount < 20 && _qty5 == 0) or (_fuelAmount < 210 && (_qty5 == 0 && _qty20 == 0))) exitWith {dayz_actionInProgress = false;};
if (_qty > 0) then {
[player,(getPosATL player),20,"refuel"] spawn fnc_alertZombies;
_finished = ["Medic",1] call fn_loopAction;
if (!_finished) exitWith {};
// Added Nutrition-Factor for work
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
for "_x" from 1 to _qty5 do {
_fuelAmount = _cursorTarget getVariable "FuelAmount";
if (_fuelAmount >= 5) then {
_fuelAmount = _fuelAmount - 5;
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
player removeMagazine "ItemFuelcanEmpty";
player addMagazine "ItemFuelcan";
} else {
_qty = _qty - 1;
};
};
for "_x" from 1 to _qty20 do {
_fuelAmount = _cursorTarget getVariable "FuelAmount";
if (_fuelAmount >= 20) then {
_fuelAmount = _fuelAmount - 20;
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
player removeMagazine "ItemJerrycanEmpty";
player addMagazine "ItemJerrycan";
} else {
_qty = _qty - 1;
};
};
for "_x" from 1 to _qty210 do {
_fuelAmount = _cursorTarget getVariable "FuelAmount";
if (_fuelAmount >= 210) then {
_fuelAmount = _fuelAmount - 210;
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
player removeMagazine "ItemFuelBarrelEmpty";
player addMagazine "ItemFuelBarrel";
} else {
_qty = _qty - 1;
};
};
//format[localize "str_player_09",_qty] call dayz_rollingMessages;
format[localize "str_fill_success",_qty,typeOf _cursorTarget,_fuelAmount] call dayz_rollingMessages;
//diag_log format[localize "str_fill_success",_qty,typeOf _cursorTarget,_fuelAmount];
} else {
localize "str_player_10" call dayz_rollingMessages;
};
dayz_actionInProgress = false;