Permalink
Browse files

Merge pull request #684 from EpochModTeam/experimental

release 0.4 b672
  • Loading branch information...
2 parents 461af9b + fa834ce commit 241a247c08124cf3e697d133d611807e79dbce7c @vbawol vbawol committed on GitHub Dec 13, 2016
Showing with 247 additions and 89 deletions.
  1. BIN Server_Install_Pack/@epochhive/addons/epoch_server.pbo
  2. BIN Server_Install_Pack/@epochhive/addons/epoch_server_core.pbo
  3. BIN Server_Install_Pack/@epochhive/addons/epoch_server_settings.pbo
  4. +16 −0 Server_Install_Pack/@epochhive/epochconfig.hpp
  5. BIN Server_Install_Pack/mpmissions/epoch.Altis.pbo
  6. BIN Server_Install_Pack/mpmissions/epoch.Australia.pbo
  7. BIN Server_Install_Pack/mpmissions/epoch.Bootcamp_ACR.pbo
  8. BIN Server_Install_Pack/mpmissions/epoch.Bornholm.pbo
  9. BIN Server_Install_Pack/mpmissions/epoch.Chernarus.pbo
  10. BIN Server_Install_Pack/mpmissions/epoch.Chernarus_Summer.pbo
  11. BIN Server_Install_Pack/mpmissions/epoch.Desert_E.pbo
  12. BIN Server_Install_Pack/mpmissions/epoch.Esseker.pbo
  13. BIN Server_Install_Pack/mpmissions/epoch.Mountains_ACR.pbo
  14. BIN Server_Install_Pack/mpmissions/epoch.Napf.pbo
  15. BIN Server_Install_Pack/mpmissions/epoch.Porto.pbo
  16. BIN Server_Install_Pack/mpmissions/epoch.ProvingGrounds_PMC.pbo
  17. BIN Server_Install_Pack/mpmissions/epoch.Sara.pbo
  18. BIN Server_Install_Pack/mpmissions/epoch.SaraLite.pbo
  19. BIN Server_Install_Pack/mpmissions/epoch.Sara_dbe1.pbo
  20. BIN Server_Install_Pack/mpmissions/epoch.Shapur_BAF.pbo
  21. BIN Server_Install_Pack/mpmissions/epoch.Stratis.pbo
  22. BIN Server_Install_Pack/mpmissions/epoch.Takistan.pbo
  23. BIN Server_Install_Pack/mpmissions/epoch.Tanoa.pbo
  24. BIN Server_Install_Pack/mpmissions/epoch.VR.pbo
  25. BIN Server_Install_Pack/mpmissions/epoch.Woodland_ACR.pbo
  26. BIN Server_Install_Pack/mpmissions/epoch.Zargabad.pbo
  27. BIN Server_Install_Pack/mpmissions/epoch.utes.pbo
  28. BIN Server_Install_Pack/mpmissions/epoch_RyanZed.Tanoa.pbo
  29. +8 −6 Sources/epoch_code/compile/EPOCH_consumeItem.sqf
  30. +41 −55 Sources/epoch_code/compile/building/EPOCH_isBuildAllowed.sqf
  31. +1 −1 Sources/epoch_code/compile/building/EPOCH_simulSwap.sqf
  32. +2 −2 Sources/epoch_code/compile/building/EPOCH_staticMove.sqf
  33. +115 −0 Sources/epoch_config/Configs/CfgPricing.hpp
  34. +1 −1 Sources/epoch_config/build.hpp
  35. +1 −1 Sources/epoch_server/build.hpp
  36. +13 −0 Sources/epoch_server/compile/epoch_bases/EPOCH_server_loadBuildings.sqf
  37. +26 −1 Sources/epoch_server/compile/epoch_bases/EPOCH_server_saveBuilding.sqf
  38. +4 −8 Sources/epoch_server/compile/epoch_server/EPOCH_serverCommand.sqf
  39. +15 −0 Sources/epoch_server/compile/epoch_vehicle/EPOCH_load_storage.sqf
  40. +1 −11 Sources/epoch_server/init/server_init.sqf
  41. +1 −1 Sources/epoch_server_core/build.hpp
  42. +1 −1 Sources/epoch_server_settings/build.hpp
  43. +1 −1 build.txt
Binary file not shown.
@@ -40,6 +40,22 @@ removevehmagazinesturret[] = { // Remove these Magazines from the given Turret f
{"200Rnd_40mm_G_belt",{0}}
};
+// BaseBuilding
+UseIndestructible = false; // Enable / Disable Indestructible BaseObjects
+IndestructibleBaseObjects[] = { // Can be Names or Classes
+ "Constructions_static_F",
+ "Buildable_Storage",
+ "PlotPole_EPOCH",
+ "LockBox_EPOCH",
+ "Safe_EPOCH"
+ };
+ExceptedBaseObjects[] = { // Not Indestructible, also if in a Class of IndestructibleBaseObjects
+ "CinderWallGarage_EPOCH",
+ "WoodLargeWallDoorL_EPOCH",
+ "WoodLargeWallDoor_EPOCH",
+ "WoodWall4_EPOCH"
+ };
+
// Traders
taxRate = 0.1; // controls the price increase for purchases
starterTraderItems[] = { { "ItemSodaBurst", "meatballs_epoch", "MortarBucket", "CinderBlocks", "VehicleRepair", "CircuitParts", "ItemCorrugated", "PartPlankPack", "ItemRock", "ItemRope", "ItemStick" }, { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 } }; // Starter Items for fresh spawned trader first array is classnames second is quantity.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -121,21 +121,23 @@ switch _interactOption do {
if (_otherObjects isEqualTo []) then {
_object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"];
_object setDir ((getDir player) - 180);
+ [format["Press '%1' to drop object.", "1"], 5] call Epoch_message;
if (([player, _item] call BIS_fnc_invRemove) == 1) then {
[_object] spawn EPOCH_simulSwap;
};
- } else {
+ }
+ else {
["Building Disallowed: Frequency Unstable", 5] call Epoch_message;
};
- } else {
+ }
+ else {
_object=createVehicle[_buildClass,_pos,[],0,"CAN_COLLIDE"];
_object setDir ((getDir player) - 180);
+ [format["Press '%1' to drop object.", "1"], 5] call Epoch_message;
[_object,_item] spawn EPOCH_staticMove;
};
- // _object spawn EPOCH_countdown;
- [format["Press '%1' to drop object.", "1"], 5] call Epoch_message;
-
- } else {
+ }
+ else {
["Need Energy", 5] call Epoch_message;
};
};
@@ -28,8 +28,8 @@ private ["_alljammer","_buildingAllowed","_buildingCountLeader","_buildingCountL
_buildingAllowed = true;
_ownedJammerExists = false;
-_scl = false;
-_gcl = true;
+_useSplitCountLimits = false;
+_useGroupCountLimits = true;
_nearestJammer = objNull;
// reject building if in vehicle
@@ -48,8 +48,8 @@ _storageCountPerMember = getNumber(_config >> "storageCountPerMember");
_minJammerDistance = getNumber(_config >> "minJammerDistance");
_maxBuildingHeight = getNumber(_config >> "maxBuildingHeight");
_jammerPerGroup = getNumber(_config >> "jammerPerGroup");
-if(getNumber(_config >> "useGroupCountLimits") == 0)then{_gcl=false};
-if(getNumber(_config >> "splitCountLimits") == 1)then{_scl=true};
+if(getNumber(_config >> "useGroupCountLimits") == 0)then{_useGroupCountLimits=false};
+if(getNumber(_config >> "splitCountLimits") == 1)then{_useSplitCountLimits=true};
if(_buildingJammerRange == 0)then{_buildingJammerRange = 75};
if(_buildingCountLimit == 0)then{_buildingCountLimit = 200};
if(_buildingCountLeader == 0)then{_buildingCountLeader = _buildingCountLimit};
@@ -81,68 +81,55 @@ if !(_jammer isEqualTo []) then {
["Building Disallowed: Existing Jammer Signal", 5] call Epoch_message;
};
} foreach _jammer;
- } else {
+ }
+ else {
{
if (alive _x && (_x distance player) <= _buildingJammerRange) exitWith{
_nearestJammer = _x;
};
} foreach _jammer;
if !(isNull _nearestJammer) then {
- if ((getPosATL player) select 2 < _maxBuildingHeight) then {
- if ((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) then {
- _ownedJammerExists = true;
- } else {
- _buildingAllowed = false;
- ["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
- };
- if(_gcl)then{
- _membercount = 0;
- if(count Epoch_my_Group > 0)then{_membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4)}
+ if !((_nearestJammer getVariable["BUILD_OWNER", "-1"]) in[getPlayerUID player, Epoch_my_GroupUID]) exitwith {
+ _buildingAllowed = false;
+ ["Building Disallowed: Frequency Blocked", 5] call Epoch_message;
+ };
+ _ownedJammerExists = true;
+ if(_useGroupCountLimits)then{
+ _membercount = 0;
+ if(count Epoch_my_Group > 0)then{
+ _membercount = count (Epoch_my_Group select 3) + count (Epoch_my_Group select 4)
};
- if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"])then[{
- if(_scl)then{
- if(_gcl)then{
- _storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount);
- if((_storageCountLeader + _storageCountPerMember) > _storageCountLimit)then{_storageCountLimit = _storageCountLeader}
- };
- if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F",_ghostClass],_buildingJammerRange]) >= _storageCountLimit)then{
- _buildingAllowed = false;
- [format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message
- }
- }else{
- if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)};
- if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= _buildingCountLimit)then{
- _buildingAllowed = false;
- [format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
- }
- }
- },{
- //a try to prevent bugusing (TODO: not working for storage objects atm)
- if((count nearestObjects[_nearestJammer,[_ghostClass],_buildingJammerRange]) >= 2)exitWith{ //setting this too low may not be player-friendly. Recommend: >= 2
+ _storageCountLimit = _storageCountLeader + (_storageCountPerMember * _membercount);
+ _buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount);
+ };
+ if (_useSplitCountLimits) then {
+ if(_objType in ["WorkBench_EPOCH","StorageShelf_EPOCH","Tipi_EPOCH","LockBox_EPOCH","Safe_EPOCH","StorageShelf_SIM_EPOCH","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","Workbench_SIM_EPOCH","Tipi_SIM_EPOCH"]) then {
+ if ((count (nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH"],_buildingJammerRange]-[_obj])) >= _storageCountLimit) exitwith {
_buildingAllowed = false;
- ["Building Disallowed: Frequency Unstable, Wait A Moment",5] call Epoch_message
+ [format["Building Disallowed: Max. %1 Storage Objects",_storageCountLimit],5] call Epoch_message
};
-
- if(_gcl)then{_buildingCountLimit = _buildingCountLeader + (_buildingCountPerMember * _membercount)};
- if(_scl)then{
- if((count nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{
- _buildingAllowed = false;
- [format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message
- }
- }else{
- if((count nearestObjects[_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","Constructions_static_F","Constructions_foundation_F",_ghostClass],_buildingJammerRange]) >= (_buildingCountLimit +1))then{
- _buildingAllowed = false;
- [format["Building Disallowed: Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
- }
- }
- }]
- }else{
+ }
+ else {
+ if ((count (nearestObjects[_nearestJammer,["Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
+ _buildingAllowed = false;
+ [format["Building Disallowed: Max. %1 Constructions",_buildingCountLimit],5] call Epoch_message
+ };
+ };
+ }
+ else {
+ if ((count (nearestObjects [_nearestJammer,["Buildable_Storage","Constructions_lockedstatic_F","LockBox_SIM_EPOCH","Safe_SIM_EPOCH","StorageShelf_SIM_EPOCH","WorkBench_SIM_EPOCH","Constructions_static_F","Constructions_foundation_F","Const_Ghost_EPOCH"],_buildingJammerRange]-[_obj])) >= _buildingCountLimit) exitwith {
+ _buildingAllowed = false;
+ [format["Building Disallowed, Frequency Overloaded: Limit %1",_buildingCountLimit],5] call Epoch_message
+ };
+ };
+ if !((getPosATL player) select 2 < _maxBuildingHeight) exitwith {
_buildingAllowed = false;
["Building Disallowed: Max building height reached",5] call Epoch_message;
};
};
};
-}else{
+}
+else {
if (_objType in ["PlotPole_EPOCH", "PlotPole_SIM_EPOCH"]) then {
// TODO: rework not ideal to use allmissionobjects
_alljammer = allmissionobjects 'PlotPole_EPOCH';
@@ -166,9 +153,8 @@ if (!_ownedJammerExists) then{
if (_limitNearby > 0) then{
// remove current target from objects
- _objectCount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange] - [_obj]);
- // TODO: not properly limiting simulated objects
- if (_objectCount >= _limitNearby) then{
+ _objectscount = count (nearestObjects[player, [_staticClass, _simulClass], _buildingJammerRange]-[_obj]);
+ if (_objectscount >= _limitNearby) then{
_buildingAllowed = false;
[format["Building Disallowed: Limit %1", _limitNearby], 5] call Epoch_message;
};
@@ -37,7 +37,7 @@ _isSnap = false;
if (EPOCH_playerEnergy <= 0) exitWith {
["Need Energy", 5] call Epoch_message;
};
-if !(_objType call EPOCH_isBuildAllowed) exitWith{};
+if !(_object call EPOCH_isBuildAllowed) exitWith{};
EPOCH_simulSwap_Lock = true;
_return = _object;
@@ -42,7 +42,7 @@ if (EPOCH_playerEnergy <= 0) exitWith{
};
// Remove object if not allowed
-if !("" call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object };
+if !(_object call EPOCH_isBuildAllowed) exitWith{ deleteVehicle _object };
EPOCH_simulSwap_Lock = true;
_objType = typeOf _object;
@@ -117,7 +117,7 @@ if (_class != "") then {
_rejectMove = false;
if ((diag_tickTime - _lastCheckTime) > 10) then {
_lastCheckTime = diag_tickTime;
- _rejectMove = !(_objType call EPOCH_isBuildAllowed);
+ _rejectMove = !(_object call EPOCH_isBuildAllowed);
};
if (_rejectMove) exitWith{
deleteVehicle EPOCH_target;
@@ -4366,6 +4366,121 @@ class CfgPricing
{
price = 10;
};
+
+ ///////////////////////////////////////////////////////////////////////////////
+ // Apex Items & Weapons
+ ///////////////////////////////////////////////////////////////////////////////
+ class hgun_Pistol_01_F { price = 65; };
+ class hgun_P07_khk_F { price = 65; };
+ class SMG_05_F { price = 150; };
+ class LMG_03_F { price = 300; };
+ class arifle_MX_khk_F { price = 150; };
+ class arifle_MX_GL_khk_F { price = 150; };
+ class arifle_MXC_khk_F { price = 135; };
+ class arifle_MXM_khk_F { price = 150; };
+ class srifle_LRR_tna_F { price = 185; };
+ class srifle_GM6_ghex_F { price = 190; };
+ class srifle_DMR_07_blk_F { price = 175; };
+ class srifle_DMR_07_hex_F { price = 175; };
+ class srifle_DMR_07_ghex_F { price = 175; };
+ class arifle_AK12_F { price = 165; };
+ class arifle_AK12_GL_F { price = 170; };
+ class arifle_AKM_F { price = 140; };
+ class arifle_AKM_FL_F { price = 140; };
+ class arifle_AKS_F { price = 135; };
+ class arifle_ARX_blk_F { price = 190; };
+ class arifle_ARX_ghex_F { price = 190; };
+ class arifle_ARX_hex_F { price = 190; };
+ class arifle_CTAR_blk_F { price = 145; };
+ class arifle_CTAR_hex_F { price = 145; };
+ class arifle_CTAR_ghex_F { price = 145; };
+ class arifle_CTAR_GL_blk_F { price = 145; };
+ class arifle_CTARS_blk_F { price = 145; };
+ class arifle_CTARS_ghex_F { price = 145; };
+ class arifle_CTARS_hex_F { price = 145; };
+ class arifle_SPAR_01_blk_F { price = 140; };
+ class arifle_SPAR_01_khk_F { price = 140; };
+ class arifle_SPAR_01_snd_F { price = 140; };
+ class arifle_SPAR_01_GL_blk_F { price = 150; };
+ class arifle_SPAR_01_GL_khk_F { price = 150; };
+ class arifle_SPAR_01_GL_snd_F { price = 150; };
+ class arifle_SPAR_02_blk_F { price = 155; };
+ class arifle_SPAR_02_khk_F { price = 155; };
+ class arifle_SPAR_02_snd_F { price = 155; };
+ class arifle_SPAR_03_blk_F { price = 160; };
+ class arifle_SPAR_03_khk_F { price = 160; };
+ class arifle_SPAR_03_snd_F { price = 160; };
+ class muzzle_snds_H_khk_F { price = 5; };
+ class muzzle_snds_H_snd_F { price = 5; };
+ class muzzle_snds_58_blk_F { price = 2; };
+ class muzzle_snds_m_khk_F { price = 1; };
+ class muzzle_snds_m_snd_F { price = 1; };
+ class muzzle_snds_B_khk_F { price = 5; };
+ class muzzle_snds_B_snd_F { price = 5; };
+ class muzzle_snds_58_wdm_F { price = 2; };
+ class muzzle_snds_65_TI_blk_F { price = 7; };
+ class muzzle_snds_65_TI_hex_F { price = 7; };
+ class muzzle_snds_65_TI_ghex_F { price = 7; };
+ class muzzle_snds_H_MG_blk_F { price = 2; };
+ class muzzle_snds_H_MG_khk_F { price = 2; };
+ class optic_Arco_blk_F { price = 10; };
+ class optic_Arco_ghex_F { price = 10; };
+ class optic_DMS_ghex_F { price = 15; };
+ class optic_Hamr_khk_F { price = 20; };
+ class optic_ERCO_blk_F { price = 12; };
+ class optic_ERCO_khk_F { price = 12; };
+ class optic_ERCO_snd_F { price = 12; };
+ class optic_SOS_khk_F { price = 20; };
+ class optic_LRPS_tna_F { price = 30; };
+ class optic_LRPS_ghex_F { price = 30; };
+ class optic_Holosight_blk_F { price = 5; };
+ class optic_Holosight_khk_F { price = 5; };
+ class optic_Holosight_smg_blk_F { price = 5; };
+ class bipod_01_F_khk { price = 2; };
+ class 30Rnd_9x21_Mag_SMG_02 { price = 3;};
+ class 30Rnd_9x21_Mag_SMG_02_Tracer_Red { price = 2; };
+ class 30Rnd_9x21_Mag_SMG_02_Tracer_Yellow { price = 2; };
+ class 30Rnd_9x21_Mag_SMG_02_Tracer_Green { price = 2; };
+ class 30Rnd_580x42_Mag_F { price = 2; };
+ class 30Rnd_580x42_Mag_Tracer_F { price = 2; };
+ class 100Rnd_580x42_Mag_F { price = 2; };
+ class 100Rnd_580x42_Mag_Tracer_F { price = 2; };
+ class 20Rnd_650x39_Cased_Mag_F { price = 2; };
+ class 10Rnd_50BW_Mag_F { price = 4; };
+ class 150Rnd_556x45_Drum_Mag_F { price = 8; };
+ class 150Rnd_556x45_Drum_Mag_Tracer_F { price = 8; };
+ class 30Rnd_762x39_Mag_F { price = 3; };
+ class 30Rnd_762x39_Mag_Green_F { price = 3; };
+ class 30Rnd_762x39_Mag_Tracer_F { price = 3; };
+ class 30Rnd_762x39_Mag_Tracer_Green_F { price = 3; };
+ class 30Rnd_545x39_Mag_F { price = 2; };
+ class 30Rnd_545x39_Mag_Green_F { price = 2; };
+ class 30Rnd_545x39_Mag_Tracer_F { price = 2; };
+ class 30Rnd_545x39_Mag_Tracer_Green_F { price = 2; };
+ class 200Rnd_556x45_Box_F { price = 9; };
+ class 200Rnd_556x45_Box_Red_F { price = 9; };
+ class 200Rnd_556x45_Box_Tracer_F { price = 9; };
+ class 200Rnd_556x45_Box_Tracer_Red_F { price = 9; };
+ class 10Rnd_9x21_Mag { price = 2; };
+ class B_Bergen_mcamo_F { price = 40; };
+ class B_Bergen_dgtl_F { price = 40; };
+ class B_Bergen_hex_F { price = 40; };
+ class B_Bergen_tna_F { price = 40; };
+ class B_AssaultPack_tna_F { price = 10; };
+ class B_Carryall_ghex_F { price = 30; };
+ class B_FieldPack_ghex_F { price = 12; };
+ class B_ViperHarness_base_F { price = 25; };
+ class B_ViperHarness_blk_F { price = 25; };
+ class B_ViperHarness_ghex_F { price = 25; };
+ class B_ViperHarness_hex_F { price = 25; };
+ class B_ViperHarness_khk_F { price = 25; };
+ class B_ViperHarness_oli_F { price = 25; };
+ class B_ViperLightHarness_base_F { price = 20; };
+ class B_ViperLightHarness_blk_F { price = 20; };
+ class B_ViperLightHarness_ghex_F { price = 20; };
+ class B_ViperLightHarness_hex_F { price = 20; };
+ class B_ViperLightHarness_khk_F { price = 20; };
+ class B_ViperLightHarness_oli_F { price = 20; };
};
/*[[[end]]]*/
@@ -1 +1 @@
-build=668;
+build=672;
@@ -1 +1 @@
-build=668;
+build=672;
@@ -14,6 +14,10 @@
*/
_maxTTL = parseNumber EPOCH_expiresBuilding;
+_serverSettingsConfig = configFile >> "CfgEpochServer";
+_UseIndestructible = [_serverSettingsConfig, "UseIndestructible", false] call EPOCH_fnc_returnConfigEntry;
+_IndestructibleBaseObjects = [_serverSettingsConfig, "IndestructibleBaseObjects", []] call EPOCH_fnc_returnConfigEntry;
+_ExceptedBaseObjects = [_serverSettingsConfig, "ExceptedBaseObjects", []] call EPOCH_fnc_returnConfigEntry;
_cfgEpochClient = 'CfgEpochClient' call EPOCH_returnConfig;
_cfgBaseBuilding = 'CfgBaseBuilding' call EPOCH_returnConfig;
_buildingJammerRange = getNumber(_cfgEpochClient >> "buildingJammerRange");
@@ -74,6 +78,15 @@ for "_i" from 0 to _this do {
if (isClass (configFile >> "CfgVehicles" >> _class) && (_damage < 1) && !(_class isKindOf 'Constructions_lockedstatic_F')) then {
_baseObj = createVehicle [_class, [0,0,0], [], 0, "CAN_COLLIDE"];
+ if (_UseIndestructible) then {
+ if ({_baseObj iskindof _x} count _ExceptedBaseObjects == 0) then {
+ {
+ if (_baseObj iskindof _x) exitwith {
+ _baseObj allowdamage false;
+ };
+ } foreach _IndestructibleBaseObjects;
+ };
+ };
_baseObj setVectorDirAndUp _worldspace;
_baseObj setposATL _location;
Oops, something went wrong.

0 comments on commit 241a247

Please sign in to comment.