diff --git a/SQF/dayz_code/actions/maintain_area.sqf b/SQF/dayz_code/actions/maintain_area.sqf index 399fe3ca5..aad89364a 100644 --- a/SQF/dayz_code/actions/maintain_area.sqf +++ b/SQF/dayz_code/actions/maintain_area.sqf @@ -18,7 +18,7 @@ _objects = nearestObjects [_target, _objectClasses, _range]; //filter to only those that have 10% damage _objects_filtered = []; { - if (damage _x >= 0.1) then { + if (damage _x >= DZE_DamageBeforeMaint) then { _objects_filtered set [count _objects_filtered, _x]; }; } forEach _objects; @@ -26,6 +26,14 @@ _objects = _objects_filtered; // TODO dynamic requirements based on used building parts? _count = count _objects; + +if (_count == 0) exitWith { + cutText [format[(localize "STR_EPOCH_ACTIONS_22"), _count], "PLAIN DOWN"]; + DZE_ActionInProgress = false; + s_player_maintain_area = -1; + s_player_maintain_area_preview = -1; +}; + _requirements = []; switch true do { case (_count <= 20): {_requirements = [["ItemGoldBar10oz",2]]}; @@ -39,9 +47,12 @@ switch true do { case (_count > 700): {_requirements = [["ItemBriefcase100oz",7]]}; }; + + _option = _this select 3; switch _option do { case "maintain": { + _missing = ""; _missingQty = 0; _proceed = true; diff --git a/SQF/dayz_code/compile/fn_selfActions.sqf b/SQF/dayz_code/compile/fn_selfActions.sqf index 5cc9a519a..5cc466a5e 100644 --- a/SQF/dayz_code/compile/fn_selfActions.sqf +++ b/SQF/dayz_code/compile/fn_selfActions.sqf @@ -650,7 +650,7 @@ if (!isNull cursorTarget and !_inVehicle and !_isPZombie and (player distance cu }; // inplace maintenance tool - if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget in DZE_ExtraMaintain) and (damage _cursorTarget >= 0.1)) then { + if((_cursorTarget isKindOf "ModularItems" or _cursorTarget isKindOf "DZE_Housebase" or _typeOfCursorTarget in DZE_ExtraMaintain) and (damage _cursorTarget >= DZE_DamageBeforeMaint)) then { if ((s_player_lastTarget select 2) != _cursorTarget) then { if (s_player_maint_build > 0) then { player removeAction s_player_maint_build; diff --git a/SQF/dayz_code/init/variables.sqf b/SQF/dayz_code/init/variables.sqf index 0dcdb9ae7..7e7e87564 100644 --- a/SQF/dayz_code/init/variables.sqf +++ b/SQF/dayz_code/init/variables.sqf @@ -495,6 +495,10 @@ if(isNil "DZE_LootSpawnTimer") then { if(isNil "DZE_HeliLift") then { DZE_HeliLift = true; }; +if(isNil "DZE_DamageBeforeMaint") then { + DZE_DamageBeforeMaint = 0.09; +}; + // needed on server if(isNil "DZE_PlotPole") then { diff --git a/SQF/dayz_epoch_b/stringtable.xml b/SQF/dayz_epoch_b/stringtable.xml index 000531db4..bb2b6e72f 100644 --- a/SQF/dayz_epoch_b/stringtable.xml +++ b/SQF/dayz_epoch_b/stringtable.xml @@ -6646,7 +6646,17 @@ Le démontage de la construction ne rendra pas de composants. Demontáž budovy nevrátí žádné její komponenty. - + + %1 building parts in range. + %1 building parts in range. + + В радиусе %1 частей зданий. + + + %1 constructions à portée. + %1 částí staveb v okruhu. + + Supply Crate Supply Crate Versorgungskiste diff --git a/SQF/dayz_server/compile/server_maintainArea.sqf b/SQF/dayz_server/compile/server_maintainArea.sqf index 8e4e8f041..c0b8c6f60 100644 --- a/SQF/dayz_server/compile/server_maintainArea.sqf +++ b/SQF/dayz_server/compile/server_maintainArea.sqf @@ -11,7 +11,7 @@ _targetObj = _this select 2; if (_option == 1) then { _objects = nearestObjects [_targetObj, DZE_maintainClasses, DZE_maintainRange]; { - if (damage _x >= 0.1) then { + if (damage _x >= DZE_DamageBeforeMaint) then { _objectID = _x getVariable ["ObjectID","0"]; if (_objectID == "0") then { _objectUID = _x getVariable ["ObjectUID","0"]; @@ -31,7 +31,7 @@ if (_option == 1) then { diag_log format ["MAINTAIN AREA BY %1 - %2 Objects at %3", name _player, count _objects, position _player]; }; if (_option == 2) then { - if (damage _targetObj >= 0.1) then { + if (damage _targetObj >= DZE_DamageBeforeMaint) then { _objectID = _targetObj getVariable ["ObjectID","0"]; if (_objectID == "0") then { _objectUID = _targetObj getVariable ["ObjectUID","0"];