Files
DayZ-Epoch/SQF/dayz_code/actions/jerry_fill.sqf
ebaydayz c2b16f0828 Consolidate DZE_ActionInProgress and r_action_count to one variable
There is no point in having two variables for the same purpose.

It is also pointless to keep an action count tally like r_action_count
was doing, since it is only ever checked for being 0 or 1. Any count
higher or lower than that is irrelevant.

I will make this change in vanilla too.
2016-08-25 15:38:27 -04:00

105 lines
3.3 KiB
Plaintext

if (dayz_actionInProgress) exitWith {localize "str_epoch_player_34" call dayz_rollingMessages;};
dayz_actionInProgress = true;
private ["_qty","_dis","_sfx","_started","_finished","_animState","_isRefuel","_fuelcans","_qty20","_qty5","_qty40","_magazines","_cursorTarget","_fuelAmount"];
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);
_cursorTarget setVariable ["FuelAmount",_fuelAmount,true];
};
if (_fuelAmount < 5) exitWith { format[localize "str_fill_notenough",typeOf _cursorTarget,_fuelAmount] call dayz_rollingMessages; };
diag_log format["Fill Jerry, %1 - %2",_cursorTarget,_fuelAmount];
_fuelcans = ["ItemFuelcanEmpty","ItemJerrycanEmpty","ItemFuelBarrelEmpty"];
_qty = 0;
_qty = {_x in _fuelcans} count _magazines;
_qty20 = {_x == "ItemJerrycanEmpty"} count _magazines;
_qty5 = {_x == "ItemFuelcanEmpty"} count _magazines;
_qty40 = {_x == "ItemFuelBarrelEmpty"} count _magazines;
if (("ItemJerrycanEmpty" in _magazines) or ("ItemFuelcanEmpty" in _magazines) or ("ItemFuelBarrelEmpty" in _magazines)) then {
player playActionNow "Medic";
_dis=5;
_sfx = "refuel";
[player,_sfx,0,false,_dis] call dayz_zombieSpeak;
[player,_dis,true,(getPosATL player)] call player_alertZombies;
// Added Nutrition-Factor for work
["Working",0,[20,40,15,0]] call dayz_NutritionSystem;
r_doLoop = true;
_started = false;
_finished = false;
while {r_doLoop} do {
_animState = animationState player;
_isRefuel = ["medic",_animState] call fnc_inString;
if (_isRefuel) then {
_started = true;
};
if (_started and !_isRefuel) then {
r_doLoop = false;
_finished = true;
};
uiSleep 0.1;
};
r_doLoop = false;
if (_finished) then {
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 _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 _qty40 do {
_fuelAmount = _cursorTarget getVariable "FuelAmount";
if (_fuelAmount >= 40) then {
_fuelAmount = _fuelAmount - 40;
_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;