diff --git a/.gitignore b/.gitignore index d82bdb3eb1..a2ee4ca36d 100755 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,6 @@ *.bat AntistasiBuilder.cfg -build/@A3A-Plus - #Ignore mission files that have been copied to A3-Antistasi A3-Antistasi/description.ext A3-Antistasi/mission.sqm @@ -24,4 +22,5 @@ Antistasi-Plus.biprivatekey #Ignore Python bytecode files and bytecode-cache folder __pycache__/ +build/ *.py[cod] diff --git a/A3A/addons/core/CfgMarkers.hpp b/A3A/addons/core/CfgMarkers.hpp index 64a45d0a25..d0303cf5dd 100644 --- a/A3A/addons/core/CfgMarkers.hpp +++ b/A3A/addons/core/CfgMarkers.hpp @@ -1,37 +1,51 @@ -class CfgMarkers { - class flag_NATO; +class CfgMarkers +{ + class flag_NATO; - class a3a_flag_cdf: flag_NATO { - name = "CDF"; - icon = QPATHTOFOLDER(Pictures\Markers\cdf_ca.paa); - texture = QPATHTOFOLDER(Pictures\Markers\cdf_ca.paa); - }; + class a3a_flag_cdf: flag_NATO + { + name = "CDF"; + icon = QPATHTOFOLDER(Pictures\Markers\cdf_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\cdf_ca.paa); + }; - class a3a_flag_napa: flag_NATO { - name = "NAPA"; - icon = QPATHTOFOLDER(Pictures\Markers\napa_ca.paa); - texture = QPATHTOFOLDER(Pictures\Markers\napa_ca.paa); - }; + class a3a_flag_napa: flag_NATO + { + name = "NAPA"; + icon = QPATHTOFOLDER(Pictures\Markers\napa_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\napa_ca.paa); + }; - class a3a_flag_serbia: flag_NATO { - name = "Serbia"; - icon = QPATHTOFOLDER(Pictures\Markers\serbia_ca.paa); - texture = QPATHTOFOLDER(Pictures\Markers\serbia_ca.paa); - }; - class a3a_flag_chdkz: flag_NATO { - name = "ChDKZ"; - icon = QPATHTOFOLDER(Pictures\Markers\chdkz_co.paa); - texture = QPATHTOFOLDER(Pictures\Markers\chdkz_co.paa); - }; - - class loc_MilAdministration { - color[] = {1,1,1,1}; - icon = QPATHTOFOLDER(Pictures\Markers\milAdministration_CA.paa); - markerClass = "Locations"; - name = "Military Administration"; - scope = 1; - shadow = 0; - showEditorMarkerColor = 0; - size = 24; - }; -}; + class a3a_flag_serbia: flag_NATO + { + name = "Serbia"; + icon = QPATHTOFOLDER(Pictures\Markers\serbia_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\serbia_ca.paa); + }; + + class a3a_flag_chdkz: flag_NATO + { + name = "ChDKZ"; + icon = QPATHTOFOLDER(Pictures\Markers\chdkz_co.paa); + texture = QPATHTOFOLDER(Pictures\Markers\chdkz_co.paa); + }; + + class a3u_flag_optre_unsc: flag_NATO + { + name = "UNSC"; + icon = QPATHTOFOLDER(Pictures\Markers\marker_unsc_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\marker_unsc_ca.paa); + }; + class a3u_flag_optre_covenant: a3u_flag_optre_unsc + { + name = "Covenant"; + icon = QPATHTOFOLDER(Pictures\Markers\marker_covenant_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\marker_covenant_ca.paa); + }; + class a3u_flag_optre_insurrection: a3u_flag_optre_unsc + { + name = "Insurrection"; + icon = QPATHTOFOLDER(Pictures\Markers\marker_insurrection_ca.paa); + texture = QPATHTOFOLDER(Pictures\Markers\marker_insurrection_ca.paa); + }; +}; \ No newline at end of file diff --git a/A3A/addons/core/Pictures/Markers/OPTRE.xcf b/A3A/addons/core/Pictures/Markers/OPTRE.xcf new file mode 100644 index 0000000000..fbb7b5b381 Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/OPTRE.xcf differ diff --git a/A3A/addons/core/Pictures/Markers/marker_covenant_ca.paa b/A3A/addons/core/Pictures/Markers/marker_covenant_ca.paa new file mode 100644 index 0000000000..355c1a98bb Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_covenant_ca.paa differ diff --git a/A3A/addons/core/Pictures/Markers/marker_covenant_ca.png b/A3A/addons/core/Pictures/Markers/marker_covenant_ca.png new file mode 100644 index 0000000000..674c347f27 Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_covenant_ca.png differ diff --git a/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.paa b/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.paa new file mode 100644 index 0000000000..7629388421 Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.paa differ diff --git a/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.png b/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.png new file mode 100644 index 0000000000..67e980966f Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_insurrection_ca.png differ diff --git a/A3A/addons/core/Pictures/Markers/marker_unsc_ca.paa b/A3A/addons/core/Pictures/Markers/marker_unsc_ca.paa new file mode 100644 index 0000000000..0d22e19051 Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_unsc_ca.paa differ diff --git a/A3A/addons/core/Pictures/Markers/marker_unsc_ca.png b/A3A/addons/core/Pictures/Markers/marker_unsc_ca.png new file mode 100644 index 0000000000..b03fc7531d Binary files /dev/null and b/A3A/addons/core/Pictures/Markers/marker_unsc_ca.png differ diff --git a/A3A/addons/core/Pictures/antistasi_logo.paa b/A3A/addons/core/Pictures/antistasi_logo.paa new file mode 100644 index 0000000000..7ddac2ba23 Binary files /dev/null and b/A3A/addons/core/Pictures/antistasi_logo.paa differ diff --git a/A3A/addons/core/Pictures/antistasi_logo_small.paa b/A3A/addons/core/Pictures/antistasi_logo_small.paa new file mode 100644 index 0000000000..628cbff498 Binary files /dev/null and b/A3A/addons/core/Pictures/antistasi_logo_small.paa differ diff --git a/A3A/addons/core/Pictures/antistasi_logo_sw.paa b/A3A/addons/core/Pictures/antistasi_logo_sw.paa new file mode 100644 index 0000000000..1f92770343 Binary files /dev/null and b/A3A/addons/core/Pictures/antistasi_logo_sw.paa differ diff --git a/A3A/addons/core/Templates/Templates.hpp b/A3A/addons/core/Templates/Templates.hpp index 88724377b0..d0f4e5bd09 100644 --- a/A3A/addons/core/Templates/Templates.hpp +++ b/A3A/addons/core/Templates/Templates.hpp @@ -761,5 +761,12 @@ class Templates // ***************************** SPE IFA ***************************** #include "Templates\SPE_IFA\templates.hpp" - + + // ***************************** OPTRE ***************************** + + #include "Templates\OPTRE\templates.hpp" + + // ***************************** RACS ***************************** + + #include "Templates\RACS\templates.hpp" }; diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant.sqf new file mode 100644 index 0000000000..b0595195d8 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant.sqf @@ -0,0 +1,984 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "Covenant"] call _fnc_saveToTemplate; +["spawnMarkerName", "Covenant Supercarrier"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_covenant_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_covenant"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_FC_Spectre"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_FC_Spectre"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "O_Radar_System_02_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_FC_TyrantAA"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; // yes it's armed, cry (or find an unarmed version) +["vehiclesLightArmed", ["OPTRE_FC_Ghost_Needler_Driverless", "OPTRE_FC_Ghost_Armor_Driverless"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1015_mule_ins", "OPTRE_m1015_mule_cover_ins"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1015_mule_ins", "OPTRE_m1015_mule_cover_ins"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1015_mule_ammo_ins"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1015_mule_repair_ins"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1015_mule_fuel_ins"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1015_mule_medical_ins"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_FC_Wraith"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_FC_AA_Wraith"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["B_Boat_Transport_01_F"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["B_Boat_Armed_01_minigun_F"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; // ghost is basically the only vehicle that actually moves on water + +["vehiclesPlanesCAS", ["OPTRE_FC_Type26B_Banshee"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_FC_Type26N_Banshee"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; // I pray this works + +["vehiclesHelisLight", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; + +if (["MEU_Covenant"] call A3U_fnc_hasAddon) then { + ["vehiclesHelisTransport", ["MEU_Phantom_Light"]] call _fnc_saveToTemplate; + ["vehiclesHelisAttack", ["MEU_Phantom"]] call _fnc_saveToTemplate; +} else { + ["vehiclesHelisTransport", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; + ["vehiclesHelisAttack", ["OPTRE_FC_Spirit_Concussion"]] call _fnc_saveToTemplate; +}; + +["vehiclesHelisLightAttack", ["OPTRE_FC_Spirit_Concussion"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_m1015_mule_mlr_ins_IND"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_m1015_mule_mlr_ins_IND", ["12Rnd_230mm_rockets"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["B_UAV_02_CAS_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: +["vehiclesMilitiaLightArmed", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; +["vehiclesMilitiaTrucks", ["B_T_Truck_01_transport_F"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; // none of the MGs fit in outpost towers, they just blow up. +["staticAT", ["OPTRE_FC_T26_AT"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_FC_T26_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["Plasma_Mortar"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "Guided_Plasma_Mag_Test"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", ["OPTRE_FC_Spectre", "OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["EliteVO_1"]] call _fnc_saveToTemplate; +["faces", ["sangheiliHead_01","sangheiliHead_02","sangheiliHead_03","sangheiliHead_VP","sangheiliHead_LV","sangheiliHead_DV"]] call _fnc_saveToTemplate; +["polFaces", ["OPTRE_JackalFace_01", "OPTRE_JackalFace_02"]] call _fnc_saveToTemplate; // so jackals don't have arma man heads... trust me that will stay in your mind +["sfVoices", ["EliteVO_2"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_loadoutData set ["traitorVests", ["OPTRE_FC_Elite_Armor_Zealot"]]; +_loadoutData set ["traitorHats", ["OPTRE_FC_Elite_Helmet_Zealot"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_loadoutData set ["officerVests", ["OPTRE_FC_Elite_Armor_Officer"]]; +_loadoutData set ["officerHats", ["OPTRE_FC_Elite_Helmet_Officer"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [["OPTRE_FC_T33_FuelRod_Cannon", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack"], [], ""]]]; +_loadoutData set ["ATLaunchers", ["OPTRE_FC_T33_FuelRod_Cannon"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_FC_T33_FuelRod_Cannon", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_FC_T33_FuelRod_Cannon_Guided", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack_Guided"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_FC_PlasmaGrenade"]]; +_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", ["OPTRE_FC_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", []]; + +//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", ["OPTRE_FC_Elite_CombatSkin"]]; +_sfLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_SpecOps"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; // gets hidden on the elite model, but make it default backpack incase players loot it +_sfLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_SpecOps"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_FC_T60_PulseCarbine", "", "", "", ["OPTRE_FC_T60_Pulse_Carbine_Battery", "OPTRE_FC_T60_Pulse_Carbine_Battery", "OPTRE_FC_T60_Pulse_Carbine_Battery"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Carbine", "", "", "", ["OPTRE_FC_T51_Ammo_Cartridge", "OPTRE_FC_T51_Ammo_Cartridge", "OPTRE_FC_T51_Ammo_Cartridge"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_eliteLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_eliteLoadoutData set ["vestsSL", ["OPTRE_FC_Elite_Armor_Officer"]]; +_eliteLoadoutData set ["Hvests", ["OPTRE_FC_Elite_Armor_Minor"]]; // leave these in, just becase we don't know if we truly want these to be the exact same +_eliteLoadoutData set ["glVests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Minor"]]; +_eliteLoadoutData set ["helmetsSL", ["OPTRE_FC_Elite_Helmet_Officer"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_militaryLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militaryLoadoutData set ["vestsSL", ["OPTRE_FC_Elite_Armor_Officer"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_FC_Elite_Armor_Minor"]]; // leave these in, just becase we don't know if we truly want these to be the exact same +_militaryLoadoutData set ["glVests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Minor"]]; +_militaryLoadoutData set ["helmetsSL", ["OPTRE_FC_Elite_Helmet_Officer"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +// Make these elites +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_U_Jackal_uniform"]]; +_policeLoadoutData set ["vests", ["OPTRE_V_Jackal_vest"]]; +_policeLoadoutData set ["helmets", []]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_FC_Jackal_Shield", "", "", "", [], [], ""], +["OPTRE_FC_T25_Rifle", "", "", "", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_FC_Plasma_Pistol"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militiaLoadoutData set ["backpacks", []]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Minor"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_crewLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Zealot"]]; +_crewLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Zealot"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_pilotLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Ultra"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Ultra"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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= { + ["helmets"] 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 = { + ["helmets"] 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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "OPTRE_FC_Elite_Ultra", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]] + // doesn't use the loadout system, so that way we don't mix and match gear. Of course, it has it's disadvantages... +]; + +[_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, [["baseClass", "OPTRE_FC_Elite_Major", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]] + // all of these are elites +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate, [["baseClass", "OPTRE_Jackal_base_F", false]], [_prefix]], + ["Standard", _policeTemplate, [["baseClass", "OPTRE_Jackal_base_F", false]], [_prefix]] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_FC_Elite_Officer", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_FC_Elite_HonorGuard", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Elite_Zealot", true]], [_prefix]], + ["Radioman", _radiomanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Elite_Zealot2", true]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant_Grunts.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant_Grunts.sqf new file mode 100644 index 0000000000..6c55c1ab44 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_Covenant_Grunts.sqf @@ -0,0 +1,980 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "Covenant"] call _fnc_saveToTemplate; +["spawnMarkerName", "Covenant Supercarrier"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_covenant_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_covenant"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_FC_Spectre"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_FC_Spectre"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "O_Radar_System_02_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_FC_TyrantAA"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; // yes it's armed, cry (or find an unarmed version) +["vehiclesLightArmed", ["OPTRE_FC_Ghost_Needler_Driverless", "OPTRE_FC_Ghost_Armor_Driverless"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1015_mule_ins", "OPTRE_m1015_mule_cover_ins"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1015_mule_ins", "OPTRE_m1015_mule_cover_ins"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1015_mule_ammo_ins"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1015_mule_repair_ins"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1015_mule_fuel_ins"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1015_mule_medical_ins"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_FC_Wraith"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_FC_AA_Wraith"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["B_Boat_Transport_01_F"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["B_Boat_Armed_01_minigun_F"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; // ghost is basically the only vehicle that actually moves on water + +["vehiclesPlanesCAS", ["OPTRE_FC_Type26B_Banshee"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_FC_Type26N_Banshee"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; // I pray this works + +["vehiclesHelisLight", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; + +if (["MEU_Covenant"] call A3U_fnc_hasAddon) then { + ["vehiclesHelisTransport", ["MEU_Phantom_Light"]] call _fnc_saveToTemplate; + ["vehiclesHelisAttack", ["MEU_Phantom"]] call _fnc_saveToTemplate; +} else { + ["vehiclesHelisTransport", ["OPTRE_FC_Spirit"]] call _fnc_saveToTemplate; + ["vehiclesHelisAttack", ["OPTRE_FC_Spirit_Concussion"]] call _fnc_saveToTemplate; +}; + +["vehiclesHelisLightAttack", ["OPTRE_FC_Spirit_Concussion"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_m1015_mule_mlr_ins_IND"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_m1015_mule_mlr_ins_IND", ["12Rnd_230mm_rockets"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["B_UAV_02_CAS_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: +["vehiclesMilitiaLightArmed", ["OPTRE_FC_Ghost_Driverless"]] call _fnc_saveToTemplate; +["vehiclesMilitiaTrucks", ["B_T_Truck_01_transport_F"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; // none of the MGs fit in outpost towers, they just blow up. +["staticAT", ["OPTRE_FC_T26_AT"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_FC_T26_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["Plasma_Mortar"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "Guided_Plasma_Mag_Test"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", ["OPTRE_FC_Spectre", "OPTRE_FC_Spectre_Empty"]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["EliteVO_1"]] call _fnc_saveToTemplate; +["faces", ["sangheiliHead_01","sangheiliHead_02","sangheiliHead_03","sangheiliHead_VP","sangheiliHead_LV","sangheiliHead_DV"]] call _fnc_saveToTemplate; +["polFaces", ["OPTRE_JackalFace_01", "OPTRE_JackalFace_02"]] call _fnc_saveToTemplate; // so jackals don't have arma man heads... trust me that will stay in your mind +["sfVoices", ["EliteVO_2"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_loadoutData set ["traitorVests", ["OPTRE_FC_Elite_Armor_Zealot"]]; +_loadoutData set ["traitorHats", ["OPTRE_FC_Elite_Helmet_Zealot"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_loadoutData set ["officerVests", ["OPTRE_FC_Elite_Armor_Officer"]]; +_loadoutData set ["officerHats", ["OPTRE_FC_Elite_Helmet_Officer"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [["OPTRE_FC_T33_FuelRod_Cannon", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack"], [], ""]]]; +_loadoutData set ["ATLaunchers", ["OPTRE_FC_T33_FuelRod_Cannon"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_FC_T33_FuelRod_Cannon", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_FC_T33_FuelRod_Cannon_Guided", "", "", "", ["OPTRE_FC_T33_FuelRod_Pack_Guided"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_FC_PlasmaGrenade"]]; +_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", ["OPTRE_FC_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", []]; + +//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", ["OPTRE_FC_Elite_CombatSkin"]]; +_sfLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_SpecOps"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; // gets hidden on the elite model, but make it default backpack incase players loot it +_sfLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_SpecOps"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_FC_T60_PulseCarbine", "", "", "", ["OPTRE_FC_T60_Pulse_Carbine_Battery", "OPTRE_FC_T60_Pulse_Carbine_Battery", "OPTRE_FC_T60_Pulse_Carbine_Battery"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Carbine", "", "", "", ["OPTRE_FC_T51_Ammo_Cartridge", "OPTRE_FC_T51_Ammo_Cartridge", "OPTRE_FC_T51_Ammo_Cartridge"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_eliteLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Major"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Major"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_militaryLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militaryLoadoutData set ["vestsSL", ["OPTRE_FC_Elite_Armor_Officer"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_FC_Elite_Armor_Minor"]]; // leave these in, just becase we don't know if we truly want these to be the exact same +_militaryLoadoutData set ["glVests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Minor"]]; +_militaryLoadoutData set ["helmetsSL", ["OPTRE_FC_Elite_Helmet_Officer"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Smartfinder"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_FC_T50_SRS", "", "", "", ["OPTRE_FC_T50_SRS_Battery"], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; + +// Make these elites +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_U_Jackal_uniform"]]; +_policeLoadoutData set ["vests", ["OPTRE_V_Jackal_vest"]]; +_policeLoadoutData set ["helmets", []]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_FC_Jackal_Shield", "", "", "", [], [], ""], +["OPTRE_FC_T25_Rifle", "", "", "", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_FC_Plasma_Pistol"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Minor"]]; +_militiaLoadoutData set ["backpacks", []]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Minor"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_FC_T25_Rifle", "", "", "", ["OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery", "OPTRE_FC_T25_Rifle_Battery"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_FC_T50_ConcussionRifle", "", "", "", ["OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag", "OPTRE_FC_T50_6rnd_mag"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_FC_Needler", "", "", "", ["OPTRE_FC_Needler_Mag"], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_FC_T51J_Repeater", "", "", "", ["OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery", "OPTRE_FC_T51J_Repeater_Battery"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_FC_T31_NeedleRifle", "", "", "", ["OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag", "OPTRE_FC_NeedleRifle_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", [ +["OPTRE_FC_Plasma_Pistol", "", "", "", ["OPTRE_FC_Plasma_Pistol_Battery"], [], ""] +]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_crewLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Zealot"]]; +_crewLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Zealot"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_FC_Elite_CombatSkin"]]; +_pilotLoadoutData set ["vests", ["OPTRE_FC_Elite_Armor_Ultra"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_Elite_Helmet_Ultra"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_FC_T51_Repeater", "", "", "", ["OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery", "OPTRE_FC_T51_Repeater_Battery"], [], ""] +]]; + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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= { + ["helmets"] 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 = { + ["helmets"] 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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "WBK_EliteMainWeap_9", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "IMS_Elite_Melee_1", true]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "WBK_EliteMainWeap_1", false]], [_prefix]] + // doesn't use the loadout system, so that way we don't mix and match gear. Of course, it has it's disadvantages... +]; + +[_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, [["baseClass", "WBK_EliteMainWeap_3", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]] + // all of these are elites +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate, [["baseClass", "OPTRE_Jackal_base_F", false]], [_prefix]], + ["Standard", _policeTemplate, [["baseClass", "OPTRE_Jackal_base_F", false]], [_prefix]] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "WBK_Grunt_1", true]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "WBK_Grunt_2", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "WBK_Grunt_2", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "WBK_Grunt_4", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "WBK_Grunt_4", true]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "WBK_Grunt_5", true]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "WBK_Grunt_5", true]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "WBK_Grunt_5", true]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "WBK_Grunt_1", true]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "WBK_Grunt_1", true]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "WBK_Grunt_4", true]], [_prefix]] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Radioman", _radiomanTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", false], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", false], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", false], ["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "WBK_EliteMainWeap_2", true]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "WBK_EliteMainWeap_2", false]], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [["baseClass", "OPTRE_FC_Elite_Minor", false]], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC.sqf new file mode 100644 index 0000000000..11263925dc --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC.sqf @@ -0,0 +1,983 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "UNSC"] call _fnc_saveToTemplate; +["spawnMarkerName", "UNSC Infinity"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_unsc_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_unsc"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_M12_FAV_APC"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_M12_LRV"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_M494"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "B_Radar_System_01_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_Lance"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +#include "OPTRE_Vehicle_Attributes.sqf" + +["vehiclesBasic", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_M813_TT", "OPTRE_M12_FAV"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["OPTRE_M12_LRV", "OPTRE_M12A1_LRV"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1087_stallion_cover_unsc"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1087_stallion_unsc_resupply"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1087_stallion_unsc_repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1087_stallion_unsc_refuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1087_stallion_unsc_medical"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["OPTRE_M412_IFV_UNSC", "OPTRE_M413_MGS_UNSC"]; //, "B_T_APC_Tracked_01_CRV_F"]; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_M808B_UNSC", "OPTRE_M808BM_UNSC"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_M808B2"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["optre_catfish_unarmed_f"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["optre_catfish_mg_f"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["optre_catfish_gauss_f"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["OPTRE_YSS_1000_A_VTOL"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_YSS_1000_A"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_Pelican_unarmed"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["OPTRE_UNSC_falcon"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["OPTRE_UNSC_falcon_s"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["OPTRE_UNSC_hornet_CAS"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["OPTRE_AV22C_Sparrowhawk"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_M875_SPH"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_M875_SPH", ["32Rnd_155mm_Mo_shells"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["OPTRE_Wombat_B"]] 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: +["vehiclesMilitiaLightArmed", ["OPTRE_M12_FAV"]] call _fnc_saveToTemplate; // technically not armed, but has FFV slots +["vehiclesMilitiaTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_M813_TT"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; +["staticAT", ["OPTRE_Static_Gauss"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_Static_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; + +///////////////////// +/// 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; +["sfVoices", ["Male01ENGB", "Male02ENG", "Male03ENGB", "Male04ENG", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_UNSC_Army_Uniform_R_BLK"]]; +_loadoutData set ["traitorVests", ["OPTRE_UNSC_M52A_Armor_Breacher_URB", "OPTRE_UNSC_M52A_Armor1_URB"]]; +_loadoutData set ["traitorHats", ["OPTRE_UNSC_CH252_Helmet_URB"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_UNSC_Army_Uniform_BLKURB"]]; +_loadoutData set ["officerVests", ["OPTRE_UNSC_M52A_Armor_Sniper_URB", "V_Rangemaster_belt"]]; +_loadoutData set ["officerHats", ["OPTRE_PatrolCap_Navy"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT_Thermal"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_M9_Frag"]]; +_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", ["OPTRE_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", []]; + +//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", ["OPTRE_MJOLNIR_Undersuit"]]; +_sfLoadoutData set ["vests", ["OPTRE_MJOLNIR_MkVBArmor", "OPTRE_MJOLNIR_MkVBArmor_MkV4"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_ANPRC_515_Spartan"]]; +_sfLoadoutData set ["helmets", ["OPTRE_MJOLNIR_MkVBHelmet", "OPTRE_MJOLNIR_MkVBHelmet_UA_HUL", "OPTRE_MJOLNIR_EOD", "OPTRE_MJOLNIR_CQC"]]; +_sfLoadoutData set ["sniHats", ["OPTRE_MJOLNIR_Commando", "OPTRE_MJOLNIR_Commando_HUL3"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_M392_DMR", "", "optre_dmr_light", "optre_br55hb_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], ""], +["OPTRE_Commando", "", "", "optic_Holosight_blk_F", ["Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_MA5BGL", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], ["3Rnd_HE_Grenade_shell", "3Rnd_HE_Grenade_shell", "OPTRE_1Rnd_SmokeGreen_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "optre_m7_laser", "optre_m7_sight", [], [], ""], +["OPTRE_M45ATAC", "", "optre_m45_flashlight_green", "", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_M247H_Etilka", "", "", "", ["OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball"], [], ""] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_M393_DMR", "", "", "optre_m393_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], "bipod_01_f_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_M6G", "optre_m6_silencer", "optre_m6g_flashlight", "optre_m6g_scope", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_UNSC_Marine_Uniform"]]; +_eliteLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_MAR", "OPTRE_UNSC_M52A_Armor_Marksman_MAR"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_MAR", "OPTRE_UNSC_CH252_Helmet2_MAR"]]; +_eliteLoadoutData set ["sniHats", ["OPTRE_UNSC_CH252A_Black_Helmet"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_BR55", "optre_ma5suppressor", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_MA5C", "optre_ma5suppressor", "", "optre_ma5c_smartlink", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_MA37B", "optre_ma5suppressor", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_M7", "optre_m7_silencer", "", "optre_m393_eotech", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "optre_ma5suppressor", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "optre_srs99d_suppressor", "", "optre_srs99c_scope", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_FC_Marines_Uniform_BLK_L", "OPTRE_FC_Marines_Uniform_WDL", "OPTRE_FC_Marines_Uniform_BLK"]]; +_militaryLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_MAR", "OPTRE_UNSC_M52A_Armor_Marksman_MAR"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_UNSC_M52A_Armor_Breacher_MAR"]]; +_militaryLoadoutData set ["glVests", ["OPTRE_UNSC_M52A_Armor_Grenadier_MAR"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_MAR", "OPTRE_UNSC_CH252_Helmet2_MAR"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_BR55", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_MA37B", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "", "", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_CPD_Uniform", "OPTRE_CPD_Uniform_Rolled"]]; +_policeLoadoutData set ["vests", ["OPTRE_Vest_CPD_Light", "OPTRE_Vest_CPD_Heavy"]]; +_policeLoadoutData set ["helmets", ["OPTRE_CPD_CH251P", "OPTRE_UNSC_CH252_Helmet_URB"]]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_M6G"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Marines_Uniform_L", "OPTRE_FC_Marines_Uniform"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_M52B_Armor_Rifleman", "OPTRE_FC_M52B_Armor_Light"]]; +_militiaLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack"]]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_CH255_Helmet"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_MA5A", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_M73", "", "", "", ["OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["OPTRE_M6G"]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Gray"]]; +_crewLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor3_MAR"]]; +_crewLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet2_Vacuum_URB"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Gray"]]; +_pilotLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor2_URB"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_VX19_Helmet"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]], [_prefix]] +]; + +[_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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_Spartan3_Soldier_TeamLeader", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_desert.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_desert.sqf new file mode 100644 index 0000000000..9788a79d24 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_desert.sqf @@ -0,0 +1,982 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "UNSC"] call _fnc_saveToTemplate; +["spawnMarkerName", "UNSC Infinity"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_unsc_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_unsc"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_M12_FAV_APC"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_M12_LRV"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_M494"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "B_Radar_System_01_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_Lance"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_M813_TT", "OPTRE_M12_FAV"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["OPTRE_M12_LRV", "OPTRE_M12A1_LRV"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1087_stallion_cover_unsc"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1087_stallion_unsc_resupply"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1087_stallion_unsc_repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1087_stallion_unsc_refuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1087_stallion_unsc_medical"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["OPTRE_M412_IFV_UNSC", "OPTRE_M413_MGS_UNSC"]; //, "B_T_APC_Tracked_01_CRV_F"]; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_M808B_UNSC", "OPTRE_M808BM_UNSC"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_M808B2"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["optre_catfish_unarmed_f"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["optre_catfish_mg_f"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["optre_catfish_gauss_f"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["OPTRE_YSS_1000_A_VTOL"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_YSS_1000_A"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_Pelican_unarmed"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["OPTRE_UNSC_falcon"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["OPTRE_UNSC_falcon_s"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["OPTRE_UNSC_hornet_CAS"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["OPTRE_AV22C_Sparrowhawk"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_M875_SPH"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_M875_SPH", ["32Rnd_155mm_Mo_shells"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["OPTRE_Wombat_B"]] 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: +["vehiclesMilitiaLightArmed", ["OPTRE_M12_FAV"]] call _fnc_saveToTemplate; // technically not armed, but has FFV slots +["vehiclesMilitiaTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_M813_TT"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; +["staticAT", ["OPTRE_Static_Gauss"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_Static_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; + +///////////////////// +/// 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; +["sfVoices", ["Male01ENGB", "Male02ENG", "Male03ENGB", "Male04ENG", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_UNSC_Army_Uniform_R_BLK"]]; +_loadoutData set ["traitorVests", ["OPTRE_UNSC_M52A_Armor_Breacher_URB", "OPTRE_UNSC_M52A_Armor1_URB"]]; +_loadoutData set ["traitorHats", ["OPTRE_UNSC_CH252_Helmet_URB"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_UNSC_Army_Uniform_BLKURB"]]; +_loadoutData set ["officerVests", ["OPTRE_UNSC_M52A_Armor_Sniper_URB", "V_Rangemaster_belt"]]; +_loadoutData set ["officerHats", ["OPTRE_PatrolCap_Navy"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT_Thermal"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_M9_Frag"]]; +_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", ["OPTRE_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", ["OPTRE_UNSC_CH252_Helmet3_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", ["OPTRE_MJOLNIR_Undersuit"]]; +_sfLoadoutData set ["vests", ["OPTRE_MJOLNIR_MkVBArmor", "OPTRE_MJOLNIR_MkVBArmor_MkV4"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_ANPRC_515_Spartan"]]; +_sfLoadoutData set ["helmets", ["OPTRE_MJOLNIR_MkVBHelmet", "OPTRE_MJOLNIR_MkVBHelmet_UA_HUL", "OPTRE_MJOLNIR_EOD", "OPTRE_MJOLNIR_CQC"]]; +_sfLoadoutData set ["sniHats", ["OPTRE_MJOLNIR_Commando", "OPTRE_MJOLNIR_Commando_HUL3"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_M392_DMR", "", "optre_dmr_light", "optre_br55hb_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], ""], +["OPTRE_Commando", "", "", "optic_Holosight_blk_F", ["Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_MA5BGL", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], ["3Rnd_HE_Grenade_shell", "3Rnd_HE_Grenade_shell", "OPTRE_1Rnd_SmokeGreen_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "optre_m7_laser", "optre_m7_sight", [], [], ""], +["OPTRE_M45ATAC", "", "optre_m45_flashlight_green", "", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_M247H_Etilka", "", "", "", ["OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball"], [], ""] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_M393_DMR", "", "", "optre_m393_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], "bipod_01_f_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_M6G", "optre_m6_silencer", "optre_m6g_flashlight", "optre_m6g_scope", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_UNSC_Marine_Uniform"]]; +_eliteLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_MAR", "OPTRE_UNSC_M52A_Armor_Marksman_MAR"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_MAR", "OPTRE_UNSC_CH252_Helmet2_MAR"]]; +_eliteLoadoutData set ["sniHats", ["OPTRE_UNSC_CH252A_Black_Helmet"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_BR55", "optre_ma5suppressor", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_MA5C", "optre_ma5suppressor", "", "optre_ma5c_smartlink", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_MA37B", "optre_ma5suppressor", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_M7", "optre_m7_silencer", "", "optre_m393_eotech", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "optre_ma5suppressor", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "optre_srs99d_suppressor", "", "optre_srs99c_scope", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_UNSC_Army_Uniform_DES", "OPTRE_UNSC_Army_Uniform_R_DES_SlimLeg", "OPTRE_UNSC_Army_Uniform_S_DES_SlimLeg"]]; +_militaryLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_DES", "OPTRE_UNSC_M52A_Armor_Marksman_DES"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_UNSC_M52A_Armor_Breacher_DES"]]; +_militaryLoadoutData set ["glVests", ["OPTRE_UNSC_M52A_Armor_Grenadier_DES"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_DES", "OPTRE_UNSC_CH252_Helmet2_DES"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_BR55", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_MA37B", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "", "", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_CMA_Uniform", "OPTRE_CMA_Uniform_Rolled"]]; +_policeLoadoutData set ["vests", ["OPTRE_Vest_CMA_Light", "OPTRE_Vest_CMA_Heavy"]]; +_policeLoadoutData set ["helmets", ["OPTRE_CMA_Helmet_ear", "OPTRE_CMA_Helmet_chops"]]; +_policeLoadoutData set ["NVGs", ["OPTRE_NVG_UAB_HUL", "OPTRE_NVG_UAB_UL_HUL"]]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_M6G"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Marines_Uniform_DES_L", "OPTRE_FC_Marines_Uniform_DES"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_M52B_Armor_Rifleman_DES", "OPTRE_FC_M52B_Armor_Light_DES"]]; +_militiaLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack"]]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_CH255_Helmet_DES"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_MA5A", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_M73", "", "", "", ["OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR_Desert", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["OPTRE_M6G"]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Orange"]]; +_crewLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor3_DES"]]; +_crewLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet2_Vacuum_DES"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Orange"]]; +_pilotLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor2_DES"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_VX19_Helmet_Desert"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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; + ["NVGs"] call _fnc_addNVGs; // helmets look stupid without em +}; + +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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]] +]; + +[_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; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_Spartan3_Soldier_TeamLeader", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_snow.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_snow.sqf new file mode 100644 index 0000000000..f5e5f1ce7b --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_snow.sqf @@ -0,0 +1,983 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "UNSC"] call _fnc_saveToTemplate; +["spawnMarkerName", "UNSC Infinity"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_unsc_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_unsc"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_M12_FAV_APC"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_M12_LRV"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_M494"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "B_Radar_System_01_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_Lance"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_M813_TT", "OPTRE_M12_FAV"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["OPTRE_M12_LRV", "OPTRE_M12A1_LRV"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1087_stallion_cover_unsc"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1087_stallion_unsc_resupply"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1087_stallion_unsc_repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1087_stallion_unsc_refuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1087_stallion_unsc_medical"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["OPTRE_M412_IFV_UNSC", "OPTRE_M413_MGS_UNSC"]; //, "B_T_APC_Tracked_01_CRV_F"]; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_M808B_UNSC", "OPTRE_M808BM_UNSC"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_M808B2"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["optre_catfish_unarmed_f"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["optre_catfish_mg_f"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["optre_catfish_gauss_f"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["OPTRE_YSS_1000_A_VTOL"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_YSS_1000_A"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_Pelican_unarmed"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["OPTRE_UNSC_falcon"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["OPTRE_UNSC_falcon_s"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["OPTRE_UNSC_hornet_CAS"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["OPTRE_AV22C_Sparrowhawk"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_M875_SPH"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_M875_SPH", ["32Rnd_155mm_Mo_shells"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["OPTRE_Wombat_B"]] 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: +["vehiclesMilitiaLightArmed", ["OPTRE_M12_FAV"]] call _fnc_saveToTemplate; // technically not armed, but has FFV slots +["vehiclesMilitiaTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_M813_TT"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; +["staticAT", ["OPTRE_Static_Gauss"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_Static_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; + +///////////////////// +/// 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; +["sfVoices", ["Male01ENGB", "Male02ENG", "Male03ENGB", "Male04ENG", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_UNSC_Army_Uniform_R_BLK"]]; +_loadoutData set ["traitorVests", ["OPTRE_UNSC_M52A_Armor_Breacher_URB", "OPTRE_UNSC_M52A_Armor1_URB"]]; +_loadoutData set ["traitorHats", ["OPTRE_UNSC_CH252_Helmet_URB"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_UNSC_Army_Uniform_BLKURB"]]; +_loadoutData set ["officerVests", ["OPTRE_UNSC_M52A_Armor_Sniper_URB", "V_Rangemaster_belt"]]; +_loadoutData set ["officerHats", ["OPTRE_PatrolCap_Navy"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT_Thermal"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_M9_Frag"]]; +_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", ["OPTRE_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", ["OPTRE_UNSC_CH252_Helmet_SNO", "OPTRE_UNSC_CH252_Helmet2_SNO"]]; + +//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", ["OPTRE_MJOLNIR_Undersuit"]]; +_sfLoadoutData set ["vests", ["OPTRE_MJOLNIR_MkVBArmor", "OPTRE_MJOLNIR_MkVBArmor_MkV4"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_ANPRC_515_Spartan"]]; +_sfLoadoutData set ["helmets", ["OPTRE_MJOLNIR_MkVBHelmet", "OPTRE_MJOLNIR_MkVBHelmet_UA_HUL", "OPTRE_MJOLNIR_EOD", "OPTRE_MJOLNIR_CQC"]]; +_sfLoadoutData set ["sniHats", ["OPTRE_MJOLNIR_Commando", "OPTRE_MJOLNIR_Commando_HUL3"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_M392_DMR", "", "optre_dmr_light", "optre_br55hb_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], ""], +["OPTRE_Commando", "", "", "optic_Holosight_blk_F", ["Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_MA5BGL", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], ["3Rnd_HE_Grenade_shell", "3Rnd_HE_Grenade_shell", "OPTRE_1Rnd_SmokeGreen_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "optre_m7_laser", "optre_m7_sight", [], [], ""], +["OPTRE_M45ATAC", "", "optre_m45_flashlight_green", "", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_M247H_Etilka", "", "", "", ["OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball"], [], ""] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_M393_DMR", "", "", "optre_m393_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], "bipod_01_f_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_M6G", "optre_m6_silencer", "optre_m6g_flashlight", "optre_m6g_scope", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_UNSC_Marine_Uniform"]]; +_eliteLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_MAR", "OPTRE_UNSC_M52A_Armor_Marksman_MAR"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_MAR", "OPTRE_UNSC_CH252_Helmet2_MAR"]]; +_eliteLoadoutData set ["sniHats", ["OPTRE_UNSC_CH252A_Black_Helmet"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_BR55", "optre_ma5suppressor", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_MA5C", "optre_ma5suppressor", "", "optre_ma5c_smartlink", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_MA37B", "optre_ma5suppressor", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_M7", "optre_m7_silencer", "", "optre_m393_eotech", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "optre_ma5suppressor", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "optre_srs99d_suppressor", "", "optre_srs99c_scope", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_UNSC_Army_Uniform_SNO", "OPTRE_UNSC_Army_Uniform_R_SNO_SlimLeg", "OPTRE_UNSC_Army_Uniform_S_SNO_SlimLeg"]]; +_militaryLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_SNO", "OPTRE_UNSC_M52A_Armor_Marksman_SNO"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_UNSC_M52A_Armor_Breacher_SNO"]]; +_militaryLoadoutData set ["glVests", ["OPTRE_UNSC_M52A_Armor_Grenadier_SNO"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_SNO", "OPTRE_UNSC_CH252_Helmet2_SNO"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_BR55", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_MA37B", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "", "", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_CMA_Uniform", "OPTRE_CMA_Uniform_Rolled"]]; +_policeLoadoutData set ["vests", ["OPTRE_Vest_CMA_Light", "OPTRE_Vest_CMA_Heavy"]]; +_policeLoadoutData set ["helmets", ["OPTRE_CMA_Helmet_ear", "OPTRE_CMA_Helmet_chops"]]; +_policeLoadoutData set ["NVGs", ["OPTRE_NVG_UAB_HUL", "OPTRE_NVG_UAB_UL_HUL"]]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_M6G"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Marines_Uniform_SNO_L", "OPTRE_FC_Marines_Uniform_SNO"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_M52B_Armor_Rifleman_SNO", "OPTRE_FC_M52B_Armor_Light_SNO"]]; +_militiaLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack"]]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_CH255_Helmet_SNO"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_MA5A", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_M73", "", "", "", ["OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR_Snow", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["OPTRE_M6G"]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_White"]]; +_crewLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor3_SNO"]]; +_crewLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet2_Vacuum_SNO"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_White"]]; +_pilotLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor2_SNO"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_VX19_Helmet_Snow"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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; + ["NVGs"] call _fnc_addNVGs; // helmets look stupid without em +}; + +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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]] +]; + +[_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; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_Spartan3_Soldier_TeamLeader", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_tropical.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_tropical.sqf new file mode 100644 index 0000000000..b169edd5aa --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_AI_UNSC_tropical.sqf @@ -0,0 +1,983 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "UNSC"] call _fnc_saveToTemplate; +["spawnMarkerName", "UNSC Infinity"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_unsc_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_unsc"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["OPTRE_M12_FAV_APC"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["OPTRE_M12_LRV"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["OPTRE_M494"]] call _fnc_saveToTemplate; + +["staticHowitzers", []] call _fnc_saveToTemplate; +["howitzerMagazineHE", ""] call _fnc_saveToTemplate; +["vehicleRadar", "B_Radar_System_01_F"] call _fnc_saveToTemplate; +["vehicleSam", "OPTRE_Lance"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_M813_TT", "OPTRE_M12_FAV"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["OPTRE_M12_LRV", "OPTRE_M12A1_LRV"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["OPTRE_m1087_stallion_cover_unsc"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["OPTRE_m1087_stallion_unsc_resupply"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["OPTRE_m1087_stallion_unsc_repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["OPTRE_m1087_stallion_unsc_refuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["OPTRE_m1087_stallion_unsc_medical"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +private _APCs = ["OPTRE_M412_IFV_UNSC", "OPTRE_M413_MGS_UNSC"]; //, "B_T_APC_Tracked_01_CRV_F"]; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["OPTRE_M808B_UNSC", "OPTRE_M808BM_UNSC"]] call _fnc_saveToTemplate; +["vehiclesAA", ["OPTRE_M808B2"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["optre_catfish_unarmed_f"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["optre_catfish_mg_f"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["optre_catfish_gauss_f"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["OPTRE_YSS_1000_A_VTOL"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["OPTRE_YSS_1000_A"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["OPTRE_Pelican_unarmed"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["OPTRE_UNSC_falcon"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["OPTRE_UNSC_falcon_s"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["OPTRE_UNSC_hornet_CAS"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["OPTRE_AV22C_Sparrowhawk"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["OPTRE_M875_SPH"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["OPTRE_M875_SPH", ["32Rnd_155mm_Mo_shells"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["OPTRE_Wombat_B"]] 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: +["vehiclesMilitiaLightArmed", ["OPTRE_M12_FAV"]] call _fnc_saveToTemplate; // technically not armed, but has FFV slots +["vehiclesMilitiaTrucks", ["OPTRE_m1087_stallion_unsc"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["OPTRE_M274_ATV"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["OPTRE_M813_TT"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; +["staticAT", ["OPTRE_Static_Gauss"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_Static_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", _APCs] call _fnc_saveToTemplate; + +///////////////////// +/// 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; +["sfVoices", ["Male01ENGB", "Male02ENG", "Male03ENGB", "Male04ENG", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["OPTRE_UNSC_Army_Uniform_R_BLK"]]; +_loadoutData set ["traitorVests", ["OPTRE_UNSC_M52A_Armor_Breacher_URB", "OPTRE_UNSC_M52A_Armor1_URB"]]; +_loadoutData set ["traitorHats", ["OPTRE_UNSC_CH252_Helmet_URB"]]; + +_loadoutData set ["officerUniforms", ["OPTRE_UNSC_Army_Uniform_BLKURB"]]; +_loadoutData set ["officerVests", ["OPTRE_UNSC_M52A_Armor_Sniper_URB", "V_Rangemaster_belt"]]; +_loadoutData set ["officerHats", ["OPTRE_PatrolCap_Navy"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT_Thermal"], [], ""] +]]; +_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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["OPTRE_M9_Frag"]]; +_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", ["OPTRE_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["rangefinders", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", ["OPTRE_UNSC_CH252_Helmet3_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", ["OPTRE_MJOLNIR_Undersuit"]]; +_sfLoadoutData set ["vests", ["OPTRE_MJOLNIR_MkVBArmor", "OPTRE_MJOLNIR_MkVBArmor_MkV4"]]; +_sfLoadoutData set ["backpacks", ["OPTRE_ANPRC_515_Spartan"]]; +_sfLoadoutData set ["helmets", ["OPTRE_MJOLNIR_MkVBHelmet", "OPTRE_MJOLNIR_MkVBHelmet_UA_HUL", "OPTRE_MJOLNIR_EOD", "OPTRE_MJOLNIR_CQC"]]; +_sfLoadoutData set ["sniHats", ["OPTRE_MJOLNIR_Commando", "OPTRE_MJOLNIR_Commando_HUL3"]]; +_sfLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_sfLoadoutData set ["rifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_sfLoadoutData set ["carbines", [ +["OPTRE_M392_DMR", "", "optre_dmr_light", "optre_br55hb_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], ""], +["OPTRE_Commando", "", "", "optic_Holosight_blk_F", ["Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["OPTRE_MA5BGL", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], ["3Rnd_HE_Grenade_shell", "3Rnd_HE_Grenade_shell", "OPTRE_1Rnd_SmokeGreen_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "optre_m7_laser", "optre_m7_sight", [], [], ""], +["OPTRE_M45ATAC", "", "optre_m45_flashlight_green", "", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["OPTRE_M247H_Etilka", "", "", "", ["OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball"], [], ""] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["OPTRE_M393_DMR", "", "", "optre_m393_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], "bipod_01_f_blk"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["OPTRE_M6G", "optre_m6_silencer", "optre_m6g_flashlight", "optre_m6g_scope", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["OPTRE_UNSC_Marine_Uniform"]]; +_eliteLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_MAR", "OPTRE_UNSC_M52A_Armor_Marksman_MAR"]]; +_eliteLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_eliteLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_MAR", "OPTRE_UNSC_CH252_Helmet2_MAR"]]; +_eliteLoadoutData set ["sniHats", ["OPTRE_UNSC_CH252A_Black_Helmet"]]; +_eliteLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_eliteLoadoutData set ["slRifles", [ +["OPTRE_BR55", "optre_ma5suppressor", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_eliteLoadoutData set ["rifles", [ +["OPTRE_MA5C", "optre_ma5suppressor", "", "optre_ma5c_smartlink", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["OPTRE_MA37B", "optre_ma5suppressor", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["OPTRE_M7", "optre_m7_silencer", "", "optre_m393_eotech", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "optre_ma5suppressor", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "optre_srs99d_suppressor", "", "optre_srs99c_scope", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["OPTRE_UNSC_Army_Uniform_WDL", "OPTRE_UNSC_Army_Uniform_R_WDL_SlimLeg", "OPTRE_UNSC_Army_Uniform_S_WDL_SlimLeg"]]; +_militaryLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor_Rifleman_WDL", "OPTRE_UNSC_M52A_Armor_Marksman_WDL"]]; +_militaryLoadoutData set ["Hvests", ["OPTRE_UNSC_M52A_Armor_Breacher_WDL"]]; +_militaryLoadoutData set ["glVests", ["OPTRE_UNSC_M52A_Armor_Grenadier_WDL"]]; +_militaryLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack", "OPTRE_UNSC_Rucksack_Medic", "OPTRE_UNSC_Rucksack_Heavy"]]; +_militaryLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet_WDL", "OPTRE_UNSC_CH252_Helmet2_WDL"]]; +_militaryLoadoutData set ["binoculars", ["OPTRE_Binoculars"]]; + +_militaryLoadoutData set ["slRifles", [ +["OPTRE_BR55", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["OPTRE_MA37B", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319N", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["OPTRE_M7", "", "", "", [], [], ""], +["OPTRE_M45", "", "", "", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["OPTRE_M247", "", "", "", ["OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box", "OPTRE_100Rnd_762x51_Box"], [], "bipod_01_F_blk"] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["OPTRE_M6G", "", "optre_m6g_flashlight", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["OPTRE_CMA_Uniform", "OPTRE_CMA_Uniform_Rolled"]]; +_policeLoadoutData set ["vests", ["OPTRE_Vest_CMA_Light", "OPTRE_Vest_CMA_Heavy"]]; +_policeLoadoutData set ["helmets", ["OPTRE_CMA_Helmet_ear", "OPTRE_CMA_Helmet_chops"]]; +_policeLoadoutData set ["NVGs", ["OPTRE_NVG_UAB_HUL", "OPTRE_NVG_UAB_UL_HUL"]]; + +_policeLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["OPTRE_M6G"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["OPTRE_FC_Marines_Uniform_WDL_L", "OPTRE_FC_Marines_Uniform_WDL"]]; +_militiaLoadoutData set ["vests", ["OPTRE_FC_M52B_Armor_Rifleman", "OPTRE_FC_M52B_Armor_Light"]]; +_militiaLoadoutData set ["backpacks", ["OPTRE_UNSC_Rucksack"]]; +_militiaLoadoutData set ["helmets", ["OPTRE_FC_CH255_Helmet", "OPTRE_FC_CH255_Helmet_Visor"]]; + +_militiaLoadoutData set ["rifles", [ +["OPTRE_MA5C", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["OPTRE_MA5A", "", "", "", ["OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag", "OPTRE_32Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["OPTRE_M319", "", "", "", ["M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell", "M319_HE_Grenade_Shell"], [], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["OPTRE_M12_SOC", "", "", "optre_m393_eotech", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["OPTRE_M73", "", "", "", ["OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box", "OPTRE_100Rnd_95x40_Box"], [], "bipod_01_F_blk"] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["OPTRE_M295_BMR_Woodland", "", "", "optre_m393_acog", ["OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag", "OPTRE_25Rnd_762x51_Mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", ["OPTRE_M6G"]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Olive"]]; +_crewLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor3_WDL"]]; +_crewLoadoutData set ["helmets", ["OPTRE_UNSC_CH252_Helmet2_Vacuum_WDL"]]; +_crewLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["OPTRE_UNSC_Navy_Uniform_Olive"]]; +_pilotLoadoutData set ["vests", ["OPTRE_UNSC_M52A_Armor2_WDL"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_VX19_Helmet"]]; +_pilotLoadoutData set ["carbines", [ +["OPTRE_M7", "", "", "optre_m12_optic", ["OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag", "OPTRE_60Rnd_5x23mm_Mag"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + + +private _squadLeaderTemplate = { + ["helmets"] call _fnc_setHelmet; // in this template we don't give any SL hats due to different skeletons + [["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; + ["NVGs"] call _fnc_addNVGs; // helmets look stupid without em +}; + +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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Rifleman", _riflemanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Medic", _medicTemplate, [["medic", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Engineer", _engineerTemplate, [["engineer", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true], ["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Grenadier", _grenadierTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["LAT", _latTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AT", _atTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["AA", _aaTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["MachineGunner", _machineGunnerTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Marksman", _marksmanTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]], + ["Sniper", _sniperTemplate, [["baseClass", "OPTRE_FC_Spartan_MkVI", false]]] +]; + +[_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; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [["baseClass", "OPTRE_Spartan3_Soldier_TeamLeader", true]], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Civ.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Civ.sqf new file mode 100644 index 0000000000..d6ce57454e --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Civ.sqf @@ -0,0 +1,143 @@ +////////////////////////////// +// Civilian Information // +////////////////////////////// + +////////////////////////// +// Vehicles // +////////////////////////// + +["vehiclesCivCar", [ + "OPTRE_Genet", 2.0, + "OPTRE_M12_CIV2", 0.5 +]] call _fnc_saveToTemplate; + +["vehiclesCivIndustrial", [ + "OPTRE_cart", 0.5, + "OPTRE_forklift", 0.5 +]] call _fnc_saveToTemplate; + +["vehiclesCivBoat", [ + "C_Boat_Civil_01_F", 0.5, + "C_Scooter_Transport_01_F", 0.5 +]] call _fnc_saveToTemplate; + +["vehiclesCivRepair", ["OPTRE_M914_RV", 0.3]] call _fnc_saveToTemplate; + +["vehiclesCivMedical", ["OPTRE_M12_FAV_APC_MED", 0.1]] call _fnc_saveToTemplate; + +["vehiclesCivFuel", [ + "C_Van_01_fuel_F", 0.2, + "C_Truck_02_fuel_F", 0.1 +]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["faces", ["GreekHead_A3_02", "GreekHead_A3_03", "GreekHead_A3_04", "GreekHead_A3_05", "GreekHead_A3_06", +"GreekHead_A3_07", "GreekHead_A3_08", "GreekHead_A3_09", "Ioannou", "Barklem", "AfricanHead_02", +"AsianHead_A3_02", "AsianHead_A3_03", "WhiteHead_05"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _civUniforms = [ + "U_C_ArtTShirt_01_v1_F", + "U_C_ArtTShirt_01_v2_F", + "U_C_ArtTShirt_01_v3_F", + "U_C_ArtTShirt_01_v4_F", + "U_C_ArtTShirt_01_v5_F", + "U_C_ArtTShirt_01_v6_F", + "U_OrestesBody", + "U_C_HunterBody_grn", + "U_I_L_Uniform_01_tshirt_skull_F", + "U_I_L_Uniform_01_tshirt_black_F", + "U_I_L_Uniform_01_tshirt_sport_F", + "U_C_Uniform_Scientist_02_formal_F", + "U_C_Uniform_Scientist_02_F", + "U_C_Uniform_Scientist_01_F" +]; + +private _pressUniforms = [ + "OPTRE_ONI_Researcher_Uniform_Light", + "OPTRE_ONI_Researcher_Uniform" +]; + +private _workerUniforms = [ + "OPTRE_UNSC_Navy_Uniform_Orange", + "OPTRE_UNSC_Navy_Uniform_Gray", + "OPTRE_UNSC_Navy_Uniform_Red", + "OPTRE_UNSC_Navy_Uniform_White" +]; + +private _dlcUniforms = []; + +["uniforms", _civUniforms + _pressUniforms + _workerUniforms + _dlcUniforms] call _fnc_saveToTemplate; + +private _civhats = [ + "H_EarProtectors_white_F", + "H_EarProtectors_yellow_F", + "H_EarProtectors_black_F", + "H_EarProtectors_orange_F", + "OPTRE_Cap_FinalDawn", + "OPTRE_UNSC_Watchcap", + "OPTRE_h_Booniehat_Grey" +]; + +["headgear", _civHats] call _fnc_saveToTemplate; + +private _loadoutData = call _fnc_createLoadoutData; + +_loadoutData set ["uniforms", _civUniforms]; +_loadoutData set ["pressUniforms", _pressUniforms]; +_loadoutData set ["workerUniforms", _workerUniforms]; +_loadoutData set ["pressVests", ["OPTRE_FC_M52B_Armor_Vest_SNO"]]; +_loadoutData set ["helmets", _civHats]; +_loadoutData set ["pressHelmets", ["H_PASGT_basic_blue_press_F"]]; + +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; + + +private _manTemplate = { + ["helmets"] call _fnc_setHelmet; + ["uniforms"] call _fnc_setUniform; + + ["items_medical_standard"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; +}; +private _workerTemplate = { + ["helmets"] call _fnc_setHelmet; + ["workerUniforms"] call _fnc_setUniform; + + ["items_medical_standard"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; +}; +private _pressTemplate = { + ["pressHelmets"] call _fnc_setHelmet; + ["pressVests"] call _fnc_setVest; + ["pressUniforms"] call _fnc_setUniform; + + ["items_medical_standard"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; +}; + +private _prefix = "militia"; +private _unitTypes = [ + ["Press", _pressTemplate], + ["Worker", _workerTemplate], + ["Man", _manTemplate] +]; + +[_prefix, _unitTypes, _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Reb_Ins.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Reb_Ins.sqf new file mode 100644 index 0000000000..3d56bcb95b --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Reb_Ins.sqf @@ -0,0 +1,200 @@ +/////////////////////////// +// Rebel Information // +/////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "Insurrection"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_insurrection_ca.paa)] call _fnc_saveToTemplate; +["flagMarkerType", "a3u_flag_optre_insurrection"] call _fnc_saveToTemplate; + +/* OVERWRITES */ +// ["vehicleMedicalBox", [""]] call _fnc_saveToTemplate; +// ["vehicleLightSource", "Land_LampShabby_F"] call _fnc_saveToTemplate; +["vehicleFuelDrum", ["Land_OPTRE_barrel_hydrogen", 150]] call _fnc_saveToTemplate; +// ["vehicleFuelTank", ["B_Slingload_01_Fuel_F", 1000]] call _fnc_saveToTemplate; +// ["vehicleRepairStation", ["Land_RepairDepot_01_green_F", 5000]] call _fnc_saveToTemplate; +// ["vehicleAmmoStation", ["Box_IND_AmmoVeh_F", 5000]] call _fnc_saveToTemplate; +// ["vehicleHealthStation", ["Land_MedicalTent_01_MTP_closed_F", 75]] call _fnc_saveToTemplate; +/* OVERWRITES */ + +["vehiclesBasic", ["OPTRE_M274_ATV_Ins"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["OPTRE_M12_FAV_ins"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["OPTRE_M12_LRV_ins"]] call _fnc_saveToTemplate; +["vehiclesTruck", ["OPTRE_m1015_mule_ins"]] call _fnc_saveToTemplate; +["vehiclesAT", ["OPTRE_M12A1_LRV_ins"]] call _fnc_saveToTemplate; +private _vehicleAA = []; + +["vehiclesBoat", ["optre_catfish_ins_mg_f"]] call _fnc_saveToTemplate; + +["vehiclesPlane", ["OPTRE_Pelican_unarmed_ins"]] call _fnc_saveToTemplate; + +private _vehiclesCivCar = ["OPTRE_M12_CIV", "OPTRE_Genet"]; +["vehiclesCivTruck", ["C_Van_01_transport_F", "C_Van_02_transport_F", "C_Van_02_vehicle_F"]] call _fnc_saveToTemplate; +["vehiclesCivHeli", ["OPTRE_ins_falcon_unarmed"]] call _fnc_saveToTemplate; +["vehiclesCivBoat", ["optre_catfish_ins_unarmed_f"]] call _fnc_saveToTemplate; + +["staticMGs", ["OPTRE_Static_M247H_Tripod"]] call _fnc_saveToTemplate; +["staticAT", ["OPTRE_Static_Gauss"]] call _fnc_saveToTemplate; +["staticAA", ["OPTRE_Static_AA"]] call _fnc_saveToTemplate; +["staticMortars", ["I_G_Mortar_01_F"]] call _fnc_saveToTemplate; +["staticMortarMagHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; +["staticMortarMagSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; +["staticMortarMagFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +["mineAT", "ATMine_Range_Mag"] call _fnc_saveToTemplate; +["mineAPERS", "APERSMine_Range_Mag"] call _fnc_saveToTemplate; + +["breachingExplosivesAPC", [["DemoCharge_Remote_Mag", 1]]] call _fnc_saveToTemplate; +["breachingExplosivesTank", [["SatchelCharge_Remote_Mag", 1], ["DemoCharge_Remote_Mag", 2]]] call _fnc_saveToTemplate; + +["vehiclesCivCar", _vehiclesCivCar] call _fnc_saveToTemplate; + +["vehiclesAA", _vehicleAA] call _fnc_saveToTemplate; + +["blackMarketStock", [ + ["OPTRE_Static_M247H_Shielded_Tripod", 3000, "STATICMG", {tierWar > 3}], + ["OPTRE_Static_M41", 4500, "STATICMG", {tierWar > 4}], + + ["OPTRE_M914_RV", 1750, "CAR", {true}], + ["OPTRE_M813_TT", 2050, "CAR", {true}], + ["OPTRE_M12_FAV_APC", 2500, "CAR", {true}], + + ["OPTRE_M808S", 20000, "TANK", {tierWar > 7 && {{sidesX getVariable [_x,sideUnknown] isEqualTo teamPlayer} count (milbases + airportsX) > 0}}], + ["OPTRE_M313_UNSC", 50000, "TANK", {tierWar > 7 && {{sidesX getVariable [_x,sideUnknown] isEqualTo teamPlayer} count (milbases + airportsX) > 0}}], + + ["OPTRE_YSS_1000_A_VTOL", 40000, "PLANE", {tierWar > 7 && {{sidesX getVariable [_x,sideUnknown] isEqualTo teamPlayer} count airportsX > 0}}] +]] call _fnc_saveToTemplate; + +/////////////////////////// +// Rebel Starting Gear // +/////////////////////////// + +private _initialRebelEquipment = [ +"OPTRE_M6G", +"OPTRE_M45", +"OPTRE_8Rnd_127x40_Mag","OPTRE_12Rnd_8Gauge_Pellets","MiniGrenade","SmokeShell", +["IEDUrbanSmall_Remote_Mag", 10], ["IEDLandSmall_Remote_Mag", 10], ["IEDUrbanBig_Remote_Mag", 3], ["IEDLandBig_Remote_Mag", 3], +"B_FieldPack_blk","B_AssaultPack_blk","B_Kitbag_rgr", +"V_SmershVest_01_F","V_BandollierB_rgr","V_Chestrig_oli", +"Binocular", +"optre_m6g_flashlight","optre_m45_flashlight"]; + +if (A3A_hasTFAR) then {_initialRebelEquipment append ["tf_microdagr","tf_anprc154"]}; +if (A3A_hasTFAR && startWithLongRangeRadio) then {_initialRebelEquipment append ["OPTRE_ANPRC_521_URF","OPTRE_ANPRC_515"]}; +if (A3A_hasTFARBeta) then {_initialRebelEquipment append ["TFAR_microdagr","TFAR_anprc154"]}; +if (A3A_hasTFARBeta && startWithLongRangeRadio) then {_initialRebelEquipment append ["OPTRE_ANPRC_521_URF","OPTRE_ANPRC_515"]}; +_initialRebelEquipment append ["Chemlight_blue","Chemlight_green","Chemlight_red","Chemlight_yellow"]; +["initialRebelEquipment", _initialRebelEquipment] call _fnc_saveToTemplate; + +private _rebUniforms = [ + "OPTRE_Ins_URF_Combat_Uniform", + "OPTRE_Ins_ER_jacket_od_surplus", + "OPTRE_Ins_ER_jacket_surgeon1", + "OPTRE_Ins_ER_jacket_surgeon2", + "OPTRE_Ins_ER_jacket_surplus_OD", + "OPTRE_Ins_ER_jacket_surplus_brown", + "OPTRE_Ins_ER_jacket_surplus_redshirt", + "OPTRE_Ins_ER_rolled_surplus_crimson", + "OPTRE_Ins_ER_rolled_surplus_black" +]; + +private _dlcUniforms = []; + +["uniforms", _rebUniforms + _dlcUniforms] call _fnc_saveToTemplate; + +["headgear", [ + "H_Booniehat_khk_hs", + "H_Booniehat_tan", + "H_Cap_tan", + "H_Cap_oli_hs", + "H_Cap_blk", + "H_Cap_headphones", + "H_ShemagOpen_tan", + "H_Shemag_olive_hs", + "OPTRE_Cap_FinalDawn", + "OPTRE_h_PatrolCap_Green", + "OPTRE_UNSC_Watchcap" +]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["faces", ["GreekHead_A3_02","GreekHead_A3_03","GreekHead_A3_04", +"GreekHead_A3_05","GreekHead_A3_06","GreekHead_A3_07","GreekHead_A3_08", +"GreekHead_A3_09","Ioannou","Mavros"]] call _fnc_saveToTemplate; +["voices", ["Male01GRE", "Male02GRE", "Male03GRE", "Male04GRE", "Male05GRE", "Male06GRE"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; +_loadoutData set ["binoculars", ["Binocular"]]; + +_loadoutData set ["uniforms", _rebUniforms]; + +_loadoutData set ["glasses", ["G_Shades_Black", "G_Shades_Blue", "G_Shades_Green", "G_Shades_Red", "G_Aviator", "G_Spectacles", "G_Spectacles_Tinted", "G_Sport_BlackWhite", "G_Sport_Blackyellow", "G_Sport_Greenblack", "G_Sport_Checkered", "G_Sport_Red", "G_Squares", "G_Squares_Tinted"]]; +_loadoutData set ["goggles", ["G_Lowprofile"]]; +_loadoutData set ["facemask", ["G_Bandanna_blk", "G_Bandanna_oli", "G_Bandanna_khk", "G_Bandanna_tan", "G_Bandanna_beast", "G_Bandanna_shades", "G_Bandanna_sport", "G_Bandanna_aviator"]]; + +_loadoutData set ["items_medical_basic", ["BASIC"] call A3A_fnc_itemset_medicalSupplies]; +_loadoutData set ["items_medical_standard", ["STANDARD"] call A3A_fnc_itemset_medicalSupplies]; +_loadoutData set ["items_medical_medic", ["MEDIC"] call A3A_fnc_itemset_medicalSupplies]; +_loadoutData set ["items_miscEssentials", [] call A3A_fnc_itemset_miscEssentials]; + +//////////////////////// +// Rebel Unit Types // +///////////////////////. + +private _squadLeaderTemplate = { + ["uniforms"] call _fnc_setUniform; + [selectRandomWeighted [[], 1.25, "glasses", 1, "goggles", 0.75, "facemask", 1]] call _fnc_setFacewear; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; + ["binoculars"] call _fnc_addBinoculars; +}; + +private _riflemanTemplate = { + ["uniforms"] call _fnc_setUniform; + [selectRandomWeighted [[], 1.25, "glasses", 1, "goggles", 0.75, "facemask", 1]] call _fnc_setFacewear; + + ["items_medical_standard"] call _fnc_addItemSet; + ["items_miscEssentials"] call _fnc_addItemSet; + + ["maps"] call _fnc_addMap; + ["watches"] call _fnc_addWatch; + ["compasses"] call _fnc_addCompass; +}; + +private _prefix = "militia"; +private _unitTypes = [ + ["Petros", _squadLeaderTemplate], + ["SquadLeader", _squadLeaderTemplate], + ["Rifleman", _riflemanTemplate], + ["staticCrew", _riflemanTemplate], + ["Medic", _riflemanTemplate, [["medic", true]]], + ["Engineer", _riflemanTemplate, [["engineer", true]]], + ["ExplosivesExpert", _riflemanTemplate, [["explosiveSpecialist", true]]], + ["Grenadier", _riflemanTemplate], + ["LAT", _riflemanTemplate], + ["AT", _riflemanTemplate], + ["AA", _riflemanTemplate], + ["MachineGunner", _riflemanTemplate], + ["Marksman", _riflemanTemplate], + ["Sniper", _riflemanTemplate], + ["Unarmed", _riflemanTemplate] +]; + +[_prefix, _unitTypes, _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Riv_Ins.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Riv_Ins.sqf new file mode 100644 index 0000000000..5084da8bf1 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Riv_Ins.sqf @@ -0,0 +1,732 @@ +//////////////////////////// +// Rivals Information // +/////////////////////////// + +["name", "UNSC Seperatists"] call _fnc_saveToTemplate; +["nameLeader", "Robert Watts"] call _fnc_saveToTemplate; + +////////////////////////////////////// +// Identities // +////////////////////////////////////// +["faces", ["GreekHead_A3_02","GreekHead_A3_03","GreekHead_A3_04", +"GreekHead_A3_05","GreekHead_A3_06","GreekHead_A3_07","GreekHead_A3_08", +"GreekHead_A3_09","Ioannou","Mavros"]] call _fnc_saveToTemplate; +["voices", ["Male01GRE", "Male02GRE", "Male03GRE", "Male04GRE", "Male05GRE", "Male06GRE"]] 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; + +["vehiclesRivalsLightArmed", ["OPTRE_M12_LRV_ins"]] call _fnc_saveToTemplate; +["vehiclesRivalsTrucks", ["OPTRE_m1015_mule_ins"]] call _fnc_saveToTemplate; +["vehiclesRivalsCars", ["OPTRE_M12_FAV_ins"]] call _fnc_saveToTemplate; +["vehiclesRivalsAPCs", ["OPTRE_M12_ins_APC"]] call _fnc_saveToTemplate; +["vehiclesRivalsTanks", ["OPTRE_M808B_INS"]] call _fnc_saveToTemplate; +["vehiclesRivalsHelis", ["OPTRE_UNSC_falcon_armed_S_ins"]] call _fnc_saveToTemplate; +["vehiclesRivalsUavs", ["O_UAV_01_F"]] call _fnc_saveToTemplate; + +["staticLowWeapons", [ + "OPTRE_Static_M247H_Tripod" +]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; + +["handGrenadeAmmo", []] call _fnc_saveToTemplate; +["mortarAmmo", []] call _fnc_saveToTemplate; + +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// +private _loadoutData = call _fnc_createLoadoutData; + +_loadoutData set ["ATMines", ["ATMine_Range_Mag"]]; +_loadoutData set ["APMines", ["APERSMine_Range_Mag", "APERSBoundingMine_Range_Mag"]]; +_loadoutData set ["lightExplosives", ["IEDLandSmall_Remote_Mag"]]; +_loadoutData set ["heavyExplosives", ["IEDLandBig_Remote_Mag"]]; + +_loadoutData set ["antiInfantryGrenades", ["OPTRE_M9_Frag"]]; +_loadoutData set ["smokeGrenades", ["SmokeShell"]]; +_loadoutData set ["signalsmokeGrenades", ["SmokeShellRed"]]; + +_loadoutData set ["facewear", [ + "G_Balaclava_blk", + "OPTRE_HUD_r_Glasses" +]]; +_loadoutData set ["fullmask", ["G_Balaclava_TI_blk_F"]]; + +_loadoutData set ["headgear", [ + "OPTRE_Ins_URF_Helmet1", + "OPTRE_Ins_URF_Helmet2" +]]; + +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; +_loadoutData set ["radios", ["ItemRadio"]]; +_loadoutData set ["gpses", ["ItemGPS"]]; +_loadoutData set ["NVGs", ["OPTRE_NVG"]]; +_loadoutData set ["binoculars", ["OPTRE_Binoculars"]]; +_loadoutData set ["Rangefinder", ["OPTRE_Smartfinder"]]; + +_loadoutData set ["uniforms", [ + "OPTRE_Ins_URF_Combat_Uniform" +]]; + +_loadoutData set ["offuniforms", ["OPTRE_Ins_URF_Combat_Uniform"]]; +_loadoutData set ["vests", ["OPTRE_Ins_URF_Armor1"]]; +_loadoutData set ["heavyVests", ["OPTRE_UNSC_M52A_Armor_Rifleman_WDL"]]; +_loadoutData set ["atBackpacks", ["OPTRE_ILCS_Rucksack_Heavy"]]; +_loadoutData set ["backpacks", ["OPTRE_ILCS_Rucksack_Black"]]; +_loadoutData set ["helmets", ["OPTRE_Ins_URF_Helmet4", "OPTRE_Ins_URF_Helmet3"]]; +_loadoutData set ["heavyHelmets", ["OPTRE_UNSC_CH252_Helmet_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]; + +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", []]; + +_loadoutData set ["rifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_loadoutData set ["tunedRifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_loadoutData set ["enforcerRifles", [ +["OPTRE_MA5B", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], [], ""], +["OPTRE_BR55HB", "", "", "optre_br55hb_scope", ["OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag", "OPTRE_36Rnd_95x40_Mag"], [], ""] +]]; +_loadoutData set ["carbines", [ +["OPTRE_M392_DMR", "", "optre_dmr_light", "optre_br55hb_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], ""], +["OPTRE_Commando", "", "", "optic_Holosight_blk_F", ["Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag", "Commando_20Rnd_65_Mag"], [], ""] +]]; +_loadoutData set ["grenadeLaunchers", [ +["OPTRE_MA5BGL", "", "", "optre_ma5_smartlink", ["OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag", "OPTRE_60Rnd_762x51_Mag"], ["3Rnd_HE_Grenade_shell", "3Rnd_HE_Grenade_shell", "OPTRE_1Rnd_SmokeGreen_Grenade_shell"], ""] +]]; +_loadoutData set ["SMGs", [ +["OPTRE_M7", "", "optre_m7_laser", "optre_m7_sight", [], [], ""], +["OPTRE_M45ATAC", "", "optre_m45_flashlight_green", "", [], [], ""] +]]; +_loadoutData set ["machineGuns", [ +["OPTRE_M247H_Etilka", "", "", "", ["OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball", "OPTRE_200Rnd_127x99_M247H_Etilka_Ball"], [], ""] +]]; +_loadoutData set ["marksmanRifles", [ +["OPTRE_M393_DMR", "", "", "optre_m393_scope", ["OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag", "OPTRE_15Rnd_762x51_Mag"], [], "bipod_01_f_blk"] +]]; +_loadoutData set ["sniperRifles", [ +["OPTRE_SRS99C", "", "", "optre_srs99c_scope", [], [], ""] +]]; +_loadoutData set ["sidearms", [ +["OPTRE_M6G", "optre_m6_silencer", "optre_m6g_flashlight", "optre_m6g_scope", [], [], ""] +]]; + +_loadoutData set ["rifles", [ + ["PRACS_galil_ACE23_SF", "rhsusf_acc_sf3p556", "", "", ["PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag"], [], ""], + ["rhs_weap_ak105_zenitco01_b33", "", "", "", ["rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK"], [], ""] +]]; +_loadoutData set ["tunedRifles", [ + ["rhs_weap_ak103_zenitco01_b33_grip1", "rhs_acc_dtk1", "rhs_acc_perst1ik_ris", "rhs_acc_1p87", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], [], "rhs_acc_grip_ffg2"], + ["PRACS_galil_ACE23", "", "rhsusf_acc_anpeq15a", "rhsusf_acc_eotech_xps3", ["PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag"], [], ""] +]]; +_loadoutData set ["enforcerRifles", [ + ["rhs_weap_ak74m", "rhs_acc_dtk1", "", "rhs_acc_pkas", ["rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK"], [], ""], + ["rhs_weap_ak74m", "rhs_acc_dtk", "", "rhs_acc_1p63", ["rhs_30Rnd_545x39_7N10_camo_AK", "rhs_30Rnd_545x39_7N10_camo_AK", "rhs_30Rnd_545x39_7N10_camo_AK"], [], ""], + ["rhs_weap_ak74m", "rhs_acc_dtk3", "", "rhs_acc_ekp8_02", ["rhs_45Rnd_545X39_7N6_AK", "rhs_45Rnd_545X39_7N6_AK", "rhs_45Rnd_545X39_7N6M_AK"], [], ""] +]]; +_loadoutData set ["carbines", [ + ["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""], + ["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""] +]]; +_loadoutData set ["grenadeLaunchers", [ + ["rhs_weap_ak103_gp25", "rhs_acc_dtk", "", "", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], ["rhs_VOG25", "rhs_VOG25", "rhs_VOG25P", "rhs_GRD40_White"], ""], + ["rhs_weap_ak103_gp25", "rhs_acc_dtk", "", "rhs_acc_ekp8_02", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], ["rhs_VOG25", "rhs_VOG25", "rhs_VOG25P", "rhs_GRD40_White"], ""] +]]; +_loadoutData set ["machineGuns", [ + ["rhs_weap_ak103", "rhs_acc_dtk", "", "", ["rhs_75Rnd_762x39mm", "rhs_75Rnd_762x39mm", "rhs_75Rnd_762x39mm_tracer", "rhs_75Rnd_762x39mm_89"], [], ""], + ["PRACS_M60E4", "", "", "", ["rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51"], [], ""] +]]; +_loadoutData set ["marksmanRifles", [ + ["rhs_weap_m76", "", "", "rhs_acc_pso1m2", ["rhsgref_10Rnd_792x57_m76", "rhsgref_10Rnd_792x57_m76", "rhssaf_10Rnd_792x57_m76_tracer"], [], ""], + ["PRACS_g3a4", "", "", "rhsusf_acc_m8541_low", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], [], ""] +]]; +_loadoutData set ["lightHELaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["lightATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["OPTRE_M41_SSR"]]; +_loadoutData set ["missileATLaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["OPTRE_M41_SSR", "", "", "", ["OPTRE_M41_Twin_HEAT_Thermal"], [], ""] +]]; +_loadoutData set ["sidearms", ["rhs_weap_makarov_pm", "rhs_weap_6p53", "rhs_weap_tt33", "rhs_weap_cz99"]]; + +////////////////////////// +// Misc Loadouts // +////////////////////////// + +private _crewLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_crewLoadoutData set ["vests", ["OPTRE_Vest_CMA_Light"]]; +_crewLoadoutData set ["helmets", ["OPTRE_UNSC_CH252A_Helmet"]]; + +private _pilotLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["vests", ["OPTRE_Vest_CMA_Light"]]; +_pilotLoadoutData set ["helmets", ["OPTRE_FC_VX19_Helmet"]]; + + +// ##################### DO NOT TOUCH ANYTHING BELOW THIS LINE ##################### + + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// +//These define the loadouts for different unit types. +//For example, rifleman, grenadier, squad leader, etc. +//In 95% of situations, you *should not need to edit these*. +//Almost all factions can be set up just by modifying the loadout data above. +//However, these exist in case you really do want to do a lot of custom alterations. + +private _cellLeaderTemplate = { + if (random 100 > 60) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + [["offuniforms", "uniforms"] call _fnc_fallback] call _fnc_setUniform; + + [selectRandom ["grenadeLaunchers", "rifles"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 5] call _fnc_addAdditionalMuzzleMagazines; + + if (random 1 < 0.15) then { + ["lightATLaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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", 1] 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 _mercenaryTemplate = { + if (random 100 > 60) then { + ["heavyHelmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["heavyVests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [selectRandom ["grenadeLaunchers", "rifles", "tunedRifles"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["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", 1] 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 _enforcerTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [["enforcerRifles", "rifles"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 4] call _fnc_addMagazines; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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", 1] 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 _partisanTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + }; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] 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 _minutemanTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + if (random 1 < 0.15) then { + ["lightATLaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + }; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] 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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["carbines"] 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 _saboteurTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] 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; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] 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 _atTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["ATLaunchers"] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 4] 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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["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 _oppressorTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["machineGuns"] call _fnc_setPrimary; + ["primary", 6] 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 _sharpshooterTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["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; + ["Rangefinder"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _crewTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1.25, "facewear", 1]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["carbines"] 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; + [selectRandomWeighted [[], 1.5, "facewear", 1, "fullmask", 1]] call _fnc_setFacewear; + ["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 _commanderTemplate = { + [selectRandomWeighted ["helmets", 0.3, "headgear", 0.7]] call _fnc_setHelmet; + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["vests"] call _fnc_setVest; + [["offuniforms", "uniforms"] call _fnc_fallback] 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; +}; + +//////////////////////////////////////////////////////////////////////////////////////// +// 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. +//////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////// +// Rivals Units // +/////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["CellLeader", _cellLeaderTemplate, [], [_prefix, true]], + ["Mercenary", _mercenaryTemplate, [], [_prefix, true]], + ["Minuteman", _minutemanTemplate, [], [_prefix, true]], + ["Enforcer", _enforcerTemplate, [], [_prefix, true]], + ["Partisan", _partisanTemplate, [], [_prefix, true]], + ["Saboteur", _saboteurTemplate, [], [_prefix, true]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix, true]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix, true]], + ["SpecialistAT", _atTemplate, [], [_prefix, true]], + ["SpecialistAA", _aaTemplate, [], [_prefix, true]], + ["Oppressor", _oppressorTemplate, [], [_prefix, true]], + ["Sharpshooter", _sharpshooterTemplate, [], [_prefix, true]] +]; + +[_prefix, _unitTypes, _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// +[_prefix, [["Crew", _crewTemplate, [], [_prefix, true]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Pilot", _crewTemplate, [], [_prefix, true]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Commander", _commanderTemplate, [], [_prefix, true]]], _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Unarmed", _unarmedTemplate, [], [_prefix, true]]], _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Vehicle_Attributes.sqf b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Vehicle_Attributes.sqf new file mode 100644 index 0000000000..d2cef711cc --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/OPTRE_Vehicle_Attributes.sqf @@ -0,0 +1,9 @@ +["attributesVehicles", [ + // Transport helis + ["OPTRE_UNSC_falcon", ["cost", 200]], + ["OPTRE_UNSC_falcon_S", ["cost", 300]], + ["OPTRE_Pelican_unarmed", ["cost", 400]], + // Attack helis + ["OPTRE_UNSC_hornet", ["cost", 400]], + ["OPTRE_AV22C_Sparrowhawk", ["cost", 500]] +]] call _fnc_saveToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.paa b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.paa new file mode 100644 index 0000000000..9688d54c93 Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.paa differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.png b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.png new file mode 100644 index 0000000000..b6901f0347 Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_covenant_ca.png differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.paa b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.paa new file mode 100644 index 0000000000..539d33e02f Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.paa differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.png b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.png new file mode 100644 index 0000000000..a6dac91d8c Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_insurrection_ca.png differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.paa b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.paa new file mode 100644 index 0000000000..1e434a8c7b Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.paa differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.png b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.png new file mode 100644 index 0000000000..4dc5a9632e Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.png differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.xcf b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.xcf new file mode 100644 index 0000000000..2957b47c88 Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_mod_ca.xcf differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_side_ca.xcf b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_side_ca.xcf new file mode 100644 index 0000000000..198abbe561 Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_side_ca.xcf differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.paa b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.paa new file mode 100644 index 0000000000..7a30fbed9f Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.paa differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.png b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.png new file mode 100644 index 0000000000..afc7bce57a Binary files /dev/null and b/A3A/addons/core/Templates/Templates/OPTRE/images/flag_unsc_ca.png differ diff --git a/A3A/addons/core/Templates/Templates/OPTRE/templates.hpp b/A3A/addons/core/Templates/Templates/OPTRE/templates.hpp new file mode 100644 index 0000000000..3c6e3f7d46 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/OPTRE/templates.hpp @@ -0,0 +1,96 @@ + class OPTRE_Base + { + logo = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_mod_ca.paa); + basepath = QPATHTOFOLDER(Templates\Templates\OPTRE); + priority = 16; + climate[] = {"temperate","tropical","arid","arctic"}; + }; + + /*------------- START UNSC -------------*/ + class OPTRE_UNSC : OPTRE_Base + { + requiredAddons[] = {"OPTRE_Core", "OPTRE_FC_Core", "A3U_Functions"}; // required addons (cfgPatches) to be loaded for this to show up + side = "Occ"; + flagTexture = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_unsc_ca.paa); + name = "UNSC"; + file = "OPTRE_AI_UNSC"; + climate[] = {"arid", "temperate"}; + description = "The UNSC"; + }; + + class OPTRE_UNSC_desert : OPTRE_UNSC + { + name = "UNSC Desert"; + file = "OPTRE_AI_UNSC_desert"; + climate[] = {"arid", "temperate"}; + }; + + class OPTRE_UNSC_snow : OPTRE_UNSC + { + name = "UNSC Snow"; + file = "OPTRE_AI_UNSC_snow"; + climate[] = {"arctic"}; + }; + + class OPTRE_UNSC_tropical : OPTRE_UNSC + { + name = "UNSC Tropical"; + file = "OPTRE_AI_UNSC_tropical"; + climate[] = {"tropical"}; + }; + + // class OPTRE_UNSC_ODST : OPTRE_UNSC + // { + // requiredAddons[] = {"OPTRE_Core", "OPTRE_FC_Core"}; // required addons (cfgPatches) to be loaded for this to show up + // name = "UNSC (ODST)"; + // file = "OPTRE_AI_UNSC_ODST"; + // }; + /*------------- END UNSC -------------*/ + + /*------------- START COVENANT -------------*/ + class OPTRE_Cov : OPTRE_Base + { + requiredAddons[] = {"OPTRE_Core", "OPTRE_FC_Core", "A3U_Functions"}; + side = "Inv"; + flagTexture = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_covenant_ca.paa); + name = "Covenant (Elites)"; + file = "OPTRE_AI_Covenant"; + description = "The Covenant (With OPTRE elites)"; + }; + + class OPTRE_Cov_Grunts : OPTRE_Cov + { + requiredAddons[] = {"OPTRE_Core", "OPTRE_FC_Core", "A3U_Functions", "WBK_Halo_Alients"}; + name = "Covenant (WBK Elites)"; + file = "OPTRE_AI_Covenant_Grunts"; + description = "The Covenant (With Webknights elites and grunts)"; + }; + /*------------- END COVENANT -------------*/ + + class OPTRE_Reb : OPTRE_Base + { + requiredAddons[] = {"OPTRE_Core"}; + side = "Reb"; + flagTexture = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_insurrection_ca.paa); + name = "Insurrectionists"; + file = "OPTRE_Reb_Ins"; + description = "Led by Jerald Mulkey Ander, this faction fights to be free from the reign of the UNSC. They are similar to the United Rebel Front, but have no army to back up their cause. Yet."; + }; + + class OPTRE_Riv : OPTRE_Reb + { + side = "Riv"; + flagTexture = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_insurrection_ca.paa); + name = "United Rebel Front"; + file = "OPTRE_Riv_Ins"; + description = "Led by Colonel Watts, this faction originally fought with the insurrectionists. They hate each other due to different ideals, but still use similar equipment."; + }; + + class OPTRE_Civ : OPTRE_Reb + { + side = "Civ"; + flagTexture = QPATHTOFOLDER(Templates\Templates\OPTRE\images\flag_insurrection_ca.paa); + name = "OPTRE Civs"; + file = "OPTRE_Civ"; + description = "OPTRE Civilians."; + }; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/RACS/RACS_AI_Army.sqf b/A3A/addons/core/Templates/Templates/RACS/RACS_AI_Army.sqf new file mode 100644 index 0000000000..e672cd2b45 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/RACS/RACS_AI_Army.sqf @@ -0,0 +1,991 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "Royal Army Corps"] call _fnc_saveToTemplate; +["spawnMarkerName", "Sahrani Army Support Corridor"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", "\PRACS_Core\Flags\KingdomofSahrani_co_mrk.paa"] call _fnc_saveToTemplate; // QPATHTOFOLDER(Templates\Templates\RACS\flag_sahrani_co.paa) +["flagMarkerType", "PRACS_Sahrani_Flag_mrk"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["PRACS_M1117"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["PRACS_M1117", "PRACS_BMR_M2"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["PRACS_M88", "PRACS_FV107"]] call _fnc_saveToTemplate; + +["staticHowitzers", ["PRACS_M1"]] call _fnc_saveToTemplate; +["howitzerMagazineHE", "PRACS_155mm_HE_M1_x25"] call _fnc_saveToTemplate; +["vehicleRadar", "PRACS_MPQ64_Sentinel"] call _fnc_saveToTemplate; +["vehicleSam", "PRACS_MiM23_HAWK"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["B_Quadbike_01_F"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["PRACS_M1025", "PRACS_M1025_marine"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["PRACS_M1025_M2", "PRACS_M1151_M240"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["PRACS_M250_flat_bed", "PRACS_M250"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["PRACS_M250_flat_bed", "PRACS_M250"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["PRACS_M250_Ammo"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["PRACS_M250_Repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["PRACS_M250_fuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["PRACS_M250_AMB"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["PRACS_M1A1_AIM", "PRACS_M60A3"]] call _fnc_saveToTemplate; +["vehiclesAA", ["PRACS_M163_MACHBET", "PRACS_M163_VADS"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["B_Boat_Transport_01_F"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["PRACS_Mk5_SOCR"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["PRACS_BMR_HQ"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["PRACS_A4M", "PRACS_F16CJR"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["PRACS_MirageIII", "PRACS_F16CJ"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["PRACS_C130"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["PRACS_UH1H"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["PRACS_Sa330_Puma"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["PRACS_UH1H_CAS"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["PRACS_AH1S"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["PRACS_M109A6"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["PRACS_M109A6", ["PRACS_155mm_HE_M109A6_x25"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["B_UAV_02_CAS_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: +["vehiclesMilitiaLightArmed", ["PRACS_M1025_M2"]] call _fnc_saveToTemplate; +["vehiclesMilitiaTrucks", ["PRACS_M250_flat_bed"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["PRACS_M998_cargo_open"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["PRACS_M1097_Scout"]] call _fnc_saveToTemplate; + +["staticMGs", ["RHS_M2StaticMG_WD"]] call _fnc_saveToTemplate; +["staticAT", ["RHS_TOW_TriPod_WD"]] call _fnc_saveToTemplate; +["staticAA", ["RHS_Stinger_AA_pod_WD"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", ["PRACS_BMR_A3_M2", "PRACS_M113_M240"]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["Male01ENG","Male02ENG","Male03ENG","Male04ENG","Male05ENG","Male06ENG","Male07ENG","Male08ENG","Male09ENG","Male10ENG","Male11ENG","Male12ENG"]] call _fnc_saveToTemplate; +["faces", ["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; +["sfFaces", ["WhiteHead_22_sa"]] call _fnc_saveToTemplate; +["sfVoices", ["Male01ENGB", "Male02ENGB", "Male03ENGB", "Male04ENGB", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["PRACS_M10_Commando_uniform"]]; +_loadoutData set ["traitorVests", ["PRACS_O_CIRAS_GAL_rifleman", "PRACS_O_CIRAS_G3_rifleman"]]; +_loadoutData set ["traitorHats", ["PRACS_Patrol_ASDPM_B_Cap", "PRACS_Patrol_SDPM_Cap", "PRACS_Patrol_SMAR_Cap"]]; + +_loadoutData set ["officerUniforms", ["PRACS_M10_SNG_D_PL_uniform", "PRACS_M10_1ID_PL_uniform"]]; +_loadoutData set ["officerVests", ["PRACS_holster_vest", "V_Rangemaster_belt", "rhs_6sh92_digi_radio"]]; +_loadoutData set ["officerHats", ["PRACS_Patrol_6TDes_Cap", "PRACS_1st_Infantry_beret"]]; +/* ANTISTASI PLUS STUFF END */ + +_loadoutData set ["expBackpacks", []]; +_loadoutData set ["medBackpacks", []]; +_loadoutData set ["atBackpacks", []]; +_loadoutData set ["aaBackpacks", []]; +_loadoutData set ["longRangeRadios", []]; + +_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", [ +["rhs_weap_M136_hedp", "", "", "", ["rhs_m136_hedp_mag"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["rhs_weap_smaw"]]; +_loadoutData set ["missileATLaunchers", [ +["PRACS_SAAWS", "", "", "", ["rhs_mag_maaws_HEAT"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["rhs_weap_fim92", "", "", "", ["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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["HandGrenade", "MiniGrenade"]]; +_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", ["rhsusf_ANPVS_15"]]; +_loadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; +_loadoutData set ["rangefinders", ["rhsusf_bino_lerca_1200_black"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", []]; + +//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", ["PRACS_M10_Recon_uniform"]]; +_sfLoadoutData set ["vests", ["PRACS_CIRAS_Recon_SF", "PRACS_CIRAS_SL", "PRACS_CIRAS_grenadier_SF"]]; +_sfLoadoutData set ["backpacks", ["B_Kitbag_rgr"]]; +_sfLoadoutData set ["helmets", ["PRACS_Booniehat_HS_SDPM", "PRACS_Recon_beret"]]; +_sfLoadoutData set ["sniHats", ["rhsusf_mich_bare_norotos_arc_semi_headset"]]; +_sfLoadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; + +_sfLoadoutData set ["rifles", [ +["rhs_weap_hk416d10_LMT_wd", "rhsusf_acc_nt4_tan", "rhsusf_acc_anpeq15_bk", "rhsusf_acc_g33_xps3", ["rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG"], [], "rhsusf_acc_rvg_blk"], +["rhs_weap_hk416d10_LMT_d", "rhsusf_acc_nt4_tan", "rhsusf_acc_anpeq15_bk", "rhsusf_acc_g33_xps3", ["rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG"], [], "rhsusf_acc_rvg_blk"] +]]; +_sfLoadoutData set ["carbines", [ +["rhs_weap_m4a1_blockII_wd", "rhsusf_acc_nt4_tan", "rhsusf_acc_anpeq15_bk", "rhsusf_acc_eotech_xps3", ["rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_m4a1_blockII_M203_wd", "rhsusf_acc_nt4_tan", "rhsusf_acc_m952v", "rhsusf_acc_acog", ["rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag"], ["1Rnd_HE_Grenade_shell"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["rhsusf_weap_MP7A2", "rhsusf_acc_rotex_mp7", "", "rhsusf_acc_eotech_xps3", [], [], "rhsusf_acc_rvg_blk"] +]]; +_sfLoadoutData set ["machineGuns", [ +["rhs_weap_m249_pip", "", "", "", ["rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box"], [], "rhsusf_acc_saw_bipod"], +["rhs_weap_m249_pip_S", "", "", "", ["rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box"], [], "rhsusf_acc_saw_bipod"] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["rhs_weap_sr25", "", "", "rhsusf_acc_m8541", ["rhsusf_20Rnd_762x51_SR25_m118_special_Mag", "rhsusf_20Rnd_762x51_SR25_m118_special_Mag", "rhsusf_20Rnd_762x51_SR25_m118_special_Mag"], [], "rhsusf_acc_harris_bipod"] +]]; +_sfLoadoutData set ["sniperRifles", [ +["rhs_weap_XM2010", "", "", "rhsusf_acc_m8541", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["rhs_weap_cz99", "", "", "", [], [], ""], +["rhs_weap_tt33", "", "", "", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["PRACS_M10_Digital_Commando_OD_uniform"]]; +_eliteLoadoutData set ["vests", ["PRACS_O_CIRAS_rifleman", "PRACS_O_CIRAS_Recon_SF", "PRACS_O_CIRAS_medic"]]; +_eliteLoadoutData set ["backpacks", ["PRACS_Assault_pack"]]; +_eliteLoadoutData set ["helmets", ["rhsusf_opscore_fg_pelt", "rhsusf_opscore_fg_pelt_cam"]]; +_eliteLoadoutData set ["sniHats", ["rhsusf_opscore_rg_cover"]]; +_eliteLoadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; + +_eliteLoadoutData set ["rifles", [ +["rhs_weap_hk416d10_LMT_d", "rhsusf_acc_nt4_tan", "rhsusf_acc_anpeq15_bk", "rhsusf_acc_g33_xps3", ["rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG", "rhs_mag_30Rnd_556x45_M855_PMAG"], [], "rhsusf_acc_rvg_blk"], +["PRACS_galil_ACE23", "rhsusf_acc_sf3p556", "rhsusf_acc_anpeq15a", "rhsusf_acc_acog_usmc", ["PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag"], [], ""] +]]; +_eliteLoadoutData set ["carbines", [ +["rhs_weap_m4_mstock", "rhsusf_acc_nt4_tan", "rhsusf_acc_anpeq15_bk", "rhsusf_acc_eotech_xps3", ["rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag"], [], "rhsusf_acc_rvg_blk"], +["rhs_weap_vhsk2", "rhsusf_acc_sf3p556", "", "rhsusf_acc_acog", ["rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_m4_carryhandle_m203S", "rhsusf_acc_nt4_tan", "rhsusf_acc_m952v", "rhsusf_acc_acog", ["rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag", "rhs_mag_30Rnd_556x45_M855A1_Stanag"], ["1Rnd_HE_Grenade_shell"], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["rhsusf_weap_MP7A2", "rhsusf_acc_rotex_mp7", "", "rhsusf_acc_eotech_xps3", [], [], "rhsusf_acc_rvg_blk"] +]]; +_eliteLoadoutData set ["machineGuns", [ +["rhs_weap_m249_pip", "", "", "", ["rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box", "rhsusf_200Rnd_556x45_box"], [], "rhsusf_acc_saw_bipod"] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["PRACS_g3a4_w", "", "", "rhsusf_acc_m8541_low", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], [], "pracs_g3_bipod"] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["rhs_weap_m40a5", "", "", "rhsusf_acc_m8541", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["rhs_weap_cz99", "", "", "", [], [], ""], +["rhs_weap_tt33", "", "", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["PRACS_M10_Fusilier_uniform"]]; +_militaryLoadoutData set ["vests", ["PRACS_RFP_CIRAS_GAL_rifleman", "PRACS_RFP_CIRAS_GAL_medic"]]; +_militaryLoadoutData set ["Hvests", ["rhsusf_mbav_mg"]]; +_militaryLoadoutData set ["glVests", ["rhsusf_mbav_grenadier"]]; +_militaryLoadoutData set ["backpacks", ["PRACS_FieldPack"]]; +_militaryLoadoutData set ["expBackpacks", ["rhs_rk_sht_30_olive_engineer_empty", "rhs_assault_umbts_engineer_empty", "rhs_rk_sht_30_emr_engineer_empty"]]; +_militaryLoadoutData set ["atBackpacks", ["rhs_rpg_empty"]]; +_militaryLoadoutData set ["helmets", ["PRACS_ACH_RFP_F", "PRACS_ACH_QSB_camo"]]; +_militaryLoadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; + +_militaryLoadoutData set ["slRifles", [ +["PRACS_galil_ACE23", "", "", "rhsusf_acc_g33_t1", ["PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["PRACS_galil_ACE23", "", "", "rhsusf_acc_eotech_552", ["PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag", "PRACS_35rd_Galil_Mk262_mag"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["rhs_weap_vhsd2", "", "", "rhsusf_acc_eotech_xps3", ["rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_vhsd2_bg", "", "", "rhsusf_acc_eotech_xps3", ["rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2", "rhsgref_30rnd_556x45_vhs2"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["PRACS_HK33", "", "", "rhsusf_acc_rm05", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["PRACS_Mk48_Para", "", "", "", ["PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch"], [], ""], +["PRACS_Mk48_light", "", "", "", ["PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch"], [], ""] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["rhs_weap_vss", "", "", "rhs_acc_pso1m2", ["rhs_20rnd_9x39mm_SP5", "rhs_20rnd_9x39mm_SP5", "rhs_20rnd_9x39mm_SP5"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["rhs_weap_t5000", "", "", "rhsusf_acc_m8541", ["rhs_5Rnd_338lapua_t5000", "rhs_5Rnd_338lapua_t5000", "rhs_5Rnd_338lapua_t5000"], [], "rhs_acc_harris_swivel"] +]]; +_militaryLoadoutData set ["sidearms", [ +["rhsusf_weap_m9", "", "", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["PRACS_Police_Uniform"]]; +_policeLoadoutData set ["vests", ["PRACS_Police_Vest", "PRACS_holster_vest"]]; +_policeLoadoutData set ["helmets", ["PRACS_Police_Cap"]]; + +_policeLoadoutData set ["SMGs", [ +["PRACS_UZI", "", "", "", [], [], ""], +["PRACS_HK33A4", "", "", "", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["rhsusf_weap_m1911a1"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["PRACS_M10_1ID_uniform", "PRACS_M10_DES_uniform"]]; +_militiaLoadoutData set ["vests", ["PRACS_C_CIRAS_G3_rifleman", "PRACS_C_CIRAS_G3_Recon"]]; +_militiaLoadoutData set ["backpacks", ["PRACS_FieldPack"]]; +_militiaLoadoutData set ["helmets", ["PRACS_LWH_6TDES", "PRACS_LWH_ESS_6TDES"]]; + +_militiaLoadoutData set ["rifles", [ +["PRACS_g3a3", "", "", "", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["PRACS_galil_SAR", "", "", "", ["PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["PRACS_g3a3t40", "", "", "rhsusf_acc_eotech_xps3", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], ["1Rnd_HE_Grenade_shell", "1Rnd_HE_Grenade_shell", "1Rnd_Smoke_Grenade_shell"], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["PRACS_UZI", "", "", "rhsusf_acc_eotech_xps3", [], [], ""], +["PRACS_HK53", "", "", "rhsusf_acc_rm05", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["PRACS_Mk48_STD", "", "", "", ["PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch"], [], ""], +["PRACS_Mk48", "", "", "", ["PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch", "PRACS_100rd_Mk48_M80ball_Soft_pouch"], [], ""] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["rhs_weap_svdp", "", "", "rhs_acc_pso1m2", ["rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", [ +["rhsusf_weap_glock17g4", "", "acc_flashlight_pistol", "", [], [], ""] +]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["PRACS_M10_ADA_uniform"]]; +_crewLoadoutData set ["vests", ["PRACS_C_CIRAS_G3_rifleman"]]; +_crewLoadoutData set ["helmets", ["rhsusf_cvc_ess"]]; +_crewLoadoutData set ["carbines", [ +["PRACS_UZI", "", "", "", ["PRACS_35rd_9mm_UZI", "PRACS_35rd_9mm_UZI", "PRACS_35rd_9mm_UZI"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["PRACS_Pilot_suit_uniform"]]; +_pilotLoadoutData set ["vests", ["PRACS_Jet_Pilot_vest", "PRACS_Jet_Pilot_harness"]]; +_pilotLoadoutData set ["helmets", ["PRACS_Attack_Heli_pilot_helmet", "rhsusf_hgu56p_visor"]]; +_pilotLoadoutData set ["carbines", [ +["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""], +["PRACS_UZI", "", "", "", ["PRACS_35rd_9mm_UZI", "PRACS_35rd_9mm_UZI", "PRACS_35rd_9mm_UZI"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + +private _squadLeaderTemplate = { + ["helmets"] 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= { + ["helmets"] 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 = { + ["helmets"] 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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ + +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate, [], [_prefix]], + ["Standard", _policeTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/RACS/RACS_AI_SLA.sqf b/A3A/addons/core/Templates/Templates/RACS/RACS_AI_SLA.sqf new file mode 100644 index 0000000000..f7b3c30b6a --- /dev/null +++ b/A3A/addons/core/Templates/Templates/RACS/RACS_AI_SLA.sqf @@ -0,0 +1,981 @@ +////////////////////////// +// Side Information // +////////////////////////// + +#include "..\..\..\script_component.hpp" + +["name", "Liberation Army"] call _fnc_saveToTemplate; +["spawnMarkerName", "Sahrani Liberation Army Support Corridor"] call _fnc_saveToTemplate; + +["flag", "Flag_NATO_F"] call _fnc_saveToTemplate; +["flagTexture", "\PRACS_SLA_Core\Flags\flag_north_co_mrk.paa"] call _fnc_saveToTemplate; // QPATHTOFOLDER(Templates\Templates\RACS\flag_sahrani_co.paa) +["flagMarkerType", "PRACS_SLA_Flag_mrk"] 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 + +/* ANTISTASI PLUS STUFF START */ +["vehiclesMilitiaAPCs", ["PRACS_SLA_BTR40_BG"]] call _fnc_saveToTemplate; +["vehiclesAirborne", ["PRACS_SLA_BTR60", "rhs_btr70_vmf"]] call _fnc_saveToTemplate; +["vehiclesLightTanks", ["rhs_sprut_vdv", "PRACS_SLA_BMP1"]] call _fnc_saveToTemplate; + +["staticHowitzers", ["PRACS_SLA_M46"]] call _fnc_saveToTemplate; +["howitzerMagazineHE", "PRACS_130mm_X32"] call _fnc_saveToTemplate; +["vehicleRadar", "PRACS_P37_Radar"] call _fnc_saveToTemplate; +["vehicleSam", "PRACS_SLA_S60"] call _fnc_saveToTemplate; +/* ANTISTASI PLUS STUFF END */ + +["vehiclesBasic", ["B_Quadbike_01_F"]] call _fnc_saveToTemplate; +["vehiclesLightUnarmed", ["PRACS_SLA_UAZ_open", "PRACS_SLA_UAZ"]] call _fnc_saveToTemplate; +["vehiclesLightArmed", ["PRACS_SLA_UAZ_DSHKM", "PRACS_SLA_Tigr"]] call _fnc_saveToTemplate; //this line determines light and armed vehicles -- Example: ["vehiclesLightArmed", ["B_MRAP_01_hmg_F", "B_MRAP_01_gmg_F"]] -- Array, can contain multiple assets +["vehiclesTrucks", ["PRACS_SLA_URAL"]] call _fnc_saveToTemplate; +["vehiclesCargoTrucks", ["PRACS_SLA_URAL"]] call _fnc_saveToTemplate; +["vehiclesAmmoTrucks", ["PRACS_SLA_Ural_Ammo"]] call _fnc_saveToTemplate; +["vehiclesRepairTrucks", ["PRACS_SLA_URAL_Repair"]] call _fnc_saveToTemplate; +["vehiclesFuelTrucks", ["PRACS_SLA_URAL_Fuel"]] call _fnc_saveToTemplate; +["vehiclesMedical", ["PRACS_SLA_Ural_AMB"]] call _fnc_saveToTemplate; +["vehiclesLightAPCs", []] call _fnc_saveToTemplate; +["vehiclesIFVs", []] call _fnc_saveToTemplate; +["vehiclesTanks", ["PRACS_SLA_T72B", "PRACS_SLA_T72BV"]] call _fnc_saveToTemplate; +["vehiclesAA", ["PRACS_SLA_BTR40_AAM", "PRACS_SLA_URAL_Zu23"]] call _fnc_saveToTemplate; + +["vehiclesTransportBoats", ["PRACS_SLA_GoFast"]] call _fnc_saveToTemplate; +["vehiclesGunBoats", ["PRACS_SLA_GoFast_gun"]] call _fnc_saveToTemplate; +["vehiclesAmphibious", ["PRACS_SLA_BTR60"]] call _fnc_saveToTemplate; + +["vehiclesPlanesCAS", ["PRACS_SLA_MiG27", "PRACS_SLA_Su25"]] call _fnc_saveToTemplate; +["vehiclesPlanesAA", ["PRACS_SLA_MiG21", "PRACS_SLA_MiG23"]] call _fnc_saveToTemplate; +["vehiclesPlanesTransport", ["PRACS_AN12B"]] call _fnc_saveToTemplate; + +["vehiclesHelisLight", ["PRACS_SLA_Mi8amt"]] call _fnc_saveToTemplate; +["vehiclesHelisTransport", ["PRACS_SLA_Mi24D"]] call _fnc_saveToTemplate; +["vehiclesHelisLightAttack", ["rhs_mi28n_vvs"]] call _fnc_saveToTemplate; +["vehiclesHelisAttack", ["RHS_Ka52_vvs"]] call _fnc_saveToTemplate; + +["vehiclesArtillery", ["PRACS_SLA_2s1"]] call _fnc_saveToTemplate; +["magazines", createHashMapFromArray [ +["PRACS_SLA_2s1", ["rhs_mag_bk13_5"]] +]] call _fnc_saveToTemplate; + +["uavsAttack", ["B_UAV_02_CAS_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: +["vehiclesMilitiaLightArmed", ["PRACS_SLA_UAZ_DSHKM"]] call _fnc_saveToTemplate; +["vehiclesMilitiaTrucks", ["PRACS_SLA_Ural_flat_bed"]] call _fnc_saveToTemplate; +["vehiclesMilitiaCars", ["PRACS_SLA_UAZ_open_guards"]] call _fnc_saveToTemplate; + +["vehiclesPolice", ["PRACS_SLA_UAZ_open_recon"]] call _fnc_saveToTemplate; + +["staticMGs", ["PRACS_SLA_DShK"]] call _fnc_saveToTemplate; +["staticAT", ["PRACS_SLA_SPG9M_tripod"]] call _fnc_saveToTemplate; +["staticAA", ["rhs_Igla_AA_pod_msv"]] call _fnc_saveToTemplate; +["staticMortars", ["B_Mortar_01_F"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] call _fnc_saveToTemplate; //this line determines available HE-shells for the static mortars - !needs to be comtible with the mortar! -- Example: ["mortarMagazineHE", "8Rnd_82mm_Mo_shells"] - ENTER ONLY ONE OPTION +["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] call _fnc_saveToTemplate; //this line determines smoke-shells for the static mortar - !needs to be comtible with the mortar! -- Example: ["mortarMagazineSmoke", "8Rnd_82mm_Mo_Smoke_white"] - ENTER ONLY ONE OPTION +["mortarMagazineFlare", "8Rnd_82mm_Mo_Flare_white"] call _fnc_saveToTemplate; + +//Minefield definition +["minefieldAT", ["ATMine"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["APERSMine"]] call _fnc_saveToTemplate; + +["vehiclesAPCs", ["PRACS_SLA_BTR40", "PRACS_SLA_Type63"]] call _fnc_saveToTemplate; + +///////////////////// +/// Identities /// +///////////////////// + +["voices", ["Male01ENG","Male02ENG","Male03ENG","Male04ENG","Male05ENG","Male06ENG","Male07ENG","Male08ENG","Male09ENG","Male10ENG","Male11ENG","Male12ENG"]] call _fnc_saveToTemplate; +["faces", ["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; +["sfFaces", ["WhiteHead_22_sa"]] call _fnc_saveToTemplate; +["sfVoices", ["Male01ENGB", "Male02ENGB", "Male03ENGB", "Male04ENGB", "Male05ENGB"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// + +private _loadoutData = call _fnc_createLoadoutData; +/* ANTISTASI PLUS STUFF START */ +_loadoutData set ["traitorUniforms", ["PRACS_M10_Commando_uniform"]]; +_loadoutData set ["traitorVests", ["PRACS_O_CIRAS_GAL_rifleman", "PRACS_O_CIRAS_G3_rifleman"]]; +_loadoutData set ["traitorHats", ["PRACS_Patrol_ASDPM_B_Cap", "PRACS_Patrol_SDPM_Cap", "PRACS_Patrol_SMAR_Cap"]]; + +_loadoutData set ["officerUniforms", ["PRACS_M10_SNG_D_PL_uniform", "PRACS_M10_1ID_PL_uniform"]]; +_loadoutData set ["officerVests", ["PRACS_holster_vest", "V_Rangemaster_belt", "rhs_6sh92_digi_radio"]]; +_loadoutData set ["officerHats", ["PRACS_Patrol_6TDes_Cap", "PRACS_1st_Infantry_beret"]]; +/* ANTISTASI PLUS STUFF END */ + +_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", [ +["rhs_weap_rpg7", "", "", "", ["rhs_rpg7_PG7VL_mag"], [], ""] +]]; +_loadoutData set ["ATLaunchers", ["rhs_weap_smaw"]]; +_loadoutData set ["missileATLaunchers", [ +["rhs_weap_rpg7", "", "", "", ["rhs_rpg7_PG7VR_mag"], [], ""] +]]; +_loadoutData set ["AALaunchers", [ +["rhs_weap_igla", "", "", "", ["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 ["antiTankGrenades", []]; +_loadoutData set ["antiInfantryGrenades", ["HandGrenade", "MiniGrenade"]]; +_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", ["rhsusf_ANPVS_15"]]; +_loadoutData set ["binoculars", ["rhs_pdu4"]]; +_loadoutData set ["rangefinders", ["rhsusf_bino_lerca_1200_tan"]]; + +_loadoutData set ["uniforms", []]; +_loadoutData set ["vests", []]; +_loadoutData set ["Hvests", []]; +_loadoutData set ["glVests", []]; +_loadoutData set ["backpacks", []]; +_loadoutData set ["longRangeRadios", []]; +_loadoutData set ["helmets", []]; +_loadoutData set ["slHat", []]; +_loadoutData set ["sniHats", []]; + +//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", ["PRACS_SLA_M88_Especas_uniform"]]; +_sfLoadoutData set ["vests", ["PRACS_SLA_6sh92", "PRACS_SLA_6sh92_VOG", "PRACS_SLA_6B23_6sh92_L_Radio", "PRACS_SLA_6B23_6sh92_L_Headset"]]; +_sfLoadoutData set ["backpacks", ["PRACS_SLA_cammo_RD54", "PRACS_SLA_bandolier"]]; +_sfLoadoutData set ["helmets", ["PRACS_SLA_Especas_Beret"]]; +_sfLoadoutData set ["sniHats", ["PRACS_SLA_Soft_Cap"]]; +_sfLoadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; + +_sfLoadoutData set ["rifles", [ +["rhs_weap_ak105_npz", "rhs_acc_pgs64", "", "rhs_acc_okp7_picatinny", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK"], [], ""], +["rhs_weap_ak105_zenitco01", "rhs_acc_pgs64", "", "rhs_acc_pkas", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK"], [], "rhs_acc_grip_rk6"], +["rhs_weap_ak104_zenitco01_b33", "rhs_acc_dtk", "", "rhs_acc_ekp8_18", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer"], [], "rhs_acc_grip_ffg2"] +]]; +_sfLoadoutData set ["carbines", [ +["PRACS_rk62", "", "", "", ["PRACS_30Rnd_762x39_Rk_7N6_mag", "PRACS_30Rnd_762x39_Rk_7N6_mag", "PRACS_30Rnd_762x39_Rk_7N6_mag"], [], ""] +]]; +_sfLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_ak74m_gp25_npz", "rhs_acc_dtk", "", "rhs_acc_rakurspm", ["rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK"], ["rhs_VOG25"], ""] +]]; +_sfLoadoutData set ["SMGs", [ +["PRACS_UZI", "", "", "rhsusf_acc_rm05", [], [], ""] +]]; +_sfLoadoutData set ["machineGuns", [ +["rhs_weap_pkm", "", "", "", ["rhs_100Rnd_762x54mmR", "rhs_100Rnd_762x54mmR", "rhs_100Rnd_762x54mmR"], [], ""], +["rhs_weap_aks74n", "", "", "rhs_acc_ekp8_02", ["rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK"], [], ""] +]]; +_sfLoadoutData set ["marksmanRifles", [ +["rhs_weap_svdp_wd_npz", "", "", "rhs_acc_dh520x56", ["rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1"], [], ""] +]]; +_sfLoadoutData set ["sniperRifles", [ +["rhs_weap_t5000", "", "", "rhs_acc_dh520x56", [], [], ""] +]]; +_sfLoadoutData set ["sidearms", [ +["rhs_weap_pya", "", "", "", [], [], ""], +["rhs_weap_6p53", "", "", "", [], [], ""] +]]; + +///////////////////////////////// +// Elite Loadout Data // +///////////////////////////////// + +private _eliteLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_eliteLoadoutData set ["uniforms", ["PRACS_SLA_M88_Paratrooper_uniform"]]; +_eliteLoadoutData set ["vests", ["PRACS_SLA_6sh92_R_SF", "PRACS_SLA_6sh92", "PRACS_SLA_6B23_6sh92_L_Headset"]]; +_eliteLoadoutData set ["backpacks", ["PRACS_Assault_pack"]]; +_eliteLoadoutData set ["helmets", ["PRACS_SLA_Booniehat", "PRACS_SLA_Soft_Cap"]]; +_eliteLoadoutData set ["sniHats", ["PRACS_SLA_6B27M_ess"]]; +_eliteLoadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; + +_eliteLoadoutData set ["rifles", [ +["rhs_weap_ak105_npz", "rhs_acc_pgs64", "", "rhs_acc_okp7_picatinny", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK"], [], ""], +["rhs_weap_aks74n_2", "rhs_acc_dtk3", "", "rhs_acc_pkas", ["rhs_30Rnd_545x39_7N6M_plum_AK", "rhs_30Rnd_545x39_7N6M_plum_AK", "rhs_30Rnd_545x39_7N6M_plum_AK"], [], "rhs_acc_grip_rk6"], +["rhs_weap_akm_zenitco01_b33", "rhs_acc_dtkakm", "", "rhs_acc_ekp8_18", ["rhs_30Rnd_762x39mm_bakelite", "rhs_30Rnd_762x39mm_bakelite", "rhs_30Rnd_762x39mm_bakelite"], [], "rhs_acc_grip_rk6"] +]]; +_eliteLoadoutData set ["carbines", [ +["rhs_weap_ak104", "", "", "rhs_acc_ekp8_02", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer"], [], ""] +]]; +_eliteLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_ak74m_gp25", "rhs_acc_dtk", "", "rhs_acc_1p63", ["rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK"], ["rhs_VOG25"], ""] +]]; +_eliteLoadoutData set ["SMGs", [ +["PRACS_UZI", "", "", "rhsusf_acc_rm05", [], [], ""] +]]; +_eliteLoadoutData set ["machineGuns", [ +["rhs_weap_pkm", "", "", "", ["rhs_100Rnd_762x54mmR", "rhs_100Rnd_762x54mmR", "rhs_100Rnd_762x54mmR"], [], ""], +["rhs_weap_aks74n", "", "", "rhs_acc_ekp8_02", ["rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK"], [], ""] +]]; +_eliteLoadoutData set ["marksmanRifles", [ +["rhs_weap_svdp_wd_npz", "", "", "rhs_acc_dh520x56", ["rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1"], [], ""] +]]; +_eliteLoadoutData set ["sniperRifles", [ +["rhs_weap_t5000", "", "", "rhs_acc_dh520x56", [], [], ""] +]]; +_eliteLoadoutData set ["sidearms", [ +["rhs_weap_pya", "", "", "", [], [], ""], +["rhs_weap_6p53", "", "", "", [], [], ""] +]]; + +///////////////////////////////// +// Military Loadout Data // +///////////////////////////////// + +private _militaryLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militaryLoadoutData set ["uniforms", ["PRACS_SLA_M88_Guards_uniform"]]; +_militaryLoadoutData set ["vests", ["PRACS_SLA_6B23_6sh92", "PRACS_SLA_6B23_6sh92_L_Radio"]]; +_militaryLoadoutData set ["Hvests", ["PRACS_SLA_6b2_chicom"]]; +_militaryLoadoutData set ["glVests", ["PRACS_SLA_6B23_6sh92_VOG"]]; +_militaryLoadoutData set ["backpacks", ["PRACS_SLA_cammo_RD54"]]; +_militaryLoadoutData set ["helmets", ["PRACS_SLA_6B27M", "PRACS_SLA_6B27M_ess"]]; +_militaryLoadoutData set ["binoculars", ["rhs_pdu4"]]; + +_militaryLoadoutData set ["slRifles", [ +["rhs_weap_akm_zenitco01_b33", "", "", "", ["rhs_30Rnd_762x39mm_bakelite", "rhs_30Rnd_762x39mm_bakelite", "rhs_30Rnd_762x39mm_bakelite"], [], ""] +]]; +_militaryLoadoutData set ["rifles", [ +["rhs_weap_aks74n_2_npz", "", "", "rhs_acc_ekp8_18", ["rhs_30Rnd_545x39_7N6M_plum_AK", "rhs_30Rnd_545x39_7N6M_plum_AK", "rhs_30Rnd_545x39_7N6M_plum_AK"], [], ""] +]]; +_militaryLoadoutData set ["carbines", [ +["PRACS_rk62", "", "", "", ["PRACS_30Rnd_762x39_Rk_7N6_mag", "PRACS_30Rnd_762x39_Rk_7N6_mag", "PRACS_30Rnd_762x39_Rk_7N6_mag"], [], ""] +]]; +_militaryLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_ak74m_gp25_npz", "rhs_acc_dtk", "", "rhs_acc_rakurspm", ["rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK"], ["rhs_VOG25"], ""] +]]; +_militaryLoadoutData set ["SMGs", [ +["PRACS_HK33", "", "", "rhsusf_acc_rm05", [], [], ""] +]]; +_militaryLoadoutData set ["machineGuns", [ +["rhs_weap_aks74n", "", "", "rhs_acc_ekp8_02", ["rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK"], [], ""] +]]; +_militaryLoadoutData set ["marksmanRifles", [ +["rhs_weap_svdp_wd_npz", "", "", "rhs_acc_dh520x56", ["rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1", "rhs_10Rnd_762x54mmR_7N1"], [], ""] +]]; +_militaryLoadoutData set ["sniperRifles", [ +["rhs_weap_t5000", "", "", "rhs_acc_dh520x56", [], [], ""] +]]; +_militaryLoadoutData set ["sidearms", [ +["rhs_weap_makarov_pm", "", "", "", [], [], ""] +]]; +/////////////////////////////// +// Police Loadout Data // +/////////////////////////////// + +private _policeLoadoutData = _loadoutData call _fnc_copyLoadoutData; + +_policeLoadoutData set ["uniforms", ["PRACS_SLA_Border_Guard_uniform"]]; +_policeLoadoutData set ["vests", ["rhs_belt_AK", "rhs_belt_AK_back"]]; +_policeLoadoutData set ["helmets", ["PRACS_SLA_Border_Guard_Cap"]]; + +_policeLoadoutData set ["SMGs", [ +["rhs_weap_aks74u", "", "", "", [], [], ""], +["rhs_weap_pp2000", "", "", "", [], [], ""] +]]; +_policeLoadoutData set ["sidearms", ["rhs_weap_type94_new"]]; + +//////////////////////////////// +// Militia Loadout Data // +//////////////////////////////// + +private _militiaLoadoutData = _loadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_militiaLoadoutData set ["uniforms", ["PRACS_SLA_M88_uniform"]]; +_militiaLoadoutData set ["vests", ["rhs_suspender_AK", "rhs_suspender_AK4"]]; +_militiaLoadoutData set ["backpacks", ["PRACS_SLA_bandolier"]]; +_militiaLoadoutData set ["helmets", ["PRACS_SLA_ssh68", "PRACS_SLA_ssh68_cover"]]; + +_militiaLoadoutData set ["rifles", [ +["rhs_weap_ak74", "", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK"], [], ""] +]]; +_militiaLoadoutData set ["carbines", [ +["rhs_weap_ak74n", "", "", "", ["rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK"], [], ""] +]]; +_militiaLoadoutData set ["grenadeLaunchers", [ +["rhs_weap_ak74n_gp25", "", "", "rhs_acc_1p78", ["rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK", "rhs_30Rnd_545x39_7N10_AK"], ["rhs_VOG25", "rhs_VOG25", "rhs_VOG25"], ""] +]]; +_militiaLoadoutData set ["SMGs", [ +["rhs_weap_aks74u", "", "", "", [], [], ""] +]]; +_militiaLoadoutData set ["machineGuns", [ +["rhs_weap_ak74m_desert_npz", "", "", "", ["rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK", "rhs_45Rnd_545X39_7N10_AK"], [], ""] +]]; +_militiaLoadoutData set ["marksmanRifles", [ +["PRACS_g3a3", "", "", "rhsusf_acc_m8541_low", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], [], ""] +]]; +_militiaLoadoutData set ["sidearms", [ +["rhs_weap_makarov_pm", "", "", "", [], [], ""] +]]; +////////////////////////// +// Misc Loadouts // +////////////////////////// + +/* ANTISTASI PLUS STUFF START */ +private _crewLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; // touch and shit breaks +_crewLoadoutData set ["uniforms", ["PRACS_SLA_Border_Guard_uniform"]]; +_crewLoadoutData set ["vests", ["rhs_belt_sks"]]; +_crewLoadoutData set ["helmets", ["rhs_tsh4"]]; +_crewLoadoutData set ["carbines", [ +["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""] +]]; + +private _pilotLoadoutData = _militaryLoadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["uniforms", ["PRACS_SLA_M88_O_uniform"]]; +_pilotLoadoutData set ["vests", ["rhs_vest_pistol_holster", "rhs_6sh46"]]; +_pilotLoadoutData set ["helmets", ["rhs_zsh7a_mike_green", "rhs_zsh7a_mike_green_alt"]]; +_pilotLoadoutData set ["carbines", [ +["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""] +]]; +/* ANTISTASI PLUS STUFF END */ + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// + +private _squadLeaderTemplate = { + ["helmets"] 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= { + ["helmets"] 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 = { + ["helmets"] 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; +}; + +/* ANTISTASI PLUS STUFF START */ +private _radiomanTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 2, "glasses", 0.75, "goggles", 0.5]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["longRangeRadios"] 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_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 _traitorTemplate = { + ["traitorHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["traitorVests"] call _fnc_setVest; + ["traitorUniforms"] call _fnc_setUniform; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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 _officerTemplate = { + ["officerHats"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.25, "glasses", 0.75]] call _fnc_setFacewear; + ["officerVests"] call _fnc_setVest; + ["officerUniforms"] call _fnc_setUniform; + + [["SMGs", "carbines"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 3] call _fnc_addMagazines; + + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["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; +}; +/* ANTISTASI PLUS STUFF END */ +//////////////////////////////////////////////////////////////////////////////////////// +// 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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_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, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Police Units // +//////////////////////// +private _prefix = "police"; +private _unitTypes = [ + ["SquadLeader", _policeTemplate, [], [_prefix]], + ["Standard", _policeTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _policeLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +//////////////////////// +// Militia Units // +//////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _militiaLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +/////////////////////// +// Elite Units // +/////////////////////// +private _prefix = "elite"; +private _unitTypes = [ + ["SquadLeader", _squadLeaderTemplate, [], [_prefix]], + ["Rifleman", _riflemanTemplate, [], [_prefix]], + ["Radioman", _radiomanTemplate, [], [_prefix]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix]], + ["Engineer", _engineerTemplate, [["engineer", true]], [_prefix]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix]], + ["Grenadier", _grenadierTemplate, [], [_prefix]], + ["LAT", _latTemplate, [], [_prefix]], + ["AT", _atTemplate, [], [_prefix]], + ["AA", _aaTemplate, [], [_prefix]], + ["MachineGunner", _machineGunnerTemplate, [], [_prefix]], + ["Marksman", _marksmanTemplate, [], [_prefix]], + ["Sniper", _sniperTemplate, [], [_prefix]] +]; + +[_prefix, _unitTypes, _eliteLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// + +//The following lines are determining the loadout of vehicle crew +["other", [["Crew", _crewTemplate, [], ["other"]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +["other", [["Pilot", _crewTemplate, [], ["other"]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the unit used in the "kill the official" mission +["other", [["Official", _squadLeaderTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "kill the traitor" mission +["other", [["Traitor", _traitorTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +//The following lines are determining the loadout for the AI used in the "Invader Punishment" mission +["other", [["Unarmed", _UnarmedTemplate, [], ["other"]]], _militaryLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/RACS/RACS_Riv_QB.sqf b/A3A/addons/core/Templates/Templates/RACS/RACS_Riv_QB.sqf new file mode 100644 index 0000000000..e13c0c6ea2 --- /dev/null +++ b/A3A/addons/core/Templates/Templates/RACS/RACS_Riv_QB.sqf @@ -0,0 +1,712 @@ +//////////////////////////// +// Rivals Information // +/////////////////////////// + +["name", "Queens Battalion"] call _fnc_saveToTemplate; +["nameLeader", "Isabella Ximénez"] call _fnc_saveToTemplate; + +////////////////////////////////////// +// Identities // +////////////////////////////////////// +["faces", [ + "RussianHead_1", + "RussianHead_2", + "RussianHead_3", + "RussianHead_4", + "RussianHead_5", + "WhiteHead_29", + "WhiteHead_30", + "LivonianHead_1", + "LivonianHead_2", + "LivonianHead_3", + "LivonianHead_4", + "LivonianHead_5", + "LivonianHead_6", + "LivonianHead_7", + "LivonianHead_8", + "LivonianHead_9", + "LivonianHead_10" +]] call _fnc_saveToTemplate; +["voices", ["Male01POL", "Male02POL", "Male03POL", "Male01RUS", "Male02RUS", "Male03RUS", "rhs_male01cz", "rhs_male02cz", "rhs_male03cz", "rhs_male04cz", "rhs_male05cz"]] 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; + +["vehiclesRivalsLightArmed", ["PRACS_M1165_M2", "PRACS_M1165_M134_QSB"]] call _fnc_saveToTemplate; +["vehiclesRivalsTrucks", ["PRACS_M250_open"]] call _fnc_saveToTemplate; +["vehiclesRivalsCars", ["PRACS_M998_Command", "PRACS_M998_cargo_open"]] call _fnc_saveToTemplate; +["vehiclesRivalsAPCs", ["PRACS_BMR_A3_M3_SFOD"]] call _fnc_saveToTemplate; +["vehiclesRivalsTanks", ["PRACS_M60S"]] call _fnc_saveToTemplate; +["vehiclesRivalsHelis", ["PRACS_Sa330_RSAF"]] call _fnc_saveToTemplate; +["vehiclesRivalsUavs", ["O_UAV_01_F"]] call _fnc_saveToTemplate; + +["staticLowWeapons", [ + "RHS_M2StaticMG_WD" +]] call _fnc_saveToTemplate; +["staticMortars", ["rhsgref_ins_2b14"]] call _fnc_saveToTemplate; + +["mortarMagazineHE", "rhs_mag_3vo18_10"] call _fnc_saveToTemplate; + +["handGrenadeAmmo", ["rhs_ammo_rgd5", "rhs_ammo_f1"]] call _fnc_saveToTemplate; +["mortarAmmo", ["Sh_82mm_AMOS"]] call _fnc_saveToTemplate; + +["minefieldAT", ["rhs_mine_tm62m"]] call _fnc_saveToTemplate; +["minefieldAPERS", ["rhs_mine_pmn2"]] call _fnc_saveToTemplate; + +////////////////////////// +// Loadouts // +////////////////////////// +private _loadoutData = call _fnc_createLoadoutData; + +_loadoutData set ["ATMines", ["ATMine_Range_Mag"]]; +_loadoutData set ["APMines", ["APERSMine_Range_Mag", "APERSBoundingMine_Range_Mag"]]; +_loadoutData set ["lightExplosives", ["IEDLandSmall_Remote_Mag"]]; +_loadoutData set ["heavyExplosives", ["IEDLandBig_Remote_Mag"]]; + +_loadoutData set ["antiInfantryGrenades", ["rhs_mag_rgd5", "rhs_mag_f1", "rhs_mag_rgo", "rhs_mag_rgn"]]; +_loadoutData set ["smokeGrenades", ["rhs_mag_rdg2_white"]]; +_loadoutData set ["signalsmokeGrenades", ["rhs_mag_nspd"]]; + +_loadoutData set ["facewear", [ + "rhs_googles_black", + "rhs_googles_clear", + "rhs_googles_orange", + "rhs_googles_yellow", + "rhsusf_oakley_goggles_blk" +]]; +_loadoutData set ["fullmask", ["G_Balaclava_TI_blk_F"]]; + +_loadoutData set ["headgear", [ + "PRACS_Booniehat_HS_RFPG" +]]; + +_loadoutData set ["maps", ["ItemMap"]]; +_loadoutData set ["watches", ["ItemWatch"]]; +_loadoutData set ["compasses", ["ItemCompass"]]; +_loadoutData set ["radios", ["ItemRadio"]]; +_loadoutData set ["gpses", ["ItemGPS"]]; +_loadoutData set ["NVGs", ["rhs_1PN138"]]; +_loadoutData set ["binoculars", ["rhsusf_bino_lrf_Vector21"]]; +_loadoutData set ["Rangefinder", ["rhsusf_bino_lerca_1200_black"]]; + +_loadoutData set ["uniforms", [ + "PRACS_M10_QSB_TL_uniform", + "PRACS_M10_QSB_SL_uniform" +]]; + +_loadoutData set ["offuniforms", ["PRACS_Police_Uniform", "PRACS_SIS_Uniform"]]; +_loadoutData set ["vests", ["PRACS_QSB_CIRAS_GAL_TL", "PRACS_QSB_CIRAS_GAL_SL", "PRACS_QSB_CIRAS_SF"]]; +_loadoutData set ["heavyVests", ["rhsusf_spc_patchless", "rhsusf_spc_patchless_radio"]]; +_loadoutData set ["atBackpacks", ["rhs_rpg_2", "rhs_rpg_empty"]]; +_loadoutData set ["backpacks", ["PRACS_Assault_pack"]]; +_loadoutData set ["helmets", ["PRACS_ACH_QSB", "PRACS_ACH_QSB_camo"]]; +_loadoutData set ["heavyHelmets", ["PRACS_QSB_opscore"]]; + +//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]; + +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", []]; + +_loadoutData set ["rifles", [ + ["PRACS_galil_ACE23_SF", "rhsusf_acc_sf3p556", "", "", ["PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag"], [], ""], + ["rhs_weap_ak105_zenitco01_b33", "", "", "", ["rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK"], [], ""] +]]; +_loadoutData set ["tunedRifles", [ + ["rhs_weap_ak103_zenitco01_b33_grip1", "rhs_acc_dtk1", "rhs_acc_perst1ik_ris", "rhs_acc_1p87", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], [], "rhs_acc_grip_ffg2"], + ["PRACS_galil_ACE23", "", "rhsusf_acc_anpeq15a", "rhsusf_acc_eotech_xps3", ["PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag", "PRACS_35rd_Galil_mag"], [], ""] +]]; +_loadoutData set ["enforcerRifles", [ + ["rhs_weap_ak74m", "rhs_acc_dtk1", "", "rhs_acc_pkas", ["rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK", "rhs_30Rnd_545x39_7N6M_AK"], [], ""], + ["rhs_weap_ak74m", "rhs_acc_dtk", "", "rhs_acc_1p63", ["rhs_30Rnd_545x39_7N10_camo_AK", "rhs_30Rnd_545x39_7N10_camo_AK", "rhs_30Rnd_545x39_7N10_camo_AK"], [], ""], + ["rhs_weap_ak74m", "rhs_acc_dtk3", "", "rhs_acc_ekp8_02", ["rhs_45Rnd_545X39_7N6_AK", "rhs_45Rnd_545X39_7N6_AK", "rhs_45Rnd_545X39_7N6M_AK"], [], ""] +]]; +_loadoutData set ["carbines", [ + ["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""], + ["rhs_weap_aks74u", "rhs_acc_pgs64_74u", "", "", ["rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_7N6_AK", "rhs_30Rnd_545x39_AK_green"], [], ""] +]]; +_loadoutData set ["grenadeLaunchers", [ + ["rhs_weap_ak103_gp25", "rhs_acc_dtk", "", "", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], ["rhs_VOG25", "rhs_VOG25", "rhs_VOG25P", "rhs_GRD40_White"], ""], + ["rhs_weap_ak103_gp25", "rhs_acc_dtk", "", "rhs_acc_ekp8_02", ["rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer", "rhs_30Rnd_762x39mm_polymer_tracer", "rhs_30Rnd_762x39mm_polymer_89"], ["rhs_VOG25", "rhs_VOG25", "rhs_VOG25P", "rhs_GRD40_White"], ""] +]]; +_loadoutData set ["machineGuns", [ + ["rhs_weap_ak103", "rhs_acc_dtk", "", "", ["rhs_75Rnd_762x39mm", "rhs_75Rnd_762x39mm", "rhs_75Rnd_762x39mm_tracer", "rhs_75Rnd_762x39mm_89"], [], ""], + ["PRACS_M60E4", "", "", "", ["rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51", "rhsusf_50Rnd_762x51"], [], ""] +]]; +_loadoutData set ["marksmanRifles", [ + ["rhs_weap_m76", "", "", "rhs_acc_pso1m2", ["rhsgref_10Rnd_792x57_m76", "rhsgref_10Rnd_792x57_m76", "rhssaf_10Rnd_792x57_m76_tracer"], [], ""], + ["PRACS_g3a4", "", "", "rhsusf_acc_m8541_low", ["PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag", "PRACS_20rd_G3_mag"], [], ""] +]]; +_loadoutData set ["lightATLaunchers", ["rhs_weap_m80", "rhs_weap_rpg75", "rhs_weap_rpg26", "rhs_weap_rpg18"]]; +_loadoutData set ["ATLaunchers", [ +["rhs_weap_rpg7", "", "", "rhs_acc_pgo7v",["rhs_rpg7_PG7V_mag", "rhs_rpg7_PG7VL_mag", "rhs_rpg7_PG7VM_mag"], [], ""], +["rhs_weap_rpg7", "", "", "rhs_acc_pgo7v",["rhs_rpg7_PG7VM_mag", "rhs_rpg7_PG7VM_mag", "rhs_rpg7_PG7VL_mag"], [], ""], +["rhs_weap_rpg7", "", "", "rhs_acc_pgo7v",["rhs_rpg7_PG7V_mag", "rhs_rpg7_TBG7V_mag", "rhs_rpg7_TBG7V_mag"], [], ""] +]]; +_loadoutData set ["lightHELaunchers", ["rhs_weap_rshg2"]]; +_loadoutData set ["AALaunchers", ["rhs_weap_igla"]]; +_loadoutData set ["sidearms", ["rhs_weap_makarov_pm", "rhs_weap_6p53", "rhs_weap_tt33", "rhs_weap_cz99"]]; + +////////////////////////// +// Misc Loadouts // +////////////////////////// + +private _crewLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_crewLoadoutData set ["vests", ["PRACS_air_TacVest"]]; +_crewLoadoutData set ["helmets", ["rhsusf_cvc_ess", "rhsusf_cvc_alt_helmet"]]; + +private _pilotLoadoutData = _loadoutData call _fnc_copyLoadoutData; +_pilotLoadoutData set ["vests", ["PRACS_aircrew_flotation_vest", "PRACS_aircrew_vest"]]; +_pilotLoadoutData set ["helmets", ["rhsusf_hgu56p_visor_tan", "rhsusf_hgu56p_tan"]]; + + +// ##################### DO NOT TOUCH ANYTHING BELOW THIS LINE ##################### + + +///////////////////////////////// +// Unit Type Definitions // +///////////////////////////////// +//These define the loadouts for different unit types. +//For example, rifleman, grenadier, squad leader, etc. +//In 95% of situations, you *should not need to edit these*. +//Almost all factions can be set up just by modifying the loadout data above. +//However, these exist in case you really do want to do a lot of custom alterations. + +private _cellLeaderTemplate = { + if (random 100 > 60) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + [["offuniforms", "uniforms"] call _fnc_fallback] call _fnc_setUniform; + + [selectRandom ["grenadeLaunchers", "rifles"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + ["primary", 5] call _fnc_addAdditionalMuzzleMagazines; + + if (random 1 < 0.15) then { + ["lightATLaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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", 1] 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 _mercenaryTemplate = { + if (random 100 > 60) then { + ["heavyHelmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["heavyVests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [selectRandom ["grenadeLaunchers", "rifles", "tunedRifles"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["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", 1] 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 _enforcerTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + [["enforcerRifles", "rifles"] call _fnc_fallback] call _fnc_setPrimary; + ["primary", 4] call _fnc_addMagazines; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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", 1] 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 _partisanTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + }; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] 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 _minutemanTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + if (random 1 < 0.15) then { + ["lightATLaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + }; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] 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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["carbines"] 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 _saboteurTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] 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; + + if (random 1 < 0.15) then { + ["lightHELaunchers"] call _fnc_setLauncher; + ["launcher", 1] call _fnc_addMagazines; + } else { + ["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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] 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 _atTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + [selectRandom ["rifles", "carbines"]] call _fnc_setPrimary; + ["primary", 6] call _fnc_addMagazines; + + ["ATLaunchers"] call _fnc_setLauncher; + //TODO - Add a check if it's disposable. + ["launcher", 4] 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 = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["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 _oppressorTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + ["backpacks"] call _fnc_setBackpack; + + ["machineGuns"] call _fnc_setPrimary; + ["primary", 6] 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 _sharpshooterTemplate = { + if (random 100 < 30) then { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1]] call _fnc_setFacewear; + } else { + ["headgear"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "facewear", 1]] call _fnc_setFacewear; + }; + ["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; + ["Rangefinder"] call _fnc_addBinoculars; + ["NVGs"] call _fnc_addNVGs; +}; + +private _crewTemplate = { + ["helmets"] call _fnc_setHelmet; + [selectRandomWeighted [[], 1.5, "fullmask", 1.25, "facewear", 1]] call _fnc_setFacewear; + ["vests"] call _fnc_setVest; + ["uniforms"] call _fnc_setUniform; + + ["carbines"] 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; + [selectRandomWeighted [[], 1.5, "facewear", 1, "fullmask", 1]] call _fnc_setFacewear; + ["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 _commanderTemplate = { + [selectRandomWeighted ["helmets", 0.3, "headgear", 0.7]] call _fnc_setHelmet; + ["sidearms"] call _fnc_setHandgun; + ["handgun", 2] call _fnc_addMagazines; + + ["vests"] call _fnc_setVest; + [["offuniforms", "uniforms"] call _fnc_fallback] 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; +}; + +//////////////////////////////////////////////////////////////////////////////////////// +// 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. +//////////////////////////////////////////////////////////////////////////////////////// + +/////////////////////// +// Rivals Units // +/////////////////////// +private _prefix = "militia"; +private _unitTypes = [ + ["CellLeader", _cellLeaderTemplate, [], [_prefix, true]], + ["Mercenary", _mercenaryTemplate, [], [_prefix, true]], + ["Minuteman", _minutemanTemplate, [], [_prefix, true]], + ["Enforcer", _enforcerTemplate, [], [_prefix, true]], + ["Partisan", _partisanTemplate, [], [_prefix, true]], + ["Saboteur", _saboteurTemplate, [], [_prefix, true]], + ["Medic", _medicTemplate, [["medic", true]], [_prefix, true]], + ["ExplosivesExpert", _explosivesExpertTemplate, [["explosiveSpecialist", true]], [_prefix, true]], + ["SpecialistAT", _atTemplate, [], [_prefix, true]], + ["SpecialistAA", _aaTemplate, [], [_prefix, true]], + ["Oppressor", _oppressorTemplate, [], [_prefix, true]], + ["Sharpshooter", _sharpshooterTemplate, [], [_prefix, true]] +]; + +[_prefix, _unitTypes, _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; + +////////////////////// +// Misc Units // +////////////////////// +[_prefix, [["Crew", _crewTemplate, [], [_prefix, true]]], _crewLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Pilot", _crewTemplate, [], [_prefix, true]]], _pilotLoadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Commander", _commanderTemplate, [], [_prefix, true]]], _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; +[_prefix, [["Unarmed", _unarmedTemplate, [], [_prefix, true]]], _loadoutData] call _fnc_generateAndSaveUnitsToTemplate; \ No newline at end of file diff --git a/A3A/addons/core/Templates/Templates/RACS/templates.hpp b/A3A/addons/core/Templates/Templates/RACS/templates.hpp new file mode 100644 index 0000000000..7e446a8c5a --- /dev/null +++ b/A3A/addons/core/Templates/Templates/RACS/templates.hpp @@ -0,0 +1,35 @@ + class RACS_Base + { + basepath = QPATHTOFOLDER(Templates\Templates\RACS); + logo = "\PRACS_Core\Flags\KingdomofSahrani_co_mrk.paa"; + priority = 80; + }; + + class RACS_Army : RACS_Base + { + requiredAddons[] = {"PRACS_Core"}; + side = "Occ"; + flagTexture = "\PRACS_Core\Flags\KingdomofSahrani_co_mrk.paa"; //Templates\Templates\RACS\flag_sahrani_co.paa + name = "Sahrani Royal Army Corps"; + file = "RACS_AI_Army"; + climate[] = {"temperate","arid"}; + }; + + class RACS_SLA : RACS_Base + { + requiredAddons[] = {"PRACS_SLA_Core"}; + side = "Inv"; + flagTexture = "\PRACS_SLA_Core\Flags\flag_north_co_mrk.paa"; //Templates\Templates\RACS\flag_sahrani_co.paa + name = "Sahrani Liberation Army"; + file = "RACS_AI_SLA"; + climate[] = {"temperate","arid"}; + }; + + class RACS_QB : RACS_Army + { + side = "Riv"; + flagTexture = "\PRACS_Core\Flags\KingdomofSahrani_co_mrk.paa"; + name = "Sahrani Queens Battalion"; + file = "RACS_Riv_QB"; + description = "Ruled by Isabella Ximénez, this faction are the remnants of the RACS."; + }; \ No newline at end of file diff --git a/A3A/addons/hals/Addons/store/config.hpp b/A3A/addons/hals/Addons/store/config.hpp index c3df7eba24..fd3fc89e65 100644 --- a/A3A/addons/hals/Addons/store/config.hpp +++ b/A3A/addons/hals/Addons/store/config.hpp @@ -12495,6 +12495,241 @@ class cfgHALsStore ITEM(DemoCharge_Remote_Mag, 250, MISC_STOCK); ITEM(SatchelCharge_Remote_Mag, 500, MISC_STOCK); }; + + //OPTRE + class handgunshalo{ + displayName = "Handguns"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\handgun_ca.paa"; + + ITEM(OPTRE_M6B, 110, PISTOL_STOCK); //AMMO: OPTRE_8Rnd_127x40_Mag + ITEM(OPTRE_M6C, 150, PISTOL_STOCK); //AMMO: OPTRE_12Rnd_127x40_Mag + ITEM(OPTRE_M6G, 110, PISTOL_STOCK); //AMMO: OPTRE_8Rnd_127x40_Mag + ITEM(OPTRE_M7_Folded, 250, PISTOL_STOCK); //AMMO: OPTRE_48Rnd_5x23mm_Mag + ITEM(optre_hgun_sas10_F, 130, PISTOL_STOCK); //AMMO: 16Rnd_10mm_Ball + }; + + class smghalo{ + displayName = "Submachine Guns"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryWeapon_ca.paa"; + + ITEM(OPTRE_M45, 225, RIFLE_STOCK); // Ammo: OPTRE_6Rnd_8Gauge_Pellets + ITEM(OPTRE_M45A, 425, RIFLE_STOCK); // Ammo: OPTRE_6Rnd_8Gauge_Pellets + ITEM(OPTRE_M45E, 250, RIFLE_STOCK); // Ammo: OPTRE_6Rnd_8Gauge_Pellets + ITEM(OPTRE_M7, 250, RIFLE_STOCK); // Ammo: OPTRE_60Rnd_5x23mm_Mag + ITEM(OPTRE_M12_SOC, 350, RIFLE_STOCK); // Ammo: OPTRE_64Rnd_57x31_Mag + ITEM(OPTRE_MA37K, 400, RIFLE_STOCK); // Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA5K, 400, RIFLE_STOCK); // Ammo: OPTRE_32Rnd_762x51_Mag + }; + + class mghalo{ + displayName = "Machine Guns"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryWeapon_ca.paa"; + + ITEM(OPTRE_HMG38, 600, RIFLE_STOCK); //Ammo: OPTRE_40Rnd_30x06_Mag + ITEM(OPTRE_M247, 650, RIFLE_STOCK); //Ammo: OPTRE_100Rnd_762x51_Box + ITEM(OPTRE_M73, 650, RIFLE_STOCK); //Ammo: OPTRE_100Rnd_95x40_Box + }; + + class rifleshalo{ + displayName = "Rifles, Carbines"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryWeapon_ca.paa"; + ITEM(OPTRE_BR37, 325, RIFLE_STOCK); //Ammo: OPTRE_10RND_338_SP + ITEM(OPTRE_BR45, 345, RIFLE_STOCK); //Ammo: OPTRE_36Rnd_95x40_Mag + ITEM(OPTRE_BR55, 365, RIFLE_STOCK); //Ammo: OPTRE_36Rnd_95x40_Mag + ITEM(OPTRE_BR55HB, 370, RIFLE_STOCK); //Ammo: OPTRE_36Rnd_95x40_Mag + ITEM(OPTRE_M58S, 330, RIFLE_STOCK); //Ammo: OPTRE_42Rnd_95x40_Mag + ITEM(OPTRE_MA32, 300, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA5A, 300, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA37B, 300, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA32B, 300, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA5B, 310, RIFLE_STOCK); //Ammo: OPTRE_60Rnd_762x51_Mag + ITEM(OPTRE_MA5C, 300, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA32GL, 320, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA5AGL, 320, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA37BGL, 320, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA32BGL, 320, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + ITEM(OPTRE_MA5BGL, 330, RIFLE_STOCK); //Ammo: OPTRE_60Rnd_762x51_Mag + ITEM(OPTRE_MA5CGL, 320, RIFLE_STOCK); //Ammo: OPTRE_32Rnd_762x51_Mag + // Covenant + ITEM(OPTRE_FC_T25_Rifle, 600, RIFLE_STOCK); + ITEM(OPTRE_FC_T25J_Rifle, 700, RIFLE_STOCK); + ITEM(OPTRE_FC_T51_Repeater, 1000, RIFLE_STOCK); + ITEM(OPTRE_FC_T51J_Repeater, 1100, RIFLE_STOCK); + ITEM(OPTRE_FC_T51_Carbine, 1100, RIFLE_STOCK); + ITEM(OPTRE_FC_T51B_Carbine, 1200, RIFLE_STOCK); + ITEM(OPTRE_FC_T60_PulseCarbine, 1100, RIFLE_STOCK); + ITEM(OPTRE_FC_T50_SRS, 2000, RIFLE_STOCK); + }; + + class sniperrifleshalo{ + displayName = "DMRs, Sniper Rifles, Battle Rifles"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryWeapon_ca.paa"; + + ITEM(OPTRE_Commando_Black, 400, RIFLE_STOCK); // Ammo: Commando_20Rnd_65_Mag + ITEM(OPTRE_M295_BMR, 430, RIFLE_STOCK); // Ammo: OPTRE_15Rnd_762x51_Mag + ITEM(OPTRE_M392_DMR, 450, RIFLE_STOCK); // Ammo: OPTRE_15Rnd_762x51_Mag + ITEM(OPTRE_M393_DMR, 470, RIFLE_STOCK); // Ammo: OPTRE_15Rnd_762x51_Mag + ITEM(OPTRE_M393S_DMR, 480, RIFLE_STOCK); // Ammo: OPTRE_15Rnd_762x51_Mag + ITEM(OPTRE_SRM77_S1, 580, RIFLE_STOCK); // Ammo: OPTRE_5Rnd_127x99 + ITEM(OPTRE_SRM77_S2, 580, RIFLE_STOCK); // Ammo: OPTRE_5Rnd_127x99 + ITEM(OPTRE_SRS99C, 1000, RIFLE_STOCK); // Ammo: OPTRE_4Rnd_145x114_APFSDS_Mag + ITEM(OPTRE_SRS99D, 1000, RIFLE_STOCK); // Ammo: OPTRE_4Rnd_145x114_APFSDS_Mag + ITEM(OPTRE_M99A2S3, 2000, RIFLE_STOCK); // Ammo: OPTRE_7Rnd_20mm_APFSDS_Mag + }; + + class launchershalo{ + displayName = "Launchers"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\secondaryWeapon_ca.paa"; + ITEM(OPTRE_M41_SSR, 500, 25); + }; + + class launchermagazineshalo{ + displayName = "Launcher Ammunition"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\cargoMag_ca.paa"; + ITEM(OPTRE_M41_Twin_HE, 100, 15); + ITEM(OPTRE_M41_Twin_HEAP, 150, 15); + ITEM(OPTRE_M41_Twin_HEAT_Thermal, 300, 15); + ITEM(OPTRE_M41_Twin_HEAT_SACLOS, 250, 15); + ITEM(OPTRE_M41_Twin_HEAT_SALH, 250, 15); + ITEM(OPTRE_M41_Twin_HEAT_G, 200, 15); + ITEM(OPTRE_M41_Twin_HEAT, 150, 15); + }; + + class riflegrenadeshalo{ + displayName = "Rifle Grenades"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\cargoMag_ca.paa"; + ITEM(1Rnd_HE_Grenade_shell, 70, 25); + ITEM(1Rnd_Smoke_Grenade_shell, 50, 25); + ITEM(UGL_FlareWhite_F, 50, 25); + }; + + class muzzleshalo{ + displayName = "Muzzle Accessories"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\itemMuzzle_ca.paa"; + ITEM(optre_ma5suppressor, 80, MZ_STOCK); + ITEM(optre_m12_suppressor, 80, MZ_STOCK); + ITEM(optre_m393_suppressor, 80, MZ_STOCK); + ITEM(optre_ma37ksuppressor, 80, MZ_STOCK); + ITEM(optre_srs99d_suppressor, 100, MZ_STOCK); + ITEM(optre_m7_silencer, 80, MZ_STOCK); + }; + + class magazineshalo{ + displayName = "Magazines"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\cargoMag_ca.paa"; + + ITEM(OPTRE_8Rnd_127x40_Mag, 17, MZ_STOCK); + ITEM(OPTRE_12Rnd_127x40_Mag, 20, MZ_STOCK); + ITEM(OPTRE_48Rnd_5x23mm_Mag, 30, MZ_STOCK); + ITEM(16Rnd_10mm_Ball, 25, MZ_STOCK); + ITEM(OPTRE_6Rnd_8Gauge_Pellets, 25, MZ_STOCK); + ITEM(OPTRE_60Rnd_5x23mm_Mag, 65, MZ_STOCK); + ITEM(OPTRE_64Rnd_57x31_Mag, 55, MZ_STOCK); + ITEM(OPTRE_32Rnd_762x51_Mag, 30, MZ_STOCK); + ITEM(OPTRE_40Rnd_30x06_Mag, 35, MZ_STOCK); + ITEM(OPTRE_100Rnd_762x51_Box, 62, MZ_STOCK); + ITEM(OPTRE_100Rnd_95x40_Box, 65, MZ_STOCK); + ITEM(OPTRE_10RND_338_SP, 45, MZ_STOCK); + ITEM(OPTRE_36Rnd_95x40_Mag, 30, MZ_STOCK); + ITEM(OPTRE_60Rnd_762x51_Mag, 50, MZ_STOCK); + ITEM(OPTRE_42Rnd_95x40_Mag, 35, MZ_STOCK); + ITEM(Commando_20Rnd_65_Mag, 65, MZ_STOCK); + ITEM(OPTRE_15Rnd_762x51_Mag, 55, MZ_STOCK); + ITEM(OPTRE_5Rnd_127x99, 80, MZ_STOCK); + ITEM(OPTRE_4Rnd_145x114_APFSDS_Mag, 100, MZ_STOCK); + ITEM(OPTRE_7Rnd_20mm_APFSDS_Mag, 150, MZ_STOCK); + + }; + + class mischalo{ + displayName = "Misc"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\backpack_ca.paa"; + + // Spartan gear + ITEM(OPTRE_MJOLNIR_MkVBArmor, 1500, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_MkVBArmor_MkV4, 1500, MISC_STOCK); + ITEM(OPTRE_ANPRC_515_Spartan, 800, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_MkVBHelmet, 800, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_MkVBHelmet_UA_HUL, 800, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_EOD, 1000, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_CQC, 1000, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_Commando, 1000, MISC_STOCK); + ITEM(OPTRE_MJOLNIR_Commando_HUL3, 1100, MISC_STOCK); + ITEM(OPTRE_ANPRC_521_Green_Spartan, 700, MISC_STOCK); + ITEM(OPTRE_ANPRC_521_Black_Spartan, 700, MISC_STOCK); + // Covenant gear + ITEM(OPTRE_FC_Elite_Armor_FieldMarshal, 3000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_HonorGuard_Ultra, 4000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_HonorGuard, 3500, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_Major, 2500, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_Minor, 2000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_Officer, 2300, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_SpecOps, 2500, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_Ultra, 3000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Armor_Zealot, 3500, MISC_STOCK); + + ITEM(OPTRE_FC_Elite_Helmet_FieldMarshal, 1500, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_HonorGuard_Ultra, 2000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_HonorGuard, 1750, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_Major, 1250, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_Minor, 1000, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_Officer, 1100, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_SpecOps, 750, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_Ultra, 1500, MISC_STOCK); + ITEM(OPTRE_FC_Elite_Helmet_Zealot, 1750, MISC_STOCK); + + ITEM(C7_Remote_Mag, 400, MISC_STOCK); + ITEM(C12_Remote_Mag, 400, MISC_STOCK); + }; + + class pointershalo{ + displayName = "Pointer Accessories"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\itemAcc_ca.paa"; + + ITEM(optre_bmr_laser, 70, PN_STOCK); + ITEM(optre_dmr_light, 70, PN_STOCK); + ITEM(optre_m45_flashlight, 70, PN_STOCK); + ITEM(optre_m45_flashlight_red, 70, PN_STOCK); + ITEM(optre_m12_laser, 70, PN_STOCK); + ITEM(optre_m7_flashlight, 70, PN_STOCK); + ITEM(optre_m7_laser, 70, PN_STOCK); + }; + + class specialweaponshalo{ + displayName = "Special Weapons"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\primaryWeapon_ca.paa"; + ITEM(OPTRE_M319, 300, RIFLE_STOCK); + ITEM(OPTRE_M319n, 400, RIFLE_STOCK); + ITEM(OPTRE_M319m, 250, RIFLE_STOCK); + ITEM(OPTRE_M319s, 250, RIFLE_STOCK); + }; + + class opticshalo{ + displayName = "Optics Accessories"; + picture = ""; + ITEM(optre_br45_scope, 150, MAGAZINE_STOCK); + ITEM(optre_br55hb_scope, 150, MAGAZINE_STOCK); + ITEM(optre_m392_scope, 150, MAGAZINE_STOCK); + ITEM(optre_m393_scope, 150, MAGAZINE_STOCK); + ITEM(optre_m393_acog, 150, MAGAZINE_STOCK); + ITEM(optre_bmr_scope, 150, MAGAZINE_STOCK); + ITEM(optre_m7_sight, 150, MAGAZINE_STOCK); + ITEM(optre_ma5c_smartlink, 150, MAGAZINE_STOCK); + ITEM(optre_ma5_smartlink, 150, MAGAZINE_STOCK); + ITEM(optre_ma5_buis, 150, MAGAZINE_STOCK); + ITEM(optre_ma37_smartlink_scope, 150, MAGAZINE_STOCK); + ITEM(optre_m393_eotech, 150, MAGAZINE_STOCK); + ITEM(optre_srm_sight, 250, MAGAZINE_STOCK); + ITEM(optre_srs99c_scope, 350, MAGAZINE_STOCK); + ITEM(optre_srs99_scope, 350, MAGAZINE_STOCK); + }; + + class underbarrelhalo{ + displayName = "Underbarrel Accessories"; + picture = "a3\ui_f\data\gui\Rsc\RscDisplayArsenal\itemBipod_ca.paa"; + + ITEM(optre_br45grip, 50, 20); + }; }; class stores @@ -12786,5 +13021,26 @@ class cfgHALsStore "underbarreluns" }; }; + class OPTRE + { + displayName = $STR_ARMS_DEALER_STORE; + categories[] = { + "handgunshalo", + "smghalo", + "mghalo", + "rifleshalo", + "sniperrifleshalo", + "launchershalo", + "launchermagazineshalo", + "riflegrenadeshalo", + "muzzleshalo", + "magazineshalo", + "pointershalo", + "specialweaponshalo", + "mischalo", + "opticshalo", + "underbarrelhalo" + }; + }; }; }; diff --git a/A3A/addons/logistics/CfgLogistics.hpp b/A3A/addons/logistics/CfgLogistics.hpp index 4fef337d36..e6a4b06fc5 100644 --- a/A3A/addons/logistics/CfgLogistics.hpp +++ b/A3A/addons/logistics/CfgLogistics.hpp @@ -19,6 +19,7 @@ class DOUBLES(ADDON,Nodes) #include "Nodes\UNS.hpp" #include "Nodes\Vanilla.hpp" #include "Nodes\OPTRE.hpp" // has to be here. It uses the classes from vanilla trucks + #include "Nodes\RACS.hpp" // has to be here. It uses the classes from vanilla trucks #include "Nodes\VN.hpp" #include "Nodes\WS.hpp" #include "Nodes\Aegis.hpp" diff --git a/A3A/addons/logistics/Nodes/RACS.hpp b/A3A/addons/logistics/Nodes/RACS.hpp new file mode 100644 index 0000000000..073e14085f --- /dev/null +++ b/A3A/addons/logistics/Nodes/RACS.hpp @@ -0,0 +1,58 @@ +// base classes should be defined in the other files + +class PRACS_M250 : TRIPLES(ADDON,Nodes,Base) +{ + canLoadWeapon = 0; + class Nodes + { + class Node1 + { + offset[] = {0,-0.9,1.6}; + }; + class Node2 + { + offset[] = {0,-1.7,1.6}; + }; + class Node3 + { + offset[] = {0,-2.5,1.6}; + }; + class Node4 + { + offset[] = {0,-3.3,1.6}; + }; + class Node5 + { + offset[] = {0,-4.1,1.6}; + }; + }; +}; + +class PRACS_M250_flat_bed : PRACS_M250 {canLoadWeapon = 1}; +class PRACS_M250_open : PRACS_M250 {canLoadWeapon = 1}; + +class PRACS_SLA_URAL : TRIPLES(ADDON,Nodes,Base) +{ + canLoadWeapon = 0; + class Nodes + { + class Node1 + { + offset[] = {0,-0.4,-0.15}; + }; + class Node2 + { + offset[] = {0,-1.2,-0.15}; + }; + class Node3 + { + offset[] = {0,-2,-0.15}; + }; + class Node4 + { + offset[] = {0,-2.8,-0.15}; + }; + }; +}; + +class PRACS_SLA_Ural_flat_bed : PRACS_SLA_URAL {canLoadWeapon = 1}; \ No newline at end of file diff --git a/A3A/addons/scrt/Trader/fn_trader_setStockType.sqf b/A3A/addons/scrt/Trader/fn_trader_setStockType.sqf index 9d0cbdeed0..fba3505ef7 100644 --- a/A3A/addons/scrt/Trader/fn_trader_setStockType.sqf +++ b/A3A/addons/scrt/Trader/fn_trader_setStockType.sqf @@ -56,6 +56,10 @@ switch (true) do { Info("Initializing WS trader."); [_traderX, "ws"] call HALs_store_fnc_addTrader; }; + case ("OPTRE" isEqualTo (_templateParts select 0)): { + Info("Initializing OPTRE trader."); + [_traderX, "OPTRE"] call HALs_store_fnc_addTrader; + }; case ("IFA" isEqualTo (_templateParts select 0)): { Info("Initializing IFA trader."); [_traderX, "ww2mod"] call HALs_store_fnc_addTrader;