From 3e59ecae7f839c6bf67d1d785a2807238f374785 Mon Sep 17 00:00:00 2001 From: ante <49555217+ante185@users.noreply.github.com> Date: Wed, 27 Nov 2024 18:06:09 +0100 Subject: [PATCH] Migrated MJTF --- A3A/addons/config_fixes/RF/CfgVehicles.hpp | 59 +- .../Templates/AircraftLoadouts/EF/config.cpp | 33 + .../Templates/AircraftLoadouts/RF/config.cpp | 10 + A3A/addons/core/Templates/Templates.hpp | 28 + .../Templates/EF/EF_AI_MJTF_Arid.sqf | 1027 +++++++++++++++++ .../Templates/EF/EF_AI_MJTF_Temperate.sqf | 1023 ++++++++++++++++ .../Templates/WS/WS_AI_NATO_Desert.sqf | 4 +- .../Templates/Templates/WS/WS_AI_SFIA.sqf | 3 + 8 files changed, 2178 insertions(+), 9 deletions(-) create mode 100644 A3A/addons/core/Templates/AircraftLoadouts/EF/config.cpp create mode 100644 A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Arid.sqf create mode 100644 A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Temperate.sqf diff --git a/A3A/addons/config_fixes/RF/CfgVehicles.hpp b/A3A/addons/config_fixes/RF/CfgVehicles.hpp index 9701ec0723..44875bd45d 100644 --- a/A3A/addons/config_fixes/RF/CfgVehicles.hpp +++ b/A3A/addons/config_fixes/RF/CfgVehicles.hpp @@ -11,7 +11,10 @@ class CfgVehicles class B_Pickup_rf; class I_G_Pickup_rf; class Heli_light_03_base_F; - class B_Heli_light_03_unarmed_rf; + class Heli_light_03_unarmed_base_F; + class B_Heli_light_03_unarmed_rf : Heli_light_03_unarmed_base_F{ + class EventHandlers; + }; class Heli_EC_01_base_rf; class B_Heli_EC_04_military_rf; class B_Heli_EC_03_rf; @@ -115,7 +118,9 @@ class CfgVehicles textureList[] = {}; hiddenSelectionstextures[] = {"\lxRF\vehicles_rf\pickup_01\Data\pickup_01_ext_gendarmerie_co.paa","\lxRF\vehicles_rf\pickup_01\Data\pickup_01_adds_gendarmerie_co.paa","\lxrf\vehicles_rf\pickup_01\data\pickup_01_ext2_co.paa","\lxrf\vehicles_rf\pickup_01\data\pickup_01_AAT_olive_co.paa","\lxrf\vehicles_rf\pickup_01\data\pickup_01_Launcher_black_co.paa","\lxRF\vehicles_rf\pickup_01\Data\pickup_01_service_gendarmerie_co.paa"}; }; - class a3a_Heli_light_03_dynamicLoadout_rf : B_Heli_light_03_dynamicLoadout_rf {}; + class a3a_Heli_light_03_dynamicLoadout_rf : B_Heli_light_03_dynamicLoadout_rf { + class EventHandlers; + }; class a3a_AAF_Heli_light_03_dynamicLoadout_rf : a3a_Heli_light_03_dynamicLoadout_rf { textureList[] = {}; hiddenSelectionsTextures[] = {"\A3\Air_F_EPB\Heli_Light_03\data\Heli_Light_03_base_INDP_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_INDP_co.paa"}; @@ -136,6 +141,13 @@ class CfgVehicles textureList[] = {}; hiddenSelectionsTextures[] = {"\A3\Air_F_EPB\Heli_Light_03\data\Heli_Light_03_base_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_green_co.paa"}; }; + class a3a_navy_Heli_light_03_dynamicLoadout_rf : a3a_Heli_light_03_dynamicLoadout_rf { + class EventHandlers : EventHandlers{ + postinit = "if (local (_this select 0)) then {[(_this select 0), """", [], true] call bis_fnc_initVehicle;}"; + }; + textureList[] = {"NAVY", 0.1, "NAVY_CAMO", 1}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\Heli_Light_03\data\Heli_Light_03_base_navy_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_navy_co.paa"}; + }; class a3a_AAF_Heli_light_03_unarmed_rf : B_Heli_light_03_unarmed_rf { textureList[] = {}; hiddenSelectionsTextures[] = {"\A3\Air_F_EPB\Heli_Light_03\data\Heli_Light_03_base_INDP_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_INDP_co.paa"}; @@ -152,6 +164,13 @@ class CfgVehicles textureList[] = {}; hiddenSelectionsTextures[] = {"\lxRF\air_rf\Heli_Light_03\data\Heli_Light_03_base_tan_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_tan_co.paa"}; }; + class a3a_navy_Heli_light_03_unarmed_rf : B_Heli_light_03_unarmed_rf { + class EventHandlers : EventHandlers{ + postinit = "if (local (_this select 0)) then {[(_this select 0), """", [], true] call bis_fnc_initVehicle;}"; + }; + textureList[] = {"NAVY", 1, "NAVY_CAMO", 0.1}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\Heli_Light_03\data\Heli_Light_03_base_navy_CO.paa","\lxRF\air_rf\Heli_Light_03\data\wildcat_addons_navy_co.paa"}; + }; class a3a_Heli_EC_02_rf : Heli_EC_02_base_rf { // Default camo is a lovely tan, perfect for patrolling your local desert scope = 2; @@ -174,9 +193,39 @@ class CfgVehicles hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_34_dark_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_light_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_34_dark_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_34_dark_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_light_co.paa"}; }; class a3a_sfia_Heli_EC_02_rf : a3a_Heli_EC_02_rf { - textureList[] = {}; + textureList[] = {"CAMO_SFIA", 1, "CAMO_AFRICA", 0.5}; hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; }; + class a3a_ION_Heli_EC_02_rf : a3a_Heli_EC_02_rf { + textureList[] = {}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; + class a3a_navy_Heli_EC_02_rf : a3a_Heli_EC_02_rf { + textureList[] = {"MARINE", 1}; + hiddenSelectionsMaterials[] = {"\lxrf\air_rf\heli_medium_ec\data\as332_exterior_01.rvmat","\lxrf\air_rf\heli_medium_ec\data\as332_int_cargo.rvmat"}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; + class a3a_navy_Heli_EC_04_military_rf : B_Heli_EC_04_military_rf { + textureList[] = {"MARINE", 1}; + hiddenSelectionsMaterials[] = {"\lxrf\air_rf\heli_medium_ec\data\as332_exterior_01.rvmat","\lxrf\air_rf\heli_medium_ec\data\as332_int_cargo.rvmat"}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; + class a3a_navy_Heli_EC_03_rf : B_Heli_EC_03_rf { + textureList[] = {"MARINE", 1}; + hiddenSelectionsMaterials[] = {"\lxrf\air_rf\heli_medium_ec\data\as332_exterior_01.rvmat","\lxrf\air_rf\heli_medium_ec\data\as332_int_cargo.rvmat"}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_04_marineblue_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; + class I_Heli_EC_01A_military_RF; + class a3a_sfia_Heli_EC_04_military_rf : I_Heli_EC_01A_military_RF { + textureList[] = {"CAMO_SFIA", 1, "CAMO_AFRICA", 0.1}; + hiddenSelectionsMaterials[] = {"\lxrf\air_rf\heli_medium_ec\data\as332_exterior_01.rvmat","\lxrf\air_rf\heli_medium_ec\data\as332_int_cargo.rvmat"}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; + class a3a_sfia_Heli_EC_03_rf : B_Heli_EC_03_rf { + textureList[] = {"CAMO_SFIA", 0.1, "CAMO_AFRICA", 1}; + hiddenSelectionsMaterials[] = {"\lxrf\air_rf\heli_medium_ec\data\as332_exterior_01.rvmat","\lxrf\air_rf\heli_medium_ec\data\as332_int_cargo.rvmat"}; + hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_01_sfia_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; + }; class a3a_tan_Heli_EC_04_military_rf : B_Heli_EC_04_military_rf { textureList[] = {}; hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_09_tan_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_09_tan_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_09_tan_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; @@ -193,9 +242,5 @@ class CfgVehicles textureList[] = {}; hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; }; - class a3a_ION_Heli_EC_02_rf : a3a_Heli_EC_02_rf { - textureList[] = {}; - hiddenSelectionsTextures[] = {"\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa","#(rgb,1024,1024,1)ui('lxRF_MFDMinimap','lxRF_MFDMinimap')","\lxRF\air_rf\heli_medium_ec\data\as332_adds_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_exterior_06_ion_co.paa","\lxRF\air_rf\heli_medium_ec\data\as332_int_cargo_co.paa"}; - }; }; \ No newline at end of file diff --git a/A3A/addons/core/Templates/AircraftLoadouts/EF/config.cpp b/A3A/addons/core/Templates/AircraftLoadouts/EF/config.cpp new file mode 100644 index 0000000000..afb16a19ce --- /dev/null +++ b/A3A/addons/core/Templates/AircraftLoadouts/EF/config.cpp @@ -0,0 +1,33 @@ +#include "..\..\..\script_component.hpp" + +class CfgPatches +{ + class PATCHNAME(AirLoadout_EF) + { + name = COMPONENT_NAME; + units[] = {}; + weapons[] = {}; + requiredVersion = REQUIRED_VERSION; + requiredAddons[] = {"EF_Data"}; + skipWhenMissingDependencies = 1; + author = AUTHOR; + authors[] = { AUTHORS }; + authorUrl = ""; + VERSION_CONFIG; + }; +}; + +class A3A { + class Loadouts + { + class Helicopter + { + class baseHelicopter; + class EF_B_AH99J_NATO : baseHelicopter{ + loadout[] = { "PylonRack_12Rnd_missiles","PylonMissile_1Rnd_LG_scalpel","PylonRack_12Rnd_missiles","PylonRack_12Rnd_missiles","PylonMissile_1Rnd_LG_scalpel","PylonRack_12Rnd_missiles","EF_PylonMissile_Missile_Sidearm_x1","EF_PylonMissile_Titan_NLOS_2Rnd","EF_PylonMissile_Titan_NLOS_2Rnd","EF_PylonMissile_Missile_Sidearm_x1" }; + }; + class EF_B_AH99J_MJTF_Wdl : EF_B_AH99J_NATO {}; + class EF_B_AH99J_MJTF_Des : EF_B_AH99J_NATO {}; + }; + }; +}; \ No newline at end of file diff --git a/A3A/addons/core/Templates/AircraftLoadouts/RF/config.cpp b/A3A/addons/core/Templates/AircraftLoadouts/RF/config.cpp index c2c37d527e..95d419db9e 100644 --- a/A3A/addons/core/Templates/AircraftLoadouts/RF/config.cpp +++ b/A3A/addons/core/Templates/AircraftLoadouts/RF/config.cpp @@ -38,6 +38,16 @@ class A3A { class a3a_AAF_Heli_EC_02_rf : a3a_Heli_EC_02_rf {}; class a3a_black_Heli_EC_02_rf : a3a_Heli_EC_02_rf {}; class a3a_sfia_Heli_EC_02_rf : a3a_Heli_EC_02_rf {}; + + class a3a_navy_Heli_EC_03_rf : baseHelicopter { + loadout[] = { "PylonWeapon_860Rnd_127x99mm_shells_black_RF","PylonRack_4Rnd_LG_scalpel" }; + }; + class a3a_navy_Heli_light_03_dynamicLoadout_rf : a3a_Heli_light_03_dynamicLoadout_rf { + loadout[] = { "PylonRack_19Rnd_missiles_gray_RF","PylonRack_4Rnd_LG_scalpel","PylonRack_19Rnd_missiles_gray_RF","PylonWeapon_860Rnd_127x99mm_shells_black_RF" }; + }; + class a3a_navy_Heli_EC_02_rf : a3a_Heli_EC_02_rf { + loadout[] = { "PylonRack_4Rnd_LG_scalpel","PylonRack_19Rnd_missiles_gray_RF","PylonRack_19Rnd_missiles_gray_RF","PylonRack_4Rnd_LG_scalpel" }; + }; }; }; }; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates.hpp b/A3A/addons/core/Templates/Templates.hpp index c429f84f9d..c92970a07d 100644 --- a/A3A/addons/core/Templates/Templates.hpp +++ b/A3A/addons/core/Templates/Templates.hpp @@ -251,6 +251,34 @@ class Templates shortName = "NATO"; lore = $STR_A3A_templates_lore_NATO; }; + + class EF_Base : Vanilla_Base + { + requiredAddons[] = {"EF_Data"}; + logo = "\ef\ef_data\logos\arma3_ef_logo_ca.paa"; + basepath = QPATHTOFOLDER(Templates\Templates\EF); //the path to the template folder + priority = 5; + forceDLC[] = {"ef"}; + }; + + class EF_MJTF_Arid : EF_Base + { + side = "Occ"; + flagTexture = "\ef\ef_data\data\Flag_29thMEU_CO.paa"; + name = "EF MJTF Arid"; + file = "EF_AI_MJTF_Arid"; + shortName = "MJTF"; + lore = $STR_A3A_templates_lore_NATO; + climate[] = {"arid", "arctic"}; + }; + + class EF_MJTF_Temperate : EF_MJTF_Arid + { + name = "EF MJTF Temperate"; + file = "EF_AI_MJTF_Temperate"; + climate[] = {"temperate", "tropical"}; + }; + // ***************************** VN ***************************** class VN_Base diff --git a/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Arid.sqf b/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Arid.sqf new file mode 100644 index 0000000000..d07f1c2618 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Arid.sqf @@ -0,0 +1,1027 @@ +////////////////////////// +// Side Information // +////////////////////////// + +["name", "MJTF"] call _fnc_saveToTemplate; +["spawnMarkerName", "MJTF support corridor"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", "\ef\ef_data\data\Flag_29thMEU_CO.paa"] call _fnc_saveToTemplate; +["flagMarkerType", "EF_flag_29thMEU"] call _fnc_saveToTemplate; + +////////////////////////// +// Vehicles // +////////////////////////// + +["ammobox", "B_supplyCrate_F"] call _fnc_saveToTemplate; //Don't touch or you die a sad and lonely death! +["surrenderCrate", "Box_IND_Wps_F"] call _fnc_saveToTemplate; //Changeing this from default will require you to define logistics attachement offset for the box type +["equipmentBox", "Box_NATO_Equip_F"] call _fnc_saveToTemplate; //Changeing this from default will require you to define logistics attachement offset for the box type + +["vehiclesBasic", ["B_Quadbike_01_F"]] call _fnc_saveToTemplate; +private _LightUnarmed = ["B_MRAP_01_F"]; +private _LightArmed = ["B_MRAP_01_hmg_F", "EF_B_MRAP_01_AT_MJTF_Des", "EF_B_MRAP_01_FSV_MJTF_Des","EF_B_MRAP_01_LAAD_MJTF_Des"]; +["vehiclesTrucks", ["B_Truck_01_covered_F", "B_Truck_01_transport_F"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["B_Truck_01_cargo_F", "B_Truck_01_flatbed_F"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["B_Truck_01_ammo_F"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["B_Truck_01_Repair_F"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["B_Truck_01_fuel_F"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["B_Truck_01_medical_F"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["EF_B_AAV9_MJTF_Des", "EF_B_AAV9_MJTF_Des"]; +["vehiclesIFVs", ["EF_B_AAV9_50mm_MJTF_Des"]] call _fnc_saveToTemplate; +private _Tanks = ["B_MBT_01_TUSK_F"]; +["vehiclesAA", ["EF_B_MRAP_01_LAAD_MJTF_Des", "B_APC_Tracked_01_AA_F"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["B_Boat_Transport_01_F", "I_C_Boat_Transport_02_F"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["EF_B_CombatBoat_HMG_MJTF_Des", "EF_B_CombatBoat_AT_MJTF_Des"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["a3a_B_APC_Wheeled_01_cannon_F"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["B_Plane_CAS_01_dynamicLoadout_F"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["B_Plane_Fighter_01_F"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["B_T_VTOL_01_infantry_blue_F"]] call _fnc_saveToTemplate; + +private _vehiclesHelisLight = ["a3a_Heli_Light_01_ION_F"]; +private _HelisTransport = ["EF_B_Heli_Transport_01_MJTF_Des"]; +private _vehiclesHelisLightAttack = ["a3a_Heli_Light_01_dynamicLoadout_ION_F"]; //Black, not ION livery +private _vehiclesHelisAttack = ["EF_B_AH99J_MJTF_Des"]; + +["vehiclesArtillery", ["B_MBT_01_mlrs_F"]] call _fnc_saveToTemplate; //this line determines artillery vehicles -- Example: ["vehiclesArtillery", ["B_MBT_01_arty_F"]] -- Array, can contain multiple assets +//new magazines storing methode, all vehicle magazines should be defined here in format [Vehicle class, [magazines]], +["magazines", createHashMapFromArray [ + ["B_MBT_01_mlrs_F",["12Rnd_230mm_rockets"]] +]] call _fnc_saveToTemplate;//this line determines artillery magazines -- Example: ["magazines", createHashMapFromArray [["B_MBT_01_arty_F", ["32Rnd_155mm_Mo_shells"]]]] -- Array, can contain multiple assets + +["uavsAttack", ["B_UAV_02_dynamicLoadout_F", "B_UAV_05_F"]] call _fnc_saveToTemplate; +["uavsPortable", ["B_UAV_01_F"]] call _fnc_saveToTemplate; + +//Config special vehicles - militia vehicles are mostly used in the early game, police cars are being used by troops around cities -- Example: +private _vehiclesMilitiaLightArmed = ["B_LSV_01_AT_F","B_LSV_01_armed_F", "B_MRAP_01_hmg_F"]; +["vehiclesMilitiaTrucks", ["I_C_Van_01_transport_F"]] call _fnc_saveToTemplate; +private _vehiclesMilitiaCars = ["B_LSV_01_unarmed_F", "EF_B_MRAP_01_MJTF_Des"]; + +private _vehiclesPolice = ["B_GEN_Offroad_01_gen_F"]; + +["staticMGs", ["B_G_HMG_02_high_F"]] call _fnc_saveToTemplate; +["staticAT", ["B_static_AT_F"]] call _fnc_saveToTemplate; +["staticAA", ["B_static_AA_F"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + + +//If Western Sahara DLC +if ("ws" in A3A_enabledDLC) then { + _APCs append ["APC_Wheeled_01_atgm_base_lxWS", "a3a_APC_Wheeled_01_command_lxWS"]; + ["uavsPortable", ["B_UAV_01_F", "B_UAV_02_lxWS"]] call _fnc_saveToTemplate; +}; +if ("enoch" in A3A_enabledDLC) then { + _vehiclesPolice append ["B_GEN_Offroad_01_comms_F","B_GEN_Offroad_01_covered_F"]; +}; +if ("tanks" in A3A_enabledDLC) then { + ["vehiclesLightTanks", ["B_AFV_Wheeled_01_cannon_F","B_AFV_Wheeled_01_up_cannon_F"]] call _fnc_saveToTemplate; +}; +if ("heli" in A3A_enabledDLC) then { + _HelisTransport append ["B_Heli_Transport_03_black_F"]; +}; +if ("orange" in A3A_enabledDLC) then { + _vehiclesPolice append ["B_GEN_Van_02_vehicle_F","B_GEN_Van_02_transport_F"]; +}; +if ("rf" in A3A_enabledDLC) then { + _vehiclesPolice append ["a3a_police_Pickup_rf", "B_GEN_Pickup_covered_rf", "a3a_police_Pickup_comms_rf"]; + _vehiclesHelisLight = ["a3a_navy_Heli_light_03_unarmed_rf"]; + _HelisTransport append ["a3a_navy_Heli_EC_04_military_rf"]; + _vehiclesHelisLightAttack = ["a3a_navy_Heli_light_03_dynamicLoadout_rf","a3a_navy_Heli_EC_03_rf"]; + _vehiclesHelisAttack append ["a3a_navy_Heli_EC_02_rf"]; + _vehiclesMilitiaCars append ["B_Pickup_rf"]; + _vehiclesMilitiaLightArmed append ["B_Pickup_mmg_rf"]; +}; +["vehiclesPolice", _vehiclesPolice] call _fnc_saveToTemplate; + +["vehiclesLightUnarmed", _LightUnarmed] call _fnc_saveToTemplate; +["vehiclesLightArmed", _LightArmed] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; +["vehiclesTanks", _Tanks] call _fnc_saveToTemplate; + +["vehiclesHelisTransport", _HelisTransport] call _fnc_saveToTemplate; +["vehiclesHelisLight", _vehiclesHelisLight] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", _vehiclesHelisLightAttack] call _fnc_saveToTemplate; +["vehiclesHelisAttack", _vehiclesHelisAttack] call _fnc_saveToTemplate; + +["vehiclesMilitiaCars", _vehiclesMilitiaCars] call _fnc_saveToTemplate; +["vehiclesMilitiaLightArmed", _vehiclesMilitiaLightArmed] call _fnc_saveToTemplate; + +#include "..\Vanilla\Vanilla_Vehicle_Attributes.sqf" + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["Male01ENG","Male02ENG","Male03ENG","Male04ENG","Male05ENG","Male06ENG","Male07ENG","Male08ENG","Male09ENG","Male10ENG","Male11ENG","Male12ENG"]] call _fnc_saveToTemplate; +["faces", ["AfricanHead_01","AfricanHead_02","AfricanHead_03","Barklem", +"GreekHead_A3_05","GreekHead_A3_07","Sturrock","WhiteHead_01","WhiteHead_02", +"WhiteHead_03","WhiteHead_04","WhiteHead_05","WhiteHead_06","WhiteHead_07", +"WhiteHead_08","WhiteHead_09","WhiteHead_11","WhiteHead_12","WhiteHead_14", +"WhiteHead_15","WhiteHead_16","WhiteHead_18","WhiteHead_19","WhiteHead_20", +"WhiteHead_21"]] call _fnc_saveToTemplate; +"NATOMen" call _fnc_saveNames; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +_loadoutData set ["slRifles", []]; +_loadoutData set ["rifles", []]; +_loadoutData set ["carbines", []]; +_loadoutData set ["grenadeLaunchers", []]; +_loadoutData set ["SMGs", []]; +_loadoutData set ["machineGuns", []]; +_loadoutData set ["marksmanRifles", []]; +_loadoutData set ["sniperRifles", []]; + +_loadoutData set ["lightATLaunchers", ["launch_NLAW_F"]]; +_loadoutData set ["ATLaunchers", [ +["launch_MRAWS_sand_F", "", "acc_pointer_IR", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT_F", "MRAWS_HE_F"], [], ""] +]]; +_loadoutData set ["missileATLaunchers", [ +["launch_O_Titan_short_F", "", "acc_pointer_IR", "", ["Titan_AT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["EF_launch_B_Titan_Coy", "", "acc_pointer_IR", "", ["Titan_AA"], [], ""] +]]; +_loadoutData set ["sidearms", []]; + +_loadoutData set ["ATMines", ["ATMine_Range_Mag"]]; +_loadoutData set ["APMines", ["APERSMine_Range_Mag"]]; +_loadoutData set ["lightExplosives", ["DemoCharge_Remote_Mag"]]; +_loadoutData set ["heavyExplosives", ["SatchelCharge_Remote_Mag"]]; + +_loadoutData set ["antiInfantryGrenades", ["HandGrenade", "MiniGrenade"]]; +_loadoutData set ["antiTankGrenades", []]; +_loadoutData set ["smokeGrenades", ["SmokeShell"]]; +_loadoutData set ["signalsmokeGrenades", ["SmokeShellYellow", "SmokeShellRed", "SmokeShellPurple", "SmokeShellOrange", "SmokeShellGreen", "SmokeShellBlue"]]; + + +//Basic equipment. Shouldn't need touching most of the time. +//Mods might override this, or certain mods might want items removed (No GPSs in WW2, for example) +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; +_loadoutData set ["radios", ["ItemRadio"]]; +_loadoutData set ["gpses", ["ItemGPS"]]; +_loadoutData set ["NVGs", ["NVGoggles"]]; +_loadoutData set ["binoculars", ["Binocular"]]; +_loadoutData set ["rangefinders", ["Rangefinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", ["H_Beret_02"]]; +_loadoutData set ["sniHats", ["EF_H_Booniehat_Des"]]; + +//Item *set* definitions. These are added in their entirety to unit loadouts. No randomisation is applied. +_loadoutData set ["items_medical_basic", ["BASIC"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the basic medical loadout for vanilla +_loadoutData set ["items_medical_standard", ["STANDARD"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the standard medical loadout for vanilla +_loadoutData set ["items_medical_medic", ["MEDIC"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the medic medical loadout for vanilla +_loadoutData set ["items_miscEssentials", [] call A3A_fnc_itemset_miscEssentials]; + +//Unit type specific item sets. Add or remove these, depending on the unit types in use. +private _slItems = ["Laserbatteries", "Laserbatteries", "Laserbatteries"]; +private _eeItems = ["ToolKit", "MineDetector"]; +private _mmItems = []; + +if (A3A_hasACE) then { + _slItems append ["ACE_microDAGR", "ACE_DAGR"]; + _eeItems append ["ACE_Clacker", "ACE_DefusalKit"]; + _mmItems append ["ACE_RangeCard", "ACE_ATragMX", "ACE_Kestrel4500"]; +}; + +_loadoutData set ["items_squadLeader_extras", _slItems]; +_loadoutData set ["items_rifleman_extras", []]; +_loadoutData set ["items_medic_extras", []]; +_loadoutData set ["items_grenadier_extras", []]; +_loadoutData set ["items_explosivesExpert_extras", _eeItems]; +_loadoutData set ["items_engineer_extras", _eeItems]; +_loadoutData set ["items_lat_extras", []]; +_loadoutData set ["items_at_extras", []]; +_loadoutData set ["items_aa_extras", []]; +_loadoutData set ["items_machineGunner_extras", []]; +_loadoutData set ["items_marksman_extras", _mmItems]; +_loadoutData set ["items_sniper_extras", _mmItems]; +_loadoutData set ["items_police_extras", []]; +_loadoutData set ["items_crew_extras", []]; +_loadoutData set ["items_unarmed_extras", []]; + +//TODO - ACE overrides for misc essentials, medical and engineer gear + +/////////////////////////////////////// +// Special Forces Loadout Data // +/////////////////////////////////////// + +private _sfLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_sfLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Diver_Des"]];//this line determines uniforms for special forces -- Example: ["U_B_CombatUniform_mcam", "U_B_CombatUniform_mcam_tshirt"] -- Array, can contain multiple assets +_sfLoadoutData set ["vests", ["EF_V_AAV_Rifleman_Black", "EF_V_AAV_Scout_Black"]]; +_sfLoadoutData set ["glVests", ["EF_V_AAV_Support_Black"]]; +_sfLoadoutData set ["Hvests", ["EF_V_AAV_TL_Black"]]; +_sfLoadoutData set ["backpacks", ["EF_B_RaiderPack_black"]]; +_sfLoadoutData set ["helmets", ["EF_H_HelmetB_light_black_slick", "EF_H_MCH_BasicNet_Black", "EF_H_MCH_FullCamo_Black"]]; +_sfLoadoutData set ["binoculars", ["Laserdesignator"]]; +_sfLoadoutData set ["NVGs", ["EF_LPNVG_Tan", "EF_LPNVG"]]; + +_sfLoadoutData set ["slRifles", [ +["arifle_MX_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["ef_arifle_mxar_black", "ef_snds_mxar", "acc_pointer_IR", "ef_optic_mbs", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["arifle_MX_GL_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "optic_Holosight_blk_F", [], [], ""] +]]; +_sfLoadoutData set ["rifles", [ +["ef_arifle_mxar_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["arifle_MX_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["arifle_MXC_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["arifle_MX_GL_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["SMG_01_F", "muzzle_snds_acp", "", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_01_F", "muzzle_snds_acp", "", "ef_optic_microsight", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["arifle_MXM_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_SOS", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], "bipod_01_F_blk"], +["arifle_MXM_Black_F", "ef_snds_mxar", "acc_pointer_IR", "ef_optic_mbs", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], "bipod_01_F_blk"], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "optic_SOS", [], [], "bipod_01_F_blk"], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "ef_optic_mbs", [], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["srifle_GM6_F", "", "", "optic_SOS", ["5Rnd_127x108_Mag", "5Rnd_127x108_APDS_Mag"], [], ""], +["srifle_GM6_F", "", "", "optic_LRPS", ["5Rnd_127x108_Mag", "5Rnd_127x108_APDS_Mag"], [], ""], +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["ef_hgun_Pistol_heavy_01_coy", "muzzle_snds_acp", "acc_flashlight_pistol", "ef_optic_microsight_pistol_coy", [], [], ""], +["ef_hgun_P07_coy", "muzzle_snds_L", "", "", [], [], ""] +]]; +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Des_5", "EF_U_B_MarineCombatUniform_Des_4"]]; +_militaryLoadoutData set ["vests", ["EF_V_AAV_Rifleman_Coy", "EF_V_AAV_Scout_Coy"]]; +_militaryLoadoutData set ["Hvests", ["EF_V_AAV_TL_Coy"]]; +_militaryLoadoutData set ["glVests", ["EF_V_AAV_Support_Coy"]]; +_militaryLoadoutData set ["backpacks", ["EF_B_Carryall_coy", "EF_B_Kitbag_coy", "EF_B_Kitbag_coy", "EF_B_RaiderPack_coy", "EF_B_RaiderPack_coy"]]; +_militaryLoadoutData set ["helmets", ["EF_H_MCH_Basic", "EF_H_MCH_BasicNet_Coy", "EF_H_MCH_BasicNet_Des", "EF_H_MCH_Full", "EF_H_MCH_FullCamo_Coy", "EF_H_MCH_FullCamo_Des"]]; +_militaryLoadoutData set ["binoculars", ["Laserdesignator"]]; + +_militaryLoadoutData set ["slRifles", [ +["ef_arifle_mx_coy", "", "EF_acc_pointer_IR_coy", "optic_MRCO", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxar_coy", "", "EF_acc_pointer_IR_coy", "optic_Hamr", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mx_gl_coy", "", "acc_pointer_IR", "optic_MRCO", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_coy", "", "acc_pointer_IR", "optic_Hamr", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["srifle_EBR_F", "", "acc_pointer_IR", "optic_Holosight_blk_F", [], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["ef_arifle_mxar_coy", "", "acc_pointer_IR", "optic_MRCO", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxar_coy", "", "acc_pointer_IR", "optic_Hamr", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxar_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["ef_arifle_mx_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mx_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxc_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxc_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxc_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["ef_arifle_mx_gl_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mx_gl_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_coy", "", "acc_pointer_IR", "optic_MRCO", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_coy", "", "acc_pointer_IR", "optic_Hamr", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["SMG_01_F", "", "", "ef_optic_microsight_coy", [], [], ""], +["SMG_01_F", "", "", "ef_optic_Holosight_smg_coy", [], [], ""], +["SMG_02_F", "", "acc_pointer_IR", "ef_optic_microsight", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["ef_arifle_mx_sw_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_100Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], "bipod_01_F_snd"], +["ef_arifle_mx_sw_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_100Rnd_65x39_caseless_coy_mag_Tracer", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], "bipod_01_F_snd"], +["LMG_Mk200_F", "", "acc_pointer_IR", "optic_MRCO", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_snd"], +["LMG_Mk200_F", "", "acc_pointer_IR", "optic_Holosight_blk_F", ["200Rnd_65x39_cased_Box_Tracer_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red"], [], "bipod_01_F_snd"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["ef_arifle_mxm_coy", "", "acc_pointer_IR", "optic_SOS", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], "bipod_01_F_snd"], +["ef_arifle_mxm_coy", "", "acc_pointer_IR", "ef_optic_mbs_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], "bipod_01_F_snd"], +["srifle_EBR_F", "", "acc_pointer_IR", "optic_SOS", [], [], "bipod_01_F_snd"], +["srifle_EBR_F", "", "acc_pointer_IR", "ef_optic_mbs", [], [], "bipod_01_F_snd"] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["ef_hgun_Pistol_heavy_01_coy", "", "acc_flashlight_pistol", "", [], [], ""], +["ef_hgun_P07_coy", "", "", "", [], [], ""], +["ef_hgun_P07_coy", "", "", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_policeLoadoutData set ["uniforms", ["U_B_GEN_Soldier_F", "U_B_GEN_Commander_F"]]; +_policeLoadoutData set ["vests", ["V_TacVest_blk_POLICE"]]; +_policeLoadoutData set ["helmets", ["H_Cap_police"]]; +_policeLoadoutData set ["SMGs", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "ef_optic_microsight_coy", [], [], ""], +["SMG_01_F", "", "acc_flashlight_smg_01", "ef_optic_Holosight_smg_coy", [], [], ""], +["SMG_03C_TR_black", "", "acc_flashlight", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_03C_TR_black", "", "acc_flashlight", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "ef_optic_microsight", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "ef_optic_microsight", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["hgun_P07_blk_F"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Des_1", "EF_U_B_MarineCombatUniform_Des_2", "EF_U_B_MarineCombatUniform_Des_3", "EF_U_B_MarineCombatUniform_Des_6"]]; +_militiaLoadoutData set ["vests", ["EF_V_CCR_Rifleman_Coy", "EF_V_CCR_Scout_Coy"]]; +_militiaLoadoutData set ["Hvests", ["EF_V_CCR_TL_Coy"]]; +_militiaLoadoutData set ["glVests", ["EF_V_CCR_Support_Coy"]]; +_militiaLoadoutData set ["backpacks", ["EF_B_RaiderPack_coy"]]; +_militiaLoadoutData set ["helmets", ["EF_H_HelmetB_light_sand_slick", "EF_H_UtilityCap_Des", "H_Bandanna_sand"]]; + +_militiaLoadoutData set ["ATLaunchers", [ +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HEAT55_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HEAT55_F", "MRAWS_HE_F"], [], ""] +]]; +_militiaLoadoutData set ["missileATLaunchers", [ +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HEAT55_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_sand_rail_F", "", "", "", ["MRAWS_HEAT55_F", "MRAWS_HE_F"], [], ""] +]]; + +_militiaLoadoutData set ["rifles", [ +["arifle_SPAR_01_snd_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_Tracer_Red"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["arifle_SPAR_01_snd_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_Tracer_Red"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["arifle_SPAR_01_GL_snd_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_Tracer_Red"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["arifle_SPAR_02_snd_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_Tracer_Red"], [], ""], +["arifle_SPAR_02_snd_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Sand_Tracer_Red", "30Rnd_556x45_Stanag_Sand_red", "30Rnd_556x45_Stanag_Sand_red"], [], ""], +["LMG_03_F", "", "acc_flashlight", "", ["200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Tracer_Red_F"], [], ""], +["LMG_03_F", "", "acc_flashlight", "", ["200Rnd_556x45_Box_Tracer_Red_F", "200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Red_F"], [], ""] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["arifle_SPAR_03_snd_F", "", "acc_flashlight", "optic_Hamr", [], [], ""], +["arifle_SPAR_03_snd_F", "", "acc_flashlight", "optic_MRCO", [], [], ""] +]]; +_militiaLoadoutData set ["sniperRifles", [ +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["ef_hgun_P07_coy"]]; + +////////////////////////// +// Misc Loadouts // +////////////////////////// + + +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Des_5"]]; +_crewLoadoutData set ["vests", ["EF_V_AAV_Coy"]]; +_crewLoadoutData set ["helmets", ["EF_H_HelmetCrew_Coy"]]; + + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["U_B_HeliPilotCoveralls"]]; +_pilotLoadoutData set ["vests", ["EF_V_AAV_Olive"]]; +_pilotLoadoutData set ["helmets", ["H_CrewHelmetHeli_B", "H_PilotHelmetHeli_B"]]; +_pilotLoadoutData set ["facewear", ["G_Aviator","G_Squares_Tinted","G_Tactical_Black"]]; + +private _officerLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_officerLoadoutData set ["uniforms", ["U_B_ParadeUniform_01_US_F", "U_B_ParadeUniform_01_US_decorated_F"]]; +_officerLoadoutData set ["vests", ["V_TacVest_oli", "V_LegStrapBag_coyote_F"]]; +_officerLoadoutData set ["helmets", ["H_ParadeDressCap_01_US_F", "H_Beret_Colonel"]]; +_officerLoadoutData set ["backpacks", []]; +_officerLoadoutData set ["SMGs", [ +["ef_arifle_mxc_coy", "", "acc_pointer_IR", "ef_optic_Holosight_coy", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""], +["ef_arifle_mxc_coy", "", "acc_pointer_IR", "optic_Aco", ["EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag", "EF_30Rnd_65x39_caseless_coy_mag_Tracer"], [], ""] +]]; + +if ("mark" in A3A_enabledDLC) then { + (_sfLoadoutData get "machineGuns") append [ + ["MMG_02_camo_F", "muzzle_snds_338_sand", "acc_pointer_IR", "optic_Hamr", [], [], "bipod_01_F_snd"], + ["MMG_02_camo_F", "muzzle_snds_338_sand", "acc_pointer_IR", "optic_Holosight", [], [], "bipod_01_F_snd"]]; + (_sfLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_03_tan_F", "muzzle_snds_B_snd_F", "acc_pointer_IR", "optic_AMS_snd", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "muzzle_snds_B_arid_F", "acc_pointer_IR", "optic_DMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"]]; + + (_sfLoadoutData get "sniperRifles") append [ + ["srifle_DMR_02_sniper_F", "muzzle_snds_338_sand", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_snd"], + ["srifle_DMR_02_sniper_F", "muzzle_snds_338_sand", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_snd"]]; + + (_militaryLoadoutData get "machineGuns") append [ + ["MMG_02_sand_F", "", "acc_pointer_IR", "optic_Hamr", [], [], "bipod_01_F_snd"], + ["MMG_02_sand_F", "", "acc_pointer_IR", "optic_Holosight", [], [], "bipod_01_F_snd"] + ]; + (_militaryLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_AMS_snd", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_AMS_snd", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_DMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_DMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_SOS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"], + ["srifle_DMR_03_tan_F", "", "acc_pointer_IR", "optic_SOS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_snd"] + ]; + (_militaryLoadoutData get "sniperRifles") append [ + ["srifle_DMR_02_sniper_F", "", "acc_pointer_IR", "optic_KHS_blk", [], [], "bipod_01_F_snd"], + ["srifle_DMR_02_sniper_F", "", "acc_pointer_IR", "optic_KHS_blk", [], [], "bipod_01_F_snd"]]; + + (_militiaLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_06_olive_F", "", "", "optic_KHS_blk", [], [], "bipod_01_F_blk"], + ["srifle_DMR_06_hunter_F", "", "", "optic_KHS_old", ["20Rnd_762x51_Mag", "10Rnd_Mk14_762x51_Mag", "10Rnd_Mk14_762x51_Mag"], [], "bipod_01_F_blk"]]; +}; + +if ("rf" in A3A_enabledDLC) then { + (_sfLoadoutData get "sidearms") append [ + ["hgun_Glock19_Tan_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_tan_RF", [], [], ""], + ["hgun_Glock19_Tan_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_tan_RF", [], [], ""], + ["hgun_Glock19_auto_Tan_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_tan_RF", [], [], ""], + ["hgun_Glock19_auto_Tan_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_tan_RF", [], [], ""], + ["hgun_Glock19_auto_Tan_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_tan_RF", [], [], ""] + ]; + (_militaryLoadoutData get "sidearms") append [ + ["hgun_Glock19_Tan_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_Tan_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_Tan_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_Tan_RF", "", "acc_flashlight_pistol", "optic_MRD_tan_RF", [], [], ""], + ["hgun_Glock19_auto_Tan_RF", "", "acc_flashlight_pistol", "", [], [], ""] + ]; + (_policeLoadoutData get "sidearms") append ["hgun_Glock19_RF"]; + (_pilotLoadoutData get "uniforms") append ["U_B_HeliPilotCoveralls_MTP_RF"]; + (_sfLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "muzzle_snds_acp", "", "optic_Holosight", [], [], ""] + ]; + (_militaryLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "", "optic_Holosight", [], [], ""], + ["SMG_01_black_RF", "", "", "optic_Aco_smg", [], [], ""] + ]; + (_militiaLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "", [], [], ""] + ]; + (_policeLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "optic_Holosight", [], [], ""], + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "optic_Aco_smg", [], [], ""] + ]; + (_sfLoadoutData get "helmets") append [ + "H_HelmetB_plain_sb_khaki_RF", + "H_HelmetHeavy_Sand_RF", + "H_HelmetHeavy_Simple_Sand_RF", + "H_HelmetHeavy_VisorUp_Sand_RF"]; + (_militaryLoadoutData get "helmets") append ["H_HelmetB_plain_sb_khaki_RF"]; +}; + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["slHat"] call _fnc_setHelmet; + [["Hvests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["backpacks"] call _fnc_setBackpack; + + [["slRifles", "rifles"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 4] call _fnc_addAdditionalMuzzleMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_squadLeader_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 2] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + ["signalsmokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["gpses"] call _fnc_addGPS; + ["binoculars"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _riflemanTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_rifleman_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 2] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _medicTemplate = { + ["helmets"] call _fnc_setHelmet; + [["Hvests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_medic"] call _fnc_addItemSet; + ["items_medic_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _grenadierTemplate = { + ["helmets"] call _fnc_setHelmet; + [["glVests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["grenadeLaunchers"] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 10] call _fnc_addAdditionalMuzzleMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_grenadier_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 4] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _explosivesExpertTemplate = { + ["helmets"] call _fnc_setHelmet; + [["glVests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_explosivesExpert_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["lightExplosives", 2] call _fnc_addItem; + if (random 1 > 0.5) then {["heavyExplosives", 1] call _fnc_addItem;}; + if (random 1 > 0.5) then {["atMines", 1] call _fnc_addItem;}; + if (random 1 > 0.5) then {["apMines", 1] call _fnc_addItem;}; + + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _engineerTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_engineer_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + if (random 1 > 0.5) then {["lightExplosives", 1] call _fnc_addItem;}; + + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _latTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + [["lightATLaunchers", "ATLaunchers"] call _fnc_fallback] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_lat_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _atTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + [selectRandom ["ATLaunchers", "missileATLaunchers"]] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_at_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _aaTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["AALaunchers"] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_aa_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _machineGunnerTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["machineGuns"] call _fnc_setPrimary; + ["primary", 4] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_machineGunner_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _marksmanTemplate= { + ["sniHats"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["marksmanRifles"] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_marksman_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["rangefinders"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _sniperTemplate = { + ["sniHats"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["sniperRifles"] call _fnc_setPrimary; + ["primary", 7] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_sniper_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["rangefinders"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _policeTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["SMGs"] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_police_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; +}; + +private _crewTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_basic"] call _fnc_addItemSet; + ["items_crew_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["gpses"] call _fnc_addGPS; + ["NVGs"] call _fnc_addNVGs; +}; + +private _unarmedTemplate = { + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["items_medical_basic"] call _fnc_addItemSet; + ["items_unarmed_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; +}; + +private _traitorTemplate = { + call _unarmedTemplate; + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; +}; + +//////////////////////////////////////////////////////////////////////////////////////// +// You shouldn't touch below this line unless you really really know what you're doing. +// Things below here can and will break the gamemode if improperly changed. +//////////////////////////////////////////////////////////////////////////////////////// + +///////////////////////////// +// Special Forces Units // +///////////////////////////// +private _prefix = "SF"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _sfLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/*{ + params ["_name", "_loadoutTemplate"]; + private _loadouts = [_sfLoadoutData, _loadoutTemplate] call _fnc_buildLoadouts; + private _finalName = _prefix + _name; + [_finalName, _loadouts] call _fnc_saveToTemplate; +} forEach _unitTypes; +*/ + +/////////////////////// +// Military Units // +/////////////////////// +private _prefix = "military"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate], + ["Standard", _policeTemplate] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _policeTemplate]], _officerLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; diff --git a/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Temperate.sqf b/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Temperate.sqf new file mode 100644 index 0000000000..f370ba52dc --- /dev/null +++ b/A3A/addons/core/Templates/Templates/EF/EF_AI_MJTF_Temperate.sqf @@ -0,0 +1,1023 @@ +////////////////////////// +// Side Information // +////////////////////////// + +["name", "MJTF"] call _fnc_saveToTemplate; +["spawnMarkerName", "MJTF support corridor"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", "\ef\ef_data\data\Flag_29thMEU_CO.paa"] call _fnc_saveToTemplate; +["flagMarkerType", "EF_flag_29thMEU"] call _fnc_saveToTemplate; + +////////////////////////// +// Vehicles // +////////////////////////// + +["ammobox", "B_supplyCrate_F"] call _fnc_saveToTemplate; //Don't touch or you die a sad and lonely death! +["surrenderCrate", "Box_IND_Wps_F"] call _fnc_saveToTemplate; //Changeing this from default will require you to define logistics attachement offset for the box type +["equipmentBox", "Box_NATO_Equip_F"] call _fnc_saveToTemplate; //Changeing this from default will require you to define logistics attachement offset for the box type + +["vehiclesBasic", ["B_T_Quadbike_01_F"]] call _fnc_saveToTemplate; +private _LightUnarmed = ["B_T_MRAP_01_F"]; +private _LightArmed = ["B_T_MRAP_01_hmg_F", "EF_B_MRAP_01_AT_MJTF_Des", "EF_B_MRAP_01_FSV_MJTF_Des","EF_B_MRAP_01_LAAD_MJTF_Wdl"]; +["vehiclesTrucks", ["B_Truck_01_covered_F", "B_Truck_01_transport_F"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["B_T_Truck_01_cargo_F", "B_T_Truck_01_flatbed_F"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["B_T_Truck_01_ammo_F"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["B_T_Truck_01_Repair_F"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["B_T_Truck_01_fuel_F"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["B_T_Truck_01_medical_F"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["EF_B_AAV9_MJTF_Wdl", "EF_B_AAV9_MJTF_Wdl"]; +["vehiclesIFVs", ["EF_B_AAV9_50mm_MJTF_Wdl"]] call _fnc_saveToTemplate; +private _Tanks = ["B_T_MBT_01_TUSK_F"]; +["vehiclesAA", ["EF_B_MRAP_01_LAAD_MJTF_Wdl", "B_T_APC_Tracked_01_AA_F"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["B_Boat_Transport_01_F", "I_C_Boat_Transport_02_F"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["EF_B_CombatBoat_HMG_MJTF_Wdl", "EF_B_CombatBoat_AT_MJTF_Wdl"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", []] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["B_Plane_CAS_01_dynamicLoadout_F"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["B_Plane_Fighter_01_F"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["B_T_VTOL_01_infantry_F"]] call _fnc_saveToTemplate; + +private _vehiclesHelisLight = ["a3a_Heli_Light_01_ION_F"]; +private _HelisTransport = ["EF_B_Heli_Transport_01_MJTF_Des"]; +private _vehiclesHelisLightAttack = ["a3a_Heli_Light_01_dynamicLoadout_ION_F"]; //Black, not ION livery +private _vehiclesHelisAttack = ["EF_B_AH99J_MJTF_Des"]; + +["vehiclesArtillery", ["B_T_MBT_01_mlrs_F"]] call _fnc_saveToTemplate; //this line determines artillery vehicles -- Example: ["vehiclesArtillery", ["B_MBT_01_arty_F"]] -- Array, can contain multiple assets +//new magazines storing methode, all vehicle magazines should be defined here in format [Vehicle class, [magazines]], +["magazines", createHashMapFromArray [ + ["B_T_MBT_01_mlrs_F",["12Rnd_230mm_rockets"]] +]] call _fnc_saveToTemplate;//this line determines artillery magazines -- Example: ["magazines", createHashMapFromArray [["B_MBT_01_arty_F", ["32Rnd_155mm_Mo_shells"]]]] -- Array, can contain multiple assets + +["uavsAttack", ["B_UAV_02_dynamicLoadout_F", "B_UAV_05_F"]] call _fnc_saveToTemplate; +["uavsPortable", ["B_UAV_01_F"]] call _fnc_saveToTemplate; + +//Config special vehicles - militia vehicles are mostly used in the early game, police cars are being used by troops around cities -- Example: +private _vehiclesMilitiaLightArmed = ["B_T_LSV_01_AT_F","B_T_LSV_01_armed_F", "B_T_MRAP_01_hmg_F"]; +["vehiclesMilitiaTrucks", ["I_C_Van_01_transport_F"]] call _fnc_saveToTemplate; +private _vehiclesMilitiaCars = ["B_T_LSV_01_unarmed_F", "EF_B_MRAP_01_MJTF_Wdl"]; + +private _vehiclesPolice = ["B_GEN_Offroad_01_gen_F"]; + +["staticMGs", ["B_G_HMG_02_high_F"]] call _fnc_saveToTemplate; +["staticAT", ["B_static_AT_F"]] call _fnc_saveToTemplate; +["staticAA", ["B_static_AA_F"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + + +//If Western Sahara DLC +if ("ws" in A3A_enabledDLC) then { + _APCs append ["B_T_APC_Wheeled_01_atgm_lxWS", "a3a_T_APC_Wheeled_01_command_lxWS"]; + ["uavsPortable", ["B_UAV_01_F", "B_UAV_02_lxWS"]] call _fnc_saveToTemplate; +}; +if ("enoch" in A3A_enabledDLC) then { + _vehiclesPolice append ["B_GEN_Offroad_01_comms_F","B_GEN_Offroad_01_covered_F"]; +}; +if ("tanks" in A3A_enabledDLC) then { + ["vehiclesLightTanks", ["B_T_AFV_Wheeled_01_cannon_F","B_T_AFV_Wheeled_01_up_cannon_F"]] call _fnc_saveToTemplate; +}; +if ("heli" in A3A_enabledDLC) then { + _HelisTransport append ["B_Heli_Transport_03_F"]; +}; +if ("orange" in A3A_enabledDLC) then { + _vehiclesPolice append ["B_GEN_Van_02_vehicle_F","B_GEN_Van_02_transport_F"]; +}; +if ("rf" in A3A_enabledDLC) then { + _vehiclesPolice append ["a3a_police_Pickup_rf", "B_GEN_Pickup_covered_rf", "a3a_police_Pickup_comms_rf"]; + _vehiclesHelisLight = ["a3a_navy_Heli_light_03_unarmed_rf"]; + _HelisTransport append ["a3a_navy_Heli_EC_04_military_rf"]; + _vehiclesHelisLightAttack = ["a3a_navy_Heli_light_03_dynamicLoadout_rf","a3a_navy_Heli_EC_03_rf"]; + _vehiclesHelisAttack append ["a3a_navy_Heli_EC_02_rf"]; + _vehiclesMilitiaCars append ["B_T_Pickup_rf"]; + _vehiclesMilitiaLightArmed append ["B_T_Pickup_mmg_rf"]; +}; +["vehiclesPolice", _vehiclesPolice] call _fnc_saveToTemplate; + +["vehiclesLightUnarmed", _LightUnarmed] call _fnc_saveToTemplate; +["vehiclesLightArmed", _LightArmed] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; +["vehiclesTanks", _Tanks] call _fnc_saveToTemplate; + +["vehiclesHelisLight", _vehiclesHelisLight] call _fnc_saveToTemplate; +["vehiclesHelisTransport", _HelisTransport] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", _vehiclesHelisLightAttack] call _fnc_saveToTemplate; +["vehiclesHelisAttack", _vehiclesHelisAttack] call _fnc_saveToTemplate; + +["vehiclesMilitiaCars", _vehiclesMilitiaCars] call _fnc_saveToTemplate; +["vehiclesMilitiaLightArmed", _vehiclesMilitiaLightArmed] call _fnc_saveToTemplate; + +#include "..\Vanilla\Vanilla_Vehicle_Attributes.sqf" + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["Male01ENG","Male02ENG","Male03ENG","Male04ENG","Male05ENG","Male06ENG","Male07ENG","Male08ENG","Male09ENG","Male10ENG","Male11ENG","Male12ENG"]] call _fnc_saveToTemplate; +["faces", ["AfricanHead_01","AfricanHead_02","AfricanHead_03","Barklem", +"GreekHead_A3_05","GreekHead_A3_07","Sturrock","WhiteHead_01","WhiteHead_02", +"WhiteHead_03","WhiteHead_04","WhiteHead_05","WhiteHead_06","WhiteHead_07", +"WhiteHead_08","WhiteHead_09","WhiteHead_11","WhiteHead_12","WhiteHead_14", +"WhiteHead_15","WhiteHead_16","WhiteHead_18","WhiteHead_19","WhiteHead_20", +"WhiteHead_21"]] call _fnc_saveToTemplate; +"NATOMen" call _fnc_saveNames; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +_loadoutData set ["slRifles", []]; +_loadoutData set ["rifles", []]; +_loadoutData set ["carbines", []]; +_loadoutData set ["grenadeLaunchers", []]; +_loadoutData set ["SMGs", []]; +_loadoutData set ["machineGuns", []]; +_loadoutData set ["marksmanRifles", []]; +_loadoutData set ["sniperRifles", []]; + +_loadoutData set ["lightATLaunchers", ["launch_NLAW_F"]]; +_loadoutData set ["ATLaunchers", [ +["launch_MRAWS_olive_F", "", "acc_pointer_IR", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT_F", "MRAWS_HE_F"], [], ""] +]]; +_loadoutData set ["missileATLaunchers", [ +["launch_I_Titan_short_F", "", "acc_pointer_IR", "", ["Titan_AT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["launch_B_Titan_tna_F", "", "acc_pointer_IR", "", ["Titan_AA"], [], ""] +]]; +_loadoutData set ["sidearms", []]; + +_loadoutData set ["ATMines", ["ATMine_Range_Mag"]]; +_loadoutData set ["APMines", ["APERSMine_Range_Mag"]]; +_loadoutData set ["lightExplosives", ["DemoCharge_Remote_Mag"]]; +_loadoutData set ["heavyExplosives", ["SatchelCharge_Remote_Mag"]]; + +_loadoutData set ["antiInfantryGrenades", ["HandGrenade", "MiniGrenade"]]; +_loadoutData set ["antiTankGrenades", []]; +_loadoutData set ["smokeGrenades", ["SmokeShell"]]; +_loadoutData set ["signalsmokeGrenades", ["SmokeShellYellow", "SmokeShellRed", "SmokeShellPurple", "SmokeShellOrange", "SmokeShellGreen", "SmokeShellBlue"]]; + + +//Basic equipment. Shouldn't need touching most of the time. +//Mods might override this, or certain mods might want items removed (No GPSs in WW2, for example) +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; +_loadoutData set ["radios", ["ItemRadio"]]; +_loadoutData set ["gpses", ["ItemGPS"]]; +_loadoutData set ["NVGs", ["NVGoggles"]]; +_loadoutData set ["binoculars", ["Binocular"]]; +_loadoutData set ["rangefinders", ["Rangefinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", ["H_Beret_02"]]; +_loadoutData set ["sniHats", ["EF_H_Booniehat_Wdl"]]; + +//Item *set* definitions. These are added in their entirety to unit loadouts. No randomisation is applied. +_loadoutData set ["items_medical_basic", ["BASIC"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the basic medical loadout for vanilla +_loadoutData set ["items_medical_standard", ["STANDARD"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the standard medical loadout for vanilla +_loadoutData set ["items_medical_medic", ["MEDIC"] call A3A_fnc_itemset_medicalSupplies]; //this line defines the medic medical loadout for vanilla +_loadoutData set ["items_miscEssentials", [] call A3A_fnc_itemset_miscEssentials]; + +//Unit type specific item sets. Add or remove these, depending on the unit types in use. +private _slItems = ["Laserbatteries", "Laserbatteries", "Laserbatteries"]; +private _eeItems = ["ToolKit", "MineDetector"]; +private _mmItems = []; + +if (A3A_hasACE) then { + _slItems append ["ACE_microDAGR", "ACE_DAGR"]; + _eeItems append ["ACE_Clacker", "ACE_DefusalKit"]; + _mmItems append ["ACE_RangeCard", "ACE_ATragMX", "ACE_Kestrel4500"]; +}; + +_loadoutData set ["items_squadLeader_extras", _slItems]; +_loadoutData set ["items_rifleman_extras", []]; +_loadoutData set ["items_medic_extras", []]; +_loadoutData set ["items_grenadier_extras", []]; +_loadoutData set ["items_explosivesExpert_extras", _eeItems]; +_loadoutData set ["items_engineer_extras", _eeItems]; +_loadoutData set ["items_lat_extras", []]; +_loadoutData set ["items_at_extras", []]; +_loadoutData set ["items_aa_extras", []]; +_loadoutData set ["items_machineGunner_extras", []]; +_loadoutData set ["items_marksman_extras", _mmItems]; +_loadoutData set ["items_sniper_extras", _mmItems]; +_loadoutData set ["items_police_extras", []]; +_loadoutData set ["items_crew_extras", []]; +_loadoutData set ["items_unarmed_extras", []]; + +//TODO - ACE overrides for misc essentials, medical and engineer gear + +/////////////////////////////////////// +// Special Forces Loadout Data // +/////////////////////////////////////// + +private _sfLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_sfLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Diver_Wdl"]];//this line determines uniforms for special forces -- Example: ["U_B_CombatUniform_mcam", "U_B_CombatUniform_mcam_tshirt"] -- Array, can contain multiple assets +_sfLoadoutData set ["vests", ["EF_V_AAV_Rifleman_Black", "EF_V_AAV_Scout_Black"]]; +_sfLoadoutData set ["glVests", ["EF_V_AAV_Support_Black"]]; +_sfLoadoutData set ["Hvests", ["EF_V_AAV_TL_Black"]]; +_sfLoadoutData set ["backpacks", ["EF_B_RaiderPack_black"]]; +_sfLoadoutData set ["helmets", ["EF_H_HelmetB_light_black_slick", "EF_H_MCH_BasicNet_Black", "EF_H_MCH_FullCamo_Black"]]; +_sfLoadoutData set ["binoculars", ["Laserdesignator"]]; +_sfLoadoutData set ["NVGs", ["EF_LPNVG_Tan", "EF_LPNVG"]]; + +_sfLoadoutData set ["slRifles", [ +["arifle_MX_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["ef_arifle_mxar_black", "ef_snds_mxar", "acc_pointer_IR", "ef_optic_mbs", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["arifle_MX_GL_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "optic_Holosight_blk_F", [], [], ""] +]]; +_sfLoadoutData set ["rifles", [ +["ef_arifle_mxar_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["arifle_MX_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""], +["arifle_MXC_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["arifle_MX_GL_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_black", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["SMG_01_F", "muzzle_snds_acp", "", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_01_F", "muzzle_snds_acp", "", "ef_optic_microsight", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["arifle_MX_SW_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag", "100Rnd_65x39_caseless_black_mag_tracer"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_MRCO", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Holosight_blk_F", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"], +["LMG_Mk200_black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_Hamr", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["arifle_MXM_Black_F", "ef_snds_mxar", "acc_pointer_IR", "optic_SOS", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], "bipod_01_F_blk"], +["arifle_MXM_Black_F", "ef_snds_mxar", "acc_pointer_IR", "ef_optic_mbs", ["30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag", "30Rnd_65x39_caseless_black_mag_Tracer"], [], "bipod_01_F_blk"], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "optic_SOS", [], [], "bipod_01_F_blk"], +["srifle_EBR_F", "muzzle_snds_B", "acc_pointer_IR", "ef_optic_mbs", [], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["srifle_GM6_F", "", "", "optic_SOS", ["5Rnd_127x108_Mag", "5Rnd_127x108_APDS_Mag"], [], ""], +["srifle_GM6_F", "", "", "optic_LRPS", ["5Rnd_127x108_Mag", "5Rnd_127x108_APDS_Mag"], [], ""], +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["ef_hgun_Pistol_heavy_01_coy", "muzzle_snds_acp", "acc_flashlight_pistol", "ef_optic_microsight_pistol_coy", [], [], ""], +["hgun_P07_khk_F", "muzzle_snds_L", "", "", [], [], ""] +]]; +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Wdl_5", "EF_U_B_MarineCombatUniform_Wdl_4"]]; +_militaryLoadoutData set ["vests", ["EF_V_AAV_Rifleman_Olive", "EF_V_AAV_Scout_Olive"]]; +_militaryLoadoutData set ["Hvests", ["EF_V_AAV_TL_Olive"]]; +_militaryLoadoutData set ["glVests", ["EF_V_AAV_Support_Olive"]]; +_militaryLoadoutData set ["backpacks", ["B_Carryall_oli", "B_Kitbag_sgg", "B_Kitbag_sgg", "EF_B_RaiderPack_olive", "EF_B_RaiderPack_olive"]]; +_militaryLoadoutData set ["helmets", ["EF_H_MCH_BasicNet_Olive", "EF_H_MCH_BasicNet_Wdl", "EF_H_MCH_FullCamo_Olive", "EF_H_MCH_FullCamo_Wdl"]]; +_militaryLoadoutData set ["binoculars", ["Laserdesignator"]]; + +_militaryLoadoutData set ["slRifles", [ +["arifle_MX_khk_F", "", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["ef_arifle_mxar_khk", "", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MX_GL_khk_F", "", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_khk", "", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["srifle_EBR_F", "", "acc_pointer_IR", "optic_Holosight_blk_F", [], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["ef_arifle_mxar_khk", "", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["ef_arifle_mxar_khk", "", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["ef_arifle_mxar_khk", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["arifle_MX_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MX_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MXC_khk_F", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MXC_khk_F", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MXC_khk_F", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["arifle_MX_GL_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["arifle_MX_GL_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_khk", "", "acc_pointer_IR", "optic_MRCO", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_khk", "", "acc_pointer_IR", "optic_Hamr", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""], +["ef_arifle_mxar_gl_khk", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["SMG_01_F", "", "", "ef_optic_microsight_coy", [], [], ""], +["SMG_01_F", "", "", "ef_optic_Holosight_smg_coy", [], [], ""], +["SMG_02_F", "", "acc_pointer_IR", "ef_optic_microsight", [], [], ""], +["SMG_02_F", "", "acc_pointer_IR", "ef_optic_microsight", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["arifle_MX_SW_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["EF_100Rnd_65x39_caseless_coy_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], "bipod_01_F_snd"], +["arifle_MX_SW_khk_F", "", "acc_pointer_IR", "optic_Aco", ["EF_100Rnd_65x39_caseless_coy_mag_Tracer", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], "bipod_01_F_snd"], +["LMG_Mk200_black_F", "", "acc_pointer_IR", "optic_MRCO", ["200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Tracer_Red"], [], "bipod_01_F_snd"], +["LMG_Mk200_black_F", "", "acc_pointer_IR", "optic_Holosight_blk_F", ["200Rnd_65x39_cased_Box_Tracer_Red", "200Rnd_65x39_cased_Box_Red", "200Rnd_65x39_cased_Box_Red"], [], "bipod_01_F_snd"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["arifle_MXM_khk_F", "", "acc_pointer_IR", "optic_SOS", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], "bipod_01_F_snd"], +["arifle_MXM_khk_F", "", "acc_pointer_IR", "ef_optic_mbs_khk", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], "bipod_01_F_snd"], +["srifle_EBR_F", "", "acc_pointer_IR", "optic_SOS", [], [], "bipod_01_F_snd"], +["srifle_EBR_F", "", "acc_pointer_IR", "ef_optic_mbs", [], [], "bipod_01_F_snd"] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["ef_hgun_Pistol_heavy_01_coy", "", "acc_flashlight_pistol", "", [], [], ""], +["hgun_P07_khk_F", "", "", "", [], [], ""], +["hgun_P07_khk_F", "", "", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_policeLoadoutData set ["uniforms", ["U_B_GEN_Soldier_F", "U_B_GEN_Commander_F"]]; +_policeLoadoutData set ["vests", ["V_TacVest_blk_POLICE"]]; +_policeLoadoutData set ["helmets", ["H_Cap_police"]]; +_policeLoadoutData set ["SMGs", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "ef_optic_microsight", [], [], ""], +["SMG_01_F", "", "acc_flashlight_smg_01", "ef_optic_Holosight_smg_coy", [], [], ""], +["SMG_03C_TR_black", "", "acc_flashlight", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_03C_TR_black", "", "acc_flashlight", "optic_Holosight_smg_blk_F", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "ef_optic_microsight", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "ef_optic_microsight", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["hgun_P07_blk_F"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Wdl_1", "EF_U_B_MarineCombatUniform_Wdl_2", "EF_U_B_MarineCombatUniform_Wdl_3","EF_U_B_MarineCombatUniform_Wdl_6"]]; +_militiaLoadoutData set ["vests", ["EF_V_CCR_Rifleman_Olive", "EF_V_CCR_Scout_Olive"]]; +_militiaLoadoutData set ["Hvests", ["EF_V_CCR_TL_Olive"]]; +_militiaLoadoutData set ["glVests", ["EF_V_CCR_Support_Olive"]]; +_militiaLoadoutData set ["backpacks", ["EF_B_RaiderPack_olive"]]; +_militiaLoadoutData set ["helmets", ["EF_H_HelmetB_light_wdl_slick", "EF_H_UtilityCap_Wdl", "H_Bandanna_sgg"]]; + +_militiaLoadoutData set ["ATLaunchers", [ +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT55_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT55_F", "MRAWS_HE_F"], [], ""] +]]; +_militiaLoadoutData set ["missileATLaunchers", [ +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HE_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT55_F", "MRAWS_HEAT55_F"], [], ""], +["launch_MRAWS_olive_rail_F", "", "acc_pointer_IR", "", ["MRAWS_HEAT55_F", "MRAWS_HE_F"], [], ""] +]]; + +_militiaLoadoutData set ["rifles", [ +["arifle_SPAR_01_khk_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_Tracer_Red"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["arifle_SPAR_01_khk_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_Tracer_Red"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["arifle_SPAR_01_GL_khk_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_Tracer_Red"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["SMG_01_F", "", "acc_flashlight_smg_01", "", [], [], ""], +["SMG_02_F", "", "acc_flashlight", "", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["arifle_SPAR_02_khk_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_Tracer_Red"], [], ""], +["arifle_SPAR_02_khk_F", "", "acc_flashlight", "", ["30Rnd_556x45_Stanag_Tracer_Red", "30Rnd_556x45_Stanag_red", "30Rnd_556x45_Stanag_red"], [], ""], +["LMG_03_F", "", "acc_flashlight", "", ["200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Tracer_Red_F"], [], ""], +["LMG_03_F", "", "acc_flashlight", "", ["200Rnd_556x45_Box_Tracer_Red_F", "200Rnd_556x45_Box_Red_F", "200Rnd_556x45_Box_Red_F"], [], ""] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["arifle_SPAR_03_khk_F", "", "acc_flashlight", "optic_Hamr", [], [], ""], +["arifle_SPAR_03_khk_F", "", "acc_flashlight", "optic_MRCO", [], [], ""] +]]; +_militiaLoadoutData set ["sniperRifles", [ +["srifle_LRR_F", "", "", "optic_SOS", [], [], ""], +["srifle_LRR_F", "", "", "optic_LRPS", [], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["hgun_P07_khk_F"]]; + +////////////////////////// +// Misc Loadouts // +////////////////////////// + + +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["EF_U_B_MarineCombatUniform_Wdl_5"]]; +_crewLoadoutData set ["vests", ["EF_V_AAV_Olive"]]; +_crewLoadoutData set ["helmets", ["H_HelmetCrew_B"]]; + + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["U_B_HeliPilotCoveralls"]]; +_pilotLoadoutData set ["vests", ["EF_V_AAV_Olive"]]; +_pilotLoadoutData set ["helmets", ["H_CrewHelmetHeli_B", "H_PilotHelmetHeli_B"]]; +_pilotLoadoutData set ["facewear", ["G_Aviator","G_Squares_Tinted","G_Tactical_Black"]]; + +private _officerLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_officerLoadoutData set ["uniforms", ["U_B_ParadeUniform_01_US_F", "U_B_ParadeUniform_01_US_decorated_F"]]; +_officerLoadoutData set ["vests", ["V_TacVest_oli", "V_LegStrapBag_coyote_F"]]; +_officerLoadoutData set ["helmets", ["H_ParadeDressCap_01_US_F", "H_Beret_Colonel"]]; +_officerLoadoutData set ["backpacks", []]; +_officerLoadoutData set ["SMGs", [ +["arifle_MXC_khk_F", "", "acc_pointer_IR", "optic_Holosight_khk_F", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""], +["arifle_MXC_khk_F", "", "acc_pointer_IR", "optic_Aco", ["30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag", "30Rnd_65x39_caseless_khaki_mag_Tracer"], [], ""] +]]; + +if ("mark" in A3A_enabledDLC) then { + (_sfLoadoutData get "machineGuns") append [ + ["MMG_02_black_F", "muzzle_snds_338_black", "acc_pointer_IR", "optic_Hamr", [], [], "bipod_01_F_blk"], + ["MMG_02_black_F", "muzzle_snds_338_black", "acc_pointer_IR", "optic_Holosight", [], [], "bipod_01_F_blk"]]; + (_sfLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_03_woodland_F", "muzzle_snds_B", "acc_pointer_IR", "optic_AMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_blk"], + ["srifle_DMR_03_F", "muzzle_snds_B_lush_F", "acc_pointer_IR", "optic_DMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_blk"]]; + (_sfLoadoutData get "sniperRifles") append [ + ["srifle_DMR_02_F", "muzzle_snds_338_black", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_blk"], + ["srifle_DMR_02_F", "muzzle_snds_338_black", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_blk"]]; + + (_militaryLoadoutData get "machineGuns") append [ + ["MMG_02_black_F", "", "acc_pointer_IR", "optic_Hamr", [], [], "bipod_01_F_blk"], + ["MMG_02_black_F", "", "acc_pointer_IR", "optic_Holosight", [], [], "bipod_01_F_blk"] + ]; + (_militaryLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_03_woodland_F", "", "acc_pointer_IR", "optic_AMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_blk"], + ["srifle_DMR_03_khaki_F", "", "acc_pointer_IR", "optic_DMS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_blk"], + ["srifle_DMR_03_F", "", "acc_pointer_IR", "optic_SOS", ["20Rnd_762x51_Mag"], [], "bipod_01_F_blk"]]; + (_militaryLoadoutData get "sniperRifles") append [ + ["srifle_DMR_02_F", "", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_blk"], + ["srifle_DMR_02_F", "", "acc_pointer_IR", "optic_LRPS", [], [], "bipod_01_F_blk"]]; + + (_militiaLoadoutData get "marksmanRifles") append [ + ["srifle_DMR_06_olive_F", "", "", "optic_KHS_blk", [], [], "bipod_01_F_blk"], + ["srifle_DMR_06_hunter_F", "", "", "optic_KHS_old", ["20Rnd_762x51_Mag", "10Rnd_Mk14_762x51_Mag", "10Rnd_Mk14_762x51_Mag"], [], "bipod_01_F_blk"]]; +}; + +if ("rf" in A3A_enabledDLC) then { + (_sfLoadoutData get "sidearms") append [ + ["hgun_Glock19_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_black", [], [], ""], + ["hgun_Glock19_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_black", [], [], ""], + ["hgun_Glock19_auto_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_black", [], [], ""], + ["hgun_Glock19_auto_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_black", [], [], ""], + ["hgun_Glock19_auto_RF", "muzzle_snds_L", "acc_flashlight_IR_pistol_RF", "optic_MRD_black", [], [], ""] + ]; + (_militaryLoadoutData get "sidearms") append [ + ["hgun_Glock19_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_RF", "", "acc_flashlight_pistol", "", [], [], ""], + ["hgun_Glock19_RF", "", "acc_flashlight_pistol", "optic_MRD_black", [], [], ""], + ["hgun_Glock19_auto_RF", "", "acc_flashlight_pistol", "", [], [], ""] + ]; + (_policeLoadoutData get "sidearms") append ["hgun_Glock19_RF"]; + (_pilotLoadoutData get "uniforms") append ["U_B_HeliPilotCoveralls_MTP_RF"]; + (_sfLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "muzzle_snds_acp", "", "optic_Holosight", [], [], ""] + ]; + (_militaryLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "", "optic_Holosight", [], [], ""], + ["SMG_01_black_RF", "", "", "optic_Aco_smg", [], [], ""] + ]; + (_militiaLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "", [], [], ""] + ]; + (_policeLoadoutData get "SMGs") append [ + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "optic_Holosight", [], [], ""], + ["SMG_01_black_RF", "", "acc_flashlight_smg_01", "optic_Aco_smg", [], [], ""] + ]; + (_sfLoadoutData get "helmets") append [ + "H_HelmetB_plain_sb_mtp_RF", + "H_HelmetHeavy_Sand_RF", + "H_HelmetHeavy_Simple_Sand_RF", + "H_HelmetHeavy_VisorUp_Sand_RF"]; + (_militaryLoadoutData get "helmets") append ["H_HelmetB_plain_sb_mtp_RF"]; +}; + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["slHat"] call _fnc_setHelmet; + [["Hvests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["backpacks"] call _fnc_setBackpack; + + [["slRifles", "rifles"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 4] call _fnc_addAdditionalMuzzleMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_squadLeader_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 2] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + ["signalsmokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["gpses"] call _fnc_addGPS; + ["binoculars"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _riflemanTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_rifleman_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 2] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _medicTemplate = { + ["helmets"] call _fnc_setHelmet; + [["Hvests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_medic"] call _fnc_addItemSet; + ["items_medic_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _grenadierTemplate = { + ["helmets"] call _fnc_setHelmet; + [["glVests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["grenadeLaunchers"] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 10] call _fnc_addAdditionalMuzzleMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_grenadier_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 4] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _explosivesExpertTemplate = { + ["helmets"] call _fnc_setHelmet; + [["glVests", "vests"] call _fnc_fallback] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_explosivesExpert_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["lightExplosives", 2] call _fnc_addItem; + if (random 1 > 0.5) then {["heavyExplosives", 1] call _fnc_addItem;}; + if (random 1 > 0.5) then {["atMines", 1] call _fnc_addItem;}; + if (random 1 > 0.5) then {["apMines", 1] call _fnc_addItem;}; + + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _engineerTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_engineer_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + if (random 1 > 0.5) then {["lightExplosives", 1] call _fnc_addItem;}; + + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _latTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + [["lightATLaunchers", "ATLaunchers"] call _fnc_fallback] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_lat_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _atTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + [selectRandom ["ATLaunchers", "missileATLaunchers"]] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_at_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _aaTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["AALaunchers"] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_aa_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _machineGunnerTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["machineGuns"] call _fnc_setPrimary; + ["primary", 4] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_machineGunner_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["NVGs"] call _fnc_addNVGs; +}; + +private _marksmanTemplate= { + ["sniHats"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["marksmanRifles"] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_marksman_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["rangefinders"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _sniperTemplate = { + ["sniHats"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["sniperRifles"] call _fnc_setPrimary; + ["primary", 7] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_sniper_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["antiInfantryGrenades", 1] call _fnc_addItem; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["rangefinders"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _policeTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + + ["SMGs"] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_police_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["smokeGrenades", 1] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; +}; + +private _crewTemplate = { + ["helmets"] call _fnc_setHelmet; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [selectRandom ["carbines", "SMGs"]] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["items_medical_basic"] call _fnc_addItemSet; + ["items_crew_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + ["smokeGrenades", 2] call _fnc_addItem; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; + ["gpses"] call _fnc_addGPS; + ["NVGs"] call _fnc_addNVGs; +}; + +private _unarmedTemplate = { + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["items_medical_basic"] call _fnc_addItemSet; + ["items_unarmed_extras"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["radios"] call _fnc_addRadio; +}; + +private _traitorTemplate = { + call _unarmedTemplate; + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; +}; + +//////////////////////////////////////////////////////////////////////////////////////// +// You shouldn't touch below this line unless you really really know what you're doing. +// Things below here can and will break the gamemode if improperly changed. +//////////////////////////////////////////////////////////////////////////////////////// + +///////////////////////////// +// Special Forces Units // +///////////////////////////// +private _prefix = "SF"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _sfLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/*{ + params ["_name", "_loadoutTemplate"]; + private _loadouts = [_sfLoadoutData, _loadoutTemplate] call _fnc_buildLoadouts; + private _finalName = _prefix + _name; + [_finalName, _loadouts] call _fnc_saveToTemplate; +} forEach _unitTypes; +*/ + +/////////////////////// +// Military Units // +/////////////////////// +private _prefix = "military"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate], + ["Standard", _policeTemplate] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["Medic", _medicTemplate, [["medic", true]]], + ["Engineer", _engineerTemplate, [["engineer", true]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _grenadierTemplate], + ["LAT", _latTemplate], + ["AT", _atTemplate], + ["AA", _aaTemplate], + ["MachineGunner", _machineGunnerTemplate], + ["Marksman", _marksmanTemplate], + ["Sniper", _sniperTemplate] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _policeTemplate]], _officerLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; diff --git a/A3A/addons/core/Templates/Templates/WS/WS_AI_NATO_Desert.sqf b/A3A/addons/core/Templates/Templates/WS/WS_AI_NATO_Desert.sqf index 4c25e56053..309bddbcde 100644 --- a/A3A/addons/core/Templates/Templates/WS/WS_AI_NATO_Desert.sqf +++ b/A3A/addons/core/Templates/Templates/WS/WS_AI_NATO_Desert.sqf @@ -553,11 +553,11 @@ if ("rf" in A3A_enabledDLC) then { (_policeLoadoutData get "sidearms") append ["hgun_Glock19_RF"]; (_pilotLoadoutData get "uniforms") append ["U_B_HeliPilotCoveralls_MTP_RF"]; (_sfLoadoutData get "helmets") append [ - "H_HelmetB_plain_sb_mtp_RF", + "H_HelmetB_plain_sb_khaki_RF", "H_HelmetHeavy_Sand_RF", "H_HelmetHeavy_Simple_Sand_RF", "H_HelmetHeavy_VisorUp_Sand_RF"]; - (_militaryLoadoutData get "helmets") append ["H_HelmetB_plain_sb_mtp_RF"]; + (_militaryLoadoutData get "helmets") append ["H_HelmetB_plain_sb_khaki_RF"]; }; diff --git a/A3A/addons/core/Templates/Templates/WS/WS_AI_SFIA.sqf b/A3A/addons/core/Templates/Templates/WS/WS_AI_SFIA.sqf index 2e0dc1f049..f157306685 100644 --- a/A3A/addons/core/Templates/Templates/WS/WS_AI_SFIA.sqf +++ b/A3A/addons/core/Templates/Templates/WS/WS_AI_SFIA.sqf @@ -84,6 +84,9 @@ if ("rf" in A3A_enabledDLC) then { _vehiclesPolice append ["a3a_police_Pickup_rf", "B_GEN_Pickup_covered_rf", "a3a_police_Pickup_comms_rf"]; _vehiclesMilitiaCars append ["O_Pickup_rf"]; _vehiclesMilitiaLightArmed append ["a3a_hex_Pickup_mmg_rf","a3a_hex_Pickup_mmg_rf"]; + ["vehiclesHelisLight", ["a3a_sfia_Heli_EC_04_military_rf"]] call _fnc_saveToTemplate; + ["vehiclesHelisTransport", ["a3a_sfia_Heli_EC_04_military_rf"]] call _fnc_saveToTemplate; + ["vehiclesHelisLightAttack", ["a3a_sfia_Heli_EC_03_rf"]] call _fnc_saveToTemplate; _vehiclesHelisAttack append ["a3a_sfia_Heli_EC_02_rf"]; }; ["vehiclesHelisAttack", _vehiclesHelisAttack] call _fnc_saveToTemplate;