mirror of
https://github.com/EpochModTeam/DayZ-Epoch.git
synced 2025-12-17 09:10:27 +03:00
From
e69f8d5306
Moved dog files to the \dog\ folder and pzombie files to the \pzombie\
folder. Also removed some legacy files that are no longer used.
The actions\ and compile\ folders are fully up to date now
129 lines
4.8 KiB
Plaintext
129 lines
4.8 KiB
Plaintext
//Code developed by Axe Cop - Massiv improvments and performance tunes by Skaronator
|
|
private ["_missing","_missingQty","_proceed","_itemIn","_countIn","_qty","_num_removed","_uniqueID","_removed","_removed_total","_tobe_removed_total","_obj","_objectID","_objectUID","_classname","_location","_dir","_objectCharacterID","_object","_temp_removed_array","_textMissing","_target","_objectClasses","_range","_objects","_requirements","_count","_cost","_itemText","_option"];
|
|
|
|
if (DZE_ActionInProgress) exitWith {cutText [localize "STR_EPOCH_ACTIONS_2","PLAIN DOWN"];};
|
|
DZE_ActionInProgress = true;
|
|
|
|
player removeAction s_player_maintain_area;
|
|
s_player_maintain_area = 1;
|
|
player removeAction s_player_maintain_area_preview;
|
|
s_player_maintain_area_preview = 1;
|
|
|
|
_target = cursorTarget; // Plastic_Pole_EP1_DZ
|
|
|
|
_objectClasses = DZE_maintainClasses;
|
|
_range = DZE_maintainRange; // set the max range for the maintain area
|
|
_objects = nearestObjects [_target, _objectClasses, _range];
|
|
|
|
//filter to only those that have 10% damage
|
|
_objects_filtered = [];
|
|
{
|
|
if (damage _x >= DZE_DamageBeforeMaint) then {
|
|
_objects_filtered set [count _objects_filtered, _x];
|
|
};
|
|
} count _objects;
|
|
_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 <= 10): {_requirements = [["ItemGoldBar10oz",1]]};
|
|
case (_count <= 20): {_requirements = [["ItemGoldBar10oz",2]]};
|
|
case (_count <= 35): {_requirements = [["ItemGoldBar10oz",3]]};
|
|
case (_count <= 50): {_requirements = [["ItemGoldBar10oz",4]]};
|
|
case (_count <= 75): {_requirements = [["ItemGoldBar10oz",6]]};
|
|
case (_count <= 100): {_requirements = [["ItemBriefcase100oz",1]]};
|
|
case (_count <= 175): {_requirements = [["ItemBriefcase100oz",2]]};
|
|
case (_count <= 250): {_requirements = [["ItemBriefcase100oz",3]]};
|
|
case (_count <= 325): {_requirements = [["ItemBriefcase100oz",4]]};
|
|
case (_count <= 400): {_requirements = [["ItemBriefcase100oz",5]]};
|
|
case (_count <= 475): {_requirements = [["ItemBriefcase100oz",6]]};
|
|
case (_count <= 550): {_requirements = [["ItemBriefcase100oz",7]]};
|
|
case (_count <= 625): {_requirements = [["ItemBriefcase100oz",8]]};
|
|
case (_count > 625): {_requirements = [["ItemBriefcase100oz",9]]};
|
|
};
|
|
|
|
|
|
|
|
_option = _this select 3;
|
|
switch _option do {
|
|
case "maintain": {
|
|
|
|
_missing = "";
|
|
_missingQty = 0;
|
|
_proceed = true;
|
|
{
|
|
_itemIn = _x select 0;
|
|
_countIn = _x select 1;
|
|
_qty = { (_x == _itemIn) || (configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn) } count magazines player;
|
|
if (_qty < _countIn) exitWith { _missing = _itemIn; _missingQty = (_countIn - _qty); _proceed = false; };
|
|
} forEach _requirements;
|
|
|
|
if (_proceed) then {
|
|
player playActionNow "Medic";
|
|
[player,_range,true,(getPosATL player)] spawn player_alertZombies;
|
|
|
|
_temp_removed_array = [];
|
|
_removed_total = 0;
|
|
_tobe_removed_total = 0;
|
|
|
|
{
|
|
_removed = 0;
|
|
_itemIn = _x select 0;
|
|
_countIn = _x select 1;
|
|
_tobe_removed_total = _tobe_removed_total + _countIn;
|
|
|
|
{
|
|
if ((_removed < _countIn) && ((_x == _itemIn) || configName(inheritsFrom(configFile >> "cfgMagazines" >> _x)) == _itemIn)) then {
|
|
_num_removed = ([player,_x] call BIS_fnc_invRemove);
|
|
_removed = _removed + _num_removed;
|
|
_removed_total = _removed_total + _num_removed;
|
|
if (_num_removed >= 1) then {
|
|
_temp_removed_array set [count _temp_removed_array,_x];
|
|
};
|
|
};
|
|
} forEach magazines player;
|
|
} forEach _requirements;
|
|
|
|
// all required items removed from player gear
|
|
if (_tobe_removed_total == _removed_total) then {
|
|
cutText [format[(localize "STR_EPOCH_ACTIONS_4"), _count], "PLAIN DOWN", 5];
|
|
PVDZE_maintainArea = [player,1,_target];
|
|
publicVariableServer "PVDZE_maintainArea";
|
|
} else {
|
|
{player addMagazine _x;} count _temp_removed_array;
|
|
cutText [format[(localize "STR_EPOCH_ACTIONS_5"),_removed_total,_tobe_removed_total], "PLAIN DOWN"];
|
|
};
|
|
} else {
|
|
_textMissing = getText(configFile >> "CfgMagazines" >> _missing >> "displayName");
|
|
cutText [format[(localize "STR_EPOCH_ACTIONS_6"), _missingQty, _textMissing], "PLAIN DOWN"];
|
|
};
|
|
};
|
|
case "preview": {
|
|
_cost = "";
|
|
{
|
|
_itemIn = _x select 0;
|
|
_countIn = _x select 1;
|
|
_itemText = getText(configFile >> "CfgMagazines" >> _itemIn >> "displayName");
|
|
if (_cost != "") then {
|
|
_cost = _cost + " and ";
|
|
};
|
|
_cost = _cost + (str(_countIn) + " of " + _itemText);
|
|
} count _requirements;
|
|
cutText [format[(localize "STR_EPOCH_ACTIONS_7"), _count, _cost], "PLAIN DOWN"];
|
|
};
|
|
};
|
|
|
|
DZE_ActionInProgress = false;
|
|
s_player_maintain_area = -1;
|
|
s_player_maintain_area_preview = -1;
|