diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf index 8848525..47376af 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_cleanupTemporaryMarkers.sqf @@ -13,7 +13,6 @@ for "_i" from 1 to (count blck_temporaryMarkers) do if (_i > (count blck_temporaryMarkers)) exitWith {}; private _m = blck_temporaryMarkers deleteAt 0; _m params["_marker","_deleteAt"]; - if (diag_tickTime > _deleteAt) then { deleteMarker _marker; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf index 22d62ef..4a02aec 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_deleteMarker.sqf @@ -11,6 +11,5 @@ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; params[["_markerName",""]]; - deleteMarker _markerName; deleteMarker (_markerName + "label"); diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf index 92130c5..8a50cea 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_findSafePosn.sqf @@ -32,7 +32,7 @@ _fn_buildBlacklistedLocationsList = { _blacklistedLocs pushBack [_x,_minToMissions]; } forEach blck_ActiveMissionCoords; - private "_bases"; + private _bases = []; if (blck_modType isEqualTo "Epoch") then {_bases = nearestObjects[blck_mapCenter, ["PlotPole_EPOCH"], blck_mapRange + 25000]}; if (blck_modType isEqualTo "Exile") then {_bases = nearestObjects[blck_mapCenter, ["Exile_Construction_Flag_Static"], blck_mapRange + 25000]}; diff --git a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf index 9143d49..e2e03ac 100644 --- a/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf +++ b/@GMS/addons/custom_server/Compiles/Functions/GMS_fnc_mainThread.sqf @@ -10,7 +10,6 @@ */ #include "\q\addons\custom_server\Configs\blck_defines.hpp"; -//diag_log format["starting _fnc_mainThread with time = %1",diag_tickTime]; private["_timer1sec","_timer5sec","_timer20sec","_timer5min","_timer5min"]; _timer1sec = diag_tickTime; @@ -24,7 +23,12 @@ while {true} do uiSleep 1; if (diag_tickTime > _timer1sec) then { - + if (blck_showCountAliveAI) then + { + { + _x call blck_fnc_updateMarkerAliveCount; + } forEach blck_missionLabelMarkers; + }; _timer1sec = diag_tickTime + 1; }; if (diag_tickTime > _timer5sec) then diff --git a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf index eff199d..edfba48 100644 --- a/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf +++ b/@GMS/addons/custom_server/Compiles/Groups/GMS_fnc_spawnGroup.sqf @@ -15,14 +15,7 @@ private["_numbertospawn","_safepos","_launcherType","_infantryType"]; params[["_group","Error"],"_pos", "_center", ["_numai1",5], ["_numai2",10], ["_skillLevel","red"], ["_minDist",30], ["_maxDist",45],["_configureWaypoints",true], ["_uniforms",[]], ["_headGear",[]],["_vests",[]],["_backpacks",[]],["_weaponList",[]],["_sideArms",[]], ["_scuba",false],["_patrolRadius",30]]; -#ifdef blck_debugMode -if (blck_debugLevel > 3) then -{ - { - diag_log format["_fnc_spawnGroup: _this select %1 = %2",_forEachIndex,_this select _forEachIndex]; - }forEach _this; -}; -#endif + if (_weaponList isEqualTo []) then {_weaponList = [_skillLevel] call blck_fnc_selectAILoadout}; @@ -71,10 +64,5 @@ if !(isNull _group) then { diag_log "_fnc_spawnGroup:: ERROR CONDITION : NULL GROUP CREATED"; }; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then -{ - diag_log format["_fnc_spawnGroup:_group = %1",_group]; -}; -#endif + diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf index f2d4dc8..646a095 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_missionSpawner.sqf @@ -17,7 +17,7 @@ private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_mission "_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned","_hostageConfig", "_chanceHeliPatrol","_noPara","_chanceLoot","_heliCrew","_loadCratesTiming","_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius", "_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_noChoppers","_chancePara","_paraSkill","_marker","_vehicleCrewCount", - "_defaultMissionLocations","_garrisonedbuildings_buildingposnsystem","_garrisonedBuilding_ATLsystem", "_isScubaMission","_markerlabel"]; + "_defaultMissionLocations","_garrisonedbuildings_buildingposnsystem","_garrisonedBuilding_ATLsystem", "_isScubaMission","_markerlabel","_missionLootBoxes"]; params["_coords","_markerName","_aiDifficultyLevel"]; if (isNil "_markerLabel") then {_markerLabel = _markerMissionName}; @@ -157,26 +157,9 @@ while {_wait} do if (_missionTimedOut) exitWith { - // diag_log format["[blckeagls] missionSpawner (17):: Initializing mission: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; + diag_log format["_fnc_missionSpawner (187): mission timed out: _markerName %1 | _markerLabel %2 | time %3",_markerName,_markerLabel,diag_tickTime]; - /* - params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] -]; -*/ [_coords,_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_markers,_markerPos,_markerName,_markerMissionName, 1] call blck_fnc_endMission; }; @@ -244,10 +227,8 @@ if !(_abort) then if !(_scubaGroupParameters isEqualTo []) then { #define isScubaMission true - //diag_log format["_fnc_dynamicUMSspawner: spawning scuba groups with _scubaGroupParameters = %1",_scubaGroupParameters]; - // params["_coords",["_minNoAI",3],["_maxNoAI",6],"_missionGroups",["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],["_vests",blck_vests],["_backpacks",[]],["_weapons",[]],["_sideArms",blck_Pistols],["_isScubaGroup",false]]; private _temp = [_coords, _minNoAI,_maxNoAI,count _scubaGroupParameters,_scubaGroupParameters,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],_isScubaMission] call blck_fnc_spawnMissionAI; - diag_log format["_fnc_missionSpawner (243): _temp = %1",_temp]; + uiSleep 2; _abort = _temp select 1; @@ -255,16 +236,9 @@ if !(_scubaGroupParameters isEqualTo []) then { _blck_AllMissionAI append (_temp select 0); }; - diag_log format["[blckeagls] missionSpawner:: (250) scuba AI spawned: _markerName %1 : _markerLabel %2 : count _blck_AllMissionAI = %3",_markerName,_markerLabel, count _blck_AllMissionAI]; }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 0) then -{ - diag_log format["[blckeagls] missionSpawner:: (288) AI Patrols Spawned: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; -}; -#endif + _assetSpawned = objNull; if !(_hostageConfig isEqualTo []) then @@ -311,10 +285,7 @@ if (_noChoppers > 0) then }; }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (256) helipatrols spawned"}; -#endif + uisleep 3; if !(_garrisonedBuilding_ATLsystem isEqualTo []) then @@ -326,10 +297,7 @@ if !(_garrisonedBuilding_ATLsystem isEqualTo []) then }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (271) garrisons (ATL) spawned"}; -#endif + uiSleep 3; if !(_garrisonedBuildings_BuildingPosnSystem isEqualTo []) then @@ -340,10 +308,7 @@ if !(_garrisonedBuildings_BuildingPosnSystem isEqualTo []) then _blck_AllMissionAI append (units (_temp select 0)); }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (285) garrisons (building position system) spawned"}; -#endif + uiSleep 15; private["_noEmplacedToSpawn"]; @@ -356,15 +321,11 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then _blck_AllMissionAI append _units; }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (309) emplaced weapons spawned"}; -#endif + _vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange; if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || !(_missionPatrolVehicles isEqualTo []) )) then { - //diag_log format["_missionSpawner(315): _vehToSpawn = %1 | _missionPatrolVehicles = %2",_vehToSpawn,_missionPatrolVehicles]; _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_missionPatrolVehicles,useRelativePos,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount] call blck_fnc_spawnMissionVehiclePatrols; _temp params ["_patrolVehicles","_units","_abort"]; @@ -374,18 +335,15 @@ if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || !(_missionPatrolVehicles isE // Spawn any submarine patrols if (blck_useVehiclePatrols && !(_submarinePatrolParameters isEqualTo []) ) then { - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; + _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_submarinePatrolParameters,true,_umsUniforms,_umsHeadgear,_umsVests,[],_umsWeapons,[],isScubaMission] call blck_fnc_spawnMissionVehiclePatrols; _missionAIVehicles append (_temp select 0); _blck_AllMissionAI append (_temp select 1); }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (330) vehicle patrols spawned"}; -#endif - uiSleep delayTime; + + if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then { if !(_missionLootBoxes isEqualTo []) then @@ -404,10 +362,7 @@ if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then }; uiSleep delayTime;; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (355) loot crate(s) spawned"}; -#endif + if !(_missionLootVehicles isEqualTo []) then { @@ -416,7 +371,7 @@ if !(_missionLootVehicles isEqualTo []) then }; if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then { - diag_log format["_fnc_missionSpawner (436): spawning %1 paraunits at mission spawn",_noPara]; + private _paratroops = [_coords,_noPara,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnParaUnits; if !(isNull _paratroops) then { @@ -424,7 +379,7 @@ if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then }; if (random(1) < _chanceLoot) then { - diag_log format["_fnc_missionSpawner (446): spawning supplemental loot with _chanceLoot = %1",_chanceLoot]; + private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; if (blck_cleanUpLootChests) then { @@ -433,19 +388,13 @@ if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then }; }; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (384) mission loot vehicles spawned"}; -#endif + private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"]; _missionComplete = -1; _startTime = diag_tickTime; -#ifdef blck_debugMode -uiSleep 10; -if (blck_debugLevel > 2) then {diag_log "_fnc_missionSpawner (393) waiting for mission end contitions to be met"}; -#endif + switch (_endCondition) do { @@ -457,8 +406,7 @@ switch (_endCondition) do if (blck_showCountAliveAI) then { - diag_log format["_missionSpawner(419): updating AI Alive Counts for _markers = %1",_markers]; - [_markers select 1,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; + blck_missionLabelMarkers pushBack [_markers select 1,_markerMissionName,_blck_AllMissionAI]; }; @@ -494,7 +442,7 @@ while {_missionComplete isEqualTo -1} do { { private _d = _x distance (_x getVariable ["crateSpawnPos",_coords]); - //diag_log format["crate %1 moved %2 at %3",_x,_d,diag_tickTime]; + if (_d > 25) exitWith { _missionComplete = 1; @@ -556,23 +504,7 @@ while {_missionComplete isEqualTo -1} do if (_crateStolen) exitWith { - /* - params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] -]; -*/ + [_coords,_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_markers,_markerPos,_markerName,_markerLabel, 2] call blck_fnc_endMission; }; @@ -589,18 +521,12 @@ if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; }; - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log format["_fnc_missionSpawner (531): _crates = %1", _crates]}; - #endif - if (blck_cleanUpLootChests) then { _objects append _crates; }; - #ifdef blck_debugMode - if (blck_debugLevel > 0) then {diag_log format["[blckeagls] missionSpawner:: (428) Crates Spawned: _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]}; - #endif + }; }; @@ -642,22 +568,7 @@ if (_secureAsset && (alive _assetSpawned)) then }; if (_secureAsset && !(alive _assetSpawned)) then { -/* params[ - "_coords", - "_mines", - "_objects", - "_crates", - "_blck_AllMissionAI", - "_endMsg", - "_markers", - "_markerPos", - "_markerName", - "_markerLabel", - ["_endCondition",0], - ["_vehicles",[]], - ["_isScubaMission",false] -]; -*/ + [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_assetKilledMsg,_markers,_markerPos,_markerName,_markerLabel, -1] call blck_fnc_endMission; }; @@ -666,9 +577,7 @@ if (!(_secureAsset) || (_secureAsset && (alive _assetSpawned))) then [_coords,_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_markers,_markerPos,_markerName,_markerLabel, 0] call blck_fnc_endMission; }; -#ifdef blck_debugMode -if (blck_debugLevel > 2) then {diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"]}; -#endif + diag_log format["_fnc_missionSpawner (643) Mission Completed | _cords %1 : _markerName %2 : _aiDifficultyLevel %3 _markerLabel %4",_coords,_markerName,_aiDifficultyLevel,_markerLabel]; blck_missionsRun = blck_missionsRun + 1; diag_log format["_fnc_missionSpawner (644): Total Dyanamic Land and UMS Run = %1", blck_missionsRun]; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf index 079ab2e..c99d52a 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionAI.sqf @@ -77,8 +77,7 @@ if !(_missionGroups isEqualTo []) then blck_monitoredMissionAIGroups pushback _newGroup; - _allSpawnedAI append (units _newGroup); - diag_log format["_fnc_spawnMissionAI(77): group %1 | count _newAI = %2 | count _allSpawnedAI = %3",_forEachIndex,count (units _newGroup), count _allSpawnedAI]; + _allSpawnedAI append (units _newGroup); }; }forEach _missionGroups; }; diff --git a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf index a410831..0cca322 100644 --- a/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf +++ b/@GMS/addons/custom_server/Compiles/Missions/GMS_fnc_spawnMissionCrates.sqf @@ -49,12 +49,6 @@ _fnc_dropMissionCrates = { params[ ["_coords", [0,0,0]], ["_cratesToSpawn",[]], ["_loadCrateTiming","atMissionSpawn"],["_spawnCrateTiming","atMissionSpawn"],["_missionState","start"], ["_difficulty","red"] ]; -/* -private _params = ["_coords","_cratesToSpawn","_loadCrateTiming","_spawnCrateTiming","_missionState","_difficulty"]; -{ - diag_log format["_fnc_spawnMissionCrates: %1 = %2 with _foreachindex = %3",_params select _foreachindex, _this select _foreachindex, _foreachindex]; -}forEach _this; -*/ if ((count _coords) == 2) then // assume only X and Y offsets are provided { @@ -93,5 +87,5 @@ if (_spawnCrateTiming in ["atMissionEndAir","atMissionStartAir"]) then { [_cratesSpawned] spawn _fnc_dropMissionCrates; }; -//diag_log format["_fnc_spawnMissionCrates: _cratesSpawned = %1",_cratesSpawned]; + _cratesSpawned diff --git a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf index 5b087c6..e9ebe95 100644 --- a/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf +++ b/@GMS/addons/custom_server/Compiles/Units/GMS_fnc_processAIKill.sqf @@ -58,13 +58,7 @@ _wp setWaypointBehaviour "COMBAT"; (group _unit) setCombatMode "RED"; _wp setWaypointCombatMode "RED"; -if (blck_showCountAliveAI) then -{ - { - diag_log format["_fnc_processAIKill: _x = %1",_x]; - _x call blck_fnc_updateMarkerAliveCount; - } forEach blck_missionLabelMarkers; -}; + if ([_unit,_killer] call blck_fnc_processIlleagalAIKills) then { [_unit,_killer] call GMS_fnc_handlePlayerUpdates; diff --git a/@GMS/addons/custom_server/Configs/blck_configs_default.sqf b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf new file mode 100644 index 0000000..3b78722 --- /dev/null +++ b/@GMS/addons/custom_server/Configs/blck_configs_default.sqf @@ -0,0 +1,876 @@ +/* + By Ghostrider [GRG] + Copyright 2016 + + -------------------------- + License + -------------------------- + All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. + + http://creativecommons.org/licenses/by-nc-sa/4.0/ +*/ + +#include "\q\addons\custom_server\Configs\blck_defines.hpp"; +#include "\q\addons\custom_server\init\build.sqf"; +diag_log format["[blckeagls] loading default configurations for blckeagls build %1",blck_buildNumber]; +//////////// +// default settings +//////////// + + // list of locations that are protected against mission spawns + + switch (toLower(worldName)) do + { + case "altis": { + blck_locationBlackList append [ + //Add location as [[xpos,ypos,0],minimumDistance], + // Note that there should not be a comma after the last item in this table + [[10800,10641,0],1000] // isthmus - missions that spawn here often are glitched. + ]; + }; + case "tanoa": { + blck_locationBlackList append [ ]; + }; + }; + +/********************************************************************************* + +AI WEAPONS, UNIFORMS, VESTS AND GEAR + +**********************************************************************************/ + + blck_AI_Side = EAST; + + blck_crateMoneyBlue = [100,250]; + blck_crateMoneyRed = [175, 300]; + blck_crateMoneyGreen = [300, 500]; + blck_crateMoneyOrange = [500, 750]; + + blck_allowSalesAtBlackMktTraders = true; // Allow vehicles to be sold at Halvjes black market traders. + + blck_maximumItemPriceInAI_Loadouts = 100; + + blck_lightlyArmed_ARMA3 = [ + "B_G_Offroad_01_armed_F", + "O_G_Offroad_01_armed_F", + "B_MRAP_01_gmg_F", + "B_MRAP_01_hmg_F", + "O_MRAP_02_gmg_F", + "O_MRAP_02_hmg_F", + "I_MRAP_03_hmg_F", + "I_MRAP_03_gmg_F", + "B_APC_Wheeled_01_cannon_F", + "I_APC_Wheeled_03_cannon_F" + ]; + + blck_tracked_APC_ARMA3 = [ + "B_APC_Tracked_01_rcws_F", + "B_APC_Tracked_01_CRV_F", + "B_APC_Tracked_01_AA_F", + "O_APC_Tracked_02_cannon_F", + "O_APC_Tracked_02_AA_F", + "O_APC_Wheeled_02_rcws_F", + "I_APC_tracked_03_cannon_F" + ]; + + blck_Tanks_ARMA3 = [ + //"B_MBT_01_arty_F", + "B_MBT_01_mlrs_F", + "B_MBT_01_TUSK_F", + "O_MBT_02_cannon_F", + //"O_MBT_02_arty_F", + "I_MBT_03_cannon_F" + ]; + + blck_APC_CUP = [ + "CUP_B_Mastiff_GMG_GB_D", + "CUP_B_Mastiff_HMG_GB_D", + "CUP_B_Ridgback_HMG_GB_D", + "CUP_B_Ridgback_GMG_GB_D", + "CUP_B_M1128_MGS_Desert", + "CUP_B_M1135_ATGMV_Desert_Slat", + "CUP_B_M1133_MEV_Desert_Slat", + "CUP_B_LAV25M240_desert_USMC", + "CUP_B_M1129_MC_MK19_Desert_Slat", + "CUP_B_LAV25_HQ_desert_USMC", + "CUP_B_BRDM2_ATGM_CDF", + "CUP_B_BTR60_CDF", + "CUP_B_M1130_CV_M2_Desert_Slat", + "CUP_B_M1126_ICV_MK19_Desert_Slat", + "CUP_O_BTR90_RU", + "CUP_O_GAZ_Vodnik_BPPU_RU", + "CUP_B_M1126_ICV_M2_Desert", + "CUP_B_M1126_ICV_MK19_Desert", + "CUP_B_M1130_CV_M2_Desert", + "CUP_B_M1126_ICV_M2_Desert_Slat", + "CUP_B_M1133_MEV_Desert", + "CUP_O_GAZ_Vodnik_AGS_RU", + "CUP_O_GAZ_Vodnik_PK_RU" + ]; + + blck_Tanks_CUP = [ + "CUP_B_M2A3Bradley_USA_D", + "CUP_B_M113_desert_USA", + "CUP_B_M163_USA", + "CUP_B_M6LineBacker_USA_D", + "CUP_B_M1A1_DES_US_Army", + "CUP_B_M1A2_TUSK_MG_DES_US_Army", + "CUP_B_AAV_USMC", + "CUP_B_M270_DPICM_USA", + "CUP_B_ZSU23_CDF", + "CUP_B_BMP2_CDF", + "CUP_B_T72_CDF", + "CUP_I_T34_NAPA", + "CUP_B_Challenger2_NATO", + "CUP_B_FV432_Bulldog_GB_D_RWS", + "CUP_B_FV432_Bulldog_GB_D", + "CUP_B_FV510_GB_D_SLAT", + "CUP_B_MCV80_GB_D_SLAT", + "CUP_O_2S6_RU", + "CUP_O_BMP3_RU", + "CUP_O_T90_RU", + "CUP_O_T55_SLA", + "CUP_O_BMP1P_TKA", + "CUP_B_M270_DPICM_USA", + "CUP_B_M2Bradley_USA_W", + "CUP_B_FV510_GB_D", + "CUP_B_MCV80_GB_D", + "CUP_B_M7Bradley_USA_D", + "CUP_O_2S6_RU", + "CUP_O_BMP1_TKA" + ]; + + blck_AIPatrolVehicles = ["B_LSV_01_armed_F","I_C_Offroad_02_LMG_F","B_T_LSV_01_armed_black_F","B_T_LSV_01_armed_olive_F","B_T_LSV_01_armed_sand_F"]; // Type of vehicle spawned to defend AI bases + blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesGreen = blck_AIPatrolVehicles; + blck_AIPatrolVehiclesOrange = blck_AIPatrolVehicles; + + // Blacklisted itesm + blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"]; + + // AI Weapons and Attachments + blck_bipods = ["bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli"]; + + blck_Optics_Holo = ["optic_Hamr","optic_MRD","optic_Holosight","optic_Holosight_smg","optic_Aco","optic_ACO_grn","optic_ACO_grn_smg","optic_Aco_smg","optic_Yorris"]; + blck_Optics_Reticule = ["optic_Arco","optic_MRCO"]; + blck_Optics_Scopes = [ + "optic_AMS","optic_AMS_khk","optic_AMS_snd", + "optic_DMS", + "optic_KHS_blk","optic_KHS_hex","optic_KHS_old","optic_KHS_tan", + "optic_LRPS", + "optic_Nightstalker", + "optic_NVS", + "optic_SOS", + "optic_tws" + //"optic_tws_mg", + ]; + blck_Optics_Apex = [ + //Apex + "optic_Arco_blk_F", "optic_Arco_ghex_F", + "optic_DMS_ghex_F", + "optic_Hamr_khk_F", + "optic_ERCO_blk_F","optic_ERCO_khk_F","optic_ERCO_snd_F", + "optic_SOS_khk_F", + "optic_LRPS_tna_F","optic_LRPS_ghex_F", + "optic_Holosight_blk_F","optic_Holosight_khk_F","optic_Holosight_smg_blk_F" + ]; + blck_Optics = blck_Optics_Holo + blck_Optics_Reticule + blck_Optics_Scopes; + + #ifdef useAPEX + blck_Optics = blck_Optics + blck_Optics_Apex; + #endif + blck_bipods = [ + "bipod_01_F_blk","bipod_01_F_mtp","bipod_01_F_snd","bipod_02_F_blk","bipod_02_F_hex","bipod_02_F_tan","bipod_03_F_blk","bipod_03_F_oli", + //Apex + "bipod_01_F_khk" + ]; + + blck_silencers = [ + "muzzle_snds_338_black","muzzle_snds_338_green","muzzle_snds_338_sand","muzzle_snds_93mmg","muzzle_snds_93mmg_tan","muzzle_snds_acp","muzzle_snds_B", + "muzzle_snds_H","muzzle_snds_H_MG","muzzle_snds_H_SW","muzzle_snds_L","muzzle_snds_M", + //Apex + "muzzle_snds_H_khk_F","muzzle_snds_H_snd_F","muzzle_snds_58_blk_F","muzzle_snds_m_khk_F","muzzle_snds_m_snd_F","muzzle_snds_B_khk_F","muzzle_snds_B_snd_F", + "muzzle_snds_58_wdm_F","muzzle_snds_65_TI_blk_F","muzzle_snds_65_TI_hex_F","muzzle_snds_65_TI_ghex_F","muzzle_snds_H_MG_blk_F","muzzle_snds_H_MG_khk_F" + ]; + + blck_RifleSniper = [ + "srifle_EBR_F","srifle_GM6_F","srifle_LRR_F","srifle_DMR_01_F" + ]; + + blck_RifleAsault_556 = [ + "arifle_SDAR_F","arifle_TRG21_F","arifle_TRG20_F","arifle_TRG21_GL_F","arifle_Mk20_F","arifle_Mk20C_F","arifle_Mk20_GL_F","arifle_Mk20_plain_F","arifle_Mk20C_plain_F","arifle_Mk20_GL_plain_F","arifle_SDAR_F" + ]; + + blck_RifleAsault_650 = [ + "arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F" + ]; + + blck_RifleAsault = blck_RifleAsault_556 + blck_RifleAsault_650; + + blck_RifleLMG = [ + "LMG_Mk200_F","LMG_Zafir_F" + ]; + + blck_RifleOther = [ + "SMG_01_F","SMG_02_F" + ]; + + blck_Pistols = [ + "hgun_PDW2000_F","hgun_ACPC2_F","hgun_Rook40_F","hgun_P07_F","hgun_Pistol_heavy_01_F","hgun_Pistol_heavy_02_F","hgun_Pistol_Signal_F" + ]; + blck_Pistols_blue = blck_Pistols; + blck_Pistols_red = blck_Pistols; + blck_Pistols_green = blck_Pistols; + blck_Pistols_orange = blck_Pistols; + + blck_DLC_MMG = [ + "MMG_01_hex_F","MMG_02_sand_F","MMG_01_tan_F","MMG_02_black_F","MMG_02_camo_F" + ]; + + blck_DLC_Sniper = [ + "srifle_DMR_02_camo_F","srifle_DMR_02_F","srifle_DMR_02_sniper_F","srifle_DMR_03_F","srifle_DMR_03_tan_F","srifle_DMR_04_F","srifle_DMR_04_Tan_F","srifle_DMR_05_blk_F","srifle_DMR_05_hex_F","srifle_DMR_05_tan_F","srifle_DMR_06_camo_F","srifle_DMR_06_olive_F" + ]; + blck_apexWeapons = ["arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F"]; + + //This defines the random weapon to spawn on the AI + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Weapons + blck_WeaponList_Orange = blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG + blck_DLC_Sniper + blck_DLC_MMG; + blck_WeaponList_Green = blck_RifleSniper + blck_RifleAsault_650 +blck_RifleLMG + blck_DLC_MMG + blck_apexWeapons; + blck_WeaponList_Blue = blck_RifleOther + blck_RifleAsault_556 +blck_RifleAsault_650; + blck_WeaponList_Red = blck_RifleAsault_556 + blck_RifleSniper + blck_RifleAsault_650 + blck_RifleLMG; + + #ifdef useAPEX + + blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons; + blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons; + #endif + + blck_backpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ]; + blck_ApexBackpacks = [ + "B_Bergen_mcamo_F","B_Bergen_dgtl_F","B_Bergen_hex_F","B_Bergen_tna_F","B_AssaultPack_tna_F","B_Carryall_ghex_F", + "B_FieldPack_ghex_F","B_ViperHarness_blk_F","B_ViperHarness_ghex_F","B_ViperHarness_hex_F","B_ViperHarness_khk_F", + "B_ViperHarness_oli_F","B_ViperLightHarness_blk_F","B_ViperLightHarness_ghex_F","B_ViperLightHarness_hex_F","B_ViperLightHarness_khk_F","B_ViperLightHarness_oli_F" + ]; + + #ifdef useAPEX + blck_backpacks = blck_backpacks + blck_ApexBackpacks; + #endif + blck_backpacks_blue = blck_backpacks; + blck_backpacks_red = blck_backpacks; + blck_backpacks_green = blck_backpacks; + blck_backpacks_orange = blck_backpacks; + + blck_BanditHeadgear = ["H_Shemag_khk","H_Shemag_olive","H_Shemag_tan","H_ShemagOpen_khk"]; + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_headgear = [ + "H_Cap_blk", + "H_Cap_blk_Raven", + "H_Cap_blu", + "H_Cap_brn_SPECOPS", + "H_Cap_grn", + "H_Cap_headphones", + "H_Cap_khaki_specops_UK", + "H_Cap_oli", + "H_Cap_press", + "H_Cap_red", + "H_Cap_tan", + "H_Cap_tan_specops_US", + "H_Watchcap_blk", + "H_Watchcap_camo", + "H_Watchcap_khk", + "H_Watchcap_sgg", + "H_MilCap_blue", + "H_MilCap_dgtl", + "H_MilCap_mcamo", + "H_MilCap_ocamo", + "H_MilCap_oucamo", + "H_MilCap_rucamo", + "H_Bandanna_camo", + "H_Bandanna_cbr", + "H_Bandanna_gry", + "H_Bandanna_khk", + "H_Bandanna_khk_hs", + "H_Bandanna_mcamo", + "H_Bandanna_sgg", + "H_Bandanna_surfer", + "H_Booniehat_dgtl", + "H_Booniehat_dirty", + "H_Booniehat_grn", + "H_Booniehat_indp", + "H_Booniehat_khk", + "H_Booniehat_khk_hs", + "H_Booniehat_mcamo", + "H_Booniehat_tan", + "H_Hat_blue", + "H_Hat_brown", + "H_Hat_camo", + "H_Hat_checker", + "H_Hat_grey", + "H_Hat_tan", + "H_StrawHat", + "H_StrawHat_dark", + "H_Beret_02", + "H_Beret_blk", + "H_Beret_blk_POLICE", + "H_Beret_brn_SF", + "H_Beret_Colonel", + "H_Beret_grn", + "H_Beret_grn_SF", + "H_Beret_ocamo", + "H_Beret_red", + "H_Shemag_khk", + "H_Shemag_olive", + "H_Shemag_olive_hs", + "H_Shemag_tan", + "H_ShemagOpen_khk", + "H_ShemagOpen_tan", + "H_TurbanO_blk", + + //Apex + "H_MilCap_tna_F", + "H_MilCap_ghex_F", + "H_Booniehat_tna_F", + "H_Beret_gen_F", + "H_MilCap_gen_F", + "H_Cap_oli_Syndikat_F", + "H_Cap_tan_Syndikat_F", + "H_Cap_blk_Syndikat_F", + "H_Cap_grn_Syndikat_F" + ]; + blck_helmets = [ + "H_HelmetB", + "H_HelmetB_black", + "H_HelmetB_camo", + "H_HelmetB_desert", + "H_HelmetB_grass", + "H_HelmetB_light", + "H_HelmetB_light_black", + "H_HelmetB_light_desert", + "H_HelmetB_light_grass", + "H_HelmetB_light_sand", + "H_HelmetB_light_snakeskin", + "H_HelmetB_paint", + "H_HelmetB_plain_blk", + "H_HelmetB_sand", + "H_HelmetB_snakeskin", + "H_HelmetCrew_B", + "H_HelmetCrew_I", + "H_HelmetCrew_O", + "H_HelmetIA", + "H_HelmetIA_camo", + "H_HelmetIA_net", + "H_HelmetLeaderO_ocamo", + "H_HelmetLeaderO_oucamo", + "H_HelmetO_ocamo", + "H_HelmetO_oucamo", + "H_HelmetSpecB", + "H_HelmetSpecB_blk", + "H_HelmetSpecB_paint1", + "H_HelmetSpecB_paint2", + "H_HelmetSpecO_blk", + "H_HelmetSpecO_ocamo", + "H_CrewHelmetHeli_B", + "H_CrewHelmetHeli_I", + "H_CrewHelmetHeli_O", + "H_HelmetCrew_I", + "H_HelmetCrew_B", + "H_HelmetCrew_O", + "H_PilotHelmetHeli_B", + "H_PilotHelmetHeli_I", + "H_PilotHelmetHeli_O", + "H_Helmet_Skate", + "H_HelmetB_TI_tna_F", + // Apex + //"H_HelmetO_ViperSP_hex_F", + //"H_HelmetO_ViperSP_ghex_F", + "H_HelmetB_tna_F", + "H_HelmetB_Enh_tna_F", + "H_HelmetB_Light_tna_F", + "H_HelmetSpecO_ghex_F", + "H_HelmetLeaderO_ghex_F", + "H_HelmetO_ghex_F", + "H_HelmetCrew_O_ghex_F" + ]; + blck_headgearList = blck_headgear + blck_helmets; + blck_headgear_blue = blck_headgearList; + blck_headgear_red = blck_headgearList; + blck_headgear_green = blck_headgearList; + blck_headgear_orange = blck_headgearList; + + //This defines the skin list, some skins are disabled by default to permit players to have high visibility uniforms distinct from those of the AI. + blck_SkinList_Male = [ + //https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment + "U_AntigonaBody", + "U_AttisBody", + "U_B_CombatUniform_mcam","U_B_CombatUniform_mcam_tshirt","U_B_CombatUniform_mcam_vest","U_B_CombatUniform_mcam_worn","U_B_CombatUniform_sgg","U_B_CombatUniform_sgg_tshirt","U_B_CombatUniform_sgg_vest","U_B_CombatUniform_wdl","U_B_CombatUniform_wdl_tshirt","U_B_CombatUniform_wdl_vest", + "U_B_CTRG_1","U_B_CTRG_2","U_B_CTRG_3", + "U_B_GhillieSuit", + "U_B_HeliPilotCoveralls","U_B_PilotCoveralls", + "U_B_SpecopsUniform_sgg", + "U_B_survival_uniform", + "U_B_Wetsuit", + //"U_BasicBody", + "U_BG_Guerilla1_1","U_BG_Guerilla2_1","U_BG_Guerilla2_2","U_BG_Guerilla2_3","U_BG_Guerilla3_1","U_BG_Guerilla3_2", + "U_BG_leader", + "U_C_Commoner_shorts","U_C_Commoner1_1","U_C_Commoner1_2","U_C_Commoner1_3","U_C_Commoner2_1","U_C_Commoner2_2","U_C_Commoner2_3", + "U_C_Farmer","U_C_Fisherman","U_C_FishermanOveralls","U_C_HunterBody_brn","U_C_HunterBody_grn", + //"U_C_Journalist", + "U_C_Novak", + //"U_C_Poloshirt_blue","U_C_Poloshirt_burgundy","U_C_Poloshirt_redwhite","U_C_Poloshirt_salmon","U_C_Poloshirt_stripped","U_C_Poloshirt_tricolour", + "U_C_Poor_1","U_C_Poor_2","U_C_Poor_shorts_1","U_C_Poor_shorts_2","U_C_PriestBody","U_C_Scavenger_1","U_C_Scavenger_2", + //"U_C_Scientist","U_C_ShirtSurfer_shorts","U_C_TeeSurfer_shorts_1","U_C_TeeSurfer_shorts_2", + "U_C_WorkerCoveralls","U_C_WorkerOveralls","U_Competitor", + "U_I_CombatUniform","U_I_CombatUniform_shortsleeve","U_I_CombatUniform_tshirt","U_I_G_resistanceLeader_F", + "U_I_G_Story_Protagonist_F", + "U_I_GhillieSuit", + "U_I_HeliPilotCoveralls", + "U_I_OfficerUniform", + "U_I_pilotCoveralls", + "U_I_Wetsuit", + "U_IG_Guerilla1_1","U_IG_Guerilla2_1","U_IG_Guerilla2_2","U_IG_Guerilla2_3","U_IG_Guerilla3_1","U_IG_Guerilla3_2", + "U_IG_leader", + "U_IG_Menelaos", + //"U_KerryBody", + //"U_MillerBody", + //"U_NikosAgedBody", + //"U_NikosBody", + "U_O_CombatUniform_ocamo","U_O_CombatUniform_oucamo", + "U_O_GhillieSuit", + "U_O_OfficerUniform_ocamo", + "U_O_PilotCoveralls", + "U_O_SpecopsUniform_blk", + "U_O_SpecopsUniform_ocamo", + "U_O_Wetsuit", + "U_OG_Guerilla1_1","U_OG_Guerilla2_1","U_OG_Guerilla2_2","U_OG_Guerilla2_3","U_OG_Guerilla3_1","U_OG_Guerilla3_2","U_OG_leader", + //"U_OI_Scientist", + //"U_OrestesBody", + "U_Rangemaster", + // DLC + "U_B_FullGhillie_ard","U_I_FullGhillie_ard","U_O_FullGhillie_ard","U_B_FullGhillie_sard","U_O_FullGhillie_sard","U_I_FullGhillie_sard","U_B_FullGhillie_lsh","U_O_FullGhillie_lsh","U_I_FullGhillie_lsh", + //Apex + "U_B_T_Soldier_F", + "U_B_T_Soldier_AR_F", + "U_B_T_Soldier_SL_F", + //"U_B_T_Sniper_F", + //"U_B_T_FullGhillie_tna_F", + "U_B_CTRG_Soldier_F", + "U_B_CTRG_Soldier_2_F", + "U_B_CTRG_Soldier_3_F", + "U_B_GEN_Soldier_F", + "U_B_GEN_Commander_F", + "U_O_T_Soldier_F", + "U_O_T_Officer_F", + //"U_O_T_Sniper_F", + //"U_O_T_FullGhillie_tna_F", + "U_O_V_Soldier_Viper_F", + "U_O_V_Soldier_Viper_hex_F", + "U_I_C_Soldier_Para_1_F", + "U_I_C_Soldier_Para_2_F", + "U_I_C_Soldier_Para_3_F", + "U_I_C_Soldier_Para_4_F", + "U_I_C_Soldier_Para_5_F", + "U_I_C_Soldier_Bandit_1_F", + "U_I_C_Soldier_Bandit_2_F", + "U_I_C_Soldier_Bandit_3_F", + "U_I_C_Soldier_Bandit_4_F", + "U_I_C_Soldier_Bandit_5_F", + "U_I_C_Soldier_Camo_F", + "U_C_man_sport_1_F", + "U_C_man_sport_2_F", + "U_C_man_sport_3_F", + "U_C_Man_casual_1_F", + "U_C_Man_casual_2_F", + "U_C_Man_casual_3_F", + "U_C_Man_casual_4_F", + "U_C_Man_casual_5_F", + "U_C_Man_casual_6_F", + "U_B_CTRG_Soldier_urb_1_F", + "U_B_CTRG_Soldier_urb_2_F", + "U_B_CTRG_Soldier_urb_3_F" + ]; + blck_SkinList = blck_SkinList_Male; + blck_SkinList_blue = blck_SkinList; + blck_SkinList_red = blck_SkinList; + blck_SkinList_green = blck_SkinList; + blck_SkinList_orange = blck_SkinList; + + blck_vests = [ + // DLC Vests + "V_PlateCarrierSpec_blk","V_PlateCarrierSpec_mtp","V_PlateCarrierGL_blk","V_PlateCarrierGL_mtp","V_PlateCarrierIAGL_oli" + ]; + blck_vests_blue = blck_vests; + blck_vests_red = blck_vests; + blck_vests_green = blck_vests; + blck_vests_orange = blck_vests; + + //CraftingFood + blck_Meats=[ + ]; + blck_Drink = [ + ]; + blck_Food = [ + ]; + blck_ConsumableItems = blck_Meats + blck_Drink + blck_Food; + blck_throwableExplosives = ["HandGrenade","MiniGrenade"]; + blck_otherExplosives = ["1Rnd_HE_Grenade_shell","3Rnd_HE_Grenade_shell","DemoCharge_Remote_Mag","SatchelCharge_Remote_Mag"]; + blck_explosives = blck_throwableExplosives + blck_otherExplosives; + blck_medicalItems = ["FAK"]; + blck_specialItems = blck_throwableExplosives + blck_medicalItems; + blck_NVG = ["NVG"]; + blck_buildingMaterials = []; + +/*************************************************************************************** +DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION +Note however that these configurations can be used in any way you like or replaced with mission-specific customized loot arrays +for examples of how you can do this see \Major\Compositions.sqf +***************************************************************************************/ + + // values are: number of things from the weapons, magazines, optics, materials(cinder etc), items (food etc) and backpacks arrays to add, respectively. + blck_lootCountsOrange = [8,32,8,30,16,1]; // Orange + blck_lootCountsGreen = [7,24,6,16,18,1]; // Green + blck_lootCountsRed = [5,16,4,10,6,1]; // Red + blck_lootCountsBlue = [4,12,3,6,6,1]; // Blue + + blck_BoxLoot_Orange = + // Loot is grouped as [weapons],[magazines],[items] in order to be able to use the correct function to load the item into the crate later on. + // Each item consist of the following information ["ItemName",minNum, maxNum] where min is the smallest number added and min+max is the largest number added. + + [ + [// Weapons + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",3,6], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",7,14], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,4], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [// Materials and supplies + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Green = + [ + [// Weapons + // Format is ["Weapon Name","Magazine Name"], + #ifdef useAPEX + "arifle_AK12_F","arifle_AK12_GL_F","arifle_AKM_F","arifle_AKM_FL_F","arifle_AKS_F","arifle_ARX_blk_F","arifle_ARX_ghex_F","arifle_ARX_hex_F","arifle_CTAR_blk_F","arifle_CTAR_hex_F", + "arifle_CTAR_ghex_F","arifle_CTAR_GL_blk_F","arifle_CTARS_blk_F","arifle_CTARS_hex_F","arifle_CTARS_ghex_F","arifle_SPAR_01_blk_F","arifle_SPAR_01_khk_F","arifle_SPAR_01_snd_F", + "arifle_SPAR_01_GL_blk_F","arifle_SPAR_01_GL_khk_F","arifle_SPAR_01_GL_snd_F","arifle_SPAR_02_blk_F","arifle_SPAR_02_khk_F","arifle_SPAR_02_snd_F","arifle_SPAR_03_blk_F", + "arifle_SPAR_03_khk_F","arifle_SPAR_03_snd_F","arifle_MX_khk_F","arifle_MX_GL_khk_F","arifle_MXC_khk_F","arifle_MXM_khk_F", + #endif + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["MMG_01_tan_F","150Rnd_93x64_Mag"], + ["MMG_02_black_F","130Rnd_338_Mag"], + ["MMG_02_camo_F","130Rnd_338_Mag"], + ["MMG_02_sand_F","130Rnd_338_Mag"], + ["srifle_DMR_02_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_02_F","10Rnd_338_Mag"], + ["srifle_DMR_02_sniper_F","10Rnd_338_Mag"], + ["srifle_DMR_03_F","10Rnd_338_Mag"], + ["srifle_DMR_03_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_05_hex_F","10Rnd_338_Mag"], + ["srifle_DMR_05_tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"], + ["srifle_DMR_04_F","10Rnd_127x54_Mag"], + ["srifle_DMR_05_blk_F","10Rnd_93x64_DMR_05_Mag"], + ["srifle_DMR_06_olive_F","20Rnd_762x51_Mag"] + + ], + [//Magazines + // Format is ["Magazine name, Minimum number to add, Maximum number to add], + ["3rnd_HE_Grenade_Shell",2,4], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",6,12], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,3], + ["HandGrenade",1,3], + // Marksman Pack Ammo + ["10Rnd_338_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4], + // Apex Ammo + ["130Rnd_338_Mag",1,3], + ["150Rnd_93x64_Mag",1,3] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + // Format is ["Item name, Minimum number to add, Maximum number to add], + ], + [ // Backpacks + ["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_ocamo",1,2],["B_AssaultPack_rgr",1,2],["B_AssaultPack_sgg",1,2], + ["B_Carryall_cbr",1,2],["B_Carryall_khk",1,2],["B_Carryall_mcamo",1,2],["B_Carryall_ocamo",1,2],["B_Carryall_oli",1,2],["B_Carryall_oucamo",1,2],["B_FieldPack_blk",1,2], + ["B_FieldPack_cbr",1,2],["B_FieldPack_khk",1,2],["B_FieldPack_ocamo",1,2],["B_FieldPack_oli",1,2],["B_FieldPack_oucamo",1,2],["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2], + ["B_Kitbag_rgr",1,2],["B_Kitbag_sgg",1,2],["B_Parachute",1,2],["B_TacticalPack_blk",1,2],["B_TacticalPack_mcamo",1,2],["B_TacticalPack_ocamo",1,2],["B_TacticalPack_oli",1,2], + ["B_TacticalPack_rgr",1,2] + ] + ]; + + blck_BoxLoot_Blue = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["arifle_TRG20_F","30Rnd_556x45_Stanag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x51_Box_Tracer"] + ], + [//Magazines + ["3rnd_HE_Grenade_Shell",1,2], + ["30Rnd_65x39_caseless_green",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_556x45_Stanag",3,6], + ["30Rnd_45ACP_Mag_SMG_01",3,6], + ["20Rnd_556x45_UW_mag",3,6], + ["20Rnd_762x51_Mag",3,10], + ["200Rnd_65x39_cased_Box",3,6], + ["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,4], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_AMS_snd",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + + blck_BoxLoot_Red = + [ + [// Weapons + ["MultiGun","EnergyPackLg"], + ["arifle_Katiba_F","30Rnd_65x39_caseless_green"], + ["arifle_Katiba_GL_F","30Rnd_65x39_caseless_green"], + ["arifle_Mk20_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_plain_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20C_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_F","30Rnd_556x45_Stanag"], + ["arifle_Mk20_GL_plain_F","30Rnd_556x45_Stanag"], + ["arifle_MX_F","30Rnd_65x39_caseless_mag"], + ["arifle_MX_GL_F","30Rnd_65x39_caseless_mag"], + //["arifle_MX_SW_Black_Hamr_pointer_F","100Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXC_F","30Rnd_65x39_caseless_mag"], + ["arifle_MXM_F","30Rnd_65x39_caseless_mag"], + ["arifle_SDAR_F","20Rnd_556x45_UW_mag"], + ["SMG_02_F","30Rnd_9x21_Mag"], + ["SMG_01_F","30Rnd_45ACP_Mag_SMG_01"], + ["Hgun_PDW2000_F","30Rnd_9x21_Mag"], + + ["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"], + ["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"], + + ["srifle_DMR_01_F","10Rnd_762x54_Mag"], + ["srifle_LRR_F","7Rnd_408_Mag"], + ["srifle_EBR_F","20Rnd_762x51_Mag"], + ["srifle_GM6_F","5Rnd_127x108_APDS_Mag"], + + ["LMG_Mk200_F","200Rnd_65x39_cased_Box_Tracer"], + ["Arifle_MX_SW_F","100Rnd_65x39_caseless_mag_Tracer"], + ["Arifle_MX_SW_Black_F","100Rnd_65x39_caseless_mag_Tracer"], + ["LMG_Zafir_F","150Rnd_762x54_Box"], + ["MMG_01_hex_F","150Rnd_93x64_Mag"], + ["srifle_DMR_04_Tan_F","10Rnd_338_Mag"], + ["srifle_DMR_06_camo_F","10Rnd_338_Mag"] + ], + [//Magazines + + ["3rnd_HE_Grenade_Shell",1,5],["30Rnd_65x39_caseless_green",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_556x45_Stanag",3,6],["30Rnd_45ACP_Mag_SMG_01",3,6],["20Rnd_556x45_UW_mag",3,6], + ["10Rnd_762x51_Mag",3,6],["20Rnd_762x51_Mag",3,7],["200Rnd_65x39_cased_Box",3,6],["100Rnd_65x39_caseless_mag_Tracer",3,6], + ["3rnd_HE_Grenade_Shell",1,2],["HandGrenade",1,3],["EnergyPack",2,5], + // Marksman Pack Ammo + ["150Rnd_93x64_Mag",1,4], + ["10Rnd_338_Mag",1,4], + ["10Rnd_127x54_Mag" ,1,4], + ["10Rnd_127x54_Mag",1,4], + ["10Rnd_93x64_DMR_05_Mag" ,1,4] + ], + [ // Optics + ["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Holosight",1,3],["acc_flashlight",1,3],["acc_pointer_IR",1,3], + ["optic_Arco",1,3],["optic_Hamr",1,3],["optic_Aco",1,3],["optic_ACO_grn",1,3],["optic_Aco_smg",1,3],["optic_ACO_grn_smg",1,3], + ["optic_Holosight",1,3],["optic_Holosight_smg",1,3],["optic_SOS",1,3],["optic_MRCO",1,3],["optic_DMS",1,3],["optic_Yorris",1,3], + ["optic_MRD",1,3],["optic_LRPS",1,3],["optic_NVS",1,3],["optic_Nightstalker",1,2], + ["optic_tws",1,3],["optic_tws_mg",1,3],["muzzle_snds_H",1,3],["muzzle_snds_L",1,3],["muzzle_snds_M",1,3],["muzzle_snds_B",1,3],["muzzle_snds_H_MG",1,3],["muzzle_snds_acp",1,3], + ["optic_AMS_khk",1,3],["optic_KHS_blk",1,3],["optic_KHS_hex",1,3],["optic_KHS_old",1,3],["optic_KHS_tan",1,3] + ], + [ + + ], + [//Items + + ], + [ // Backpacks + ["B_AssaultPack_dgtl",0,2],["B_AssaultPack_khk",0,2],["B_AssaultPack_mcamo",0,2],["B_AssaultPack_ocamo",0,2],["B_AssaultPack_rgr",0,2],["B_AssaultPack_sgg",0,2], + ["B_Carryall_cbr",0,2],["B_Carryall_khk",0,2],["B_Carryall_mcamo",0,2],["B_Carryall_ocamo",0,2],["B_Carryall_oli",0,2],["B_Carryall_oucamo",0,2],["B_FieldPack_blk",0,2], + ["B_FieldPack_cbr",0,2],["B_FieldPack_khk",0,2],["B_FieldPack_ocamo",0,2],["B_FieldPack_oli",0,2],["B_FieldPack_oucamo",0,2],["B_Kitbag_cbr",0,2],["B_Kitbag_mcamo",0,2], + ["B_Kitbag_rgr",0,2],["B_Kitbag_sgg",0,2],["B_Parachute",0,2],["B_TacticalPack_blk",0,2],["B_TacticalPack_mcamo",0,2],["B_TacticalPack_ocamo",0,2],["B_TacticalPack_oli",0,2], + ["B_TacticalPack_rgr",0,2] + ] + ]; + +blck_contructionLoot = blck_BoxLoot_Orange; +blck_highPoweredLoot = blck_BoxLoot_Orange; +blck_supportLoot = blck_BoxLoot_Orange; + + +blck_crateTypes = ["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F","Box_NATO_Wps_F","I_CargoNet_01_ammo_F","O_CargoNet_01_ammo_F","B_CargoNet_01_ammo_F"]; // Default crate type. + +diag_log "[blckeagls] Default Configurations Loaded"; + diff --git a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf index 218813a..23ebeb7 100644 --- a/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf +++ b/@GMS/addons/custom_server/Configs/blck_configs_epoch_mil.sqf @@ -526,6 +526,14 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR "U_B_CTRG_Soldier_urb_2_F", "U_B_CTRG_Soldier_urb_3_F" ]; + blck_femaleUniformsEpoch = [ + "U_CamoBlue_uniform", "U_CamoBrn_uniform", "U_CamoPinkPolka_uniform","U_CamoPink_uniform","U_CamoOutback_uniform", + "U_CamoBubblegum_uniform","U_CamoBiker_uniform","U_CamoAloha_uniform","U_CamoRed_uniform" + ]; + blck_femaleWetsuitsEpoch = [ + "U_Wetsuit_uniform","U_Wetsuit_White","U_Wetsuit_Blue","U_Wetsuit_Purp","U_Wetsuit_Camo" + ]; + blck_SkinList = blck_femaleUniformsEpoch + blck_femaleWetsuitsEpoch + blck_SkinList_Male; blck_SkinList_blue = blck_SkinList; blck_SkinList_red = blck_SkinList; blck_SkinList_green = blck_SkinList; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf index 3185e74..1f524be 100644 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf +++ b/@GMS/addons/custom_server/Missions/UMS/GMS_UMS_configurations.sqf @@ -65,8 +65,7 @@ if ((toLower blck_modType) isEqualTo "default") then "Exile_Boat_SDV_Grey" ]; - blck_UMS_crates = - [ + blck_UMS_crates = blck_crateTypes; ]; }; diff --git a/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf b/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf deleted file mode 100644 index 9e34194..0000000 --- a/@GMS/addons/custom_server/Missions/UMS/GMS_fnc_spawnDynamicUMSMission.sqf +++ /dev/null @@ -1,418 +0,0 @@ -/* - Dynamic Underwater Mission Spawner - By Ghostrider GRG - Copyright 2016 - - -------------------------- - License - -------------------------- - All the code and information provided here is provided under an Attribution Non-Commercial ShareAlike 4.0 Commons License. - - http://creativecommons.org/licenses/by-nc-sa/4.0/ -*/ -#include "\q\addons\custom_server\Configs\blck_defines.hpp"; - -#define isScubaMission true -#define delayTime 1 -private ["_abort","_crates","_aiGroup","_objects","_mines","_blck_AllMissionAI","_blck_localMissionMarker", - "_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned", - "_blck_AllMissionAI","_delayTime","_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_marker","_vehicleCrewCount", - "_defaultMissionLocations"]; - -params["_coords","_mission",["_allowReinforcements",false]]; - -_markerClass = _mission; -_aiDifficultyLevel = _difficulty; // _difficulty is defined in the mission description file. see \addons\custom_server\Missions\UMS\dynamicMissions\default.sqf for an example - -diag_log format["[blckeagls Dynamic UMS] dynamicUMSspawner (34):: Initializing mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]; - - -if (isNil "_assetKilledMsg") then {_assetKilledMsg = ""}; -if (isNil "_markerColor") then {_markerColor = "ColorBlack"}; -if (isNil "_markerType") then {_markerType = ["mil_box",[]]}; -if (isNil "_markerSize") then {_markerSize = []}; -if (isNil "_endCondition") then {_endCondition = blck_missionEndCondition}; // Options are "allUnitsKilled", "playerNear", "allKilledOrPlayerNear"}; -if (isNil "_spawnCratesTiming") then {_spawnCratesTiming = blck_spawnCratesTiming}; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir". -if (isNil "_loadCratesTiming") then {_loadCratesTiming = blck_loadCratesTiming}; // valid choices are "atMissionCompletion" and "atMissionSpawn"; -if (isNil "_missionPatrolVehicles") then {_missionPatrolVehicles = []}; -if (isNil "_missionGroups") then {_missionGroups = []}; -if (isNil "_hostageConfig") then {_hostageConfig = []}; -if (isNil "_enemyLeaderConfig") then {_enemyLeaderConfig = []}; -if (isNil "_useMines") then {_useMines = blck_useMines;}; -if (isNil "_weaponList") then {_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout}; -if (isNil "_sideArms") then {_sideArms = [_aiDifficultyLevel] call blck_fnc_selectAISidearms}; -if (isNil "_uniforms") then {_uniforms = [_aiDifficultyLevel] call blck_fnc_selectAIUniforms}; -if (isNil "_headGear") then {_headGear = [_aiDifficultyLevel] call blck_fnc_selectAIHeadgear}; -if (isNil "_vests") then {_vests = [_aiDifficultyLevel] call blck_fnc_selectAIVests}; -if (isNil "_backpacks") then {_backpacks = [_aiDifficultyLevel] call blck_fnc_selectAIBackpacks}; -if (isNil "_chanceHeliPatrol") then {_chanceHeliPatrol = [_aiDifficultyLevel] call blck_fnc_selectChanceHeliPatrol}; -if (isNil "_noChoppers") then {_noChoppers = [_aiDifficultyLevel] call blck_fnc_selectNumberAirPatrols}; -if (isNil "_chancePara") then {_chancePara = [_aiDifficultyLevel] call blck_fnc_selectChanceParatroops}; -if (isNil "_missionHelis") then {_missionHelis = [_aiDifficultyLevel] call blck_fnc_selectMissionHelis}; -if (isNil "_noPara") then {_noPara = [_aiDifficultyLevel] call blck_fnc_selectNumberParatroops}; -if (isNil "_paraSkill") then {_paraSkill = _aiDifficultyLevel}; -if (isNil "_chanceLoot") then {_chanceLoot = 1.0}; //0.5}; -if (isNil "_paraTriggerDistance") then {_paraTriggerDistance = 400;}; -if (isNil "_paraLoot") then {_paraLoot = blck_BoxLoot_Green}; // Add diffiiculty based settings -if (isNil "_paraLootCounts") then {_paraLootCounts = blck_lootCountsRed}; // Add difficulty based settings -if (isNil "_missionLootVehicles") then {_missionLootVehicles = []}; -if (isNil "_garrisonedBuilding_ATLsystem") then {_garrisonedBuilding_ATLsystem = []}; -if (isNil "_garrisonedBuildings_BuildingPosnSystem") then {_garrisonedBuildings_BuildingPosnSystem = []}; -if (isNil "_vehicleCrewCount") then {_vehicleCrewCount = [_aiDifficultyLevel] call GMS_fnc_selectVehicleCrewCount}; -if (isNil "_defaultMissionLocations") then {_defaultMissionLocations = []}; -if (isNil "_submarinePatrolParameters") then {_submarinePatrolParameters = []}; -if (isNil "_airpatrols") then {_airpatrols = []}; -if (isNil "_scubagroupparameters") then {_scubagroupparameters = []}; -if (isNil "_markerMissionName") then { - diag_log format["_fnc_missionSpawner: _markerMissionName not defined, using default value"]; - _markerMissionName = "Default Mission Name"; -}; -if (isNil "_noLootCrates") then {_noLootCrates = 1}; -if (isNil "_lootCrates") then {_lootCrates = blck_crateTypes}; -if (isNil "_lootCratePositions") then {_lootCratePositions = []}; -if (isNil "_isScubaMission") then {_isScubaMission = false}; -if (isNil "_missionLootBoxes") then {_missionLootBoxes = []}; - -_objects = []; -_mines = []; -_crates = []; -_aiGroup = []; -_missionAIVehicles = []; -_blck_AllMissionAI = []; -_AI_Vehicles = []; -_blck_localMissionMarker = [_markerClass,_coords,"","",_markerColor,_markerType]; -_delayTime = 1; -_groupPatrolRadius = 50; - -if (blck_labelMapMarkers select 0) then -{ - _blck_localMissionMarker set [2, _markerMissionName]; -}; -if !(blck_preciseMapMarkers) then -{ - _blck_localMissionMarker set [1,[_coords,75] call blck_fnc_randomPosition]; -}; -_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name? -[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers; -_marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker; -_blck_localMissionMarker set [0, _marker]; -//////// -// All parameters are defined, let's wait until a player is nearby or the mission has timed out -//////// - -_missionStartTime = diag_tickTime; -_playerInRange = false; -_missionTimedOut = false; - -_wait = true; - -while {_wait} do -{ - if ([_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange) exitWith {_playerInRange = true;}; - if ([_missionStartTime,blck_MissionTimeout] call blck_fnc_timedOut) exitWith {_missionTimedOut = true;}; - uiSleep 5; - -}; - -if (_missionTimedOut) exitWith -{ - // Deal with the case in which the mission timed out. - blck_priorDynamicUMS_Missions pushback [_coords,diag_tickTime]; - blck_UMS_ActiveDynamicMissions = blck_UMS_ActiveDynamicMissions - [_coords]; - blck_dynamicUMS_MissionsRuning = blck_dynamicUMS_MissionsRuning - 1; - diag_log format["_fnc_dynamicUMSSpawner (187): mission timed out"]; - [_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission; -}; - -//////// -// Spawn the mission objects, loot chest, and AI -//////// - -if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate -{ - _temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates; - if (typeName _temp isEqualTo "ARRAY") then - { - _objects append _temp; - }; -}; - -uiSleep delayTime; -if (_useMines) then -{ - _mines = [_coords] call blck_fnc_spawnMines; - //uiSleep _delayTime;; -}; -uiSleep delayTime; -_temp = []; -//diag_log format["_dynamicUMSspawner"" _missionLandscape = %1 | _missionLandscapeMode = %2",_missionLandscape, _missionLandscapeMode]; -if (_missionLandscapeMode isEqualTo "random") then -{ - _temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape; -}; -if (_missionLandscapeMode isEqualTo "precise") then -{ - //params["_center","_objects"]; - _temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects; - //uiSleep 1; -}; -//diag_log format["_fnc_dynamicUMSspawner: _temp = %1, typeName _temp = %2",_temp, typeName _temp]; -if (typeName _temp isEqualTo "ARRAY") then -{ - _objects append _temp; -}; - -uiSleep delayTime;; - -_temp = [_coords,_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles; -//uisleep 1; -_crates append _temp; - -uiSleep _delayTime; - -private _abort = false; -private _temp = [[],[],false]; -diag_log format["_fnc_dynamicUMSspawner: spawning infantry using data in _missionGroups with _missionGroups = %1",_missionGroups]; -// Require that the server admin define the location of any infantry patrols given that missions will be off-shore. -// AI could be spawned on a platform or floating structure. -if (count _missionGroups > 0) then -{ - if (isNil "_noAIGroups") then {_noAIGroups = 1}; - diag_log format["_fnc_dynamicUMSSpawner: _noAIGroups = %1",_noAIGroups]; - // _temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; - _temp = [_coords, _minNoAI,_maxNoAI,_noAIGroups,_missionGroups,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionAI; - _blck_AllMissionAI append (_temp select 0); -}; - -private "_temp"; -if (count _scubaGroupParameters > 0) then -{ - //diag_log format["_fnc_dynamicUMSspawner: spawning scuba groups with _scubaGroupParameters = %1",_scubaGroupParameters]; - // params["_coords",["_minNoAI",3],["_maxNoAI",6],"_missionGroups",["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],["_vests",blck_vests],["_backpacks",[]],["_weapons",[]],["_sideArms",blck_Pistols],["_isScubaGroup",false]]; - _temp = [_coords, _minNoAI,_maxNoAI,count _scubaGroupParameters,_scubaGroupParameters,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnMissionAI; - _blck_AllMissionAI append (_temp select 0); -}; - -uiSleep _delayTime; - -_temp = [[],[],false]; -_abort = false; -private["_patrolVehicles","_vehToSpawn"]; -_vehToSpawn = 0; - -// Spawn any surface patrols -if (blck_useVehiclePatrols && count _vehiclePatrolParameters > 0) then -{ - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_vehiclePatrolParameters,true,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms,false,_vehicleCrewCount /*,blck_UMS_weapons,blck_UMS_vests,isScubaMission*/ ] call blck_fnc_spawnMissionVehiclePatrols; - _missionAIVehicles append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; -// Spawn any submarine patrols -if (blck_useVehiclePatrols && count _submarinePatrolParameters > 0) then -{ - // params["_coords","_noVehiclePatrols","_aiDifficultyLevel","_missionPatrolVehicles",["_useRelativePos",true],["_uniforms",blck_SkinList], ["_headGear",blck_headgear],["_vests",blck_vests],["_backpacks",blck_backpacks],["_weaponList",[]],["_sideArms",blck_Pistols], ["_isScubaGroup",false]]; - _temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_submarinePatrolParameters,true,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnMissionVehiclePatrols; - _missionAIVehicles append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; - -uiSleep delayTime; - -_noChoppers = [_noChoppers] call blck_fnc_getNumberFromRange; -_noPara = [_noPara] call blck_fnc_getNumberFromRange; - -if (_noChoppers > 0) then -{ - for "_i" from 1 to (_noChoppers) do - { - if (random(1) < _chanceHeliPatrol) then - { - //_temp = [_coords,_missionHelis,spawnHeli,_aiDifficultyLevel,_chancePara,_noPara,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnMissionReinforcements; - _temp = [_coords,_aiDifficultyLevel,_missionHelis] call blck_fnc_spawnMissionHeli; - blck_monitoredVehicles pushBack (_temp select 0); - _blck_AllMissionAI append (_temp select 1); - }; - }; -}; - -////////////////////////// -// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects. - -uiSleep 15; -private["_noEmplacedToSpawn"]; -_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange; -//diag_log format["_dynamicUMSspawner:: _noEmplacedToSpawn = %1",_vehToSpawn]; -if (blck_useStatic && ((_noEmplacedToSpawn > 0)) || count _missionEmplacedWeapons > 0) then -{ - _temp = [_coords,_missionEmplacedWeapons,true,_noEmplacedToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_vests,_backpacks,_weaponList,_sideArms] call blck_fnc_spawnEmplacedWeaponArray; - _objects append (_temp select 0); - _blck_AllMissionAI append (_temp select 1); -}; - -uiSleep _delayTime; -if (isNil "blck_UMS_crates") then {blck_UMS_crates = blck_crateTypes}; -if (blck_UMS_crates isEqualTo []) then {blck_UMS_crates = blck_crateTypes}; -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then -{ - if (count _missionLootBoxes > 0) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming, _spawnCratesTiming, "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; -}; - -if (blck_cleanUpLootChests) then -{ - _objects append _crates; -}; -if (_noPara > 0 && (random(1) < _chancePara) && _paraTriggerDistance == 0) then -{ - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; -}; - -// Trigger for mission end -private["_missionComplete","_endIfPlayerNear","_endIfAIKilled"]; -_missionComplete = -1; -_startTime = diag_tickTime; -if (blck_showCountAliveAI) then -{ - if !(_marker isEqualTo "") then - { - [_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI]; - }; -}; -switch (_endCondition) do -{ - case "playerNear": {_endIfPlayerNear = true;_endIfAIKilled = false;}; - case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;}; - case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;}; -}; - -private["_locations"]; -_locations = [_coords]; -{ - _locations pushback (getPos _x); - _x setVariable["crateSpawnPos", (getPos _x)]; -} forEach _crates; - -if (blck_showCountAliveAI) then -{ - if !(_marker isEqualTo "") then - { - [_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount; - blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI]; - }; -}; - -private _spawnPara = if (random(1) < _chancePara) then {true} else {false}; -_missionComplete = -1; -while {_missionComplete isEqualTo -1} do -{ - if ((_endIfPlayerNear) && [_locations,10,true] call blck_fnc_playerInRangeArray) exitWith {}; - if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1) exitWith {}; - - if (_spawnCratesTiming isEqualTo "atMissionSpawn") then - { - { - if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith - { - _missionComplete = 1; - _crateStolen = true; - }; - }forEach _crates; - }; - if (_spawnPara) then - { - - if ([_coords,_paraTriggerDistance,true] call blck_fnc_playerInRange) then - { - _spawnPara = false; // The player gets one try to spawn these. - if (random(1) < _chancePara) then // - { - // blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits;] call blck_fnc_spawnParaUnits; - private _paratroops = [_coords,_noPara,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,blck_UMS_vests,[],blck_UMS_weapons,[],isScubaMission] call blck_fnc_spawnParaUnits; - if !(isNull _paratroops) then - { - _blck_AllMissionAI append (units _paratroops); - }; - if (random(1) < _chanceLoot) then - { - private _extraCrates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_paraLoot,_paraLootCounts]], "atMissionSpawn","atMissionStartAir", "start", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - if (blck_cleanUpLootChests) then - { - _objects append _extraCrates; - }; - }; - }; - }; - }; - //diag_log format["dynamicUMSspawner:: (483) missionCompleteLoop - > players near = %1 and ai alive = %2 and crates stolen = %3",[_coords,20] call blck_fnc_playerInRange, {alive _x} count _blck_AllMissionAI, _crateStolen]; - uiSleep 4; -}; -if (_crateStolen) exitWith -{ - //diag_log format["dynamicUMSspawner:: (542) Crate Stolen Callening _fnc_endMission - > players near = %1 and ai alive = %2 and crates stolen = %3",[_locations,10,true] call blck_fnc_playerInRangeArray, {alive _x} count _blck_AllMissionAI, _crateStolen]; - [_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_mission,2,isScubaMission] call blck_fnc_endMission; -}; - -if (_spawnCratesTiming in ["atMissionEndGround","atMissionEndAir"]) then -{ - if (count _missionLootBoxes > 0) then - { - _crates = [_coords,_missionLootBoxes,_loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - } - else - { - _crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming,_spawnCratesTiming, "end", _aiDifficultyLevel] call blck_fnc_spawnMissionCrates; - }; - - if (blck_cleanUpLootChests) then - { - _objects append _crates; - }; -}; - -if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then -{ - { - [_x] call blck_fnc_loadMissionCrate; - } forEach _crates; -}; - -private["_result"]; -// Force passing the mission name for informational purposes. -_blck_localMissionMarker set [2, _markerMissionName]; -if (blck_showCountAliveAI) then -{ - //_marker setMarkerText format["%1: All AI Dead",_markerMissionName]; - { - if ((_x select 1) isEqualTo _markerMissionName) exitWith{blck_missionMarkers deleteAt _forEachIndex}; - }forEach blck_missionMarkers; -}; -// params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_endCondition",0],["_vehicles",[]],["_isScubaMission",false]]; -_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,0,_missionAIVehicles,isScubaMission] call blck_fnc_endMission; - -blck_missionsRun = blck_missionsRun + 1; -diag_log format["[blckeagls] dynamicUMSspawner:: Total Dyanamic Land and UMS Run = %1", blck_missionsRun]; diff --git a/@GMS/addons/custom_server/changeLog.sqf b/@GMS/addons/custom_server/changeLog.sqf index e6b3ec0..5d72d8e 100644 --- a/@GMS/addons/custom_server/changeLog.sqf +++ b/@GMS/addons/custom_server/changeLog.sqf @@ -7,7 +7,7 @@ Many thanks for new Coding and ideas from Grahame. Significant Changes: ===================== -6.98 Build 204 +6.98 Build 206 FIXED: few minor bug fixes. FIXED: Static Mission Loot vehicles are no longer deleted by Epoch servers when players enter them. FIXED: an error in coordinates for some randomly spawned missions tha added an extra 0 to the array with the coordinaates. diff --git a/@GMS/addons/custom_server/init/blck_init_server.sqf b/@GMS/addons/custom_server/init/blck_init_server.sqf index ad041bf..30927f8 100644 --- a/@GMS/addons/custom_server/init/blck_init_server.sqf +++ b/@GMS/addons/custom_server/init/blck_init_server.sqf @@ -49,28 +49,32 @@ if ((toLower blck_modType) isEqualTo "default") then // Just some housekeeping for ghost. private _blck_loadingStartTime = diag_tickTime; #include "\q\addons\custom_server\init\build.sqf"; -diag_log format["[blckeagls] build information loaded at %1",diag_tickTime]; +//diag_log format["[blckeagls] build information loaded at %1",diag_tickTime]; // compile functions [] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_functions.sqf"; -diag_log format["[blckeagls] functions compiled at %1",diag_tickTime]; +//diag_log format["[blckeagls] functions compiled at %1",diag_tickTime]; [] call compile preprocessfilelinenumbers "\q\addons\custom_server\Configs\blck_configs.sqf"; -diag_log format["[blckeagls] blck_configs.sqf run at %1",diag_tickTime]; +if (blck_debugOn) then {diag_log format["[blckeagls] blck_configs.sqf run at %1",diag_tickTime]}; waitUntil{(!isNil "blck_useHC") && (!isNil "blck_simulationManager") && (!isNil "blck_debugOn") && (!isNil "blck_AI_Side")}; uiSleep 10; +if (blck_debugOn) then {diag_log format["[blckeagls] blck_AI_Side = %1",blck_AI_Side]}; // Load any user-defined specifications or overrides #include "\q\addons\custom_server\Configs\blck_custom_config.sqf"; diag_log format["[blckeagls] Custom Configurations Loaded at %1",diag_tickTime]; -diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %3",blck_debugON,blck_debugLevel]; +diag_log format["[blckeagls] debug mode settings:blck_debugON = %1 | blck_debugLevel = %2",blck_debugON,blck_debugLevel]; +// blck_customConfigsLoaded +diag_log format["[blckeagls] blck_customConfigsLoaded = %1",if(isNil "blck_customConfigsLoaded") then {"nil"} else {blck_customConfigsLoaded}]; +//diag_log format["[blckeagls] blck_CUPWeapons = %1",if(isNil "blck_CUPWeapons") then {"nil"} else {blck_CUPWeapons}]; // Load vaariables used to store information for the mission system. [] call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\blck_variables.sqf"; -diag_log format["[blckeagls] Variables loaded at %1",diag_tickTime]; +if (blck_debugOn) then {diag_log format["[blckeagls] Variables loaded at %1",diag_tickTime]}; // configure dynamic simulation management is this is being used. if (blck_simulationManager == 2) then @@ -89,11 +93,11 @@ if (blck_spawnMapAddons) then // find and set Mapcenter and size call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\init\GMS_fnc_findWorld.sqf"; -diag_log "[blckeagls] Map-specific information defined"; +if (blck_debugOn) then {diag_log "[blckeagls] Map-specific information defined"}; // set up the lists of available missions for each mission category #include "\q\addons\custom_server\Missions\GMS_missionLists.sqf"; -diag_log "[blckeagls] Mission Lists Loaded Successfully"; +if (blck_debugOn) then {diag_log "[blckeagls] Mission Lists Loaded Successfully"}; call compile preprocessfilelinenumbers "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf"; call compile preprocessfilelinenumbers "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions. @@ -169,56 +173,31 @@ blck_townLocations = _villages + _cites + _capitals + _marine + _other + _airpor { blck_locationBlackList pushBack [locationPosition _x, blck_minDistanceFromTowns]; } forEach blck_townLocations; -diag_log format["_init_server: count blck_townLocations = %1 || blck_townLocations = %2",count blck_townLocations, blck_townLocations]; + //Start the mission timers if (blck_enableOrangeMissions > 0) then { - //[_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange] spawn blck_fnc_missionTimer;//Starts major mission system (Orange Map Markers) + [_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange,blck_enableOrangeMissions] call blck_fnc_addMissionToQue; }; if (blck_enableGreenMissions > 0) then { - //[_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green] spawn blck_fnc_missionTimer;//Starts major mission system 2 (Green Map Markers) + [_missionListGreen,_pathGreen,"GreenMarker","green",blck_TMin_Green,blck_TMax_Green,blck_enableGreenMissions] call blck_fnc_addMissionToQue; }; if (blck_enableRedMissions > 0) then { - //[_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red] spawn blck_fnc_missionTimer;//Starts minor mission system (Red Map Markers)//Starts minor mission system 2 (Red Map Markers) + [_missionListRed,_pathRed,"RedMarker","red",blck_TMin_Red,blck_TMax_Red,blck_enableRedMissions] call blck_fnc_addMissionToQue; }; if (blck_enableBlueMissions > 0) then { - //[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue] spawn blck_fnc_missionTimer;//Starts minor mission system (Blue Map Markers) + [_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue; }; -#ifdef GRGserver -diag_log "[blckeagls] Running GhostriderGaming Version"; -//diag_log format["[blckeagls] _init_server: blck_enableScoutsMissions = %1",blck_enableScoutsMissions]; -if (blck_enableScoutsMissions > 0) then -{ - //[_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts] spawn blck_fnc_missionTimer; - [_missionListScouts,_pathScouts,"ScoutsMarker","red",blck_TMin_Scouts,blck_TMax_Scouts,blck_enableScoutsMissions,false] call blck_fnc_addMissionToQue; -}; -//diag_log format["[blckeagls] _init_server: blck_enableHunterMissions = %1",blck_enableHunterMissions]; -if (blck_enableHunterMissions > 0) then -{ - //[_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter] spawn blck_fnc_missionTimer; - // params["_missionList","_path","_marker","_difficulty","_tMin","_tMax","_noMissions"]; - [_missionListHunters,_pathHunters,"HunterMarker","green",blck_TMin_Hunter,blck_TMax_Hunter,blck_enableHunterMissions,false] call blck_fnc_addMissionToQue; -}; - -// Running new version of Crash sites. -//diag_log format["[blckeagls] _init_server: blck_maxCrashSites = %1",blck_maxCrashSites]; -if (blck_maxCrashSites > 0) then -{ - [] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf"; -}; -//diag_log "loading DLS System"; -call compile preprocessfilelinenumbers "\q\addons\custom_server\DLS\DLS_init.sqf"; -#endif // Setup a group for AI corpses blck_graveyardGroup = createGroup [blck_AI_Side,false]; @@ -247,22 +226,4 @@ if (blck_debugOn || (blck_debugLevel >= 1)) then } forEach [blck_MinDistanceFromMission,blck_minDistanceToBases,blck_minDistanceToPlayer,blck_minDistanceFromTowns]; }; */ -if (blck_debugOn) then -{ - diag_log "blck_init_server: findSafePosn speed tests"; - private _allCoords = []; - private _t1 = diag_tickTime; - for "_i" from 1 to 25 do - { - private _coords = [] call blck_fnc_FindSafePosn; - }; - diag_log format["blck_init_server: time elapsed for 10000 calls to blck_fnc_findSafePosn = %1",diag_tickTime - _t1]; - _t1 = diag_tickTime; - _allCoords = []; - for "_j" from 1 to 25 do - { - private _coords = [] call blck_fnc_FindSafePosn_2; - }; - diag_log format["blck_init_server: time elapsed for 10000 calls to blck_fnc_findSafePosn_2 = %1",diag_tickTime - _t1]; -}; diff --git a/@GMS/addons/custom_server/init/build.sqf b/@GMS/addons/custom_server/init/build.sqf index 13e3ea5..9fb74df 100644 --- a/@GMS/addons/custom_server/init/build.sqf +++ b/@GMS/addons/custom_server/init/build.sqf @@ -1,4 +1,4 @@ -#define blck_buildNumber 205 +#define blck_buildNumber 206 #define blck_versionNumber 6.98 -#define blck_buildDate "6-3-20" +#define blck_buildDate "6-27-20"