private ["_objectID","_objectUID","_target","_objects","_requirements","_count","_objects_filtered","_ctrl","_itemText","_type","_amount","_success","_wealth","_message1","_message2","_option"]; disableSerialization; if (dayz_actionInProgress) exitWith {localize "STR_EPOCH_ACTIONS_2" call dayz_rollingMessages;}; dayz_actionInProgress = true; player removeAction s_player_maintain_area; s_player_maintain_area = 1; player removeAction s_player_maintain_area_force; s_player_maintain_area_force = 1; player removeAction s_player_maintain_area_preview; s_player_maintain_area_preview = 1; _target = nearestObject [[player] call FNC_getPos,"Plastic_Pole_EP1_DZ"]; _objects = nearestObjects [_target, DZE_maintainClasses, DZE_maintainRange]; _objects_filtered = []; _requirements = []; _count = 0; _req = { private ["_count","_amount","_itemText"]; _count = _this; _amount = _count * 100; _itemText = if (Z_SingleCurrency) then { CurrencyName } else { _amount call z_calcDefaultCurrencyNoImg }; [_amount,_itemText] }; _maintain = { private ["_requirements","_count","_amount","_itemText","_wealth","_success","_message1","_message2","_ctrl","_enoughMoney","_moneyInfo"]; _count = count (_this select 0); _requirements = _count call _req; _amount = _requirements select 0; _itemText = _requirements select 1; _enoughMoney = false; _moneyInfo = [false, [], [], [], 0]; _wealth = player getVariable[Z_MoneyVariable,0]; if (Z_SingleCurrency) then { _enoughMoney = if (_wealth >= _amount) then { true } else { false }; } else { Z_Selling = false; // Initialize gem currency before Z_canAfford. if (Z_AllowTakingMoneyFromVehicle) then { false call Z_checkCloseVehicle; }; _moneyInfo = _amount call Z_canAfford; _enoughMoney = _moneyInfo select 0; }; _success = if (Z_SingleCurrency) then { true } else { [player,_amount,_moneyInfo,true,0] call Z_payDefault }; if (!_success && _enoughMoney) exitWith { systemChat localize "STR_EPOCH_TRADE_GEAR_AND_BAG_FULL"; }; // Not enough room in gear or bag to accept change if (_enoughMoney) then { _success = if (Z_SingleCurrency) then {_amount <= _wealth} else {[player,_amount,_moneyInfo,false,0] call Z_payDefault}; if (_success) then { PVDZE_maintainArea = [player,1,_this select 0]; publicVariableServer "PVDZE_maintainArea"; systemChat format[localize "STR_EPOCH_ACTIONS_4",_count]; if (Z_SingleCurrency) then { player setVariable[Z_MoneyVariable,(_wealth - _amount),true]; _message1 = format [localize "STR_EPOCH_PLOTMANAGEMENT_OBJECTS_MAINTAINED_SUCCESS",_count,[_amount] call BIS_fnc_numberText,_itemText]; } else { _message1 = format [localize "STR_EPOCH_PLOTMANAGEMENT_OBJECTS_MAINTAINED_SUCCESS",_count,_itemText]; }; _message2 = " "; call player_forceSave; // Call player_forceSave BEFORE the medic animation because it can override the animation and make it finish prematurely. player playActionNow "Medic"; [player,"repair",0,false,20] call dayz_zombieSpeak; [player,DZE_maintainRange,true,(getPosATL player)] spawn player_alertZombies; ["Working",0,[100,15,10,0]] call dayz_NutritionSystem; if (DZE_permanentPlot) then { _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012; _ctrl ctrlSetText _message1; _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013; _ctrl ctrlSetText _message2; } else { _message1 call dayz_rollingMessages; }; } else { systemChat localize "STR_EPOCH_TRADE_DEBUG"; }; } else { if (Z_SingleCurrency) then { _message1 = format[localize "STR_EPOCH_PLOTMANAGEMENT_OBJECTS_MAINTAINED_FAILED",_count,[_amount] call BIS_fnc_numberText,_itemText]; } else { _message1 = format[localize "STR_EPOCH_PLOTMANAGEMENT_OBJECTS_MAINTAINED_FAILED",_count,_itemText]; }; _message2 = " "; if (DZE_permanentPlot) then { _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012; _ctrl ctrlSetText _message1; _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013; _ctrl ctrlSetText _message2; } else { _message1 call dayz_rollingMessages; }; }; }; { if (damage _x >= DZE_DamageBeforeMaint) then { _objectUID = _x getVariable ["ObjectUID","0"]; _objectID = _x getVariable ["ObjectID","0"]; _objects_filtered set [count _objects_filtered, [_x, _objectID, _objectUID]]; _count = _count + 1; }; } count _objects; _option = if (typeName _this == "ARRAY") then {_this select 3} else {_this}; switch _option do { case "maintain": { if (_count != 0) then { [_objects_filtered] call _maintain; } else { systemChat localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_NONE"; }; }; case "preview": { if (_count == 0) then { _message1 = localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_NONE"; if (DZE_permanentPlot) then { _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012; _ctrl ctrlSetText _message1; } else { _message1 call dayz_rollingMessages; }; } else { _requirements = _count call _req; if (Z_SingleCurrency) then { _message1 = format [localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_PRICE", _count,[_requirements select 0] call BIS_fnc_numberText,_requirements select 1]; } else { _message1 = format [localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_PRICE", _count,_requirements select 1]; }; if (DZE_permanentPlot) then { _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7012; _ctrl ctrlSetText _message1; } else { _message1 call dayz_rollingMessages; }; }; _requirements = count _objects call _req; if (Z_SingleCurrency) then { _message2 = format [localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_FORCE",count _objects,[_requirements select 0] call BIS_fnc_numberText,_requirements select 1]; } else { _message2 = format [localize "STR_EPOCH_PLOTMANAGEMENT_MAINTAIN_FORCE",count _objects,_requirements select 1]; }; if (_count != count _objects) then { if (DZE_permanentPlot) then { _ctrl = (uiNamespace getVariable "PlotManagement") displayCtrl 7013; _ctrl ctrlSetText _message2; } else { _message2 call dayz_rollingMessages; }; }; }; case "force": { _count = 0; _objects_filtered = []; { _objectUID = _x getVariable ["ObjectUID","0"]; _objectID = _x getVariable ["ObjectID","0"]; _objects_filtered set [count _objects_filtered, [_x, _objectID, _objectUID]]; _count = _count + 1; } count _objects; [_objects_filtered] call _maintain; }; }; dayz_actionInProgress = false; s_player_maintain_area = -1; s_player_maintain_area_force = -1; s_player_maintain_area_preview = -1;