V 6.81 Build 124
New functions added. Coding efficiencies implemented.
This commit is contained in:
parent
36c6393710
commit
0d39cf014d
@ -0,0 +1,45 @@
|
||||
/*
|
||||
for ghostridergaming
|
||||
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";
|
||||
params["_obj","_difficulty"];
|
||||
private _mod = [] call blck_fnc_getModType;
|
||||
//diag_log format["_fnc_addMoneyToObject: _this = %1",_this];
|
||||
#ifdef blck_debugMode
|
||||
{
|
||||
diag_log format["_fnc_addMoneyToOject: _this select %1 = %2",_foreachindex, _this select _foreachindex];
|
||||
}forEach _this;
|
||||
#endif
|
||||
if (_mod isEqualTo "Exile") then
|
||||
{
|
||||
switch (_difficulty) do
|
||||
{
|
||||
case "blue":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyBlue] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "red":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyRed] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "green":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "orange":{_obj setVariable["ExileMoney", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];};
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_fnc_addMoneyToOject: ExileMoney set to %1", _obj getVariable "ExileMoney"];
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
if (_mod isEqualTo "Epoch") then
|
||||
{
|
||||
switch (_difficulty) do
|
||||
{
|
||||
case "blue":{_obj setVariable["Crypto", floor(random([blck_crateMoneyBlue] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "red":{_obj setVariable["Crypto", floor(random([blck_crateMoneyRed] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "green":{_obj setVariable["Crypto", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];};
|
||||
case "orange":{_obj setVariable["Crypto", floor(random([blck_crateMoneyGreen] call blck_fnc_getNumberFromRange)),true];};
|
||||
};
|
||||
};
|
@ -15,7 +15,7 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole"];
|
||||
private["_findNew","_tries","_coords","_dist","_xpos","_ypos","_newPos","_townPos","_pole","_oldPos","_ignore"];
|
||||
|
||||
_findNew = true;
|
||||
_tries = 0;
|
||||
@ -50,7 +50,6 @@ while {_findNew} do {
|
||||
|
||||
//diag_log format["#- findSafePosn -# blck_recentMissionCoords isEqualTo %1", blck_recentMissionCoords];
|
||||
{
|
||||
private["_oldPos","_ignore"];
|
||||
_ignore = false;
|
||||
//diag_log format["-# findSafePosn.sqf -# Old Mission element is %1", _x];
|
||||
if (diag_tickTime > ((_x select 1) + 1200)) then // if the prior mission was completed more than 20 min ago then delete it from the list and ignore the check for this location.
|
||||
@ -71,7 +70,6 @@ while {_findNew} do {
|
||||
} forEach blck_recentMissionCoords;
|
||||
|
||||
// test for water nearby
|
||||
private ["_i"];
|
||||
_dist = 100;
|
||||
for [{_i=0}, {_i<360}, {_i=_i+20}] do
|
||||
{
|
||||
|
@ -55,13 +55,14 @@ while {true} do
|
||||
//diag_log format["_fnc_mainThread: 60 second events run at %1",diag_tickTime];
|
||||
_timer1min = diag_tickTime;
|
||||
[] call blck_fnc_spawnPendingMissions;
|
||||
//diag_log format["_fnc_spawnPendingMissions: blck_numberUnderwaterDynamicMissions = %1 |
|
||||
//diag_log format["_fnc_mainThrea: blck_numberUnderwaterDynamicMissions = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_numberUnderwaterDynamicMissions,blck_dynamicUMS_MissionsRuning];
|
||||
if (blck_dynamicUMS_MissionsRuning < blck_numberUnderwaterDynamicMissions) then
|
||||
{
|
||||
//diag_log "Adding dyanamic UMS Mission";
|
||||
private ["_spawnPos"];
|
||||
_spawnPos = call blck_fnc_findShoreLocation;
|
||||
[_spawnPos] spawn blck_fnc_addDyanamicUMS_Mission;
|
||||
//diag_log "Adding dynamic UMS Mission";
|
||||
//private ["_spawnPos"];
|
||||
//_spawnPos = call blck_fnc_findShoreLocation;
|
||||
//[_spawnPos] spawn blck_fnc_addDyanamicUMS_Mission;
|
||||
[] spawn blck_fnc_addDyanamicUMS_Mission;
|
||||
//_spawnPos call compileFinal preprocessFileLineNumbers format["q\addons\custom_server\Missions\UMS\dynamicMissiones\%1.sqf";
|
||||
};
|
||||
//diag_log format["_fnc_mainThread: control returned to _fnc_mainThread from _fnc_addDynamicUMS_Mission at %1",diag_tickTime];
|
||||
|
@ -4,8 +4,6 @@
|
||||
//////////////////////////////////////////
|
||||
// spawn a round marker of a size and color specified in passed parameters
|
||||
|
||||
private["_blck_fn_configureRoundMarker"];
|
||||
|
||||
private["_blck_fn_configureRoundMarker"];
|
||||
_blck_fn_configureRoundMarker = {
|
||||
private["_name","_pos","_color","_size","_MainMarker","_arrowMarker","_labelMarker","_labelType"];
|
||||
|
@ -28,7 +28,7 @@ private["_numTransfered","_clientId","_allGroups","_groupsOwned","_idHC","_id","
|
||||
{
|
||||
if !(_x in blck_connectedHCs) then {blck_connectedHCs pushBack _x};
|
||||
}forEach entities "HeadlessClient_F";
|
||||
diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps];
|
||||
//diag_log format["_fnc_passToHCs:: blck_connectedHCs = %1 | count _HCs = %2 | server FPS = %3",blck_connectedHCs,count blck_connectedHCs,diag_fps];
|
||||
if ((count blck_connectedHCs) > 0) then
|
||||
{
|
||||
_idHC = [blck_connectedHCs] call blck_fnc_leastBurdened;
|
||||
@ -48,7 +48,7 @@ if ((count blck_connectedHCs) > 0) then
|
||||
//diag_log format["group %1 is already assigned to an HC with _id of %2",_x,_id];
|
||||
_swap = false;
|
||||
} else {
|
||||
diag_log format["group %1 should be moved to HC %2 with _idHC %3",_x,_idHC];
|
||||
//diag_log format["group %1 should be moved to HC %2 with _idHC %3",_x,_idHC];
|
||||
_x setVariable["owner",owner _idHC];
|
||||
_rc = _x setGroupOwner (owner _idHC);
|
||||
[_x] remoteExec["blck_fnc_HC_XferGroup",_idHC];
|
||||
@ -94,5 +94,7 @@ if ((count blck_connectedHCs) > 0) then
|
||||
*/
|
||||
//diag_log format["_passToHCs:: %1 vehicles transferred",_numTransfered];
|
||||
} else {
|
||||
diag_log "_fnc_passToHCs:: No headless clients connected";
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log "_fnc_passToHCs:: No headless clients connected"};
|
||||
#endif
|
||||
};
|
||||
|
@ -64,7 +64,7 @@ if (blck_debugLevel > 2) then
|
||||
if (_group getVariable["wpPatrolMode",""] isEqualTo "SAD") then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_changeToMoveWaypoint: seting waypoint script for group %1 to SAD Mode",_group];
|
||||
};
|
||||
@ -76,7 +76,7 @@ if (_group getVariable["wpPatrolMode",""] isEqualTo "SAD") then
|
||||
if (_group getVariable["wpPatrolMode",""] isEqualTo "SENTRY") then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_changeToMoveWaypoint: seting waypoint script for group %1 to SENTRY Mode",_group];
|
||||
};
|
||||
@ -86,7 +86,7 @@ if (_group getVariable["wpPatrolMode",""] isEqualTo "SENTRY") then
|
||||
#endif
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_changeToMoveWaypoint:: -- >> Waypoint statements for group %1 have been configured as %2",_group, waypointStatements _wp];
|
||||
};
|
||||
|
@ -33,13 +33,13 @@ _wp setWaypointCombatMode "RED";
|
||||
_wp setWaypointTimeout [10,15,20];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint; diag_log format['====Updating timestamp for group %1 and changing its WP to a Move Waypoint',group this];"];
|
||||
if (blck_debugLevel > 2) then {_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint; diag_log format['====Updating timestamp for group %1 and changing its WP to a Move Waypoint',group this];"]};
|
||||
#else
|
||||
_wp setWaypointStatements ["true","this call blck_fnc_changeToMoveWaypoint;"];
|
||||
#endif
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
private ["_marker"];
|
||||
_marker = _group getVariable["wpMarker",""];
|
||||
|
@ -8,4 +8,5 @@ _client = clientOwner;
|
||||
_tempEH = ["reloaded",_unit addEventHandler ["reloaded", {_this call compile preprocessfilelinenumbers blck_EH_unitWeaponReloaded;}]];
|
||||
_localEH pushBack _tempEH;
|
||||
_x setVariable["localEH",_localEH,true];
|
||||
}forEach (units _group);
|
||||
}forEach (units _group);
|
||||
diag_log format["blckHC:: group %1 transferred to HC %1",_group,_client];
|
@ -12,5 +12,6 @@ diag_log "_fnc_HCmonitor.sqf";
|
||||
_totalGroups = {(groupOwner _x) isEqualTo clientOwner} count allGroups;
|
||||
_totalGroups = _blckGroups + _otherGroups;
|
||||
diag_log format["blckHC:: headless client %1 at diag_tickTime running %3 fps",clientOwner,diag_tickTime,diag_fps];
|
||||
diag_log format["blckHC:: headless client %1 _blckGroups = %1 and _otherGroups = %2",_blckGroups,_otherGroups];
|
||||
uiSleep 60;
|
||||
};
|
||||
|
@ -1,10 +1,10 @@
|
||||
params["_name","_owner"];
|
||||
diag_log format["_fnc_onPlayerDisconnected triggered with _name = %1 and _owner = %2",_name,_owner];
|
||||
//diag_log format["_fnc_onPlayerDisconnected triggered with _name = %1 and _owner = %2",_name,_owner];
|
||||
private["_HCownerids","_groupLocalEH","_vehicleLocalEH"];
|
||||
// Remove the name of the HC from the list of active, connected HCs
|
||||
if (toLower(_name) isEqualTo "headlessclient") then
|
||||
{
|
||||
diag_log "_fnc_onPlayerDisconnected: a headless client disconnected, time to deal with the damage";
|
||||
//diag_log "_fnc_onPlayerDisconnected: a headless client disconnected, time to deal with the damage";
|
||||
_entities = entities "Headlessclient_F";
|
||||
_blck_connectedHCs = +blck_connectedHCs;
|
||||
_HCownerids = [];
|
||||
@ -23,7 +23,7 @@ if (toLower(_name) isEqualTo "headlessclient") then
|
||||
{
|
||||
if !(_x getVariable["owner",0] in _HCownerids) then
|
||||
{
|
||||
diag_log format["_fnc_onPlayerDisconnected:: reseting eventHandlers for group %1",_x];
|
||||
//diag_log format["_fnc_onPlayerDisconnected:: reseting eventHandlers for group %1",_x];
|
||||
// do any cleanup; at present this is simply removing locally added event handlers
|
||||
_groupLocalEH = _x getVariable["localEH",[]];
|
||||
private _group = _x;
|
||||
@ -36,7 +36,7 @@ if (toLower(_name) isEqualTo "headlessclient") then
|
||||
{
|
||||
if !(_x getVariable["owner",0] in _HCownerids) then
|
||||
{
|
||||
diag_log format["_fnc_onPlayerDisconnected:: reseting eventHandlers for vehicle %1",_x];
|
||||
//diag_log format["_fnc_onPlayerDisconnected:: reseting eventHandlers for vehicle %1",_x];
|
||||
// do any cleanup; at present this is simply removing locally added event handlers
|
||||
_vehicleLocalEH = _x getVariable["localEH",[]];
|
||||
{
|
||||
|
@ -12,23 +12,27 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
//private _mission = _this;
|
||||
//diag_log format["_fnc_addMissionToQue:: -- >> _mission - %1",_mission];
|
||||
// 0 1 2 3 4 5
|
||||
// [_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange,]
|
||||
params["_missionList","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1],["_allowReinforcements",true]];
|
||||
|
||||
//params["_missionList","_compiledMission","_compiledMissionsList","_waitTime","_mission","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1]];
|
||||
params["_missionList","_path","_marker","_difficulty","_tMin","_tMax",["_noMissions",1]];
|
||||
private["_compiledMission","_compiledMissionsList"];
|
||||
_compiledMissionsList = [];
|
||||
for "_i" from 1 to _noMissions do
|
||||
{
|
||||
private _waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin));
|
||||
_waitTime = diag_tickTime + (_tMin) + random((_tMax) - (_tMin));
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
private _mission = [_missionList,_path,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0],_allowReinforcements];
|
||||
|
||||
//_mission = [_missionList,_path,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0],_allowReinforcements];
|
||||
{
|
||||
//diag_log format["_fnc_addMissionToQue: _x = %1",_x];
|
||||
_compiledMission = compilefinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\%1\%2.sqf",_path,_x];
|
||||
_compiledMissionsList pushBack _compiledMission;
|
||||
}forEach _missionList;
|
||||
_mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["-fnc_addMissionToQue::-->> _mission = %1",_mission];};
|
||||
if (blck_debugLevel > 0) then {
|
||||
//diag_log format["-fnc_addMissionToQue::-->> _mission = %1",[_mission select 0, _mission select 1, _mission select 2, _mission select 3, _mission select 4, _mission select 5, _mission select 6]];
|
||||
};
|
||||
#endif
|
||||
|
||||
//diag_log format["-fnc_addMissionToQue::-->> _mission = %1",[ _mission select 1, _mission select 2, _mission select 3, _mission select 4, _mission select 5, _mission select 6]];
|
||||
blck_pendingMissions pushback _mission;
|
||||
};
|
||||
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
|
||||
params["_crate"];
|
||||
private _result = (_x distance (_x getVariable["crateSpawnPos",[0,0,0]])) > 10;
|
||||
//diag_log format["_fn_crateMoved:: _result = %1",_result];
|
||||
_result;
|
@ -1,11 +1,8 @@
|
||||
/*
|
||||
|
||||
[_mines,_objects,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,_isScubaMission] call blck_fnc_endMission;
|
||||
schedules deletion of all remaining alive AI and mission objects.
|
||||
Updates the mission que.
|
||||
Updates mission markers.
|
||||
By Ghostrider GRG
|
||||
12/18/17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -20,9 +17,7 @@ private["_cleanupAliveAITimer","_cleanupCompositionTimer","_isScubaMission"];
|
||||
_fn_missionCleanup = {
|
||||
params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
|
||||
[_mines] spawn blck_fnc_clearMines;
|
||||
//diag_log format["_fnc_endMission: (103) _objects = %1",_objects];
|
||||
[_objects, _cleanupCompositionTimer] spawn blck_fnc_addObjToQue;
|
||||
//diag_log format["_fnc_endMission:: (106) _blck_AllMissionAI = %1",_blck_AllMissionAI];
|
||||
[_blck_AllMissionAI, (_cleanupAliveAITimer)] spawn blck_fnc_addLiveAItoQue;
|
||||
blck_missionsRunning = blck_missionsRunning - 1;
|
||||
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
|
||||
@ -30,7 +25,6 @@ _fn_missionCleanup = {
|
||||
{
|
||||
blck_recentMissionCoords pushback [_coords,diag_tickTime];
|
||||
[_mission,"inactive",[0,0,0]] call blck_fnc_updateMissionQue;
|
||||
//diag_log format["_fnc_endMission:: (109) _mission = %1",_mission];
|
||||
};
|
||||
if (_isScubaMission) then
|
||||
{
|
||||
@ -43,34 +37,38 @@ _fn_missionCleanup = {
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// MAIN FUNCTION STARTS HERE
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_fnc_endMission: _this = %1",_this];
|
||||
params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_aborted",false],["_vehicles",[]],["_isScubaMission",false]];
|
||||
#endif
|
||||
params["_mines","_objects","_crates","_blck_AllMissionAI","_endMsg","_blck_localMissionMarker","_coords","_mission",["_endCondition",0],["_vehicles",[]],["_isScubaMission",false]];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["_fnc_endMission: _blck_localMissionMarker %1 | _coords %2 | _mission %3 | _aborted %4",_blck_localMissionMarker,_coords,_mission,_aborted];
|
||||
diag_log format["_fnc_endMission: _aborted = %1",_aborted];
|
||||
diag_log format["_fnc_endMission: _blck_localMissionMarker %1 | _coords %2 | _mission %3 | _endCondition %4",_blck_localMissionMarker,_coords,_mission,_endCondition];
|
||||
diag_log format["_fnc_endMission: _endCondition = %1",_endCondition];
|
||||
diag_log format["_fnc_endMission: _isScubaMission = %1",_isScubaMission];
|
||||
diag_log format["_fnc_endMission: prior to running mission end functions -> blck_missionsRunning = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_missionsRunning,blck_dynamicUMS_MissionsRuning];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (_aborted > 0) exitWith
|
||||
if (_endCondition > 0) exitWith // Mision aborted for some reason
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {
|
||||
diag_log format["_fnc_endMission: Mission Aborted, setting all timers to 0"];
|
||||
};
|
||||
#endif
|
||||
if (_aborted == 2) then
|
||||
|
||||
if (_endCondition == 2) then
|
||||
{
|
||||
[["abort",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||
[["warning",_endMsg,_blck_localMissionMarker select 2]] call blck_fnc_messageplayers;
|
||||
};
|
||||
|
||||
[_blck_localMissionMarker select 0] call blck_fnc_deleteMarker;
|
||||
_cleanupCompositionTimer = 0;
|
||||
_cleanupAliveAITimer = 0;
|
||||
// params["_mines","_objects","_blck_AllMissionAI","_mission","_cleanupAliveAITimer","_cleanupCompositionTimer",["_isScubaMission",false]];
|
||||
|
||||
[_mines,_objects,_blck_AllMissionAI,_mission,_cleanupAliveAITimer,_cleanupCompositionTimer,_isScubaMission] call _fn_missionCleanup;
|
||||
{
|
||||
deleteVehicle _x;
|
||||
@ -79,7 +77,7 @@ _fn_missionCleanup = {
|
||||
deleteVehicle _x;
|
||||
}forEach _vehicles;
|
||||
};
|
||||
if (_aborted == 0) then
|
||||
if (_endCondition == 0) then // Normal Mission End State
|
||||
{
|
||||
private["_cleanupAliveAITimer","_cleanupCompositionTimer"];
|
||||
if (blck_useSignalEnd) then
|
||||
@ -109,7 +107,6 @@ _fn_missionCleanup = {
|
||||
// Using a variable attached to the crate rather than the global setting to be sure we do not fill a crate twice.
|
||||
// the "lootLoaded" loaded should be set to true by the crate filler script so we can use that for our check.
|
||||
{
|
||||
//diag_log format["_fnc_endMission (82): for crate %1 lootLoaded = %2",_x,_x getVariable["lootLoaded",false]];
|
||||
if !(_x getVariable["lootLoaded",false]) then
|
||||
{
|
||||
// _crateLoot,_lootCounts are defined above and carry the loot table to be used and the number of items of each category to load
|
||||
@ -121,7 +118,9 @@ _fn_missionCleanup = {
|
||||
_posnVeh = blck_monitoredVehicles find _x; // returns -1 if the vehicle is not in the array else returns 0-(count blck_monitoredVehicles -1)
|
||||
if (_posnVeh >= 0) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_fnc_endMission: setting missionCompleted for vehicle %1 to %2",_x,diag_tickTime];
|
||||
#endif
|
||||
(blck_monitoredVehicles select _posnVeh) setVariable ["missionCompleted", diag_tickTime];
|
||||
} else {
|
||||
_x setVariable ["missionCompleted", diag_tickTime];
|
||||
@ -133,4 +132,4 @@ _fn_missionCleanup = {
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_fnc_endMission: after to running mission end functions -> blck_missionsRunning = %1 | blck_dynamicUMS_MissionsRuning = %2",blck_missionsRunning,blck_dynamicUMS_MissionsRuning];
|
||||
#endif
|
||||
_aborted
|
||||
_endCondition
|
@ -2,8 +2,6 @@
|
||||
/*
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last Modified 8-13-17
|
||||
Fill a crate with items
|
||||
|
||||
--------------------------
|
||||
@ -17,7 +15,12 @@
|
||||
|
||||
private["_a1","_item","_diff","_tries"];
|
||||
params["_crate","_boxLoot","_itemCnts"];
|
||||
|
||||
//diag_log format["_fnc_fillBoxes: _this = %1",_this];
|
||||
#ifdef blck_debugMode
|
||||
{
|
||||
diag_log format["_fnc_fillBoxes: _this select %1 = %2",_foreachindex, _this select _foreachindex];
|
||||
}foreach _this;
|
||||
#endif
|
||||
_itemCnts params["_wepCnt","_magCnt","_opticsCnt","_materialsCnt","_itemCnt","_bkcPckCnt"];
|
||||
_tries = [_wepCnt] call blck_fnc_getNumberFromRange;
|
||||
if (_tries > 0) then
|
||||
@ -97,3 +100,5 @@
|
||||
_crate addbackpackcargoGlobal [_item select 0, (_item select 1) + round(random(_diff))];
|
||||
};
|
||||
};
|
||||
|
||||
//diag_log "_fnc_fillBoxes <END>";
|
@ -0,0 +1,15 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
private _crate = _this select 0;
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_fnc_loadMisionLootcrate: _this = %1",_this];
|
||||
diag_log format["_fnc_loadMisionLootcrate: difficulty = %1", _crate getVariable "lootArray"];
|
||||
diag_log format["_fnc_loadMisionLootcrate: lootCounts = %1", _crate getVariable "lootCounts"];
|
||||
diag_log format["_fnc_loadMisionLootcrate: lootArray = %1",_crate getVariable "difficulty"];
|
||||
#endif
|
||||
[_crate,(_crate getVariable "lootArray"),(_crate getVariable "lootCounts")] call blck_fnc_fillBoxes;
|
||||
[_crate, _crate getVariable "difficulty"] call blck_fnc_addMoneyToObject;
|
||||
_crate setVariable["lootLoaded",true];
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,586 @@
|
||||
/*
|
||||
Dynamic Mission Spawner (over-ground missions)
|
||||
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 delayTime 1
|
||||
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_assetKilledMsg","_enemyLeaderConfig",
|
||||
"_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned","_hostageConfig",
|
||||
"_chanceHeliPatrol","_noPara","_reinforcementLootCounts","_chanceLoot","_heliCrew","_loadCratesTiming","_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius",
|
||||
"_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_noChoppers","_chancePara","_marker"];
|
||||
|
||||
params["_coords","_markerClass","_aiDifficultyLevel"];
|
||||
|
||||
////////
|
||||
// set all variables needed for the missions
|
||||
// data is pulled either from the mission description or from the _mission variable passsed as a parameter
|
||||
// Deal with situations where some of these variables might not be defined as well.
|
||||
////////
|
||||
|
||||
// _mission params["OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange];
|
||||
//_markerClass = _mission select 0;
|
||||
// _aiDifficultyLevel = _mission select 1;
|
||||
|
||||
[_markerClass, "active",_coords] call blck_fnc_updateMissionQue;
|
||||
blck_ActiveMissionCoords pushback _coords;
|
||||
diag_log format["[blckeagls] missionSpawner (17):: 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 "_timeOut") then {_timeOut = -1;};
|
||||
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;};
|
||||
|
||||
_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
|
||||
{
|
||||
//diag_log "labeling map markers *****";
|
||||
_blck_localMissionMarker set [2, _markerMissionName];
|
||||
};
|
||||
if !(blck_preciseMapMarkers) then
|
||||
{
|
||||
//diag_log "Map marker will be OFFSET from the mission position";
|
||||
_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;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (77) message players and spawn a mission marker";};
|
||||
if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (77) _marker = %1",_marker];};
|
||||
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (77) waiting for player to trigger the mission";};
|
||||
#endif
|
||||
////////
|
||||
// All parameters are defined, lets wait until a player is nearby or the mission has timed out
|
||||
////////
|
||||
|
||||
_missionStartTime = diag_tickTime;
|
||||
_playerInRange = false;
|
||||
_missionTimedOut = false;
|
||||
_wait = true;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (90) starting mission trigger loop"};
|
||||
#endif
|
||||
|
||||
while {_wait} do
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
//diag_log "missionSpawner:: top of mission trigger loop";
|
||||
if (blck_debugLevel > 2) exitWith {_playerInRange = true;};
|
||||
#endif
|
||||
|
||||
if ([_coords, blck_TriggerDistance, false] call blck_fnc_playerInRange) exitWith {_playerInRange = true;};
|
||||
if ([_missionStartTime] call blck_fnc_timedOut) exitWith {_missionTimedOut = true;};
|
||||
uiSleep 5;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["missionSpawner:: Trigger Loop - blck_debugLevel = %1 and _coords = %2",blck_debugLevel, _coords];
|
||||
diag_log format["missionSpawner:: Trigger Loop - players in range = %1",{isPlayer _x && _x distance2D _coords < blck_TriggerDistance} count allPlayers];
|
||||
diag_log format["missionSpawner:: Trigger Loop - timeout = %1", [_missionStartTime] call blck_fnc_timedOut];
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
if (_missionTimedOut) exitWith
|
||||
{
|
||||
// Deal with the case in which the mission timed out.
|
||||
blck_recentMissionCoords pushback [_coords,diag_tickTime];
|
||||
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
|
||||
[_markerClass, "inactive",[0,0,0]] call blck_fnc_updateMissionQue;
|
||||
blck_missionsRunning = blck_missionsRunning - 1;
|
||||
[_blck_localMissionMarker select 0] call blck_fnc_deleteMarker;
|
||||
[_objects, 0.1] spawn blck_fnc_cleanupObjects;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (133) Mission Timed Out: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
////////
|
||||
// Spawn the mission objects, loot chest, and AI
|
||||
////////
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (142) -- >> Mission tripped: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
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;
|
||||
_temp = [];
|
||||
|
||||
if (_missionLandscapeMode isEqualTo "random") then
|
||||
{
|
||||
_temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
|
||||
} else {
|
||||
params["_center","_objects"];
|
||||
_temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects;
|
||||
};
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_objects append _temp;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (190) Landscape spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
uiSleep _delayTime;;
|
||||
|
||||
_temp = [_coords,_missionLootVehicles] call blck_fnc_spawnMissionLootVehicles;
|
||||
//uisleep 1;
|
||||
_crates append _temp;
|
||||
|
||||
uiSleep _delayTime;
|
||||
|
||||
_abort = false;
|
||||
_temp = [[],[],false];
|
||||
_temp = [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,_uniforms,_headGear,_missionGroups] call blck_fnc_spawnMissionAI;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {
|
||||
diag_log format["missionSpawner :: (209) blck_fnc_spawnMissionAI returned a value of _temp = %1",_temp]; uiSleep 1;
|
||||
};
|
||||
|
||||
_abort = _temp select 1;
|
||||
if (blck_debugLevel > 2) then {
|
||||
diag_log format["missionSpawner :: (214) blck_fnc_spawnMissionAI returned a value of _abort = %1",_abort]; uiSleep 1;
|
||||
};
|
||||
#endif
|
||||
|
||||
if (_abort) exitWith
|
||||
{
|
||||
if (blck_debugLevel > 1) then {
|
||||
diag_log "missionSpawner:: (220) grpNull returned, mission termination criteria met, calling blck_fnc_endMission"
|
||||
};
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
if !(_abort) then
|
||||
{
|
||||
_blck_AllMissionAI append (_temp select 0);
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (235) AI Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
_assetSpawned = objNull;
|
||||
if !(_hostageConfig isEqualTo []) then
|
||||
{
|
||||
_assetSpawned = [_coords,_hostageConfig] call blck_fnc_spawnHostage;
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
};
|
||||
|
||||
if !(_enemyLeaderConfig isEqualTo []) then
|
||||
{
|
||||
_assetSpawned = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader;
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
};
|
||||
|
||||
uiSleep _delayTime;
|
||||
_temp = [[],[],false];
|
||||
_abort = false;
|
||||
|
||||
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
|
||||
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
|
||||
{
|
||||
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_missionPatrolVehicles] call blck_fnc_spawnMissionVehiclePatrols;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {
|
||||
diag_log format["missionSpawner :: (251) blck_fnc_spawnMissionVehiclePatrols returned _temp = %1",_temp];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
};
|
||||
if !(_abort) then
|
||||
{
|
||||
_patrolVehicles = _temp select 0;
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (267) Vehicle Patrols Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
if (_abort) exitWith
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {
|
||||
diag_log "missionSpawner:: (279) grpNull returned, mission termination criteria met, calling blck_endMission";
|
||||
};
|
||||
#endif
|
||||
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
uiSleep _delayTime;
|
||||
_temp = [[],[],false];
|
||||
_abort = false;
|
||||
|
||||
// Deal with helicopter patrols
|
||||
_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout;
|
||||
_temp = [];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (298) calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
switch (toLower _aiDifficultyLevel) do
|
||||
{
|
||||
case "blue":{
|
||||
_noChoppers = [blck_noPatrolHelisBlue] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaBlue] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "red":{
|
||||
_noChoppers = [blck_noPatrolHelisRed] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaRed] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "green":{
|
||||
_noChoppers = [blck_noPatrolHelisGreen] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaGreen] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "orange":{
|
||||
_noChoppers = [blck_noPatrolHelisOrange] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaOrange] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
default {
|
||||
_chancePara = 0.5;
|
||||
_noChoppers = 0;
|
||||
};
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara];
|
||||
#endif
|
||||
for "_i" from 1 to (_noChoppers) do
|
||||
{
|
||||
_temp = [_coords,_aiDifficultyLevel,_weaponList,_uniforms,_headGear,_chancePara] call blck_fnc_spawnMissionReinforcements;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["missionSpawner(334):: blck_fnc_spawnMissionReinforcements call for chopper # %1 out of a total of %2 choppers",_i, _noChoppers];
|
||||
diag_log format["missionSpawner(335):: _temp = %1",_temp];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
blck_monitoredVehicles pushBack (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
if (_abort) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log "missionSpawner:: (349) grpNul or ERROR in blck_fnc_spawnMissionReinforcements, mission termination criteria met, calling blck_endMission"};
|
||||
#endif
|
||||
_objects pushback (_temp select 0);
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
};
|
||||
|
||||
//////////////////////////
|
||||
// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects.
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (361) preparing to spawn emplaced weapons for _coords %4 | _markerClass %3 | blck_useStatic = %1 | _noEmplacedWeapons = %2",blck_useStatic,_noEmplacedWeapons,_markerClass,_coords];};
|
||||
#endif
|
||||
uiSleep 15;
|
||||
private["_noEmplacedToSpawn"];
|
||||
_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange;
|
||||
if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
{
|
||||
_temp = [_missionEmplacedWeapons,_noEmplacedToSpawn,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnEmplacedWeaponArray;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format ["missionSpawner:: (375) blck_fnc_spawnEmplacedWeaponArray returned _temp = %1",_temp]};
|
||||
#endif
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format ["missionSpawner:: (387) _abort = %1",_abort]};
|
||||
#endif
|
||||
|
||||
if !(_abort) then
|
||||
{
|
||||
_objects append (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["[blckeagls] missionSpawner:: (400) Static Weapons Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]};
|
||||
#endif
|
||||
};
|
||||
};
|
||||
if (_abort) exitWith
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log "missionSpawner:: (410) grpNull ERROR in blck_fnc_spawnEmplacedWeaponArray, mission termination criteria met, calling blck_endMission"};
|
||||
#endif
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_missionSpawner: _spawnCratesTiming = %1", _spawnCratesTiming]};
|
||||
#endif
|
||||
uiSleep _delayTime;
|
||||
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;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (428) Crates Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
};
|
||||
// Trigger for mission end
|
||||
|
||||
private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"];
|
||||
_missionComplete = -1;
|
||||
_startTime = diag_tickTime;
|
||||
|
||||
switch (_endCondition) do
|
||||
{
|
||||
case "playerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = false;};
|
||||
case "allUnitsKilled": {_secureAsset = false; _endIfPlayerNear = false;_endIfAIKilled = true;};
|
||||
case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;};
|
||||
case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;};
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >2) then {diag_log format["_missionSpawner (464): _endCondition = %1",_endCondition]};
|
||||
diag_log format["missionSpawner :: (449) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
#endif
|
||||
|
||||
if (blck_showCountAliveAI) then
|
||||
{
|
||||
if !(_marker isEqualTo "") then
|
||||
{
|
||||
[_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount;
|
||||
blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI];
|
||||
};
|
||||
};
|
||||
|
||||
_crateStolen = false;
|
||||
_locations = [_coords];
|
||||
|
||||
{
|
||||
_locations pushback (getPos _x);
|
||||
_x setVariable["crateSpawnPos", (getPos _x)];
|
||||
} forEach _crates;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["missionSpawner (458):: _coords = %1 | _crates = %2 | _locations = %3",_coords,_crates,_locations];
|
||||
diag_log format["missionSpawner(462):: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
diag_log format["_fnc_missionSpawner(495) starting mission completion loop with _assetSpawned = %1",_assetSpawned];
|
||||
#endif
|
||||
|
||||
while {_missionComplete isEqualTo -1} do
|
||||
{
|
||||
//if (blck_debugLevel isEqualTo 3) exitWith {uiSleep 180};
|
||||
if (_endIfPlayerNear) then
|
||||
{
|
||||
if ([_locations,10,true] call blck_fnc_playerInRangeArray) then {_missionComplete = 1};
|
||||
};
|
||||
if (_endIfAIKilled) then
|
||||
{
|
||||
if (({alive _x} count _blck_AllMissionAI) < 1) then {_missionComplete = 1};
|
||||
};
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawn") then
|
||||
{
|
||||
{
|
||||
if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith
|
||||
{
|
||||
_missionComplete = 1;
|
||||
_crateStolen = true;
|
||||
};
|
||||
}forEach _crates;
|
||||
};
|
||||
if (_secureAsset) then
|
||||
{
|
||||
if !(alive _assetSpawned) then
|
||||
{
|
||||
_missionComplete = 1
|
||||
} else {
|
||||
if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1};
|
||||
};
|
||||
};
|
||||
uiSleep 2;
|
||||
};
|
||||
|
||||
if (_crateStolen) exitWith
|
||||
{
|
||||
diag_log format["missionSpawner:: (491) 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,_markerClass, 2] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
if ((_secureAsset) && !(alive _assetSpawned)) exitWith
|
||||
{
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, 2] 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;
|
||||
};
|
||||
|
||||
#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 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]};
|
||||
#endif
|
||||
};
|
||||
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then
|
||||
{
|
||||
{
|
||||
[_x] call blck_fnc_loadMissionCrate;
|
||||
} forEach _crates;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (496) Mission completion criteria fulfilled: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
diag_log format["missionSpawner :: (497) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
diag_log format["[blckeagls] missionSpawner:: (498) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
diag_log format["_fnc_missionSpawner (557) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
||||
{
|
||||
diag_log "Processing Mission End for Hostage Rescue";
|
||||
_assetSpawned setCaptive false;
|
||||
_assetSpawned setVariable["GMSAnimations",{""],true];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];;
|
||||
uiSleep 0.1;
|
||||
_assetSpawned enableAI "ALL";
|
||||
private _newPos = (getPos _assetSpawned) getPos [1000, random(360)];
|
||||
diag_log format["processing domove for hostage with current pos = %1 and new pos = %2",getPos _assetSpawned, _newPos];
|
||||
(group _assetSpawned) setCurrentWaypoint [group _assetSpawned, 0];
|
||||
[group _assetSpawned,0] setWaypointPosition [_newPos,0];
|
||||
[group _assetSpawned,0] setWaypointType "MOVE";
|
||||
};
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 2) then
|
||||
{
|
||||
diag_log format["Processing Mission End for Arrest of Leader %1 with endAnimation %2",_assetSpawned,_assetSpawned getVariable["endAnimation",""]];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];
|
||||
_assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation","AidlPercMstpSnonWnonDnon_AI"],true];
|
||||
[_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation","AidlPercMstpSnonWnonDnon_AI"])] remoteExec["switchMove",-2];
|
||||
};
|
||||
|
||||
diag_log format["_fnc_missionSpawner (579) Build 123: <calling blck_fnc_endMission> _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 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
|
@ -1,8 +1,7 @@
|
||||
/*
|
||||
Generic Mission Spawner
|
||||
Dynamic Mission Spawner (over-ground missions)
|
||||
By Ghostrider GRG
|
||||
Copyright 2016
|
||||
Last modified 10/9/17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -13,9 +12,12 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
#define delayTime 1
|
||||
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups"];
|
||||
params["_coords","_mission",["_allowReinforcements",true]];
|
||||
//diag_log format["_missionSpawner (18):: _allowReinforcements = %1",_allowReinforcements];
|
||||
private ["_abort","_crates","_aiGroup","_objects","_groupPatrolRadius","_missionLandscape","_mines","_blck_AllMissionAI","_blck_localMissionMarker","_assetKilledMsg","_enemyLeaderConfig",
|
||||
"_AI_Vehicles","_timeOut","_aiDifficultyLevel","_missionPatrolVehicles","_missionGroups","_loadCratesTiming","_spawnCratesTiming","_assetSpawned","_hostageConfig",
|
||||
"_chanceHeliPatrol","_noPara","_reinforcementLootCounts","_chanceLoot","_heliCrew","_loadCratesTiming","_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius",
|
||||
"_wait","_missionStartTime","_playerInRange","_missionTimedOut","_temp","_patrolVehicles","_vehToSpawn","_noChoppers","_chancePara","_marker"];
|
||||
|
||||
params["_coords","_markerClass","_aiDifficultyLevel"];
|
||||
|
||||
////////
|
||||
// set all variables needed for the missions
|
||||
@ -23,27 +25,24 @@ params["_coords","_mission",["_allowReinforcements",true]];
|
||||
// Deal with situations where some of these variables might not be defined as well.
|
||||
////////
|
||||
|
||||
// _mission params[_missionListOrange,_pathOrange,"OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange];
|
||||
_markerClass = _mission select 2;
|
||||
_aiDifficultyLevel = _mission select 3;
|
||||
// _mission params["OrangeMarker","orange",blck_TMin_Orange,blck_TMax_Orange];
|
||||
//_markerClass = _mission select 0;
|
||||
// _aiDifficultyLevel = _mission select 1;
|
||||
|
||||
[_mission,"active",_coords] call blck_fnc_updateMissionQue;
|
||||
[_markerClass, "active",_coords] call blck_fnc_updateMissionQue;
|
||||
blck_ActiveMissionCoords pushback _coords;
|
||||
diag_log format["[blckeagls] missionSpawner (17):: Initializing mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
|
||||
private["_chanceHeliPatrol","_noPara","_reinforcementLootCounts","_chanceLoot","_heliCrew","_loadCratesTiming"];
|
||||
|
||||
if (isNil "_assetKilledMsg") then {_assetKilledMsg = ""};
|
||||
if (isNil "_markerColor") then {_markerColor = "ColorBlack"};
|
||||
if (isNil "_markerType") then {_markerType = ["mil_box",[]]};
|
||||
//if (isNil "_timeOut") then {_timeOut = -1;};
|
||||
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 {
|
||||
//diag_log format["_missionSpawner (44):: _missionPatrolVehicles isNil, Definining it as an empty array"];
|
||||
_missionPatrolVehicles = [];
|
||||
//diag_log format["_missionSpawner (46):: _missionPatrolVehicles is %1",_missionPatrolVehicles];
|
||||
};
|
||||
if (isNil "_missionPatrolVehicles") then {_missionPatrolVehicles = []};
|
||||
if (isNil "_missionGroups") then {_missionGroups = []};
|
||||
private["_useMines","_blck_AllMissionAI","_delayTime","_groupPatrolRadius"];
|
||||
if (isNil "_hostageConfig") then {_hostageConfig = []};
|
||||
if (isNil "_enemyLeaderConfig") then {_enemyLeaderConfig = []};
|
||||
if (isNil "_useMines") then {_useMines = blck_useMines;};
|
||||
|
||||
_objects = [];
|
||||
@ -69,7 +68,7 @@ if !(blck_preciseMapMarkers) then
|
||||
};
|
||||
_blck_localMissionMarker set [3,blck_labelMapMarkers select 1]; // Use an arrow labeled with the mission name?
|
||||
[["start",_startMsg,_markerMissionName]] call blck_fnc_messageplayers;
|
||||
private _marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker;
|
||||
_marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (77) message players and spawn a mission marker";};
|
||||
@ -80,7 +79,6 @@ if (blck_debugLevel > 0) then {diag_log "missionSpawner:: (77) waiting for playe
|
||||
// All parameters are defined, lets wait until a player is nearby or the mission has timed out
|
||||
////////
|
||||
|
||||
private["_wait","_missionStartTime","_playerInRange","_missionTimedOut"];
|
||||
_missionStartTime = diag_tickTime;
|
||||
_playerInRange = false;
|
||||
_missionTimedOut = false;
|
||||
@ -113,18 +111,12 @@ while {_wait} do
|
||||
|
||||
if (_missionTimedOut) exitWith
|
||||
{
|
||||
/*
|
||||
|
||||
*/
|
||||
// Deal with the case in which the mission timed out.
|
||||
//["timeOut",_endMsg,_blck_localMissionMarker select 2] call blck_fnc_messageplayers;
|
||||
blck_recentMissionCoords pushback [_coords,diag_tickTime];
|
||||
blck_ActiveMissionCoords = blck_ActiveMissionCoords - [ _coords];
|
||||
[_mission,"inactive",[0,0,0]] call blck_fnc_updateMissionQue;
|
||||
[_markerClass, "inactive",[0,0,0]] call blck_fnc_updateMissionQue;
|
||||
blck_missionsRunning = blck_missionsRunning - 1;
|
||||
[_blck_localMissionMarker select 0] call blck_fnc_deleteMarker;
|
||||
//_blck_localMissionMarker set [1,[0,0,0]];
|
||||
//_blck_localMissionMarker set [2,""];
|
||||
[_objects, 0.1] spawn blck_fnc_cleanupObjects;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
@ -145,7 +137,6 @@ if (blck_debugLevel > 0) then
|
||||
};
|
||||
#endif
|
||||
|
||||
private ["_temp"];
|
||||
if (blck_SmokeAtMissions select 0) then // spawn a fire and smoke near the crate
|
||||
{
|
||||
_temp = [_coords,blck_SmokeAtMissions select 1] call blck_fnc_smokeAtCrates;
|
||||
@ -159,24 +150,22 @@ uiSleep _delayTime;
|
||||
if (_useMines) then
|
||||
{
|
||||
_mines = [_coords] call blck_fnc_spawnMines;
|
||||
//uiSleep _delayTime;;
|
||||
|
||||
};
|
||||
uiSleep _delayTime;
|
||||
_temp = [];
|
||||
//diag_log format["_missionSpawner"" _missionLandscape = %1",_missionLandscape];
|
||||
|
||||
if (_missionLandscapeMode isEqualTo "random") then
|
||||
{
|
||||
_temp = [_coords,_missionLandscape, 3, 15, 2] call blck_fnc_spawnRandomLandscape;
|
||||
} else {
|
||||
params["_center","_objects"];
|
||||
_temp = [_coords, _missionLandscape] call blck_fnc_spawnCompositionObjects;
|
||||
//uiSleep 1;
|
||||
};
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_objects append _temp;
|
||||
};
|
||||
//diag_log format["_fnc_missionSpawner:: (181)->> _objects = %1",_objects];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
@ -213,7 +202,7 @@ if (_abort) exitWith
|
||||
if (blck_debugLevel > 1) then {
|
||||
diag_log "missionSpawner:: (220) grpNull returned, mission termination criteria met, calling blck_fnc_endMission"
|
||||
};
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
if !(_abort) then
|
||||
{
|
||||
@ -227,17 +216,36 @@ if (blck_debugLevel > 0) then
|
||||
};
|
||||
#endif
|
||||
|
||||
_assetSpawned = objNull;
|
||||
if !(_hostageConfig isEqualTo []) then
|
||||
{
|
||||
_assetSpawned = [_coords,_hostageConfig] call blck_fnc_spawnHostage;
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
};
|
||||
|
||||
if !(_enemyLeaderConfig isEqualTo []) then
|
||||
{
|
||||
_assetSpawned = [_coords,_enemyLeaderConfig] call blck_fnc_spawnLeader;
|
||||
//diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
_blck_AllMissionAI pushBack _assetSpawned;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 1) then {
|
||||
diag_log format["_fnc_missionSpawner: _assetSpawned = %1",_assetSpawned];
|
||||
};
|
||||
#endif
|
||||
|
||||
uiSleep _delayTime;
|
||||
_temp = [[],[],false];
|
||||
_abort = false;
|
||||
private["_patrolVehicles","_vehToSpawn"];
|
||||
|
||||
_vehToSpawn = [_noVehiclePatrols] call blck_fnc_getNumberFromRange;
|
||||
//diag_log format["_missionSpawner:: _vehToSpawn = %1",_vehToSpawn];
|
||||
//diag_log format["_missionSpawner (245):: _missionPatrolVehicles = %1",_missionPatrolVehicles];
|
||||
if (blck_useVehiclePatrols && ((_vehToSpawn > 0) || count _missionPatrolVehicles > 0)) then
|
||||
{
|
||||
_temp = [_coords,_vehToSpawn,_aiDifficultyLevel,_uniforms,_headGear,_missionPatrolVehicles] call blck_fnc_spawnMissionVehiclePatrols;
|
||||
//[_coords,_noVehiclePatrols,_aiDifficultyLevel,_uniforms,_headGear,_markerClass] call blck_fnc_spawnMissionVehiclePatrols;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {
|
||||
diag_log format["missionSpawner :: (251) blck_fnc_spawnMissionVehiclePatrols returned _temp = %1",_temp];
|
||||
@ -271,81 +279,78 @@ if (_abort) exitWith
|
||||
};
|
||||
#endif
|
||||
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
uiSleep _delayTime;
|
||||
_temp = [[],[],false];
|
||||
_abort = false;
|
||||
|
||||
if (_allowReinforcements) then
|
||||
// Deal with helicopter patrols
|
||||
_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout;
|
||||
_temp = [];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
_weaponList = [_aiDifficultyLevel] call blck_fnc_selectAILoadout;
|
||||
_temp = [];
|
||||
diag_log format["[blckeagls] missionSpawner:: (298) calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
switch (toLower _aiDifficultyLevel) do
|
||||
{
|
||||
case "blue":{
|
||||
_noChoppers = [blck_noPatrolHelisBlue] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaBlue] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "red":{
|
||||
_noChoppers = [blck_noPatrolHelisRed] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaRed] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "green":{
|
||||
_noChoppers = [blck_noPatrolHelisGreen] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaGreen] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "orange":{
|
||||
_noChoppers = [blck_noPatrolHelisOrange] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaOrange] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
default {
|
||||
_chancePara = 0.5;
|
||||
_noChoppers = 0;
|
||||
};
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara]};
|
||||
#endif
|
||||
for "_i" from 1 to (_noChoppers) do
|
||||
{
|
||||
_temp = [_coords,_aiDifficultyLevel,_weaponList,_uniforms,_headGear,_chancePara] call blck_fnc_spawnMissionReinforcements;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (298) calling in reinforcements: Current mission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
diag_log format["missionSpawner(334):: blck_fnc_spawnMissionReinforcements call for chopper # %1 out of a total of %2 choppers",_i, _noChoppers];
|
||||
diag_log format["missionSpawner(335):: _temp = %1",_temp];
|
||||
};
|
||||
#endif
|
||||
private _noChoppers = 0;
|
||||
private _chancePara = 0.5;
|
||||
switch (toLower _aiDifficultyLevel) do
|
||||
{
|
||||
case "blue":{
|
||||
_noChoppers = [blck_noPatrolHelisBlue] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaBlue] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "red":{
|
||||
_noChoppers = [blck_noPatrolHelisRed] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaRed] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "green":{
|
||||
_noChoppers = [blck_noPatrolHelisGreen] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaGreen] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
case "orange":{
|
||||
_noChoppers = [blck_noPatrolHelisOrange] call blck_fnc_getNumberFromRange;
|
||||
_chancePara = [blck_chanceParaOrange] call blck_fnc_getNumberFromRange;
|
||||
};
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["_missionSpawner(322):: _noChoppers = %1 && _chancePara = %2",_noChoppers,_chancePara];
|
||||
#endif
|
||||
for "_i" from 1 to (_noChoppers) do
|
||||
{
|
||||
//params["_coords","_aiSkillsLevel","_weapons","_uniforms","_headgear"];
|
||||
|
||||
_temp = [_coords,_aiDifficultyLevel,_weaponList,_uniforms,_headGear,_chancePara] call blck_fnc_spawnMissionReinforcements;
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
blck_monitoredVehicles pushBack (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
if (_abort) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["missionSpawner(334):: blck_fnc_spawnMissionReinforcements call for chopper # %1 out of a total of %2 choppers",_i, _noChoppers];
|
||||
diag_log format["missionSpawner(335):: _temp = %1",_temp];
|
||||
};
|
||||
if (blck_debugLevel > 2) then {diag_log "missionSpawner:: (349) grpNul or ERROR in blck_fnc_spawnMissionReinforcements, mission termination criteria met, calling blck_endMission"};
|
||||
#endif
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
{
|
||||
_abort = _temp select 2;
|
||||
blck_monitoredVehicles pushBack (_temp select 0);
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
};
|
||||
if (_abort) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log "missionSpawner:: (349) grpNul or ERROR in blck_fnc_spawnMissionReinforcements, mission termination criteria met, calling blck_endMission";
|
||||
};
|
||||
#endif
|
||||
_objects pushback (_temp select 0);
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
|
||||
};
|
||||
_objects pushback (_temp select 0);
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
};
|
||||
|
||||
//////////////////////////
|
||||
// Spawn Crates and Emplaced Weapons Last to try to force them to correct positions relative to spawned buildinga or other objects.
|
||||
#ifdef blck_debugMode
|
||||
@ -354,17 +359,12 @@ if (blck_debugLevel > 0) then {diag_log format["missionSpawner:: (361) preparing
|
||||
uiSleep 15;
|
||||
private["_noEmplacedToSpawn"];
|
||||
_noEmplacedToSpawn = [_noEmplacedWeapons] call blck_fnc_getNumberFromRange;
|
||||
//diag_log format["_missionSpawner:: _noEmplacedToSpawn = %1",_vehToSpawn];
|
||||
if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
{
|
||||
// params["_missionEmplacedWeapons","_noEmplacedWeapons","_aiDifficultyLevel","_coords","_uniforms","_headGear"];
|
||||
_temp = [_missionEmplacedWeapons,_noEmplacedToSpawn,_aiDifficultyLevel,_coords,_uniforms,_headGear] call blck_fnc_spawnEmplacedWeaponArray;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format ["missionSpawner:: (375) blck_fnc_spawnEmplacedWeaponArray returned _temp = %1",_temp];
|
||||
};
|
||||
if (blck_debugLevel > 2) then {diag_log format ["missionSpawner:: (375) blck_fnc_spawnEmplacedWeaponArray returned _temp = %1",_temp]};
|
||||
#endif
|
||||
|
||||
if (typeName _temp isEqualTo "ARRAY") then
|
||||
@ -373,11 +373,7 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format ["missionSpawner:: (387) _abort = %1",_abort];
|
||||
|
||||
};
|
||||
if (blck_debugLevel > 2) then {diag_log format ["missionSpawner:: (387) _abort = %1",_abort]};
|
||||
#endif
|
||||
|
||||
if !(_abort) then
|
||||
@ -386,116 +382,171 @@ if (blck_useStatic && (_noEmplacedToSpawn > 0)) then
|
||||
_blck_AllMissionAI append (_temp select 1);
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (400) Static Weapons Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
if (blck_debugLevel > 0) then {diag_log format["[blckeagls] missionSpawner:: (400) Static Weapons Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]};
|
||||
#endif
|
||||
};
|
||||
};
|
||||
if (_abort) exitWith
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
if (blck_debugLevel > 2) then {diag_log "missionSpawner:: (410) grpNull ERROR in blck_fnc_spawnEmplacedWeaponArray, mission termination criteria met, calling blck_endMission"};
|
||||
#endif
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 1] call blck_fnc_endMission;
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_fnc_missionSpawner: _spawnCratesTiming = %1", _spawnCratesTiming]};
|
||||
#endif
|
||||
uiSleep _delayTime;
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawnGround") then
|
||||
{
|
||||
if (count _missionLootBoxes > 0) then
|
||||
{
|
||||
diag_log "missionSpawner:: (410) grpNull ERROR in blck_fnc_spawnEmplacedWeaponArray, mission termination criteria met, calling blck_endMission";
|
||||
_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;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["[blckeagls] missionSpawner:: (428) Crates Spawned: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,1] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
uiSleep _delayTime;
|
||||
if (count _missionLootBoxes > 0) then
|
||||
{
|
||||
_crates = [_coords,_missionLootBoxes,_loadCratesTiming] call blck_fnc_spawnMissionCrates;
|
||||
}
|
||||
else
|
||||
{
|
||||
_crates = [_coords,[[selectRandom blck_crateTypes,[0,0,0],_crateLoot,_lootCounts]], _loadCratesTiming] call blck_fnc_spawnMissionCrates;
|
||||
|
||||
};
|
||||
|
||||
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 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
// Trigger for mission end
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["[blckeagls] mission Spawner(436) _endCondition = %1",_endCondition];
|
||||
#endif
|
||||
private["_missionComplete","_endIfPlayerNear","_endIfAIKilled"];
|
||||
|
||||
private["_missionComplete","_endIfPlayerNear","_endIfAIKilled","_secureAsset","_crateStolen","_locations"];
|
||||
_missionComplete = -1;
|
||||
_startTime = diag_tickTime;
|
||||
|
||||
switch (_endCondition) do
|
||||
{
|
||||
case "playerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = false;};
|
||||
case "allUnitsKilled": {_secureAsset = false; _endIfPlayerNear = false;_endIfAIKilled = true;};
|
||||
case "allKilledOrPlayerNear": {_secureAsset = false; _endIfPlayerNear = true;_endIfAIKilled = true;};
|
||||
case "assetSecured": {_secureAsset = true; _endIfPlayerNear = false; _endIfAIKilled = false;};
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {
|
||||
diag_log format["_missionSpawner (464): _endCondition = %1",_endCondition];
|
||||
diag_log format["missionSpawner :: (449) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (blck_showCountAliveAI) then
|
||||
{
|
||||
//diag_log format["_missionSpawner(441): Adding Number Alive AI: _marker = %1 | _markerMissionName = %2",_marker,_markerMissionName];
|
||||
//diag_log format["_missionSpawner(442): Alive AI = %1 | Current Marker Text = %2",{alive _x} count _blck_AllMissionAI, markerText _marker];
|
||||
if !(_marker isEqualTo "") then
|
||||
{
|
||||
[_marker,_markerMissionName,_blck_AllMissionAI] call blck_fnc_updateMarkerAliveCount;
|
||||
blck_missionMarkers pushBack [_marker,_markerMissionName,_blck_AllMissionAI];
|
||||
//diag_log format["_missionSpawner: blck_missionMarkers = %1",blck_missionMarkers];
|
||||
};
|
||||
};
|
||||
switch (_endCondition) do
|
||||
{
|
||||
case "playerNear": {_endIfPlayerNear = true;_endIfAIKilled = false;};
|
||||
case "allUnitsKilled": {_endIfPlayerNear = false;_endIfAIKilled = true;};
|
||||
case "allKilledOrPlayerNear": {_endIfPlayerNear = true;_endIfAIKilled = true;};
|
||||
};
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["missionSpawner :: (449) _endIfPlayerNear = %1 _endIfAIKilled= %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
#endif
|
||||
private["_locations"];
|
||||
|
||||
_crateStolen = false;
|
||||
_locations = [_coords];
|
||||
|
||||
{
|
||||
_locations pushback (getPos _x);
|
||||
_x setVariable["crateSpawnPos", (getPos _x)];
|
||||
} forEach _crates;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["missionSpawner (458):: _coords = %1 | _crates = %2 | _locations = %3",_coords,_crates,_locations];
|
||||
#endif
|
||||
private _crateStolen = false;
|
||||
#ifdef blck_debugMode
|
||||
diag_log format["missionSpawner(462):: Waiting for player to satisfy mission end criteria of _endIfPlayerNear %1 with _endIfAIKilled %2",_endIfPlayerNear,_endIfAIKilled];
|
||||
diag_log format["_fnc_missionSpawner(495) starting mission completion loop with _assetSpawned = %1",_assetSpawned];
|
||||
#endif
|
||||
_fn_crateMoved = {
|
||||
params["_crate"];
|
||||
private _result = (_x distance (_x getVariable["crateSpawnPos",[0,0,0]])) > 10;
|
||||
//diag_log format["_fn_crateMoved:: _result = %1",_result];
|
||||
_result;
|
||||
};
|
||||
|
||||
while {_missionComplete isEqualTo -1} do
|
||||
{
|
||||
//if (blck_debugLevel isEqualTo 3) exitWith {uiSleep 180};
|
||||
if ((_endIfPlayerNear) && [_locations,10,true] call blck_fnc_playerInRangeArray) exitWith {};
|
||||
if ((_endIfAIKilled) && ({alive _x} count _blck_AllMissionAI) < 1) exitWith {};
|
||||
|
||||
if (_endIfPlayerNear) then
|
||||
{
|
||||
if ([_locations,10,true] call blck_fnc_playerInRangeArray) then {_missionComplete = 1};
|
||||
};
|
||||
if (_endIfAIKilled) then
|
||||
{
|
||||
if (({alive _x} count _blck_AllMissionAI) < 1) then {_missionComplete = 1};
|
||||
};
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawn") then
|
||||
{
|
||||
if ({[_x] call _fn_crateMoved} count _crates > 0) exitWith
|
||||
{
|
||||
_missionComplete = 1;
|
||||
_crateStolen = true;
|
||||
if ({[_x] call blck_fnc_crateMoved} count _crates > 0) exitWith
|
||||
{
|
||||
_missionComplete = 1;
|
||||
_crateStolen = true;
|
||||
};
|
||||
}forEach _crates;
|
||||
};
|
||||
if (_secureAsset) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
diag_log format["_fnc_missionSpawner (494): _assetSpawned = %1 with _blck_AIState = %2",_assetSpawned,_assetSpawned getVariable["blck_AIState",0]];
|
||||
};
|
||||
}forEach _crates;
|
||||
//diag_log format["missionSpawner:: (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;
|
||||
#endif
|
||||
if !(alive _assetSpawned) then
|
||||
{
|
||||
_missionComplete = 1
|
||||
} else {
|
||||
if (_assetSpawned getVariable["blck_AIState",0] > 0 && (({alive _x} count _blck_AllMissionAI) isEqualTo 1)) then {_missionComplete = 1};
|
||||
};
|
||||
};
|
||||
uiSleep 2;
|
||||
};
|
||||
|
||||
if (_crateStolen) exitWith
|
||||
{
|
||||
diag_log format["missionSpawner:: (491) 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] call blck_fnc_endMission;
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,"Crate Removed from Mission Site Before Mission Completion: Mission Aborted",_blck_localMissionMarker,_coords,_markerClass, 2] call blck_fnc_endMission;
|
||||
};
|
||||
|
||||
if ((_secureAsset) && !(alive _assetSpawned)) exitWith
|
||||
{
|
||||
[_mines,_objects,_crates, _blck_AllMissionAI,_assetKilledMsg,_blck_localMissionMarker,_coords,_markerClass, 2] 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;
|
||||
};
|
||||
|
||||
#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 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName]};
|
||||
#endif
|
||||
};
|
||||
|
||||
if (_spawnCratesTiming isEqualTo "atMissionSpawnGround" && _loadCratesTiming isEqualTo "atMissionCompletion") then
|
||||
{
|
||||
{
|
||||
[_x] call blck_fnc_loadMissionCrate;
|
||||
} forEach _crates;
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
{
|
||||
@ -504,19 +555,47 @@ if (blck_debugLevel > 0) then
|
||||
diag_log format["[blckeagls] missionSpawner:: (498) calling endMission: _cords %1 : _markerClass %2 : _aiDifficultyLevel %3 _markerMissionName %4",_coords,_markerClass,_aiDifficultyLevel,_markerMissionName];
|
||||
};
|
||||
#endif
|
||||
|
||||
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];
|
||||
// blck_missionMarkers pushBack [_marker, _markerMissionName, _blck_AllMissionAI];
|
||||
{
|
||||
if ((_x select 1) isEqualTo _markerMissionName) exitWith{blck_missionMarkers deleteAt _forEachIndex};
|
||||
}forEach blck_missionMarkers;
|
||||
};
|
||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_mission,0] call blck_fnc_endMission;
|
||||
|
||||
diag_log format["_fnc_missionSpawner (557) Build 123: _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
diag_log format["[blckeagls] missionSpawner:: (507)end of mission: blck_fnc_endMission has returned control to _fnc_missionSpawner"];
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 1) then
|
||||
{
|
||||
diag_log "Processing Mission End for Hostage Rescue";
|
||||
_assetSpawned setCaptive false;
|
||||
_assetSpawned setVariable["GMSAnimations",[""],true];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];;
|
||||
uiSleep 0.1;
|
||||
_assetSpawned enableAI "ALL";
|
||||
private _newPos = (getPos _assetSpawned) getPos [1000, random(360)];
|
||||
diag_log format["processing domove for hostage with current pos = %1 and new pos = %2",getPos _assetSpawned, _newPos];
|
||||
(group _assetSpawned) setCurrentWaypoint [group _assetSpawned, 0];
|
||||
[group _assetSpawned,0] setWaypointPosition [_newPos,0];
|
||||
[group _assetSpawned,0] setWaypointType "MOVE";
|
||||
};
|
||||
|
||||
if (_assetSpawned getVariable["assetType",0] isEqualTo 2) then
|
||||
{
|
||||
diag_log format["Processing Mission End for Arrest of Leader %1 with endAnimation %2",_assetSpawned,_assetSpawned getVariable["endAnimation",""]];
|
||||
[_assetSpawned,""] remoteExec["switchMove",-2];
|
||||
_assetSpawned setVariable["GMSAnimations",_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]],true];
|
||||
[_assetSpawned,selectRandom(_assetSpawned getVariable["endAnimation",["AidlPercMstpSnonWnonDnon_AI"]])] remoteExec["switchMove",-2];
|
||||
};
|
||||
|
||||
diag_log format["_fnc_missionSpawner (579) Build 123: <calling blck_fnc_endMission> _secureAsset = %1 | {alive _assetSpawned} = %2 | assetType = %3",_secureAsset,alive _assetSpawned, _assetSpawned getVariable["assetType",-1]];
|
||||
|
||||
_result = [_mines,_objects,_crates,_blck_AllMissionAI,_endMsg,_blck_localMissionMarker,_coords,_markerClass, 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
|
||||
|
@ -0,0 +1,24 @@
|
||||
/*
|
||||
for ghostridergaming
|
||||
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";
|
||||
|
||||
params["_pos","_crate",["_crateVisualMarker",true],["_dropHeight", 150]];
|
||||
private _chute = createVehicle ["I_Parachute_02_F", _pos, [], 0, "FLY"];
|
||||
[_chute] call blck_fnc_protectVehicle;
|
||||
_crate setVariable["chute",_chute];
|
||||
_chute setPos [getPos _chute select 0, getPos _chute select 1, _dropHeight];
|
||||
_crate setPos (getPos _chute);
|
||||
_crate attachTo [_chute, [0,0,0]];
|
||||
if (_crateVisualMarker) then {[_crate] spawn fn_DLS_visualMarker;};
|
||||
|
@ -16,7 +16,7 @@
|
||||
params["_center","_objects"];
|
||||
if (count _center == 2) then {_center pushBack 0};
|
||||
//diag_log format["_spawnBaseObjects:: -> _objects = %1",_objects];
|
||||
private ["_newObjs","_simDam"];
|
||||
private ["_newObjs","_simDam","_obj","_spawnPos"];
|
||||
|
||||
_newObjs = [];
|
||||
// Assume that the list of objects to spawn has each object defined using one of two methods where parameters for simulation and damage are optional with default settings.
|
||||
@ -32,11 +32,11 @@ _newObjs = [];
|
||||
{
|
||||
_simDam = _x select 3;
|
||||
};
|
||||
private _obj = (_x select 0) createVehicle [0,0,0];
|
||||
_obj = (_x select 0) createVehicle [0,0,0];
|
||||
//diag_log format["_fnc_spawnBaseObjects: _obj = %1",_obj];
|
||||
_newObjs pushback _obj;
|
||||
//diag_log format["_fnc_spawnBaseObjects: _center = %1 and _x select 1 = %2",_center,_x select 1];
|
||||
private _spawnPos = (_center vectorAdd (_x select 1));
|
||||
_spawnPos = (_center vectorAdd (_x select 1));
|
||||
if (surfaceIsWater _spawnPos) then
|
||||
{
|
||||
_obj setPosASL _spawnPos;
|
||||
|
@ -30,11 +30,17 @@ if (blck_debugLevel >=2) then
|
||||
#endif
|
||||
// [_coords, _minNoAI,_maxNoAI,_aiDifficultyLevel,blck_UMS_uniforms,blck_UMS_headgear,_scubaGroupParameters,blck_UMS_weapons,blck_UMS_vests,isScubaGroup]
|
||||
params["_coords",["_minNoAI",3],["_maxNoAI",6],["_aiDifficultyLevel","red"],["_uniforms",blck_SkinList],["_headGear",blck_BanditHeadgear],"_missionGroups",["_weapons",[]],["_vests",blck_vests],["_isScubaGroup",false]];
|
||||
private["_unitsToSpawn","_unitsPerGroup","_ResidualUnits","_newGroup","_blck_AllMissionAI","_abort"];
|
||||
private["_unitsToSpawn","_unitsPerGroup","_ResidualUnits","_newGroup","_blck_AllMissionAI","_abort","_return","_adjusttedGroupSize"];
|
||||
_unitsToSpawn = 0;
|
||||
_unitsPerGroup = 0;
|
||||
_ResidualUnits = 0;
|
||||
if (_noAIGroups > 0) then
|
||||
{
|
||||
// Can add optional debug code here if needed.
|
||||
_unitsToSpawn = [[_minNoAI,_maxNoAI]] call blck_fnc_getNumberFromRange; //round(_minNoAI + round(random(_maxNoAI - _minNoAI)));
|
||||
_unitsPerGroup = floor(_unitsToSpawn/_noAIGroups);
|
||||
_ResidualUnits = _unitsToSpawn - (_unitsPerGroup * _noAIGroups);
|
||||
};
|
||||
_blck_AllMissionAI = [];
|
||||
_abort = false;
|
||||
if (count _weapons == 0) then
|
||||
@ -137,7 +143,6 @@ if (_missionGroups isEqualTo [] && _noAIGroups > 0) then
|
||||
_maxDist = 35;
|
||||
_groupLocations = [_coords,_noAIGroups,15,30] call blck_fnc_findPositionsAlongARadius;
|
||||
{
|
||||
private["_adjusttedGroupSize"];
|
||||
if (_ResidualUnits > 0) then
|
||||
{
|
||||
_adjusttedGroupSize = _unitsPerGroup + _ResidualUnits;
|
||||
@ -274,6 +279,5 @@ if (blck_debugLevel >= 1) then
|
||||
};
|
||||
#endif
|
||||
|
||||
private["_return"];
|
||||
_return = [_blck_AllMissionAI,_abort];
|
||||
_return
|
||||
|
@ -1,8 +1,7 @@
|
||||
/*
|
||||
Spawn some crates using an array containing crate types and their offsets relative to a reference position and prevent their cleanup.
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last updated 3-20-17
|
||||
Copyright 2018
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -13,21 +12,40 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private ["_objs","_pos","_offset"];
|
||||
params[ ["_coords", [0,0,0]], ["_crates",[]], ["_loadCrateTiming","atMissionSpawn"] ];
|
||||
private ["_cratesSpawned","_pos","_crate"];
|
||||
params[ ["_coords", [0,0,0]], ["_cratesToSpawn",[]], ["_loadCrateTiming","atMissionSpawn"],["_spawnCrateTiming","atMissionSpawn"],["_missionState","start"], ["_difficulty","red"] ];
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
{
|
||||
diag_log format["_fnc_spawnMissionCrates: _this select %1 = %2",_foreachindex, _this select _foreachindex];
|
||||
}forEach _this;
|
||||
};
|
||||
#endif
|
||||
//diag_log format["_fnc_spawnMissionLootcrates: _this = %1",_this];
|
||||
|
||||
if ((count _coords) == 2) then // assume only X and Y offsets are provided
|
||||
{
|
||||
_coords pushback 0;; // calculate the world coordinates
|
||||
};
|
||||
_objs = [];
|
||||
_cratesSpawned = [];
|
||||
|
||||
{
|
||||
_x params["_crateType","_crateOffset","_lootArray","_lootCounts"];
|
||||
//_pos = [(_coords select 0)+(_crateOffset select 0),(_coords select 1) + (_crateOffset select 1),(_coords select 2)+(_crateOffset select 2)]; // calculate the world coordinates
|
||||
|
||||
_pos = _coords vectorAdd _crateOffset;
|
||||
_crate = [_pos,_crateType] call blck_fnc_spawnCrate;
|
||||
_objs pushback _crate;
|
||||
_crate setVariable["lootArray",_lootArray];
|
||||
_crate setVariable["lootCounts",_lootCounts];
|
||||
_crate setVariable["difficulty",_difficulty];
|
||||
if (_loadCrateTiming isEqualTo "atMissionSpawn" || _missionState isEqualTo "end") then
|
||||
{
|
||||
//diag_log format["_fnc_spawnMissionCrates: calling blck_fnc_loadMissionCrate for _crate = %1",_crate];
|
||||
[_crate] call blck_fnc_loadMissionCrate;
|
||||
};
|
||||
_cratesSpawned pushback _crate;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
@ -37,16 +55,55 @@ _objs = [];
|
||||
_marker setMarkerColor "colorGreen";
|
||||
};
|
||||
#endif
|
||||
if (_loadCrateTiming isEqualTo "atMissionSpawn") then
|
||||
{
|
||||
//diag_log format["_fnc_spawnMissionCrates::-> loading loot at mission spawn for crate %1",_x];
|
||||
[_crate,_lootArray,_lootCounts] call blck_fnc_fillBoxes;
|
||||
_crate setVariable["lootLoaded",true];
|
||||
}
|
||||
else
|
||||
{
|
||||
//diag_log format["_fnc_spawnMissionCrates::-> not loading crate loot at this time for crate %1",_x];
|
||||
};
|
||||
}forEach _crates;
|
||||
}forEach _cratesToSpawn;
|
||||
|
||||
_objs
|
||||
_fnc_dropMissionCrates = {
|
||||
private ["_crates","_marker","_markers","_blck_localMissionMarker","_location","_airborneCrates","_curPosCrate"];
|
||||
_crates = _this select 0;
|
||||
_markers = [];
|
||||
|
||||
{
|
||||
// params["_pos","_crate",["_crateVisualMarker",true],["_dropHeight", 150]];
|
||||
[(getPos _x), _x, true, 150] call blck_fnc_paraDropObject;
|
||||
} forEach _crates;
|
||||
|
||||
_airborneCrates = _crates;
|
||||
while {count _airborneCrates > 0} do
|
||||
{
|
||||
uiSleep 1;
|
||||
{
|
||||
// (((getPos _crate) select 2) < 3)
|
||||
if ((getPos _x) select 2< 5) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_spawnMissionCrates: objects attached to %1 = %2",_x, attachedObjects _x]};
|
||||
#endif
|
||||
_airborneCrates = _airborneCrates - [_x];
|
||||
_chute = _x getVariable["chute",objNull];
|
||||
detach _crate;
|
||||
deleteVehicle _chute;
|
||||
_location = getPos _x;
|
||||
_blck_localMissionMarker = [format["crateMarker%1%2",_location select 0, _location select 1],_location,"","","ColorBlack",["mil_dot",[]]];
|
||||
_marker = [_blck_localMissionMarker] call blck_fnc_spawnMarker;
|
||||
_markers pushBack _marker;
|
||||
uiSleep 0.5;
|
||||
_curPosCrate = getPos _x;
|
||||
_x setPos [_curPosCrate select 0, _curPosCrate select 1, 0.3];
|
||||
//_x setVectorDirAndUp[[0,1,0],[0,0,1]];
|
||||
};
|
||||
} forEach _crates;
|
||||
};
|
||||
|
||||
uisleep 300;
|
||||
|
||||
{
|
||||
deleteMarker _x;
|
||||
}forEach _markers
|
||||
};
|
||||
|
||||
if (_spawnCrateTiming isEqualTo "atMissionEndAir") then
|
||||
{
|
||||
[_cratesSpawned] spawn _fnc_dropMissionCrates;
|
||||
};
|
||||
|
||||
_cratesSpawned
|
||||
|
@ -24,7 +24,7 @@ if (blck_debugLevel > 1) then
|
||||
};
|
||||
#endif
|
||||
|
||||
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_vehicle","_return","_abort"];
|
||||
private["_vehGroup","_patrolVehicle","_vehiclePatrolSpawns","_missionAI","_missiongroups","_vehicles","_return","_vehiclePatrolSpawns","_vehicle","_return","_abort","_spawnPos","_v"];
|
||||
_vehicles = [];
|
||||
_missionAI = [];
|
||||
_abort = false;
|
||||
@ -34,8 +34,7 @@ if (_missionPatrolVehicles isEqualTo []) then
|
||||
_useRelativePos = false;
|
||||
_vehiclePatrolSpawns = [_coords,_noVehiclePatrols,45,60] call blck_fnc_findPositionsAlongARadius;
|
||||
{
|
||||
//private _v = selectRandom blck_AIPatrolVehicles;
|
||||
private _v = [_aiDifficultyLevel] call blck_fnc_selectPatrolVehicle;
|
||||
_v = [_aiDifficultyLevel] call blck_fnc_selectPatrolVehicle;
|
||||
//diag_log format["_fnc_spawnMissionVehiclePatrols (36):: position = %1 and vehicle = %2",_x, _v];
|
||||
_missionPatrolVehicles pushBack [_v, _x];
|
||||
}forEach _vehiclePatrolSpawns;
|
||||
@ -48,7 +47,7 @@ if (_missionPatrolVehicles isEqualTo []) then
|
||||
diag_log format["_fnc_spawnMissionVehiclePatrols:: _x = %1 and _coords = %2",_x,_coords];
|
||||
};
|
||||
#endif
|
||||
private ["_spawnPos"];
|
||||
|
||||
if (_useRelativePos) then
|
||||
{
|
||||
_spawnPos = _coords vectorAdd (_x select 1)
|
||||
|
@ -16,7 +16,7 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {
|
||||
if (blck_debugLevel > 3) then {
|
||||
diag_log format["_fnc_spawnPendingMissions:: blck_pendingMissions = %1", blck_pendingMissions];
|
||||
};
|
||||
#endif
|
||||
@ -24,22 +24,23 @@ if (blck_debugLevel > 0) then {
|
||||
if (blck_missionsRunning >= blck_maxSpawnedMissions) exitWith {
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {
|
||||
if (blck_debugLevel > 2) then {
|
||||
diag_log "_fnc_spawnPendingMissions:: --- >> Maximum number of missions is running; function exited without attempting to find a new mission to spawn";
|
||||
};
|
||||
#endif
|
||||
};
|
||||
|
||||
private["_coords","_missionName","_missionPath","_search","_readyToSpawnQue","_missionToSpawn","_allowReinforcements"];
|
||||
private["_coords","_compiledMission","_search","_readyToSpawnQue","_missionToSpawn","_allowReinforcements"];
|
||||
_readyToSpawnQue = [];
|
||||
{
|
||||
if ( (diag_tickTime > (_x select 6)) && ((_x select 6) > 0) ) then
|
||||
{ // 0 1 2 3 3 5 6
|
||||
// _mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
if ( (diag_tickTime > (_x select 5)) && ((_x select 5) > 0) ) then
|
||||
{
|
||||
_readyToSpawnQue pushback _x;
|
||||
};
|
||||
} forEach blck_pendingMissions;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_spawnPendingMissions:: --- >> _readyToSpawnQue = %1",_readyToSpawnQue];
|
||||
};
|
||||
@ -47,9 +48,11 @@ if (blck_debugLevel > 0) then
|
||||
if (count _readyToSpawnQue > 0) then
|
||||
{
|
||||
_missionToSpawn = selectRandom _readyToSpawnQue;
|
||||
|
||||
//{
|
||||
//if (_foreachindex > 0) then {diag_log format["_fnc_spawnPendingMissions: _missionToSpawn %1 = %2",_foreachindex, _missionToSpawn select _foreachindex]};
|
||||
//}forEach _missionToSpawn;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["_fnc_spawnPendingMissions:: -- >> blck_missionsRunning = %1 and blck_maxSpawnedMissions = %2 so _canSpawn = %3",blck_missionsRunning,blck_maxSpawnedMissions, (blck_maxSpawnedMissions - blck_missionsRunning)];
|
||||
};
|
||||
@ -57,11 +60,13 @@ if (count _readyToSpawnQue > 0) then
|
||||
|
||||
_coords = [] call blck_fnc_FindSafePosn;
|
||||
_coords pushback 0;
|
||||
_missionName = selectRandom (_missionToSpawn select 0);
|
||||
_missionPath = _missionToSpawn select 1;
|
||||
_allowReinforcements = _missionToSpawn select 8;
|
||||
_compiledMission = selectRandom (_missionToSpawn select 0);
|
||||
// _mission = [_compiledMissionsList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
_missionMarker = _missionToSpawn select 1;
|
||||
_missionDifficulty = _missionToSpawn select 2;
|
||||
//diag_log format["_fnc_spawnPendingMissions: _missionParameters = %1",_missionParameters];
|
||||
//[_coords,_missionToSpawn,_allowReinforcements] execVM format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
|
||||
[_coords,_missionToSpawn,_allowReinforcements] spawn compileFinal preprocessFileLineNumbers format["\q\addons\custom_server\Missions\%1\%2.sqf",_missionPath,_missionName];
|
||||
[_coords,_missionMarker,_missionDifficulty] spawn _compiledMission;
|
||||
blck_missionsRunning = blck_missionsRunning + 1;
|
||||
};
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
/*
|
||||
spawn a group of objects in random locations aligned with the radial from the center of the region to the object.
|
||||
By Ghostrider [GRG]
|
||||
Last modified 1/22/17
|
||||
copyright 2016
|
||||
|
||||
--------------------------
|
||||
@ -14,9 +13,10 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_coords","_missionLandscape",["_min",3],["_max",15],["_nearest",1]];
|
||||
private["_objects"];
|
||||
private["_objects","_wreck","_dir","_dirOffset"];
|
||||
_objects = [];
|
||||
|
||||
_wreck = createVehicle ["Flag_AAF_F", _coords, [], 25, "NONE"];
|
||||
_objects pushBack _wreck;
|
||||
{
|
||||
//Random Position Objects based on distance in array
|
||||
// https://community.bistudio.com/wiki/BIS_fnc_findSafePos
|
||||
@ -26,10 +26,6 @@ _objects = [];
|
||||
_wreck enableSimulation false;
|
||||
_wreck enableSimulationGlobal false;
|
||||
_wreck enableDynamicSimulation false;
|
||||
_wreck setVariable ["LAST_CHECK", (diag_tickTime + 100000)];
|
||||
|
||||
private["_dir","_dirOffset"];
|
||||
|
||||
_dirOffset = random(30) * ([1,-1] call BIS_fnc_selectRandom);
|
||||
_dir = _dirOffset +([_wreck,_coords] call BIS_fnc_dirTo);
|
||||
_wreck setDir _dir;
|
||||
|
@ -14,14 +14,20 @@
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
params["_mission","_status",["_coords",[0,0,0]] ];
|
||||
|
||||
// _mission is the name used to identify the marker associated with that particular mission. it is a unique identifier.
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fnc_updateMissionQue :: _mission = %1 | _status = %2 | _coords = %3",_mission,_status,_coords];};
|
||||
#endif
|
||||
|
||||
_index = -1;
|
||||
private["_index","_element","_waitTime"];
|
||||
|
||||
_index = blck_pendingMissions find _mission;
|
||||
{
|
||||
if (_mission isEqualTo (_x select 1)) exitWith
|
||||
{
|
||||
_index = _forEachIndex;
|
||||
//diag_log format["_fnc_updateMissionQue: match found at _forEachIndex %1 for _mission with _x = %2",_forEachIndex,_x select 1];
|
||||
};
|
||||
}forEach blck_pendingMissions;
|
||||
//_index = blck_pendingMissions find _mission;
|
||||
if (_index > -1) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
@ -33,16 +39,17 @@ if (_index > -1) then
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debuglevel > 0) then {diag_log format["_fnc_updateMissionQue:: -- >> _element before update = %1",_element];};
|
||||
#endif
|
||||
|
||||
// 0 1 2 3 4 5 6
|
||||
//_mission = [_missionList,format["%1%2",_marker,_i],_difficulty,_tMin,_tMax,_waitTime,[0,0,0]];
|
||||
if (toLower(_status) isEqualTo "active") then {
|
||||
_element set[6, -1];
|
||||
_element set[7,_coords];
|
||||
_element set[5, -1];
|
||||
_element set[6,_coords];
|
||||
};
|
||||
if (toLower(_status) isEqualTo "inactive") then
|
||||
{
|
||||
_waitTime = (_element select 4) + random((_element select 5) - (_element select 4));
|
||||
_element set[6, diag_tickTime + _waitTime];
|
||||
_element set [7,[0,0,0]];
|
||||
_waitTime = (_element select 3) + random((_element select 4) - (_element select 3));
|
||||
_element set[5, diag_tickTime + _waitTime];
|
||||
_element set [6,[0,0,0]];
|
||||
};
|
||||
|
||||
#ifdef blck_debugMode
|
||||
|
@ -12,13 +12,13 @@
|
||||
|
||||
params["_supplyHeli","_lootCounts"];
|
||||
|
||||
private ["_chute","_crate"];
|
||||
private ["_chute","_crate","_crateSelected","_dir","_offset"];
|
||||
_crate = "";
|
||||
_chute = "";
|
||||
|
||||
diag_log "_fnc_spawnParaCrate:: spawning crate";
|
||||
|
||||
private["_dir","_offset"];
|
||||
|
||||
_dir = getDir _supplyHeli;
|
||||
_dir = if (_dir < 180) then {_dir + 210} else {_dir - 210};
|
||||
_offset = _supplyHeli getPos [10, _dir];
|
||||
@ -31,7 +31,6 @@ _chute setPos [_offset select 0, _offset select 1, 100 ]; //(_offset select 2)
|
||||
diag_log format["_fnc_spawnParaCrate:: chute spawned yielding object %1 at postion %2", _chute, getPos _chute];
|
||||
|
||||
//create the parachute and crate
|
||||
private["_crateSelected"];
|
||||
_crateSelected = selectRandom["Box_FIA_Ammo_F","Box_FIA_Support_F","Box_FIA_Wps_F","I_SupplyCrate_F","Box_IND_AmmoVeh_F","Box_NATO_AmmoVeh_F","Box_East_AmmoVeh_F","IG_supplyCrate_F"];
|
||||
_crate = [getPos _chute, _crateSelected] call blck_fnc_spawnCrate;
|
||||
//_crate = createVehicle [_crateSelected, position _chute, [], 0, "CAN_COLLIDE"];
|
||||
|
@ -9,7 +9,9 @@
|
||||
*/
|
||||
if (isServer) then
|
||||
{
|
||||
diag_log format["_EH_AHit: _this = %1",_this];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["_EH_AHit: _this = %1",_this]};
|
||||
#endif
|
||||
_this remoteExec["blck_fnc_processAIHit",2];
|
||||
};
|
||||
|
||||
|
16
@GMS/addons/custom_server/Compiles/Units/GMS_EH_animDone.sqf
Normal file
16
@GMS/addons/custom_server/Compiles/Units/GMS_EH_animDone.sqf
Normal file
@ -0,0 +1,16 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
|
||||
_this call blck_fnc_nextAnim;
|
||||
|
||||
|
||||
|
@ -22,7 +22,7 @@ params["_unit"];
|
||||
{
|
||||
_unit removeAllMPEventHandlers _x;
|
||||
} forEach ["MPKilled","MPHit"];
|
||||
private _group = (group _unit);
|
||||
_group = (group _unit);
|
||||
[_unit] joinSilent grpNull;
|
||||
deleteVehicle _unit;
|
||||
if (count units _group isEqualTo 0) then
|
||||
|
@ -0,0 +1,16 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
(_this select 0) switchMove selectRandom (_unit getVariable["GMSAnimations",[]]);
|
||||
|
||||
|
||||
|
||||
|
@ -12,46 +12,44 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
diag_log format["_fnc_processAIHit::-->> _this = %1",_this];
|
||||
if (isServer) then
|
||||
{
|
||||
private ["_unit","_instigator","_group","_wp"];
|
||||
_unit = _this select 0 select 0;
|
||||
_instigator = _this select 0 select 3;
|
||||
|
||||
private ["_unit","_instigator","_group","_wp"];
|
||||
_unit = _this select 0 select 0;
|
||||
_instigator = _this select 0 select 3;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["_fnc_processAIHit::-->> _this = %1",_this];
|
||||
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (!(alive _unit)) exitWith {};
|
||||
if (!(isPlayer _instigator)) exitWith {};
|
||||
[_unit,_instigator] call blck_fnc_alertGroupUnits;
|
||||
[_instigator] call blck_fnc_alertNearbyVehicles;
|
||||
_group = group _unit;
|
||||
//_group setBehavior "COMBAT";
|
||||
_wp = [_group, currentWaypoint _group];
|
||||
_wp setWaypointBehaviour "COMBAT";
|
||||
_group setCombatMode "RED";
|
||||
_wp setWaypointCombatMode "RED";
|
||||
|
||||
if (_unit getVariable ["hasHealed",false]) exitWith {};
|
||||
if ((damage _unit) > 0.1 ) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["_fnc_processAIHit::-->> _this = %1",_this];
|
||||
diag_log format["EH_AIHit:: _units = %1 and _instigator = %2 units damage is %3",_unit,_instigator, damage _unit];
|
||||
};
|
||||
#endif
|
||||
|
||||
if (!(alive _unit)) exitWith {};
|
||||
if (!(isPlayer _instigator)) exitWith {};
|
||||
[_unit,_instigator] call blck_fnc_alertGroupUnits;
|
||||
[_instigator] call blck_fnc_alertNearbyVehicles;
|
||||
_group = group _unit;
|
||||
//_group setBehavior "COMBAT";
|
||||
_wp = [_group, currentWaypoint _group];
|
||||
_wp setWaypointBehaviour "COMBAT";
|
||||
_group setCombatMode "RED";
|
||||
_wp setWaypointCombatMode "RED";
|
||||
|
||||
if (_unit getVariable ["hasHealed",false]) exitWith {};
|
||||
if ((damage _unit) > 0.1 ) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel >= 2) then
|
||||
{
|
||||
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
|
||||
};
|
||||
_unit setVariable["hasHealed",true,true];
|
||||
_unit addMagazine "SmokeShellOrange";
|
||||
_unit fire "SmokeShellMuzzle";
|
||||
_unit addItem "FAK";
|
||||
_unit action ["HealSoldierSelf", _unit];
|
||||
_unit setDamage 0;
|
||||
_unit removeItem "FAK";
|
||||
diag_log format["_EH_AIHit::-->> Healing unit %1",_unit];
|
||||
};
|
||||
_unit setVariable["hasHealed",true,true];
|
||||
_unit addMagazine "SmokeShellOrange";
|
||||
_unit fire "SmokeShellMuzzle";
|
||||
_unit addItem "FAK";
|
||||
_unit action ["HealSoldierSelf", _unit];
|
||||
_unit setDamage 0;
|
||||
_unit removeItem "FAK";
|
||||
};
|
||||
|
||||
|
@ -12,7 +12,9 @@
|
||||
|
||||
private["_missionType","_wasRunover","_launcher","_legal"];
|
||||
params["_unit","_killer"];
|
||||
diag_log format["##-processIlleagalAIKills.sqf-## processing illeagal kills for unit %1",_unit];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then {diag_log format["##-processIlleagalAIKills.sqf-## processing illeagal kills for unit %1",_unit]};
|
||||
#endif
|
||||
_launcher = _unit getVariable ["Launcher",""];
|
||||
_legal = true;
|
||||
|
||||
|
@ -0,0 +1,48 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
params["_coords","_charConfigs"];
|
||||
private["_char","_charGroup"];
|
||||
_charConfigs params["_classname","_posn","_dir","_simDamg","_animations","_headgear","_uniforms"];
|
||||
{
|
||||
diag_log format["_fnc_spawnchar: _forEachIndex = %1 | _x = %2",_forEachIndex,_x];
|
||||
}forEach _charConfigs;
|
||||
diag_log format["_fnc_spawnchar: _this = %1",_this];
|
||||
diag_log format["_fnc_spawnchar _classname = %1 | _posn = %2 | _dir = %3 | _animations = %4",_classname,_posn,_dir,_animations];
|
||||
_charGroup = createGroup [blck_AI_Side, true];
|
||||
_char = _charGroup createUnit [_classname,[0,0,0], [], 0, "NONE"];
|
||||
_char setCaptive true;
|
||||
if (count _headgear > 0) then
|
||||
{
|
||||
_char addHeadgear (selectRandom(_headgear));
|
||||
};
|
||||
if (count _uniforms > 0) then
|
||||
{
|
||||
_char forceAddUniform selectRandom(_uniforms);
|
||||
};
|
||||
_posn = (_coords vectorAdd _posn);
|
||||
_char setPos [_posn select 0, _posn select 1, 0];
|
||||
diag_log format["_fnc_spawnchar _char = %1 at Position = %2 | _coords = %3",_char, getPos _char,_coords];
|
||||
if (blck_modType isEqualTo "Epoch") then {_char setVariable ["LAST_CHECK",28800,true]};
|
||||
_char setPos (_posn);
|
||||
_char setDir (_dir);
|
||||
removeAllWeapons _char;
|
||||
_char setVariable ["BIS_enableRandomization", false];
|
||||
_char setVariable ["BIS_fnc_animalBehaviour_disable", true];
|
||||
_char disableAI "ALL";
|
||||
_char enableAI "ANIM";
|
||||
_char enableAI "MOVE";
|
||||
_char allowDamage true;
|
||||
_char enableSimulationGlobal true;
|
||||
_char setVariable["GMSAnimations",_animations,true];
|
||||
_char setUnitPos "UP";
|
||||
|
||||
_char
|
@ -0,0 +1,26 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
|
||||
params["_coords","_hostageConfigs"];
|
||||
private["_hostageGroup","_hostage","_modType"];
|
||||
_hostage = [_coords,_hostageConfigs] call blck_fnc_spawnCharacter;
|
||||
_hostage remoteExec["GMS_fnc_initHostage", -2, true];
|
||||
_hostage setVariable["assetType",1,true];
|
||||
/*
|
||||
private _marker = createMarker [format["hostageMarger%1",getPos _hostage], getPos _hostage];
|
||||
_marker setMarkerColor "ColorBlack";
|
||||
_marker setMarkerType "mil_dot";
|
||||
_marker setMarkerText "Hostage";
|
||||
*/
|
||||
_hostage
|
||||
|
||||
|
@ -0,0 +1,27 @@
|
||||
/*
|
||||
by Ghostrider
|
||||
|
||||
--------------------------
|
||||
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";
|
||||
|
||||
params["_coords","_leaderConfigs"];
|
||||
private["_leader"];
|
||||
_leader = [_coords, _leaderConfigs] call blck_fnc_spawnCharacter;
|
||||
_leader remoteExec["GMS_fnc_initLeader", -2, true];
|
||||
_leader setVariable["assetType",2,true];
|
||||
_leader setVariable["endAnimation",["Acts_CivilShocked_1"],true];
|
||||
/*
|
||||
private _marker = createMarker [format["hostageMarger%1",getPos _leader], getPos _leader];
|
||||
_marker setMarkerColor "ColorBlack";
|
||||
_marker setMarkerType "mil_dot";
|
||||
_marker setMarkerText "Hostage";
|
||||
*/
|
||||
_leader
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private ["_i","_weap","_skin","_ai1","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices"];
|
||||
private ["_i","_weap","_skin","_ai1","_skillLevel","_aiSkills","_launcherRound","_index","_ammoChoices","_modType","_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
|
||||
params["_pos","_weaponList","_aiGroup",["_skillLevel","red"],["_Launcher","none"],["_uniforms", blck_SkinList],["_headGear",blck_headgear],["_vests",blck_vests],["_scuba",false]];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
@ -35,10 +35,11 @@ if (blck_debugLevel > 2) then
|
||||
if (isNull _aiGroup) exitWith {diag_log "[blckeagls] ERROR CONDITION:-->> NULL-GROUP Provided to _fnc_spawnUnit"};
|
||||
|
||||
_ai1 = ObjNull;
|
||||
private _modType = call blck_fnc_getModType;
|
||||
_modType = call blck_fnc_getModType;
|
||||
if (_modType isEqualTo "Epoch") then
|
||||
{
|
||||
"I_Soldier_EPOCH" createUnit [_pos, _aiGroup, "_ai1 = this", blck_baseSkill, "COLONEL"];
|
||||
_ai1 setVariable ["LAST_CHECK",28800,true];
|
||||
// _unit = group player createUnit ["B_RangeMaster_F", position player, [], 0, "FORM"];
|
||||
//_ai1 = _aiGroup createUnit ["I_Soldier_EPOCH", _pos, [], blck_baseSkill, "FORM"];
|
||||
switch(_skillLevel) do
|
||||
@ -82,8 +83,7 @@ _skin = "";
|
||||
_counter = 1;
|
||||
while {_skin isEqualTo "" && _counter < 10} do
|
||||
{
|
||||
_skin = selectRandom _uniforms;
|
||||
_ai1 forceAddUniform _skin;
|
||||
_ai1 forceAddUniform (selectRandom _uniforms);
|
||||
_skin = uniform _ai1;
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 2) then
|
||||
@ -94,20 +94,17 @@ while {_skin isEqualTo "" && _counter < 10} do
|
||||
_counter =+1;
|
||||
};
|
||||
//Sets AI Tactics
|
||||
/*
|
||||
_ai1 enableAI "TARGET";
|
||||
_ai1 enableAI "AUTOTARGET";
|
||||
_ai1 enableAI "MOVE";
|
||||
_ai1 enableAI "ANIM";
|
||||
_ai1 enableAI "FSM";
|
||||
*/
|
||||
_ai1 enableAI "ALL";
|
||||
_ai1 allowDammage true;
|
||||
_ai1 setBehaviour "COMBAT";
|
||||
_ai1 setunitpos "AUTO";
|
||||
|
||||
if (_modType isEqualTo "Epoch") then
|
||||
{
|
||||
// do this so the AI or corpse hangs around on Epoch servers.
|
||||
_ai1 setVariable ["LAST_CHECK",28800,true];
|
||||
};
|
||||
_ai1 addHeadgear (selectRandom _headGear);
|
||||
_ai1 addVest selectRandom _vests;
|
||||
|
||||
@ -117,7 +114,6 @@ if ( random (1) < blck_chanceBackpack) then
|
||||
};
|
||||
|
||||
_weap = selectRandom _weaponList;
|
||||
private["_optics","_pointers","_muzzles","_underbarrel","_legalOptics"];
|
||||
_ai1 addWeaponGlobal _weap;
|
||||
_ammoChoices = getArray (configFile >> "CfgWeapons" >> _weap >> "magazines");
|
||||
_optics = getArray (configfile >> "CfgWeapons" >> _weap >> "WeaponSlotsInfo" >> "CowsSlot" >> "compatibleItems");
|
||||
@ -152,7 +148,6 @@ for "_i" from 1 to (1+floor(random(3))) do
|
||||
// Add First Aid or Grenade 50% of the time
|
||||
if (round(random 10) <= 5) then
|
||||
{
|
||||
//_item = selectRandom blck_specialItems;
|
||||
//diag_log format["spawnUnit.sqf] -- Item is %1", _item];
|
||||
_ai1 addItem selectRandom blck_specialItems;
|
||||
};
|
||||
@ -172,7 +167,6 @@ if(sunOrMoon < 0.2 && blck_useNVG)then
|
||||
{
|
||||
_ai1 addWeapon selectRandom blck_NVG;
|
||||
_ai1 setVariable ["hasNVG", true,true];
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -14,7 +14,7 @@
|
||||
*/
|
||||
#include "\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
private["_vehType","_safepos","_veh"];
|
||||
private["_vehType","_safepos","_veh","_unitNumber"];
|
||||
params["_center","_pos",["_vehType","I_G_Offroad_01_armed_F"],["_minDis",30],["_maxDis",45],["_group",grpNull],["_setWaypoints",true]];
|
||||
|
||||
|
||||
@ -38,14 +38,13 @@ if !(isNull _group) then
|
||||
// _veh addEventHandler["HandleDamage",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleDamage}];
|
||||
_veh addMPEventHandler["MPHit",{ [_this] call compile preprocessFileLineNumbers blck_EH_AIVehicle_HandleHit}];
|
||||
_group setVariable["groupVehicle",_veh];
|
||||
//#ifdef blck_debugMode
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 1) then
|
||||
{
|
||||
diag_log format["spawnVehiclePatrol:: vehicle spawned is %1 of typeof %2",_veh, typeOf _veh];
|
||||
};
|
||||
//#endif
|
||||
#endif
|
||||
|
||||
private["_unitNumber"];
|
||||
_unitNumber = 0;
|
||||
|
||||
{
|
||||
|
@ -32,7 +32,7 @@ _fn_releaseVehicle = {
|
||||
if ((damage _veh) > 0.5) then {_veh setDamage 0.5};
|
||||
//diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1 and blck_deleteAT = %2",_veh, _veh getVariable["blck_DeleteAt",0]];
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then
|
||||
if (blck_debugLevel > 2) then
|
||||
{
|
||||
diag_log format["_fnc_vehicleMonitor:: case of patrol vehicle released to players where vehicle = %1",_veh];
|
||||
};
|
||||
@ -86,10 +86,11 @@ blck_fn_deleteAIvehicle = {
|
||||
deleteVehicle _veh;
|
||||
};
|
||||
|
||||
private _vehList = +blck_monitoredVehicles;
|
||||
private ["_vehList","_veh","_isEmplaced","_ownerIsPlayer","_allCrewDead","_deleteNow","_missionCompleted","_evaluate","_cleanupTimer"];
|
||||
_vehList = +blck_monitoredVehicles;
|
||||
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_monitoredVehicles %3",diag_tickTime,_vehList,blck_monitoredVehicles];};
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: function called at %1 with _vehList %2 and blck_monitoredVehicles %3",diag_tickTime,_vehList,blck_monitoredVehicles];};
|
||||
#endif
|
||||
//blck_fnc_releaseVehicleToPlayers
|
||||
{
|
||||
@ -101,14 +102,14 @@ if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: function c
|
||||
_deleteNow
|
||||
*/
|
||||
//diag_log format["_fnc_vehicleMonitor: evaluating vehicle %1",_x];
|
||||
private _veh = _x; // (purely for clarity at this point, _x could be used just as well)
|
||||
private _isEmplaced = _veh getVariable["DBD_vehType","none"] isEqualTo "emplaced";
|
||||
private _ownerIsPlayer = if (owner _veh > 2 && !(owner _veh in blck_connectedHCs)) then {true} else {false};
|
||||
private _allCrewDead = if (({alive _x} count (crew _veh)) == 0) then {true} else {false};
|
||||
private _deletenow = false;
|
||||
_veh = _x; // (purely for clarity at this point, _x could be used just as well)
|
||||
_isEmplaced = _veh getVariable["DBD_vehType","none"] isEqualTo "emplaced";
|
||||
_ownerIsPlayer = if (owner _veh > 2 && !(owner _veh in blck_connectedHCs)) then {true} else {false};
|
||||
_allCrewDead = if (({alive _x} count (crew _veh)) == 0) then {true} else {false};
|
||||
_deletenow = false;
|
||||
if ( (_veh getVariable["blck_DeleteAt",0] > 0) && (diag_tickTime > (_veh getVariable "blck_DeleteAt"))) then {_deleteNow = true};
|
||||
private _missionCompleted = if (_veh getVariable["missionCompleted",0] != 0) then {true} else {false};
|
||||
private _evaluate = true;
|
||||
_missionCompleted = if (_veh getVariable["missionCompleted",0] != 0) then {true} else {false};
|
||||
_evaluate = true;
|
||||
|
||||
if (_ownerIsPlayer) then
|
||||
{
|
||||
@ -126,7 +127,7 @@ if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: function c
|
||||
if (blck_killEmptyStaticWeapons) then
|
||||
{
|
||||
#ifdef blck_debugMode
|
||||
if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];};
|
||||
if (blck_debugLevel > 2) then {diag_log format["_fnc_vehicleMonitor:: case of destroyed where vehicle = %1",_veh];};
|
||||
#endif
|
||||
_veh setDamage 1;
|
||||
_veh setVariable["blck_DeleteAt",diag_tickTime + 60];
|
||||
@ -150,7 +151,7 @@ if (blck_debugLevel > 0) then {diag_log format["_fnc_vehicleMonitor:: function c
|
||||
if (_missionCompleted && !(_allCrewDead)) then
|
||||
{
|
||||
//diag_log format["_fnc_vehicleMonitor:: case of mission vehicle with AI alive at mission end: schedule destruction with _veh = %1 and typeOf _veh = %2",_veh, typeOf _veh];
|
||||
private _cleanupTimer = _veh getVariable["blck_DeleteAt",0]; // The time delete to deleting any alive AI units
|
||||
_cleanupTimer = _veh getVariable["blck_DeleteAt",0]; // The time delete to deleting any alive AI units
|
||||
if (_cleanupTimer == 0) then {_veh setVariable["blck_DeleteAt",diag_tickTime + blck_vehicleDeleteTimer]};
|
||||
_evaluate = false;
|
||||
};
|
||||
|
@ -37,6 +37,8 @@ blck_fnc_spawnMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_
|
||||
blck_fnc_missionCompleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_missionCompleteMarker.sqf";
|
||||
blck_fnc_deleteMarker = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_deleteMarker.sqf";
|
||||
blck_fnc_updateMarkerAliveCount = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_updateMarkerAliveCount.sqf";
|
||||
blck_fnc_addMoneyToObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\GMS_fnc_addMoneyToObject.sqf";
|
||||
// GMS_fnc_addMoneyToObject
|
||||
//blck_fnc_updateAllMarkerAliveCounts = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Functions\updateAllMarkerAliveCounts.sqf"; // GMS_fnc_updateAllMarkerAliveCounts
|
||||
|
||||
#ifdef GRGserver
|
||||
@ -72,6 +74,9 @@ blck_fnc_clearMines = compileFinal preprocessFileLineNumbers "\q\addons\custom_s
|
||||
blck_fnc_signalEnd = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_signalEnd.sqf"; // deploy smoke grenades at loot crates at the end of the mission.
|
||||
blck_fnc_endMission = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_endMission.sqf";
|
||||
blck_fnc_missionAIareDead = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_missionAIareDead.sqf";
|
||||
blck_fnc_paraDropObject = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_paraDropObject.sqf";
|
||||
blck_fnc_loadMissionCrate = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_loadMissionCrate.sqf";
|
||||
blck_fnc_crateMoved = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Missions\GMS_fnc_crateMoved.sqf";
|
||||
|
||||
// Group-related functions
|
||||
blck_fnc_spawnGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_spawnGroup.sqf"; // Spawn a single group and populate it with AI units]
|
||||
@ -84,6 +89,7 @@ blck_fnc_changeToSentryWaypoint = compileFinal preprocessFileLineNumbers "\q\ad
|
||||
blck_fnc_cleanEmptyGroups = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_cleanEmptyGroups.sqf"; // GMS_fnc_cleanEmptyGroups
|
||||
blck_fnc_findNearestInfantryGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Groups\GMS_fnc_findNearestInfantryGroup.sqf";
|
||||
|
||||
|
||||
// Functions specific to vehicles, whether wheeled, aircraft or static
|
||||
blck_fnc_spawnVehicle = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehicle.sqf";
|
||||
blck_fnc_spawnVehiclePatrol = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Vehicles\GMS_fnc_spawnVehiclePatrol.sqf";
|
||||
@ -108,6 +114,7 @@ blck_EH_AIKilled = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIKilled.sqf";
|
||||
blck_EH_AIHit = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIHit.sqf";
|
||||
blck_EH_AIFiredNear = "\q\addons\custom_server\Compiles\Units\GMS_EH_AIFiredNear.sqf";
|
||||
blck_EH_unitWeaponReloaded = "\q\addons\custom_server\Compiles\Units\GMS_EH_unitWeaponReloaded.sqf";
|
||||
blck_EH_animDone = "\q\addons\custom_server\Compiles\Units\GMS_EH_animDone.sqf";
|
||||
blck_fnc_processAIKill = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIKill.sqf";
|
||||
blck_fnc_removeLaunchers = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeLaunchers.sqf";
|
||||
blck_fnc_removeNVG = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_removeNVG.sqf";
|
||||
@ -120,6 +127,10 @@ blck_fnc_setSkill = compileFinal preprocessFileLineNumbers "\q\addons\custom_se
|
||||
blck_fnc_cleanupAliveAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_cleanupAliveAI.sqf";
|
||||
blck_fnc_deleteAI = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_deleteAI.sqf";
|
||||
blck_fnc_processAIHit = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_processAIHit.sqf";
|
||||
blck_fnc_spawnHostage = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnHostage.sqf";
|
||||
blck_fnc_spawnLeader = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnLeader.sqf";
|
||||
blck_fnc_spawnCharacter = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_spawnCharacter.sqf";
|
||||
blck_fnc_nextAnim = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\Units\GMS_fnc_nextAnim.sqf";
|
||||
|
||||
// HC support functions
|
||||
blck_fnc_HC_XferGroup = compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Compiles\HC\GMS_fnc_HC_XferGroup.sqf";
|
||||
|
@ -12,7 +12,7 @@
|
||||
*/
|
||||
#include"\q\addons\custom_server\Configs\blck_defines.hpp";
|
||||
|
||||
blck_debugON = false;
|
||||
blck_debugON = FALSE;
|
||||
blck_debugLevel = 0; // Sets level of detail for debugging info - WIP.
|
||||
blck_minFPS = 8;
|
||||
|
||||
|
91
@GMS/addons/custom_server/Configs/armed_vics_notes.txt
Normal file
91
@GMS/addons/custom_server/Configs/armed_vics_notes.txt
Normal file
@ -0,0 +1,91 @@
|
||||
|
||||
_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"
|
||||
];
|
||||
|
@ -33,7 +33,7 @@
|
||||
blck_spawnStaticLootCrates = true; // When true, static loot crates will be spawned and loaded with loot as specified in custom_server\SLS\SLS_init_Epoch.sqf (or its exile equivalent).
|
||||
|
||||
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
|
||||
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_useTimeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 0.25; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 12; // Nighttim time acceleration
|
||||
@ -69,7 +69,7 @@
|
||||
// When set to true,"dot", ext will be to the right of a black dot at the center the mission marker.
|
||||
blck_labelMapMarkers = [true,"center"];
|
||||
blck_preciseMapMarkers = true; // Map markers are/are not centered at the loot crate
|
||||
blck_showCountAliveAI = true;
|
||||
blck_showCountAliveAI = false;
|
||||
|
||||
//Minimum distance between missions
|
||||
blck_MinDistanceFromMission = 1500;
|
||||
@ -86,8 +86,18 @@
|
||||
// It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission.
|
||||
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
|
||||
blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
|
||||
blck_loadCratesTiming = "atMissionCompletion"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
|
||||
|
||||
blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionEndGround","atMissionEndAir".
|
||||
// Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute.
|
||||
// This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission.
|
||||
blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
|
||||
// Pertains only to crates spawned at mission spawn.
|
||||
// This sets the default but can be overridden for specific missions by defining _loadCratesTiming
|
||||
|
||||
// Examples:
|
||||
// To spawn crates at mission start loaded with gear set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionSpawn"
|
||||
// To spawn crates at mission start but load gear only after the mission is completed set blck_spawnCratesTiming = "atMissionSpawnGround" && blck_loadCratesTiming = "atMissionCompletion"
|
||||
// To spawn crates on the ground at mission completion set blck_spawnCratesTiming = "atMissionEndGround" // Note that a loaded crate will be spawned.
|
||||
// To spawn crates in the air and drop them by chutes set blck_spawnCratesTiming = "atMissionEndAir" // Note that a loaded crate will be spawned.
|
||||
///////////////////////////////
|
||||
// PLAYER PENALTIES
|
||||
///////////////////////////////
|
||||
@ -96,11 +106,11 @@
|
||||
blck_RunGearDamage = 0.2; // Damage applied to player vehicle for each AI run over
|
||||
blck_VK_Gear = true; // When set to true, AI that have been killed by a player in a vehicle in the list of forbidden vehicles or using a forbiden gun will be stripped of gear and the vehicle will be given blck_RunGearDamage of damage
|
||||
blck_VK_RunoverDamage = true; // when the AI was run over blck_RunGearDamage of damage will be applied to the killer's vehicle.
|
||||
blck_VK_GunnerDamage = true; // when the AI was killed by a gunner on a vehicle that is is in the list of forbidden vehicles, blck_RunGearDamage of damage will be applied to the killer's vehicle each time an AI is killed with a vehicle's gun.
|
||||
blck_forbidenVehicles = [/*"B_MRAP_01_hmg_F","O_MRAP_02_hmg_F","I_MRAP_03_hmg_F","B_MRAP_01_hmg_F","O_MRAP_02_hmg_F"*/]; // Add any vehicles for which you wish to forbid vehicle kills
|
||||
blck_VK_GunnerDamage = false; // when the AI was killed by a gunner on a vehicle that is is in the list of forbidden vehicles, blck_RunGearDamage of damage will be applied to the killer's vehicle each time an AI is killed with a vehicle's gun.
|
||||
blck_forbidenVehicles = ["B_MRAP_01_hmg_F","O_MRAP_02_hmg_F","I_MRAP_03_hmg_F","B_MRAP_01_hmg_F","O_MRAP_02_hmg_F"]; // Add any vehicles for which you wish to forbid vehicle kills
|
||||
// For a listing of the guns mounted on various land vehicles see the following link: https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Vehicle_Weapons
|
||||
// HMG_M2 is mounted on the armed offroad that is spawned by Epoch
|
||||
blck_forbidenVehicleGuns = [/*"LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC","HMG_M2","HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"*/]; // Add any vehicles for which you wish to forbid vehicle kills, o
|
||||
blck_forbidenVehicleGuns = ["LMG_RCWS","LMG_M200","HMG_127","HMG_127_APC","HMG_M2","HMG_NSVT","GMG_40mm","GMG_UGV_40mm","autocannon_40mm_CTWS","autocannon_30mm_CTWS","autocannon_35mm","LMG_coax","autocannon_30mm","HMG_127_LSV_01"]; // Add any vehicles for which you wish to forbid vehicle kills, o
|
||||
|
||||
|
||||
///////////////////////////////
|
||||
@ -181,13 +191,25 @@
|
||||
////////////////////
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
blck_maxSpawnedMissions = 9;
|
||||
#ifdef GRGserver
|
||||
blck_maxSpawnedMissions = 15;
|
||||
#else
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
blck_maxSpawnedMissions = 4;
|
||||
#endif
|
||||
|
||||
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = 5; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
blck_enableRedMissions = 2;
|
||||
blck_enableBlueMissions = 2;
|
||||
blck_numberUnderwaterDynamicMissions = 3; // Values from -1 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxcrashsites = 4;
|
||||
#endif
|
||||
|
||||
////////////////////
|
||||
// MISSION TIMERS
|
||||
@ -199,6 +221,12 @@
|
||||
blck_TMin_Blue = 120;
|
||||
blck_TMin_Red = 150;
|
||||
blck_TMin_UMS = 180;
|
||||
#ifdef GRGserver
|
||||
blck_TMin_Hunter = 120;
|
||||
blck_TMin_Scouts = 115;
|
||||
blck_TMin_Crashes = 115;
|
||||
|
||||
#endif
|
||||
|
||||
//Maximum Spawn time between missions in seconds
|
||||
blck_TMax_Orange = 360;
|
||||
@ -206,6 +234,11 @@
|
||||
blck_TMax_Blue = 200;
|
||||
blck_TMax_Red = 250;
|
||||
blck_TMax_UMS = 200;
|
||||
#ifdef GRGserver
|
||||
blck_TMax_Hunter = 200;
|
||||
blck_TMax_Scouts = 200;
|
||||
blck_TMax_Crashes = 200;
|
||||
#endif
|
||||
|
||||
///////////////////////////////
|
||||
// AI VEHICLE PATROL PARAMETERS
|
||||
@ -237,7 +270,7 @@
|
||||
|
||||
// Defines how many static weapons to spawn. Set this to -1 to disable spawning
|
||||
blck_SpawnEmplaced_Orange = [3,4]; // Number of static weapons at Orange Missions
|
||||
blck_SpawnEmplaced_Green = 3; // Number of static weapons at Green Missions
|
||||
blck_SpawnEmplaced_Green = [2,3]; // Number of static weapons at Green Missions
|
||||
blck_SpawnEmplaced_Blue = 1; // Number of static weapons at Blue Missions
|
||||
blck_SpawnEmplaced_Red = 1; // Number of static weapons at Red Missions
|
||||
|
||||
@ -321,6 +354,60 @@
|
||||
blck_maxMoneyGreen = 20;
|
||||
blck_maxMoneyRed = 15;
|
||||
blck_maxMoneyBlue = 10;
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_AIAlertDistance = [250,450,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
|
||||
//blck_AIAlertDistance = [150,225,400,500];
|
||||
// How precisely player locations will be revealed to AI after an AI kill
|
||||
// values are ordered as follows [blue, red, green, orange];
|
||||
blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9];
|
||||
|
||||
blck_baseSkill = 0.7; // The overal skill of the AI - range 0.1 to 1.0.
|
||||
|
||||
/***************************************************************
|
||||
|
||||
MISSION TYPE SPECIFIC AI SETTINGS
|
||||
|
||||
**************************************************************/
|
||||
//This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type
|
||||
// Orange Missions
|
||||
blck_MinAI_Orange = 20;
|
||||
blck_MaxAI_Orange = 25;
|
||||
blck_AIGrps_Orange = 5;
|
||||
blck_SkillsOrange = [
|
||||
["aimingAccuracy",[0.25,0.36]],["aimingShake",[0.45,0.55]],["aimingSpeed",[0.65,0.75]],["endurance",1.00],["spotDistance",1.0],["spotTime",0.7],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]
|
||||
];
|
||||
|
||||
// Green Missions
|
||||
blck_MinAI_Green = 16;
|
||||
blck_MaxAI_Green = 21;
|
||||
blck_AIGrps_Green = 4;
|
||||
blck_SkillsGreen = [
|
||||
["aimingAccuracy",[0.2,0.3]],["aimingShake",[0.4,0.5]],["aimingSpeed",[0.55,0.7]],["endurance",0.9],["spotDistance",0.9],["spotTime",0.65],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75]
|
||||
];
|
||||
|
||||
// Red Missions
|
||||
blck_MinAI_Red = 12;
|
||||
blck_MaxAI_Red = 15;
|
||||
blck_AIGrps_Red = 3;
|
||||
blck_SkillsRed = [
|
||||
["aimingAccuracy",[0.2,0.25]],["aimingShake",[0.35,0.4]],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.6],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70]
|
||||
];
|
||||
|
||||
// Blue Missions
|
||||
blck_MinAI_Blue = 8;
|
||||
blck_MaxAI_Blue = 12;
|
||||
blck_AIGrps_Blue = 2;
|
||||
blck_SkillsBlue = [
|
||||
["aimingAccuracy",[0.08,16]],["aimingShake",[0.25,0.35]],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
|
||||
];
|
||||
|
||||
// Add some money to AI; only works with Exile for now.
|
||||
blck_maxMoneyOrange = 25;
|
||||
blck_maxMoneyGreen = 20;
|
||||
blck_maxMoneyRed = 15;
|
||||
blck_maxMoneyBlue = 10;
|
||||
#endif
|
||||
|
||||
private["_modType"];
|
||||
_modType = [] call blck_fnc_getModType;
|
||||
|
@ -39,6 +39,102 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
**********************************************************************************/
|
||||
|
||||
blck_AI_Side = RESISTANCE;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_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_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases
|
||||
blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles;
|
||||
blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles;
|
||||
|
@ -40,6 +40,102 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
**********************************************************************************/
|
||||
|
||||
blck_AI_Side = RESISTANCE;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_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_G_Offroad_01_armed_EPOCH","B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases
|
||||
blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles;
|
||||
blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles;
|
||||
|
@ -49,6 +49,150 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_blacklistSpawns = true;
|
||||
blck_listConcreteMixerZones = true;
|
||||
blck_AI_Side = EAST;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M2_Green",
|
||||
"B_LSV_01_armed_F",
|
||||
"Exile_Car_Offroad_Armed_Guerilla01"
|
||||
];
|
||||
|
||||
_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 =
|
||||
[
|
||||
//"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
//"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
//"Exile_Car_BTR40_MG_Green",
|
||||
//"Exile_Car_BTR40_MG_Camo",
|
||||
//"Exile_Car_HMMWV_M134_Green",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F",
|
||||
//"_MRAP_02_gmg_ghex_F",
|
||||
//"O_MRAP_02_hmg_ghex_F",
|
||||
//"O_MRAP_03_gmg_ghex_F",
|
||||
//"O_MRAP_03_hmg_ghex_F",
|
||||
"B_MBT_01_cannon_F",
|
||||
"B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others
|
||||
//"B_MBT_01_mlrs_base_F",
|
||||
//"B_MBT_01_mlrs_F",
|
||||
"B_MBT_01_TUSK_F",
|
||||
"B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_CRV_F",
|
||||
"B_APC_Tracked_01_rcws_F"
|
||||
]; // Type of vehicle spawned to defend AI bases
|
||||
|
||||
blck_AIPatrolVehiclesBlue = [
|
||||
"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_BTR40_MG_Camo",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F"
|
||||
];
|
||||
|
||||
blck_AIPatrolVehicles = ["Exile_Car_Offroad_Armed_Guerilla01","Exile_Car_Offroad_Armed_Guerilla02","Exile_Car_BTR40_MG_Green","Exile_Car_BTR40_MG_Camo","Exile_Car_HMMWV_M134_Green","Exile_Car_HMMWV_M134_Desert",/*"Exile_Car_HMMWV_M134_Desert","Exile_Car_HMMWV_M2_Desert",*/"B_LSV_01_armed_F"]; // Type of vehicle spawned to defend AI bases
|
||||
blck_AIPatrolVehiclesBlue = blck_AIPatrolVehicles;
|
||||
blck_AIPatrolVehiclesRed = blck_AIPatrolVehicles;
|
||||
|
@ -0,0 +1,989 @@
|
||||
/*
|
||||
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";
|
||||
|
||||
////////////
|
||||
// Exile-specific 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_blacklistSpawns = false;
|
||||
blck_listConcreteMixerZones = false;
|
||||
blck_AI_Side = EAST;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M2_Green",
|
||||
"B_LSV_01_armed_F",
|
||||
"Exile_Car_Offroad_Armed_Guerilla01"
|
||||
];
|
||||
|
||||
_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 =
|
||||
[
|
||||
//"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
//"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
//"Exile_Car_BTR40_MG_Green",
|
||||
//"Exile_Car_BTR40_MG_Camo",
|
||||
//"Exile_Car_HMMWV_M134_Green",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F",
|
||||
//"_MRAP_02_gmg_ghex_F",
|
||||
//"O_MRAP_02_hmg_ghex_F",
|
||||
//"O_MRAP_03_gmg_ghex_F",
|
||||
//"O_MRAP_03_hmg_ghex_F",
|
||||
"B_MBT_01_cannon_F",
|
||||
"B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others
|
||||
//"B_MBT_01_mlrs_base_F",
|
||||
//"B_MBT_01_mlrs_F",
|
||||
"B_MBT_01_TUSK_F",
|
||||
"B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_CRV_F",
|
||||
"B_APC_Tracked_01_rcws_F"
|
||||
]; // Type of vehicle spawned to defend AI bases
|
||||
|
||||
blck_AIPatrolVehiclesBlue = [
|
||||
"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_BTR40_MG_Camo",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F"
|
||||
];
|
||||
blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP;
|
||||
blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
|
||||
// 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"
|
||||
];
|
||||
|
||||
#ifdef useAPEX
|
||||
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;
|
||||
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 = [
|
||||
"arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","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"
|
||||
];
|
||||
|
||||
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_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"
|
||||
];
|
||||
|
||||
//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_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_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"];
|
||||
|
||||
blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons;
|
||||
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
|
||||
#endif
|
||||
|
||||
blck_baseBackpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
|
||||
|
||||
#ifdef useAPEX
|
||||
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"
|
||||
];
|
||||
blck_backpacks = blck_baseBackpacks + blck_ApexBackpacks;
|
||||
#endif
|
||||
|
||||
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",
|
||||
"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",
|
||||
//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;
|
||||
//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 = [
|
||||
//https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment
|
||||
// I have commented out some high visibility uniforms that can be reserved for players or special missions.
|
||||
// for example, you could have a uniform list specified in a mission template.
|
||||
"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_vests = [
|
||||
"V_Press_F",
|
||||
"V_Rangemaster_belt",
|
||||
"V_TacVest_blk",
|
||||
"V_TacVest_blk_POLICE",
|
||||
"V_TacVest_brn",
|
||||
"V_TacVest_camo",
|
||||
"V_TacVest_khk",
|
||||
"V_TacVest_oli",
|
||||
"V_TacVestCamo_khk",
|
||||
"V_TacVestIR_blk",
|
||||
"V_I_G_resistanceLeader_F",
|
||||
"V_BandollierB_blk",
|
||||
"V_BandollierB_cbr",
|
||||
"V_BandollierB_khk",
|
||||
"V_BandollierB_oli",
|
||||
"V_BandollierB_rgr",
|
||||
"V_Chestrig_blk",
|
||||
"V_Chestrig_khk",
|
||||
"V_Chestrig_oli",
|
||||
"V_Chestrig_rgr",
|
||||
"V_HarnessO_brn",
|
||||
"V_HarnessO_gry",
|
||||
"V_HarnessOGL_brn",
|
||||
"V_HarnessOGL_gry",
|
||||
"V_HarnessOSpec_brn",
|
||||
"V_HarnessOSpec_gry",
|
||||
"V_PlateCarrier1_blk",
|
||||
"V_PlateCarrier1_rgr",
|
||||
"V_PlateCarrier2_rgr",
|
||||
"V_PlateCarrier3_rgr",
|
||||
"V_PlateCarrierGL_blk",
|
||||
"V_PlateCarrierGL_mtp",
|
||||
"V_PlateCarrierGL_rgr",
|
||||
"V_PlateCarrierH_CTRG",
|
||||
"V_PlateCarrierIA1_dgtl",
|
||||
"V_PlateCarrierIA2_dgtl",
|
||||
"V_PlateCarrierIAGL_dgtl",
|
||||
"V_PlateCarrierIAGL_oli",
|
||||
"V_PlateCarrierL_CTRG",
|
||||
"V_PlateCarrierSpec_blk",
|
||||
"V_PlateCarrierSpec_mtp",
|
||||
#ifdef useAPEX
|
||||
//Apex
|
||||
"V_TacChestrig_grn_F",
|
||||
"V_TacChestrig_oli_F",
|
||||
"V_TacChestrig_cbr_F",
|
||||
"V_PlateCarrier1_tna_F",
|
||||
"V_PlateCarrier2_tna_F",
|
||||
"V_PlateCarrierSpec_tna_F",
|
||||
"V_PlateCarrierGL_tna_F",
|
||||
"V_HarnessO_ghex_F",
|
||||
"V_HarnessOGL_ghex_F",
|
||||
"V_BandollierB_ghex_F",
|
||||
"V_TacVest_gen_F",
|
||||
"V_PlateCarrier1_rgr_noflag_F",
|
||||
#endif
|
||||
"V_PlateCarrier2_rgr_noflag_F"
|
||||
];
|
||||
|
||||
//CraftingFood
|
||||
blck_Meats=[
|
||||
|
||||
];
|
||||
blck_Drink = [
|
||||
"Exile_Item_PlasticBottleCoffee",
|
||||
"Exile_Item_PowerDrink",
|
||||
"Exile_Item_PlasticBottleFreshWater",
|
||||
"Exile_Item_Beer",
|
||||
"Exile_Item_EnergyDrink",
|
||||
"Exile_Item_MountainDupe"
|
||||
];
|
||||
blck_Food = [
|
||||
"Exile_Item_EMRE",
|
||||
"Exile_Item_GloriousKnakworst",
|
||||
"Exile_Item_Surstromming",
|
||||
"Exile_Item_SausageGravy",
|
||||
"Exile_Item_Catfood",
|
||||
"Exile_Item_ChristmasTinner",
|
||||
"Exile_Item_BBQSandwich",
|
||||
"Exile_Item_Dogfood",
|
||||
"Exile_Item_BeefParts",
|
||||
"Exile_Item_Cheathas",
|
||||
"Exile_Item_Noodles",
|
||||
"Exile_Item_SeedAstics",
|
||||
"Exile_Item_Raisins",
|
||||
"Exile_Item_Moobar",
|
||||
"Exile_Item_InstantCoffee"
|
||||
];
|
||||
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 = ["Exile_Item_InstaDoc","Exile_Item_Bandage","Exile_Item_Vishpirin"];
|
||||
blck_specialItems = blck_throwableExplosives + blck_medicalItems;
|
||||
|
||||
blck_NVG = ["NVGoggles","NVGoggles_INDEP","NVGoggles_OPFOR","Exile_Item_XM8"];
|
||||
blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard",
|
||||
"Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand","Exile_Item_MetalWire","Exile_Item_ExtensionCord","Exile_Item_JunkMetal"];
|
||||
blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_CanOpener","Exile_Item_Shovel"];
|
||||
|
||||
/***************************************************************************************
|
||||
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
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_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"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_camo_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_sand_F","150Rnd_93x64_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,5],
|
||||
// Marksman Pack Ammo
|
||||
["10Rnd_338_Mag",1,5],
|
||||
["10Rnd_338_Mag",1,5],
|
||||
["10Rnd_127x54_Mag" ,1,5],
|
||||
["10Rnd_127x54_Mag",1,5],
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5],
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5]
|
||||
],
|
||||
[ // Optics
|
||||
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],
|
||||
["optic_Arco",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
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10],
|
||||
["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10],
|
||||
["Exile_Item_MetalBoard",1,10],["Exile_Item_ExtensionCord",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10]
|
||||
//
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",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
|
||||
["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_762x51_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"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_03_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_05_hex_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_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]
|
||||
],
|
||||
[ // 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
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,6],["Exile_Item_Vishpirin",1,6],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
blck_BoxLoot_Blue =
|
||||
[
|
||||
[// Weapons
|
||||
["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_762x51_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],
|
||||
["HandGrenade",1,3],
|
||||
// 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]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
blck_BoxLoot_Red =
|
||||
[
|
||||
[// Weapons
|
||||
["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"],
|
||||
["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_762x51_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"],
|
||||
["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],
|
||||
// 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]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Exile_Item_Energydrink",1,4],["Exile_Item_Beer",1,3],["Rangefinder",1,2],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
// Time the marker remains after completing the mission in seconds - experimental not yet implemented
|
||||
|
||||
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 format["[blckeagls] Configurations for Exile Loaded"];
|
||||
|
||||
blck_configsExileLoaded = true;
|
@ -0,0 +1,989 @@
|
||||
/*
|
||||
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";
|
||||
|
||||
////////////
|
||||
// Exile-specific 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_blacklistSpawns = false;
|
||||
blck_listConcreteMixerZones = false;
|
||||
blck_AI_Side = EAST;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M2_Green",
|
||||
"B_LSV_01_armed_F",
|
||||
"Exile_Car_Offroad_Armed_Guerilla01"
|
||||
];
|
||||
|
||||
_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 =
|
||||
[
|
||||
//"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
//"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
//"Exile_Car_BTR40_MG_Green",
|
||||
//"Exile_Car_BTR40_MG_Camo",
|
||||
//"Exile_Car_HMMWV_M134_Green",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
//"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F",
|
||||
//"_MRAP_02_gmg_ghex_F",
|
||||
//"O_MRAP_02_hmg_ghex_F",
|
||||
//"O_MRAP_03_gmg_ghex_F",
|
||||
//"O_MRAP_03_hmg_ghex_F",
|
||||
"B_MBT_01_cannon_F",
|
||||
"B_MBT_01_cannon_F", // Duplicate to increase chance that these will spawn relative to others
|
||||
//"B_MBT_01_mlrs_base_F",
|
||||
//"B_MBT_01_mlrs_F",
|
||||
"B_MBT_01_TUSK_F",
|
||||
"B_MBT_01_TUSK_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_AA_F",// Duplicate to increase chance that these will spawn relative to others
|
||||
"B_APC_Tracked_01_CRV_F",
|
||||
"B_APC_Tracked_01_rcws_F"
|
||||
]; // Type of vehicle spawned to defend AI bases
|
||||
|
||||
blck_AIPatrolVehiclesBlue = [
|
||||
"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_BTR40_MG_Camo",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F"
|
||||
];
|
||||
blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP;
|
||||
blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
|
||||
// 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"
|
||||
];
|
||||
|
||||
#ifdef useAPEX
|
||||
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;
|
||||
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 = [
|
||||
"arifle_Katiba_F","arifle_Katiba_C_F","arifle_Katiba_GL_F","arifle_MXC_F","arifle_MX_F","arifle_MX_GL_F","arifle_MXM_F","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"
|
||||
];
|
||||
|
||||
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_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"
|
||||
];
|
||||
|
||||
//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_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_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"];
|
||||
|
||||
blck_WeaponList_Orange = blck_WeaponList_Orange + blck_apexWeapons;
|
||||
blck_WeaponList_Green = blck_WeaponList_Green + blck_apexWeapons;
|
||||
#endif
|
||||
|
||||
blck_baseBackpacks = ["B_Carryall_ocamo","B_Carryall_oucamo","B_Carryall_mcamo","B_Carryall_oli","B_Carryall_khk","B_Carryall_cbr" ];
|
||||
|
||||
#ifdef useAPEX
|
||||
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"
|
||||
];
|
||||
blck_backpacks = blck_baseBackpacks + blck_ApexBackpacks;
|
||||
#endif
|
||||
|
||||
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",
|
||||
"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",
|
||||
//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;
|
||||
//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 = [
|
||||
//https://community.bistudio.com/wiki/Arma_3_CfgWeapons_Equipment
|
||||
// I have commented out some high visibility uniforms that can be reserved for players or special missions.
|
||||
// for example, you could have a uniform list specified in a mission template.
|
||||
"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_vests = [
|
||||
"V_Press_F",
|
||||
"V_Rangemaster_belt",
|
||||
"V_TacVest_blk",
|
||||
"V_TacVest_blk_POLICE",
|
||||
"V_TacVest_brn",
|
||||
"V_TacVest_camo",
|
||||
"V_TacVest_khk",
|
||||
"V_TacVest_oli",
|
||||
"V_TacVestCamo_khk",
|
||||
"V_TacVestIR_blk",
|
||||
"V_I_G_resistanceLeader_F",
|
||||
"V_BandollierB_blk",
|
||||
"V_BandollierB_cbr",
|
||||
"V_BandollierB_khk",
|
||||
"V_BandollierB_oli",
|
||||
"V_BandollierB_rgr",
|
||||
"V_Chestrig_blk",
|
||||
"V_Chestrig_khk",
|
||||
"V_Chestrig_oli",
|
||||
"V_Chestrig_rgr",
|
||||
"V_HarnessO_brn",
|
||||
"V_HarnessO_gry",
|
||||
"V_HarnessOGL_brn",
|
||||
"V_HarnessOGL_gry",
|
||||
"V_HarnessOSpec_brn",
|
||||
"V_HarnessOSpec_gry",
|
||||
"V_PlateCarrier1_blk",
|
||||
"V_PlateCarrier1_rgr",
|
||||
"V_PlateCarrier2_rgr",
|
||||
"V_PlateCarrier3_rgr",
|
||||
"V_PlateCarrierGL_blk",
|
||||
"V_PlateCarrierGL_mtp",
|
||||
"V_PlateCarrierGL_rgr",
|
||||
"V_PlateCarrierH_CTRG",
|
||||
"V_PlateCarrierIA1_dgtl",
|
||||
"V_PlateCarrierIA2_dgtl",
|
||||
"V_PlateCarrierIAGL_dgtl",
|
||||
"V_PlateCarrierIAGL_oli",
|
||||
"V_PlateCarrierL_CTRG",
|
||||
"V_PlateCarrierSpec_blk",
|
||||
"V_PlateCarrierSpec_mtp",
|
||||
#ifdef useAPEX
|
||||
//Apex
|
||||
"V_TacChestrig_grn_F",
|
||||
"V_TacChestrig_oli_F",
|
||||
"V_TacChestrig_cbr_F",
|
||||
"V_PlateCarrier1_tna_F",
|
||||
"V_PlateCarrier2_tna_F",
|
||||
"V_PlateCarrierSpec_tna_F",
|
||||
"V_PlateCarrierGL_tna_F",
|
||||
"V_HarnessO_ghex_F",
|
||||
"V_HarnessOGL_ghex_F",
|
||||
"V_BandollierB_ghex_F",
|
||||
"V_TacVest_gen_F",
|
||||
"V_PlateCarrier1_rgr_noflag_F",
|
||||
#endif
|
||||
"V_PlateCarrier2_rgr_noflag_F"
|
||||
];
|
||||
|
||||
//CraftingFood
|
||||
blck_Meats=[
|
||||
|
||||
];
|
||||
blck_Drink = [
|
||||
"Exile_Item_PlasticBottleCoffee",
|
||||
"Exile_Item_PowerDrink",
|
||||
"Exile_Item_PlasticBottleFreshWater",
|
||||
"Exile_Item_Beer",
|
||||
"Exile_Item_EnergyDrink",
|
||||
"Exile_Item_MountainDupe"
|
||||
];
|
||||
blck_Food = [
|
||||
"Exile_Item_EMRE",
|
||||
"Exile_Item_GloriousKnakworst",
|
||||
"Exile_Item_Surstromming",
|
||||
"Exile_Item_SausageGravy",
|
||||
"Exile_Item_Catfood",
|
||||
"Exile_Item_ChristmasTinner",
|
||||
"Exile_Item_BBQSandwich",
|
||||
"Exile_Item_Dogfood",
|
||||
"Exile_Item_BeefParts",
|
||||
"Exile_Item_Cheathas",
|
||||
"Exile_Item_Noodles",
|
||||
"Exile_Item_SeedAstics",
|
||||
"Exile_Item_Raisins",
|
||||
"Exile_Item_Moobar",
|
||||
"Exile_Item_InstantCoffee"
|
||||
];
|
||||
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 = ["Exile_Item_InstaDoc","Exile_Item_Bandage","Exile_Item_Vishpirin"];
|
||||
blck_specialItems = blck_throwableExplosives + blck_medicalItems;
|
||||
|
||||
blck_NVG = ["NVGoggles","NVGoggles_INDEP","NVGoggles_OPFOR","Exile_Item_XM8"];
|
||||
blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard",
|
||||
"Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand","Exile_Item_MetalWire","Exile_Item_ExtensionCord","Exile_Item_JunkMetal"];
|
||||
blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_CanOpener","Exile_Item_Shovel"];
|
||||
|
||||
/***************************************************************************************
|
||||
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
|
||||
["arifle_MXM_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["arifle_MXM_Black_F","30Rnd_65x39_caseless_mag_Tracer"],
|
||||
["srifle_DMR_01_F","10Rnd_762x51_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"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["MMG_01_tan_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_black_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_camo_F","150Rnd_93x64_Mag"],
|
||||
["MMG_02_sand_F","150Rnd_93x64_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,5],
|
||||
// Marksman Pack Ammo
|
||||
["10Rnd_338_Mag",1,5],
|
||||
["10Rnd_338_Mag",1,5],
|
||||
["10Rnd_127x54_Mag" ,1,5],
|
||||
["10Rnd_127x54_Mag",1,5],
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5],
|
||||
["10Rnd_93x64_DMR_05_Mag" ,1,5]
|
||||
],
|
||||
[ // Optics
|
||||
["optic_SOS",1,2],["optic_LRPS",1,2],["optic_DMS",1,2],
|
||||
["optic_Arco",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
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,10],["Exile_Item_LightBulb",1,10],["Exile_Item_MetalBoard",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_CamoTentKit",1,10],["Exile_Item_WorkBenchKit",1,10],
|
||||
["Exile_Item_WoodWindowKit",1,10],["Exile_Item_WoodWallKit",1,10],["Exile_Item_WoodStairsKit",1,10],["Exile_Item_WoodGateKit",1,10],["Exile_Item_WoodDoorwayKit",1,10],["Exile_Item_MetalBoard",1,10],
|
||||
["Exile_Item_MetalBoard",1,10],["Exile_Item_ExtensionCord",1,10],["Exile_Item_MetalPole",1,10],["Exile_Item_Sand",3,10],["Exile_Item_Cement",3,10],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10]
|
||||
//
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",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
|
||||
["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_762x51_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"],
|
||||
["MMG_01_hex_F","150Rnd_93x64_Mag"],
|
||||
["srifle_DMR_02_camo_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_03_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_04_Tan_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_05_hex_F","10Rnd_338_Mag"],
|
||||
["srifle_DMR_06_camo_F","10Rnd_338_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]
|
||||
],
|
||||
[ // 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
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,6],["Exile_Item_Vishpirin",1,6],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
blck_BoxLoot_Blue =
|
||||
[
|
||||
[// Weapons
|
||||
["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_762x51_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],
|
||||
["HandGrenade",1,3],
|
||||
// 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]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,3],["Exile_Item_ExtensionCord",1,2],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,6],["Exile_Item_LightBulb",1,6],["Exile_Item_MetalBoard",1,6],["Exile_Item_MetalPole",1,6],["Exile_Item_CamoTentKit",1,6],["Exile_Item_MetalWire",1,4]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Rangefinder",1,2],["Exile_Item_Bandage",1,3],["Exile_Item_Vishpirin",1,3],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3],
|
||||
["Exile_Item_BeefParts",1,3],["Exile_Item_Cheathas",1,3],["Exile_Item_Noodles",1,3],["Exile_Item_SeedAstics",1,3],["Exile_Item_Raisins",1,3],["Exile_Item_Moobar",1,3],["Exile_Item_InstantCoffee",1,3],["Exile_Item_EMRE",1,3],
|
||||
["Exile_Item_PlasticBottleCoffee",1,3],["Exile_Item_PowerDrink",1,3],["Exile_Item_PlasticBottleFreshWater",1,3],["Exile_Item_Beer",1,3],["Exile_Item_EnergyDrink",1,3],["Exile_Item_MountainDupe",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
blck_BoxLoot_Red =
|
||||
[
|
||||
[// Weapons
|
||||
["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"],
|
||||
["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_762x51_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"],
|
||||
["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],
|
||||
// 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]
|
||||
],
|
||||
[// Materials and supplies
|
||||
["Exile_Item_Matches",1,2],["Exile_Item_CookingPot",1,2],["Exile_Item_Rope",1,2],["Exile_Item_DuctTape",1,8],["Exile_Item_ExtensionCord",1,8],["Exile_Item_FuelCanisterEmpty",1,2],
|
||||
["Exile_Item_JunkMetal",1,5],["Exile_Item_LightBulb",1,5],["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_CamoTentKit",1,5],["Exile_Item_WorkBenchKit",1,5],
|
||||
["Exile_Item_MetalBoard",1,5],["Exile_Item_MetalWire",3,10],["Exile_Item_MetalScrews",3,10],["Exile_Item_ExtensionCord",1,5],["Exile_Item_MetalPole",1,5],["Exile_Item_Sand",2,5],["Exile_Item_Cement",2,5]
|
||||
],
|
||||
[//Items
|
||||
["Exile_Item_InstaDoc",1,2],["NVGoggles",1,2],["Exile_Item_Energydrink",1,4],["Exile_Item_Beer",1,3],["Rangefinder",1,2],
|
||||
["Exile_Item_Catfood",1,3],["Exile_Item_Surstromming",1,3],["Exile_Item_BBQSandwich",1,3],["Exile_Item_ChristmasTinner",1,3],["Exile_Item_SausageGravy",1,3],["Exile_Item_GloriousKnakworst",1,3]
|
||||
],
|
||||
[ // Backpacks
|
||||
["B_AssaultPack_dgtl",1,2],["B_AssaultPack_khk",1,2],["B_AssaultPack_mcamo",1,2],["B_AssaultPack_cbr",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_ocamo",1,2],["B_FieldPack_oucamo",1,2],
|
||||
["B_Kitbag_cbr",1,2],["B_Kitbag_mcamo",1,2],["B_Kitbag_sgg",1,2],
|
||||
["B_Parachute",1,2],["V_RebreatherB",1,2],["V_RebreatherIA",1,2],["V_RebreatherIR",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],
|
||||
["B_Bergen_blk",1,2],["B_Bergen_mcamo",1,2],["B_Bergen_rgr",1,2],["B_Bergen_sgg",1,2],
|
||||
["B_HuntingBackpack",1,2],["B_OutdoorPack_blk",1,2],["B_OutdoorPack_blu",1,2],["B_OutdoorPack_tan",1,2]
|
||||
]
|
||||
];
|
||||
|
||||
// Time the marker remains after completing the mission in seconds - experimental not yet implemented
|
||||
|
||||
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 format["[blckeagls] Configurations for Exile Loaded"];
|
||||
|
||||
blck_configsExileLoaded = true;
|
@ -41,6 +41,110 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_blacklistSpawns = false;
|
||||
blck_listConcreteMixerZones = false;
|
||||
blck_AI_Side = EAST;
|
||||
|
||||
blck_crateMoneyBlue = [100,250];
|
||||
blck_crateMoneyRed = [175, 300];
|
||||
blck_crateMoneyGreen = [300, 500];
|
||||
blck_crateMoneyOrange = [500, 750];
|
||||
|
||||
_blck_armed_vehicles_Exile = [
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M2_Green",
|
||||
"B_LSV_01_armed_F",
|
||||
"Exile_Car_Offroad_Armed_Guerilla01"
|
||||
];
|
||||
|
||||
_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 =
|
||||
[
|
||||
//"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
@ -68,10 +172,42 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
"B_APC_Tracked_01_CRV_F",
|
||||
"B_APC_Tracked_01_rcws_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;
|
||||
|
||||
blck_AIPatrolVehiclesBlue = [
|
||||
"Exile_Car_Offroad_Armed_Guerilla01",
|
||||
"Exile_Car_Offroad_Armed_Guerilla02",
|
||||
"Exile_Car_BTR40_MG_Green",
|
||||
"Exile_Car_BTR40_MG_Camo",
|
||||
"Exile_Car_HMMWV_M134_Green",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M134_Desert",
|
||||
"Exile_Car_HMMWV_M2_Desert",
|
||||
"B_LSV_01_armed_F"
|
||||
];
|
||||
|
||||
blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + _blck_APC_CUP;
|
||||
blck_AIPatrolVehiclesGreen = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
blck_AIPatrolVehiclesOrange = _blck_Tanks_ARMA3 + _blck_Tanks_CUP;
|
||||
|
||||
if (toLower(worldName) isEqualTo "namalsk") then
|
||||
{
|
||||
_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"
|
||||
];
|
||||
diag_log "blck)configs_exile_mil.sqf:: - > Using special settings for namalsk";
|
||||
blck_AIPatrolVehiclesRed = _blck_lightlyArmed_ARMA3 + blck_AIPatrolVehiclesBlue;
|
||||
blck_AIPatrolVehiclesGreen = blck_AIPatrolVehiclesRed;
|
||||
blck_AIPatrolVehiclesOrange = blck_AIPatrolVehiclesRed;
|
||||
};
|
||||
|
||||
// Blacklisted itesm
|
||||
blck_blacklistedOptics = ["optic_Nightstalker","optic_tws","optic_tws_mg"];
|
||||
@ -519,6 +655,9 @@ AI WEAPONS, UNIFORMS, VESTS AND GEAR
|
||||
blck_specialItems = blck_throwableExplosives + blck_medicalItems;
|
||||
|
||||
blck_NVG = ["NVGoggles","NVGoggles_INDEP","NVGoggles_OPFOR","Exile_Item_XM8"];
|
||||
blck_buildingMaterials = ["Exile_Item_ExtensionCord","Exile_Item_JunkMetal","Exile_Item_LightBulb","Exile_Item_MetalBoard",
|
||||
"Exile_Item_MetalPole","Exile_Item_MetalScrews","Exile_Item_Cement","Exile_Item_Sand","Exile_Item_MetalWire","Exile_Item_ExtensionCord","Exile_Item_JunkMetal"];
|
||||
blck_tools = ["Exile_Item_Matches","Exile_Item_CookingPot","Exile_Melee_Axe","Exile_Melee_SledgeHammmer","Exile_Item_Handsaw","Exile_Item_Pliers","Exile_Item_CanOpener","Exile_Item_Shovel"];
|
||||
|
||||
/***************************************************************************************
|
||||
DEFAULT CONTENTS OF LOOT CRATES FOR EACH MISSION
|
||||
|
@ -29,7 +29,7 @@
|
||||
|
||||
// Note that you can define map-specific variants in custom_server\configs\blck_custom_config.sqf
|
||||
blck_useTimeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 1; // Daytime time accelearation
|
||||
blck_timeAccelerationDay = 2; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
***********************************************************/
|
||||
////////
|
||||
// Headless Client Configurations
|
||||
blck_useHC = true; //
|
||||
blck_useHC = false; //
|
||||
|
||||
///////////////////////////////
|
||||
// Kill message configurations
|
||||
@ -62,9 +62,9 @@
|
||||
// blck_labelMapMarkers: Determines if when the mission composition provides text labels, map markers with have a text label indicating the mission type
|
||||
//When set to true,"arrow", text will be to the right of an arrow below the mission marker.
|
||||
// When set to true,"dot", ext will be to the right of a black dot at the center the mission marker.
|
||||
blck_labelMapMarkers = [false,"center"];
|
||||
blck_labelMapMarkers = [true,"center"];
|
||||
blck_preciseMapMarkers = false; // Map markers are/are not centered at the loot crate
|
||||
blck_showCountAliveAI = true;
|
||||
blck_showCountAliveAI = false;
|
||||
|
||||
//Minimum distance between missions
|
||||
blck_MinDistanceFromMission = 1500;
|
||||
@ -81,7 +81,12 @@
|
||||
// It's position can be either "center" or "random". smoking wreck will be spawned at a random location between 15 and 50 m from the mission.
|
||||
blck_SmokeAtMissions = [false,"random"]; // set to [false,"anything here"] to disable this function altogether.
|
||||
blck_useSignalEnd = true; // When true a smoke grenade/chemlight will appear at the loot crate for 2 min after mission completion.
|
||||
blck_loadCratesTiming = "atMissionCompletion"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
|
||||
blck_spawnCratesTiming = "atMissionSpawnGround"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir".
|
||||
// Crates spawned in the air will be spawned at mission center or the position(s) defined in the mission file and dropped under a parachute.
|
||||
// This sets the default value but can be overridden by defining _spawnCrateTiming in the file defining a particular mission.
|
||||
blck_loadCratesTiming = "atMissionSpawn"; // valid choices are "atMissionCompletion" and "atMissionSpawn";
|
||||
// Pertains only to crates spawned at mission spawn.
|
||||
// This sets the default but can be overridden for specific missions by defining _loadCratesTiming
|
||||
|
||||
///////////////////////////////
|
||||
// PLAYER PENALTIES
|
||||
@ -103,7 +108,7 @@
|
||||
///////////////////////////////
|
||||
blck_useKilledAIName = true; // When false, the name of the killer (player), weapon and distance are displayed; otherwise the name of the player, distance and name of AI unit killed are shown.
|
||||
blck_useMines = false; // when true mines are spawned around the mission area. these are cleaned up when a player reaches the crate. Turn this off if you have vehicle patrols.
|
||||
blck_cleanupCompositionTimer = 20*60; // Mission objects will be deleted after the mission is completed after a deley set by this timer.
|
||||
blck_cleanupCompositionTimer = 30*60; // Mission objects will be deleted after the mission is completed after a deley set by this timer.
|
||||
blck_cleanUpLootChests = false; // when true, loot crates will be deleted together with other mission objects.
|
||||
blck_MissionTimout = 60*60; // 60 min - missions will timeout and respawn in another location. This prevents missions in impossible locations from persisting.
|
||||
blck_AliveAICleanUpTimer = 60*20; // Time after mission completion at which any remaining live AI are deleted.
|
||||
@ -165,9 +170,9 @@
|
||||
// Heli Patrol Settings
|
||||
///////////////////////////////
|
||||
|
||||
blck_chanceHeliPatrolBlue = 0.2; //[0 - 1] Set to 0 to deactivate and 1 to always have a heli spawn over the mission center and patrol the mission area. The chance of paratroops dropping from the heli is defined by blck_chancePara(Blue|Red|Green|Orange) above.
|
||||
blck_chanceHeliPatrolBlue = 0.8; //[0 - 1] Set to 0 to deactivate and 1 to always have a heli spawn over the mission center and patrol the mission area. The chance of paratroops dropping from the heli is defined by blck_chancePara(Blue|Red|Green|Orange) above.
|
||||
blck_patrolHelisBlue = _blck_littleBirds;
|
||||
blck_noPatrolHelisBlue = 1;
|
||||
blck_noPatrolHelisBlue = 0;
|
||||
|
||||
blck_chanceHeliPatrolRed = 0.8; // 0.4;
|
||||
blck_patrolHelisRed = _blck_armed_hellcats;
|
||||
@ -178,7 +183,7 @@
|
||||
blck_noPatrolHelisGreen = [1,3];
|
||||
|
||||
blck_chanceHeliPatrolOrange = 0.9999;
|
||||
blck_patrolHelisOrange = _blck_armed_attackHelis + _blck_armed_heavyAttackHelis + _blck_fighters;
|
||||
blck_patrolHelisOrange = _blck_armed_attackHelis + _blck_armed_heavyAttackHelis; // + _blck_fighters;
|
||||
blck_noPatrolHelisOrange = [2,4];
|
||||
|
||||
////////////////////
|
||||
@ -186,16 +191,25 @@
|
||||
////////////////////
|
||||
|
||||
// Maximum number of missions shown on the map at any one time.
|
||||
#ifdef GRGserver
|
||||
blck_maxSpawnedMissions = 15;
|
||||
#else
|
||||
// Change this value to reduce the number of spawned missions at any one time.
|
||||
blck_maxSpawnedMissions = 9;
|
||||
|
||||
blck_maxSpawnedMissions = 4;
|
||||
#endif
|
||||
|
||||
//Set to -1 to disable. Values of 2 or more force the mission spawner to spawn copies of that mission - this feature is not recommended because you may run out of available groups.
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = 5; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
blck_enableRedMissions = 2;
|
||||
blck_enableBlueMissions = 2;
|
||||
blck_numberUnderwaterDynamicMissions = 2; // Values from 0 (no UMS) to N (N Underwater missions will be spawned; static UMS units and subs will be spawned.
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 2;
|
||||
blck_maxcrashsites = 3;
|
||||
#endif
|
||||
|
||||
////////////////////
|
||||
// MISSION TIMERS
|
||||
@ -207,6 +221,12 @@
|
||||
blck_TMin_Blue = 120;
|
||||
blck_TMin_Red = 150;
|
||||
blck_TMin_UMS = 180;
|
||||
#ifdef GRGserver
|
||||
blck_TMin_Hunter = 120;
|
||||
blck_TMin_Scouts = 115;
|
||||
blck_TMin_Crashes = 115;
|
||||
|
||||
#endif
|
||||
|
||||
//Maximum Spawn time between missions in seconds
|
||||
blck_TMax_Orange = 360;
|
||||
@ -214,6 +234,11 @@
|
||||
blck_TMax_Blue = 200;
|
||||
blck_TMax_Red = 250;
|
||||
blck_TMax_UMS = 200;
|
||||
#ifdef GRGserver
|
||||
blck_TMax_Hunter = 200;
|
||||
blck_TMax_Scouts = 200;
|
||||
blck_TMax_Crashes = 200;
|
||||
#endif
|
||||
|
||||
///////////////////////////////
|
||||
// AI VEHICLE PATROL PARAMETERS
|
||||
@ -225,14 +250,14 @@
|
||||
////////////////////
|
||||
// Mission Vehicle Settings
|
||||
////////////////////
|
||||
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of static weapons or vehicles. To discourage players runniing with with vehicles, spawn more B_GMG_01_high
|
||||
blck_SpawnVeh_Orange = [3,5]; // Number of static weapons at Orange Missions
|
||||
blck_SpawnVeh_Green = [3,4]; // Number of static weapons at Green Missions
|
||||
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
|
||||
blck_SpawnVeh_Red = 2; // Number of static weapons at Red Missions
|
||||
//Defines how many AI Vehicles to spawn. Set this to -1 to disable spawning of vehicles. To discourage players running over AI with with vehicles, spawn more B_GMG_01_high
|
||||
blck_SpawnVeh_Orange = [3,5]; // Number of vehicles at Orange Missions
|
||||
blck_SpawnVeh_Green = [3,4]; // Number of vehicles at Green Missions
|
||||
blck_SpawnVeh_Blue = 1; // Number of vehicles at Blue Missions
|
||||
blck_SpawnVeh_Red = 2; // Number of vehicles at Red Missions
|
||||
|
||||
///////////////////////////////
|
||||
// AI STATIC WEAPON PARAMETERS
|
||||
// AI STATIC WEAPON Settings
|
||||
///////////////////////////////
|
||||
|
||||
blck_useStatic = true; // When true, AI will man static weapons spawned 20-30 meters from the mission center. These are very effective against most vehicles
|
||||
@ -240,10 +265,6 @@
|
||||
// B_Mortar_01_F, B_HMG_01_F, B_GMG_01_F
|
||||
blck_staticWeapons = ["B_HMG_01_high_F","B_GMG_01_high_F"]; // [0.50 cal, grenade launcher, AT Launcher]
|
||||
|
||||
////////////////////
|
||||
// Mission Static Weapon Settings
|
||||
////////////////////
|
||||
|
||||
// Defines how many static weapons to spawn. Set this to -1 to disable spawning
|
||||
blck_SpawnEmplaced_Orange = [3,5]; // Number of static weapons at Orange Missions
|
||||
blck_SpawnEmplaced_Green = [3,4]; // Number of static weapons at Green Missions
|
||||
@ -273,6 +294,11 @@
|
||||
|
||||
//This defines how long after an AI dies that it's body disappears.
|
||||
blck_bodyCleanUpTimer = 40*60; // time in seconds after which dead AI bodies are deleted
|
||||
#ifdef GRGserver
|
||||
#ifdef blck_milServer
|
||||
blck_bodyCleanUpTimer = 40*60; // Trying to reduce lag with player counts > 20
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Each time an AI is killed, the location of the killer will be revealed to all AI within this range of the killed AI, set to -1 to disable
|
||||
// values are ordered as follows [blue, red, green, orange];
|
||||
@ -331,6 +357,60 @@
|
||||
blck_maxMoneyGreen = 40;
|
||||
blck_maxMoneyRed = 30;
|
||||
blck_maxMoneyBlue = 20;
|
||||
|
||||
#ifdef GRGserver
|
||||
blck_AIAlertDistance = [250,425,650,800]; // Radius within which AI will be notified of enemy activity. Depricated as a group-sed system is used now. The group is informed of the enemy location when a group member is hit or killed.
|
||||
//blck_AIAlertDistance = [150,225,400,500];
|
||||
// How precisely player locations will be revealed to AI after an AI kill
|
||||
// values are ordered as follows [blue, red, green, orange];
|
||||
blck_AIIntelligence = [0.3, 0.5, 0.7, 0.9];
|
||||
|
||||
blck_baseSkill = 1; // The overal skill of the AI - range 0.1 to 1.0.
|
||||
|
||||
/***************************************************************
|
||||
|
||||
MISSION TYPE SPECIFIC AI SETTINGS
|
||||
|
||||
**************************************************************/
|
||||
//This defines the skill, minimum/Maximum number of AI and how many AI groups are spawned for each mission type
|
||||
// Orange Missions
|
||||
blck_MinAI_Orange = 30;
|
||||
blck_MaxAI_Orange = 35;
|
||||
blck_AIGrps_Orange = 5;
|
||||
blck_SkillsOrange = [
|
||||
["aimingAccuracy",0.6],["aimingShake",0.9],["aimingSpeed",0.9],["endurance",1.00],["spotDistance",1.0],["spotTime",1.0],["courage",1.00],["reloadSpeed",1.00],["commanding",1.00],["general",1.00]
|
||||
];
|
||||
|
||||
// Green Missions
|
||||
blck_MinAI_Green = 26;
|
||||
blck_MaxAI_Green = 31;
|
||||
blck_AIGrps_Green = 4;
|
||||
blck_SkillsGreen = [
|
||||
["aimingAccuracy",0.55],["aimingShake",0.75],["aimingSpeed",0.85],["endurance",0.9],["spotDistance",0.9],["spotTime",0.9],["courage",0.9],["reloadSpeed",0.9],["commanding",0.9],["general",0.75]
|
||||
];
|
||||
|
||||
// Red Missions
|
||||
blck_MinAI_Red = 12;
|
||||
blck_MaxAI_Red = 18;
|
||||
blck_AIGrps_Red = 3;
|
||||
blck_SkillsRed = [
|
||||
["aimingAccuracy",0.4],["aimingShake",0.6],["aimingSpeed",0.6],["endurance",0.80],["spotDistance",0.7],["spotTime",0.8],["courage",0.80],["reloadSpeed",0.70],["commanding",0.8],["general",0.70]
|
||||
];
|
||||
|
||||
// Blue Missions
|
||||
blck_MinAI_Blue = 8;
|
||||
blck_MaxAI_Blue = 14;
|
||||
blck_AIGrps_Blue = 2;
|
||||
blck_SkillsBlue = [
|
||||
["aimingAccuracy",0.12],["aimingShake",0.3],["aimingSpeed",0.5],["endurance",0.50],["spotDistance",0.6],["spotTime",0.6],["courage",0.60],["reloadSpeed",0.60],["commanding",0.7],["general",0.60]
|
||||
];
|
||||
|
||||
// Add some money to AI; only works with Exile for now.
|
||||
blck_maxMoneyOrange = 25;
|
||||
blck_maxMoneyGreen = 20;
|
||||
blck_maxMoneyRed = 15;
|
||||
blck_maxMoneyBlue = 10;
|
||||
#endif
|
||||
|
||||
private["_modType"];
|
||||
_modType = [] call blck_fnc_getModType;
|
||||
|
@ -39,23 +39,37 @@ switch (toLower (worldName)) do
|
||||
_daylight = _sunset - _sunrise;
|
||||
_nightTime = abs(24 - _daylight);
|
||||
_time = dayTime;
|
||||
|
||||
//blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
//blck_timeAccelerationDay = (_daylight)/6; // Daytime time accelearation
|
||||
//blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = _nightTime / 6; // Nighttim time acceleration
|
||||
blck_maxCrashSites = 3;
|
||||
#ifdef blck_milServer
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = (_daylight)/3; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = _nightTime / 6; // Nighttim time acceleration
|
||||
#else
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = (_daylight)/8; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = _nightTime / 8; // Nighttim time acceleration
|
||||
#endif
|
||||
//blck_maxCrashSites = 3;
|
||||
};
|
||||
case"tanoa":
|
||||
{
|
||||
blck_maxCrashSites = 2;
|
||||
//blck_timeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
//blck_timeAccelerationDay = 1.4; // Daytime time accelearation
|
||||
//blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 1.4; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
};
|
||||
case"namalsk":
|
||||
{
|
||||
private ["_arr","_sunrise","_sunset","_time"];
|
||||
_arr = date call BIS_fnc_sunriseSunsetTime;
|
||||
_sunrise = _arr select 0;
|
||||
_sunset = _arr select 1;
|
||||
_daylight = _sunset - _sunrise;
|
||||
_nightTime = abs(24 - _daylight);
|
||||
_time = dayTime;
|
||||
_serverUpTime = 8;
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = -1;
|
||||
blck_enableRedMissions = 1;
|
||||
@ -64,10 +78,10 @@ switch (toLower (worldName)) do
|
||||
blck_enableScoutsMissions = -1;
|
||||
blck_maxCrashSites = 1; // recommended settings: 3 for Altis, 2 for Tanoa, 1 for smaller maps. Set to -1 to disable
|
||||
|
||||
//blck_timeAcceleration = false; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
//blck_timeAccelerationDay = 1; // Daytime time accelearation
|
||||
//blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = (5/_daylight); // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = (3/_nightTime); // Nighttim time acceleration
|
||||
};
|
||||
case "esseker":
|
||||
{
|
||||
@ -79,18 +93,18 @@ switch (toLower (worldName)) do
|
||||
blck_enableScoutsMissions = -1;
|
||||
blck_maxCrashSites = 1;
|
||||
|
||||
//blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
//blck_timeAccelerationDay = 1; // Daytime time accelearation
|
||||
//blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = 6; // Nighttim time acceleration
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 1; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 3; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 6; // Nighttim time acceleration
|
||||
};
|
||||
case "panthera3":
|
||||
{
|
||||
blck_maxCrashSites = 2;
|
||||
//blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
//blck_timeAccelerationDay = 1.4; // Daytime time accelearation
|
||||
//blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
//blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = 1.4; // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 4; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = 8; // Nighttim time acceleration
|
||||
};
|
||||
case "malden":
|
||||
{
|
||||
@ -100,10 +114,18 @@ switch (toLower (worldName)) do
|
||||
_time = dayTime;
|
||||
_daylight = _sunset - _sunrise;
|
||||
|
||||
//blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAcceleration = true; // When true, time acceleration will be periodically updated based on amount of daylight at that time according to the values below.
|
||||
blck_timeAccelerationDay = (_daylight / 2.5); // Daytime time accelearation
|
||||
blck_timeAccelerationDusk = 8; // Dawn/dusk time accelearation
|
||||
blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration
|
||||
blck_timeAccelerationNight = ((24 - _daylight) / 1.5); // Nighttim time acceleration
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = -1;
|
||||
blck_enableRedMissions = 2;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = 3;
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxCrashSites = 3;
|
||||
};
|
||||
};
|
||||
|
||||
@ -118,35 +140,34 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
|
||||
//blck_timeAccelerationNight = 24; // Nighttim time acceleration
|
||||
|
||||
//blck_useHC = true;
|
||||
blck_maxSpawnedMissions = 10;
|
||||
blck_maxSpawnedMissions = 15;
|
||||
blck_mainThreadUpdateInterval = 10;
|
||||
blck_enableOrangeMissions = 1;
|
||||
blck_enableGreenMissions = 1;
|
||||
blck_enableRedMissions = -2;
|
||||
blck_enableBlueMissions = -2;
|
||||
blck_enableRedMissions = 1;
|
||||
blck_enableBlueMissions = 1;
|
||||
blck_numberUnderwaterDynamicMissions = -3;
|
||||
blck_enableHunterMissions = -1;
|
||||
blck_enableScoutsMissions = -1;
|
||||
blck_maxCrashSites = 0;
|
||||
blck_enableHunterMissions = 1;
|
||||
blck_enableScoutsMissions = 1;
|
||||
blck_maxCrashSites = 1;
|
||||
|
||||
//blck_enabeUnderwaterMissions = 1;
|
||||
|
||||
blck_cleanupCompositionTimer = 10; // Time after mission completion at which items in the composition are deleted.
|
||||
blck_AliveAICleanUpTimer = 10; // Time after mission completion at which any remaining live AI are deleted.
|
||||
blck_bodyCleanUpTimer = 10;
|
||||
blck_vehicleDeleteTimer = 60;
|
||||
blck_cleanupCompositionTimer = 120; // Time after mission completion at which items in the composition are deleted.
|
||||
//blck_AliveAICleanUpTimer = 10; // Time after mission completion at which any remaining live AI are deleted.
|
||||
blck_bodyCleanUpTimer = 120;
|
||||
blck_vehicleDeleteTimer = 120;
|
||||
|
||||
blck_noPatrolHelisOrange = 0;
|
||||
blck_noPatrolHelisBlue = 0;
|
||||
|
||||
//blck_chanceHeliPatrolBlue = 1;
|
||||
blck_SpawnEmplaced_Orange = 0; // Number of static weapons at Orange Missions
|
||||
blck_SpawnEmplaced_Green = 0; // Number of static weapons at Green Missions
|
||||
blck_SpawnEmplaced_Blue = 0; // Number of static weapons at Blue Missions
|
||||
blck_SpawnEmplaced_Red = 0;
|
||||
blck_SpawnEmplaced_Orange = 2; // Number of static weapons at Orange Missions
|
||||
blck_SpawnEmplaced_Green = 2; // Number of static weapons at Green Missions
|
||||
blck_SpawnEmplaced_Blue = 2; // Number of static weapons at Blue Missions
|
||||
blck_SpawnEmplaced_Red = 2;
|
||||
|
||||
blck_SpawnVeh_Orange = [2,4]; // Number of static weapons at Orange Missions
|
||||
blck_SpawnVeh_Green = 3; // Number of static weapons at Green Missions
|
||||
blck_SpawnVeh_Blue = 1; // Number of static weapons at Blue Missions
|
||||
blck_SpawnVeh_Orange = 2; // Number of vehicles at Orange Missions
|
||||
blck_SpawnVeh_Green = 2; // Number of vehicles at Green Missions
|
||||
blck_SpawnVeh_Blue = 2; // Number of vehicles at Blue Missions
|
||||
blck_SpawnVeh_Red = 2;
|
||||
|
||||
blck_TMin_Blue = 7;
|
||||
@ -167,11 +188,15 @@ if (blck_debugON || (blck_debugLevel > 0)) then // These variables are found in
|
||||
blck_TMax_Crashes = 15;
|
||||
blck_TMax_UMS = 25;
|
||||
//blck_MissionTimout = 360; // 40 min
|
||||
/*
|
||||
blck_MinAI_Blue = 3;
|
||||
blck_MaxAI_Blue = 5;
|
||||
|
||||
blck_MinAI_Orange = 1;
|
||||
blck_MaxAI_Orange = 2;
|
||||
blck_AIGrps_Orange = 1;
|
||||
|
||||
blck_MinAI_Blue = 1;
|
||||
blck_MaxAI_Blue = 2;
|
||||
blck_AIGrps_Blue = 1;
|
||||
*/
|
||||
|
||||
/*
|
||||
blck_SkillsBlue = [
|
||||
["aimingAccuracy",0.01],
|
||||
|
@ -2,7 +2,6 @@
|
||||
for ghostridergaming
|
||||
By Ghostrider [GRG]
|
||||
Copyright 2016
|
||||
Last Modified 6/7/17
|
||||
|
||||
--------------------------
|
||||
License
|
||||
@ -12,8 +11,11 @@
|
||||
http://creativecommons.org/licenses/by-nc-sa/4.0/
|
||||
*/
|
||||
|
||||
#define GRGserver
|
||||
#define wpModeMove
|
||||
#define useAPEX
|
||||
//#define useDynamicSimulation
|
||||
//#define blck_debugMode
|
||||
//#define blck_milServer
|
||||
#define blck_milServer
|
||||
#define hideOnUse false
|
||||
#define showWindow true
|
||||
|
@ -46,6 +46,9 @@ blck_configsLoaded = nil;
|
||||
// Load any user-defined specifications or overrides
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
|
||||
#ifdef GRGserver
|
||||
diag_log "[blckegls] Running DBD Clan Version";
|
||||
#endif
|
||||
#ifdef useDynamicSimulation
|
||||
diag_log "[blckegls] dynamic simulation manager enabled";
|
||||
#else
|
||||
@ -55,4 +58,4 @@ diag_log "[blckegls] blckegls simulation manager enabled";
|
||||
//_marker setMarkerColor "ColorBlack";
|
||||
//_marker setMarkerType "hd_flag";
|
||||
diag_log format["[blckeagls] for HC version %1 Build %2 Loaded in %3 seconds",_blck_versionDate,_blck_version,diag_tickTime - _blck_loadingStartTime]; //,blck_modType];
|
||||
[] spawn blck_fnc_HCmonitor;
|
||||
[] spawn blck_fnc_HCmonitor;
|
||||
|
@ -57,6 +57,14 @@ blck_worldSet = nil;
|
||||
diag_log "[blckeagls] Loading Mission Lists";
|
||||
#include "\q\addons\custom_server\Missions\GMS_missionLists.sqf";
|
||||
|
||||
#ifdef GRGserver
|
||||
//start the dynamic loot crate system
|
||||
[] execVM "\q\addons\custom_server\DLS\DLS_init.sqf";
|
||||
waitUntil {(isNil "blck_DLSComplete") isEqualTo false;};
|
||||
waitUntil{blck_DLSComplete};
|
||||
blck_DLSComplete = nil;
|
||||
#endif
|
||||
|
||||
// Load any user-defined specifications or overrides
|
||||
call compileFinal preprocessFileLineNumbers "\q\addons\custom_server\Configs\blck_custom_config.sqf";
|
||||
|
||||
@ -93,6 +101,9 @@ if (blck_spawnStaticLootCrates) then
|
||||
diag_log "[blckeagls] SLS:: -- >> Static Loot Spawner disabled";
|
||||
};
|
||||
|
||||
#ifdef GRGserver
|
||||
diag_log "[blckegls] Running GhostriderGaming Version";
|
||||
#endif
|
||||
#ifdef useDynamicSimulation
|
||||
diag_log "[blckegls] dynamic simulation manager enabled";
|
||||
#else
|
||||
@ -121,10 +132,32 @@ if (blck_enableBlueMissions > 0) then
|
||||
[_missionListBlue,_pathBlue,"BlueMarker","blue",blck_TMin_Blue,blck_TMax_Blue,blck_enableBlueMissions] call blck_fnc_addMissionToQue;
|
||||
};
|
||||
|
||||
#ifdef GRGserver
|
||||
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;
|
||||
};
|
||||
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.
|
||||
if (blck_maxCrashSites > 0) then
|
||||
{
|
||||
[] execVM "\q\addons\custom_server\Missions\HeliCrashs\Crashes2.sqf";
|
||||
};
|
||||
#endif
|
||||
|
||||
blck_modType = call blck_fnc_getModType;
|
||||
publicVariable "blck_modType";
|
||||
// start the main thread for the mission system which monitors missions running and stuff to be cleaned up
|
||||
[] spawn blck_fnc_mainThread;
|
||||
|
||||
[] execVM "\q\addons\custom_server\Missions\Static\GMS_StaticMissions_init.sqf";
|
||||
[] execVM "q\addons\custom_server\Missions\UMS\GMS_UMS_init.sqf"; // loads functions and spawns any static missions.
|
||||
diag_log "blck_init_server: ->> Static and UMS systems initialized.";
|
||||
diag_log "[blckeagls] Mission spawner started";
|
||||
diag_log "[blckeagls] Mission spawner started";
|
||||
|
@ -1,6 +1,6 @@
|
||||
private ["_version","_versionDate"];
|
||||
blck_version = "6.80 Build 118";
|
||||
blck_version = "6.81 Build 124";
|
||||
_blck_version = blck_version;
|
||||
_blck_versionDate = "3-3-18 7:00 AM";
|
||||
_blck_versionDate = "4-3-18 7:00 AM";
|
||||
blck_pvs_version = _blck_version;
|
||||
publicVariable blck_pvs_version;
|
||||
|
@ -1,11 +1,80 @@
|
||||
////////////////////////////////////////////
|
||||
// Start Server-side functions and Create, Display Mission Messages for blckeagls mission system for Arma 3 Epoch
|
||||
// Last Updated 1/11/17
|
||||
// by Ghostrider-DbD-
|
||||
//////////////////////////////////////////
|
||||
blck_fnc_spawnMarker = compileFinal preprocessfilelinenumbers "debug\spawnMarker.sqf";
|
||||
blck_fnc_deleteMarker = compileFinal preprocessfilelinenumbers "debug\deleteMarker.sqf";
|
||||
blck_fnc_missionCompleteMarker = compileFinal preprocessfilelinenumbers "debug\missionCompleteMarker.sqf";
|
||||
#define hideOnUse true
|
||||
#define showWindow true
|
||||
|
||||
GMS_fnc_nextAnimation = {
|
||||
_hostage = _this;
|
||||
_hostage switchMove "";
|
||||
//uisleep 0.1;
|
||||
_animations = _hostage getVariable["GMSAnimations",[""]];
|
||||
diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations];
|
||||
_hostage switchMove (selectRandom _animations);
|
||||
};
|
||||
|
||||
GMS_EH_onAnimationDone = {
|
||||
diag_log format["GMS_EH_onAnimationDone: _this = %1",_this];
|
||||
private _hostage = _this select 0;
|
||||
if (alive _hostage) then
|
||||
{
|
||||
diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]];
|
||||
_hostage call GMS_fnc_nextAnimation;
|
||||
} else {
|
||||
_hostage removeAllEventHandlers "AnimDone";
|
||||
};
|
||||
};
|
||||
|
||||
GMS_fnc_freeHostage = {
|
||||
diag_log format["fn_freeHostage: _this = %1",_this];
|
||||
private _hostage = _this select 0;
|
||||
_hostage setVariable["blck_AIState",1,true];
|
||||
private _msg = "_fnc_freeHostage <Hostage Rescued>";
|
||||
systemChat _msg;
|
||||
hint _msg;
|
||||
diag_log _msg;
|
||||
//_hostage move (position _hostage) getPos [1000, random(360)];
|
||||
};
|
||||
|
||||
GMS_fnc_addHostageActions = {
|
||||
private _hostage = _this;
|
||||
//private _handle = _hostage addAction ["Free Hostage",{_this call GMS_fnc_freeHostage}]; //,[],1,showWindow,hideOnUse,(alive _hostage)];
|
||||
private _handle = _hostage addAction ["Free Hostage",{_this call GMS_fnc_freeHostage},[],1,showWindow,hideOnUse]; //,"",{alive _target}]; //,"", (alive _target)];
|
||||
};
|
||||
|
||||
GMS_fnc_addAssetAnimations = {
|
||||
private _asset = _this;
|
||||
_asset addEventHandler ["AnimDone", {_this call GMS_EH_onAnimationDone}];
|
||||
_asset call GMS_fnc_nextAnimation;
|
||||
diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset];
|
||||
};
|
||||
|
||||
GMS_fnc_initHostage = {
|
||||
private _hostage = _this;
|
||||
if (blck_modType isEqualTo "Epoch") then {_hostage call GMS_fnc_addHostageActions};
|
||||
_hostage call GMS_fnc_addAssetAnimations;
|
||||
diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage];
|
||||
};
|
||||
|
||||
GMS_fnc_arrestLeader = {
|
||||
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
||||
private _leader = _this select 0;
|
||||
_leader setVariable["blck_AIState",1,true];
|
||||
private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
||||
systemChat _msg;
|
||||
hint _msg;
|
||||
diag_log _msg;
|
||||
};
|
||||
|
||||
GMS_fnc_addLeaderActions = {
|
||||
private _leader = _this;
|
||||
private _handle = _leader addAction ["Under Arrest",{_this call GMS_fnc_arrestLeader},[],1,showWindow,hideOnUse]; //,"",{alive _target}]; //,"", (alive _target)];
|
||||
};
|
||||
|
||||
GMS_fnc_initLeader = {
|
||||
private _leader = _this;
|
||||
if (blck_modType isEqualTo "Epoch") then {_leader call GMS_fnc_addLeaderActions};
|
||||
_leader call GMS_fnc_addAssetAnimations;
|
||||
diag_log format["_fnc_initLeader: Leader %1 initialized",_leader];
|
||||
};
|
||||
|
||||
if !(isServer) then
|
||||
{
|
||||
//diag_log "[blckeagls] initializing client variables";
|
||||
@ -50,6 +119,52 @@ if !(isServer) then
|
||||
[parseText _msg2,[0.0823437 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.0812109 * safezoneW,0.253 * safezoneH], nil, 7, 0.3, 0] spawn BIS_fnc_textTiles;
|
||||
};
|
||||
|
||||
fn_dynamicWarning = {
|
||||
private["_text","_screentime","_xcoord","_ycoord"];
|
||||
params["_mission","_message"];
|
||||
|
||||
waitUntil {blck_processingMsg < 0};
|
||||
blck_processingMsg = 1;
|
||||
_screentime = 7;
|
||||
_text = format[
|
||||
"<t align='left' size='1.0' color='#B22222'>%1</t><br/><br/>
|
||||
<t align='left' size='0.6' color='#F0F0F0'>%2</t><br/>",
|
||||
_mission,_message
|
||||
];
|
||||
_ycoord = [safezoneY + safezoneH - 0.8,0.7];
|
||||
_xcoord = [safezoneX + safezoneW - 0.5,0.35];
|
||||
[_text,_xcoord,_ycoord,_screentime,0.5] spawn BIS_fnc_dynamicText;
|
||||
uiSleep 3; // 3 second delay before the next message
|
||||
blck_processingMsg = -1;
|
||||
};
|
||||
fn_missionWarning = {
|
||||
params["_event","_message","_mission"];
|
||||
|
||||
if (blck_useSystemChat) then {systemChat format["%1",_message];};
|
||||
if (blck_useHint) then {
|
||||
hint parseText format[
|
||||
"<t align='center' size='2.0' color='#B22222'>%1</t><br/>
|
||||
<t size='1.5' color='#B22222'>______________</t><br/><br/>
|
||||
<t size='1.5' color='#ffff00'>%2</t><br/>
|
||||
<t size='1.5' color='#F0F0F0'>______________</t><br/><br/>
|
||||
<t size='1.5' color='#F0F0F0'>Any loot you find is yours as payment for eliminating the threat!</t>",_mission,_message
|
||||
];
|
||||
};
|
||||
if (blck_useDynamic) then {
|
||||
[_mission,_message] call fn_dynamicWarning;
|
||||
};
|
||||
if (blck_useTitleText) then {
|
||||
[_message] spawn {
|
||||
params["_msg"];
|
||||
titleText [_msg, "PLAIN DOWN",5];uiSleep 5; titleText ["", "PLAIN DOWN",5]
|
||||
};
|
||||
};
|
||||
if (blck_useToast) then
|
||||
{
|
||||
["InfoTitleAndText", [_mission, _message]] call ExileClient_gui_toaster_addTemplateToast;
|
||||
};
|
||||
//diag_log format["_fn_missionNotification ====] Paremeters _event %1 _message %2 _mission %3",_event,_message,_mission];
|
||||
};
|
||||
fn_dynamicNotification = {
|
||||
private["_text","_screentime","_xcoord","_ycoord"];
|
||||
params["_mission","_message"];
|
||||
@ -168,22 +283,13 @@ if !(isServer) then
|
||||
{
|
||||
[_message select 0, _message select 1, _message select 2] call fn_killScoreNotification;
|
||||
};
|
||||
case "warning":
|
||||
{
|
||||
[_event,_message,_mission] spawn fn_missionWarning;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
diag_log "blck client loaded ver 1/11/17 2.0 8 PM";
|
||||
|
||||
diag_log "[blckeagls] starting client loop";
|
||||
|
||||
while {true} do
|
||||
{
|
||||
waitUntil {!(blck_message isEqualTo "")};
|
||||
diag_log format["[blckClient] blck_Message = %1", blck_message];
|
||||
private["_message"];
|
||||
_message = blck_message;
|
||||
_message spawn fn_handleMessage;
|
||||
blck_Message = "";
|
||||
};
|
||||
diag_log "blck client loaded ver 4/2/18 for Version 6.81 8 PM";
|
||||
|
||||
};
|
@ -1,11 +1,80 @@
|
||||
////////////////////////////////////////////
|
||||
// Start Server-side functions and Create, Display Mission Messages for blckeagls mission system for Arma 3 Epoch
|
||||
// Last Updated 1/11/17
|
||||
// by Ghostrider-DbD-
|
||||
//////////////////////////////////////////
|
||||
blck_fnc_spawnMarker = compileFinal preprocessfilelinenumbers "debug\spawnMarker.sqf";
|
||||
blck_fnc_deleteMarker = compileFinal preprocessfilelinenumbers "debug\deleteMarker.sqf";
|
||||
blck_fnc_missionCompleteMarker = compileFinal preprocessfilelinenumbers "debug\missionCompleteMarker.sqf";
|
||||
#define hideOnUse true
|
||||
#define showWindow true
|
||||
|
||||
GMS_fnc_nextAnimation = {
|
||||
_hostage = _this;
|
||||
_hostage switchMove "";
|
||||
//uisleep 0.1;
|
||||
_animations = _hostage getVariable["GMSAnimations",[""]];
|
||||
diag_log format["_fnc_nextAnimation: _hostage = %1 and _animations = %2",_hostage,_animations];
|
||||
_hostage switchMove (selectRandom _animations);
|
||||
};
|
||||
|
||||
GMS_EH_onAnimationDone = {
|
||||
diag_log format["GMS_EH_onAnimationDone: _this = %1",_this];
|
||||
private _hostage = _this select 0;
|
||||
if (alive _hostage) then
|
||||
{
|
||||
diag_log format["GMS_EH_onAnimationDone: _animations = %1",_hostage getVariable["GMSAnimations",[""]]];
|
||||
_hostage call GMS_fnc_nextAnimation;
|
||||
} else {
|
||||
_hostage removeAllEventHandlers "AnimDone";
|
||||
};
|
||||
};
|
||||
|
||||
GMS_fnc_freeHostage = {
|
||||
diag_log format["fn_freeHostage: _this = %1",_this];
|
||||
private _hostage = _this select 0;
|
||||
_hostage setVariable["blck_AIState",1,true];
|
||||
private _msg = "_fnc_freeHostage <Hostage Rescued>";
|
||||
systemChat _msg;
|
||||
hint _msg;
|
||||
diag_log _msg;
|
||||
//_hostage move (position _hostage) getPos [1000, random(360)];
|
||||
};
|
||||
|
||||
GMS_fnc_addHostageActions = {
|
||||
private _hostage = _this;
|
||||
//private _handle = _hostage addAction ["Free Hostage",{_this call GMS_fnc_freeHostage}]; //,[],1,showWindow,hideOnUse,(alive _hostage)];
|
||||
private _handle = _hostage addAction ["Free Hostage",{_this call GMS_fnc_freeHostage},[],1,showWindow,hideOnUse]; //,"",{alive _target}]; //,"", (alive _target)];
|
||||
};
|
||||
|
||||
GMS_fnc_addAssetAnimations = {
|
||||
private _asset = _this;
|
||||
_asset addEventHandler ["AnimDone", {_this call GMS_EH_onAnimationDone}];
|
||||
_asset call GMS_fnc_nextAnimation;
|
||||
diag_log format["_fnc_addAssetAnimations: Animation and event handler added for asset %1",_asset];
|
||||
};
|
||||
|
||||
GMS_fnc_initHostage = {
|
||||
private _hostage = _this;
|
||||
if (blck_modType isEqualTo "Epoch") then {_hostage call GMS_fnc_addHostageActions};
|
||||
_hostage call GMS_fnc_addAssetAnimations;
|
||||
diag_log format["_fnc_initHostage: hostage %1 initialized",_hostage];
|
||||
};
|
||||
|
||||
GMS_fnc_arrestLeader = {
|
||||
diag_log format["GMS_fnc_arrestLeader: _this = %1",_this];
|
||||
private _leader = _this select 0;
|
||||
_leader setVariable["blck_AIState",1,true];
|
||||
private _msg = "_fnc_arrestLeader: <Leader Arrested>";
|
||||
systemChat _msg;
|
||||
hint _msg;
|
||||
diag_log _msg;
|
||||
};
|
||||
|
||||
GMS_fnc_addLeaderActions = {
|
||||
private _leader = _this;
|
||||
private _handle = _leader addAction ["Under Arrest",{_this call GMS_fnc_arrestLeader},[],1,showWindow,hideOnUse]; //,"",{alive _target}]; //,"", (alive _target)];
|
||||
};
|
||||
|
||||
GMS_fnc_initLeader = {
|
||||
private _leader = _this;
|
||||
if (blck_modType isEqualTo "Epoch") then {_leader call GMS_fnc_addLeaderActions};
|
||||
_leader call GMS_fnc_addAssetAnimations;
|
||||
diag_log format["_fnc_initLeader: Leader %1 initialized",_leader];
|
||||
};
|
||||
|
||||
if !(isServer) then
|
||||
{
|
||||
//diag_log "[blckeagls] initializing client variables";
|
||||
@ -50,6 +119,52 @@ if !(isServer) then
|
||||
[parseText _msg2,[0.0823437 * safezoneW + safezoneX,0.379 * safezoneH + safezoneY,0.0812109 * safezoneW,0.253 * safezoneH], nil, 7, 0.3, 0] spawn BIS_fnc_textTiles;
|
||||
};
|
||||
|
||||
fn_dynamicWarning = {
|
||||
private["_text","_screentime","_xcoord","_ycoord"];
|
||||
params["_mission","_message"];
|
||||
|
||||
waitUntil {blck_processingMsg < 0};
|
||||
blck_processingMsg = 1;
|
||||
_screentime = 7;
|
||||
_text = format[
|
||||
"<t align='left' size='1.0' color='#B22222'>%1</t><br/><br/>
|
||||
<t align='left' size='0.6' color='#F0F0F0'>%2</t><br/>",
|
||||
_mission,_message
|
||||
];
|
||||
_ycoord = [safezoneY + safezoneH - 0.8,0.7];
|
||||
_xcoord = [safezoneX + safezoneW - 0.5,0.35];
|
||||
[_text,_xcoord,_ycoord,_screentime,0.5] spawn BIS_fnc_dynamicText;
|
||||
uiSleep 3; // 3 second delay before the next message
|
||||
blck_processingMsg = -1;
|
||||
};
|
||||
fn_missionWarning = {
|
||||
params["_event","_message","_mission"];
|
||||
|
||||
if (blck_useSystemChat) then {systemChat format["%1",_message];};
|
||||
if (blck_useHint) then {
|
||||
hint parseText format[
|
||||
"<t align='center' size='2.0' color='#B22222'>%1</t><br/>
|
||||
<t size='1.5' color='#B22222'>______________</t><br/><br/>
|
||||
<t size='1.5' color='#ffff00'>%2</t><br/>
|
||||
<t size='1.5' color='#F0F0F0'>______________</t><br/><br/>
|
||||
<t size='1.5' color='#F0F0F0'>Any loot you find is yours as payment for eliminating the threat!</t>",_mission,_message
|
||||
];
|
||||
};
|
||||
if (blck_useDynamic) then {
|
||||
[_mission,_message] call fn_dynamicWarning;
|
||||
};
|
||||
if (blck_useTitleText) then {
|
||||
[_message] spawn {
|
||||
params["_msg"];
|
||||
titleText [_msg, "PLAIN DOWN",5];uiSleep 5; titleText ["", "PLAIN DOWN",5]
|
||||
};
|
||||
};
|
||||
if (blck_useToast) then
|
||||
{
|
||||
["InfoTitleAndText", [_mission, _message]] call ExileClient_gui_toaster_addTemplateToast;
|
||||
};
|
||||
//diag_log format["_fn_missionNotification ====] Paremeters _event %1 _message %2 _mission %3",_event,_message,_mission];
|
||||
};
|
||||
fn_dynamicNotification = {
|
||||
private["_text","_screentime","_xcoord","_ycoord"];
|
||||
params["_mission","_message"];
|
||||
@ -168,22 +283,13 @@ if !(isServer) then
|
||||
{
|
||||
[_message select 0, _message select 1, _message select 2] call fn_killScoreNotification;
|
||||
};
|
||||
case "warning":
|
||||
{
|
||||
[_event,_message,_mission] spawn fn_missionWarning;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
diag_log "blck client loaded ver 1/11/17 2.0 8 PM";
|
||||
|
||||
diag_log "[blckeagls] starting client loop";
|
||||
|
||||
while {true} do
|
||||
{
|
||||
waitUntil {!(blck_message isEqualTo "")};
|
||||
diag_log format["[blckClient] blck_Message = %1", blck_message];
|
||||
private["_message"];
|
||||
_message = blck_message;
|
||||
_message spawn fn_handleMessage;
|
||||
blck_Message = "";
|
||||
};
|
||||
diag_log "blck client loaded ver 4/2/18 for Version 6.81 8 PM";
|
||||
|
||||
};
|
@ -8,16 +8,44 @@ Ideas or code from that by Vampire and KiloSwiss have been used for certain func
|
||||
|
||||
Significant Changes:
|
||||
=====================
|
||||
Version 1.80 build 118
|
||||
Added: The server now sets simulation on/off and damage on/off for objects at dynamic missions. default missions updated.
|
||||
Version 1.81 Build 124.
|
||||
Added: Support for hostage rescue missions.
|
||||
The hostage can be spawned at any location relative to the mission center.
|
||||
The mission aborts if the hostage is killed; all loot is deleted.
|
||||
To complete the mission, a player must approach the hostage and execute the rescue action.
|
||||
The hostage then runs away, and loot becomes available to the player.
|
||||
See missions\blue\Default3.sqf for an example mission.
|
||||
Added: Support for Arrest Leader missions.
|
||||
These are similar to the rescue hostage mission except that the leader, when arrested, will sites
|
||||
awaiting arrival of imaginary survivor forces.
|
||||
See missions\blue\Default4.sqf for an example mission
|
||||
Added: blck_spawnCratesTiming = "atMissionEndAir"; // Choices: "atMissionSpawnGround","atMissionStartAir","atMissionEndGround","atMissionEndAir".
|
||||
Crates can be spawned on the ground at mission start or at mission end either on the ground or in the air.
|
||||
Added: Crates spawn with tabs or crypto. set the values in the mod-specific configs.
|
||||
Added: support for hostages/leaders(who must be arrested) (work in progress). You can set the crate to spawn after successfully freeing the captive using the setting above.
|
||||
Note - you need to update blck_client in your mission.pbo to use this mission mode.
|
||||
Added: Additional documentation for those who wish to design their own missions.
|
||||
See \missions\blue\default.sqf and default2.sqf for details.
|
||||
Changed: Each mission is now compiled at server startup.
|
||||
A few variables that were not used were eliminated.
|
||||
Some declarations of private variables were consolidated.
|
||||
Together these changes should be worth a small performance bump.
|
||||
Fixed: disabled some logging that is not required except when debugging.
|
||||
Fixed: AI Counts were not being shown at dynamic UMS.
|
||||
Fixed: AI were glitching through walls.
|
||||
|
||||
Version 1.80 Build 118
|
||||
Added: you can now determine whether objects spawned at dynamic missions have simulation or damage enabled.
|
||||
See the medicalCamp.sqf mission for an example of how this is done.
|
||||
Added: you can now spawn simple objects as part of your mission landscape. Useful for STATIC missions only.
|
||||
Added: lists of armed vehicles from which you can choose those you wish to spawn at vehicles broken down by category (wheeled, traced APC, Tank, etc)
|
||||
Added: Three constants that define how far away missions are from certain ingame bases, players and towns when they spawn. These were previously embedded in the code but not configurable.
|
||||
Added: Three constants that define how far away missions are from players when they spawn.
|
||||
blck_minDistanceToBases = 900; Minimum distance from any freq jammer or flag
|
||||
blck_minDistanceToPlayer = 900; Minimum distance from any player
|
||||
blck_minDistanceFromTowns = 300; Minimum distance from cites or towns.
|
||||
Fixed: Alive AI counts were not disabled by blck_showCountAliveAI.
|
||||
Fixed: The number of dynamically spawned underwater missions was not correctly set by blck_numberUnderwaterDynamicMissions.
|
||||
|
||||
Changed: Default missions reworked to support the above.
|
||||
|
||||
Version 1.79, Build 116
|
||||
Added: Map-specific information for Lythium.
|
||||
Added: New configuration setting: blck_showCountAliveAI = true; When = true, the number of alive AI at a mission will be displayed by the mission marker.
|
||||
@ -26,6 +54,7 @@ Added: You can now define the types of patrol vehicles spawned based on AI diffi
|
||||
Fixed: Setting blck_useTimeAcceleration = false; now disables the time acceleration module.
|
||||
Fixed: several issues with dynamic UMS missions.
|
||||
Fixed: AI Heli's at missions should now be released to players when all AI are dead.
|
||||
Fixed: script errors when dynamic simulation off.
|
||||
|
||||
Changed: Code for checking the state of AI vehicles and releasing them to players was re-written.
|
||||
Changed: Eliminated useless files from the debug folder (mission.pbo).
|
||||
|
Loading…
Reference in New Issue
Block a user