diff --git a/Changelogs/0.3.6.0.txt b/Changelogs/0.3.6.0.txt
index c606da58..742f3668 100644
--- a/Changelogs/0.3.6.0.txt
+++ b/Changelogs/0.3.6.0.txt
@@ -1,13 +1,8 @@
**Client**
-[Added-TBA] Previous assets re-added:
- Hotwire Kit,
- Key Makers Kit,
- Keys in colors: (Black,Red,Green,Blue,Yellow),
- 55 Gallon Fuel Barrel (Full/Empty),
- Metal Pipes
- Documents (Trash,Vehicle Upgrades),
[Added] Added ability to sell Primary weapon from hands and empty backpacks. Thanks to @He-Man
-[Changed] Increased max player load from 1000 to 2000.
+[Changed] Increased max player load 2x to compensate for the new stamina system in 1.54.
+[Changed] Increased backpack storage limits to allow carrying long weapons.
+[Fixed] Changes to default Arma weapon configs to allow long (Lynx,etc) weapons to be stored in backpacks.
[Fixed] Unable to sell after attempting to sell a temporary vehicle. Thanks to @He-Man
[Fixed] Updated Hitpoints to 1.54 for all custom Epoch characters, this fixes the hitpoint .rpt errors since 1.54 as well.
[Fixed] Reduce run speed of Sappers since 1.54 update.
diff --git a/Changelogs/0.3.7.0.txt b/Changelogs/0.3.7.0.txt
new file mode 100644
index 00000000..04f1b162
--- /dev/null
+++ b/Changelogs/0.3.7.0.txt
@@ -0,0 +1,7 @@
+WIP
+[Added] Hotwire Kit
+[Added] Key Makers Kit
+[Added] Keys in colors: (Black,Red,Green,Blue,Yellow)
+[Added] 55 Gallon Fuel Barrel (Full/Empty)
+[Added] Metal Pipes
+[Added] Documents (Trash,Vehicle Upgrades)
diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo
index a6e50101..7732cef7 100644
Binary files a/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo and b/Server_Install_Pack/@epochhive/addons/a3_epoch_server.pbo differ
diff --git a/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo b/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo
index f301c85e..9a828391 100644
Binary files a/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo and b/Server_Install_Pack/@epochhive/addons/a3_epoch_server_settings.pbo differ
diff --git a/Sources/epoch_code/compile/EPOCH_onEachFrame.sqf b/Sources/epoch_code/compile/EPOCH_onEachFrame.sqf
index cffeecfd..d6d887dd 100644
--- a/Sources/epoch_code/compile/EPOCH_onEachFrame.sqf
+++ b/Sources/epoch_code/compile/EPOCH_onEachFrame.sqf
@@ -127,7 +127,7 @@ if (!isNull EPOCH_currentTarget && vehicle player == player) then {
if (_stability == 0) then {
switch EPOCH_buildOption do {
case 0: {EPOCH_stabilityTarget call EPOCH_removeBUILD};
- case 1: {EPOCH_stabilityTarget call EPOCH_upgradeBUILDv2};
+ case 1: {EPOCH_stabilityTarget call EPOCH_upgradeBUILD};
case 2: {EPOCH_stabilityTarget call EPOCH_fnc_SelectTargetBuild};
};
diff --git a/Sources/epoch_code/compile/building/EPOCH_returnVector.sqf b/Sources/epoch_code/compile/bis_functions/returnVector.sqf
similarity index 100%
rename from Sources/epoch_code/compile/building/EPOCH_returnVector.sqf
rename to Sources/epoch_code/compile/bis_functions/returnVector.sqf
diff --git a/Sources/epoch_code/compile/building/EPOCH_changeWallState.sqf b/Sources/epoch_code/compile/building/EPOCH_changeWallState.sqf
index 461a23f3..9603f57c 100644
--- a/Sources/epoch_code/compile/building/EPOCH_changeWallState.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_changeWallState.sqf
@@ -25,6 +25,7 @@
Returns:
NOTHING
*/
+private ["_recipeItem","_recipeQty","_hasRecipeItems","_msg","_recipeCount","_currentCount","_numRemoved","_items","_mags","_dt","_recipe","_craftItem","_craftQty","_config","_objClass","_object","_anim","_state"];
_object = param [0,objNull];
_anim = param [1,""];
_state = param [2,0];
diff --git a/Sources/epoch_code/compile/building/EPOCH_checkBuild.sqf b/Sources/epoch_code/compile/building/EPOCH_checkBuild.sqf
index f9b33bcf..e78f85d1 100644
--- a/Sources/epoch_code/compile/building/EPOCH_checkBuild.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_checkBuild.sqf
@@ -21,6 +21,7 @@
Returns:
ARRAY of BOOLs
*/
+private ["_dt","_out","_object","_objType","_config"];
_out = [false, false, false];
if !(isNil "EPOCH_simulSwap_Lock") exitWith{ _out };
diff --git a/Sources/epoch_code/compile/building/EPOCH_countdown.sqf b/Sources/epoch_code/compile/building/EPOCH_countdown.sqf
index 704a09eb..548e3952 100644
--- a/Sources/epoch_code/compile/building/EPOCH_countdown.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_countdown.sqf
@@ -21,7 +21,7 @@
Returns:
NOTHING
*/
-private["_color", "_distance", "_previous"];
+private ["_posObj","_savedBuildPos","_previousBuildPos","_saveCheck","_endTime","_worldspace","_class","_newObj","_startTime","_objClass"];
if (!isNull _this) then {
diff --git a/Sources/epoch_code/compile/building/EPOCH_fnc_SelectTargetBuild.sqf b/Sources/epoch_code/compile/building/EPOCH_fnc_SelectTargetBuild.sqf
index 61d81221..832c18ac 100644
--- a/Sources/epoch_code/compile/building/EPOCH_fnc_SelectTargetBuild.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_fnc_SelectTargetBuild.sqf
@@ -21,7 +21,7 @@
Returns:
BOOL
*/
-private ["_targeter","_stability"];
+private ["_targeter","_stability","_dt","_object"];
if !(isNil "EPOCH_simulSwap_Lock") exitWith{ false };
if !(isNull EPOCH_Target) exitWith{ false };
diff --git a/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf b/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf
index 10ffdb1d..50d45edc 100644
--- a/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf
@@ -4,7 +4,7 @@
Contributors: Raimonds Virtoss
Description:
- Epoch build select target
+ check if building is allowed
Licence:
Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
diff --git a/Sources/epoch_code/compile/building/EPOCH_lockCheck.sqf b/Sources/epoch_code/compile/building/EPOCH_lockCheck.sqf
index dbaf5a88..03d23a6d 100644
--- a/Sources/epoch_code/compile/building/EPOCH_lockCheck.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_lockCheck.sqf
@@ -1,4 +1,27 @@
-private["_jammed", "_jammer"];
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building object lock check code
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_lockCheck.sqf
+
+ Example:
+ call EPOCH_lockCheck
+
+ Parameter(s):
+ NONE
+
+ Returns:
+ BOOL
+*/
+private ["_jammed","_jammer","_buildingJammerRange","_config"];
_config = "CfgEpochClient" call EPOCH_returnConfig;
_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
diff --git a/Sources/epoch_code/compile/building/EPOCH_maintainIT.sqf b/Sources/epoch_code/compile/building/EPOCH_maintainIT.sqf
index 54db8284..8a5c02cb 100644
--- a/Sources/epoch_code/compile/building/EPOCH_maintainIT.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_maintainIT.sqf
@@ -1,3 +1,27 @@
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building maintain base code
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_maintainIT.sqf
+
+ Example:
+ cursorTarget call EPOCH_maintainIT;
+
+ Parameter(s):
+ _this: OBJECT - Base building object ("Constructions_static_F","Constructions_foundation_F","Buildable_Storage","Constructions_lockedstatic_F")
+
+ Returns:
+ NOTHING
+*/
+private ["_dt","_buildingJammerRange","_maintainCount","_rnd","_config"];
if !(isNil "EPOCH_maintainLockout") exitWith {_dt = ["Already Maintaining a base.", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;};
if (EPOCH_playerCrypto > 0) then {
_config = "CfgEpochClient" call EPOCH_returnConfig;
diff --git a/Sources/epoch_code/compile/building/EPOCH_removeBUILD.sqf b/Sources/epoch_code/compile/building/EPOCH_removeBUILD.sqf
index 11db357e..5679dbb8 100644
--- a/Sources/epoch_code/compile/building/EPOCH_removeBUILD.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_removeBUILD.sqf
@@ -1,4 +1,27 @@
-private["_buildingAllowed", "_jammer", "_restricted", "_restrictedLocations", "_myPosATL"];
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building maintain base code
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_removeBUILD.sqf
+
+ Example:
+ cursorTarget call EPOCH_removeBUILD;
+
+ Parameter(s):
+ _this: OBJECT - Base building object
+
+ Returns:
+ BOOL - true if removed
+*/
+private ["_buildingAllowed","_jammer","_buildingJammerRange","_buildingCountLimit","_dt","_nearestJammer","_ownedJammerExists","_return","_config","_objType","_object","_targeter","_stability","_removeParts"];
_buildingAllowed = true;
_ownedJammerExists = false;
_nearestJammer = objNull;
@@ -33,7 +56,7 @@ if (_objType == "PlotPole_EPOCH") then {
_buildingAllowed = false;
_dt = ["Remove Disallowed: Frequency Blocked", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
-}
+}
else {
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
if !(_jammer isEqualTo[]) then{
diff --git a/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf b/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
index ac34a001..299a1fe7 100644
--- a/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
@@ -1,8 +1,30 @@
-private [
- "_cfgClass","_class","_worldspace","_objSlot","_newObj","_playerOffset","_bbr","_p1","_p2","_maxWidth","_maxLength","_maxHeight","_pos2","_vel2","_dir2","_up2","_pos1","_vel1","_dir1","_up1","_interval","_velocityTransformation","_object","_status","_return","_oemType","_config","_currentTarget"];
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building base building with physics
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
+
+ Example:
+ [_object] spawn EPOCH_simulSwap;
+
+ Parameter(s):
+ _this select 0: OBJECT - Base building object
+
+ Returns:
+ NOTHING
+*/
+private ["_class","_worldspace","_objSlot","_newObj","_pos2","_vel2","_dir2","_up2","_velocityTransformation","_object","_return","_oemType","_config","_currentTarget","_dt","_energyCost","_allowedSnapObjects","_textureSlot","_lastCheckTime","_rejectMove","_nearestObject","_nearestObjectRaw","_distanceNear","_previousDistanceNear","_pOffset","_snapPos","_isSnap","_snapPosition","_snapType","_snapDistance","_prevSnapDistance","_snapPointsPara","_snapPointsPerp","_snapArrayPara","_snapArrayPerp","_direction","_distance","_plyrdistance","_create","_allowedSnapPoints","_snapObjects","_onContactEH","_offset","_disallowed","_objType","_distanceMod"];
if !(isNil "EPOCH_simulSwap_Lock") exitWith{};
-_object = _this select 0;
+_object = param [0,objNull];
if (isNull _object) exitWith{ EPOCH_target = objNull; };
_objType = typeOf _object;
@@ -89,7 +111,7 @@ if (isText(_config)) then {
if (EPOCH_Y_OFFSET < 3.6) then {
EPOCH_Y_OFFSET = EPOCH_Y_OFFSET + 0.1;
};
-
+
_pos2 = player modelToWorld[EPOCH_X_OFFSET, EPOCH_Y_OFFSET, EPOCH_Z_OFFSET];
_distance = _pos2 distance EPOCH_target;
if (EPOCH_buildMode == 1) then {
@@ -174,7 +196,7 @@ if (isText(_config)) then {
if (_direction < 0) then {
_direction = 360 + _direction;
};
- _dir2 = [vectorDir _nearestObject, _direction] call EPOCH_returnVector;
+ _dir2 = [vectorDir _nearestObject, _direction] call BIS_fnc_returnVector;
_up2 = (vectorUp _nearestObject);
EP_velocityTransformation = [_pos2,_vel2,_dir2,_up2];
};
@@ -185,7 +207,7 @@ if (isText(_config)) then {
};
if (EPOCH_space) then {
_vel2 = (velocity player);
- _dir2 = [vectorDir player, EPOCH_buildDirection] call EPOCH_returnVector;
+ _dir2 = [vectorDir player, EPOCH_buildDirection] call BIS_fnc_returnVector;
_up2 = (vectorUp player);
EPOCH_space = false;
EP_velocityTransformation = [_pos2,_vel2,_dir2,_up2];
diff --git a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf
index 71f6bfbc..36eb2b5a 100644
--- a/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_staticMove.sqf
@@ -1,9 +1,38 @@
-private["_allowedSnapObjects", "_currentZoffset", "_nearestObject", "_pOffset", "_snapPos", "_snapPosition", "_snapType", "_snapDistance", "_prevSnapDistance", "_pos2", "_dir", "_snapPointsPara", "_snapPointsPerp", "_distance", "_objSlot", "_currentTarget", "_allowedSnapPoints", "_snapObjects", "_class", "_buildingPos"];
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building base building with ghost preview.
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
+
+ Example:
+ [_object] spawn EPOCH_simulSwap;
+
+ Parameter(s):
+ _this select 0: OBJECT - Base building object
+ _this select 1: STRING - Item to consume on build finalization
+
+ Returns:
+ NOTHING
+*/
+private ["_allowedSnapObjects","_nearestObject","_pOffset","_snapPos","_snapPosition","_snapType","_snapDistance","_pos2","_snapPointsPara","_snapPointsPerp","_distance","_objSlot","_currentTarget","_allowedSnapPoints","_class","_dt","_energyCost","_maxHeight","_stabilityCheck","_pos2ATL","_lastCheckTime","_rejectMove","_currentOffSet","_dir2","_up2","_isSnap","_snapPos1","_pos_snapObj","_direction","_pos1_snap","_pos2_snap","_ins","_EPOCH_2","_arr_snapPoints","_pos1","_offSet","_snapConfig","_baselineSnapPos","_nearestObjects","_EPOCH_1","_numberOfContacts","_worldspace","_offsetZPos","_currentPos","_object","_item","_objType","_simulClass","_snapChecks","_maxSnapDistance"];
if !(isNil "EPOCH_simulSwap_Lock") exitWith{};
-_object = _this select 0;
-_item = _this select 1;
+// inputs
+_object = param [0,objNull];
+_item = param [1,""];
+
+// exit if object is nulll
if (isNull _object) exitWith{ EPOCH_target = objNull; };
+// exit if item is not given
+if (_item == "") exitWith{ EPOCH_target = objNull; };
if (EPOCH_playerEnergy <= 0) exitWith{
_dt = ["Need Energy", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
@@ -113,7 +142,7 @@ if (_class != "") then {
};
if (EPOCH_space) then {
- _dir2 = [vectorDir player, EPOCH_buildDirection] call EPOCH_returnVector;
+ _dir2 = [vectorDir player, EPOCH_buildDirection] call BIS_fnc_returnVector;
_up2 = (vectorUp player);
EPOCH_space = false;
EPOCH_target setVectorDirAndUp [_dir2,_up2];
@@ -231,7 +260,7 @@ if (_class != "") then {
_direction = 360 + _direction;
};
- _dir2 = [vectorDir _nearestObject, _direction] call EPOCH_returnVector;
+ _dir2 = [vectorDir _nearestObject, _direction] call BIS_fnc_returnVector;
if (_pos2 select 2 > _maxHeight) then {
_pos2 set[2, _maxHeight];
diff --git a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf b/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf
index feca2b01..f16773c7 100644
--- a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf
+++ b/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf
@@ -1,5 +1,33 @@
-if (isNull _this) exitWith{ false };
+/*
+ Author: Aaron Clark - EpochMod.com
+
+ Contributors:
+
+ Description:
+ Base building upgrade code
+
+ Licence:
+ Arma Public License Share Alike (APL-SA) - https://www.bistudio.com/community/licenses/arma-public-license-share-alike
+
+ Github:
+ https://github.com/EpochModTeam/Epoch/tree/master/Sources/epoch_code/compile/building/EPOCH_upgradeBUILD.sqf
+
+ Example:
+ [cursorTarget,_index] call EPOCH_upgradeBUILD;
+
+ Parameter(s):
+ _this select 0: OBJECT - Base building object
+ _this select 1: NUMBER - index of array from (CfgBaseBuilding >> "upgradeBuilding")
+
+ Returns:
+ NOTHING
+*/
+private ["_buildingJammerRange","_buildingCountLimit","_nearestJammer","_ownedJammerExists","_buildingAllowed","_dt","_missingCount","_canUpgrade","_missingParts","_part","_req","_partCheck","_canUpgradePartCount","_removedPartCount","_return","_upgrade","_upgradeParts","_config","_upgrades","_object","_index","_targeter","_stability","_jammer"];
_return = false;
+_object = param [0,objNull,[objNull]];
+_index = param [1,-1,[0]]; //EPOCH_UpgradeIndex
+if !(_index isEqualTo -1) then {Epoch_upgradeIndex = _index};
+if (isNull _object) exitWith {false};
_buildingAllowed = true;
_ownedJammerExists = false;
@@ -14,7 +42,7 @@ if (_buildingCountLimit == 0) then { _buildingCountLimit = 200; };
EPOCH_buildOption = 1;
-params ["_object"];
+
// check if another player has target
_targeter = _object getVariable["last_targeter", objNull];
@@ -29,10 +57,6 @@ if (_stability > 0) exitWith{
};
};
-
-
-
-
_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
if !(_jammer isEqualTo[]) then {
@@ -54,18 +78,22 @@ if !(_jammer isEqualTo[]) then {
};
if !(_buildingAllowed)exitWith{ false };
-if (_this isKindOf "Constructions_static_F") then {
+if (_object isKindOf "Constructions_static_F") then {
// take upgrade item from player here
_config = 'CfgBaseBuilding' call EPOCH_returnConfig;
- _upgrade = getArray(_config >> (typeOf _this) >> "upgradeBuilding");
- if !(_upgrade isEqualTo []) then {
+
+ _upgrades = getArray(_config >> (typeOf _object) >> "upgradeBuilding");
+ if !(_upgrades isEqualTo []) then {
+
+ // get selected upgrade
+ _upgrade = _upgrades param [Epoch_upgradeIndex,[]];
_upgradeParts = _upgrade select 1;
_canUpgrade = true;
_canUpgradePartCount = 0;
- _missingParts = [];
+ _missingParts = "";
{
_part = _x select 0;
_req = _x select 1;
@@ -78,7 +106,7 @@ if (_this isKindOf "Constructions_static_F") then {
//diag_log format["DEBUG: _missingCount %1", _missingCount];
_canUpgrade = false;
- _missingParts pushBack format["Missing %1 %2", _missingCount, (_part call EPOCH_itemDisplayName)];
+ _missingParts = _missingParts + format["Missing %1 %2, ", _missingCount, (_part call EPOCH_itemDisplayName)];
};
_canUpgradePartCount = _canUpgradePartCount + _req;
} forEach _upgradeParts;
@@ -96,8 +124,9 @@ if (_this isKindOf "Constructions_static_F") then {
if (_canUpgradePartCount == _removedPartCount) then {
// send to server for upgrade
- EPOCH_UPBUILD = [_this,player,Epoch_personalToken];
+ EPOCH_UPBUILD = [_object,player,Epoch_upgradeIndex,Epoch_personalToken];
publicVariableServer "EPOCH_UPBUILD";
+ Epoch_upgradeIndex = nil;
_return = true;
_dt = ["Upgraded", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
};
diff --git a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILDv2.sqf b/Sources/epoch_code/compile/building/EPOCH_upgradeBUILDv2.sqf
deleted file mode 100644
index 6d25bff6..00000000
--- a/Sources/epoch_code/compile/building/EPOCH_upgradeBUILDv2.sqf
+++ /dev/null
@@ -1,113 +0,0 @@
-_return = false;
-_object = param [0,objNull,[objNull]];
-_index = param [1,-1,[0]]; //EPOCH_UpgradeIndex
-if !(_index isEqualTo -1) then {Epoch_upgradeIndex = _index};
-if (isNull _object) exitWith {false};
-
-_buildingAllowed = true;
-_ownedJammerExists = false;
-_nearestJammer = objNull;
-_config = 'CfgEpochClient' call EPOCH_returnConfig;
-_buildingJammerRange = getNumber(_config >> "buildingJammerRange");
-_buildingCountLimit = getNumber(_config >> "buildingCountLimit");
-
-// defaults
-if (_buildingJammerRange == 0) then { _buildingJammerRange = 75; };
-if (_buildingCountLimit == 0) then { _buildingCountLimit = 200; };
-
-EPOCH_buildOption = 1;
-
-
-
-// check if another player has target
-_targeter = _object getVariable["last_targeter", objNull];
-
-if (!isNull _targeter && _targeter != player && (player distance _object > _targeter distance _object)) exitWith{ EPOCH_stabilityTarget = objNull; false };
-
-_stability = _object getVariable["stability", 100];
-if (_stability > 0) exitWith{
- if (isNull EPOCH_stabilityTarget) then {
- _object setVariable["last_targeter", player, true];
- EPOCH_stabilityTarget = _object;
- };
-};
-
-_jammer = nearestObjects[player, ["PlotPole_EPOCH"], _buildingJammerRange];
-
-if !(_jammer isEqualTo[]) then {
- {
- if (alive _x) exitWith{
- _nearestJammer = _x;
- };
- } foreach _jammer;
-
- if !(isNull _nearestJammer) then {
- if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
- _ownedJammerExists = true;
- }
- else {
- _buildingAllowed = false;
- _dt = ["Upgrade Disallowed: Frequency Blocked", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
- };
- };
-};
-if !(_buildingAllowed)exitWith{ false };
-
-if (_object isKindOf "Constructions_static_F") then {
-
- // take upgrade item from player here
- _config = 'CfgBaseBuilding' call EPOCH_returnConfig;
-
- _upgrades = getArray(_config >> (typeOf _object) >> "upgradeBuilding");
- if !(_upgrades isEqualTo []) then {
-
- // get selected upgrade
- _upgrade = _upgrades param [Epoch_upgradeIndex,[]];
-
- _upgradeParts = _upgrade select 1;
-
- _canUpgrade = true;
- _canUpgradePartCount = 0;
- _missingParts = "";
- {
- _part = _x select 0;
- _req = _x select 1;
- _partCheck = {_x == _part} count (magazines player);
- //diag_log format["DEBUG: _partCheck %1", _partCheck];
- //diag_log format["DEBUG: _x %1", _x];
- if (_partCheck < _req) then {
- _missingCount = _req - _partCheck;
-
- //diag_log format["DEBUG: _missingCount %1", _missingCount];
-
- _canUpgrade = false;
- _missingParts = _missingParts + format["Missing %1 %2, ", _missingCount, (_part call EPOCH_itemDisplayName)];
- };
- _canUpgradePartCount = _canUpgradePartCount + _req;
- } forEach _upgradeParts;
-
- _removedPartCount = 0;
- if (_canUpgrade) then {
- {
- for "_i" from 1 to (_x select 1) do {
- if ((_x select 0) in (magazines player)) then {
- player removeMagazine (_x select 0);
- _removedPartCount = _removedPartCount + 1;
- };
- };
- } forEach _upgradeParts;
-
- if (_canUpgradePartCount == _removedPartCount) then {
- // send to server for upgrade
- EPOCH_UPBUILD = [_object,player,Epoch_upgradeIndex,Epoch_personalToken];
- publicVariableServer "EPOCH_UPBUILD";
- Epoch_upgradeIndex = nil;
- _return = true;
- _dt = ["Upgraded", 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
- };
- } else {
- _dt = [format["%1", _missingParts], 0, 1, 5, 2, 0, 1] spawn bis_fnc_dynamictext;
- };
- };
-};
-_return
diff --git a/Sources/epoch_code/compile/building/test.sqf b/Sources/epoch_code/compile/building/test.sqf
deleted file mode 100644
index ed986674..00000000
--- a/Sources/epoch_code/compile/building/test.sqf
+++ /dev/null
@@ -1,180 +0,0 @@
-EPOCH_buildClasses = ["Land_Obstacle_Bridge_F",
-
-"Land_Shoot_House_Wall_F",
-"Land_Shoot_House_Wall_Stand_F",
-"Land_Shoot_House_Wall_Crouch_F",
-"Land_Shoot_House_Wall_Prone_F",
-"Land_Shoot_House_Wall_Long_F",
-"Land_Shoot_House_Wall_Long_Stand_F",
-"Land_Shoot_House_Wall_Long_Crouch_F",
-"Land_Shoot_House_Wall_Long_Prone_F",
-"Land_Shoot_House_Corner_F",
-"Land_Shoot_House_Corner_Stand_F",
-"Land_Shoot_House_Corner_Crouch_F",
-"Land_Shoot_House_Corner_Prone_F",
-"Land_Shoot_House_Panels_F",
-"Land_Shoot_House_Panels_Crouch_F",
-"Land_Shoot_House_Panels_Prone_F",
-"Land_Shoot_House_Panels_Vault_F",
-"Land_Shoot_House_Panels_Window_F",
-"Land_Shoot_House_Panels_Windows_F",
-"Land_Shoot_House_Tunnel_F",
-"Land_Shoot_House_Tunnel_Stand_F",
-"Land_Shoot_House_Tunnel_Crouch_F",
-"Land_Shoot_House_Tunnel_Prone_F",
-
-
-"Land_Obstacle_RunAround_F","Land_Obstacle_Saddle_F","Land_RampConcrete_F","Land_RampConcreteHigh_F","Land_GH_Stairs_F","Land_Billboard_F","Land_HBarrier_1_F","Land_HBarrier_3_F","Land_HBarrier_5_F","Land_Razorwire_F","Land_HBarrierWall6_F","WoodFloor_EPOCH","WoodLargeWall_EPOCH","Land_BagFence_Long_F","Land_BagFence_Corner_F","Land_BagFence_End_F","Land_BagFence_Round_F","Land_BagFence_Short_F"];
-EPOCH_buildClassesCount = count EPOCH_buildClasses - 1;
-Epoch_selectedBuildClasIndex = 0;
-EPOCH_selectedBuildClass = EPOCH_buildClasses select 0;
-
-EPOCH_snapExtents = [];
-
-EPOCH_buildWorldspace = [[0,0,0],[0,0,0],[0,0,0]];
-EPOCH_KeyDownFunctionhandler = {
- _dikCode = _this select 1;
- _shift = _this select 2;
- _ctrl = _this select 3;
- _alt = _this select 4;
-
- switch (_dikCode) do {
- case 0x39 : {
- _worldspace = EPOCH_buildWorldspace;
- _newObj = EPOCH_selectedBuildClass createVehicle (_worldspace select 0);
- _newObj setVectorDirAndUp [_worldspace select 1,_worldspace select 2];
- _newObj setposASL (_worldspace select 0);
- _handled = true;
- };
- case 0xC9 : {
- Epoch_selectedBuildClasIndex = ((Epoch_selectedBuildClasIndex + 1) min EPOCH_buildClassesCount) max 0;
- EPOCH_selectedBuildClass = EPOCH_buildClasses select Epoch_selectedBuildClasIndex;
-
- if !(isNull EPOCH_currentBuildObj) then {
- deleteVehicle EPOCH_currentBuildObj;
- EPOCH_currentBuildObj = EPOCH_selectedBuildClass createVehicle [0,0,0];
- EPOCH_currentBuildObj disableCollisionWith player;
- EPOCH_currentBuildObj setObjectTextureGlobal [0, "#(rgb,8,8,3)color(0,0,1,1)"];
- };
-
- hint EPOCH_selectedBuildClass;
- _handled = true;
- };
- case 0xD1 : {
- Epoch_selectedBuildClasIndex = ((Epoch_selectedBuildClasIndex - 1) min EPOCH_buildClassesCount) max 0;
- EPOCH_selectedBuildClass = EPOCH_buildClasses select Epoch_selectedBuildClasIndex;
- hint EPOCH_selectedBuildClass;
-
- if !(isNull EPOCH_currentBuildObj) then {
- deleteVehicle EPOCH_currentBuildObj;
- EPOCH_currentBuildObj = EPOCH_selectedBuildClass createVehicle [0,0,0];
- EPOCH_currentBuildObj disableCollisionWith player;
- EPOCH_currentBuildObj setObjectTextureGlobal [0, "#(rgb,8,8,3)color(0,0,1,1)"];
- };
-
- _handled = true;
- };
- };
- _handled
-};
-
-
-[] spawn {
- (findDisplay 46) displayRemoveAllEventHandlers "KeyDown";
- (findDisplay 46) displayAddEventHandler["KeyDown",{_this call EPOCH_KeyDownFunctionhandler}];
-};
-
-
-
-
-EPOCH_snapExtents = [];
-_playerPos = player modelToWorld [0,5,5];
-EPOCH_currentBuildObj = EPOCH_selectedBuildClass createVehicle _playerPos;
-EPOCH_currentBuildObj setPosATL _playerPos;
-EPOCH_currentBuildObj disableCollisionWith player;
-_numberOfContacts = 0;
-for "_i" from 0 to 10 do {
-};
-_pos1 = EPOCH_currentBuildObj modelToWorld [0,0,10];
-_pos2 = EPOCH_currentBuildObj modelToWorld [0,0,0];
-_ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
-if (count _ins == 0) then {
-} else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
-
- _fullHeight = _offset select 0;
- _halfHeight = _fullHeight/2;
-
-
-
- _pos1 = EPOCH_currentBuildObj modelToWorld [0,10,_halfHeight];
- _pos2 = EPOCH_currentBuildObj modelToWorld [0,0,_halfHeight];
- _ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
- if (count _ins == 0) then {
- } else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
- };
-
- _pos1 = EPOCH_currentBuildObj modelToWorld [0,-10,_halfHeight];
- _pos2 = EPOCH_currentBuildObj modelToWorld [0,0,_halfHeight];
- _ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
- if (count _ins == 0) then {
- } else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
- };
-
- _pos1 = EPOCH_currentBuildObj modelToWorld [10,0,_halfHeight];
- _pos2 = EPOCH_currentBuildObj modelToWorld [0,0,_halfHeight];
- _ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
- if (count _ins == 0) then {
- } else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
- };
-
- _pos1 = EPOCH_currentBuildObj modelToWorld [-10,0,_halfHeight];
- _pos2 = EPOCH_currentBuildObj modelToWorld [0,0,_halfHeight];
- _ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
- if (count _ins == 0) then {
- } else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
- };
-
-
- _pos1 = EPOCH_currentBuildObj modelToWorld [0,0,-4.5];
- _pos2 = EPOCH_currentBuildObj modelToWorld [0,0,0];
- _ins = lineIntersectsSurfaces [AGLToASL _pos1,AGLToASL _pos2,player];
- if (count _ins == 0) then {
- } else {
- _pos3 = (_ins select 0 select 0);
- if !(surfaceIsWater _pos3) then {_pos3 = ASLtoATL _pos3};
- _offset = EPOCH_currentBuildObj worldToModelVisual _pos3;
- EPOCH_snapExtents pushBack _offset;
- _numberOfContacts = _numberOfContacts + 1;
- };
-
-};
-onEachFrame {
- {
- drawIcon3D ["a3\modules_f\data\iconlock_ca.paa", [1,1,1,1], EPOCH_currentBuildObj modelToWorld _x, 1, 1, 45, "Snap", 1, 0.05, "TahomaB"];
- } forEach EPOCH_snapExtents;
-};
diff --git a/Sources/epoch_code/config.cpp b/Sources/epoch_code/config.cpp
index 7600a908..86e2537c 100644
--- a/Sources/epoch_code/config.cpp
+++ b/Sources/epoch_code/config.cpp
@@ -100,6 +100,13 @@ class cfgFunctions
class initMultiplayer {
file = "\x\addons\a3_epoch_code\compile\bis_functions\MP\fn_initMultiplayer.sqf";
};
+
+ };
+ class functions {
+ // custom Epoch - BIS_fnc_returnVector
+ class returnVector {
+ file = "\x\addons\a3_epoch_code\compile\bis_functions\returnVector.sqf";
+ };
};
};
class EPOCH
@@ -112,6 +119,10 @@ class cfgFunctions
class isAny {
file = "\x\addons\a3_epoch_code\compile\both\EPOCH_isAny.sqf"
};
+ class isAny {
+ file = "\x\addons\a3_epoch_code\compile\both\EPOCH_isAny.sqf"
+ };
+
};
};
};
@@ -161,9 +172,7 @@ class CfgClientFunctions
class isBuildAllowed {};
class simulSwap {};
class staticMove {};
- class returnVector {};
class upgradeBUILD {};
- class upgradeBUILDv2 {};
class removeBUILD {};
class changeWallState {};
class checkBuild {};
diff --git a/Sources/epoch_code/gui/Epoch_GUI_Config.hpp b/Sources/epoch_code/gui/Epoch_GUI_Config.hpp
index 86662ba6..80721945 100644
--- a/Sources/epoch_code/gui/Epoch_GUI_Config.hpp
+++ b/Sources/epoch_code/gui/Epoch_GUI_Config.hpp
@@ -164,7 +164,7 @@ class QuickUpgrade
y = 0.622266 * safezoneH + safezoneY;
w = 0.05875 * safezoneW;
h = 0.0282151 * safezoneH;
- action = "cursorTarget call EPOCH_upgradeBUILDv2";
+ action = "cursorTarget call EPOCH_upgradeBUILD";
};
};
@@ -2582,39 +2582,47 @@ class RscDisplayInventory
idc = 1243;
x = "26.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class BackgroundSlotPrimaryUnderBarrel : BackgroundSlotPrimary
{
idc = 1200;
- x = "29 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "28.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class BackgroundSlotPrimaryFlashlight : BackgroundSlotPrimary
{
idc = 1244;
- x = "31.4 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "30.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class BackgroundSlotPrimaryOptics : BackgroundSlotPrimary
{
idc = 1245;
- x = "33.8 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "32.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+ };
+ class BackgroundSlotPrimaryMagazineGL: BackgroundSlotPrimary
+ {
+ idc = 1267;
+ x = "34.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class BackgroundSlotPrimaryMagazine : BackgroundSlotPrimary
{
idc = 1246;
- x = "36.2 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "36.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
};
class BackgroundSlotSecondary : BackgroundSlotPrimary
@@ -2896,43 +2904,52 @@ class RscDisplayInventory
idc = 620;
x = "26.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
colorText[] = { 0, 0, 0, 0.5 };
};
class SlotPrimaryUnderBarrel : SlotPrimary
{
idc = 641;
- x = "29 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "28.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
colorText[] = { 0, 0, 0, 0.5 };
};
class SlotPrimaryFlashlight : SlotPrimary
{
idc = 622;
- x = "31.4 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "30.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
colorText[] = { 0, 0, 0, 0.5 };
};
class SlotPrimaryOptics : SlotPrimary
{
idc = 621;
- x = "33.8 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "32.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
colorText[] = { 0, 0, 0, 0.5 };
};
+ class SlotPrimaryMagazineGL: SlotPrimary
+ {
+ idc = 644;
+ x = "34.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+ colorText[] = {0,0,0,0.5};
+ };
class SlotPrimaryMagazine : SlotPrimary
{
idc = 623;
- x = "36.2 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+ x = "36.6 * ( ((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
y = "9.1 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - ( ((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
- w = "2.3 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
+ w = "1.9 * ( ((safezoneW / safezoneH) min 1.2) / 40)";
h = "2 * ( ( ((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
colorText[] = { 0, 0, 0, 0.5 };
};
@@ -3393,6 +3410,9 @@ class RscDisplayInventory
};
};
};
+
+
+
class RscDisplayInterrupt: RscStandardDisplay //convert to preprocessFileNumbers
{
onLoad = "[""onLoad"",_this,""RscDisplayInterrupt"",'GUI'] call (uinamespace getvariable 'BIS_fnc_initDisplay'); _this call EPOCH_InterruptConfig;";
diff --git a/Sources/epoch_code/gui/scripts/dynamenu/Epoch_dynamicMenu.sqf b/Sources/epoch_code/gui/scripts/dynamenu/Epoch_dynamicMenu.sqf
index 295499b2..7e556030 100644
--- a/Sources/epoch_code/gui/scripts/dynamenu/Epoch_dynamicMenu.sqf
+++ b/Sources/epoch_code/gui/scripts/dynamenu/Epoch_dynamicMenu.sqf
@@ -66,7 +66,7 @@ _checkConfigs = {
} forEach (_x select 1);
_tooltip = format ["%1 >> %2 ",_dName,_tTip];
- _action = format ["[dyna_cursorTarget,%1] call EPOCH_upgradeBUILDv2; true call Epoch_dynamicMenuCleanup;",_forEachIndex];
+ _action = format ["[dyna_cursorTarget,%1] call EPOCH_upgradeBUILD; true call Epoch_dynamicMenuCleanup;",_forEachIndex];
_buttonSettings pushBack [
_icon,
diff --git a/Sources/epoch_config/Configs/CfgPricing.hpp b/Sources/epoch_config/Configs/CfgPricing.hpp
index 4c548af5..5f46e69d 100644
--- a/Sources/epoch_config/Configs/CfgPricing.hpp
+++ b/Sources/epoch_config/Configs/CfgPricing.hpp
@@ -421,7 +421,7 @@ class CfgPricing
class SLAMDirectionalMine_Wire_Mag {price = 40;};
class APERSTripMine_Wire_Mag {price = 30;};
-
+ // Backpacks
class B_AssaultPack_cbr {price = 10;};
class B_AssaultPack_dgtl {price = 10;};
class B_AssaultPack_khk {price = 10;};
@@ -430,32 +430,32 @@ class CfgPricing
class B_AssaultPack_rgr {price = 10;};
class B_AssaultPack_sgg {price = 10;};
class B_AssaultPack_blk { price = 10; };
- class B_Carryall_cbr {price = 1;};
- class B_Carryall_khk {price = 10;};
- class B_Carryall_mcamo {price = 10;};
- class B_Carryall_ocamo {price = 10;};
- class B_Carryall_oli {price = 10;};
- class B_Carryall_oucamo {price = 10;};
- class B_FieldPack_blk {price = 10;};
- class B_FieldPack_cbr {price = 10;};
- class B_FieldPack_khk {price = 10;};
- class B_FieldPack_ocamo {price = 10;};
- class B_FieldPack_oli {price = 10;};
- class B_FieldPack_oucamo {price = 10;};
- class B_Kitbag_cbr {price = 10;};
- class B_Kitbag_mcamo {price = 10;};
- class B_Kitbag_rgr {price = 10;};
- class B_Kitbag_sgg {price = 10;};
- class B_Parachute {price = 15;};
- class B_TacticalPack_blk {price = 10;};
- class B_TacticalPack_mcamo {price = 10;};
- class B_TacticalPack_ocamo {price = 10;};
- class B_TacticalPack_oli {price = 10;};
- class B_TacticalPack_rgr {price = 10;};
- class smallbackpack_red_epoch {price = 10;};
- class smallbackpack_green_epoch {price = 10;};
- class smallbackpack_teal_epoch {price = 10;};
- class smallbackpack_pink_epoch {price = 10;};
+ class B_Carryall_cbr {price = 40;};
+ class B_Carryall_khk {price = 40;};
+ class B_Carryall_mcamo {price = 40;};
+ class B_Carryall_ocamo {price = 40;};
+ class B_Carryall_oli {price = 40;};
+ class B_Carryall_oucamo {price = 40;};
+ class B_FieldPack_blk {price = 15;};
+ class B_FieldPack_cbr {price = 15;};
+ class B_FieldPack_khk {price = 15;};
+ class B_FieldPack_ocamo {price = 15;};
+ class B_FieldPack_oli {price = 15;};
+ class B_FieldPack_oucamo {price = 15;};
+ class B_Kitbag_cbr {price = 25;};
+ class B_Kitbag_mcamo {price = 25;};
+ class B_Kitbag_rgr {price = 25;};
+ class B_Kitbag_sgg {price = 25;};
+ class B_Parachute {price = 25;};
+ class B_TacticalPack_blk {price = 20;};
+ class B_TacticalPack_mcamo {price = 20;};
+ class B_TacticalPack_ocamo {price = 20;};
+ class B_TacticalPack_oli {price = 20;};
+ class B_TacticalPack_rgr {price = 20;};
+ class smallbackpack_red_epoch {price = 22;};
+ class smallbackpack_green_epoch {price = 22;};
+ class smallbackpack_teal_epoch {price = 22;};
+ class smallbackpack_pink_epoch {price = 22;};
// Marksman DLC
class U_O_FullGhillie_lsh { price = 7; };
diff --git a/Sources/epoch_config/Configs/CfgVehicles/Fixes.hpp b/Sources/epoch_config/Configs/CfgVehicles/Fixes.hpp
index eeff60c6..9dc9c960 100644
--- a/Sources/epoch_config/Configs/CfgVehicles/Fixes.hpp
+++ b/Sources/epoch_config/Configs/CfgVehicles/Fixes.hpp
@@ -100,3 +100,51 @@ class Land_Communication_F : House_F
killed = "if (isServer) then {this call compile preprocessFileLineNumbers ""\A3\Structures_F\Ind\Transmitter_Tower\Scripts\tower_ruins.sqf""};";
};
};
+
+
+/*
+ Increase Backpack storage limits to balance for changes since 1.54
+*/
+class Bag_Base;
+class B_AssaultPack_Base: Bag_Base
+{
+ model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Compact";
+ descriptionShort = "Load: 360, Mass: 20";
+ hiddenSelectionsTextures[] = {"\A3\weapons_f\ammoboxes\bags\data\backpack_compact_khk_co.paa"};
+ maximumLoad = 360;
+ mass = 20;
+};
+class B_FieldPack_Base: Bag_Base
+{
+ model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Gorod";
+ descriptionShort = "Load: 400, Mass: 30";
+ hiddenSelectionsTextures[] = {"\A3\weapons_f\ammoboxes\bags\data\backpack_gorod_cbr_co.paa"};
+ maximumLoad = 400;
+ mass = 30;
+};
+class B_TacticalPack_Base: Bag_Base
+{
+ model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Small";
+ descriptionShort = "Load: 480, Mass: 40";
+ hiddenSelectionsTextures[] = {"\A3\weapons_f\ammoboxes\bags\data\backpack_small_co.paa"};
+ maximumLoad = 480;
+ mass = 40;
+};
+class B_Kitbag_Base: Bag_Base
+{
+ picture = "\A3\Weapons_F\ammoboxes\bags\data\ui\icon_B_C_Kitbag_rgr";
+ descriptionShort = "Load: 520, Mass: 50";
+ model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Fast";
+ hiddenSelectionsTextures[] = {"\A3\weapons_f\ammoboxes\bags\data\backpack_fast_rgr_co.paa"};
+ maximumLoad = 520;
+ mass = 50;
+};
+class B_Carryall_Base: Bag_Base
+{
+ model = "\A3\weapons_f\Ammoboxes\bags\Backpack_Tortila";
+ descriptionShort = "Load: 550, Mass: 60";
+ picture = "\A3\Weapons_F\Ammoboxes\Bags\data\UI\icon_B_C_Tortila_khk.paa";
+ hiddenSelectionsTextures[] = {"\A3\weapons_f\ammoboxes\bags\data\backpack_tortila_khk_co.paa"};
+ maximumLoad = 550;
+ mass = 60;
+};
diff --git a/Sources/epoch_config/Configs/CfgWeapons.hpp b/Sources/epoch_config/Configs/CfgWeapons.hpp
index 555fe72b..fe384dc6 100644
--- a/Sources/epoch_config/Configs/CfgWeapons.hpp
+++ b/Sources/epoch_config/Configs/CfgWeapons.hpp
@@ -2206,6 +2206,14 @@ class CfgWeapons
class WeaponSlotsInfo;
class GunParticles;
};
+ class Rifle_Long_Base_F: Rifle_Base_F
+ {
+ class WeaponSlotsInfo: WeaponSlotsInfo
+ {
+ allowedSlots[] = {901};
+ };
+ };
+
class UGL_F;
class Epoch_weapon_01_Base_F: Rifle_Base_F
{
@@ -3080,13 +3088,7 @@ class CfgWeapons
};
};*/
- class Rifle_Long_Base_F : Rifle_Base_F
- {
- class WeaponSlotsInfo : WeaponSlotsInfo
- {
- allowedSlots[] = {901};
- };
- };
+
class ItemRadio;
class EpochRadio0 : ItemRadio {
diff --git a/Sources/epoch_config/config.cpp b/Sources/epoch_config/config.cpp
index 567b0b71..6a708e7e 100644
--- a/Sources/epoch_config/config.cpp
+++ b/Sources/epoch_config/config.cpp
@@ -30,7 +30,7 @@ class CfgPatches
units[] = { "Epoch_Female_F", "Epoch_Male_F", "Epoch_Cloak_F", "Epoch_Sapper_F", "Epoch_Ent_Small_F", "Epoch_Ent_Med_F", "Epoch_Ent_Large_F", "Land_Test_House_01_F", "Land_Test_House_01_dam_F", "Land_Test_House_01_ruins_F", "Epoch_Test", "C_Test_Car_01_F", "C_Hatchback_01_EPOCH", "C_Hatchback_02_EPOCH", "C_Offroad_01_EPOCH", "C_Quadbike_01_EPOCH", "C_SUV_01_EPOCH", "C_Rubberboat_EPOCH", "C_Rubberboat_02_EPOCH", "C_Rubberboat_03_EPOCH", "C_Rubberboat_04_EPOCH", "C_Van_01_box_EPOCH", "C_Van_01_transport_EPOCH", "C_Boat_Civil_01_EPOCH", "C_Boat_Civil_01_police_EPOCH", "C_Boat_Civil_01_rescue_EPOCH", "B_Heli_Light_01_EPOCH", "B_Heli_Transport_01_EPOCH", "B_Heli_Transport_01_camo_EPOCH", "B_SDV_01_EPOCH", "B_MRAP_01_EPOCH", "B_Truck_01_transport_EPOCH", "B_Truck_01_covered_EPOCH", "B_Truck_01_mover_EPOCH", "B_Truck_01_box_EPOCH", "O_Truck_02_covered_EPOCH", "O_Truck_02_transport_EPOCH", "O_Truck_03_covered_EPOCH", "O_Truck_02_box_EPOCH", "O_Heli_Light_02_unarmed_EPOCH", "I_Heli_Transport_02_EPOCH", "I_Heli_light_03_unarmed_EPOCH", "O_Test_Tank_01", "Sword_SIM_EPOCH", "SapperHead_SIM_EPOCH", "SapperCorpse_SIM_EPOCH", "MetalFloor_SIM_EPOCH", "WoodRamp_SIM_EPOCH", "CinderWallHalf_SIM_EPOCH", "CinderWall_SIM_EPOCH", "CinderWallDoorway_SIM_EPOCH", "CinderWallSmallDoorway_SIM_EPOCH", "WoodFloor_SIM_EPOCH", "WoodFloorHalf_SIM_EPOCH", "WoodFloorQuarter_SIM_EPOCH", "WoodLargeWall_SIM_EPOCH", "WoodLargeWallCor_SIM_EPOCH", "WoodLargeWallDoorway_SIM_EPOCH", "WoodLargeWallDoor_SIM_EPOCH", "WoodLargeWallWin_SIM_EPOCH", "WoodSmallWallThird_SIM_EPOCH", "WoodStairs_SIM_EPOCH", "WoodLadder_SIM_EPOCH", "WoodStairsSans_SIM_EPOCH", "Shelf_SIM_EPOCH", "Chair_SIM_EPOCH", "ChairRed_SIM_EPOCH", "Filing_SIM_EPOCH", "Fridge_SIM_EPOCH", "Bed_SIM_EPOCH", "Couch_SIM_EPOCH", "Wardrobe_SIM_EPOCH", "Locker_SIM_EPOCH", "Cooker_SIM_EPOCH", "Pelican_SIM_EPOCH", "Land_SIM_EPOCH_WoodDoor_Base", "Land_SIM_EPOCH_WoodDoorLocked_Base", "CinderWallDoor_SIM_EPOCH_Base", "CinderWallDoorLocked_SIM_EPOCH_Base", "Land_SIM_EPOCH_WoodDoor", "Land_SIM_EPOCH_WoodDoorLocked", "Land_SIM_EPOCH_LargeWoodDoor", "Land_SIM_EPOCH_LargeWoodDoorLocked", "Land_SIM_EPOCH_GarageWoodDoor", "Land_SIM_EPOCH_GarageWoodDoorLocked", "CinderWallDoorLocked_SIM_EPOCH", "CinderWallDoor_SIM_EPOCH", "CinderWallDoorSmallLocked_SIM_EPOCH", "CinderWallDoorSmall_SIM_EPOCH", "Foundation_EPOCH", "Foundation_Ghost_EPOCH", "Sword_EPOCH", "MetalFloor_EPOCH", "WoodRamp_EPOCH", "CinderWallHalf_EPOCH", "CinderWall_EPOCH", "CinderWallDoorway_EPOCH", "CinderWallSmallDoorway_EPOCH", "WoodFloor_EPOCH", "WoodFloorHalf_EPOCH", "WoodFloorQuarter_EPOCH", "WoodLargeWall_EPOCH", "WoodLargeWallCor_EPOCH", "WoodLargeWallDoorway_EPOCH", "WoodLargeWallDoor_EPOCH", "WoodLargeWallWin_EPOCH", "WoodSmallWallThird_EPOCH", "WoodStairs_EPOCH", "WoodLadder_EPOCH", "WoodStairsSans_EPOCH", "Shelf_EPOCH", "Fridge_EPOCH", "Pelican_EPOCH", "BedProxy_EPOCH", "Bed_EPOCH", "CouchProxy_EPOCH", "Couch_EPOCH", "ChairProxy_EPOCH", "Chair_EPOCH", "ChairRed_EPOCH", "FilingProxy_EPOCH", "Filing_EPOCH", "Land_EPOCH_WoodDoor_Base", "Land_EPOCH_WoodDoorLocked_Base", "CinderWallDoor_EPOCH_Base", "CinderWallDoorLocked_EPOCH_Base", "Land_EPOCH_WoodDoor", "Land_EPOCH_WoodDoorLocked", "Land_EPOCH_LargeWoodDoor", "Land_EPOCH_LargeWoodDoorLocked", "Land_EPOCH_GarageWoodDoor", "Land_EPOCH_GarageWoodDoorLocked", "CinderWallDoorLocked_EPOCH", "CinderWallDoor_EPOCH", "CinderWallDoorSmallLocked_EPOCH", "CinderWallDoorSmall_EPOCH", "Poppy_EPOCH", "Land_WoodenBox_C_EPOCH", "Land_PaperBox_C_EPOCH", "centerplane_ui" };
weapons[] = { "U_Test_uniform", "U_Test1_uniform", "V_F0_EPOCH", "V_F1_EPOCH", "V_F2_EPOCH", "V_F3_EPOCH", "V_F4_EPOCH", "V_F5_EPOCH", "V_F6_EPOCH", "V_F7_EPOCH", "V_1_EPOCH", "V_2_EPOCH", "V_3_EPOCH", "V_4_EPOCH", "V_5_EPOCH", "V_6_EPOCH", "V_7_EPOCH", "V_8_EPOCH", "V_9_EPOCH", "V_10_EPOCH", "V_11_EPOCH", "V_12_EPOCH", "V_13_EPOCH", "V_14_EPOCH", "V_15_EPOCH", "V_16_EPOCH", "V_17_EPOCH", "V_18_EPOCH", "V_19_EPOCH", "V_20_EPOCH", "V_21_EPOCH", "V_22_EPOCH", "V_23_EPOCH", "V_24_EPOCH", "V_25_EPOCH", "V_26_EPOCH", "V_27_EPOCH", "V_28_EPOCH", "V_29_EPOCH", "V_30_EPOCH", "V_31_EPOCH", "V_32_EPOCH", "V_33_EPOCH", "V_34_EPOCH", "V_35_EPOCH", "V_36_EPOCH", "V_37_EPOCH", "V_38_EPOCH", "V_39_EPOCH", "V_40_EPOCH", "H_F0_EPOCH", "H_F1_EPOCH", "H_F2_EPOCH", "H_F3_EPOCH", "H_F4_EPOCH", "H_F5_EPOCH", "H_11_EPOCH", "H_28_EPOCH", "Rollins_F", "ChainSaw", "ChainSawB", "ChainSawG", "ChainSawP", "ChainSawR", "MultiGun", "Drink", "MeleeSledge", "test_suppressor", "Defib_EPOCH", "Heal_EPOCH", "Repair_EPOCH", , "sr25_epoch", "sr25_ec_epoch", "muzzle_sr25S_epoch", "l85a2_base_epoch", "l85a2_epoch", "l85a2_ris_epoch", "l85a2_ris_ng_epoch", "l85a2_pink_epoch", "l85a2_ugl_epoch" };
requiredVersion = 0.1;
- requiredAddons[] = { "a3_map_altis", "a3_map_stratis", "A3_epoch_assets_3", "a3_epoch_weapons", "epoch_objects", "A3_epoch_vehicles", "A3_epoch_assets_1", "A3_epoch_assets", "A3_Soft_F", "A3_Characters_F", "A3_Characters_F_Beta", "A3_Characters_F_EPA", "A3_Characters_F_EPB", "A3_Structures_F", "A3_Armor_F_Beta", "A3_Data_F", "A3_Weapons_F", "A3_Characters_F_Kart", "A3_Soft_F_Kart_Kart_01", "a2_epoch_weapons", "A3_Air_F_Gamma_UAV_01", "A3_Soft_F_Car", "A3_Soft_F_Heli_Car", "A3_Soft_F_Offroad_01", "A3_Soft_F_Quadbike", "A3_Soft_F_Heli_Quadbike", "A3_Soft_F_SUV", "A3_Soft_F_Heli_SUV", "A3_Boat_F_Boat_Transport_01", "A3_Soft_F_Truck", "A3_Soft_F_Heli_Truck", "A3_Soft_F_Bootcamp_Truck", "A3_Boat_F_Civilian_Boat", "A3_Air_F_Heli_Light_01", "A3_Air_F_Heli_Heli_Light_01", "A3_Air_F_Beta_Heli_Transport_01", "A3_Boat_F_SDV_01", "A3_Boat_F_Heli_SDV_01", "A3_Soft_F_MRAP_01", "A3_Soft_F_Heli_MRAP_01", "A3_Soft_F_HEMTT", "A3_Soft_F_Gamma_HEMTT", "A3_Soft_F_TruckHeavy", "A3_Soft_F_Gamma_TruckHeavy", "A3_Soft_F_EPC_Truck_03", "A3_Air_F_Heli_Light_02", "A3_Air_F_Beta_Heli_Transport_02", "A3_Air_F_EPB_Heli_Light_03", "A3_Air_F_Heli_Heli_Transport_04", "A3_Air_F_Heli_Heli_Transport_03", "A3_Animals_F_Dog", "A3_Animals_F_Rabbit", "A3_Animals_F_Chicken", "A3_Characters_F_Common", "A3_Structures_F_Ind_Transmitter_Tower", "a3_epoch_structures" };
+ requiredAddons[] = { "a3_map_altis", "a3_map_stratis", "A3_epoch_assets_3", "a3_epoch_weapons", "epoch_objects", "A3_epoch_vehicles", "A3_epoch_assets_1", "A3_epoch_assets", "A3_Soft_F", "A3_Characters_F", "A3_Characters_F_Beta", "A3_Characters_F_EPA", "A3_Characters_F_EPB", "A3_Structures_F", "A3_Armor_F_Beta", "A3_Data_F", "A3_Weapons_F", "A3_Weapons_F_LongRangeRifles_M320", "A3_Weapons_F_LongRangeRifles_GM6","A3_Weapons_F_EBR", "A3_Weapons_F_EPA_LongRangeRifles_DMR_01", "A3_Weapons_F_Machineguns_M200", "A3_Weapons_F_Machineguns_Zafir", "A3_Weapons_F_Mark_LongRangeRifles_DMR_02", "A3_Weapons_F_Mark_LongRangeRifles_DMR_03", "A3_Weapons_F_Mark_LongRangeRifles_DMR_04", "A3_Weapons_F_Mark_LongRangeRifles_DMR_05", "A3_Weapons_F_Mark_LongRangeRifles_DMR_06","A3_Characters_F_Kart", "A3_Soft_F_Kart_Kart_01", "a2_epoch_weapons", "A3_Air_F_Gamma_UAV_01", "A3_Soft_F_Car", "A3_Soft_F_Heli_Car", "A3_Soft_F_Offroad_01", "A3_Soft_F_Quadbike", "A3_Soft_F_Heli_Quadbike", "A3_Soft_F_SUV", "A3_Soft_F_Heli_SUV", "A3_Boat_F_Boat_Transport_01", "A3_Soft_F_Truck", "A3_Soft_F_Heli_Truck", "A3_Soft_F_Bootcamp_Truck", "A3_Boat_F_Civilian_Boat", "A3_Air_F_Heli_Light_01", "A3_Air_F_Heli_Heli_Light_01", "A3_Air_F_Beta_Heli_Transport_01", "A3_Boat_F_SDV_01", "A3_Boat_F_Heli_SDV_01", "A3_Soft_F_MRAP_01", "A3_Soft_F_Heli_MRAP_01", "A3_Soft_F_HEMTT", "A3_Soft_F_Gamma_HEMTT", "A3_Soft_F_TruckHeavy", "A3_Soft_F_Gamma_TruckHeavy", "A3_Soft_F_EPC_Truck_03", "A3_Air_F_Heli_Light_02", "A3_Air_F_Beta_Heli_Transport_02", "A3_Air_F_EPB_Heli_Light_03", "A3_Air_F_Heli_Heli_Transport_04", "A3_Air_F_Heli_Heli_Transport_03", "A3_Animals_F_Dog", "A3_Animals_F_Rabbit", "A3_Animals_F_Chicken", "A3_Characters_F_Common", "A3_Structures_F_Ind_Transmitter_Tower", "a3_epoch_structures", "A3_Weapons_F_Ammoboxes" };
magazines[] = { "30Rnd_test_mag", "5Rnd_rollins_mag", "CSGAS", "sledge_swing", "30Rnd_test_mag_Tracer", "EnergyPack", "1Rnd_Soda", "1Rnd_Food", "WoodLog_EPOCH", "PaintCanBlk", "PaintCanBlu", "PaintCanBrn", "PaintCanGrn", "PaintCanOra", "PaintCanPur", "PaintCanRed", "PaintCanTeal", "PaintCanYel" };
ammo[] = { "B_EnergyPack", "B_Swing", "Sapper_Charge_Ammo", "SapperB_Charge_Ammo", "B_Soda", "B_Food", "B_Test_Caseless", "ChainSaw_Bullet", "SmokeShellCustom" };
epochVersion = "0.3.6.0";
diff --git a/Sources/epoch_server_settings/configs/security/data/custom_vars.h b/Sources/epoch_server_settings/configs/security/data/custom_vars.h
index 9c27559c..85d955d2 100644
--- a/Sources/epoch_server_settings/configs/security/data/custom_vars.h
+++ b/Sources/epoch_server_settings/configs/security/data/custom_vars.h
@@ -124,7 +124,7 @@ bis[] = {
};
epoch[] = {
"epoch_localcleanup","epoch_client_publiceh","epoch_clientinit","epoch_oneachframe","epoch_masterloop","epoch_client_rejectplayer","epoch_clientrespawn","epoch_clientrevive","epoch_starttradereq","epoch_starttrade","epoch_traderequest","epoch_tradeloop","epoch_countdown",
- "epoch_fnc_selecttarget","epoch_fnc_selecttargetbuild","epoch_isbuildallowed","epoch_simulswap","epoch_staticmove","epoch_returnvector","epoch_upgradebuild","epoch_removebuild","epoch_startinteract","epoch_startinteractnpc","epoch_interactnpc","epoch_npctraderadd",
+ "epoch_fnc_selecttarget","epoch_fnc_selecttargetbuild","epoch_isbuildallowed","epoch_simulswap","epoch_staticmove","BIS_fnc_returnVector","epoch_upgradebuild","epoch_removebuild","epoch_startinteract","epoch_startinteractnpc","epoch_interactnpc","epoch_npctraderadd",
"epoch_npctraderadd2","epoch_npctraderadd3","epoch_startnpctradermenu","epoch_npctradermenufilter","epoch_startnpctrade","epoch_makep2ptrade","epoch_tradefilter","epoch_takecrypto","epoch_startbanktransfer","epoch_keydown","epoch_onchar",
"epoch_fnc_playerdeath","epoch_fnc_playerfired","epoch_fnc_isinsidebuilding","epoch_fnc_weather","epoch_fnc_findsafepos","epoch_pushcustomvar","epoch_itempicture","epoch_itemdisplayname","epoch_fnc_findrandomposbehind","epoch_fnc_stringleft",
"epoch_sortarraybydistance","epoch_client_earthquake","epoch_client_loadanimalbrain","epoch_client_biteplayer","epoch_client_repairvehicle","epoch_client_lockvehicle","epoch_client_fillvehicle","epoch_client_gearvehicle","epoch_mission_accept","epoch_mission_hover_uav",