summaryrefslogtreecommitdiffstats
path: root/Common
diff options
context:
space:
mode:
authorhybrid <hybrid@hybridlabs.pro>2026-06-11 19:38:09 +0300
committerhybrid <hybrid@hybridlabs.pro>2026-06-11 19:38:09 +0300
commita3a91d4f45b22fd487ecbc954ad979be5d03efdd (patch)
treea554ab159a347dcd6c00ca1c7c26c1ec3ac0a6bd /Common
downloada2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.tar.gz
a2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.tar.bz2
a2wf_chernarus-a3a91d4f45b22fd487ecbc954ad979be5d03efdd.zip
Diffstat (limited to '')
-rw-r--r--Common/Common_AARadarMarkerUpdate.sqf35
-rw-r--r--Common/Common_DisableAC.sqf1
-rw-r--r--Common/Common_InitArtillery.sqf7
-rw-r--r--Common/Common_InitUnit.sqf50
-rw-r--r--Common/Common_MarkerUpdate.sqf41
-rw-r--r--Common/Config/Config_AircraftFactory.sqf32
-rw-r--r--Common/Config/Config_Airport.sqf36
-rw-r--r--Common/Config/Config_Allies.sqf37
-rw-r--r--Common/Config/Config_Artillery.sqf7
-rw-r--r--Common/Config/Config_Barracks.sqf47
-rw-r--r--Common/Config/Config_Depot.sqf30
-rw-r--r--Common/Config/Config_HeavyFactory.sqf32
-rw-r--r--Common/Config/Config_LightFactory.sqf32
-rw-r--r--Common/Config/Config_Loadouts.sqf15
-rw-r--r--Common/Config/Config_Occupation.sqf9
-rw-r--r--Common/Config/Config_Resistance.sqf7
-rw-r--r--Common/Config/Config_Special.sqf7
-rw-r--r--Common/Config/Config_Squads.sqf19
-rw-r--r--Common/Config/Config_Structures.sqf78
-rw-r--r--Common/Config/Core/Core_ACE_US_D.sqf67
-rw-r--r--Common/Config/Core/Core_ACE_US_W.sqf136
-rw-r--r--Common/Config/Core/Core_ACR.sqf97
-rw-r--r--Common/Config/Core/Core_BAF.sqf135
-rw-r--r--Common/Config/Core/Core_BAFD.sqf124
-rw-r--r--Common/Config/Core/Core_BAFW.sqf152
-rw-r--r--Common/Config/Core/Core_CDF.sqf180
-rw-r--r--Common/Config/Core/Core_CIV.sqf175
-rw-r--r--Common/Config/Core/Core_DeltaForce.sqf65
-rw-r--r--Common/Config/Core/Core_FR.sqf81
-rw-r--r--Common/Config/Core/Core_GUE.sqf137
-rw-r--r--Common/Config/Core/Core_INS.sqf201
-rw-r--r--Common/Config/Core/Core_KSK.sqf47
-rw-r--r--Common/Config/Core/Core_MVD.sqf50
-rw-r--r--Common/Config/Core/Core_PMC.sqf103
-rw-r--r--Common/Config/Core/Core_RU.sqf278
-rw-r--r--Common/Config/Core/Core_Spetsnaz.sqf50
-rw-r--r--Common/Config/Core/Core_TK.sqf249
-rw-r--r--Common/Config/Core/Core_TKA.sqf265
-rw-r--r--Common/Config/Core/Core_TKCIV.sqf133
-rw-r--r--Common/Config/Core/Core_TKGUE.sqf128
-rw-r--r--Common/Config/Core/Core_TKSF.sqf41
-rw-r--r--Common/Config/Core/Core_US.sqf305
-rw-r--r--Common/Config/Core/Core_USMC.sqf254
-rw-r--r--Common/Config/Core_Artillery/Arrowhead/Artillery_TKA.sqf43
-rw-r--r--Common/Config/Core_Artillery/Arrowhead/Artillery_US.sqf47
-rw-r--r--Common/Config/Core_Artillery/CombinedOps/Artillery_RU.sqf43
-rw-r--r--Common/Config/Core_Artillery/CombinedOps/Artillery_US.sqf47
-rw-r--r--Common/Config/Core_Artillery/Vanilla/Artillery_CDF.sqf43
-rw-r--r--Common/Config/Core_Artillery/Vanilla/Artillery_INS.sqf43
-rw-r--r--Common/Config/Core_Artillery/Vanilla/Artillery_RU.sqf43
-rw-r--r--Common/Config/Core_Artillery/Vanilla/Artillery_USMC.sqf59
-rw-r--r--Common/Config/Core_Definition/Arrowhead/Definition_US_TKA.sqf27
-rw-r--r--Common/Config/Core_Definition/CombinedOps/Definition_US_INS.sqf32
-rw-r--r--Common/Config/Core_Definition/CombinedOps/Definition_US_RU.sqf32
-rw-r--r--Common/Config/Core_Definition/Vanilla/Definition_CDF_INS.sqf27
-rw-r--r--Common/Config/Core_Definition/Vanilla/Definition_CDF_RU.sqf27
-rw-r--r--Common/Config/Core_Definition/Vanilla/Definition_USMC_INS.sqf27
-rw-r--r--Common/Config/Core_Definition/Vanilla/Definition_USMC_RU.sqf27
-rw-r--r--Common/Config/Core_Gear/Core_ACE_G.sqf407
-rw-r--r--Common/Config/Core_Gear/Core_Arrowhead_G.sqf801
-rw-r--r--Common/Config/Core_Gear/Core_BAF_G.sqf155
-rw-r--r--Common/Config/Core_Gear/Core_PMC_G.sqf107
-rw-r--r--Common/Config/Core_Gear/Core_Vanilla_G.sqf811
-rw-r--r--Common/Config/Core_Loadout/Arrowhead/Loadout_TK.sqf355
-rw-r--r--Common/Config/Core_Loadout/Arrowhead/Loadout_TKA.sqf355
-rw-r--r--Common/Config/Core_Loadout/Arrowhead/Loadout_US.sqf450
-rw-r--r--Common/Config/Core_Loadout/CombinedOps/Loadout_RU.sqf483
-rw-r--r--Common/Config/Core_Loadout/CombinedOps/Loadout_US.sqf574
-rw-r--r--Common/Config/Core_Loadout/Vanilla/Loadout_CDF.sqf306
-rw-r--r--Common/Config/Core_Loadout/Vanilla/Loadout_INS.sqf306
-rw-r--r--Common/Config/Core_Loadout/Vanilla/Loadout_RU.sqf320
-rw-r--r--Common/Config/Core_Loadout/Vanilla/Loadout_USMC.sqf331
-rw-r--r--Common/Config/Core_Occupation/Occupation_CDF.sqf188
-rw-r--r--Common/Config/Core_Occupation/Occupation_INS.sqf188
-rw-r--r--Common/Config/Core_Occupation/Occupation_RU.sqf177
-rw-r--r--Common/Config/Core_Occupation/Occupation_TKA.sqf176
-rw-r--r--Common/Config/Core_Occupation/Occupation_US.sqf172
-rw-r--r--Common/Config/Core_Occupation/Occupation_USMC.sqf173
-rw-r--r--Common/Config/Core_Resistance/Resistance_GUE.sqf100
-rw-r--r--Common/Config/Core_Resistance/Resistance_PMC.sqf127
-rw-r--r--Common/Config/Core_Resistance/Resistance_TKGUE.sqf110
-rw-r--r--Common/Config/Core_Squads/Arrowhead/Squad_TK.sqf285
-rw-r--r--Common/Config/Core_Squads/Arrowhead/Squad_TKA.sqf45
-rw-r--r--Common/Config/Core_Squads/Arrowhead/Squad_US.sqf45
-rw-r--r--Common/Config/Core_Squads/CombinedOps/Squad_US_Camo.sqf51
-rw-r--r--Common/Config/Core_Squads/Squads_GetFactionGroups.sqf78
-rw-r--r--Common/Config/Core_Squads/Vanilla/Squad_CDF.sqf45
-rw-r--r--Common/Config/Core_Squads/Vanilla/Squad_INS.sqf45
-rw-r--r--Common/Config/Core_Squads/Vanilla/Squad_RU.sqf70
-rw-r--r--Common/Config/Core_Squads/Vanilla/Squad_USMC.sqf51
-rw-r--r--Common/Config/Core_Structures/Arrowhead/Structures_TKA.sqf162
-rw-r--r--Common/Config/Core_Structures/Arrowhead/Structures_US.sqf166
-rw-r--r--Common/Config/Core_Structures/CombinedOps/Structures_CDF.sqf161
-rw-r--r--Common/Config/Core_Structures/CombinedOps/Structures_INS.sqf162
-rw-r--r--Common/Config/Core_Structures/CombinedOps/Structures_TKA.sqf163
-rw-r--r--Common/Config/Core_Structures/CombinedOps/Structures_US.sqf167
-rw-r--r--Common/Config/Core_Structures/Vanilla/Structures_CDF.sqf162
-rw-r--r--Common/Config/Core_Structures/Vanilla/Structures_INS.sqf163
-rw-r--r--Common/Config/Core_Structures/Vanilla/Structures_RU.sqf165
-rw-r--r--Common/Config/Core_Structures/Vanilla/Structures_USMC.sqf162
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Aircraft_TK.sqf20
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Aircraft_TKA.sqf17
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Aircraft_US.sqf27
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Airport_TK.sqf13
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Airport_TKA.sqf13
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Airport_US.sqf12
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Barracks_TK.sqf33
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Barracks_TKA.sqf34
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Barracks_TKGUE.sqf20
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Barracks_US.sqf132
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Depot_TK.sqf15
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Depot_TKA.sqf15
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Depot_US.sqf15
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Heavy_TK.sqf14
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Heavy_TKA.sqf11
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Heavy_TKGUE.sqf7
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Heavy_US.sqf21
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Light_TK.sqf29
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Light_TKA.sqf25
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Light_TKGUE.sqf13
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Light_US.sqf34
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Special_TKA.sqf70
-rw-r--r--Common/Config/Core_Units/Arrowhead/Units_Special_US.sqf70
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Aircraft_RU.sqf28
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Aircraft_US.sqf38
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Airport_RU.sqf16
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Airport_US.sqf16
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Barracks_GUE.sqf42
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Barracks_RU.sqf65
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Barracks_US.sqf163
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Depot_RU.sqf21
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Depot_US.sqf22
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Heavy_GUE.sqf9
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Heavy_RU.sqf25
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Heavy_US.sqf52
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Light_GUE.sqf20
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Light_RU.sqf50
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Light_US.sqf75
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Special_RU.sqf70
-rw-r--r--Common/Config/Core_Units/CombinedOps/Units_Special_US.sqf74
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Aircraft_CDF.sqf15
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Aircraft_INS.sqf15
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Aircraft_RU.sqf23
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Aircraft_USMC.sqf21
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Airport_CDF.sqf11
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Airport_INS.sqf11
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Airport_RU.sqf13
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Airport_USMC.sqf16
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Barracks_CDF.sqf23
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Barracks_GUE.sqf26
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Barracks_INS.sqf20
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Barracks_RU.sqf35
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Barracks_USMC.sqf35
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Depot_CDF.sqf15
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Depot_INS.sqf15
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Depot_RU.sqf18
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Depot_USMC.sqf19
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Heavy_CDF.sqf9
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Heavy_GUE.sqf7
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Heavy_INS.sqf9
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Heavy_RU.sqf11
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Heavy_USMC.sqf9
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Light_CDF.sqf18
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Light_GUE.sqf12
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Light_INS.sqf19
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Light_RU.sqf26
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Light_USMC.sqf24
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Special_CDF.sqf70
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Special_INS.sqf70
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Special_RU.sqf70
-rw-r--r--Common/Config/Core_Units/Vanilla/Units_Special_USMC.sqf70
-rw-r--r--Common/Config/readme.txt38
-rw-r--r--Common/Functions/Common_BackpackHasSpace.sqf16
-rw-r--r--Common/Functions/Common_BalanceInit.sqf48
-rw-r--r--Common/Functions/Common_BuildingInRange.sqf17
-rw-r--r--Common/Functions/Common_ChangeClientFunds.sqf7
-rw-r--r--Common/Functions/Common_ChangeSideSupply.sqf11
-rw-r--r--Common/Functions/Common_ChangeTeamFunds.sqf8
-rw-r--r--Common/Functions/Common_CivilianKilled.sqf29
-rw-r--r--Common/Functions/Common_CreateUnit.sqf28
-rw-r--r--Common/Functions/Common_CreateVehicle.sqf20
-rw-r--r--Common/Functions/Common_EquipArtillery.sqf19
-rw-r--r--Common/Functions/Common_EquipBackpack.sqf9
-rw-r--r--Common/Functions/Common_EquipLoadout.sqf26
-rw-r--r--Common/Functions/Common_FireArtillery.sqf65
-rw-r--r--Common/Functions/Common_GetAIDigit.sqf21
-rw-r--r--Common/Functions/Common_GetClientID.sqf6
-rw-r--r--Common/Functions/Common_GetClientIDFromTeam.sqf11
-rw-r--r--Common/Functions/Common_GetClientTeam.sqf7
-rw-r--r--Common/Functions/Common_GetClosestLocation.sqf5
-rw-r--r--Common/Functions/Common_GetClosestLocationBySide.sqf21
-rw-r--r--Common/Functions/Common_GetCommanderFromVotes.sqf36
-rw-r--r--Common/Functions/Common_GetCommanderTeam.sqf7
-rw-r--r--Common/Functions/Common_GetCommanderVotes.sqf19
-rw-r--r--Common/Functions/Common_GetConfigInfo.sqf8
-rw-r--r--Common/Functions/Common_GetConfigVehicleCrewSlot.sqf21
-rw-r--r--Common/Functions/Common_GetConfigVehicleTurrets.sqf16
-rw-r--r--Common/Functions/Common_GetConfigVehicleTurretsReturn.sqf54
-rw-r--r--Common/Functions/Common_GetFactories.sqf10
-rw-r--r--Common/Functions/Common_GetFriendlyCamps.sqf14
-rw-r--r--Common/Functions/Common_GetGroupFromConfig.sqf23
-rw-r--r--Common/Functions/Common_GetHostilesInArea.sqf18
-rw-r--r--Common/Functions/Common_GetLiveUnits.sqf8
-rw-r--r--Common/Functions/Common_GetNameSpace.sqf5
-rw-r--r--Common/Functions/Common_GetPositionFrom.sqf11
-rw-r--r--Common/Functions/Common_GetRandomPosition.sqf12
-rw-r--r--Common/Functions/Common_GetRespawnCamps.sqf14
-rw-r--r--Common/Functions/Common_GetSafePlace.sqf27
-rw-r--r--Common/Functions/Common_GetSideFromID.sqf7
-rw-r--r--Common/Functions/Common_GetSideHQ.sqf1
-rw-r--r--Common/Functions/Common_GetSideHQDeployed.sqf1
-rw-r--r--Common/Functions/Common_GetSideID.sqf7
-rw-r--r--Common/Functions/Common_GetSideStructures.sqf1
-rw-r--r--Common/Functions/Common_GetSideSupply.sqf1
-rw-r--r--Common/Functions/Common_GetSideTowns.sqf10
-rw-r--r--Common/Functions/Common_GetSideUpgrades.sqf1
-rw-r--r--Common/Functions/Common_GetSleepFPS.sqf11
-rw-r--r--Common/Functions/Common_GetTeamArtillery.sqf32
-rw-r--r--Common/Functions/Common_GetTeamAutonomous.sqf3
-rw-r--r--Common/Functions/Common_GetTeamFunds.sqf7
-rw-r--r--Common/Functions/Common_GetTeamMoveMode.sqf3
-rw-r--r--Common/Functions/Common_GetTeamMovePos.sqf3
-rw-r--r--Common/Functions/Common_GetTeamRespawn.sqf3
-rw-r--r--Common/Functions/Common_GetTeamType.sqf3
-rw-r--r--Common/Functions/Common_GetTeamVehicles.sqf30
-rw-r--r--Common/Functions/Common_GetTotalCamps.sqf7
-rw-r--r--Common/Functions/Common_GetTotalCampsOnSide.sqf15
-rw-r--r--Common/Functions/Common_GetTotalSupplyValue.sqf13
-rw-r--r--Common/Functions/Common_GetTownsHeld.sqf8
-rw-r--r--Common/Functions/Common_GetTownsIncome.sqf18
-rw-r--r--Common/Functions/Common_GetTurretsMags.sqf42
-rw-r--r--Common/Functions/Common_GetUnitVehicle.sqf6
-rw-r--r--Common/Functions/Common_GetUnitsBelowHeight.sqf11
-rw-r--r--Common/Functions/Common_GetVehicleMags.sqf4
-rw-r--r--Common/Functions/Common_HandleArtillery.sqf104
-rw-r--r--Common/Functions/Common_HandleIncomingMissile.sqf22
-rw-r--r--Common/Functions/Common_IsArtillery.sqf12
-rw-r--r--Common/Functions/Common_PlaceNear.sqf34
-rw-r--r--Common/Functions/Common_PlaceSafe.sqf28
-rw-r--r--Common/Functions/Common_RearmVehicle.sqf39
-rw-r--r--Common/Functions/Common_RearmVehicleOA.sqf51
-rw-r--r--Common/Functions/Common_RevealArea.sqf11
-rw-r--r--Common/Functions/Common_SetCommanderVotes.sqf14
-rw-r--r--Common/Functions/Common_SetNamespace.sqf15
-rw-r--r--Common/Functions/Common_SetTeamAutonomous.sqf8
-rw-r--r--Common/Functions/Common_SetTeamMoveMode.sqf8
-rw-r--r--Common/Functions/Common_SetTeamMovePos.sqf8
-rw-r--r--Common/Functions/Common_SetTeamRespawn.sqf8
-rw-r--r--Common/Functions/Common_SetTeamType.sqf8
-rw-r--r--Common/Functions/Common_SetTurretsMags.sqf30
-rw-r--r--Common/Functions/Common_SortByDistance.sqf24
-rw-r--r--Common/Functions/Common_SpawnTurrets.sqf22
-rw-r--r--Common/Functions/Common_UnitKilled.sqf196
-rw-r--r--Common/Functions/Common_UpdateStatistics.sqf1
-rw-r--r--Common/Functions/Common_UseStationaryDefense.sqf32
-rw-r--r--Common/Init/Init_Airfield.sqf9
-rw-r--r--Common/Init/Init_Boundaries.sqf38
-rw-r--r--Common/Init/Init_Camp.sqf85
-rw-r--r--Common/Init/Init_Common.sqf285
-rw-r--r--Common/Init/Init_CommonConstants.sqf492
-rw-r--r--Common/Init/Init_Location.sqf87
-rw-r--r--Common/Init/Init_Neighbors.sqf232
-rw-r--r--Common/Init/Init_PublicVariables.sqf62
-rw-r--r--Common/Init/Init_TownMode.sqf53
-rw-r--r--Common/Init/Init_Towns.sqf25
-rw-r--r--Common/Module/CIPHER/CIPHER_Init.sqf91
-rw-r--r--Common/Module/CIPHER/CIPHER_Sort.sqf63
267 files changed, 19423 insertions, 0 deletions
diff --git a/Common/Common_AARadarMarkerUpdate.sqf b/Common/Common_AARadarMarkerUpdate.sqf
new file mode 100644
index 0000000..598932b
--- /dev/null
+++ b/Common/Common_AARadarMarkerUpdate.sqf
@@ -0,0 +1,35 @@
+Private ["_height","_object","_markerName","_side","_zOffset"];
+
+waitUntil {commonInitComplete};
+sleep 2;
+
+_object = _this select 0;
+_side = _this select 1;
+
+if (_side == side player || isNull _object ||!(alive _object)) exitWith {};
+
+unitMarker = unitMarker + 1;
+_markerName = Format ["unitMarker%1",unitMarker];
+
+createMarkerLocal [_markerName,[0,0,0]];
+_markerName setMarkerTypeLocal "Vehicle";
+_markerName setMarkerColorLocal "ColorRed";
+_markerName setMarkerSizeLocal [5,5];
+_markerName setMarkerAlphaLocal 0;
+_height = 'WFBE_ANTIAIRRADARDETECTION' Call GetNamespace;
+
+while {alive _object && !(isNull _object)} do {
+ if (antiAirRadarInRange) then {
+ _zOffset = (getPos _object) select 2;
+ if (_zOffset > _height) then {
+ _markerName setMarkerAlphaLocal 1;
+ _markerName setMarkerPosLocal (getPos _object);
+ } else {
+ _markerName setMarkerAlphaLocal 0;
+ };
+ };
+
+ sleep 1;
+};
+
+deleteMarkerLocal _markerName; \ No newline at end of file
diff --git a/Common/Common_DisableAC.sqf b/Common/Common_DisableAC.sqf
new file mode 100644
index 0000000..e6974d8
--- /dev/null
+++ b/Common/Common_DisableAC.sqf
@@ -0,0 +1 @@
+enableEngineArtillery false; \ No newline at end of file
diff --git a/Common/Common_InitArtillery.sqf b/Common/Common_InitArtillery.sqf
new file mode 100644
index 0000000..2b1cdfb
--- /dev/null
+++ b/Common/Common_InitArtillery.sqf
@@ -0,0 +1,7 @@
+Private ["_arty"];
+_arty = _this select 0;
+
+waitUntil {BIS_ARTY_LOADED};
+sleep 5;
+
+[_arty] call BIS_ARTY_F_initVehicle; \ No newline at end of file
diff --git a/Common/Common_InitUnit.sqf b/Common/Common_InitUnit.sqf
new file mode 100644
index 0000000..9cb2953
--- /dev/null
+++ b/Common/Common_InitUnit.sqf
@@ -0,0 +1,50 @@
+Private ["_ainumber","_amount","_color","_finalNumber","_isMan","_markerName","_numbers","_params","_side","_size","_text","_txt","_type","_unit","_val","_val2"];
+_unit = _this select 0;
+_side = _this select 1;
+
+if (isNull _unit) exitWith {};
+
+waitUntil {commonInitComplete};
+
+if !(local player) exitWith {};
+
+sleep 2;
+
+_isMan = if (_unit isKindOf "Man") then {true} else {false};
+
+if !(_isMan) then {
+ if (('WFBE_INCOMINGMISSILEMAXRANGE' Call GetNamespace) != 0) then {_unit addEventHandler ['IncomingMissile', {_this Spawn HandleIncomingMissile}]};
+
+ if !(WF_A2_Vanilla) then {
+ if ('WFBE_THERMALIMAGING' Call GetNamespace < 2) then {Call Compile '_unit disableTIEquipment true;'};
+ };
+};
+
+if (sideJoined != _side) exitWith {};
+
+_type = "Vehicle";
+_color = "ColorGreen";
+_size = [5,5];
+_txt = "";
+if ((typeOf _unit) in (Format['WFBE_%1SUPPLYTRUCKS',str _side] Call GetNamespace)) then {_type = "SupplyVehicle";_size = [1,1]};
+if ((typeOf _unit) in (Format['WFBE_%1REPAIRTRUCKS',str _side] Call GetNamespace)) then {_type = "RepairVehicle"};
+
+unitMarker = unitMarker + 1;
+
+_markerName = Format ["unitMarker%1",unitMarker];
+_params = [];
+if (_isMan) then {
+ _color = "ColorYellow";
+ _type = "mil_dot";
+ _size = [0.5,0.5];
+ if (group _unit == group player) then {
+ _color = "ColorOrange";
+ _txt = (_unit) Call GetAIDigit;
+ };
+ _params = [_type,_color,_size,_txt,_markerName,_unit,1,true,"DestroyedVehicle",_color,false,_side,[1,1]];
+} else {
+ if (local _unit && isMultiplayer) then {_color = "ColorOrange"};
+ _params = [_type,_color,_size,_txt,_markerName,_unit,1,true,"DestroyedVehicle",_color,false,_side,[2,2]];
+};
+
+_params Spawn MarkerUpdate; \ No newline at end of file
diff --git a/Common/Common_MarkerUpdate.sqf b/Common/Common_MarkerUpdate.sqf
new file mode 100644
index 0000000..e9c372b
--- /dev/null
+++ b/Common/Common_MarkerUpdate.sqf
@@ -0,0 +1,41 @@
+private ["_deathMarkerColor","_deathMarkerSize","_deathMarkerType","_deletePrevious","_markerColor","_markerName","_markerSize","_markerType","_markerText","_refreshRate","_trackDeath","_tracked","_side"];
+
+waitUntil {commonInitComplete};
+
+_markerType = _this select 0;
+_markerColor = _this select 1;
+_markerSize = _this select 2;
+_markerText = _this select 3;
+_markerName = _this select 4;
+_tracked = _this select 5;
+_refreshRate = _this select 6;
+_trackDeath = _this select 7;
+_deathMarkerType = _this select 8;
+_deathMarkerColor = _this select 9;
+_deletePrevious = _this select 10;
+_side = _this select 11;
+_deathMarkerSize = [1,1];
+if (count _this > 12) then {_deathMarkerSize = _this select 12};
+
+if (_side != side player || isNull _tracked || !(alive _tracked)) exitWith {};
+if (_deletePrevious) then {deleteMarkerLocal _markerName};
+
+createMarkerLocal [_markerName,getPos _tracked];
+if (_markerText != "") then {_markerName setMarkerTextLocal _markerText};
+_markerName setMarkerTypeLocal _markerType;
+_markerName setMarkerColorLocal _markerColor;
+_markerName setMarkerSizeLocal _markerSize;
+
+while {alive _tracked && !(isNull _tracked)} do {
+ _markerName setMarkerPosLocal (getPos _tracked);
+ sleep _refreshRate;
+};
+
+if (_trackDeath) then {
+ _markerName setMarkerTypeLocal _deathMarkerType;
+ _markerName setMarkerColorLocal _deathMarkerColor;
+ _markerName setMarkerSizeLocal _deathMarkerSize;
+ sleep ('WFBE_MARKERDEADDELAY' Call GetNamespace);
+};
+
+deleteMarkerLocal _markerName; \ No newline at end of file
diff --git a/Common/Config/Config_AircraftFactory.sqf b/Common/Config/Config_AircraftFactory.sqf
new file mode 100644
index 0000000..e12d009
--- /dev/null
+++ b/Common/Config/Config_AircraftFactory.sqf
@@ -0,0 +1,32 @@
+Private['_balancePrice','_c','_longestAircraftBuildTime','_u'];
+
+_balancePrice = 'WFBE_BALANCEPRICE' Call GetNamespace;
+
+/* WEST - Aircraft */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Aircraft_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTAIRCRAFTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['AIRCRAFT','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Aircraft */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Aircraft_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTAIRCRAFTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['AIRCRAFT','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+_longestAircraftBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestAircraftBuildTime) then {
+ _longestAircraftBuildTime = (_c select QUERYUNITTIME);
+ };
+
+ if (_balancePrice in [1,2]) then {
+ _c set [QUERYUNITPRICE, (_c select QUERYUNITPRICE)*2];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_AircraftFactory: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTAIRCRAFTUNITS' Call GetNamespace) + ('WFBE_WESTAIRCRAFTUNITS' Call GetNamespace));
+
+['WFBE_LONGESTAIRCRAFTBUILDTIME',_longestAircraftBuildTime,true] Call SetNamespace;
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_AircraftFactory: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_Airport.sqf b/Common/Config/Config_Airport.sqf
new file mode 100644
index 0000000..42b7499
--- /dev/null
+++ b/Common/Config/Config_Airport.sqf
@@ -0,0 +1,36 @@
+Private['_balancePrice','_c','_longestAirportBuildTime','_u'];
+
+_balancePrice = 'WFBE_BALANCEPRICE' Call GetNamespace;
+
+/* WEST - Airport */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Airport_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTAIRPORTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['AIRPORT','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Airport */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Airport_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTAIRPORTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['AIRPORT','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+_longestAirportBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestAirportBuildTime) then {
+ _longestAirportBuildTime = (_c select QUERYUNITTIME);
+ };
+
+ if (_balancePrice in [1,2]) then {
+ _c set [QUERYUNITPRICE, (_c select QUERYUNITPRICE)*2];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_Airport: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTAIRPORTUNITS' Call GetNamespace) + ('WFBE_WESTAIRPORTUNITS' Call GetNamespace));
+
+['WFBE_LONGESTAIRPORTBUILDTIME',_longestAirportBuildTime,true] Call SetNamespace;
+
+airportDistance = 60;
+airportDirection = 180;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Airport: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_Allies.sqf b/Common/Config/Config_Allies.sqf
new file mode 100644
index 0000000..c6ae3b0
--- /dev/null
+++ b/Common/Config/Config_Allies.sqf
@@ -0,0 +1,37 @@
+Private ["_eallies","_efolder","_u","_wallies","_wfolder"];
+
+//--- Folders and Faction.
+_eallies = "INS";
+_efolder = "Vanilla";
+_wallies = "CDF";
+_wfolder = "Vanilla";
+
+//--- West Allies.
+['WFBE_WESTALLIESCREW','CDF_Soldier_Crew',true] Call SetNamespace;
+['WFBE_WESTALLIESSOLDIER','CDF_Soldier',true] Call SetNamespace;
+['WFBE_WESTALLIESPILOT','CDF_Soldier_Pilot',true] Call SetNamespace;
+
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Barracks_%2.sqf",_wfolder,_wallies];
+['WFBE_WESTALLIESBARRACKSUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Light_%2.sqf",_wfolder,_wallies];
+['WFBE_WESTALLIESLIGHTUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Heavy_%2.sqf",_wfolder,_wallies];
+['WFBE_WESTALLIESHEAVYUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Aircraft_%2.sqf",_wfolder,_wallies];
+['WFBE_WESTALLIESAIRCRAFTUNITS',_u,true] Call SetNamespace;
+
+//--- East Allies.
+['WFBE_EASTALLIESCREW','Ins_Soldier_Crew',true] Call SetNamespace;
+['WFBE_EASTALLIESSOLDIER','Ins_Soldier_1',true] Call SetNamespace;
+['WFBE_EASTALLIESPILOT','Ins_Soldier_Pilot',true] Call SetNamespace;
+
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Barracks_%2.sqf",_efolder,_eallies];
+['WFBE_EASTALLIESBARRACKSUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Light_%2.sqf",_efolder,_eallies];
+['WFBE_EASTALLIESLIGHTUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Heavy_%2.sqf",_efolder,_eallies];
+['WFBE_EASTALLIESHEAVYUNITS',_u,true] Call SetNamespace;
+_u = Call Compile preprocessFile Format ["Common\Config\Core_Units\%1\Units_Aircraft_%2.sqf",_efolder,_eallies];
+['WFBE_EASTALLIESAIRCRAFTUNITS',_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Allies: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,_wallies,_eallies]; \ No newline at end of file
diff --git a/Common/Config/Config_Artillery.sqf b/Common/Config/Config_Artillery.sqf
new file mode 100644
index 0000000..41640d2
--- /dev/null
+++ b/Common/Config/Config_Artillery.sqf
@@ -0,0 +1,7 @@
+/* Call in dynamically the west artillery. */
+Call Compile PreprocessFile Format["Common\Config\Core_Artillery\%1\Artillery_%2.sqf",WFBE_V_West_ArtilleryRootVersion,WFBE_V_West_ArtilleryFaction];
+
+/* Call in dynamically the east artillery. */
+Call Compile PreprocessFile Format["Common\Config\Core_Artillery\%1\Artillery_%2.sqf",WFBE_V_East_ArtilleryRootVersion,WFBE_V_East_ArtilleryFaction];
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Artillery: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_ArtilleryFaction,WFBE_V_East_ArtilleryFaction]; \ No newline at end of file
diff --git a/Common/Config/Config_Barracks.sqf b/Common/Config/Config_Barracks.sqf
new file mode 100644
index 0000000..8af2f23
--- /dev/null
+++ b/Common/Config/Config_Barracks.sqf
@@ -0,0 +1,47 @@
+Private['_c','_longestBarracksBuildTime','_u'];
+
+/* WEST - Barracks */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Barracks_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTBARRACKSUNITS',_u,true] Call SetNamespace;
+if (local player) then {['BARRACKS','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Barracks */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Barracks_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTBARRACKSUNITS',_u,true] Call SetNamespace;
+if (local player) then {['BARRACKS','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+if (isServer) then {
+ /* Allies */
+ if (('WFBE_ALLIES' Call GetNamespace) > 0) then {
+ //--- CDF Allies.
+ _u = Call Compile preprocessFile "Common\Config\Core_Units\Vanilla\Units_Barracks_CDF.sqf";
+ ['WFBE_WESTALLIESBARRACKSUNITS',_u,true] Call SetNamespace;
+ ['WFBE_WESTALLIESSOLDIER','CDF_Soldier',true] Call SetNamespace;
+
+ //--- Insurgent Allies.
+ _u = Call Compile preprocessFile "Common\Config\Core_Units\Vanilla\Units_Barracks_INS.sqf";
+ ['WFBE_EASTALLIESBARRACKSUNITS',_u,true] Call SetNamespace;
+ ['WFBE_EASTALLIESSOLDIER','Ins_Soldier_1',true] Call SetNamespace;
+ };
+};
+
+/* Root classes */
+westSoldierBaseClass = 'SoldierWB';
+eastSoldierBaseClass = 'SoldierEB';
+resistanceSoldierBaseClass = 'SoldierGB';
+
+_longestBarracksBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestBarracksBuildTime) then {
+ _longestBarracksBuildTime = (_c select QUERYUNITTIME);
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_Barracks: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTBARRACKSUNITS' Call GetNamespace) + ('WFBE_WESTBARRACKSUNITS' Call GetNamespace));
+
+['WFBE_LONGESTBARRACKSBUILDTIME',_longestBarracksBuildTime,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Barracks: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_Depot.sqf b/Common/Config/Config_Depot.sqf
new file mode 100644
index 0000000..1f4da37
--- /dev/null
+++ b/Common/Config/Config_Depot.sqf
@@ -0,0 +1,30 @@
+Private['_c','_longestDepotBuildTime','_u'];
+
+/* WEST - Depot */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Depot_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTDEPOTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['DEPOT','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Depot */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Depot_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTDEPOTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['DEPOT','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+_longestDepotBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestDepotBuildTime) then {
+ _longestDepotBuildTime = (_c select QUERYUNITTIME);
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_Depot: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTDEPOTUNITS' Call GetNamespace) + ('WFBE_WESTDEPOTUNITS' Call GetNamespace));
+
+['WFBE_LONGESTDEPOTBUILDTIME',_longestDepotBuildTime,true] Call SetNamespace;
+
+depotDistance = 21;
+depotDirection = 90;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Depot: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_HeavyFactory.sqf b/Common/Config/Config_HeavyFactory.sqf
new file mode 100644
index 0000000..ad5c1f5
--- /dev/null
+++ b/Common/Config/Config_HeavyFactory.sqf
@@ -0,0 +1,32 @@
+Private['_balancePrice','_c','_longestHeavyBuildTime','_u'];
+
+_balancePrice = 'WFBE_BALANCEPRICE' Call GetNamespace;
+
+/* WEST - Heavy */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Heavy_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTHEAVYUNITS',_u,true] Call SetNamespace;
+if (local player) then {['HEAVY','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Heavy */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Heavy_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTHEAVYUNITS',_u,true] Call SetNamespace;
+if (local player) then {['HEAVY','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+_longestHeavyBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestHeavyBuildTime) then {
+ _longestHeavyBuildTime = (_c select QUERYUNITTIME);
+ };
+
+ if (_balancePrice in [1,3]) then {
+ _c set [QUERYUNITPRICE, (_c select QUERYUNITPRICE)*2];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_HeavyFactory: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTHEAVYUNITS' Call GetNamespace) + ('WFBE_WESTHEAVYUNITS' Call GetNamespace));
+
+['WFBE_LONGESTHEAVYBUILDTIME',_longestHeavyBuildTime,true] Call SetNamespace;
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_HeavyFactory: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_LightFactory.sqf b/Common/Config/Config_LightFactory.sqf
new file mode 100644
index 0000000..fd1e1db
--- /dev/null
+++ b/Common/Config/Config_LightFactory.sqf
@@ -0,0 +1,32 @@
+Private['_balancePrice','_c','_longestLightBuildTime','_u'];
+
+_balancePrice = 'WFBE_BALANCEPRICE' Call GetNamespace;
+
+/* WEST - Light */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Light_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+['WFBE_WESTLIGHTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['LIGHT','WEST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+/* EAST - Light */
+_u = Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Light_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+['WFBE_EASTLIGHTUNITS',_u,true] Call SetNamespace;
+if (local player) then {['LIGHT','EAST',_u] Call Compile preProcessFile 'Client\Init\Init_Faction.sqf'};
+
+_longestLightBuildTime = 0;
+{
+ _c = _x Call GetNamespace;
+ if !(isNil '_c') then {
+ if ((_c select QUERYUNITTIME) > _longestLightBuildTime) then {
+ _longestLightBuildTime = (_c select QUERYUNITTIME);
+ };
+
+ if (_balancePrice in [1,3]) then {
+ _c set [QUERYUNITPRICE, (_c select QUERYUNITPRICE)*2];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Config_LightFactory: '%1' is not defined in the Core files.",_x,diag_frameno,diag_tickTime];
+ };
+} forEach (('WFBE_EASTLIGHTUNITS' Call GetNamespace) + ('WFBE_WESTLIGHTUNITS' Call GetNamespace));
+
+['WFBE_LONGESTLIGHTBUILDTIME',_longestLightBuildTime,true] Call SetNamespace;
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_LightFactory: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_Loadouts.sqf b/Common/Config/Config_Loadouts.sqf
new file mode 100644
index 0000000..7472a1f
--- /dev/null
+++ b/Common/Config/Config_Loadouts.sqf
@@ -0,0 +1,15 @@
+/*
+ New loadout system. | Hybrid
+ Only one side gear is defined at a time. west don't know east and vice versa.
+*/
+
+/* Backpacks */
+
+/* Binocular (Used for spotting) */
+['WFBE_BINOCULARS',['Binocular','Binocular_Vector','Laserdesignator'],true] Call SetNamespace;
+
+/* Set the loadout depending on it's type. */
+[] Call Compile PreprocessFile Format["Common\Config\Core_Loadout\%1\Loadout_%2.sqf",WFBE_V_West_LoadoutRootVersion,WFBE_V_West_Loadout];
+[] Call Compile PreprocessFile Format["Common\Config\Core_Loadout\%1\Loadout_%2.sqf",WFBE_V_East_LoadoutRootVersion,WFBE_V_East_Loadout];
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Loadouts: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Loadout,WFBE_V_East_Loadout]; \ No newline at end of file
diff --git a/Common/Config/Config_Occupation.sqf b/Common/Config/Config_Occupation.sqf
new file mode 100644
index 0000000..d4e18d5
--- /dev/null
+++ b/Common/Config/Config_Occupation.sqf
@@ -0,0 +1,9 @@
+Private ['_occTypeEast','_occTypeWest'];
+
+_occTypeWest = ('WFBE_OCCUPATIONWESTFACTIONS' Call GetNamespace) select ('WFBE_OCCUPATIONWESTFACTION' Call GetNamespace);
+_occTypeEast = ('WFBE_OCCUPATIONEASTFACTIONS' Call GetNamespace) select ('WFBE_OCCUPATIONEASTFACTION' Call GetNamespace);
+
+[] Call Compile preprocessFile Format["Common\Config\Core_Occupation\Occupation_%1.sqf",_occTypeWest];
+[] Call Compile preprocessFile Format["Common\Config\Core_Occupation\Occupation_%1.sqf",_occTypeEast];
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Occupation: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,_occTypeWest,_occTypeEast]; \ No newline at end of file
diff --git a/Common/Config/Config_Resistance.sqf b/Common/Config/Config_Resistance.sqf
new file mode 100644
index 0000000..8b68835
--- /dev/null
+++ b/Common/Config/Config_Resistance.sqf
@@ -0,0 +1,7 @@
+Private ['_resType'];
+
+_resType = ('WFBE_RESISTANCEFACTIONS' Call GetNamespace) select ('WFBE_RESISTANCEFACTION' Call GetNamespace);
+
+[] Call Compile preprocessFile Format["Common\Config\Core_Resistance\Resistance_%1.sqf",_resType];
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Resistance: Intialization (Resistance: %3) - [Done]",diag_frameno,diag_tickTime,_resType]; \ No newline at end of file
diff --git a/Common/Config/Config_Special.sqf b/Common/Config/Config_Special.sqf
new file mode 100644
index 0000000..6e892c8
--- /dev/null
+++ b/Common/Config/Config_Special.sqf
@@ -0,0 +1,7 @@
+/* Call in dynamically the west special variables. */
+Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Special_%2.sqf",WFBE_V_West_UnitsRootVersion,WFBE_V_West_Faction];
+
+/* Call in dynamically the east special variables. */
+Call Compile preprocessFile Format["Common\Config\Core_Units\%1\Units_Special_%2.sqf",WFBE_V_East_UnitsRootVersion,WFBE_V_East_Faction];
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Special: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_Faction,WFBE_V_East_Faction]; \ No newline at end of file
diff --git a/Common/Config/Config_Squads.sqf b/Common/Config/Config_Squads.sqf
new file mode 100644
index 0000000..6ccd08f
--- /dev/null
+++ b/Common/Config/Config_Squads.sqf
@@ -0,0 +1,19 @@
+Private ['_squads'];
+
+//--- West
+_squads = Call Compile PreprocessFile Format["Common\Config\Core_Squads\%1\Squad_%2.sqf",WFBE_V_West_SquadsRootVersion,WFBE_V_West_SquadsFaction];
+['WFBE_WESTAITEAMTEMPLATES',_squads select 0,true] Call SetNamespace;
+['WFBE_WESTAITEAMTEMPLATEREQUIRES',_squads select 1,true] Call SetNamespace;
+['WFBE_WESTAITEAMTYPES',_squads select 2,true] Call SetNamespace;
+['WFBE_WESTAITEAMUPGRADES',_squads select 3,true] Call SetNamespace;
+['WFBE_WESTAITEAMTEMPLATEDESCRIPTIONS',_squads select 4,true] Call SetNamespace;
+
+//--- East.
+_squads = Call Compile PreprocessFile Format["Common\Config\Core_Squads\%1\Squad_%2.sqf",WFBE_V_East_SquadsRootVersion,WFBE_V_East_SquadsFaction];
+['WFBE_EASTAITEAMTEMPLATES',_squads select 0,true] Call SetNamespace;
+['WFBE_EASTAITEAMTEMPLATEREQUIRES',_squads select 1,true] Call SetNamespace;
+['WFBE_EASTAITEAMTYPES',_squads select 2,true] Call SetNamespace;
+['WFBE_EASTAITEAMUPGRADES',_squads select 3,true] Call SetNamespace;
+['WFBE_EASTAITEAMTEMPLATEDESCRIPTIONS',_squads select 4,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Squads: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_SquadsFaction,WFBE_V_East_SquadsFaction]; \ No newline at end of file
diff --git a/Common/Config/Config_Structures.sqf b/Common/Config/Config_Structures.sqf
new file mode 100644
index 0000000..dc30d3f
--- /dev/null
+++ b/Common/Config/Config_Structures.sqf
@@ -0,0 +1,78 @@
+Private ["_n"];
+
+/* Call in dynamically the west structures. */
+Call Compile PreprocessFile Format["Common\Config\Core_Structures\%1\Structures_%2.sqf",WFBE_V_West_StructuresRootVersion,WFBE_V_West_StructuresFaction];
+
+/* Call in dynamically the east structures. */
+Call Compile PreprocessFile Format["Common\Config\Core_Structures\%1\Structures_%2.sqf",WFBE_V_East_StructuresRootVersion,WFBE_V_East_StructuresFaction];
+
+switch (true) do {
+ case WF_A2_Vanilla: {
+ WFDEPOT = ["WarfareBDepot"];
+ WFCAMP = ["WarfareBCamp"];
+ WFHANGAR = ["WarfareBAirport"];
+ WFFLAG = "FlagCarrierGUE";
+
+ /* RESISTANCE STATIONARY DEFENSES */
+ _n = ["GUE_WarfareBMGNest_PK"];
+ _n = _n + ["DSHKM_Gue"];
+ _n = _n + ["SPG9_Gue"];
+ _n = _n + ["ZU23_Gue"];
+
+ ['WFBE_RESISTANCEDEFENSENAMES',_n,true] Call SetNamespace;
+
+ }; case WF_A2_Arrowhead: {
+ WFDEPOT = ["Land_fortified_nest_big_EP1"];
+ WFCAMP = ["Land_Fort_Watchtower_EP1"];
+ WFHANGAR = ["Land_Mil_hangar_EP1"];
+ WFFLAG = "FlagCarrierTakistan_EP1";
+
+ /* RESISTANCE STATIONARY DEFENSES */
+ _n = ["WarfareBMGNest_PK_TK_GUE_EP1"];
+ _n = _n + ["DSHKM_TK_GUE_EP1"];
+ _n = _n + ["AGS_TK_GUE_EP1"];
+ _n = _n + ["SPG9_TK_GUE_EP1"];
+ _n = _n + ["ZU23_TK_GUE_EP1"];
+ _n = _n + ["D30_TK_GUE_EP1"];
+
+ ['WFBE_RESISTANCEDEFENSENAMES',_n,true] Call SetNamespace;
+
+ }; case WF_A2_CombinedOps: {
+ WFDEPOT = ["Land_fortified_nest_big_EP1","WarfareBDepot"];
+ WFCAMP = ["Land_Fort_Watchtower_EP1","WarfareBCamp"];
+ WFHANGAR = ["Land_Mil_hangar_EP1","WarfareBAirport"];
+ WFFLAG = "FlagCarrierTakistan_EP1";
+
+ /* RESISTANCE STATIONARY DEFENSES */
+ _n = ["WarfareBMGNest_PK_TK_GUE_EP1"];
+ _n = _n + ["GUE_WarfareBMGNest_PK"];
+ _n = _n + ["DSHKM_Gue"];
+ _n = _n + ["SPG9_Gue"];
+ _n = _n + ["ZU23_Gue"];
+ _n = _n + ["DSHKM_TK_GUE_EP1"];
+ _n = _n + ["AGS_TK_GUE_EP1"];
+ _n = _n + ["SPG9_TK_GUE_EP1"];
+ _n = _n + ["D30_TK_GUE_EP1"];
+ _n = _n + ["ZU23_TK_GUE_EP1"];
+
+ ['WFBE_RESISTANCEDEFENSENAMES',_n,true] Call SetNamespace;
+
+ };
+};
+
+//--- Multiply the building cost when money only is being used.
+if (paramMoneyOnly) then {
+ Private ["_i","_list"];
+
+ _list = 'WFBE_WESTSTRUCTURECOSTS' Call GetNamespace;
+ for '_i' from 0 to count(_list)-1 do {
+ _list set [_i, round((_list select _i) * 5)];
+ };
+
+ _list = 'WFBE_EASTSTRUCTURECOSTS' Call GetNamespace;
+ for '_i' from 0 to count(_list)-1 do {
+ _list set [_i, round((_list select _i) * 5)];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Config_Structures: Initialization (West: %3 | East: %4) - [Done]",diag_frameno,diag_tickTime,WFBE_V_West_StructuresFaction,WFBE_V_East_StructuresFaction]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_ACE_US_D.sqf b/Common/Config/Core/Core_ACE_US_D.sqf
new file mode 100644
index 0000000..0cae3f6
--- /dev/null
+++ b/Common/Config/Core/Core_ACE_US_D.sqf
@@ -0,0 +1,67 @@
+/* ACE US Desert Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['ACE_US_Soldier_M224_G'];
+_i = _i + [['','',220,5,-1,0,0,0.85,'USMC',[]]];
+
+_c = _c + ['ACE_US_Soldier_M224_AG'];
+_i = _i + [['','',220,5,-1,0,0,0.85,'USMC',[]]];
+
+_c = _c + ['ACE_US_Soldier_M224_AB'];
+_i = _i + [['','',220,5,-1,0,0,0.85,'USMC',[]]];
+
+_c = _c + ['ACE_US_Soldier_M252_G'];
+_i = _i + [['','',160,5,-1,0,0,0.83,'USMC',[]]];
+
+_c = _c + ['ACE_US_Soldier_M252_AG'];
+_i = _i + [['','',160,5,-1,0,0,0.83,'USMC',[]]];
+
+_c = _c + ['ACE_US_Soldier_M252_AB'];
+_i = _i + [['','',160,5,-1,0,0,0.83,'USMC',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['ACE_Stryker_RV_SLAT_D'];
+_i = _i + [['','',1800,25,[false,true,2,0],0,2,0,'US',[]]];
+
+_c = _c + ['ACE_M1A1HA_TUSK_DESERT'];
+_i = _i + [['','',5850,40,-2,2,2,0,'US',[]]];
+
+_c = _c + ['ACE_M1A1HA_TUSK_CSAMM_DESERT'];
+_i = _i + [['','',6450,40,-2,3,2,0,'US',[]]];
+
+/* Air Vehicles */
+_c = _c + ['ACE_AH6_GAU19_FLIR'];
+_i = _i + [['','',29500,50,-2,2,3,0,'US',[]]];
+
+_c = _c + ['ACE_AH6J_DAGR_FLIR'];
+_i = _i + [['','',35500,50,-2,2,3,0,'US',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACE_US_D: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_ACE_US_D: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACE_US_D: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_ACE_US_W.sqf b/Common/Config/Core/Core_ACE_US_W.sqf
new file mode 100644
index 0000000..fa50509
--- /dev/null
+++ b/Common/Config/Core/Core_ACE_US_W.sqf
@@ -0,0 +1,136 @@
+/* ACE US Woodland Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Light Vehicles */
+_c = _c + ['ACE_ATV_Honda'];
+_i = _i + [['','',175,14,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_USARMY'];
+_i = _i + [['','',300,15,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_MK19_USARMY'];
+_i = _i + [['','',900,18,-2,1,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_GMV'];
+_i = _i + [['','',1050,20,-2,1,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_GMV_MK19'];
+_i = _i + [['','',1050,20,-2,1,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_M2_USARMY'];
+_i = _i + [['','',850,20,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_TOW_USARMY'];
+_i = _i + [['','',1450,20,-2,2,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_HMMWV_Ambulance_USARMY'];
+_i = _i + [['','',725,22,-2,2,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tOpen'];
+_i = _i + [['','',400,20,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5t'];
+_i = _i + [['','',400,20,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tMGOpen'];
+_i = _i + [['','',400,20,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tMG'];
+_i = _i + [['','',400,20,-2,0,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tRepair'];
+_i = _i + [['','',525,22,-2,2,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tReammo'];
+_i = _i + [['','',550,22,-2,1,1,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Truck5tRefuel'];
+_i = _i + [['','',500,22,-2,1,1,0,'US - Woodland',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['ACE_Stryker_ICV_M2_SLAT'];
+_i = _i + [['','',1650,25,[false,true,2,0],0,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_RV'];
+_i = _i + [['','',1800,25,[false,true,2,0],0,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_RV_SLAT'];
+_i = _i + [['','',1800,25,[false,true,2,0],0,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_ICV_MK19_SLAT'];
+_i = _i + [['','',1950,25,[false,true,2,0],0,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_TOW_MG_Slat'];
+_i = _i + [['','',1850,25,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_TOW_Slat'];
+_i = _i + [['','',1850,25,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_MGS'];
+_i = _i + [['','',2450,25,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Stryker_MGS_Slat'];
+_i = _i + [['','',2450,25,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M113A3_Ambul'];
+_i = _i + [['','',1950,25,-2,1,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_Vulcan'];
+_i = _i + [['','',1950,25,-2,1,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M113A3'];
+_i = _i + [['','',1950,25,-2,1,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M2A2_W'];
+_i = _i + [['','',4450,30,-2,1,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M2A3_W'];
+_i = _i + [['','',4950,32,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M1A1_NATO'];
+_i = _i + [['','',5650,40,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M1A1HA_TUSK'];
+_i = _i + [['','',5650,40,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M1A1HA_TUSK_CSAMM'];
+_i = _i + [['','',5650,40,-2,2,2,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_M6A1_W'];
+_i = _i + [['','',8200,35,-2,3,2,0,'US - Woodland',[]]];
+
+/* Air Vehicles */
+_c = _c + ['ACE_AH6_GAU19_FLIR'];
+_i = _i + [['','',29500,50,-2,1,3,0,'US - Woodland',[]]];
+
+_c = _c + ['ACE_AH6J_DAGR_FLIR'];
+_i = _i + [['','',35500,50,-2,1,3,0,'US - Woodland',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACE_US_W: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_ACE_US_W: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACE_US_W: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_ACR.sqf b/Common/Config/Core/Core_ACR.sqf
new file mode 100644
index 0000000..2da71ca
--- /dev/null
+++ b/Common/Config/Core/Core_ACR.sqf
@@ -0,0 +1,97 @@
+/* ACR Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['CZ_Soldier_Light_DES_EP1'];
+_i = _i + [['','',125,4,-1,0,0,0.85,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_DES_EP1'];
+_i = _i + [['','',150,4,-1,0,0,0.85,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_B_DES_EP1'];
+_i = _i + [['','',150,4,-1,0,0,0.85,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_AT_DES_EP1'];
+_i = _i + [['','',310,5,-1,0,0,0.87,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_AMG_DES_EP1'];
+_i = _i + [['','',210,5,-1,1,0,0.85,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_MG_DES_EP1'];
+_i = _i + [['','',220,5,-1,0,0,0.86,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_Sniper_EP1'];
+_i = _i + [['','',280,5,-1,1,0,0.88,'Czech',[]]];
+
+_c = _c + ['CZ_Special_Forces_GL_DES_EP1'];
+_i = _i + [['','',290,5,-1,3,0,0.90,'Czech',[]]];
+
+_c = _c + ['CZ_Special_Forces_MG_DES_EP1'];
+_i = _i + [['','',310,5,-1,3,0,0.90,'Czech',[]]];
+
+_c = _c + ['CZ_Special_Forces_DES_EP1'];
+_i = _i + [['','',285,5,-1,3,0,0.89,'Czech',[]]];
+
+_c = _c + ['CZ_Special_Forces_Scout_DES_EP1'];
+_i = _i + [['','',305,5,-1,3,0,0.90,'Czech',[]]];
+
+_c = _c + ['CZ_Special_Forces_TL_DES_EP1'];
+_i = _i + [['','',310,5,-1,3,0,0.91,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_Pilot_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.86,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_Office_DES_EP1'];
+_i = _i + [['','',240,5,-1,1,0,0.88,'Czech',[]]];
+
+_c = _c + ['CZ_Soldier_SL_DES_EP1'];
+_i = _i + [['','',220,5,-1,2,0,0.87,'Czech',[]]];
+
+/* Light Vehicles */
+_c = _c + ['ATV_CZ_EP1'];
+_i = _i + [['','',175,15,-2,0,1,0,'Czech',[]]];
+
+_c = _c + ['HMMWV_M1151_M2_CZ_DES_EP1'];
+_i = _i + [['','',850,20,-2,0,1,0,'Czech',[]]];
+
+_c = _c + ['LandRover_CZ_EP1'];
+_i = _i + [['','',275,18,-2,0,1,0,'Czech',[]]];
+
+_c = _c + ['LandRover_Special_CZ_EP1'];
+_i = _i + [['','',700,20,-2,0,1,0,'Czech',[]]];
+
+/* Air Vehicles */
+_c = _c + ['Mi171Sh_CZ_EP1'];
+_i = _i + [['','',7600,35,-2,1,3,0,'Czech',[]]];
+
+_c = _c + ['Mi171Sh_rockets_CZ_EP1'];
+_i = _i + [['','',26500,40,-2,0,3,0,'Czech',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACR: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_ACR: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACR: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_BAF.sqf b/Common/Config/Core/Core_BAF.sqf
new file mode 100644
index 0000000..af4bf34
--- /dev/null
+++ b/Common/Config/Core/Core_BAF.sqf
@@ -0,0 +1,135 @@
+/* BAF (MTP) Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['BAF_Soldier_AA_MTP'];
+_i = _i + [['','',410,6,-1,2,0,0.88,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AAA_MTP'];
+_i = _i + [['','',190,6,-1,2,0,0.89,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AAT_MTP'];
+_i = _i + [['','',190,4,-1,2,0,0.84,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AHAT_MTP'];
+_i = _i + [['','',190,6,-1,3,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AAR_MTP'];
+_i = _i + [['','',190,5,-1,2,0,0.88,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AMG_MTP'];
+_i = _i + [['','',190,6,-1,1,0,0.87,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AT_MTP'];
+_i = _i + [['','',360,6,-1,2,0,0.88,'British',[]]];
+
+_c = _c + ['BAF_Soldier_HAT_MTP'];
+_i = _i + [['','',810,6,-1,3,0,0.89,'British',[]]];
+
+_c = _c + ['BAF_Soldier_AR_MTP'];
+_i = _i + [['','',210,5,-1,2,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_crewman_MTP'];
+_i = _i + [['','',125,5,-1,0,0,0.83,'British',[]]];
+
+_c = _c + ['BAF_Soldier_EN_MTP'];
+_i = _i + [['','',230,5,-1,0,0,0.84,'British',[]]];
+
+_c = _c + ['BAF_Soldier_GL_MTP'];
+_i = _i + [['','',170,5,-1,0,0,0.84,'British',[]]];
+
+_c = _c + ['BAF_Soldier_FAC_MTP'];
+_i = _i + [['','',375,6,-1,3,0,0.98,'British',[]]];
+
+_c = _c + ['BAF_Soldier_MG_MTP'];
+_i = _i + [['','',210,5,-1,0,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_Soldier_scout_MTP'];
+_i = _i + [['','',340,6,-1,2,0,0.9,'British',[]]];
+
+_c = _c + ['BAF_Soldier_Marksman_MTP'];
+_i = _i + [['','',370,6,-1,3,0,0.91,'British',[]]];
+
+_c = _c + ['BAF_Soldier_Medic_MTP'];
+_i = _i + [['','',200,6,-1,0,0,0.86,'British',[]]];
+
+_c = _c + ['BAF_Soldier_Officer_MTP'];
+_i = _i + [['','',265,6,-1,2,0,0.86,'British',[]]];
+
+_c = _c + ['BAF_Pilot_MTP'];
+_i = _i + [['','',125,6,-1,0,0,0.84,'British',[]]];
+
+_c = _c + ['BAF_Soldier_MTP'];
+_i = _i + [['','',155,6,-1,0,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_ASoldier_MTP'];
+_i = _i + [['','',160,6,-1,0,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_Soldier_L_MTP'];
+_i = _i + [['','',130,6,-1,0,0,0.85,'British',[]]];
+
+_c = _c + ['BAF_Soldier_N_MTP'];
+_i = _i + [['','',175,6,-1,1,0,0.86,'British',[]]];
+
+_c = _c + ['BAF_Soldier_SL_MTP'];
+_i = _i + [['','',235,6,-1,2,0,0.92,'British',[]]];
+
+_c = _c + ['BAF_Soldier_SniperN_MTP'];
+_i = _i + [['','',390,6,-1,3,0,0.9,'British',[]]];
+
+_c = _c + ['BAF_Soldier_SniperH_MTP'];
+_i = _i + [['','',420,6,-1,2,0,0.9,'British',[]]];
+
+_c = _c + ['BAF_Soldier_Sniper_MTP'];
+_i = _i + [['','',395,6,-1,2,0,0.9,'British',[]]];
+
+_c = _c + ['BAF_Soldier_spotter_MTP'];
+_i = _i + [['','',340,6,-1,2,0,0.88,'British',[]]];
+
+_c = _c + ['BAF_Soldier_spotterN_MTP'];
+_i = _i + [['','',350,6,-1,2,0,0.88,'British',[]]];
+
+_c = _c + ['BAF_Soldier_TL_MTP'];
+_i = _i + [['','',245,6,-1,1,0,0.91,'British',[]]];
+
+/* Air Vehicles */
+_c = _c + ['BAF_Merlin_HC3_D'];
+_i = _i + [['','',21000,45,-2,0,3,0,'British',[]]];
+
+_c = _c + ['CH_47F_BAF'];
+_i = _i + [['','',20000,40,-2,0,3,0,'British',[]]];
+
+_c = _c + ['BAF_Apache_AH1_D'];
+_i = _i + [['','',82500,60,-2,2,3,0,'British',[]]];
+
+_c = _c + ['AW159_Lynx_BAF'];
+_i = _i + [['','',75000,35,-2,1,3,0,'British',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAF: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_BAF: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAF: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_BAFD.sqf b/Common/Config/Core/Core_BAFD.sqf
new file mode 100644
index 0000000..0d44fbf
--- /dev/null
+++ b/Common/Config/Core/Core_BAFD.sqf
@@ -0,0 +1,124 @@
+/* BAF (Desert) Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['BAF_Soldier_AA_DDPM'];
+_i = _i + [['','',410,6,-1,2,0,0.88,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AAA_DDPM'];
+_i = _i + [['','',440,6,-1,2,0,0.87,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AAT_DDPM'];
+_i = _i + [['','',190,4,-1,2,0,0.84,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AHAT_DDPM'];
+_i = _i + [['','',190,6,-1,3,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AAR_DDPM'];
+_i = _i + [['','',190,5,-1,2,0,0.88,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AMG_DDPM'];
+_i = _i + [['','',190,6,-1,1,0,0.87,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AT_DDPM'];
+_i = _i + [['','',360,6,-1,2,0,0.87,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_HAT_DDPM'];
+_i = _i + [['','',810,6,-1,3,0,0.89,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_AR_DDPM'];
+_i = _i + [['','',210,5,-1,2,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_crewman_DDPM'];
+_i = _i + [['','',125,5,-1,0,0,0.83,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_EN_DDPM'];
+_i = _i + [['','',230,5,-1,0,0,0.84,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_GL_DDPM'];
+_i = _i + [['','',170,5,-1,0,0,0.84,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_FAC_DDPM'];
+_i = _i + [['','',375,6,-1,3,0,0.98,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_MG_DDPM'];
+_i = _i + [['','',210,5,-1,0,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_scout_DDPM'];
+_i = _i + [['','',340,6,-1,2,0,0.9,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_Marksman_DDPM'];
+_i = _i + [['','',370,6,-1,3,0,0.91,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_Medic_DDPM'];
+_i = _i + [['','',200,6,-1,0,0,0.86,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_Officer_DDPM'];
+_i = _i + [['','',265,6,-1,2,0,0.86,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Pilot_DDPM'];
+_i = _i + [['','',125,6,-1,0,0,0.84,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_DDPM'];
+_i = _i + [['','',155,6,-1,0,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_ASoldier_DDPM'];
+_i = _i + [['','',160,6,-1,0,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_L_DDPM'];
+_i = _i + [['','',130,6,-1,0,0,0.85,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_N_DDPM'];
+_i = _i + [['','',175,6,-1,1,0,0.86,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_SL_DDPM'];
+_i = _i + [['','',235,6,-1,2,0,0.92,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Soldier_TL_DDPM'];
+_i = _i + [['','',245,6,-1,1,0,0.91,'British (Desert)',[]]];
+
+/* Light Vehicles */
+_c = _c + ['BAF_ATV_D'];
+_i = _i + [['','',175,12,-2,0,1,0,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Offroad_D'];
+_i = _i + [['','',375,13,-2,0,1,0,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Jackal2_GMG_D'];
+_i = _i + [['','',965,20,-2,1,1,0,'British (Desert)',[]]];
+
+_c = _c + ['BAF_Jackal2_L2A1_D'];
+_i = _i + [['','',725,21,-2,0,1,0,'British (Desert)',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BAF_FV510_D'];
+_i = _i + [['','',4950,30,-2,2,2,0,'British (Desert)',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAFD: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_BAFD: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAFD: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_BAFW.sqf b/Common/Config/Core/Core_BAFW.sqf
new file mode 100644
index 0000000..138e73d
--- /dev/null
+++ b/Common/Config/Core/Core_BAFW.sqf
@@ -0,0 +1,152 @@
+/* BAF (Woodland) Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['BAF_Soldier_AA_W'];
+_i = _i + [['','',410,6,-1,2,0,0.88,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AAA_W'];
+_i = _i + [['','',190,6,-1,2,0,0.87,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AAT_W'];
+_i = _i + [['','',190,4,-1,2,0,0.84,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AHAT_W'];
+_i = _i + [['','',190,6,-1,3,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AAR_W'];
+_i = _i + [['','',190,5,-1,2,0,0.86,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AMG_W'];
+_i = _i + [['','',190,6,-1,1,0,0.87,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AT_W'];
+_i = _i + [['','',360,6,-1,2,0,0.87,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_HAT_W'];
+_i = _i + [['','',810,6,-1,3,0,0.9,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_AR_W'];
+_i = _i + [['','',210,5,-1,2,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_crewman_W'];
+_i = _i + [['','',125,5,-1,0,0,0.83,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_EN_W'];
+_i = _i + [['','',230,5,-1,0,0,0.84,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_GL_W'];
+_i = _i + [['','',170,5,-1,0,0,0.84,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_FAC_W'];
+_i = _i + [['','',375,6,-1,3,0,0.98,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_MG_W'];
+_i = _i + [['','',210,5,-1,0,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_scout_W'];
+_i = _i + [['','',340,6,-1,2,0,0.9,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_Marksman_W'];
+_i = _i + [['','',370,6,-1,3,0,0.91,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_Medic_W'];
+_i = _i + [['','',200,6,-1,0,0,0.86,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_Officer_W'];
+_i = _i + [['','',265,6,-1,2,0,0.86,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Pilot_W'];
+_i = _i + [['','',125,6,-1,0,0,0.84,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_W'];
+_i = _i + [['','',155,6,-1,0,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_ASoldier_W'];
+_i = _i + [['','',160,6,-1,0,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_L_W'];
+_i = _i + [['','',130,6,-1,0,0,0.85,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_N_W'];
+_i = _i + [['','',175,6,-1,1,0,0.86,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_SL_W'];
+_i = _i + [['','',235,6,-1,2,0,0.92,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_SniperN_W'];
+_i = _i + [['','',390,6,-1,3,0,0.9,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_SniperH_W'];
+_i = _i + [['','',420,6,-1,2,0,0.9,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_Sniper_W'];
+_i = _i + [['','',395,6,-1,2,0,0.9,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_spotter_W'];
+_i = _i + [['','',340,6,-1,2,0,0.88,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_spotterN_W'];
+_i = _i + [['','',350,6,-1,2,0,0.88,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Soldier_TL_W'];
+_i = _i + [['','',245,6,-1,1,0,0.91,'British (Woodland)',[]]];
+
+/* Light Vehicles */
+_c = _c + ['BAF_ATV_W'];
+_i = _i + [['','',175,12,-2,0,1,0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Offroad_W'];
+_i = _i + [['','',375,13,-2,0,1,0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Jackal2_GMG_W'];
+_i = _i + [['','',965,20,-2,1,1,0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_Jackal2_L2A1_W'];
+_i = _i + [['','',725,21,-2,0,1,0,'British (Woodland)',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BAF_FV510_W'];
+_i = _i + [['','',4950,30,-2,2,2,0,'British (Woodland)',[]]];
+
+/* Static Defenses */
+_c = _c + ['BAF_GPMG_Minitripod_W'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_GMG_Tripod_W'];
+_i = _i + [['','',250,0,1,0,'Defense',0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_L2A1_Minitripod_W'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'British (Woodland)',[]]];
+
+_c = _c + ['BAF_L2A1_Tripod_W'];
+_i = _i + [['','',325,0,1,0,'Defense',0,'British (Woodland)',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAFW: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_BAFW: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAFW: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_CDF.sqf b/Common/Config/Core/Core_CDF.sqf
new file mode 100644
index 0000000..b0e8cae
--- /dev/null
+++ b/Common/Config/Core/Core_CDF.sqf
@@ -0,0 +1,180 @@
+/* CDF Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['CDF_Soldier'];
+_i = _i + [['','',150,4,-1,0,0,0.65,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Engineer'];
+_i = _i + [['','',225,5,-1,0,0,0.66,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Light'];
+_i = _i + [['','',175,4,-1,0,0,0.65,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_GL'];
+_i = _i + [['','',180,4,-1,0,0,0.65,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Militia'];
+_i = _i + [['','',160,3,-1,0,0,0.62,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Medic'];
+_i = _i + [['','',210,4,-1,0,0,0.69,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Sniper'];
+_i = _i + [['','',230,5,-1,1,0,0.72,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Spotter'];
+_i = _i + [['','',240,6,-1,1,0,0.71,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Marksman'];
+_i = _i + [['','',235,7,-1,3,0,0.69,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_RPG'];
+_i = _i + [['','',250,6,-1,1,0,0.64,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Strela'];
+_i = _i + [['','',400,6,-1,2,0,0.68,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_AR'];
+_i = _i + [['','',165,6,-1,1,0,0.64,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_MG'];
+_i = _i + [['','',180,5,-1,0,0,0.65,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_TL'];
+_i = _i + [['','',210,6,-1,2,0,0.73,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Officer'];
+_i = _i + [['','',230,7,-1,1,0,0.74,'CDF',[]]];
+
+_c = _c + ['CDF_Commander'];
+_i = _i + [['','',280,7,-1,3,0,0.75,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Pilot'];
+_i = _i + [['','',130,5,-1,0,0,0.62,'CDF',[]]];
+
+_c = _c + ['CDF_Soldier_Crew'];
+_i = _i + [['','',130,5,-1,0,0,0.63,'CDF',[]]];
+
+/* Light Vehicles */
+_c = _c + ['UAZ_CDF'];
+_i = _i + [['','',150,15,-2,0,1,0,'CDF',[]]];
+
+_c = _c + ['UAZ_MG_CDF'];
+_i = _i + [['','',310,17,-2,0,1,0,'CDF',[]]];
+
+_c = _c + ['UAZ_AGS30_CDF'];
+_i = _i + [['','',475,25,-2,1,1,0,'CDF',[]]];
+
+_c = _c + ['Ural_CDF'];
+_i = _i + [['','',300,20,-2,0,1,0,'CDF',[]]];
+
+_c = _c + ['WarfareSalvageTruck_CDF'];
+_i = _i + [['','',450,18,-2,0,1,0,'CDF',[]]];
+
+_c = _c + ['UralRepair_CDF'];
+_i = _i + [['','',525,21,-2,2,1,0,'CDF',[]]];
+
+_c = _c + ['UralReammo_CDF'];
+_i = _i + [['','',550,21,-2,1,1,0,'CDF',[]]];
+
+_c = _c + ['UralRefuel_CDF'];
+_i = _i + [['','',500,21,-2,1,1,0,'CDF',[]]];
+
+_c = _c + ['WarfareSupplyTruck_CDF'];
+_i = _i + [['','',550,21,-2,0,1,0,'CDF',[]]];
+
+_c = _c + ['BRDM2_CDF'];
+_i = _i + [['','',1100,25,-2,1,1,0,'CDF',[]]];
+
+_c = _c + ['BRDM2_ATGM_CDF'];
+_i = _i + [['','',1650,25,-2,2,1,0,'CDF',[]]];
+
+_c = _c + ['Ural_ZU23_CDF'];
+_i = _i + [['','',1750,20,-2,2,1,0,'CDF',[]]];
+
+_c = _c + ['GRAD_CDF'];
+_i = _i + [['','',4200,35,-2,3,1,0,'CDF',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BMP2_Ambul_CDF'];
+_i = _i + [['','',950,20,-2,0,2,0,'CDF',[]]];
+
+_c = _c + ['BMP2_CDF'];
+_i = _i + [['','',2600,30,-2,1,2,0,'CDF',[]]];
+
+_c = _c + ['ZSU_CDF'];
+_i = _i + [['','',3400,35,-2,2,2,0,'CDF',[]]];
+
+_c = _c + ['T72_CDF'];
+_i = _i + [['','',4900,35,-2,3,2,0,'CDF',[]]];
+
+/* Air Vehicles */
+_c = _c + ['Mi17_CDF'];
+_i = _i + [['','',15000,35,-2,0,3,0,'CDF',[]]];
+
+_c = _c + ['Mi17_medevac_CDF'];
+_i = _i + [['','',18000,35,-2,1,3,0,'CDF',[]]];
+
+_c = _c + ['Mi24_D'];
+_i = _i + [['','',65000,40,-2,2,3,0,'CDF',[]]];
+
+_c = _c + ['Su25_CDF'];
+_i = _i + [['','',92000,55,-2,3,3,0,'CDF',[]]];
+
+/* Static Defenses */
+_c = _c + ['CDF_WarfareBMGNest_PK'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['DSHkM_Mini_TriPod_CDF'];
+_i = _i + [['','',200,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['DSHKM_CDF'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['SearchLight_CDF'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['AGS_CDF'];
+_i = _i + [['','',700,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['SPG9_CDF'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['ZU23_CDF'];
+_i = _i + [['','',945,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['2b14_82mm_CDF'];
+_i = _i + [['Podnos 2B14','',1150,0,1,0,'Defense',0,'CDF',[]]];
+
+_c = _c + ['D30_CDF'];
+_i = _i + [['','',2250,0,1,0,'Defense',0,'CDF',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_CDF: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_CDF: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_CDF: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_CIV.sqf b/Common/Config/Core/Core_CIV.sqf
new file mode 100644
index 0000000..3eaf2c6
--- /dev/null
+++ b/Common/Config/Core/Core_CIV.sqf
@@ -0,0 +1,175 @@
+/* CIV Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['Worker1'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Civilians',[]]];
+
+_c = _c + ['Worker2'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Civilians',[]]];
+
+_c = _c + ['Worker3'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Civilians',[]]];
+
+_c = _c + ['Worker4'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Civilians',[]]];
+
+/* Light Vehicles */
+_c = _c + ['MMT_Civ'];
+_i = _i + [['','',50,8,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['TT650_Civ'];
+_i = _i + [['','',100,12,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['Tractor'];
+_i = _i + [['','',150,15,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['Lada1'];
+_i = _i + [['','',175,18,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['Lada2'];
+_i = _i + [['','',175,18,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['LadaLM'];
+_i = _i + [['','',180,20,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['SkodaBlue'];
+_i = _i + [['','',190,17,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['SkodaRed'];
+_i = _i + [['','',190,17,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['car_sedan'];
+_i = _i + [['','',200,20,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['car_hatchback'];
+_i = _i + [['','',220,20,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['datsun1_civil_1_open'];
+_i = _i + [['','',250,22,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['datsun1_civil_2_covered'];
+_i = _i + [['','',250,22,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['datsun1_civil_3_open'];
+_i = _i + [['','',250,22,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['VWGolf'];
+_i = _i + [['','',270,23,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['hilux1_civil_1_open'];
+_i = _i + [['','',340,25,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['hilux1_civil_2_covered'];
+_i = _i + [['','',340,25,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['V3S_Civ'];
+_i = _i + [['','',380,22,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['UralCivil'];
+_i = _i + [['','',390,25,-2,0,1,0,'Civilians',[]]];
+
+_c = _c + ['Ikarus'];
+_i = _i + [['','',420,25,-2,0,1,0,'Civilians',[]]];
+
+if (paramDLCPMC) then
+{
+ _c = _c + ['ArmoredSUV_PMC'];
+ _i = _i + [['','',1150,20,2,1,1,0,'Civilians']];
+};
+
+/* Defense Structures */
+_c = _c + ['Land_HBarrier3'];
+_i = _i + [['','',20,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_HBarrier5'];
+_i = _i + [['','',30,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_HBarrier_large'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_long'];
+_i = _i + [['','',10,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_corner'];
+_i = _i + [['','',8,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_round'];
+_i = _i + [['','',12,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Hhedgehog_concreteBig'];
+_i = _i + [['','',95,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Hedgehog'];
+_i = _i + [['','',5,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['HeliH'];
+_i = _i + [['','',15,0,0,0,'Strategic',0,'Civilians',[]]];
+
+_c = _c + ['MASH'];
+_i = _i + [['','',30,0,0,0,'Strategic',0,'Civilians',[]]];
+
+_c = _c + ['Land_Campfire'];
+_i = _i + [['','',3,0,0,0,'Strategic',0,'Civilians',[]]];
+
+_c = _c + ['Base_WarfareBBarrier5x'];
+_i = _i + [['','',15,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Base_WarfareBBarrier10x'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Base_WarfareBBarrier10xTall'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fortified_nest_small'];
+_i = _i + [['','',40,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fortified_nest_big'];
+_i = _i + [['','',100,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_Fort_Watchtower'];
+_i = _i + [['','',125,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_rampart'];
+_i = _i + [['','',30,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_artillery_nest'];
+_i = _i + [['','',65,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Sign_Danger'];
+_i = _i + [[localize 'STR_WF_Minefield','',1200,0,0,0,'Strategic',0,'Civilians',[]]];
+
+_c = _c + ['Fort_RazorWire'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'Civilians',[]]];
+
+_c = _c + ['Land_Ind_IlluminantTower'];
+_i = _i + [['','',200,0,0,0,'Fortification',0,'Civilians',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_CIV: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_CIV: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_CIV: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_DeltaForce.sqf b/Common/Config/Core/Core_DeltaForce.sqf
new file mode 100644
index 0000000..c7a440c
--- /dev/null
+++ b/Common/Config/Core/Core_DeltaForce.sqf
@@ -0,0 +1,65 @@
+/* Spetsnaz Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['US_Delta_Force_EP1'];
+_i = _i + [['','',300,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_TL_EP1'];
+_i = _i + [['','',360,6,-1,3,0,1.00,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_Medic_EP1'];
+_i = _i + [['','',320,6,-1,3,0,0.98,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_Assault_EP1'];
+_i = _i + [['','',335,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_SD_EP1'];
+_i = _i + [['','',345,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_MG_EP1'];
+_i = _i + [['','',340,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_AR_EP1'];
+_i = _i + [['','',330,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_Night_EP1'];
+_i = _i + [['','',315,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_Marksman_EP1'];
+_i = _i + [['','',320,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_M14_EP1'];
+_i = _i + [['','',310,6,-1,3,0,0.99,'US Delta Force',[]]];
+
+_c = _c + ['US_Delta_Force_Air_Controller_EP1'];
+_i = _i + [['','',350,6,-1,3,0,1.0,'US Delta Force',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_DeltaForce: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_DeltaForce: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_DeltaForce: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_FR.sqf b/Common/Config/Core/Core_FR.sqf
new file mode 100644
index 0000000..c5ca87e
--- /dev/null
+++ b/Common/Config/Core/Core_FR.sqf
@@ -0,0 +1,81 @@
+/* FR Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['FR_GL'];
+_i = _i + [['','',260,6,-1,2,0,0.98,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Corpsman'];
+_i = _i + [['','',270,6,-1,2,0,0.98,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Commander'];
+_i = _i + [['','',295,6,-1,2,0,1.00,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_TL'];
+_i = _i + [['','',285,6,-1,2,0,1.00,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Assault_R'];
+_i = _i + [['','',280,6,-1,2,0,0.99,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Assault_GL'];
+_i = _i + [['','',285,6,-1,2,0,0.99,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_AR'];
+_i = _i + [['','',290,6,-1,2,0,0.98,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_R'];
+_i = _i + [['','',300,6,-1,2,0,0.98,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Sapper'];
+_i = _i + [['','',310,6,-1,2,0,0.98,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_AC'];
+_i = _i + [['','',320,6,-1,2,0,1.0,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Marksman'];
+_i = _i + [['','',340,6,-1,2,0,0.99,'USMC Force Recon',[]]];
+
+/* Infantry - Special Characters */
+_c = _c + ['FR_Cooper'];
+_i = _i + [['','',400,6,-1,3,0,1.0,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Miles'];
+_i = _i + [['','',400,6,-1,3,0,1.0,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_OHara'];
+_i = _i + [['','',400,6,-1,3,0,1.0,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Rodriguez'];
+_i = _i + [['','',400,6,-1,3,0,1.0,'USMC Force Recon',[]]];
+
+_c = _c + ['FR_Sykes'];
+_i = _i + [['','',400,6,-1,3,0,1.0,'USMC Force Recon',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_FR: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_FR: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_FR: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_GUE.sqf b/Common/Config/Core/Core_GUE.sqf
new file mode 100644
index 0000000..38bcba3
--- /dev/null
+++ b/Common/Config/Core/Core_GUE.sqf
@@ -0,0 +1,137 @@
+/* GUE Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['GUE_Soldier_1'];
+_i = _i + [['','',150,4,-1,0,0,0.55,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_2'];
+_i = _i + [['','',120,4,-1,0,0,0.55,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_3'];
+_i = _i + [['','',140,4,-1,0,0,0.55,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_GL'];
+_i = _i + [['','',150,5,-1,1,0,0.55,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_AT'];
+_i = _i + [['','',220,5,-1,1,0,0.58,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_AA'];
+_i = _i + [['','',250,4,-1,0,0,0.59,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_AR'];
+_i = _i + [['','',150,4,-1,1,0,0.54,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_MG'];
+_i = _i + [['','',190,4,-1,0,0,0.53,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Sniper'];
+_i = _i + [['','',175,6,-1,1,0,0.62,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Medic'];
+_i = _i + [['','',160,6,-1,0,0,0.59,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Crew'];
+_i = _i + [['','',120,5,-1,0,0,0.51,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Pilot'];
+_i = _i + [['','',120,5,-1,0,0,0.52,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Scout'];
+_i = _i + [['','',260,5,-1,3,0,0.63,'Guerilla',[]]];
+
+_c = _c + ['GUE_Soldier_Sab'];
+_i = _i + [['','',220,5,-1,2,0,0.64,'Guerilla',[]]];
+
+_c = _c + ['GUE_Commander'];
+_i = _i + [['','',240,5,-1,0,0,0.65,'Guerilla',[]]];
+
+_c = _c + ['GUE_Worker2'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+_c = _c + ['GUE_Woodlander3'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+_c = _c + ['GUE_Villager3'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+_c = _c + ['GUE_Woodlander2'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+_c = _c + ['GUE_Woodlander1'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+_c = _c + ['GUE_Villager4'];
+_i = _i + [['','',100,5,-1,0,0,0.41,'Guerilla',[]]];
+
+/* Light Vehicles */
+_c = _c + ['TT650_Gue'];
+_i = _i + [['','',150,15,-2,0,1,0,'Guerilla',[]]];
+
+_c = _c + ['V3S_Gue'];
+_i = _i + [['','',175,15,-2,0,1,0,'Guerilla',[]]];
+
+_c = _c + ['Pickup_PK_GUE'];
+_i = _i + [['','',250,17,-2,0,1,0,'Guerilla',[]]];
+
+_c = _c + ['Offroad_DSHKM_Gue'];
+_i = _i + [['','',300,25,-2,1,1,0,'Guerilla',[]]];
+
+_c = _c + ['Offroad_SPG9_Gue'];
+_i = _i + [['','',380,20,-2,2,1,0,'Guerilla',[]]];
+
+_c = _c + ['BRDM2_Gue'];
+_i = _i + [['','',600,25,-2,2,1,0,'Guerilla',[]]];
+
+_c = _c + ['Ural_ZU23_Gue'];
+_i = _i + [['','',950,25,-2,3,1,0,'Guerilla',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BMP2_Gue'];
+_i = _i + [['','',2200,30,-2,0,2,0,'Guerilla',[]]];
+
+_c = _c + ['T72_Gue'];
+_i = _i + [['','',3200,35,-2,2,2,0,'Guerilla',[]]];
+
+/* Static Defenses */
+_c = _c + ['GUE_WarfareBMGNest_PK'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Guerilla',[]]];
+
+_c = _c + ['DSHKM_Gue'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'Guerilla',[]]];
+
+_c = _c + ['SPG9_Gue'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'Guerilla',[]]];
+
+_c = _c + ['ZU23_Gue'];
+_i = _i + [['','',600,0,1,0,'Defense',0,'Guerilla',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_GUE: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_GUE: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_GUE: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_INS.sqf b/Common/Config/Core/Core_INS.sqf
new file mode 100644
index 0000000..1f1d37d
--- /dev/null
+++ b/Common/Config/Core/Core_INS.sqf
@@ -0,0 +1,201 @@
+/* INS Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['Ins_Soldier_1'];
+_i = _i + [['','',150,4,-1,0,0,0.61,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_2'];
+_i = _i + [['','',160,4,-1,0,0,0.61,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_GL'];
+_i = _i + [['','',175,4,-1,0,0,0.65,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_CO'];
+_i = _i + [['','',210,5,-1,1,0,0.7,'Insurgents',[]]];
+
+_c = _c + ['Ins_Commander'];
+_i = _i + [['','',250,5,-1,2,0,0.7,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Medic'];
+_i = _i + [['','',175,4,-1,0,0,0.62,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_AR'];
+_i = _i + [['','',180,4,-1,1,0,0.61,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_MG'];
+_i = _i + [['','',190,4,-1,0,0,0.60,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_AT'];
+_i = _i + [['','',220,6,-1,1,0,0.60,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_AA'];
+_i = _i + [['','',300,6,-1,2,0,0.62,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Sniper'];
+_i = _i + [['','',220,6,-1,1,0,0.66,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Sapper'];
+_i = _i + [['','',190,5,-1,2,0,0.64,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Sab'];
+_i = _i + [['','',180,5,-1,2,0,0.68,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Pilot'];
+_i = _i + [['','',130,5,-1,0,0,0.59,'Insurgents',[]]];
+
+_c = _c + ['Ins_Soldier_Crew'];
+_i = _i + [['','',130,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Woodlander1'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Woodlander2'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Woodlander3'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Villager3'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Villager4'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+_c = _c + ['INS_Worker2'];
+_i = _i + [['','',100,5,-1,0,0,0.58,'Insurgents',[]]];
+
+/* Light Vehicles */
+_c = _c + ['TT650_Ins'];
+_i = _i + [['','',150,15,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['UAZ_INS'];
+_i = _i + [['','',260,15,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['Pickup_PK_INS'];
+_i = _i + [['','',300,15,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['Offroad_DSHKM_INS'];
+_i = _i + [['','',350,15,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['UAZ_MG_INS'];
+_i = _i + [['','',460,17,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['UAZ_AGS30_INS'];
+_i = _i + [['','',585,25,-2,1,1,0,'Insurgents',[]]];
+
+_c = _c + ['UAZ_SPG9_INS'];
+_i = _i + [['','',650,20,-2,2,1,0,'Insurgents',[]]];
+
+_c = _c + ['UralOpen_INS'];
+_i = _i + [['','',290,20,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['Ural_INS'];
+_i = _i + [['','',300,20,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['WarfareSalvageTruck_INS'];
+_i = _i + [['','',450,18,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['UralRepair_INS'];
+_i = _i + [['','',525,21,-2,2,1,0,'Insurgents',[]]];
+
+_c = _c + ['UralReammo_INS'];
+_i = _i + [['','',550,21,-2,1,1,0,'Insurgents',[]]];
+
+_c = _c + ['UralRefuel_INS'];
+_i = _i + [['','',500,21,-2,1,1,0,'Insurgents',[]]];
+
+_c = _c + ['WarfareSupplyTruck_INS'];
+_i = _i + [['','',550,21,-2,0,1,0,'Insurgents',[]]];
+
+_c = _c + ['BRDM2_INS'];
+_i = _i + [['','',1000,25,-2,2,1,0,'Insurgents',[]]];
+
+_c = _c + ['BRDM2_ATGM_INS'];
+_i = _i + [['','',1550,25,-2,3,1,0,'Insurgents',[]]];
+
+_c = _c + ['Ural_ZU23_INS'];
+_i = _i + [['','',1650,20,-2,2,1,0,'Insurgents',[]]];
+
+_c = _c + ['GRAD_INS'];
+_i = _i + [['','',4000,35,-2,3,1,0,'Insurgents',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BMP2_Ambul_INS'];
+_i = _i + [['','',950,20,-2,0,2,0,'Insurgents',[]]];
+
+_c = _c + ['BMP2_INS'];
+_i = _i + [['','',2500,30,-2,1,2,0,'Insurgents',[]]];
+
+_c = _c + ['ZSU_INS'];
+_i = _i + [['','',3200,35,-2,2,2,0,'Insurgents',[]]];
+
+_c = _c + ['T72_INS'];
+_i = _i + [['','',4500,35,-2,3,2,0,'Insurgents',[]]];
+
+/* Air Vehicles */
+_c = _c + ['Mi17_Ins'];
+_i = _i + [['','',15000,35,-2,0,3,0,'Insurgents',[]]];
+
+_c = _c + ['Mi17_medevac_Ins'];
+_i = _i + [['','',18000,35,-2,1,3,0,'Insurgents',[]]];
+
+_c = _c + ['Su25_Ins'];
+_i = _i + [['','',90000,55,-2,3,3,0,'Insurgents',[]]];
+
+/* Static Defenses */
+_c = _c + ['Ins_WarfareBMGNest_PK'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['DSHkM_Mini_TriPod'];
+_i = _i + [['','',200,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['DSHKM_Ins'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['SearchLight_INS'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['AGS_Ins'];
+_i = _i + [['','',650,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['SPG9_Ins'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['ZU23_Ins'];
+_i = _i + [['','',945,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['2b14_82mm_INS'];
+_i = _i + [['Podnos 2B14','',1025,0,1,0,'Defense',0,'Insurgents',[]]];
+
+_c = _c + ['D30_Ins'];
+_i = _i + [['','',2300,0,1,0,'Defense',0,'Insurgents',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_INS: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_INS: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_INS: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_KSK.sqf b/Common/Config/Core/Core_KSK.sqf
new file mode 100644
index 0000000..03e130b
--- /dev/null
+++ b/Common/Config/Core/Core_KSK.sqf
@@ -0,0 +1,47 @@
+/* KSK Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['GER_Soldier_MG_EP1'];
+_i = _i + [['','',340,6,-1,2,0,0.95,'KSK',[]]];
+
+_c = _c + ['GER_Soldier_Medic_EP1'];
+_i = _i + [['','',325,6,-1,2,0,0.94,'KSK',[]]];
+
+_c = _c + ['GER_Soldier_EP1'];
+_i = _i + [['','',310,6,-1,2,0,0.94,'KSK',[]]];
+
+_c = _c + ['GER_Soldier_Scout_EP1'];
+_i = _i + [['','',345,6,-1,2,0,0.96,'KSK',[]]];
+
+_c = _c + ['GER_Soldier_TL_EP1'];
+_i = _i + [['','',355,6,-1,2,0,0.98,'KSK',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_KSK: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_KSK: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_KSK: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_MVD.sqf b/Common/Config/Core/Core_MVD.sqf
new file mode 100644
index 0000000..c6aebc0
--- /dev/null
+++ b/Common/Config/Core/Core_MVD.sqf
@@ -0,0 +1,50 @@
+/* MVD Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['MVD_Soldier_GL'];
+_i = _i + [['','',310,7,-1,3,0,0.98,'MVD',[]]];
+
+_c = _c + ['MVD_Soldier_MG'];
+_i = _i + [['','',320,7,-1,3,0,0.98,'MVD',[]]];
+
+_c = _c + ['MVD_Soldier_Marksman'];
+_i = _i + [['','',330,7,-1,3,0,0.99,'MVD',[]]];
+
+_c = _c + ['MVD_Soldier_AT'];
+_i = _i + [['','',345,7,-1,3,0,0.99,'MVD',[]]];
+
+_c = _c + ['MVD_Soldier_Sniper'];
+_i = _i + [['','',350,7,-1,3,0,0.99,'MVD',[]]];
+
+_c = _c + ['MVD_Soldier_TL'];
+_i = _i + [['','',360,7,-1,3,0,1.0,'MVD',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_MVD: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_MVD: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_RU: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_PMC.sqf b/Common/Config/Core/Core_PMC.sqf
new file mode 100644
index 0000000..3627bff
--- /dev/null
+++ b/Common/Config/Core/Core_PMC.sqf
@@ -0,0 +1,103 @@
+/* PMC Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['Soldier_AA_PMC'];
+_i = _i + [['','',300,6,-1,2,0,0.92,'PMC',[]]];
+
+_c = _c + ['Soldier_AT_PMC'];
+_i = _i + [['','',260,6,-1,0,0,0.90,'PMC',[]]];
+
+_c = _c + ['Soldier_Bodyguard_AA12_PMC'];
+_i = _i + [['','',325,6,-1,3,0,0.94,'PMC',[]]];
+
+_c = _c + ['Soldier_Bodyguard_M4_PMC'];
+_i = _i + [['','',225,6,-1,0,0,0.94,'PMC',[]]];
+
+_c = _c + ['Soldier_Crew_PMC'];
+_i = _i + [['','',170,6,-1,0,0,0.89,'PMC',[]]];
+
+_c = _c + ['Soldier_Engineer_PMC'];
+_i = _i + [['','',270,6,-1,2,0,0.91,'PMC',[]]];
+
+_c = _c + ['Soldier_GL_M16A2_PMC'];
+_i = _i + [['','',185,6,-1,0,0,0.92,'PMC',[]]];
+
+_c = _c + ['Soldier_GL_PMC'];
+_i = _i + [['','',260,6,-1,2,0,0.92,'PMC',[]]];
+
+_c = _c + ['Soldier_M4A3_PMC'];
+_i = _i + [['','',210,6,-1,1,0,0.91,'PMC',[]]];
+
+_c = _c + ['Soldier_Medic_PMC'];
+_i = _i + [['','',255,6,-1,2,0,0.92,'PMC',[]]];
+
+_c = _c + ['Soldier_MG_PKM_PMC'];
+_i = _i + [['','',190,6,-1,0,0,0.90,'PMC',[]]];
+
+_c = _c + ['Soldier_MG_PMC'];
+_i = _i + [['','',260,6,-1,3,0,0.92,'PMC',[]]];
+
+_c = _c + ['Soldier_Pilot_PMC'];
+_i = _i + [['','',175,6,-1,0,0,0.90,'PMC',[]]];
+
+_c = _c + ['Soldier_PMC'];
+_i = _i + [['','',230,6,-1,0,0,0.91,'PMC',[]]];
+
+_c = _c + ['Soldier_Sniper_KSVK_PMC'];
+_i = _i + [['','',290,6,-1,0,0,0.94,'PMC',[]]];
+
+_c = _c + ['Soldier_Sniper_PMC'];
+_i = _i + [['','',275,6,-1,0,0,0.94,'PMC',[]]];
+
+_c = _c + ['Soldier_TL_PMC'];
+_i = _i + [['','',280,6,-1,0,0,0.95,'PMC',[]]];
+
+/* Light Vehicles */
+_c = _c + ['SUV_PMC'];
+_i = _i + [['','',300,20,-2,0,1,0,'PMC',[]]];
+
+_c = _c + ['ArmoredSUV_PMC'];
+_i = _i + [['','',1250,25,-2,0,1,0,'PMC',[]]];
+
+/* Air Vehicles */
+_c = _c + ['Ka137_PMC'];
+_i = _i + [['','',3000,35,-2,0,3,0,'PMC',[]]];
+
+_c = _c + ['Ka137_MG_PMC'];
+_i = _i + [['','',3500,35,-2,0,3,0,'PMC',[]]];
+
+_c = _c + ['Ka60_PMC'];
+_i = _i + [['','',6000,43,-2,0,3,0,'PMC',[]]];
+
+_c = _c + ['Ka60_GL_PMC'];
+_i = _i + [['','',6500,45,-2,0,3,0,'PMC',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_PMC: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_PMC: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_PMC: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_RU.sqf b/Common/Config/Core/Core_RU.sqf
new file mode 100644
index 0000000..980b322
--- /dev/null
+++ b/Common/Config/Core/Core_RU.sqf
@@ -0,0 +1,278 @@
+/* RU Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['RU_Soldier'];
+_i = _i + [['','',150,4,-1,0,0,0.76,'Russians',[]]];
+
+_c = _c + ['RU_Soldier2'];
+_i = _i + [['','',120,4,-1,0,0,0.74,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_LAT'];
+_i = _i + [['','',220,5,-1,0,0,0.78,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_AT'];
+_i = _i + [['','',310,5,-1,1,0,0.8,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_HAT'];
+_i = _i + [['','',620,6,-1,3,0,0.84,'Russians',[]]];
+
+if (WF_ACE) then
+{
+ _c = _c + ['ACE_SoldierE_KonkursG'];
+ _i = _i + [['','',620,6,-1,3,0,0.84,'Russians',[]]];
+
+ _c = _c + ['ACE_SoldierE_KonkursAG'];
+ _i = _i + [['','',620,6,-1,3,0,0.84,'Russians',[]]];
+};
+
+_c = _c + ['RU_Soldier_AA'];
+_i = _i + [['','',425,6,-1,1,0,0.81,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_AR'];
+_i = _i + [['','',210,5,-1,1,0,0.78,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_MG'];
+_i = _i + [['','',220,5,-1,0,0,0.79,'Russians',[]]];
+
+if (WF_ACE) then
+{
+ _c = _c + ['ACE_SoldierE_HMG'];
+ _i = _i + [['','',220,5,-1,0,0,0.79,'Russians',[]]];
+
+ _c = _c + ['ACE_SoldierE_HMGAG'];
+ _i = _i + [['','',220,5,-1,0,0,0.79,'Russians',[]]];
+
+ _c = _c + ['ACE_SoldierE_HMGAB'];
+ _i = _i + [['','',220,5,-1,0,0,0.79,'Russians',[]]];
+};
+
+_c = _c + ['RU_Soldier_GL'];
+_i = _i + [['','',160,5,-1,0,0,0.8,'Russians',[]]];
+
+if (WF_ACE) then
+{
+ _c = _c + ['ACE_SoldierE_AGS'];
+ _i = _i + [['','',160,5,-1,0,0,0.8,'Russians',[]]];
+
+ _c = _c + ['ACE_SoldierE_AGSAG'];
+ _i = _i + [['','',160,5,-1,0,0,0.8,'Russians',[]]];
+
+ _c = _c + ['ACE_SoldierE_AGSAB'];
+ _i = _i + [['','',160,5,-1,0,0,0.8,'Russians',[]]];
+};
+
+_c = _c + ['RU_Soldier_Marksman'];
+_i = _i + [['','',290,5,-1,1,0,0.82,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_Spotter'];
+_i = _i + [['','',295,5,-1,2,0,0.84,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_Sniper'];
+_i = _i + [['','',300,5,-1,2,0,0.84,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_SniperH'];
+_i = _i + [['','',330,5,-1,3,0,0.86,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_Medic'];
+_i = _i + [['','',190,4,-1,0,0,0.79,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_Crew'];
+_i = _i + [['','',120,4,-1,0,0,0.76,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_Pilot'];
+_i = _i + [['','',120,4,-1,0,0,0.77,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_TL'];
+_i = _i + [['','',240,5,-1,1,0,0.9,'Russians',[]]];
+
+_c = _c + ['RU_Soldier_SL'];
+_i = _i + [['','',220,5,-1,2,0,0.89,'Russians',[]]];
+
+/* Light Vehicles */
+_c = _c + ['UAZ_RU'];
+_i = _i + [['','',260,15,-2,0,1,0,'Russians',[]]];
+
+_c = _c + ['PBX'];
+_i = _i + [['','',225,15,-2,0,1,0,'Russians',[]]];
+
+_c = _c + ['UAZ_AGS30_RU'];
+_i = _i + [['','',585,18,-2,1,1,0,'Russians',[]]];
+
+_c = _c + ['Kamaz'];
+_i = _i + [['','',300,15,-2,0,1,0,'Russians',[]]];
+
+_c = _c + ['WarfareSalvageTruck_RU'];
+_i = _i + [['','',450,18,-2,0,1,0,'Russians',[]]];
+
+_c = _c + ['KamazRepair'];
+_i = _i + [['','',525,21,-2,2,1,0,'Russians',[]]];
+
+_c = _c + ['WarfareReammoTruck_RU'];
+_i = _i + [['','',550,21,-2,1,1,0,'Russians',[]]];
+
+_c = _c + ['KamazRefuel'];
+_i = _i + [['','',500,21,-2,1,1,0,'Russians',[]]];
+
+_c = _c + ['WarfareSupplyTruck_RU'];
+_i = _i + [['','',550,21,-2,0,1,0,'Russians',[]]];
+
+_c = _c + ['GAZ_Vodnik_MedEvac'];
+_i = _i + [['','',525,25,-2,2,1,0,'Russians',[]]];
+
+_c = _c + ['GAZ_Vodnik'];
+_i = _i + [['','',1200,22,-2,1,1,0,'Russians',[]]];
+
+_c = _c + ['GAZ_Vodnik_HMG'];
+_i = _i + [['','',1450,24,[false,true,2,0],2,1,0,'Russians',[[0]]]];
+
+_c = _c + ['BTR90'];
+_i = _i + [['','',3250,25,-2,3,1,0,'Russians',[]]];
+
+if (WF_ACE) then
+{
+ _c = _c + ['ACE_BTR70_RU'];
+ _i = _i + [['','',2750,25,-2,2,1,0,'Russians',[]]];
+};
+
+_c = _c + ['GRAD_RU'];
+_i = _i + [['','',4200,25,-2,3,1,0,'Russians',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['BMP3'];
+_i = _i + [['','',3400,35,-2,if (WF_A2_Vanilla) then {0} else {2},2,0,'Russians',[]]];
+
+_c = _c + ['T72_RU'];
+_i = _i + [['','',4900,40,-2,if (WF_A2_Vanilla) then {1} else {2},2,0,'Russians',[]]];
+
+if (WF_ACE) then
+{
+ _c = _c + ['ACE_T72B_Base'];
+ _i = _i + [['','',4900,40,-2,if (WF_A2_Vanilla) then {1} else {2},2,0,'Russians',[]]];
+
+ _c = _c + ['ACE_T72BA_Base'];
+ _i = _i + [['','',4900,40,-2,if (WF_A2_Vanilla) then {1} else {2},2,0,'Russians',[]]];
+
+ _c = _c + ['ACE_T90A'];
+ _i = _i + [['','',6250,40,-2,if (WF_A2_Vanilla) then {2} else {3},2,0,'Russians',[]]];
+};
+
+_c = _c + ['T90'];
+_i = _i + [['','',6250,40,-2,if (WF_A2_Vanilla) then {2} else {3},2,0,'Russians',[]]];
+
+_c = _c + ['2S6M_Tunguska'];
+_i = _i + [['','',9800,35,-2,3,2,0,'Russians',[]]];
+
+/* Air Vehicles */
+_c = _c + ['Mi17_medevac_RU'];
+_i = _i + [['','',18000,35,-2,0,3,0,'Russians',[]]];
+
+_c = _c + ['Mi17_rockets_RU'];
+_i = _i + [['','',70000,45,-2,1,3,0,'Russians',[]]];
+
+_c = _c + ['Mi24_V'];
+_i = _i + [['','',60000,50,-2,2,3,0,'Russians',[]]];
+
+_c = _c + ['Mi24_P'];
+_i = _i + [['','',64000,52,-2,2,3,0,'Russians',[]]];
+
+_c = _c + ['Su34'];
+_i = _i + [['','',110000,55,-2,3,3,0,'Russians',[]]];
+
+_c = _c + ['Su39'];
+_i = _i + [['','',90000,55,-2,3,3,0,'Russians',[]]];
+
+_c = _c + ['Ka52'];
+_i = _i + [['','',if (paramBalancing) then {85000} else {100000},55,-2,if (paramBalancing) then {2} else {3},3,0,'Russians',[]]];
+
+_c = _c + ['Ka52Black'];
+_i = _i + [['','',if (paramBalancing) then {85000} else {100000},55,-2,if (paramBalancing) then {2} else {3},3,0,'Russians',[]]];
+
+/* Special */
+_c = _c + ['Pchela1T'];
+_i = _i + [['','',9000,35,-2,1,3,0,'Russians',[]]];
+
+/* Static Defenses */
+_c = _c + ['RU_WarfareBMGNest_PK'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['KORD'];
+_i = _i + [['KORD','',200,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['KORD_high'];
+_i = _i + [['KORD Minitripod','',225,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['SearchLight_RUS'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['AGS_RU'];
+_i = _i + [['','',650,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['Metis'];
+_i = _i + [['Metis-M 9K115-2','',725,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['Igla_AA_pod_East'];
+_i = _i + [['Igla AA POD launcher','',815,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['2b14_82mm'];
+_i = _i + [['Podnos 2B14','',1025,0,1,0,'Defense',0,'Russians',[]]];
+
+_c = _c + ['D30_RU'];
+_i = _i + [['','',2300,0,1,0,'Defense',0,'Russians',[]]];
+
+/* Defense Structures */
+_c = _c + ['Land_CamoNet_EAST'];
+_i = _i + [['','',35,0,0,0,'Strategic',0,'Russians',[]]];
+
+_c = _c + ['Land_CamoNetVar_EAST'];
+_i = _i + [['','',45,0,0,0,'Strategic',0,'Russians',[]]];
+
+_c = _c + ['Land_CamoNetB_EAST'];
+_i = _i + [['','',55,0,0,0,'Strategic',0,'Russians',[]]];
+
+_c = _c + ['RUOrdnanceBox'];
+_i = _i + [['','',850,0,0,0,'Ammo',0,'Russians',[]]];
+
+_c = _c + ['RUVehicleBox'];
+_i = _i + [['','',1200,0,0,0,'Ammo',0,'Russians',[]]];
+
+_c = _c + ['RUBasicAmmunitionBox'];
+_i = _i + [['','',1950,0,0,0,'Ammo',0,'Russians',[]]];
+
+_c = _c + ['RUBasicWeaponsBox'];
+_i = _i + [['','',2975,0,0,0,'Ammo',0,'Russians',[]]];
+
+_c = _c + ['RULaunchersBox'];
+_i = _i + [['','',6250,0,0,0,'Ammo',0,'Russians',[]]];
+
+_c = _c + ['RUSpecialWeaponsBox'];
+_i = _i + [['','',7200,0,0,0,'Ammo',0,'Russians',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_RU: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_RU: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_RU: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_Spetsnaz.sqf b/Common/Config/Core/Core_Spetsnaz.sqf
new file mode 100644
index 0000000..34b7a9f
--- /dev/null
+++ b/Common/Config/Core/Core_Spetsnaz.sqf
@@ -0,0 +1,50 @@
+/* Spetsnaz Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['RUS_Soldier1'];
+_i = _i + [['','',250,6,-1,2,0,0.98,'Russians Spetsnaz',[]]];
+
+_c = _c + ['RUS_Soldier2'];
+_i = _i + [['','',260,6,-1,3,0,0.98,'Russians Spetsnaz',[]]];
+
+_c = _c + ['RUS_Soldier_GL'];
+_i = _i + [['','',270,6,-1,3,0,0.99,'Russians Spetsnaz',[]]];
+
+_c = _c + ['RUS_Soldier_Marksman'];
+_i = _i + [['','',290,6,-1,3,0,0.99,'Russians Spetsnaz',[]]];
+
+_c = _c + ['RUS_Soldier3'];
+_i = _i + [['','',295,6,-1,3,0,0.98,'Russians Spetsnaz',[]]];
+
+_c = _c + ['RUS_Soldier_TL'];
+_i = _i + [['','',300,6,-1,3,0,1.0,'Russians Spetsnaz',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_Spetsnaz: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_Spetsnaz: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_Spetsnaz: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_TK.sqf b/Common/Config/Core/Core_TK.sqf
new file mode 100644
index 0000000..fbfd9e6
--- /dev/null
+++ b/Common/Config/Core/Core_TK.sqf
@@ -0,0 +1,249 @@
+/* TK Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['TK_Soldier_EP1'];
+_i = _i + [['','',150,4,-1,0,0,0.77,'Takistani']];
+
+_c = _c + ['TK_Soldier_B_EP1'];
+_i = _i + [['','',125,4,-1,0,0,0.77,'Takistani']];
+
+_c = _c + ['TK_Soldier_TWS_EP1'];
+_i = _i + [['','',205,5,-1,0,0,0.82,'Takistani']];
+
+_c = _c + ['TK_Soldier_Engineer_EP1'];
+_i = _i + [['','',155,5,-1,0,0,0.78,'Takistani']];
+
+_c = _c + ['TK_Soldier_LAT_EP1'];
+_i = _i + [['','',225,5,-1,0,0,0.78,'Takistani']];
+
+_c = _c + ['TK_Soldier_AT_EP1'];
+_i = _i + [['','',310,5,-1,1,0,0.8,'Takistani']];
+
+_c = _c + ['TK_Soldier_HAT_EP1'];
+_i = _i + [['','',620,7,-1,3,0,0.83,'Takistani']];
+
+_c = _c + ['TK_Soldier_AA_EP1'];
+_i = _i + [['','',425,6,-1,1,0,0.82,'Takistani']];
+
+_c = _c + ['TK_Soldier_AR_EP1'];
+_i = _i + [['','',210,5,-1,1,0,0.79,'Takistani']];
+
+_c = _c + ['TK_Soldier_MG_EP1'];
+_i = _i + [['','',220,5,-1,0,0,0.8,'Takistani']];
+
+_c = _c + ['TK_Soldier_GL_EP1'];
+_i = _i + [['','',160,5,-1,0,0,0.78,'Takistani']];
+
+_c = _c + ['TK_Soldier_Sniper_EP1'];
+_i = _i + [['','',280,5,-1,1,0,0.88,'Takistani']];
+
+_c = _c + ['TK_Soldier_Spotter_EP1'];
+_i = _i + [['','',290,5,-1,1,0,0.82,'Takistani']];
+
+_c = _c + ['TK_Soldier_Medic_EP1'];
+_i = _i + [['','',190,4,-1,0,0,0.81,'Takistani']];
+
+_c = _c + ['TK_Soldier_Crew_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.76,'Takistani']];
+
+_c = _c + ['TK_Soldier_Pilot_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.77,'Takistani']];
+
+_c = _c + ['TK_Soldier_Officer_EP1'];
+_i = _i + [['','',240,5,-1,1,0,0.85,'Takistani']];
+
+_c = _c + ['TK_Soldier_SL_EP1'];
+_i = _i + [['','',220,5,-1,2,0,0.86,'Takistani']];
+
+/* Light Vehicles */
+_c = _c + ['TT650_TK_EP1'];
+_i = _i + [['','',150,15,1,0,1,0,'Takistani']];
+
+_c = _c + ['UAZ_Unarmed_TK_EP1'];
+_i = _i + [['','',260,15,1,0,1,0,'Takistani']];
+
+_c = _c + ['SUV_TK_EP1'];
+_i = _i + [['','',290,15,1,0,1,0,'Takistani']];
+
+_c = _c + ['UAZ_MG_TK_EP1'];
+_i = _i + [['','',460,15,2,0,1,0,'Takistani']];
+
+_c = _c + ['UAZ_AGS30_TK_EP1'];
+_i = _i + [['','',585,15,2,1,1,0,'Takistani']];
+
+_c = _c + ['LandRover_MG_TK_EP1'];
+_i = _i + [['','',550,17,2,0,1,0,'Takistani']];
+
+_c = _c + ['LandRover_SPG9_TK_EP1'];
+_i = _i + [['','',750,17,2,2,1,0,'Takistani']];
+
+_c = _c + ['V3S_TK_EP1'];
+_i = _i + [['','',275,20,1,0,1,0,'Takistani']];
+
+_c = _c + ['V3S_Open_TK_EP1'];
+_i = _i + [['','',250,20,1,0,1,0,'Takistani']];
+
+_c = _c + ['UralRepair_TK_EP1'];
+_i = _i + [['','',1250,21,1,2,1,0,'Takistani']];
+
+_c = _c + ['UralSalvage_TK_EP1'];
+_i = _i + [['','',450,17,1,1,1,0,'Takistani']];
+
+_c = _c + ['UralReammo_TK_EP1'];
+_i = _i + [['','',450,18,1,1,1,0,'Takistani']];
+
+_c = _c + ['UralRefuel_TK_EP1'];
+_i = _i + [['','',400,19,1,1,1,0,'Takistani']];
+
+_c = _c + ['UralSupply_TK_EP1'];
+_i = _i + [['','',450,21,1,0,1,0,'Takistani']];
+
+_c = _c + ['M113Ambul_TK_EP1'];
+_i = _i + [['','',750,25,1,1,1,0,'Takistani']];
+
+_c = _c + ['BRDM2_TK_EP1'];
+_i = _i + [['','',1100,22,2,1,1,0,'Takistani']];
+
+_c = _c + ['BRDM2_ATGM_TK_EP1'];
+_i = _i + [['','',1650,22,2,2,1,0,'Takistani']];
+
+_c = _c + ['BTR60_TK_EP1'];
+_i = _i + [['','',1425,25,3,2,1,0,'Takistani']];
+
+_c = _c + ['Ural_ZU23_TK_EP1'];
+_i = _i + [['','',1750,25,2,2,1,0,'Takistani']];
+
+_c = _c + ['GRAD_TK_EP1'];
+_i = _i + [['','',4200,25,2,3,1,0,'Takistani']];
+
+/* Heavy Vehicles */
+_c = _c + ['M113_TK_EP1'];
+_i = _i + [['','',1100,22,2,0,2,0,'Takistani']];
+
+_c = _c + ['BMP2_TK_EP1'];
+_i = _i + [['','',2600,25,3,if (WF_A2_Arrowhead) then {0} else {1},2,0,'Takistani']];
+
+_c = _c + ['ZSU_TK_EP1'];
+_i = _i + [['','',3400,25,3,1,2,0,'Takistani']];
+
+_c = _c + ['T34_TK_EP1'];
+_i = _i + [['','',3900,25,3,0,2,0,'Takistani']];
+
+_c = _c + ['T55_TK_EP1'];
+_i = _i + [['','',4500,27,3,1,2,0,'Takistani']];
+
+_c = _c + ['T72_TK_EP1'];
+_i = _i + [['','',4900,30,3,2,2,0,'Takistani']];
+
+/* Air Vehicles */
+_c = _c + ['An2_TK_EP1'];
+_i = _i + [['','',6200,35,1,1,3,0,'Takistani']];
+
+_c = _c + ['Mi17_TK_EP1'];
+_i = _i + [['','',7000,35,2,0,3,0,'Takistani']];
+
+_c = _c + ['UH1H_TK_EP1'];
+_i = _i + [['','',7500,35,2,0,3,0,'Takistani']];
+
+_c = _c + ['Mi24_D_TK_EP1'];
+_i = _i + [['','',32800,40,2,1,3,0,'Takistani']];
+
+_c = _c + ['L39_TK_EP1'];
+_i = _i + [['','',38700,50,1,2,3,0,'Takistani']];
+
+_c = _c + ['Su25_TK_EP1'];
+_i = _i + [['','',46400,55,1,3,3,0,'Takistani']];
+
+/* Static Defenses */
+_c = _c + ['WarfareBMGNest_PK_TK_EP1'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['KORD_TK_EP1'];
+_i = _i + [['KORD Minitripod','',200,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['KORD_high_TK_EP1'];
+_i = _i + [['KORD','',225,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['SearchLight_TK_EP1'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['AGS_TK_EP1'];
+_i = _i + [['','',650,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['SPG9_TK_INS_EP1'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['Metis_TK_EP1'];
+_i = _i + [['Metis-M 9K115-2','',725,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['Igla_AA_pod_TK_EP1'];
+_i = _i + [['Igla AA POD launcher','',815,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['ZU23_TK_EP1'];
+_i = _i + [['','',945,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['2b14_82mm_TK_EP1'];
+_i = _i + [['Podnos 2B14','',1025,0,1,0,'Defense',0,'Takistani']];
+
+_c = _c + ['D30_TK_EP1'];
+_i = _i + [['','',2300,0,1,0,'Defense',0,'Takistani']];
+
+/* Defense Structures */
+_c = _c + ['TK_WarfareBBarrier5x_EP1'];
+_i = _i + [['','',15,0,0,0,'Fortification',0,'Takistani']];
+
+_c = _c + ['TK_WarfareBBarrier10x_EP1'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'Takistani']];
+
+_c = _c + ['TK_WarfareBBarrier10xTall_EP1'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'Takistani']];
+
+_c = _c + ['Land_CamoNet_EAST_EP1'];
+_i = _i + [['','',35,0,0,0,'Strategic',0,'Takistani']];
+
+_c = _c + ['Land_CamoNetVar_EAST_EP1'];
+_i = _i + [['','',45,0,0,0,'Strategic',0,'Takistani']];
+
+_c = _c + ['Land_CamoNetB_EAST_EP1'];
+_i = _i + [['','',55,0,0,0,'Strategic',0,'Takistani']];
+
+_c = _c + ['TKOrdnanceBox_EP1'];
+_i = _i + [['','',850,0,0,0,'Ammo',0,'Takistani']];
+
+_c = _c + ['TKVehicleBox_EP1'];
+_i = _i + [['','',1200,0,0,0,'Ammo',0,'Takistani']];
+
+_c = _c + ['TKBasicAmmunitionBox_EP1'];
+_i = _i + [['','',1950,0,0,0,'Ammo',0,'Takistani']];
+
+_c = _c + ['TKBasicWeapons_EP1'];
+_i = _i + [['','',2975,0,0,0,'Ammo',0,'Takistani']];
+
+_c = _c + ['TKLaunchers_EP1'];
+_i = _i + [['','',6250,0,0,0,'Ammo',0,'Takistani']];
+
+_c = _c + ['TKSpecialWeapons_EP1'];
+_i = _i + [['','',7200,0,0,0,'Ammo',0,'Takistani']];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TK: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_TK: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TK: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_TKA.sqf b/Common/Config/Core/Core_TKA.sqf
new file mode 100644
index 0000000..50db7ff
--- /dev/null
+++ b/Common/Config/Core/Core_TKA.sqf
@@ -0,0 +1,265 @@
+/* TKA Configuration */
+Private ['_c','_get','_i','_p','_z'];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['TK_Soldier_EP1'];
+_i = _i + [['','',150,4,-1,0,0,0.77,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_B_EP1'];
+_i = _i + [['','',125,4,-1,0,0,0.77,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_TWS_EP1'];
+_i = _i + [['','',205,5,-1,0,0,0.82,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Engineer_EP1'];
+_i = _i + [['','',155,5,-1,0,0,0.78,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_LAT_EP1'];
+_i = _i + [['','',225,5,-1,0,0,0.78,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_AT_EP1'];
+_i = _i + [['','',310,5,-1,1,0,0.8,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_AAT_EP1'];
+_i = _i + [['','',270,5,-1,1,0,0.8,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_HAT_EP1'];
+_i = _i + [['','',620,7,-1,3,0,0.83,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_AA_EP1'];
+_i = _i + [['','',425,6,-1,1,0,0.82,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_AR_EP1'];
+_i = _i + [['','',210,5,-1,1,0,0.79,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_AMG_EP1'];
+_i = _i + [['','',205,5,-1,0,0,0.8,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_MG_EP1'];
+_i = _i + [['','',220,5,-1,0,0,0.8,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_GL_EP1'];
+_i = _i + [['','',160,5,-1,0,0,0.78,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Sniper_EP1'];
+_i = _i + [['','',280,5,-1,1,0,0.88,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_SniperH_EP1'];
+_i = _i + [['','',320,5,-1,3,0,0.88,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Spotter_EP1'];
+_i = _i + [['','',290,5,-1,1,0,0.82,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Medic_EP1'];
+_i = _i + [['','',190,4,-1,0,0,0.81,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Crew_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.76,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Pilot_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.77,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_Officer_EP1'];
+_i = _i + [['','',240,5,-1,1,0,0.85,'Takistani Army',[]]];
+
+_c = _c + ['TK_Soldier_SL_EP1'];
+_i = _i + [['','',220,5,-1,2,0,0.86,'Takistani Army',[]]];
+
+/* Light Vehicles */
+_c = _c + ['TT650_TK_EP1'];
+_i = _i + [['','',150,15,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UAZ_Unarmed_TK_EP1'];
+_i = _i + [['','',260,15,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['SUV_TK_EP1'];
+_i = _i + [['','',290,15,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UAZ_MG_TK_EP1'];
+_i = _i + [['','',460,15,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UAZ_AGS30_TK_EP1'];
+_i = _i + [['','',585,15,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['LandRover_MG_TK_EP1'];
+_i = _i + [['','',550,17,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['LandRover_SPG9_TK_EP1'];
+_i = _i + [['','',750,17,-2,2,1,0,'Takistani Army',[]]];
+
+_c = _c + ['V3S_TK_EP1'];
+_i = _i + [['','',275,20,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['V3S_Open_TK_EP1'];
+_i = _i + [['','',250,20,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UralRepair_TK_EP1'];
+_i = _i + [['','',425,17,-2,2,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UralSalvage_TK_EP1'];
+_i = _i + [['','',450,17,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UralReammo_TK_EP1'];
+_i = _i + [['','',450,18,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UralRefuel_TK_EP1'];
+_i = _i + [['','',400,19,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['UralSupply_TK_EP1'];
+_i = _i + [['','',450,21,-2,0,1,0,'Takistani Army',[]]];
+
+_c = _c + ['M113Ambul_TK_EP1'];
+_i = _i + [['','',750,25,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['BRDM2_TK_EP1'];
+_i = _i + [['','',1100,22,-2,1,1,0,'Takistani Army',[]]];
+
+_c = _c + ['BRDM2_ATGM_TK_EP1'];
+_i = _i + [['','',1650,22,-2,2,1,0,'Takistani Army',[]]];
+
+_c = _c + ['BTR60_TK_EP1'];
+_i = _i + [['','',1425,25,-2,2,1,0,'Takistani Army',[]]];
+
+_c = _c + ['Ural_ZU23_TK_EP1'];
+_i = _i + [['','',1750,25,-2,2,1,0,'Takistani Army',[]]];
+
+_c = _c + ['GRAD_TK_EP1'];
+_i = _i + [['','',4200,25,-2,3,1,0,'Takistani Army',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['M113_TK_EP1'];
+_i = _i + [['','',1100,22,-2,0,2,0,'Takistani Army',[]]];
+
+_c = _c + ['BMP2_TK_EP1'];
+_i = _i + [['','',2600,25,-2,if (WF_A2_Arrowhead) then {0} else {1},2,0,'Takistani Army',[]]];
+
+_c = _c + ['ZSU_TK_EP1'];
+_i = _i + [['','',3400,25,-2,1,2,0,'Takistani Army',[]]];
+
+_c = _c + ['T34_TK_EP1'];
+_i = _i + [['','',3900,25,-2,0,2,0,'Takistani Army',[]]];
+
+_c = _c + ['T55_TK_EP1'];
+_i = _i + [['','',4500,27,-2,1,2,0,'Takistani Army',[]]];
+
+_c = _c + ['T72_TK_EP1'];
+_i = _i + [['','',4900,30,-2,2,2,0,'Takistani Army',[]]];
+
+/* Air Vehicles */
+_c = _c + ['An2_TK_EP1'];
+_i = _i + [['','',15000,35,-2,1,3,0,'Takistani Army',[]]];
+
+_c = _c + ['Mi17_TK_EP1'];
+_i = _i + [['','',15000,33,-2,0,3,0,'Takistani Army',[]]];
+
+_c = _c + ['UH1H_TK_EP1'];
+_i = _i + [['','',12500,30,-2,0,3,0,'Takistani Army',[]]];
+
+_c = _c + ['Mi24_D_TK_EP1'];
+_i = _i + [['','',65000,40,-2,1,3,0,'Takistani Army',[]]];
+
+_c = _c + ['L39_TK_EP1'];
+_i = _i + [['','',70000,50,-2,2,3,0,'Takistani Army',[]]];
+
+_c = _c + ['Su25_TK_EP1'];
+_i = _i + [['','',90000,55,-2,3,3,0,'Takistani Army',[]]];
+
+/* Static Defenses */
+_c = _c + ['WarfareBMGNest_PK_TK_EP1'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['KORD_TK_EP1'];
+_i = _i + [['KORD Minitripod','',200,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['KORD_high_TK_EP1'];
+_i = _i + [['KORD','',225,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['SearchLight_TK_EP1'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['AGS_TK_EP1'];
+_i = _i + [['','',650,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['SPG9_TK_INS_EP1'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['Metis_TK_EP1'];
+_i = _i + [['Metis-M 9K115-2','',725,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['Igla_AA_pod_TK_EP1'];
+_i = _i + [['Igla AA POD launcher','',815,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['ZU23_TK_EP1'];
+_i = _i + [['','',945,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['2b14_82mm_TK_EP1'];
+_i = _i + [['Podnos 2B14','',1025,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+_c = _c + ['D30_TK_EP1'];
+_i = _i + [['','',2300,0,1,0,'Defense',0,'Takistani Army',[]]];
+
+/* Defense Structures */
+_c = _c + ['TK_WarfareBBarrier5x_EP1'];
+_i = _i + [['','',15,0,0,0,'Fortification',0,'Takistani Army',[]]];
+
+_c = _c + ['TK_WarfareBBarrier10x_EP1'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'Takistani Army',[]]];
+
+_c = _c + ['TK_WarfareBBarrier10xTall_EP1'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'Takistani Army',[]]];
+
+_c = _c + ['Land_CamoNet_EAST_EP1'];
+_i = _i + [['','',35,0,0,0,'Strategic',0,'Takistani Army',[]]];
+
+_c = _c + ['Land_CamoNetVar_EAST_EP1'];
+_i = _i + [['','',45,0,0,0,'Strategic',0,'Takistani Army',[]]];
+
+_c = _c + ['Land_CamoNetB_EAST_EP1'];
+_i = _i + [['','',55,0,0,0,'Strategic',0,'Takistani Army',[]]];
+
+_c = _c + ['TKOrdnanceBox_EP1'];
+_i = _i + [['','',850,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+_c = _c + ['TKVehicleBox_EP1'];
+_i = _i + [['','',1200,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+_c = _c + ['TKBasicAmmunitionBox_EP1'];
+_i = _i + [['','',1950,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+_c = _c + ['TKBasicWeapons_EP1'];
+_i = _i + [['','',2975,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+_c = _c + ['TKLaunchers_EP1'];
+_i = _i + [['','',6250,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+_c = _c + ['TKSpecialWeapons_EP1'];
+_i = _i + [['','',7200,0,0,0,'Ammo',0,'Takistani Army',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKA: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_TKA: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKA: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_TKCIV.sqf b/Common/Config/Core/Core_TKCIV.sqf
new file mode 100644
index 0000000..e1949e1
--- /dev/null
+++ b/Common/Config/Core/Core_TKCIV.sqf
@@ -0,0 +1,133 @@
+/* CIV Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['TK_CIV_Worker01_EP1'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Takistani Civilians',[]]];
+
+_c = _c + ['TK_CIV_Worker02_EP1'];
+_i = _i + [['','',375,4,-1,0,0,0.4,'Takistani Civilians',[]]];
+
+/* Light Vehicles */
+_c = _c + ['Old_bike_TK_CIV_EP1'];
+_i = _i + [['','',50,8,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Old_moto_TK_Civ_EP1'];
+_i = _i + [['','',100,12,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['TT650_TK_CIV_EP1'];
+_i = _i + [['','',110,15,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Lada1_TK_CIV_EP1'];
+_i = _i + [['','',175,18,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Lada2_TK_CIV_EP1'];
+_i = _i + [['','',175,18,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Volha_1_TK_CIV_EP1'];
+_i = _i + [['','',200,21,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Volha_2_TK_CIV_EP1'];
+_i = _i + [['','',200,21,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['VolhaLimo_TK_CIV_EP1'];
+_i = _i + [['','',200,22,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['LandRover_TK_CIV_EP1'];
+_i = _i + [['','',250,24,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['S1203_TK_CIV_EP1'];
+_i = _i + [['','',320,25,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['V3S_Open_TK_CIV_EP1'];
+_i = _i + [['','',380,25,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Ural_TK_CIV_EP1'];
+_i = _i + [['','',390,25,-2,0,1,0,'Takistani Civilians',[]]];
+
+_c = _c + ['Ikarus_TK_CIV_EP1'];
+_i = _i + [['','',420,25,-2,0,1,0,'Takistani Civilians',[]]];
+
+/* Defense Structures */
+_c = _c + ['Land_HBarrier3'];
+_i = _i + [['','',20,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_HBarrier5'];
+_i = _i + [['','',30,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_HBarrier_large'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_long'];
+_i = _i + [['','',10,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_corner'];
+_i = _i + [['','',8,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_fort_bagfence_round'];
+_i = _i + [['','',12,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Hhedgehog_concreteBig'];
+_i = _i + [['','',95,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Hedgehog_EP1'];
+_i = _i + [['','',5,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['HeliH'];
+_i = _i + [['','',15,0,0,0,'Strategic',0,'Takistani Civilians',[]]];
+
+_c = _c + ['MASH_EP1'];
+_i = _i + [['','',30,0,0,0,'Strategic',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_Campfire'];
+_i = _i + [['','',3,0,0,0,'Strategic',0,'Civilians',[]]];
+
+_c = _c + ['Land_fort_rampart_EP1'];
+_i = _i + [['','',30,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_fort_artillery_nest_EP1'];
+_i = _i + [[localize 'STR_WF_ArtilleryNest','',65,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_fortified_nest_small_EP1'];
+_i = _i + [['','',40,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Sign_Danger'];
+_i = _i + [[localize 'STR_WF_Minefield','',1200,0,0,0,'Strategic',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Fort_RazorWire'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Concrete_Wall_EP1'];
+_i = _i + [['','',20,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+_c = _c + ['Land_Ind_IlluminantTower'];
+_i = _i + [['','',200,0,0,0,'Fortification',0,'Takistani Civilians',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKCIV: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_TKCIV: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKCIV: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_TKGUE.sqf b/Common/Config/Core/Core_TKGUE.sqf
new file mode 100644
index 0000000..d6dbea0
--- /dev/null
+++ b/Common/Config/Core/Core_TKGUE.sqf
@@ -0,0 +1,128 @@
+/* TK GUE Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['TK_GUE_Soldier_EP1'];
+_i = _i + [['','',110,4,-1,0,0,0.48,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_2_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.46,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_3_EP1'];
+_i = _i + [['','',110,4,-1,0,0,0.5,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_4_EP1'];
+_i = _i + [['','',100,5,-1,0,0,0.49,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_5_EP1'];
+_i = _i + [['','',100,5,-1,0,0,0.47,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_AT_EP1'];
+_i = _i + [['','',220,4,-1,1,0,0.52,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_AAT_EP1'];
+_i = _i + [['','',210,4,-1,2,0,0.51,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_AA_EP1'];
+_i = _i + [['','',270,4,-1,2,0,0.53,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_AR_EP1'];
+_i = _i + [['','',190,5,-1,1,0,0.52,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_MG_EP1'];
+_i = _i + [['','',200,6,-1,0,0,0.53,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_Sniper_EP1'];
+_i = _i + [['','',180,5,-1,1,0,0.56,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Bonesetter_EP1'];
+_i = _i + [['','',125,5,-1,0,0,0.49,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_HAT_EP1'];
+_i = _i + [['','',350,5,-1,3,0,0.58,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Soldier_TL_EP1'];
+_i = _i + [['','',200,5,-1,2,0,0.61,'Takistani Guerilla',[]]];
+
+_c = _c + ['TK_GUE_Warlord_EP1'];
+_i = _i + [['','',210,5,-1,1,0,0.59,'Takistani Guerilla',[]]];
+
+/* Light Vehicles */
+_c = _c + ['V3S_TK_GUE_EP1'];
+_i = _i + [['','',175,15,-2,0,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['Pickup_PK_TK_GUE_EP1'];
+_i = _i + [['','',250,17,-2,0,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['Offroad_DSHKM_TK_GUE_EP1'];
+_i = _i + [['','',300,25,-2,1,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['Offroad_SPG9_TK_GUE_EP1'];
+_i = _i + [['','',380,20,-2,2,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['BRDM2_TK_GUE_EP1'];
+_i = _i + [['','',600,25,-2,1,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['BTR40_TK_GUE_EP1'];
+_i = _i + [['','',650,25,-2,0,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['BTR40_MG_TK_GUE_EP1'];
+_i = _i + [['','',800,25,-2,1,1,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['Ural_ZU23_TK_GUE_EP1'];
+_i = _i + [['','',950,25,-2,3,1,0,'Takistani Guerilla',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['T34_TK_GUE_EP1'];
+_i = _i + [['','',2400,30,-2,0,2,0,'Takistani Guerilla',[]]];
+
+_c = _c + ['T55_TK_GUE_EP1'];
+_i = _i + [['','',2800,35,-2,1,2,0,'Takistani Guerilla',[]]];
+
+/* Static Defenses */
+_c = _c + ['WarfareBMGNest_PK_TK_GUE_EP1'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+_c = _c + ['DSHKM_TK_GUE_EP1'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+_c = _c + ['AGS_TK_GUE_EP1'];
+_i = _i + [['','',650,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+_c = _c + ['SPG9_TK_GUE_EP1'];
+_i = _i + [['','',475,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+_c = _c + ['ZU23_TK_GUE_EP1'];
+_i = _i + [['','',600,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+_c = _c + ['D30_TK_GUE_EP1'];
+_i = _i + [['','',2300,0,1,0,'Defense',0,'Takistani Guerilla',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKGUE: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_TKGUE: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKGUE: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_TKSF.sqf b/Common/Config/Core/Core_TKSF.sqf
new file mode 100644
index 0000000..f1fb772
--- /dev/null
+++ b/Common/Config/Core/Core_TKSF.sqf
@@ -0,0 +1,41 @@
+/* TK SF Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['TK_Special_Forces_EP1'];
+_i = _i + [['','',280,6,-1,2,0,0.82,'Takistani Special Forces',[]]];
+
+_c = _c + ['TK_Special_Forces_TL_EP1'];
+_i = _i + [['','',300,6,-1,2,0,0.85,'Takistani Special Forces',[]]];
+
+_c = _c + ['TK_Special_Forces_MG_EP1'];
+_i = _i + [['','',305,6,-1,2,0,0.81,'Takistani Special Forces',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKSF: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_TKSF: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_TKSF: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_US.sqf b/Common/Config/Core/Core_US.sqf
new file mode 100644
index 0000000..934814b
--- /dev/null
+++ b/Common/Config/Core/Core_US.sqf
@@ -0,0 +1,305 @@
+/* US Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['US_Soldier_Light_EP1'];
+_i = _i + [['','',130,4,-1,0,0,0.86,'US',[]]];
+
+_c = _c + ['US_Soldier_EP1'];
+_i = _i + [['','',150,4,-1,0,0,0.86,'US',[]]];
+
+_c = _c + ['US_Soldier_B_EP1'];
+_i = _i + [['','',155,4,-1,0,0,0.86,'US',[]]];
+
+_c = _c + ['US_Soldier_LAT_EP1'];
+_i = _i + [['','',225,5,-1,0,0,0.88,'US',[]]];
+
+_c = _c + ['US_Soldier_AT_EP1'];
+_i = _i + [['','',350,5,-1,2,0,0.9,'US',[]]];
+
+_c = _c + ['US_Soldier_HAT_EP1'];
+_i = _i + [['','',800,6,-1,3,0,0.92,'US',[]]];
+
+_c = _c + ['US_Soldier_AA_EP1'];
+_i = _i + [['','',400,6,-1,2,0,0.91,'US',[]]];
+
+_c = _c + ['US_Soldier_AR_EP1'];
+_i = _i + [['','',210,5,-1,1,0,0.88,'US',[]]];
+
+_c = _c + ['US_Soldier_MG_EP1'];
+_i = _i + [['','',220,5,-1,0,0,0.89,'US',[]]];
+
+_c = _c + ['US_Soldier_GL_EP1'];
+_i = _i + [['','',160,5,-1,0,0,0.87,'US',[]]];
+
+_c = _c + ['US_Soldier_Sniper_EP1'];
+_i = _i + [['','',320,6,-1,2,0,0.92,'US',[]]];
+
+_c = _c + ['US_Soldier_SniperH_EP1'];
+_i = _i + [['','',350,6,-1,3,0,0.93,'US',[]]];
+
+_c = _c + ['US_Soldier_Sniper_NV_EP1'];
+_i = _i + [['','',370,6,-1,3,0,0.94,'US',[]]];
+
+_c = _c + ['US_Soldier_Marksman_EP1'];
+_i = _i + [['','',330,6,-1,2,0,0.91,'US',[]]];
+
+_c = _c + ['US_Soldier_Medic_EP1'];
+_i = _i + [['','',190,4,-1,0,0,0.89,'US',[]]];
+
+_c = _c + ['US_Soldier_Engineer_EP1'];
+_i = _i + [['','',225,5,-1,0,0,0.87,'US',[]]];
+
+_c = _c + ['US_Soldier_AMG_EP1'];
+_i = _i + [['','',185,6,-1,2,0,0.87,'US',[]]];
+
+_c = _c + ['US_Soldier_AAR_EP1'];
+_i = _i + [['','',185,6,-1,3,0,0.87,'US',[]]];
+
+_c = _c + ['US_Soldier_AHAT_EP1'];
+_i = _i + [['','',185,6,-1,3,0,0.89,'US',[]]];
+
+_c = _c + ['US_Soldier_AAT_EP1'];
+_i = _i + [['','',320,6,-1,3,0,0.88,'US',[]]];
+
+_c = _c + ['US_Soldier_Spotter_EP1'];
+_i = _i + [['','',320,6,-1,3,0,0.91,'US',[]]];
+
+_c = _c + ['US_Soldier_Crew_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.86,'US',[]]];
+
+_c = _c + ['US_Soldier_Pilot_EP1'];
+_i = _i + [['','',120,4,-1,0,0,0.87,'US',[]]];
+
+_c = _c + ['US_Soldier_TL_EP1'];
+_i = _i + [['','',240,5,-1,1,0,0.94,'US',[]]];
+
+_c = _c + ['US_Soldier_SL_EP1'];
+_i = _i + [['','',220,5,-1,2,0,0.93,'US',[]]];
+
+_c = _c + ['US_Soldier_Officer_EP1'];
+_i = _i + [['','',250,5,-1,1,0,0.92,'US',[]]];
+
+/* Light Vehicles */
+_c = _c + ['M1030_US_DES_EP1'];
+_i = _i + [['','',150,12,-2,0,1,0,'US',[]]];
+
+_c = _c + ['ATV_US_EP1'];
+_i = _i + [['','',175,14,-2,0,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_DES_EP1'];
+_i = _i + [['','',300,15,-2,0,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_M1035_DES_EP1'];
+_i = _i + [['','',350,15,-2,0,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_Terminal_EP1'];
+_i = _i + [['','',400,15,-2,0,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_MK19_DES_EP1'];
+_i = _i + [['','',900,18,-2,1,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_M998A2_SOV_DES_EP1'];
+_i = _i + [['','',1050,20,-2,1,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_M1151_M2_DES_EP1'];
+_i = _i + [['','',850,20,-2,0,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_M998_crows_M2_DES_EP1'];
+_i = _i + [['','',1250,22,-2,1,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_M998_crows_MK19_DES_EP1'];
+_i = _i + [['','',1375,22,-2,1,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_TOW_DES_EP1'];
+_i = _i + [['','',1450,20,-2,2,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_Avenger_DES_EP1'];
+_i = _i + [['','',1750,25,-2,3,1,0,'US',[]]];
+
+_c = _c + ['HMMWV_Ambulance_DES_EP1'];
+_i = _i + [['','',725,22,-2,2,1,0,'US',[]]];
+
+_c = _c + ['MTVR_DES_EP1'];
+_i = _i + [['','',400,20,-2,0,1,0,'US',[]]];
+
+_c = _c + ['MtvrSalvage_DES_EP1'];
+_i = _i + [['','',450,21,-2,0,1,0,'US',[]]];
+
+_c = _c + ['MtvrRepair_DES_EP1'];
+_i = _i + [['','',525,22,-2,2,1,0,'US',[]]];
+
+_c = _c + ['MtvrReammo_DES_EP1'];
+_i = _i + [['','',550,22,-2,1,1,0,'US',[]]];
+
+_c = _c + ['MtvrRefuel_DES_EP1'];
+_i = _i + [['','',500,22,-2,1,1,0,'US',[]]];
+
+_c = _c + ['MtvrSupply_DES_EP1'];
+_i = _i + [['','',550,25,-2,0,1,0,'US',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['M1126_ICV_M2_EP1'];
+_i = _i + [['','',1650,25,[false,true,2,0],0,2,0,'US',[]]];
+
+_c = _c + ['M1126_ICV_mk19_EP1'];
+_i = _i + [['','',1950,25,[false,true,2,0],0,2,0,'US',[]]];
+
+_c = _c + ['M1129_MC_EP1'];
+_i = _i + [['','',2300,25,-2,1,2,0,'US',[]]];
+
+_c = _c + ['M1135_ATGMV_EP1'];
+_i = _i + [['','',1850,25,-2,2,2,0,'US',[]]];
+
+_c = _c + ['M1128_MGS_EP1'];
+_i = _i + [['','',2450,25,-2,2,2,0,'US',[]]];
+
+_c = _c + ['M1133_MEV_EP1'];
+_i = _i + [['','',1950,25,-2,1,2,0,'US',[]]];
+
+_c = _c + ['M2A2_EP1'];
+_i = _i + [['','',4450,30,-2,1,2,0,'US',[]]];
+
+_c = _c + ['M2A3_EP1'];
+_i = _i + [['','',4950,32,-2,2,2,0,'US',[]]];
+
+_c = _c + ['M1A1_US_DES_EP1'];
+_i = _i + [['','',5650,40,-2,2,2,0,'US',[]]];
+
+_c = _c + ['MLRS_DES_EP1'];
+_i = _i + [['','',5800,40,-2,3,2,0,'US',[]]];
+
+_c = _c + ['M1A2_US_TUSK_MG_EP1'];
+_i = _i + [['','',6950,40,-2,3,2,0,'US',[]]];
+
+_c = _c + ['M6_EP1'];
+_i = _i + [['','',8200,35,-2,3,2,0,'US',[]]];
+
+_c = _c + ['M1128_MGS_EP1'];
+_i = _i + [['','',3650,25,2,2,2,0,'US']];
+
+/* Air Vehicles */
+_c = _c + ['MH6J_EP1'];
+_i = _i + [['','',12500,35,-2,0,3,0,'US',[]]];
+
+_c = _c + ['UH60M_EP1'];
+_i = _i + [['','',15000,35,-2,0,3,0,'US',[]]];
+
+_c = _c + ['UH60M_MEV_EP1'];
+_i = _i + [['','',18000,35,-2,0,3,0,'US',[]]];
+
+_c = _c + ['CH_47F_EP1'];
+_i = _i + [['','',20000,40,-2,0,3,0,'US',[]]];
+
+_c = _c + ['C130J_US_EP1'];
+_i = _i + [['','',26500,55,-2,1,3,0,'US',[]]];
+
+_c = _c + ['AH6X_EP1'];
+_i = _i + [['','',35000,50,-2,1,3,0,'US',[]]];
+
+_c = _c + ['AH6J_EP1'];
+_i = _i + [['','',30000,50,-2,1,3,0,'US',[]]];
+
+_c = _c + ['AH64D_EP1'];
+_i = _i + [['','',80000,60,-2,2,3,0,'US',[]]];
+
+_c = _c + ['A10_US_EP1'];
+_i = _i + [['','',100000,65,-2,3,3,0,'US',[]]];
+
+/* Special */
+_c = _c + ['MQ9PredatorB_US_EP1'];
+_i = _i + [['','',30000,35,-2,2,3,0,'US',[]]];
+
+/* Static Defenses */
+_c = _c + ['WarfareBMGNest_M240_US_EP1'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['M2HD_mini_TriPod_US_EP1'];
+_i = _i + [['','',200,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['M2StaticMG_US_EP1'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['SearchLight_US_EP1'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['MK19_TriPod_US_EP1'];
+_i = _i + [['','',700,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['TOW_TriPod_US_EP1'];
+_i = _i + [['','',800,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['Stinger_Pod_US_EP1'];
+_i = _i + [['','',850,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['M252_US_EP1'];
+_i = _i + [['','',1150,0,1,0,'Defense',0,'US',[]]];
+
+_c = _c + ['M119_US_EP1'];
+_i = _i + [['','',2250,0,1,0,'Defense',0,'US',[]]];
+
+/* Defense Structures */
+_c = _c + ['US_WarfareBBarrier5x_EP1'];
+_i = _i + [['','',15,0,0,0,'Fortification',0,'US',[]]];
+
+_c = _c + ['US_WarfareBBarrier10x_EP1'];
+_i = _i + [['','',25,0,0,0,'Fortification',0,'US',[]]];
+
+_c = _c + ['US_WarfareBBarrier10xTall_EP1'];
+_i = _i + [['','',50,0,0,0,'Fortification',0,'US',[]]];
+
+_c = _c + ['Land_CamoNet_NATO_EP1'];
+_i = _i + [['','',35,0,0,0,'Strategic',0,'US',[]]];
+
+_c = _c + ['Land_CamoNetVar_NATO_EP1'];
+_i = _i + [['','',45,0,0,0,'Strategic',0,'US',[]]];
+
+_c = _c + ['Land_CamoNetB_NATO_EP1'];
+_i = _i + [['','',55,0,0,0,'Strategic',0,'US',[]]];
+
+_c = _c + ['USOrdnanceBox_EP1'];
+_i = _i + [['','',850,0,0,0,'Ammo',0,'US',[]]];
+
+_c = _c + ['USVehicleBox_EP1'];
+_i = _i + [['','',1200,0,0,0,'Ammo',0,'US',[]]];
+
+_c = _c + ['USBasicAmmunitionBox_EP1'];
+_i = _i + [['','',1950,0,0,0,'Ammo',0,'US',[]]];
+
+_c = _c + ['USBasicWeapons_EP1'];
+_i = _i + [['','',2975,0,0,0,'Ammo',0,'US',[]]];
+
+_c = _c + ['USLaunchers_EP1'];
+_i = _i + [['','',6250,0,0,0,'Ammo',0,'US',[]]];
+
+_c = _c + ['USSpecialWeapons_EP1'];
+_i = _i + [['','',7200,0,0,0,'Ammo',0,'US',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_US: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_US: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_US: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core/Core_USMC.sqf b/Common/Config/Core/Core_USMC.sqf
new file mode 100644
index 0000000..8009423
--- /dev/null
+++ b/Common/Config/Core/Core_USMC.sqf
@@ -0,0 +1,254 @@
+/* USMC Configuration */
+private ["_c","_get","_i","_p"];
+
+_c = [];
+_i = [];
+
+/* Infantry */
+_c = _c + ['USMC_Soldier'];
+_i = _i + [['','',150,4,-1,0,0,0.83,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier2'];
+_i = _i + [['','',125,4,-1,0,0,0.79,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_LAT'];
+_i = _i + [['','',225,5,-1,0,0,0.84,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_AT'];
+_i = _i + [['','',350,5,-1,2,0,0.86,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_HAT'];
+_i = _i + [['','',800,6,-1,3,0,0.88,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_AA'];
+_i = _i + [['','',400,6,-1,2,0,0.87,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_AR'];
+_i = _i + [['','',210,5,-1,1,0,0.84,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_MG'];
+_i = _i + [['','',220,5,-1,0,0,0.85,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_GL'];
+_i = _i + [['','',160,5,-1,0,0,0.83,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierS_Sniper'];
+_i = _i + [['','',320,6,-1,2,0,0.88,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierM_Marksman'];
+_i = _i + [['','',350,6,-1,2,0,0.9,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierS_SniperH'];
+_i = _i + [['','',400,6,-1,3,0,0.92,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_Medic'];
+_i = _i + [['','',190,4,-1,0,0,0.85,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierS_Engineer'];
+_i = _i + [['','',225,5,-1,0,0,0.83,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierS'];
+_i = _i + [['','',300,7,-1,1,0,0.88,'USMC',[]]];
+
+_c = _c + ['USMC_SoldierS_Spotter'];
+_i = _i + [['','',320,6,-1,3,0,0.89,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_Crew'];
+_i = _i + [['','',120,4,-1,0,0,0.81,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_Pilot'];
+_i = _i + [['','',120,4,-1,0,0,0.8,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_TL'];
+_i = _i + [['','',240,5,-1,1,0,0.83,'USMC',[]]];
+
+_c = _c + ['USMC_Soldier_SL'];
+_i = _i + [['','',220,5,-1,2,0,0.92,'USMC',[]]];
+
+/* Light Vehicles */
+_c = _c + ['MMT_USMC'];
+_i = _i + [['','',50,10,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['M1030'];
+_i = _i + [['','',150,12,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV'];
+_i = _i + [['','',300,15,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['Zodiac'];
+_i = _i + [['','',225,17,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_M2'];
+_i = _i + [['','',700,18,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_Armored'];
+_i = _i + [['','',750,20,-2,1,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_MK19'];
+_i = _i + [['','',900,22,-2,1,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_TOW'];
+_i = _i + [['','',1450,20,-2,2,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_Avenger'];
+_i = _i + [['','',1750,25,-2,3,1,0,'USMC',[]]];
+
+_c = _c + ['HMMWV_Ambulance'];
+_i = _i + [['','',725,22,-2,2,1,0,'USMC',[]]];
+
+_c = _c + ['MTVR'];
+_i = _i + [['','',400,20,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['WarfareSalvageTruck_USMC'];
+_i = _i + [['','',450,21,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['MtvrRepair'];
+_i = _i + [['','',525,22,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['WarfareReammoTruck_USMC'];
+_i = _i + [['','',550,22,-2,1,1,0,'USMC',[]]];
+
+_c = _c + ['MtvrRefuel'];
+_i = _i + [['','',500,22,-2,1,1,0,'USMC',[]]];
+
+_c = _c + ['WarfareSupplyTruck_USMC'];
+_i = _i + [['','',550,25,-2,0,1,0,'USMC',[]]];
+
+_c = _c + ['RHIB'];
+_i = _i + [['','',850,25,-2,1,1,0,'USMC',[]]];
+
+_c = _c + ['RHIB2Turret'];
+_i = _i + [['','',1250,27,-2,2,1,0,'USMC',[]]];
+
+_c = _c + ['LAV25'];
+_i = _i + [['','',1650,27,-2,3,1,0,'USMC',[]]];
+
+/* Heavy Vehicles */
+_c = _c + ['AAV'];
+_i = _i + [['','',2550,25,-2,0,2,0,'USMC',[]]];
+
+_c = _c + ['M1A1'];
+_i = _i + [['','',5650,40,-2,if (WF_A2_Vanilla) then {1} else {2},2,0,'USMC',[]]];
+
+_c = _c + ['MLRS'];
+_i = _i + [['','',5800,40,-2,3,2,0,'USMC',[]]];
+
+_c = _c + ['M1A2_TUSK_MG'];
+_i = _i + [['','',6950,40,-2,if (WF_A2_Vanilla) then {2} else {3},2,0,'USMC',[]]];
+
+/* Air Vehicles */
+_c = _c + ['MH60S'];
+_i = _i + [['','',15000,35,-2,0,3,0,'USMC',[]]];
+
+_c = _c + ['UH1Y'];
+_i = _i + [['','',25000,40,-2,1,3,0,'USMC',[]]];
+
+_c = _c + ['MV22'];
+_i = _i + [['','',25000,43,-2,1,3,0,'USMC',[]]];
+
+_c = _c + ['C130J'];
+_i = _i + [['','',26500,52,-2,1,3,0,'USMC',[]]];
+
+_c = _c + ['AH1Z'];
+_i = _i + [['','',86000,60,-2,2,3,0,'USMC',[]]];
+
+_c = _c + ['AH64D'];
+_i = _i + [['','',80000,60,-2,2,3,0,'USMC',[]]];
+
+_c = _c + ['F35B'];
+_i = _i + [['','',90000,62,-2,3,3,0,'USMC',[]]];
+
+_c = _c + ['AV8B'];
+_i = _i + [['','',95000,65,-2,3,3,0,'USMC',[]]];
+
+_c = _c + ['AV8B2'];
+_i = _i + [['','',130000,65,-2,3,3,0,'USMC',[]]];
+
+_c = _c + ['A10'];
+_i = _i + [['','',100000,70,-2,3,3,0,'USMC',[]]];
+
+/* Special */
+_c = _c + ['MQ9PredatorB'];
+_i = _i + [['','',30000,35,2,2,3,0,'USMC',[]]];
+
+/* Static Defenses */
+_c = _c + ['USMC_WarfareBMGNest_M240'];
+_i = _i + [['','',300,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['M2HD_mini_TriPod'];
+_i = _i + [['','',200,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['M2StaticMG'];
+_i = _i + [['','',225,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['SearchLight'];
+_i = _i + [['','',125,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['MK19_TriPod'];
+_i = _i + [['','',700,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['TOW_TriPod'];
+_i = _i + [['','',800,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['Stinger_Pod'];
+_i = _i + [['','',850,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['M252'];
+_i = _i + [['','',1150,0,1,0,'Defense',0,'USMC',[]]];
+
+_c = _c + ['M119'];
+_i = _i + [['','',2250,0,1,0,'Defense',0,'USMC',[]]];
+
+/* Defense Structures */
+_c = _c + ['Land_CamoNet_NATO'];
+_i = _i + [['','',35,0,0,0,'Strategic',0,'USMC',[]]];
+
+_c = _c + ['Land_CamoNetVar_NATO'];
+_i = _i + [['','',45,0,0,0,'Strategic',0,'USMC',[]]];
+
+_c = _c + ['Land_CamoNetB_NATO'];
+_i = _i + [['','',55,0,0,0,'Strategic',0,'USMC',[]]];
+
+_c = _c + ['USOrdnanceBox'];
+_i = _i + [['','',850,0,0,0,'Ammo',0,'USMC',[]]];
+
+_c = _c + ['USVehicleBox'];
+_i = _i + [['','',1200,0,0,0,'Ammo',0,'USMC',[]]];
+
+_c = _c + ['USBasicAmmunitionBox'];
+_i = _i + [['','',1950,0,0,0,'Ammo',0,'USMC',[]]];
+
+_c = _c + ['USBasicWeaponsBox'];
+_i = _i + [['','',2975,0,0,0,'Ammo',0,'USMC',[]]];
+
+_c = _c + ['USLaunchersBox'];
+_i = _i + [['','',6250,0,0,0,'Ammo',0,'USMC',[]]];
+
+_c = _c + ['USSpecialWeaponsBox'];
+_i = _i + [['','',7200,0,0,0,'Ammo',0,'USMC',[]]];
+
+for '_z' from 0 to (count _c)-1 do {
+ if (isClass (configFile >> 'CfgVehicles' >> (_c select _z))) then {
+ _get = (_c select _z) Call GetNamespace;
+ if (isNil '_get') then {
+ if ((_i select _z) select 0 == '') then {(_i select _z) set [0, [_c select _z,'displayName'] Call GetConfigInfo]};
+ if (typeName ((_i select _z) select 4) == 'SCALAR') then {
+ if (((_i select _z) select 4) == -2) then {
+ _ret = (_c select _z) Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleCrewSlot.sqf";
+ (_i select _z) set [4, _ret select 0];
+ (_i select _z) set [9, _ret select 1];
+ };
+ };
+ if (WF_Debug) then {(_i select _z) set [3,1]};
+ _p = if ((_c select _z) isKindOf 'Man') then {'portrait'} else {'picture'};
+ (_i select _z) set [1, [_c select _z,_p] Call GetConfigInfo];
+ [_c select _z,_i select _z] Call SetNamespace;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_USMC: Duplicated Element found '%1'",(_c select _z),diag_frameno,diag_tickTime];
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Core_USMC: Element '%1' is not a valid class.",(_c select _z),diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_USMC: Initialization (%1 Elements) - [Done]",count _c,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Arrowhead/Artillery_TKA.sqf b/Common/Config/Core_Artillery/Arrowhead/Artillery_TKA.sqf
new file mode 100644
index 0000000..430c73c
--- /dev/null
+++ b/Common/Config/Core_Artillery/Arrowhead/Artillery_TKA.sqf
@@ -0,0 +1,43 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_EAST_ARTILLERY_DESC',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_NAMES',
+ [
+ ['D30_TK_EP1'],
+ ['2b14_82mm_TK_EP1'],
+ ['GRAD_TK_EP1']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_WEAPONS',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMOS',
+ [
+ ['Sh_122_HE','Sh_122_WP','Sh_122_SADARM','Sh_122_LASER','Sh_122_SMOKE','Sh_122_ILLUM'],
+ ['Sh_82_HE','Sh_82_WP','Sh_82_ILLUM'],
+ ['R_GRAD']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['30Rnd_122mmWP_D30','30Rnd_122mmSADARM_D30','30Rnd_122mmLASER_D30','30Rnd_122mmSMOKE_D30','30Rnd_122mmILLUM_D30'],
+ ['8Rnd_82mmWP_2B14','8Rnd_82mmILLUM_2B14'],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MINRANGES',[1000,500,800],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_BURST',[10,4,10],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_LASER',['Sh_122_LASER'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_SADARM',['Sh_122_SADARM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_ILLUMN',['Sh_122_ILLUM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DEPLOY_SMOKE',['Sh_122_WP','Sh_122_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Arrowhead/Artillery_US.sqf b/Common/Config/Core_Artillery/Arrowhead/Artillery_US.sqf
new file mode 100644
index 0000000..6543534
--- /dev/null
+++ b/Common/Config/Core_Artillery/Arrowhead/Artillery_US.sqf
@@ -0,0 +1,47 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_WEST_ARTILLERY_DESC',['M119','M252','MLRS','Stryker MC'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_NAMES',
+ [
+ ['M119_US_EP1'],
+ ['M252_US_EP1'],
+ ['MLRS_DES_EP1'],
+ ['M1129_MC_EP1']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_WEAPONS',['M119','M252','MLRS','M120'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMOS',
+ [
+ ['Sh_105_HE','Sh_105_WP','Sh_105_SADARM','Sh_105_LASER','Sh_105_SMOKE','Sh_105_ILLUM'],
+ ['Sh_81_HE','Sh_81_WP','Sh_81_ILLUM'],
+ ['R_MLRS'],
+ ['120mmHE_M120']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['30Rnd_105mmWP_M119','30Rnd_105mmSADARM_M119','30Rnd_105mmLASER_M119','30Rnd_105mmSMOKE_M119','30Rnd_105mmILLUM_M119'],
+ ['8Rnd_81mmWP_M252','8Rnd_81mmILLUM_M252'],
+ [],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ [],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MINRANGES',[1000,500,1200,550],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange,2150*_maxRange],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_RELOADTIME',[7,4,2,4],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_BURST',[10,4,6,6],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_VELOCITIES',[500,475,550,475],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_DISPERSIONS',[50,60,40,55],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_LASER',['Sh_105_LASER'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_SADARM',['Sh_105_SADARM'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_ILLUMN',['Sh_105_ILLUM'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_DEPLOY_SMOKE',['Sh_105_WP','Sh_105_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/CombinedOps/Artillery_RU.sqf b/Common/Config/Core_Artillery/CombinedOps/Artillery_RU.sqf
new file mode 100644
index 0000000..d23a09e
--- /dev/null
+++ b/Common/Config/Core_Artillery/CombinedOps/Artillery_RU.sqf
@@ -0,0 +1,43 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_EAST_ARTILLERY_DESC',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_NAMES',
+ [
+ ['D30_TK_EP1','D30_RU'],
+ ['2b14_82mm_TK_EP1','2b14_82mm'],
+ ['GRAD_RU','GRAD_TK_EP1']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_WEAPONS',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMOS',
+ [
+ ['Sh_122_HE','Sh_122_WP','Sh_122_SADARM','Sh_122_LASER','Sh_122_SMOKE','Sh_122_ILLUM'],
+ ['Sh_82_HE','Sh_82_WP','Sh_82_ILLUM'],
+ ['R_GRAD']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['30Rnd_122mmWP_D30','30Rnd_122mmSADARM_D30','30Rnd_122mmLASER_D30','30Rnd_122mmSMOKE_D30','30Rnd_122mmILLUM_D30'],
+ ['8Rnd_82mmWP_2B14','8Rnd_82mmILLUM_2B14'],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MINRANGES',[1000,500,800],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_BURST',[10,4,10],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_LASER',['Sh_122_LASER'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_SADARM',['Sh_122_SADARM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_ILLUMN',['Sh_122_ILLUM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DEPLOY_SMOKE',['Sh_122_WP','Sh_122_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/CombinedOps/Artillery_US.sqf b/Common/Config/Core_Artillery/CombinedOps/Artillery_US.sqf
new file mode 100644
index 0000000..f3bab35
--- /dev/null
+++ b/Common/Config/Core_Artillery/CombinedOps/Artillery_US.sqf
@@ -0,0 +1,47 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_WEST_ARTILLERY_DESC',['M119','M252','MLRS','Stryker MC'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_NAMES',
+ [
+ ['M119_US_EP1','M119'],
+ ['M252_US_EP1','M252'],
+ ['MLRS','MLRS_DES_EP1'],
+ ['M1129_MC_EP1']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_WEAPONS',['M119','M252','MLRS','M120'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMOS',
+ [
+ ['Sh_105_HE','Sh_105_WP','Sh_105_SADARM','Sh_105_LASER','Sh_105_SMOKE','Sh_105_ILLUM'],
+ ['Sh_81_HE','Sh_81_WP','Sh_81_ILLUM'],
+ ['R_MLRS'],
+ ['120mmHE_M120']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['30Rnd_105mmWP_M119','30Rnd_105mmSADARM_M119','30Rnd_105mmLASER_M119','30Rnd_105mmSMOKE_M119','30Rnd_105mmILLUM_M119'],
+ ['8Rnd_81mmWP_M252','8Rnd_81mmILLUM_M252'],
+ [],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ [],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MINRANGES',[1000,500,1200,550],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange,2150*_maxRange],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_RELOADTIME',[7,4,2,4],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_BURST',[10,4,6,6],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_VELOCITIES',[500,475,550,475],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_DISPERSIONS',[50,60,40,55],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_LASER',['Sh_105_LASER'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_SADARM',['Sh_105_SADARM'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMO_ILLUMN',['Sh_105_ILLUM'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_DEPLOY_SMOKE',['Sh_105_WP','Sh_105_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Vanilla/Artillery_CDF.sqf b/Common/Config/Core_Artillery/Vanilla/Artillery_CDF.sqf
new file mode 100644
index 0000000..67d3390
--- /dev/null
+++ b/Common/Config/Core_Artillery/Vanilla/Artillery_CDF.sqf
@@ -0,0 +1,43 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_WEST_ARTILLERY_DESC',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_NAMES',
+ [
+ ['D30_CDF'],
+ ['2b14_82mm_CDF'],
+ ['GRAD_CDF']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_WEAPONS',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_AMMOS',
+ [
+ ['ARTY_Sh_122_HE','Sh_122_HE','ARTY_Sh_122_WP','ARTY_Sh_122_SADARM','ARTY_Sh_122_LASER','ARTY_Sh_122_SMOKE','ARTY_Sh_122_ILLUM'],
+ ['ARTY_Sh_82_HE','Sh_82_HE','ARTY_Sh_82_WP','ARTY_Sh_82_ILLUM'],
+ ['ARTY_R_227mm_HE_Rocket','R_GRAD']
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['ARTY_30Rnd_122mmWP_D30','ARTY_30Rnd_122mmSADARM_D30','ARTY_30Rnd_122mmLASER_D30','ARTY_30Rnd_122mmSMOKE_D30','ARTY_30Rnd_122mmILLUM_D30'],
+ ['ARTY_8Rnd_82mmWP_2B14','ARTY_8Rnd_82mmILLUM_2B14'],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MINRANGES',[1000,500,800],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_BURST',[10,4,10],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+['WFBE_WEST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_LASER',['ARTY_Sh_122_LASER'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_SADARM',['ARTY_Sh_122_SADARM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_ILLUMN',['ARTY_Sh_122_ILLUM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DEPLOY_SMOKE',['ARTY_Sh_122_WP','ARTY_Sh_122_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Vanilla/Artillery_INS.sqf b/Common/Config/Core_Artillery/Vanilla/Artillery_INS.sqf
new file mode 100644
index 0000000..0e20921
--- /dev/null
+++ b/Common/Config/Core_Artillery/Vanilla/Artillery_INS.sqf
@@ -0,0 +1,43 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_EAST_ARTILLERY_DESC',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_NAMES',
+ [
+ ['D30_Ins'],
+ ['2b14_82mm_INS'],
+ ['GRAD_INS']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_WEAPONS',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMOS',
+ [
+ ['ARTY_Sh_122_HE','Sh_122_HE','ARTY_Sh_122_WP','ARTY_Sh_122_SADARM','ARTY_Sh_122_LASER','ARTY_Sh_122_SMOKE','ARTY_Sh_122_ILLUM'],
+ ['ARTY_Sh_82_HE','Sh_82_HE','ARTY_Sh_82_WP','ARTY_Sh_82_ILLUM'],
+ ['ARTY_R_227mm_HE_Rocket','R_GRAD']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['ARTY_30Rnd_122mmWP_D30','ARTY_30Rnd_122mmSADARM_D30','ARTY_30Rnd_122mmLASER_D30','ARTY_30Rnd_122mmSMOKE_D30','ARTY_30Rnd_122mmILLUM_D30'],
+ ['ARTY_8Rnd_82mmWP_2B14','ARTY_8Rnd_82mmILLUM_2B14'],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MINRANGES',[1000,500,800],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_BURST',[10,4,10],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_LASER',['ARTY_Sh_122_LASER'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_SADARM',['ARTY_Sh_122_SADARM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_ILLUMN',['ARTY_Sh_122_ILLUM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DEPLOY_SMOKE',['ARTY_Sh_122_WP','ARTY_Sh_122_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Vanilla/Artillery_RU.sqf b/Common/Config/Core_Artillery/Vanilla/Artillery_RU.sqf
new file mode 100644
index 0000000..c58738d
--- /dev/null
+++ b/Common/Config/Core_Artillery/Vanilla/Artillery_RU.sqf
@@ -0,0 +1,43 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+['WFBE_EAST_ARTILLERY_DESC',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_NAMES',
+ [
+ ['D30_RU'],
+ ['2b14_82mm'],
+ ['GRAD_RU']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_WEAPONS',['D30','2B14','GRAD'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMOS',
+ [
+ ['ARTY_Sh_122_HE','Sh_122_HE','ARTY_Sh_122_WP','ARTY_Sh_122_SADARM','ARTY_Sh_122_LASER','ARTY_Sh_122_SMOKE','ARTY_Sh_122_ILLUM'],
+ ['ARTY_Sh_82_HE','Sh_82_HE','ARTY_Sh_82_WP','ARTY_Sh_82_ILLUM'],
+ ['ARTY_R_227mm_HE_Rocket','R_GRAD']
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['ARTY_30Rnd_122mmWP_D30','ARTY_30Rnd_122mmSADARM_D30','ARTY_30Rnd_122mmLASER_D30','ARTY_30Rnd_122mmSMOKE_D30','ARTY_30Rnd_122mmILLUM_D30'],
+ ['ARTY_8Rnd_82mmWP_2B14','ARTY_8Rnd_82mmILLUM_2B14'],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MINRANGES',[1000,500,800],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_BURST',[10,4,10],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_LASER',['ARTY_Sh_122_LASER'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_SADARM',['ARTY_Sh_122_SADARM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_AMMO_ILLUMN',['ARTY_Sh_122_ILLUM'],true] Call SetNamespace;
+['WFBE_EAST_ARTILLERY_DEPLOY_SMOKE',['ARTY_Sh_122_WP','ARTY_Sh_122_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Artillery/Vanilla/Artillery_USMC.sqf b/Common/Config/Core_Artillery/Vanilla/Artillery_USMC.sqf
new file mode 100644
index 0000000..f5830d0
--- /dev/null
+++ b/Common/Config/Core_Artillery/Vanilla/Artillery_USMC.sqf
@@ -0,0 +1,59 @@
+Private ["_maxRange"];
+_maxRange = 'WFBE_ARTILLERYMAXRANGE' Call GetNamespace;
+
+//--- Label shown in the GUI.
+['WFBE_WEST_ARTILLERY_DESC',['M119','M252','MLRS'],true] Call SetNamespace;
+//--- Class name of the Artillery unit.
+['WFBE_WEST_ARTILLERY_NAMES',
+ [
+ ['M119'],
+ ['M252'],
+ ['MLRS']
+ ]
+,true] Call SetNamespace;
+//--- Artillery Weapon used to fire the shells.
+['WFBE_WEST_ARTILLERY_WEAPONS',['M119','M252','MLRS'],true] Call SetNamespace;
+//--- Compatible ammo.
+['WFBE_WEST_ARTILLERY_AMMOS',
+ [
+ ['ARTY_Sh_105_HE','Sh_105_HE','ARTY_Sh_105_WP','ARTY_Sh_105_SADARM','ARTY_Sh_105_LASER','ARTY_Sh_105_SMOKE','ARTY_Sh_105_ILLUM'],
+ ['ARTY_Sh_81_HE','Sh_81_HE','ARTY_Sh_81_WP','ARTY_Sh_81_ILLUM'],
+ ['ARTY_R_227mm_HE_Rocket','R_MLRS']
+ ]
+,true] Call SetNamespace;
+//--- Extended ammo.
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS',
+ [
+ ['ARTY_30Rnd_105mmWP_M119','ARTY_30Rnd_105mmSADARM_M119','ARTY_30Rnd_105mmLASER_M119','ARTY_30Rnd_105mmSMOKE_M119','ARTY_30Rnd_105mmILLUM_M119'],
+ ['ARTY_8Rnd_81mmWP_M252','ARTY_8Rnd_81mmILLUM_M252'],
+ []
+ ]
+,true] Call SetNamespace;
+//--- Upgrade level required for the extended ammo.
+['WFBE_WEST_ARTILLERY_EXTENDED_MAGS_UPGRD',
+ [
+ [2,3,3,1,1],
+ [2,1],
+ []
+ ]
+,true] Call SetNamespace;
+//--- Artillery Minimal fire distance.
+['WFBE_WEST_ARTILLERY_MINRANGES',[1000,500,1200],true] Call SetNamespace;
+//--- Artillery Maximal fire distance multiplied by the artillery range parameter.
+['WFBE_WEST_ARTILLERY_MAXRANGES',[2333*_maxRange,1833*_maxRange,3000*_maxRange],true] Call SetNamespace;
+//--- Artillery Reload time between each shot.
+['WFBE_WEST_ARTILLERY_RELOADTIME',[7,4,2],true] Call SetNamespace;
+//--- Amount of shells fired during a fire mission.
+['WFBE_WEST_ARTILLERY_BURST',[10,4,6],true] Call SetNamespace;
+//--- Velocity of the shell (note: try to keep it above 400 for a realistic result).
+['WFBE_WEST_ARTILLERY_VELOCITIES',[500,475,550],true] Call SetNamespace;
+//--- Shell land dispersion.
+['WFBE_WEST_ARTILLERY_DISPERSIONS',[50,60,40],true] Call SetNamespace;
+//--- Laser Guided Ammunitions.
+['WFBE_WEST_ARTILLERY_AMMO_LASER',['ARTY_Sh_105_LASER'],true] Call SetNamespace;
+//--- Search And Destroy Armor ammunition.
+['WFBE_WEST_ARTILLERY_AMMO_SADARM',['ARTY_Sh_105_SADARM'],true] Call SetNamespace;
+//--- Illum rounds.
+['WFBE_WEST_ARTILLERY_AMMO_ILLUMN',['ARTY_Sh_105_ILLUM'],true] Call SetNamespace;
+//--- Deploy smoke on impact if it's this type.
+['WFBE_WEST_ARTILLERY_DEPLOY_SMOKE',['ARTY_Sh_105_WP','ARTY_Sh_105_SMOKE'],true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/Arrowhead/Definition_US_TKA.sqf b/Common/Config/Core_Definition/Arrowhead/Definition_US_TKA.sqf
new file mode 100644
index 0000000..0fab77d
--- /dev/null
+++ b/Common/Config/Core_Definition/Arrowhead/Definition_US_TKA.sqf
@@ -0,0 +1,27 @@
+/* Arrowhead - US versus Takistan Army */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'Arrowhead';
+WFBE_V_West_Faction = 'US';
+WFBE_V_East_UnitsRootVersion = 'Arrowhead';
+WFBE_V_East_Faction = 'TKA';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'Arrowhead';
+WFBE_V_West_Loadout = 'US';
+WFBE_V_East_LoadoutRootVersion = 'Arrowhead';
+WFBE_V_East_Loadout = 'TKA';
+/* Squads Core */
+WFBE_V_West_SquadsRootVersion = 'Arrowhead';
+WFBE_V_West_SquadsFaction = 'US';
+WFBE_V_East_SquadsRootVersion = 'Arrowhead';
+WFBE_V_East_SquadsFaction = 'TKA';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'Arrowhead';
+WFBE_V_West_StructuresFaction = 'US';
+WFBE_V_East_StructuresRootVersion = 'Arrowhead';
+WFBE_V_East_StructuresFaction = 'TKA';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'Arrowhead';
+WFBE_V_West_ArtilleryFaction = 'US';
+WFBE_V_East_ArtilleryRootVersion = 'Arrowhead';
+WFBE_V_East_ArtilleryFaction = 'TKA'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/CombinedOps/Definition_US_INS.sqf b/Common/Config/Core_Definition/CombinedOps/Definition_US_INS.sqf
new file mode 100644
index 0000000..d5cc3e5
--- /dev/null
+++ b/Common/Config/Core_Definition/CombinedOps/Definition_US_INS.sqf
@@ -0,0 +1,32 @@
+/* Arrowhead - US versus Insurgents */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'CombinedOps';
+WFBE_V_West_Faction = 'US';
+WFBE_V_East_UnitsRootVersion = 'Vanilla';
+WFBE_V_East_Faction = 'INS';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'CombinedOps';
+WFBE_V_West_Loadout = 'US';
+WFBE_V_East_LoadoutRootVersion = 'Vanilla';
+WFBE_V_East_Loadout = 'INS';
+/* Squads Core */
+if (WF_Camo) then {
+ WFBE_V_West_SquadsRootVersion = 'CombinedOps';
+ WFBE_V_West_SquadsFaction = 'US_Camo';
+} else {
+ WFBE_V_West_SquadsRootVersion = 'Arrowhead';
+ WFBE_V_West_SquadsFaction = 'US';
+};
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'INS';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'CombinedOps';
+WFBE_V_West_StructuresFaction = 'US';
+WFBE_V_East_StructuresRootVersion = 'Vanilla';
+WFBE_V_East_StructuresFaction = 'INS';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'CombinedOps';
+WFBE_V_West_ArtilleryFaction = 'US';
+WFBE_V_East_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_East_ArtilleryFaction = 'INS'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/CombinedOps/Definition_US_RU.sqf b/Common/Config/Core_Definition/CombinedOps/Definition_US_RU.sqf
new file mode 100644
index 0000000..a900b46
--- /dev/null
+++ b/Common/Config/Core_Definition/CombinedOps/Definition_US_RU.sqf
@@ -0,0 +1,32 @@
+/* Arrowhead - US versus Russians */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'CombinedOps';
+WFBE_V_West_Faction = 'US';
+WFBE_V_East_UnitsRootVersion = 'CombinedOps';
+WFBE_V_East_Faction = 'RU';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'CombinedOps';
+WFBE_V_West_Loadout = 'US';
+WFBE_V_East_LoadoutRootVersion = 'CombinedOps';
+WFBE_V_East_Loadout = 'RU';
+/* Squads Core */
+if (WF_Camo) then {
+ WFBE_V_West_SquadsRootVersion = 'CombinedOps';
+ WFBE_V_West_SquadsFaction = 'US_Camo';
+} else {
+ WFBE_V_West_SquadsRootVersion = 'Arrowhead';
+ WFBE_V_West_SquadsFaction = 'US';
+};
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'RU';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'CombinedOps';
+WFBE_V_West_StructuresFaction = 'US';
+WFBE_V_East_StructuresRootVersion = 'CombinedOps';
+WFBE_V_East_StructuresFaction = 'TKA';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'CombinedOps';
+WFBE_V_West_ArtilleryFaction = 'US';
+WFBE_V_East_ArtilleryRootVersion = 'CombinedOps';
+WFBE_V_East_ArtilleryFaction = 'RU'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/Vanilla/Definition_CDF_INS.sqf b/Common/Config/Core_Definition/Vanilla/Definition_CDF_INS.sqf
new file mode 100644
index 0000000..cc8fe56
--- /dev/null
+++ b/Common/Config/Core_Definition/Vanilla/Definition_CDF_INS.sqf
@@ -0,0 +1,27 @@
+/* Vanilla - CDF versus Insurgents */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'Vanilla';
+WFBE_V_West_Faction = 'CDF';
+WFBE_V_East_UnitsRootVersion = 'Vanilla';
+WFBE_V_East_Faction = 'INS';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'Vanilla';
+WFBE_V_West_Loadout = 'CDF';
+WFBE_V_East_LoadoutRootVersion = 'Vanilla';
+WFBE_V_East_Loadout = 'INS';
+/* Squads Core */
+WFBE_V_West_SquadsRootVersion = 'Vanilla';
+WFBE_V_West_SquadsFaction = 'CDF';
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'INS';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = if (WF_A2_Vanilla) then {'Vanilla'} else {'CombinedOps'};
+WFBE_V_West_StructuresFaction = 'CDF';
+WFBE_V_East_StructuresRootVersion = if (WF_A2_Vanilla) then {'Vanilla'} else {'CombinedOps'};
+WFBE_V_East_StructuresFaction = 'INS';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_West_ArtilleryFaction = 'CDF';
+WFBE_V_East_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_East_ArtilleryFaction = 'INS'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/Vanilla/Definition_CDF_RU.sqf b/Common/Config/Core_Definition/Vanilla/Definition_CDF_RU.sqf
new file mode 100644
index 0000000..5c6afd1
--- /dev/null
+++ b/Common/Config/Core_Definition/Vanilla/Definition_CDF_RU.sqf
@@ -0,0 +1,27 @@
+/* Vanilla - CDF versus Russians */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'Vanilla';
+WFBE_V_West_Faction = 'CDF';
+WFBE_V_East_UnitsRootVersion = 'Vanilla';
+WFBE_V_East_Faction = 'RU';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'Vanilla';
+WFBE_V_West_Loadout = 'CDF';
+WFBE_V_East_LoadoutRootVersion = 'Vanilla';
+WFBE_V_East_Loadout = 'RU';
+/* Squads Core */
+WFBE_V_West_SquadsRootVersion = 'Vanilla';
+WFBE_V_West_SquadsFaction = 'CDF';
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'RU';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'Vanilla';
+WFBE_V_West_StructuresFaction = 'CDF';
+WFBE_V_East_StructuresRootVersion = 'Vanilla';
+WFBE_V_East_StructuresFaction = 'RU';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_West_ArtilleryFaction = 'CDF';
+WFBE_V_East_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_East_ArtilleryFaction = 'RU'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/Vanilla/Definition_USMC_INS.sqf b/Common/Config/Core_Definition/Vanilla/Definition_USMC_INS.sqf
new file mode 100644
index 0000000..4d311fd
--- /dev/null
+++ b/Common/Config/Core_Definition/Vanilla/Definition_USMC_INS.sqf
@@ -0,0 +1,27 @@
+/* Vanilla - USMC versus Insurgents */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'Vanilla';
+WFBE_V_West_Faction = 'USMC';
+WFBE_V_East_UnitsRootVersion = 'Vanilla';
+WFBE_V_East_Faction = 'INS';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'Vanilla';
+WFBE_V_West_Loadout = 'USMC';
+WFBE_V_East_LoadoutRootVersion = 'Vanilla';
+WFBE_V_East_Loadout = 'INS';
+/* Squads Core */
+WFBE_V_West_SquadsRootVersion = 'Vanilla';
+WFBE_V_West_SquadsFaction = 'USMC';
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'INS';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'Vanilla';
+WFBE_V_West_StructuresFaction = 'USMC';
+WFBE_V_East_StructuresRootVersion = 'Vanilla';
+WFBE_V_East_StructuresFaction = 'INS';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_West_ArtilleryFaction = 'USMC';
+WFBE_V_East_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_East_ArtilleryFaction = 'INS'; \ No newline at end of file
diff --git a/Common/Config/Core_Definition/Vanilla/Definition_USMC_RU.sqf b/Common/Config/Core_Definition/Vanilla/Definition_USMC_RU.sqf
new file mode 100644
index 0000000..d633884
--- /dev/null
+++ b/Common/Config/Core_Definition/Vanilla/Definition_USMC_RU.sqf
@@ -0,0 +1,27 @@
+/* Vanilla - USMC versus Russians */
+
+/* Units Core */
+WFBE_V_West_UnitsRootVersion = 'Vanilla';
+WFBE_V_West_Faction = 'USMC';
+WFBE_V_East_UnitsRootVersion = 'Vanilla';
+WFBE_V_East_Faction = 'RU';
+/* Loadout Core */
+WFBE_V_West_LoadoutRootVersion = 'Vanilla';
+WFBE_V_West_Loadout = 'USMC';
+WFBE_V_East_LoadoutRootVersion = 'Vanilla';
+WFBE_V_East_Loadout = 'RU';
+/* Squads Core */
+WFBE_V_West_SquadsRootVersion = 'Vanilla';
+WFBE_V_West_SquadsFaction = 'USMC';
+WFBE_V_East_SquadsRootVersion = 'Vanilla';
+WFBE_V_East_SquadsFaction = 'RU';
+/* Structures Core */
+WFBE_V_West_StructuresRootVersion = 'Vanilla';
+WFBE_V_West_StructuresFaction = 'USMC';
+WFBE_V_East_StructuresRootVersion = 'Vanilla';
+WFBE_V_East_StructuresFaction = 'RU';
+/* Artillery Core */
+WFBE_V_West_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_West_ArtilleryFaction = 'USMC';
+WFBE_V_East_ArtilleryRootVersion = 'Vanilla';
+WFBE_V_East_ArtilleryFaction = 'RU'; \ No newline at end of file
diff --git a/Common/Config/Core_Gear/Core_ACE_G.sqf b/Common/Config/Core_Gear/Core_ACE_G.sqf
new file mode 100644
index 0000000..a31c41a
--- /dev/null
+++ b/Common/Config/Core_Gear/Core_ACE_G.sqf
@@ -0,0 +1,407 @@
+Private ['_config','_element','_get','_i','_info','_prefix','_proceed','_u','_z'];
+
+_u = [];
+_i = [];
+
+/* _i = _i + [[label, picture, config, belong to type, cost, upgrade level, allowed in camps, belong to the handgun pool, magazines, magazine space, allow two weapons]]*/
+
+/* Magazines - West */
+_u = _u + ['ACE_10Rnd_127x99_T_m107'];
+_i = _i + [['','','CfgMagazines','primary',18,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_10Rnd_127x99_Raufoss_m107'];
+_i = _i + [['','','CfgMagazines','primary',23,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_5Rnd_25x59_HEDP_Barrett'];
+_i = _i + [['','','CfgMagazines','primary',33,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_5Rnd_127x99_B_TAC50'];
+_i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_5Rnd_127x99_S_TAC50'];
+_i = _i + [['','','CfgMagazines','primary',22,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_5Rnd_127x99_T_TAC50'];
+_i = _i + [['','','CfgMagazines','primary',14,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_20Rnd_762x51_B_HK417'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_20Rnd_762x51_T_HK417'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_30Rnd_556x45_T_G36'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_30Rnd_556x45_T_Stanag'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_200Rnd_556x45_T_M249'];
+_i = _i + [['','','CfgMagazines','primary',15,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_100Rnd_556x45_T_M249'];
+_i = _i + [['','','CfgMagazines','primary',25,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_15Rnd_9x19_P226'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_15Rnd_9x19_P8'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_40Rnd_B_46x30_MP7'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_25Rnd_1143x23_B_UMP45'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_25Rnd_1143x23_S_UMP45'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_12Rnd_45ACP_USP'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_12Rnd_45ACP_USPSD'];
+_i = _i + [['','','CfgMagazines','sidearm',4,0,true,true,0,0,true]];
+
+/* Primary weapons - West */
+_u = _u + ['ACE_G36A2_Bipod_D'];
+_i = _i + [['','','CfgWeapons','',230,1,false,false,0,0,true]];
+
+_u = _u + ['ACE_G36A1_AG36A1_D'];
+_i = _i + [['','','CfgWeapons','',240,2,false,false,0,0,true]];
+
+_u = _u + ['ACE_M60'];
+_i = _i + [['','','CfgWeapons','',150,0,true,false,0,0,false]];
+
+_u = _u + ['ACE_M240L'];
+_i = _i + [['','','CfgWeapons','',165,0,true,false,0,0,false]];
+
+_u = _u + ['ACE_M240L_M145'];
+_i = _i + [['','','CfgWeapons','',175,0,true,false,0,0,false]];
+
+_u = _u + ['ACE_HK416_D10'];
+_i = _i + [['','','CfgWeapons','',100,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_AIM'];
+_i = _i + [['','','CfgWeapons','',110,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_COMPM3'];
+_i = _i + [['','','CfgWeapons','',115,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_COMPM3_SD'];
+_i = _i + [['','','CfgWeapons','',135,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_Holo'];
+_i = _i + [['','','CfgWeapons','',115,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_M320'];
+_i = _i + [['','','CfgWeapons','',140,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D10_SD'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14'];
+_i = _i + [['','','CfgWeapons','',100,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14_ACOG_PVS14'];
+_i = _i + [['','','CfgWeapons','',130,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14_COMPM3'];
+_i = _i + [['','','CfgWeapons','',115,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14_COMPM3_M320'];
+_i = _i + [['','','CfgWeapons','',140,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14_SD'];
+_i = _i + [['','','CfgWeapons','',120,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK416_D14_TWS'];
+_i = _i + [['','','CfgWeapons','',160,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK417_Eotech_4x'];
+_i = _i + [['','','CfgWeapons','',130,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK417_leupold'];
+_i = _i + [['','','CfgWeapons','',140,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK417_micro'];
+_i = _i + [['','','CfgWeapons','',115,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_HK417_Shortdot'];
+_i = _i + [['','','CfgWeapons','',145,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4'];
+_i = _i + [['','','CfgWeapons','',85,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_ACOG'];
+_i = _i + [['','','CfgWeapons','',95,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_Aim'];
+_i = _i + [['','','CfgWeapons','',95,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_AIM_GL'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_Eotech'];
+_i = _i + [['','','CfgWeapons','',95,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_Eotech_GL'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_GL'];
+_i = _i + [['','','CfgWeapons','',105,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4_RCO_GL'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_ACOG'];
+_i = _i + [['','','CfgWeapons','',155,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_ACOG_SD'];
+_i = _i + [['','','CfgWeapons','',165,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_AIM_GL'];
+_i = _i + [['','','CfgWeapons','',195,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_AIM_GL_SD'];
+_i = _i + [['','','CfgWeapons','',205,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_Aim_SD'];
+_i = _i + [['','','CfgWeapons','',185,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_Eotech'];
+_i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_GL'];
+_i = _i + [['','','CfgWeapons','',195,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_M4A1_GL_SD'];
+_i = _i + [['','','CfgWeapons','',205,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1'];
+_i = _i + [['','','CfgWeapons','',115,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_Aim'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_AIM_SD'];
+_i = _i + [['','','CfgWeapons','',135,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_Eotech'];
+_i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_Eotech_4x'];
+_i = _i + [['','','CfgWeapons','',135,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_GL'];
+_i = _i + [['','','CfgWeapons','',145,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_GL_13'];
+_i = _i + [['','','CfgWeapons','',135,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_GL_AIMPOINT'];
+_i = _i + [['','','CfgWeapons','',155,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_GL_EOTECH'];
+_i = _i + [['','','CfgWeapons','',155,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_GL_SD'];
+_i = _i + [['','','CfgWeapons','',155,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_RCO_GL'];
+_i = _i + [['','','CfgWeapons','',155,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_SD_9'];
+_i = _i + [['','','CfgWeapons','',125,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_SHORTDOT'];
+_i = _i + [['','','CfgWeapons','',145,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_SHORTDOT_SD'];
+_i = _i + [['','','CfgWeapons','',155,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SOC_M4A1_TWS'];
+_i = _i + [['','','CfgWeapons','',195,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SPAS12'];
+_i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_UMP45'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_UMP45_AIM'];
+_i = _i + [['','','CfgWeapons','',80,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_UMP45_AIM_SD'];
+_i = _i + [['','','CfgWeapons','',100,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_UMP45_SD'];
+_i = _i + [['','','CfgWeapons','',90,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_Mk12mod1'];
+_i = _i + [['','','CfgWeapons','',210,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_Mk12mod1_SD'];
+_i = _i + [['','','CfgWeapons','',220,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_MP5A4'];
+_i = _i + [['','','CfgWeapons','',50,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_MP5A5'];
+_i = _i + [['','','CfgWeapons','',60,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_MP5SD'];
+_i = _i + [['','','CfgWeapons','',80,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_MP7'];
+_i = _i + [['','','CfgWeapons','',90,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_MP7_RSAS'];
+_i = _i + [['','','CfgWeapons','',100,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_M109'];
+_i = _i + [['','','CfgWeapons','',510,3,false,false,0,0,false]];
+
+_u = _u + ['ACE_M110'];
+_i = _i + [['','','CfgWeapons','',300,1,false,false,0,0,false]];
+
+_u = _u + ['ACE_M110_SD'];
+_i = _i + [['','','CfgWeapons','',320,2,false,false,0,0,false]];
+
+_u = _u + ['ACE_TAC50'];
+_i = _i + [['','','CfgWeapons','',410,3,false,false,0,0,false]];
+
+_u = _u + ['ACE_TAC50_SD'];
+_i = _i + [['','','CfgWeapons','',470,3,false,false,0,0,false]];
+
+_u = _u + ['ACE_MG36_D'];
+_i = _i + [['','','CfgWeapons','',250,2,false,false,0,0,false]];
+
+/* Secondary weapons - West */
+_u = _u + ['ACE_M224TripodProxy'];
+_i = _i + [['','','CfgVehicles','',550,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_M224Proxy'];
+_i = _i + [['','','CfgVehicles','',40,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_VTAC_RUSH72_ACU'];
+_i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_BackPack_ACR_TT'];
+_i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_CharliePack_ACU'];
+_i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_CharliePack_ACU_Medic'];
+_i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+_u = _u + ['ACE_M252Proxy'];
+_i = _i + [['','','CfgVehicles','',750,1,false,false,0,0,false]];
+
+_u = _u + ['ACE_M252TripodProxy'];
+_i = _i + [['','','CfgVehicles','',40,1,false,false,0,0,false]];
+
+/* Pistols - West */
+_u = _u + ['ACE_USP'];
+_i = _i + [['','','CfgWeapons','',35,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_USPSD'];
+_i = _i + [['','','CfgWeapons','',45,2,true,false,0,0,true]];
+
+_u = _u + ['ACE_P226'];
+_i = _i + [['','','CfgWeapons','',30,1,true,false,0,0,true]];
+
+_u = _u + ['ACE_P8'];
+_i = _i + [['','','CfgWeapons','',20,0,true,false,0,0,true]];
+
+/* Misc - West */
+_u = _u + ['ACE_HuntIR_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',32,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_FlareIR_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['ACE_Earplugs'];
+_i = _i + [['','','CfgWeapons','Item',2,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_GlassesBalaklava'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_GlassesGasMask_US'];
+_i = _i + [['','','CfgWeapons','Item',15,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_GlassesTactical'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_GlassesLHD_glasses'];
+_i = _i + [['','','CfgWeapons','Item',10,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_HuntIR_monitor'];
+_i = _i + [['','','CfgWeapons','Item',30,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_Javelin_CLU'];
+_i = _i + [['','','CfgWeapons','Special',300,3,true,false,0,0,true]];
+
+_u = _u + ['ACE_SpottingScope'];
+_i = _i + [['','','CfgWeapons','Item',15,0,true,false,0,0,true]];
+
+_u = _u + ['ACE_Kestrel4500'];
+_i = _i + [['','','CfgWeapons','Item',25,0,true,false,0,0,true]];
+
+for '_z' from 0 to (count _u)-1 do {
+ _info = (_i select _z);
+ _element = (_u select _z);
+ _config = (_info select 2);
+
+ if (isClass (configFile >> _config >> _element)) then {
+ //--- The loadout has a prefix since we can have two elements with the same name but with different class.
+ _get = _element Call GetNamespace;
+ _proceed = false;
+ _prefix = "";
+
+ if (isNil '_get') then {
+ _proceed = true;
+ } else {
+ //--- Two elements can have the same name, like "Javelin(Weapon) >> Javelin (Magazine)", if two elements are found, we compare the class to see if they're already defined or not.
+ if ((_get select 2) == _config) then {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_ACE_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ } else {
+ //--- Is it a special class?
+ _get = (_element+'_W') Call GetNamespace;
+ if (isNil '_get') then {
+ _prefix = '_W';
+ _proceed = true;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_ACE_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ };
+ };
+ };
+
+ if (_proceed) then {
+ //--- A custom loadout displayName can be set.
+ if ((_info select 1) == '') then {_info set [0, [_element,'displayName',_config] Call GetConfigInfo]};
+ _info set [1, [_element,'picture',_config] Call GetConfigInfo];
+
+ if (_config == 'CfgWeapons') then {
+ //--- A custom loadout magazine can be set.
+ if (typeName (_info select 8) != 'ARRAY') then {
+ _info set [8, getArray (configFile >> _config >> _element >> 'magazines')];
+ };
+ };
+
+ //--- Set the magazine space.
+ if (_config == 'CfgMagazines') then {
+ if ((_info select 3) in ['CfgMagazines','primary','secondary','sidearm']) then {
+ _info set [9, ceil(getNumber(configFile >> _config >> _element >> 'type') / 256)];
+ };
+ };
+
+ [_element+_prefix,_info] Call SetNamespace;
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%3 | ticktime:%4] Core_ACE_G: Loadout Element '%1' with class '%2' is not a defined a class!",_element,_config,diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_ACE_G: Loadout Initialization (%1 Elements) - [Done]",count _u,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Gear/Core_Arrowhead_G.sqf b/Common/Config/Core_Gear/Core_Arrowhead_G.sqf
new file mode 100644
index 0000000..c946dbb
--- /dev/null
+++ b/Common/Config/Core_Gear/Core_Arrowhead_G.sqf
@@ -0,0 +1,801 @@
+private ["_config","_element","_get","_i","_info","_prefix","_proceed","_u"];
+
+_u = [];
+_i = [];
+
+/* _i = _i + [[label, picture, config, belong to type, cost, upgrade level, allowed in camps, belong to the handgun pool, magazines, magazine space, allow two weapons]]*/
+
+/* Magazines - West */
+_u = _u + ['5Rnd_762x51_M24'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_HE_M203'];
+_i = _i + [['','','CfgMagazines','primary',40,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_FlareWhite_M203'];
+_i = _i + [['','','CfgMagazines','primary',30,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_FlareGreen_M203'];
+_i = _i + [['','','CfgMagazines','primary',30,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_FlareRed_M203'];
+_i = _i + [['','','CfgMagazines','primary',30,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_FlareYellow_M203'];
+_i = _i + [['','','CfgMagazines','primary',30,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_Smoke_M203'];
+_i = _i + [['','','CfgMagazines','primary',35,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_SmokeRed_M203'];
+_i = _i + [['','','CfgMagazines','primary',35,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_SmokeGreen_M203'];
+_i = _i + [['','','CfgMagazines','primary',35,0,true,false,0,0,true]];
+
+_u = _u + ['6Rnd_SmokeYellow_M203'];
+_i = _i + [['','','CfgMagazines','primary',35,0,true,false,0,0,true]];
+
+_u = _u + ['8Rnd_B_Beneli_Pellets'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['10Rnd_127x99_m107'];
+_i = _i + [['','','CfgMagazines','primary',18,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_762x51_B_SCAR'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_762x51_DMR'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_762x51_SB_SCAR'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_556x45_Stanag'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_G36'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_G36SD'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_Stanag'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_StanagSD'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_556x45_BetaCMag'];
+_i = _i + [['','','CfgMagazines','primary',16,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_556x45_M249'];
+_i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_762x51_M240'];
+_i = _i + [['','','CfgMagazines','primary',14,0,true,false,0,0,true]];
+
+_u = _u + ['200Rnd_556x45_M249'];
+_i = _i + [['','','CfgMagazines','primary',24,0,true,false,0,0,true]];
+
+_u = _u + ['Laserbatteries'];
+_i = _i + [['','','CfgMagazines','secondary',20,3,true,false,0,0,true]];
+
+_u = _u + ['Javelin'];
+_i = _i + [['','','CfgMagazines','secondary',290,3,false,false,0,0,true]];
+
+_u = _u + ['M136'];
+_i = _i + [['','','CfgMagazines','secondary',50,0,true,false,0,0,true]];
+
+_u = _u + ['MAAWS_HEAT'];
+_i = _i + [['','','CfgMagazines','secondary',250,3,false,false,0,0,true]];
+
+_u = _u + ['MAAWS_HEDP'];
+_i = _i + [['','','CfgMagazines','secondary',275,2,false,false,0,0,true]];
+
+_u = _u + ['Stinger'];
+_i = _i + [['','','CfgMagazines','secondary',125,2,false,false,0,0,true]];
+
+_u = _u + ['7Rnd_45ACP_1911'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['15Rnd_9x19_M9'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['15Rnd_9x19_M9SD'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+_u = _u + ['17Rnd_9x19_glock17'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_Battery_Rangefinder'];
+ _i = _i + [['','','CfgMagazines','primary',2,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HuntIR_M203'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',50,2,true,true,0,0,true]];
+};
+
+/* Magazines - East */
+_u = _u + ['5Rnd_127x108_KSVK'];
+_i = _i + [['','','CfgMagazines','primary',11,0,true,false,0,0,true]];
+
+_u = _u + ['8Rnd_B_Saiga12_Pellets'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['10Rnd_762x54_SVD'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['10x_303'];
+_i = _i + [['','','CfgMagazines','primary',2,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_762x51_FNFAL'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_9x39_SP5_VSS'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_545x39_AK'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_545x39_AKSD'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_762x39_AK47'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_762x39_SA58'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['75Rnd_545x39_RPK'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_762x54_PK'];
+_i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+_u = _u + ['AT13'];
+_i = _i + [['','','CfgMagazines','secondary',280,3,false,false,0,0,true]];
+
+_u = _u + ['Dragon_EP1'];
+_i = _i + [['','','CfgMagazines','secondary',155,1,false,false,0,0,true]];
+
+_u = _u + ['Igla'];
+_i = _i + [['','','CfgMagazines','secondary',110,2,false,false,0,0,true]];
+
+_u = _u + ['OG7'];
+_i = _i + [['','','CfgMagazines','secondary',95,2,false,false,0,0,true]];
+
+_u = _u + ['PG7V'];
+_i = _i + [['','','CfgMagazines','secondary',50,0,true,false,0,0,true]];
+
+_u = _u + ['PG7VR'];
+_i = _i + [['','','CfgMagazines','secondary',100,2,false,false,0,0,true]];
+
+_u = _u + ['PG7VL'];
+_i = _i + [['','','CfgMagazines','secondary',70,1,true,false,0,0,true]];
+
+_u = _u + ['RPG18'];
+_i = _i + [['','','CfgMagazines','secondary',40,0,true,false,0,0,true]];
+
+_u = _u + ['Strela'];
+_i = _i + [['','','CfgMagazines','secondary',100,0,false,false,0,0,true]];
+
+_u = _u + ['6Rnd_45ACP'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['8Rnd_9x18_Makarov'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['8Rnd_9x18_MakarovSD'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+_u = _u + ['10Rnd_B_765x17_Ball'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+_u = _u + ['20Rnd_B_765x17_Ball'];
+_i = _i + [['','','CfgMagazines','sidearm',4,0,true,true,0,0,true]];
+
+_u = _u + ['30Rnd_9x19_UZI'];
+_i = _i + [['','','CfgMagazines','sidearm',4,0,true,true,0,0,true]];
+
+_u = _u + ['30Rnd_9x19_UZI_SD'];
+_i = _i + [['','','CfgMagazines','sidearm',6,0,true,true,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_Battery_Rangefinder'];
+ _i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+};
+
+/* Primary weapons - West */
+_u = _u + ['G36A_camo'];
+_i = _i + [['','','CfgWeapons','',225,1,false,false,0,0,true]];
+
+_u = _u + ['G36C_camo'];
+_i = _i + [['','','CfgWeapons','',195,0,true,false,0,0,true]];
+
+_u = _u + ['G36_C_SD_camo'];
+_i = _i + [['','','CfgWeapons','',210,2,false,false,0,0,true]];
+
+_u = _u + ['G36K_camo'];
+_i = _i + [['','','CfgWeapons','',205,1,false,false,0,0,true]];
+
+_u = _u + ['M16A2'];
+_i = _i + [['','','CfgWeapons','',60,0,true,false,0,0,true]];
+
+_u = _u + ['M16A2GL'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,true]];
+
+_u = _u + ['M24_des_EP1'];
+_i = _i + [['','','CfgWeapons','',140,0,true,false,0,0,true]];
+
+_u = _u + ['M60A4_EP1'];
+_i = _i + [['','','CfgWeapons','',170,0,true,false,0,0,false]];
+
+_u = _u + ['m240_scoped_EP1'];
+_i = _i + [['','','CfgWeapons','',165,0,true,false,0,0,false]];
+
+_u = _u + ['M249_EP1'];
+_i = _i + [['','','CfgWeapons','',185,2,true,false,0,0,false]];
+
+_u = _u + ['M249_m145_EP1'];
+_i = _i + [['','','CfgWeapons','',210,2,true,false,0,0,false]];
+
+_u = _u + ['M249_TWS_EP1'];
+_i = _i + [['','','CfgWeapons','',285,3,false,false,0,0,false]];
+
+_u = _u + ['M4A1'];
+_i = _i + [['','','CfgWeapons','',95,0,true,false,0,0,true]];
+
+_u = _u + ['M4A3_CCO_EP1'];
+_i = _i + [['','','CfgWeapons','',115,0,true,false,0,0,true]];
+
+_u = _u + ['M4A3_RCO_GL_EP1'];
+_i = _i + [['','','CfgWeapons','',125,1,true,false,0,0,true]];
+
+_u = _u + ['m107'];
+_i = _i + [['','','CfgWeapons','',310,3,false,false,0,0,true]];
+
+_u = _u + ['m107_TWS_EP1'];
+_i = _i + [['','','CfgWeapons','',410,3,false,false,0,0,false]];
+
+_u = _u + ['Mk_48_DES_EP1'];
+_i = _i + [['','','CfgWeapons','',220,3,false,false,0,0,false]];
+
+_u = _u + ['MG36_camo'];
+_i = _i + [['','','CfgWeapons','',240,2,false,false,0,0,false]];
+
+_u = _u + ['M32_EP1'];
+_i = _i + [['','','CfgWeapons','',210,2,false,false,["6Rnd_HE_M203","6Rnd_FlareWhite_M203","6Rnd_FlareGreen_M203","6Rnd_FlareRed_M203","6Rnd_FlareYellow_M203","6Rnd_Smoke_M203","6Rnd_SmokeRed_M203","6Rnd_SmokeGreen_M203","6Rnd_SmokeYellow_M203"],0,true]];
+
+_u = _u + ['M79_EP1'];
+_i = _i + [['','','CfgWeapons','',80,0,true,false,[],0,true]];
+
+/* Mk13 use handgun pool ammos */
+_u = _u + ['Mk13_EP1'];
+_i = _i + [['','','CfgWeapons','',110,0,true,false,[],0,true]];
+
+_u = _u + ['M14_EP1'];
+_i = _i + [['','','CfgWeapons','',190,0,true,false,0,0,true]];
+
+_u = _u + ['M110_TWS_EP1'];
+_i = _i + [['','','CfgWeapons','',350,3,false,false,0,0,true]];
+
+_u = _u + ['M110_NVG_EP1'];
+_i = _i + [['','','CfgWeapons','',290,2,false,false,0,0,true]];
+
+_u = _u + ['SCAR_L_CQC'];
+_i = _i + [['','','CfgWeapons','',190,0,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_CQC_Holo'];
+_i = _i + [['','','CfgWeapons','',210,1,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_STD_Mk4CQT'];
+_i = _i + [['','','CfgWeapons','',215,2,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_STD_EGLM_RCO'];
+_i = _i + [['','','CfgWeapons','',230,1,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_CQC_EGLM_Holo'];
+_i = _i + [['','','CfgWeapons','',245,1,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_STD_EGLM_TWS'];
+_i = _i + [['','','CfgWeapons','',345,3,true,false,0,0,true]];
+
+_u = _u + ['SCAR_L_STD_HOLO'];
+_i = _i + [['','','CfgWeapons','',215,1,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_CQC_CCO'];
+_i = _i + [['','','CfgWeapons','',225,1,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_CQC_CCO_SD'];
+_i = _i + [['','','CfgWeapons','',250,2,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_STD_EGLM_Spect'];
+_i = _i + [['','','CfgWeapons','',280,2,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_LNG_Sniper'];
+_i = _i + [['','','CfgWeapons','',275,2,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_LNG_Sniper_SD'];
+_i = _i + [['','','CfgWeapons','',295,3,true,false,0,0,true]];
+
+_u = _u + ['SCAR_H_STD_TWS_SD'];
+_i = _i + [['','','CfgWeapons','',395,3,true,false,0,0,true]];
+
+/* Primary weapons - East */
+_u = _u + ['AK_47_M'];
+_i = _i + [['','','CfgWeapons','',40,0,true,false,0,0,true]];
+
+_u = _u + ['AK_47_S'];
+_i = _i + [['','','CfgWeapons','',50,0,true,false,0,0,true]];
+
+_u = _u + ['AK_74'];
+_i = _i + [['','','CfgWeapons','',60,0,true,false,0,0,true]];
+
+_u = _u + ['AK_74_GL'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,true]];
+
+_u = _u + ['AK_74_GL_kobra'];
+_i = _i + [['','','CfgWeapons','',85,0,true,false,0,0,true]];
+
+_u = _u + ['AKS_74'];
+_i = _i + [['','','CfgWeapons','',80,0,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_GOSHAWK'];
+_i = _i + [['','','CfgWeapons','',180,2,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_kobra'];
+_i = _i + [['','','CfgWeapons','',90,0,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_NSPU'];
+_i = _i + [['','','CfgWeapons','',145,1,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_pso'];
+_i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_U'];
+_i = _i + [['','','CfgWeapons','',115,0,true,false,0,0,true]];
+
+_u = _u + ['FN_FAL'];
+_i = _i + [['','','CfgWeapons','',110,0,true,false,0,0,true]];
+
+_u = _u + ['FN_FAL_ANPVS4'];
+_i = _i + [['','','CfgWeapons','',140,1,true,false,0,0,true]];
+
+_u = _u + ['LeeEnfield'];
+_i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,true]];
+
+_u = _u + ['PK'];
+_i = _i + [['','','CfgWeapons','',190,0,true,false,0,0,false]];
+
+_u = _u + ['RPK_74'];
+_i = _i + [['','','CfgWeapons','',185,1,true,false,0,0,true]];
+
+_u = _u + ['Sa58P_EP1'];
+_i = _i + [['','','CfgWeapons','',110,0,true,false,0,0,true]];
+
+_u = _u + ['Sa58V_EP1'];
+_i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+_u = _u + ['Sa58V_RCO_EP1'];
+_i = _i + [['','','CfgWeapons','',155,1,true,false,0,0,true]];
+
+_u = _u + ['Sa58V_CCO_EP1'];
+_i = _i + [['','','CfgWeapons','',145,1,true,false,0,0,true]];
+
+_u = _u + ['SVD'];
+_i = _i + [['','','CfgWeapons','',160,1,true,false,0,0,true]];
+
+_u = _u + ['SVD_des_EP1'];
+_i = _i + [['','','CfgWeapons','',180,2,false,false,0,0,true]];
+
+_u = _u + ['SVD_NSPU_EP1'];
+_i = _i + [['','','CfgWeapons','',210,2,false,false,0,0,true]];
+
+_u = _u + ['ksvk'];
+_i = _i + [['','','CfgWeapons','',255,3,false,false,0,0,false]];
+
+/* Secondary weapons - West */
+_u = _u + ['Javelin'];
+_i = _i + [['','','CfgWeapons','',290,3,false,false,0,0,false]];
+
+_u = _u + ['Laserdesignator'];
+_i = _i + [['','','CfgWeapons','',275,3,true,false,0,0,true]];
+
+_u = _u + ['M136'];
+_i = _i + [['','','CfgWeapons','',85,0,true,false,0,0,false]];
+
+_u = _u + ['MAAWS'];
+_i = _i + [['','','CfgWeapons','',350,2,false,false,0,0,false]];
+
+_u = _u + ['Stinger'];
+_i = _i + [['','','CfgWeapons','',250,2,false,false,0,0,false]];
+
+if(WF_ACE) then
+{
+ _u = _u + ['ACE_Rucksack_MOLLE_Brown'];
+ _i = _i + [['','','CfgWeapons','',80,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_Coyote_Pack'];
+ _i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_CharliePack'];
+ _i = _i + [['','','CfgWeapons','',90,2,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M252Proxy'];
+ _i = _i + [['','','CfgWeapons','',600,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M252TripodProxy'];
+ _i = _i + [['','','CfgWeapons','',40,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M2HBProxy'];
+ _i = _i + [['','','CfgWeapons','',140,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M3TripodProxy'];
+ _i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M220Proxy'];
+ _i = _i + [['','','CfgWeapons','',500,2,true,false,0,0,false]];
+
+ _u = _u + ['ACE_M220TripodProxy'];
+ _i = _i + [['','','CfgWeapons','',40,2,true,false,0,0,false]];
+}
+else
+{
+ _u = _u + ['US_Assault_Pack_EP1'];
+ _i = _i + [['','','CfgVehicles','',80,1,true,false,0,0,false]];
+
+ _u = _u + ['US_Patrol_Pack_EP1'];
+ _i = _i + [['','','CfgVehicles','',70,0,true,false,0,0,false]];
+
+ _u = _u + ['US_Backpack_EP1'];
+ _i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+ _u = _u + ['Tripod_Bag'];
+ _i = _i + [['','','CfgVehicles','',25,0,true,false,0,0,false]];
+
+ _u = _u + ['M2HD_mini_TriPod_US_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',155,0,false,false,0,0,false]];
+
+ _u = _u + ['M2StaticMG_US_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',190,0,false,false,0,0,false]];
+
+ _u = _u + ['MK19_TriPod_US_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',450,1,false,false,0,0,false]];
+
+ _u = _u + ['TOW_TriPod_US_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',600,2,false,false,0,0,false]];
+
+ _u = _u + ['M252_US_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',750,1,false,false,0,0,false]];
+};
+
+/* Secondary weapons - East */
+_u = _u + ['Igla'];
+_i = _i + [['','','CfgWeapons','',250,2,false,false,0,0,false]];
+
+_u = _u + ['M47Launcher_EP1'];
+_i = _i + [['','','CfgWeapons','',275,2,false,false,0,0,false]];
+
+_u = _u + ['MetisLauncher'];
+_i = _i + [['','','CfgWeapons','',350,3,false,false,0,0,false]];
+
+_u = _u + ['RPG7V'];
+_i = _i + [['','','CfgWeapons','',90,1,true,false,0,0,false]];
+
+_u = _u + ['RPG18'];
+_i = _i + [['','','CfgWeapons','',50,0,true,false,0,0,false]];
+
+_u = _u + ['Strela'];
+_i = _i + [['','','CfgWeapons','',230,2,false,false,0,0,false]];
+
+if(WF_ACE) then
+{
+ _u = _u + ['ACE_Rucksack_RD90'];
+ _i = _i + [['','','CfgWeapons','',80,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_Rucksack_RD54'];
+ _i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_Rucksack_RD99'];
+ _i = _i + [['','','CfgWeapons','',90,2,true,false,0,0,false]];
+
+ _u = _u + ['ACE_2b14Proxy'];
+ _i = _i + [['','','CfgWeapons','',600,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_2b14TripodProxy'];
+ _i = _i + [['','','CfgWeapons','',40,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_KORDProxy'];
+ _i = _i + [['','','CfgWeapons','',140,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_6T7TripodProxy'];
+ _i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,false]];
+
+ _u = _u + ['ACE_KonkursTripodProxy'];
+ _i = _i + [['','','CfgWeapons','',500,2,true,false,0,0,false]];
+}
+else
+{
+ _u = _u + ['TK_Assault_Pack_EP1'];
+ _i = _i + [['','','CfgVehicles','',80,1,true,false,0,0,false]];
+
+ _u = _u + ['TK_RPG_Backpack_EP1'];
+ _i = _i + [['','','CfgVehicles','',70,0,true,false,0,0,false]];
+
+ _u = _u + ['TK_ALICE_Pack_EP1'];
+ _i = _i + [['','','CfgVehicles','',90,2,true,false,0,0,false]];
+
+ _u = _u + ['Tripod_Bag'];
+ _i = _i + [['','','CfgVehicles','',40,0,false,false,0,0,false]];
+
+ _u = _u + ['KORD_TK_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',155,0,false,false,0,0,false]];
+
+ _u = _u + ['KORD_high_TK_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',190,0,false,false,0,0,false]];
+
+ _u = _u + ['SPG9_TK_INS_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',410,1,false,false,0,0,false]];
+
+ _u = _u + ['AGS_TK_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',490,1,false,false,0,0,false]];
+
+ _u = _u + ['Metis_TK_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',600,2,false,false,0,0,false]];
+
+ _u = _u + ['2b14_82mm_TK_Bag_EP1'];
+ _i = _i + [['','','CfgVehicles','',750,1,false,false,0,0,false]];
+};
+
+/* Pistols - West */
+_u = _u + ['Colt1911'];
+_i = _i + [['','','CfgWeapons','',15,0,true,false,0,0,true]];
+
+_u = _u + ['M9'];
+_i = _i + [['','','CfgWeapons','',20,0,true,false,0,0,true]];
+
+_u = _u + ['M9SD'];
+_i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,true]];
+
+_u = _u + ['glock17_EP1'];
+_i = _i + [['','','CfgWeapons','',35,1,true,false,0,0,true]];
+
+/* Pistols - East */
+_u = _u + ['Makarov'];
+_i = _i + [['','','CfgWeapons','',8,0,true,false,0,0,true]];
+
+_u = _u + ['MakarovSD'];
+_i = _i + [['','','CfgWeapons','',15,0,true,false,0,0,true]];
+
+_u = _u + ['revolver_EP1'];
+_i = _i + [['','','CfgWeapons','',10,0,true,false,0,0,true]];
+
+_u = _u + ['revolver_gold_EP1'];
+_i = _i + [['','','CfgWeapons','',10,1,true,false,0,0,true]];
+
+_u = _u + ['Sa61_EP1'];
+_i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,true]];
+
+_u = _u + ['UZI_EP1'];
+_i = _i + [['','','CfgWeapons','',55,1,true,false,["30Rnd_9x19_UZI","30Rnd_9x19_UZI_SD"],0,true]];
+
+_u = _u + ['UZI_SD_EP1'];
+_i = _i + [['','','CfgWeapons','',65,2,true,false,["30Rnd_9x19_UZI_SD"],0,true]];
+
+/* Misc - West */
+_u = _u + ['HandGrenade_West'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,false,0,0,true]];
+
+_u = _u + ['HandGrenade_Stone'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',1,0,true,false,0,0,true]];
+
+_u = _u + ['IR_Strobe_Target'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',25,0,true,false,0,0,true]];
+
+_u = _u + ['IR_Strobe_Marker'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',35,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShell'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellRed'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellGreen'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellBlue'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellYellow'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellOrange'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellPurple'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['FlareWhite_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareYellow_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareGreen_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareRed_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_HE_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',15,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_Smoke_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeRed_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeGreen_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeYellow_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+if(WF_ACE) then
+{
+ _u = _u + ['ACE_Bandage'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',2,0,true,true,0,0,true]];
+
+ _u = _u + ['ACE_Epinephrine'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',20,0,true,true,0,0,true]];
+
+ _u = _u + ['ACE_Morphine'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',20,0,true,true,0,0,true]];
+
+ _u = _u + ['ACE_Medkit'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',50,0,true,true,0,0,true]];
+};
+
+_u = _u + ['Mine'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',35,0,true,false,0,0,true]];
+
+_u = _u + ['PipeBomb'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',50,0,true,false,0,0,true]];
+
+_u = _u + ['Binocular'];
+_i = _i + [['','','CfgWeapons','Special',10,0,true,false,0,0,true]];
+
+_u = _u + ['NVGoggles'];
+_i = _i + [['','','CfgWeapons','Special',20,0,true,false,0,0,true]];
+
+_u = _u + ['Binocular_Vector'];
+_i = _i + [['','','CfgWeapons','Special',50,1,true,false,0,0,true]];
+
+_u = _u + ['ItemCompass'];
+_i = _i + [['','','CfgWeapons','Item',4,0,true,false,0,0,true]];
+
+_u = _u + ['ItemGPS'];
+_i = _i + [['','','CfgWeapons','Item',25,0,true,false,0,0,true]];
+
+_u = _u + ['ItemMap'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+_u = _u + ['ItemRadio'];
+_i = _i + [['','','CfgWeapons','Item',10,0,true,false,0,0,true]];
+
+_u = _u + ['ItemWatch'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_HuntIR_monitor'];
+ _i = _i + [['','','CfgWeapons','Item',50,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_Earplugs'];
+ _i = _i + [['','','CfgWeapons','Item',1,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_MX2A'];
+ _i = _i + [['','','CfgWeapons','Special',50,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_GlassesLHD_glasses'];
+ _i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_GlassesTactical'];
+ _i = _i + [['','','CfgWeapons','Item',3,0,true,false,0,0,true]];
+};
+
+/* Misc - East */
+_u = _u + ['HandGrenade_East'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,false,0,0,true]];
+
+_u = _u + ['FlareWhite_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareYellow_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareGreen_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareRed_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_HE_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',13,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKE_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKERED_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKEGREEN_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKEYELLOW_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['MineE'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',40,0,true,false,0,0,true]];
+
+for '_z' from 0 to (count _u)-1 do {
+ _info = (_i select _z);
+ _element = (_u select _z);
+ _config = (_info select 2);
+
+ if (isClass (configFile >> _config >> _element)) then {
+ //--- The loadout has a prefix since we can have two elements with the same name but with different class.
+ _get = _element Call GetNamespace;
+ _proceed = false;
+ _prefix = "";
+
+ if (isNil '_get') then {
+ _proceed = true;
+ } else {
+ //--- Two elements can have the same name, like "Javelin(Weapon) >> Javelin (Magazine)", if two elements are found, we compare the class to see if they're already defined or not.
+ if ((_get select 2) == _config) then {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_Arrowhead_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ } else {
+ //--- Is it a special class?
+ _get = (_element+'_W') Call GetNamespace;
+ if (isNil '_get') then {
+ _prefix = '_W';
+ _proceed = true;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_Arrowhead_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ };
+ };
+ };
+
+ if (_proceed) then {
+ //--- A custom loadout displayName can be set.
+ if ((_info select 1) == '') then {_info set [0, [_element,'displayName',_config] Call GetConfigInfo]};
+ _info set [1, [_element,'picture',_config] Call GetConfigInfo];
+
+ if (_config == 'CfgWeapons') then {
+ //--- A custom loadout magazine can be set.
+ if (typeName (_info select 8) != 'ARRAY') then {
+ _info set [8, getArray (configFile >> _config >> _element >> 'magazines')];
+ };
+ };
+
+ //--- Set the magazine space.
+ if (_config == 'CfgMagazines') then {
+ if ((_info select 3) in ['CfgMagazines','primary','secondary','sidearm']) then {
+ _info set [9, ceil(getNumber(configFile >> _config >> _element >> 'type') / 256)];
+ };
+ };
+
+ [_element+_prefix,_info] Call SetNamespace;
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%3 | ticktime:%4] Core_Arrowhead_G: Loadout Element '%1' with class '%2' is not a defined a class!",_element,_config,diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_Arrowhead_G: Loadout Initialization (%1 Elements) - [Done]",count _u,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Gear/Core_BAF_G.sqf b/Common/Config/Core_Gear/Core_BAF_G.sqf
new file mode 100644
index 0000000..f9581df
--- /dev/null
+++ b/Common/Config/Core_Gear/Core_BAF_G.sqf
@@ -0,0 +1,155 @@
+private ["_config","_element","_get","_i","_info","_prefix","_proceed","_u"];
+
+_u = [];
+_i = [];
+
+/* _i = _i + [[label, picture, config, belong to type, cost, upgrade level, allowed in camps, belong to the handgun pool, magazines, magazine space, allow two weapons]]*/
+
+/* Magazines - West */
+_u = _u + ['5Rnd_127x99_AS50'];
+_i = _i + [['','','CfgMagazines','primary',14,0,true,false,0,0,true]];
+
+_u = _u + ['5Rnd_86x70_L115A1'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['200Rnd_556x45_L110A1'];
+_i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+_u = _u + ['NLAW'];
+_i = _i + [['','','CfgMagazines','secondary',225,0,false,false,0,0,true]];
+
+/* Primary Weapons - West */
+_u = _u + ['BAF_AS50_scoped'];
+_i = _i + [['','','CfgWeapons','',380,2,true,false,0,0,false]];
+
+_u = _u + ['BAF_AS50_TWS'];
+_i = _i + [['','','CfgWeapons','',460,3,false,false,0,0,false]];
+
+_u = _u + ['BAF_LRR_scoped'];
+_i = _i + [['','','CfgWeapons','',350,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_LRR_scoped_W'];
+_i = _i + [['','','CfgWeapons','',330,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_RIS_Holo'];
+_i = _i + [['','','CfgWeapons','',250,1,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_UGL_Holo'];
+_i = _i + [['','','CfgWeapons','',265,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_RIS_SUSAT'];
+_i = _i + [['','','CfgWeapons','',280,1,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_UGL_SUSAT'];
+_i = _i + [['','','CfgWeapons','',290,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_RIS_ACOG'];
+_i = _i + [['','','CfgWeapons','',300,1,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_UGL_ACOG'];
+_i = _i + [['','','CfgWeapons','',320,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_L85A2_RIS_CWS'];
+_i = _i + [['','','CfgWeapons','',400,3,false,false,0,0,true]];
+
+_u = _u + ['BAF_L86A2_ACOG'];
+_i = _i + [['','','CfgWeapons','',330,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_L110A1_Aim'];
+_i = _i + [['','','CfgWeapons','',350,2,false,false,0,0,false]];
+
+_u = _u + ['BAF_L7A2_GPMG'];
+_i = _i + [['','','CfgWeapons','',210,0,false,false,0,0,false]];
+
+/* Secondary weapons - West */
+_u = _u + ['BAF_NLAW_Launcher'];
+_i = _i + [['','','CfgWeapons','',500,2,false,false,0,0,false]];
+
+_u = _u + ['BAF_AssaultPack_RifleAmmo'];
+_i = _i + [['','','CfgVehicles','',95,2,true,false,0,0,false]];
+
+_u = _u + ['BAF_L2A1_ACOG_minitripod_bag'];
+_i = _i + [['','','CfgVehicles','',165,1,false,false,0,0,false]];
+
+_u = _u + ['BAF_L2A1_ACOG_tripod_bag'];
+_i = _i + [['','','CfgVehicles','',175,1,false,false,0,0,false]];
+
+_u = _u + ['BAF_GPMG_Minitripod_D_bag'];
+_i = _i + [['','','CfgVehicles','',175,0,false,false,0,0,false]];
+
+_u = _u + ['BAF_GMG_ACOG_minitripod_bag'];
+_i = _i + [['','','CfgVehicles','',175,1,false,false,0,0,false]];
+
+/* Misc - West */
+_u = _u + ['BAF_L109A1_HE'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,false,0,0,true]];
+
+/* Misc - East */
+_u = _u + ['BAF_ied_v1'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',25,0,true,false,0,0,true]];
+
+_u = _u + ['BAF_ied_v2'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',35,1,true,false,0,0,true]];
+
+_u = _u + ['BAF_ied_v3'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',45,2,true,false,0,0,true]];
+
+_u = _u + ['BAF_ied_v4'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',55,2,true,false,0,0,true]];
+
+for '_z' from 0 to (count _u)-1 do {
+ _info = (_i select _z);
+ _element = (_u select _z);
+ _config = (_info select 2);
+
+ if (isClass (configFile >> _config >> _element)) then {
+ //--- The loadout has a prefix since we can have two elements with the same name but with different class.
+ _get = _element Call GetNamespace;
+ _proceed = false;
+ _prefix = "";
+
+ if (isNil '_get') then {
+ _proceed = true;
+ } else {
+ //--- Two elements can have the same name, like "Javelin(Weapon) >> Javelin (Magazine)", if two elements are found, we compare the class to see if they're already defined or not.
+ if ((_get select 2) == _config) then {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_BAF_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ } else {
+ //--- Is it a special class?
+ _get = (_element+'_W') Call GetNamespace;
+ if (isNil '_get') then {
+ _prefix = '_W';
+ _proceed = true;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_BAF_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ };
+ };
+ };
+
+ if (_proceed) then {
+ //--- A custom loadout displayName can be set.
+ if ((_info select 1) == '') then {_info set [0, [_element,'displayName',_config] Call GetConfigInfo]};
+ _info set [1, [_element,'picture',_config] Call GetConfigInfo];
+
+ if (_config == 'CfgWeapons') then {
+ //--- A custom loadout magazine can be set.
+ if (typeName (_info select 8) != 'ARRAY') then {
+ _info set [8, getArray (configFile >> _config >> _element >> 'magazines')];
+ };
+ };
+
+ //--- Set the magazine space.
+ if (_config == 'CfgMagazines') then {
+ if ((_info select 3) in ['CfgMagazines','primary','secondary','sidearm']) then {
+ _info set [9, ceil(getNumber(configFile >> _config >> _element >> 'type') / 256)];
+ };
+ };
+
+ [_element+_prefix,_info] Call SetNamespace;
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%3 | ticktime:%4] Core_BAF_G: Loadout Element '%1' with class '%2' is not a defined a class!",_element,_config,diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_BAF_G: Loadout Initialization (%1 Elements) - [Done]",count _u,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Gear/Core_PMC_G.sqf b/Common/Config/Core_Gear/Core_PMC_G.sqf
new file mode 100644
index 0000000..7dffb3c
--- /dev/null
+++ b/Common/Config/Core_Gear/Core_PMC_G.sqf
@@ -0,0 +1,107 @@
+private ["_config","_element","_get","_i","_info","_prefix","_proceed","_u"];
+
+_u = [];
+_i = [];
+
+/* _i = _i + [[label, picture, config, belong to type, cost, upgrade level, allowed in camps, belong to the handgun pool, magazines, magazine space, allow two weapons]]*/
+
+/* Magazines - West */
+_u = _u + ['20Rnd_B_AA12_Pellets'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_B_AA12_74Slug'];
+_i = _i + [['','','CfgMagazines','primary',10,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_B_AA12_HE'];
+_i = _i + [['','','CfgMagazines','primary',45,3,true,false,0,0,true]];
+
+/* Primary Weapons - West */
+_u = _u + ['AA12_PMC'];
+_i = _i + [['','','CfgWeapons','',380,2,true,false,0,0,true]];
+
+_u = _u + ['m8_carbine'];
+_i = _i + [['','','CfgWeapons','',280,2,true,false,0,0,true]];
+
+_u = _u + ['m8_carbineGL'];
+_i = _i + [['','','CfgWeapons','',290,3,true,false,0,0,true]];
+
+_u = _u + ['m8_compact'];
+_i = _i + [['','','CfgWeapons','',285,2,false,false,0,0,true]];
+
+_u = _u + ['m8_SAW'];
+_i = _i + [['','','CfgWeapons','',310,3,false,false,0,0,false]];
+
+_u = _u + ['m8_sharpshooter'];
+_i = _i + [['','','CfgWeapons','',295,3,false,false,0,0,true]];
+
+_u = _u + ['m8_carbine_pmc'];
+_i = _i + [['','','CfgWeapons','',290,2,true,false,0,0,true]];
+
+_u = _u + ['m8_compact_pmc'];
+_i = _i + [['','','CfgWeapons','',295,2,false,false,0,0,true]];
+
+_u = _u + ['m8_holo_sd'];
+_i = _i + [['','','CfgWeapons','',335,3,false,false,0,0,true]];
+
+_u = _u + ['m8_tws'];
+_i = _i + [['','','CfgWeapons','',350,3,false,false,0,0,true]];
+
+_u = _u + ['m8_tws_sd'];
+_i = _i + [['','','CfgWeapons','',385,3,false,false,0,0,true]];
+
+for '_z' from 0 to (count _u)-1 do {
+ _info = (_i select _z);
+ _element = (_u select _z);
+ _config = (_info select 2);
+
+ if (isClass (configFile >> _config >> _element)) then {
+ //--- The loadout has a prefix since we can have two elements with the same name but with different class.
+ _get = _element Call GetNamespace;
+ _proceed = false;
+ _prefix = "";
+
+ if (isNil '_get') then {
+ _proceed = true;
+ } else {
+ //--- Two elements can have the same name, like "Javelin(Weapon) >> Javelin (Magazine)", if two elements are found, we compare the class to see if they're already defined or not.
+ if ((_get select 2) == _config) then {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_PMC_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ } else {
+ //--- Is it a special class?
+ _get = (_element+'_W') Call GetNamespace;
+ if (isNil '_get') then {
+ _prefix = '_W';
+ _proceed = true;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_PMC_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ };
+ };
+ };
+
+ if (_proceed) then {
+ //--- A custom loadout displayName can be set.
+ if ((_info select 1) == '') then {_info set [0, [_element,'displayName',_config] Call GetConfigInfo]};
+ _info set [1, [_element,'picture',_config] Call GetConfigInfo];
+
+ if (_config == 'CfgWeapons') then {
+ //--- A custom loadout magazine can be set.
+ if (typeName (_info select 8) != 'ARRAY') then {
+ _info set [8, getArray (configFile >> _config >> _element >> 'magazines')];
+ };
+ };
+
+ //--- Set the magazine space.
+ if (_config == 'CfgMagazines') then {
+ if ((_info select 3) in ['CfgMagazines','primary','secondary','sidearm']) then {
+ _info set [9, ceil(getNumber(configFile >> _config >> _element >> 'type') / 256)];
+ };
+ };
+
+ [_element+_prefix,_info] Call SetNamespace;
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%3 | ticktime:%4] Core_PMC_G: Loadout Element '%1' with class '%2' is not a defined a class!",_element,_config,diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_PMC_G: Loadout Initialization (%1 Elements) - [Done]",count _u,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Gear/Core_Vanilla_G.sqf b/Common/Config/Core_Gear/Core_Vanilla_G.sqf
new file mode 100644
index 0000000..33cbde4
--- /dev/null
+++ b/Common/Config/Core_Gear/Core_Vanilla_G.sqf
@@ -0,0 +1,811 @@
+private ["_config","_element","_get","_i","_info","_prefix","_proceed","_u"];
+
+_u = [];
+_i = [];
+
+/* _i = _i + [[label, picture, config, belong to type, cost, upgrade level, allowed in camps, belong to the handgun pool, magazines, magazine space, allow two weapons]]*/
+
+/* Magazines - West */
+_u = _u + ['5Rnd_762x51_M24'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['8Rnd_B_Beneli_74Slug'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['10Rnd_127x99_m107'];
+_i = _i + [['','','CfgMagazines','primary',18,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_762x51_DMR'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_556x45_Stanag'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_9x19_MP5'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_9x19_MP5SD'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_G36'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_G36SD'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_Stanag'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_556x45_StanagSD'];
+_i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_556x45_BetaCMag'];
+_i = _i + [['','','CfgMagazines','primary',16,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_762x51_M240'];
+_i = _i + [['','','CfgMagazines','primary',14,0,true,false,0,0,true]];
+
+_u = _u + ['200Rnd_556x45_M249'];
+_i = _i + [['','','CfgMagazines','primary',24,0,true,false,0,0,true]];
+
+_u = _u + ['Laserbatteries'];
+_i = _i + [['','','CfgMagazines','secondary',20,3,true,false,0,0,true]];
+
+_u = _u + ['Javelin'];
+_i = _i + [['','','CfgMagazines','secondary',290,3,false,false,0,0,true]];
+
+_u = _u + ['M136'];
+_i = _i + [['','','CfgMagazines','secondary',50,0,true,false,0,0,true]];
+
+_u = _u + ['SMAW_HEAA'];
+_i = _i + [['','','CfgMagazines','secondary',225,2,false,false,0,0,true]];
+
+_u = _u + ['SMAW_HEDP'];
+_i = _i + [['','','CfgMagazines','secondary',250,3,false,false,0,0,true]];
+
+_u = _u + ['Stinger'];
+_i = _i + [['','','CfgMagazines','secondary',100,2,false,false,0,0,true]];
+
+_u = _u + ['7Rnd_45ACP_1911'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['15Rnd_9x19_M9'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['15Rnd_9x19_M9SD'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_SMAW_Spotting'];
+ _i = _i + [['','','CfgMagazines','CfgMagazines',5,2,true,true,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_556x45_T_G36'];
+ _i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_556x45_S_G36'];
+ _i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_T_HK417'];
+ _i = _i + [['','','CfgMagazines','primary',10,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_S_HK417'];
+ _i = _i + [['','','CfgMagazines','primary',9,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_5Rnd_762x51_T_M24'];
+ _i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_B_HK417'];
+ _i = _i + [['','','CfgMagazines','primary',9,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_556x45_T_Stanag'];
+ _i = _i + [['','','CfgMagazines','primary',7,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_556x45_S_Stanag'];
+ _i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_T_M110'];
+ _i = _i + [['','','CfgMagazines','primary',10,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_100Rnd_556x45_T_M249'];
+ _i = _i + [['','','CfgMagazines','primary',17,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_200Rnd_556x45_T_M249'];
+ _i = _i + [['','','CfgMagazines','primary',25,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_10Rnd_127x99_T_m107'];
+ _i = _i + [['','','CfgMagazines','primary',19,3,true,false,0,0,true]];
+
+ _u = _u + ['ACE_10Rnd_127x99_Raufoss_m107'];
+ _i = _i + [['','','CfgMagazines','primary',25,3,true,false,0,0,true]];
+
+ _u = _u + ['ACE_5Rnd_25x59_HEDP_Barrett'];
+ _i = _i + [['','','CfgMagazines','primary',35,3,true,false,0,0,true]];
+
+ _u = _u + ['ACE_M252HE_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',40,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_M252WP_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',15,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_M2_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',20,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_TOW_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',100,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_SB_SCAR'];
+ _i = _i + [['','','CfgMagazines','secondary',15,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_20Rnd_762x51_SB_S_SCAR'];
+ _i = _i + [['','','CfgMagazines','secondary',15,2,true,false,0,0,true]];
+};
+
+/* Magazines - East */
+_u = _u + ['5x_22_LR_17_HMR'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['5Rnd_127x108_KSVK'];
+_i = _i + [['','','CfgMagazines','primary',11,0,true,false,0,0,true]];
+
+_u = _u + ['8Rnd_B_Saiga12_74Slug'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+_u = _u + ['10Rnd_9x39_SP5_VSS'];
+_i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+_u = _u + ['10Rnd_762x54_SVD'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['20Rnd_9x39_SP5_VSS'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_545x39_AK'];
+_i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_545x39_AKSD'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['30Rnd_762x39_AK47'];
+_i = _i + [['','','CfgMagazines','primary',3,0,true,false,0,0,true]];
+
+_u = _u + ['64Rnd_9x19_Bizon'];
+_i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+_u = _u + ['64Rnd_9x19_SD_Bizon'];
+_i = _i + [['','','CfgMagazines','primary',8,0,true,false,0,0,true]];
+
+_u = _u + ['75Rnd_545x39_RPK'];
+_i = _i + [['','','CfgMagazines','primary',9,0,true,false,0,0,true]];
+
+_u = _u + ['100Rnd_762x54_PK'];
+_i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+_u = _u + ['AT13'];
+_i = _i + [['','','CfgMagazines','secondary',280,3,false,false,0,0,true]];
+
+_u = _u + ['Igla'];
+_i = _i + [['','','CfgMagazines','secondary',110,2,false,false,0,0,true]];
+
+_u = _u + ['OG7'];
+_i = _i + [['','','CfgMagazines','secondary',95,2,false,false,0,0,true]];
+
+_u = _u + ['PG7V'];
+_i = _i + [['','','CfgMagazines','secondary',50,0,true,false,0,0,true]];
+
+_u = _u + ['PG7VR'];
+_i = _i + [['','','CfgMagazines','secondary',100,2,false,false,0,0,true]];
+
+_u = _u + ['PG7VL'];
+_i = _i + [['','','CfgMagazines','secondary',70,1,true,false,0,0,true]];
+
+_u = _u + ['RPG18'];
+_i = _i + [['','','CfgMagazines','secondary',40,0,true,false,0,0,true]];
+
+_u = _u + ['Strela'];
+_i = _i + [['','','CfgMagazines','secondary',100,0,false,false,0,0,true]];
+
+_u = _u + ['8Rnd_9x18_Makarov'];
+_i = _i + [['','','CfgMagazines','sidearm',2,0,true,true,0,0,true]];
+
+_u = _u + ['8Rnd_9x18_MakarovSD'];
+_i = _i + [['','','CfgMagazines','sidearm',3,0,true,true,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_75Rnd_762x39_B_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_40Rnd_762x39_B_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',4,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_75Rnd_762x39_T_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',6,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_40Rnd_762x39_T_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_762x39_T_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_762x39_SD_AK47'];
+ _i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_75Rnd_545x39_T_RPK'];
+ _i = _i + [['','','CfgMagazines','primary',10,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_545x39_T_AK'];
+ _i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_10Rnd_762x54_T_SVD'];
+ _i = _i + [['','','CfgMagazines','primary',5,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_5Rnd_127x108_T_KSVK'];
+ _i = _i + [['','','CfgMagazines','primary',12,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_TBG7V'];
+ _i = _i + [['','','CfgMagazines','secondary',120,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_OG7_PGO7'];
+ _i = _i + [['','','CfgMagazines','secondary',95,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_PG7V_PGO7'];
+ _i = _i + [['','','CfgMagazines','secondary',50,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_PG7VL_PGO7'];
+ _i = _i + [['','','CfgMagazines','secondary',70,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_PG7VR_PGO7'];
+ _i = _i + [['','','CfgMagazines','secondary',100,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_TBG7V_PGO7'];
+ _i = _i + [['','','CfgMagazines','secondary',120,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_RPG29_PG29'];
+ _i = _i + [['','','CfgMagazines','secondary',85,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_RPG29_TBG29'];
+ _i = _i + [['','','CfgMagazines','secondary',110,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_2B14HE_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',40,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_2B14WP_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',15,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_KORD_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',20,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_Konkurs_CSWDM'];
+ _i = _i + [['','','CfgMagazines','secondary',100,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_30Rnd_762x39_T_SA58'];
+ _i = _i + [['','','CfgMagazines','secondary',5,1,true,false,0,0,true]];
+};
+
+/* Primary weapons - West */
+_u = _u + ['DMR'];
+_i = _i + [['','','CfgWeapons','',270,2,false,false,0,0,true]];
+
+_u = _u + ['G36a'];
+_i = _i + [['','','CfgWeapons','',225,1,false,false,0,0,true]];
+
+_u = _u + ['G36C'];
+_i = _i + [['','','CfgWeapons','',195,0,true,false,0,0,true]];
+
+_u = _u + ['G36_C_SD_eotech'];
+_i = _i + [['','','CfgWeapons','',210,2,false,false,0,0,true]];
+
+_u = _u + ['G36K'];
+_i = _i + [['','','CfgWeapons','',205,1,false,false,0,0,true]];
+
+_u = _u + ['M16A2'];
+_i = _i + [['','','CfgWeapons','',60,0,true,false,0,0,true]];
+
+_u = _u + ['M16A2GL'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,true]];
+
+_u = _u + ['m16a4'];
+_i = _i + [['','','CfgWeapons','',75,0,true,false,0,0,true]];
+
+_u = _u + ['m16a4_acg'];
+_i = _i + [['','','CfgWeapons','',85,1,true,false,0,0,true]];
+
+_u = _u + ['M16A4_ACG_GL'];
+_i = _i + [['','','CfgWeapons','',95,1,true,false,0,0,true]];
+
+_u = _u + ['M16A4_GL'];
+_i = _i + [['','','CfgWeapons','',90,0,true,false,0,0,true]];
+
+_u = _u + ['M24'];
+_i = _i + [['','','CfgWeapons','',140,0,true,false,0,0,true]];
+
+_u = _u + ['M40A3'];
+_i = _i + [['','','CfgWeapons','',155,2,false,false,0,0,true]];
+
+_u = _u + ['M240'];
+_i = _i + [['','','CfgWeapons','',150,0,true,false,0,0,false]];
+
+_u = _u + ['M249'];
+_i = _i + [['','','CfgWeapons','',185,2,true,false,0,0,false]];
+
+_u = _u + ['M4A1'];
+_i = _i + [['','','CfgWeapons','',95,0,true,false,0,0,true]];
+
+_u = _u + ['M4A1_Aim'];
+_i = _i + [['','','CfgWeapons','',105,0,true,false,0,0,true]];
+
+_u = _u + ['M4A1_Aim_camo'];
+_i = _i + [['','','CfgWeapons','',150,1,true,false,0,0,true]];
+
+_u = _u + ['M4SPR'];
+_i = _i + [['','','CfgWeapons','',160,1,true,false,0,0,true]];
+
+_u = _u + ['M4A1_RCO_GL'];
+_i = _i + [['','','CfgWeapons','',115,2,true,false,0,0,true]];
+
+_u = _u + ['M4A1_AIM_SD_camo'];
+_i = _i + [['','','CfgWeapons','',165,3,false,false,0,0,true]];
+
+_u = _u + ['M4A1_HWS_GL_SD_Camo'];
+_i = _i + [['','','CfgWeapons','',200,3,false,false,0,0,true]];
+
+_u = _u + ['M4A1_HWS_GL'];
+_i = _i + [['','','CfgWeapons','',180,3,false,false,0,0,true]];
+
+_u = _u + ['M4A1_HWS_GL_camo'];
+_i = _i + [['','','CfgWeapons','',195,3,false,false,0,0,true]];
+
+_u = _u + ['m8_carbine'];
+_i = _i + [['','','CfgWeapons','',280,2,true,false,0,0,true]];
+
+_u = _u + ['m8_carbineGL'];
+_i = _i + [['','','CfgWeapons','',290,3,true,false,0,0,true]];
+
+_u = _u + ['m8_compact'];
+_i = _i + [['','','CfgWeapons','',285,2,false,false,0,0,true]];
+
+_u = _u + ['m8_SAW'];
+_i = _i + [['','','CfgWeapons','',310,3,false,false,0,0,false]];
+
+_u = _u + ['m8_sharpshooter'];
+_i = _i + [['','','CfgWeapons','',295,3,false,false,0,0,true]];
+
+_u = _u + ['m107'];
+_i = _i + [['','','CfgWeapons','',310,3,false,false,0,0,false]];
+
+_u = _u + ['M1014'];
+_i = _i + [['','','CfgWeapons','',60,0,true,false,0,0,true]];
+
+_u = _u + ['Mk_48'];
+_i = _i + [['','','CfgWeapons','',220,3,false,false,0,0,false]];
+
+_u = _u + ['MP5A5'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,["30Rnd_9x19_MP5","30Rnd_9x19_MP5SD"],0,true]];
+
+_u = _u + ['MP5SD'];
+_i = _i + [['','','CfgWeapons','',90,1,true,false,["30Rnd_9x19_MP5SD"],0,true]];
+
+_u = _u + ['MG36'];
+_i = _i + [['','','CfgWeapons','',240,2,false,false,0,0,false]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_HK416_D10'];
+ _i = _i + [['','','CfgWeapons','',100,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D10_Holo'];
+ _i = _i + [['','','CfgWeapons','',120,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D10_COMPM3_SD'];
+ _i = _i + [['','','CfgWeapons','',140,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D10_M320'];
+ _i = _i + [['','','CfgWeapons','',150,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D14'];
+ _i = _i + [['','','CfgWeapons','',105,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D14_ACOG_PVS14'];
+ _i = _i + [['','','CfgWeapons','',155,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D14_TWS'];
+ _i = _i + [['','','CfgWeapons','',220,3,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK416_D14_COMPM3_M320'];
+ _i = _i + [['','','CfgWeapons','',165,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK417_Eotech_4x'];
+ _i = _i + [['','','CfgWeapons','',125,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK417_micro'];
+ _i = _i + [['','','CfgWeapons','',115,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_HK417_leupold'];
+ _i = _i + [['','','CfgWeapons','',115,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_M109'];
+ _i = _i + [['','','CfgWeapons','',350,3,true,false,0,0,false]];
+
+ _u = _u + ['ACE_Javelin_CLU'];
+ _i = _i + [['','','CfgWeapons','Special',160,3,true,false,0,0,false]];
+};
+
+/* Primary weapons - East */
+_u = _u + ['AK_47_M'];
+_i = _i + [['','','CfgWeapons','',40,0,true,false,0,0,true]];
+
+_u = _u + ['AK_47_S'];
+_i = _i + [['','','CfgWeapons','',50,0,true,false,0,0,true]];
+
+_u = _u + ['AK_74'];
+_i = _i + [['','','CfgWeapons','',60,0,true,false,0,0,true]];
+
+_u = _u + ['AK_74_GL'];
+_i = _i + [['','','CfgWeapons','',70,0,true,false,0,0,true]];
+
+_u = _u + ['AK_107_kobra'];
+_i = _i + [['','','CfgWeapons','',110,0,true,false,0,0,true]];
+
+_u = _u + ['AK_107_GL_kobra'];
+_i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+_u = _u + ['AK_107_pso'];
+_i = _i + [['','','CfgWeapons','',125,1,false,false,0,0,true]];
+
+_u = _u + ['AK_107_GL_pso'];
+_i = _i + [['','','CfgWeapons','',135,1,false,false,0,0,true]];
+
+_u = _u + ['AKS_74_kobra'];
+_i = _i + [['','','CfgWeapons','',90,0,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_pso'];
+_i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_U'];
+_i = _i + [['','','CfgWeapons','',115,0,true,false,0,0,true]];
+
+_u = _u + ['AKS_74_UN_kobra'];
+_i = _i + [['','','CfgWeapons','',155,2,true,false,0,0,true]];
+
+_u = _u + ['AKS_GOLD'];
+_i = _i + [['','','CfgWeapons','',350,2,true,false,0,0,true]];
+
+_u = _u + ['bizon'];
+_i = _i + [['','','CfgWeapons','',155,1,true,false,0,0,true]];
+
+_u = _u + ['bizon_silenced'];
+_i = _i + [['','','CfgWeapons','',175,2,false,false,0,0,true]];
+
+_u = _u + ['PK'];
+_i = _i + [['','','CfgWeapons','',190,0,true,false,0,0,false]];
+
+_u = _u + ['Pecheneg'];
+_i = _i + [['','','CfgWeapons','',225,2,false,false,0,0,false]];
+
+_u = _u + ['RPK_74'];
+_i = _i + [['','','CfgWeapons','',185,1,true,false,0,0,true]];
+
+_u = _u + ['huntingrifle'];
+_i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+_u = _u + ['SVD'];
+_i = _i + [['','','CfgWeapons','',160,1,true,false,0,0,true]];
+
+_u = _u + ['SVD_CAMO'];
+_i = _i + [['','','CfgWeapons','',180,2,false,false,0,0,true]];
+
+_u = _u + ['Saiga12K'];
+_i = _i + [['','','CfgWeapons','',85,0,true,false,0,0,true]];
+
+_u = _u + ['ksvk'];
+_i = _i + [['','','CfgWeapons','',255,3,false,false,0,0,false]];
+
+_u = _u + ['VSS_vintorez'];
+_i = _i + [['','','CfgWeapons','',220,2,false,false,0,0,true]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_SVD_Bipod'];
+ _i = _i + [['','','CfgWeapons','',190,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103'];
+ _i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_Kobra'];
+ _i = _i + [['','','CfgWeapons','',130,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_PSO'];
+ _i = _i + [['','','CfgWeapons','',150,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK104_Kobra'];
+ _i = _i + [['','','CfgWeapons','',120,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK104'];
+ _i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK104_PSO'];
+ _i = _i + [['','','CfgWeapons','',130,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK104_1P29'];
+ _i = _i + [['','','CfgWeapons','',135,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_GL'];
+ _i = _i + [['','','CfgWeapons','',160,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_1P29'];
+ _i = _i + [['','','CfgWeapons','',140,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_GL_1P29'];
+ _i = _i + [['','','CfgWeapons','',175,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_GL_PSO'];
+ _i = _i + [['','','CfgWeapons','',175,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK103_GL_Kobra'];
+ _i = _i + [['','','CfgWeapons','',155,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK105_1P29'];
+ _i = _i + [['','','CfgWeapons','',125,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK105_PSO'];
+ _i = _i + [['','','CfgWeapons','',130,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK105_Kobra'];
+ _i = _i + [['','','CfgWeapons','',105,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_RPK74M_1P29'];
+ _i = _i + [['','','CfgWeapons','',205,2,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AKMS_SD'];
+ _i = _i + [['','','CfgWeapons','',120,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK74M_GL_1P29'];
+ _i = _i + [['','','CfgWeapons','',140,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK74M_GL_PSO'];
+ _i = _i + [['','','CfgWeapons','',145,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK74M_GL_Kobra'];
+ _i = _i + [['','','CfgWeapons','',120,0,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK74M_PSO'];
+ _i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+
+ _u = _u + ['ACE_AK74M_1P29'];
+ _i = _i + [['','','CfgWeapons','',105,1,true,false,0,0,true]];
+};
+
+/* Secondary weapons - West */
+_u = _u + ['Javelin'];
+_i = _i + [['','','CfgWeapons','',450,3,false,false,0,0,false]];
+
+_u = _u + ['Laserdesignator'];
+_i = _i + [['','','CfgWeapons','Special',275,3,true,false,0,0,true]];
+
+_u = _u + ['M136'];
+_i = _i + [['','','CfgWeapons','',85,0,true,false,0,0,false]];
+
+_u = _u + ['SMAW'];
+_i = _i + [['','','CfgWeapons','',325,2,false,false,0,0,false]];
+
+_u = _u + ['Stinger'];
+_i = _i + [['','','CfgWeapons','',250,2,false,false,0,0,false]];
+
+/* Secondary weapons - East */
+_u = _u + ['Igla'];
+_i = _i + [['','','CfgWeapons','',250,2,false,false,0,0,false]];
+
+_u = _u + ['MetisLauncher'];
+_i = _i + [['','','CfgWeapons','',375,3,false,false,0,0,false]];
+
+_u = _u + ['RPG7V'];
+_i = _i + [['','','CfgWeapons','',90,1,true,false,0,0,false]];
+
+_u = _u + ['RPG18'];
+_i = _i + [['','','CfgWeapons','',50,0,true,false,0,0,false]];
+
+_u = _u + ['Strela'];
+_i = _i + [['','','CfgWeapons','',230,2,false,false,0,0,false]];
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_RPG27'];
+ _i = _i + [['','','CfgWeapons','',95,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_RPG7V_PGO7'];
+ _i = _i + [['','','CfgWeapons','',175,1,true,false,0,0,false]];
+
+ _u = _u + ['ACE_RPG29'];
+ _i = _i + [['','','CfgWeapons','',165,2,true,false,0,0,false]];
+};
+
+/* Pistols - West */
+_u = _u + ['Colt1911'];
+_i = _i + [['','','CfgWeapons','',15,0,true,false,0,0,true]];
+
+_u = _u + ['M9'];
+_i = _i + [['','','CfgWeapons','',20,0,true,false,0,0,true]];
+
+_u = _u + ['M9SD'];
+_i = _i + [['','','CfgWeapons','',25,0,true,false,0,0,true]];
+
+/* Pistols - East */
+_u = _u + ['Makarov'];
+_i = _i + [['','','CfgWeapons','',8,0,true,false,0,0,true]];
+
+_u = _u + ['MakarovSD'];
+_i = _i + [['','','CfgWeapons','',15,0,true,false,0,0,true]];
+
+/* Misc - West */
+_u = _u + ['HandGrenade_West'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,false,0,0,true]];
+
+_u = _u + ['HandGrenade_Stone'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',1,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShell'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellRed'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellGreen'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellBlue'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellYellow'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellOrange'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['SmokeShellPurple'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,false,0,0,true]];
+
+_u = _u + ['FlareWhite_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareYellow_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareGreen_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['FlareRed_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_HE_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',15,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_Smoke_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeRed_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeGreen_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SmokeYellow_M203'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',12,0,true,true,0,0,true]];
+
+_u = _u + ['Mine'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',35,0,true,false,0,0,true]];
+
+_u = _u + ['PipeBomb'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',50,0,true,false,0,0,true]];
+
+_u = _u + ['Binocular'];
+_i = _i + [['','','CfgWeapons','Special',10,0,true,false,0,0,true]];
+
+_u = _u + ['NVGoggles'];
+_i = _i + [['','','CfgWeapons','Special',20,0,true,false,0,0,true]];
+
+_u = _u + ['ItemCompass'];
+_i = _i + [['','','CfgWeapons','Item',4,0,true,false,0,0,true]];
+
+_u = _u + ['ItemGPS'];
+_i = _i + [['','','CfgWeapons','Item',25,0,true,false,0,0,true]];
+
+_u = _u + ['ItemMap'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+_u = _u + ['ItemRadio'];
+_i = _i + [['','','CfgWeapons','Item',10,0,true,false,0,0,true]];
+
+_u = _u + ['ItemWatch'];
+_i = _i + [['','','CfgWeapons','Item',5,0,true,false,0,0,true]];
+
+/* Misc - East */
+_u = _u + ['HandGrenade_East'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',9,0,true,false,0,0,true]];
+
+_u = _u + ['FlareWhite_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareYellow_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareGreen_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['FlareRed_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',8,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_HE_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',13,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKE_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKERED_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKEGREEN_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['1Rnd_SMOKEYELLOW_GP25'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',10,0,true,true,0,0,true]];
+
+_u = _u + ['MineE'];
+_i = _i + [['','','CfgMagazines','CfgMagazines',40,0,true,false,0,0,true]];
+
+for '_z' from 0 to (count _u)-1 do {
+ _info = (_i select _z);
+ _element = (_u select _z);
+ _config = (_info select 2);
+
+ if (isClass (configFile >> _config >> _element)) then {
+ //--- The loadout has a prefix since we can have two elements with the same name but with different class.
+ _get = _element Call GetNamespace;
+ _proceed = false;
+ _prefix = "";
+
+ if (isNil '_get') then {
+ _proceed = true;
+ } else {
+ //--- Two elements can have the same name, like "Javelin(Weapon) >> Javelin (Magazine)", if two elements are found, we compare the class to see if they're already defined or not.
+ if ((_get select 2) == _config) then {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_Vanilla_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ } else {
+ //--- Is it a special class?
+ _get = (_element+'_W') Call GetNamespace;
+ if (isNil '_get') then {
+ _prefix = '_w';
+ _proceed = true;
+ } else {
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Core_Vanilla_G: Duplicated Loadout Element found '%1' for class '%2'",_element,_config,diag_frameno,diag_tickTime];
+ };
+ };
+ };
+
+ if (_proceed) then {
+ //--- A custom loadout displayName can be set.
+ if ((_info select 1) == '') then {_info set [0, [_element,'displayName',_config] Call GetConfigInfo]};
+ _info set [1, [_element,'picture',_config] Call GetConfigInfo];
+
+ if (_config == 'CfgWeapons') then {
+ //--- A custom loadout magazine can be set.
+ if (typeName (_info select 8) != 'ARRAY') then {
+ _info set [8, getArray (configFile >> _config >> _element >> 'magazines')];
+ };
+ };
+
+ //--- Set the magazine space.
+ if (_config == 'CfgMagazines') then {
+ if ((_info select 3) in ['CfgMagazines','primary','secondary','sidearm']) then {
+ _info set [9, ceil(getNumber(configFile >> _config >> _element >> 'type') / 256)];
+ };
+ };
+
+ [_element+_prefix,_info] Call SetNamespace;
+ };
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%3 | ticktime:%4] Core_Vanilla_G: Loadout Element '%1' with class '%2' is not a defined a class!",_element,_config,diag_frameno,diag_tickTime];
+ };
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%2 | ticktime:%3] Core_Vanilla_G: Loadout Initialization (%1 Elements) - [Done]",count _u,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Arrowhead/Loadout_TK.sqf b/Common/Config/Core_Loadout/Arrowhead/Loadout_TK.sqf
new file mode 100644
index 0000000..03c3ace
--- /dev/null
+++ b/Common/Config/Core_Loadout/Arrowhead/Loadout_TK.sqf
@@ -0,0 +1,355 @@
+/* TK Loadout */
+Private ['_tiMode'];
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+if (!isServer || local player) then {
+ if (side player == EAST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10x_303"];
+ _m = _m + ["30Rnd_762x39_SA58"];
+ _m = _m + ["20Rnd_762x51_FNFAL"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["Dragon_EP1"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["6Rnd_45ACP"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+ _m = _m + ["10Rnd_B_765x17_Ball"];
+ _m = _m + ["20Rnd_B_765x17_Ball"];
+ _m = _m + ["30Rnd_9x19_UZI"];
+ _m = _m + ["30Rnd_9x19_UZI_SD"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AK_74_GL_kobra'];
+ _w = _w + ['AKS_74'];
+ if (_tiMode) then {
+ _w = _w + ['AKS_74_GOSHAWK'];
+ };
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_NSPU'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['FN_FAL'];
+ _w = _w + ['FN_FAL_ANPVS4'];
+ _w = _w + ['LeeEnfield'];
+ _w = _w + ['PK'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['Sa58P_EP1'];
+ _w = _w + ['Sa58V_EP1'];
+ _w = _w + ['Sa58V_RCO_EP1'];
+ _w = _w + ['Sa58V_CCO_EP1'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_des_EP1'];
+ _w = _w + ['SVD_NSPU_EP1'];
+ _w = _w + ['ksvk'];;
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['M47Launcher_EP1'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ /* Not all units are able to carry a backpack */
+ _get = getNumber(configFile >> 'CfgVehicles' >> typeOf player >> 'canCarryBackPack');
+
+ if (_get == 1) then {
+ _w = _w + ['TK_Assault_Pack_EP1'];
+ _w = _w + ['TK_RPG_Backpack_EP1'];
+ _w = _w + ['TK_ALICE_Pack_EP1'];
+ _w = _w + ['Tripod_Bag'];
+ _w = _w + ['KORD_TK_Bag_EP1'];
+ _w = _w + ['KORD_high_TK_Bag_EP1'];
+ _w = _w + ['SPG9_TK_INS_Bag_EP1'];
+ _w = _w + ['AGS_TK_Bag_EP1'];
+ _w = _w + ['Metis_TK_Bag_EP1'];
+ _w = _w + ['2b14_82mm_TK_Bag_EP1'];
+ };
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearm. */
+ _w = ['Makarov'];
+ _w = _w + ['revolver_EP1'];
+ _w = _w + ['revolver_gold_EP1'];
+ _w = _w + ['MakarovSD'];
+ _w = _w + ['Sa61_EP1'];
+ _w = _w + ['UZI_EP1'];
+ _w = _w + ['UZI_SD_EP1'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_ied_v1'];
+ _w = _w + ['BAF_ied_v2'];
+ _w = _w + ['BAF_ied_v3'];
+ _w = _w + ['BAF_ied_v4'];
+ };
+
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['Binocular_Vector'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = [['AKS_74_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL_kobra' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL_kobra' >> 'picture')];
+ _t = _t + [['AK_74_GL_kobra']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'picture')];
+ _t = _t + [['AKS_74_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'picture')];
+ _t = _t + [['Sa58V_RCO_EP1','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'picture')];
+ _t = _t + [['AK_74','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'picture')];
+ _t = _t + [['AKS_74_U','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ if (_tiMode) then {
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'picture')];
+ _t = _t + [['AKS_74_GOSHAWK','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+ };
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'picture')];
+ _t = _t + [['SVD_des_EP1','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_NSPU' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_NSPU' >> 'picture')];
+ _t = _t + [['AKS_74_NSPU','Laserdesignator','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_EASTDEFAULTWEAPONS',['AK_74','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_EASTLEADERWEAPONS01',['AKS_74','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS02',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_EASTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_EASTLEADERWEAPONS11',['AKS_74_kobra','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_EASTLEADERWEAPONS21',['AKS_74_NSPU','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO21',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS22',['SVD_des_EP1','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO22',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS23',['PK','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO23',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_EASTLEADERWEAPONS31',['AK_74_GL','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS32',['Sa58V_RCO_EP1','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO32',['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS33',['SVD_NSPU_EP1','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO33',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Arrowhead/Loadout_TKA.sqf b/Common/Config/Core_Loadout/Arrowhead/Loadout_TKA.sqf
new file mode 100644
index 0000000..5b7e7cd
--- /dev/null
+++ b/Common/Config/Core_Loadout/Arrowhead/Loadout_TKA.sqf
@@ -0,0 +1,355 @@
+/* TK Loadout */
+Private ['_tiMode'];
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+if (!isServer || local player) then {
+ if (side player == EAST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10x_303"];
+ _m = _m + ["30Rnd_762x39_SA58"];
+ _m = _m + ["20Rnd_762x51_FNFAL"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["Dragon_EP1"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["6Rnd_45ACP"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+ _m = _m + ["10Rnd_B_765x17_Ball"];
+ _m = _m + ["20Rnd_B_765x17_Ball"];
+ _m = _m + ["30Rnd_9x19_UZI"];
+ _m = _m + ["30Rnd_9x19_UZI_SD"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AK_74_GL_kobra'];
+ _w = _w + ['AKS_74'];
+ if (_tiMode) then {
+ _w = _w + ['AKS_74_GOSHAWK'];
+ };
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_NSPU'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['FN_FAL'];
+ _w = _w + ['FN_FAL_ANPVS4'];
+ _w = _w + ['LeeEnfield'];
+ _w = _w + ['PK'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['Sa58P_EP1'];
+ _w = _w + ['Sa58V_EP1'];
+ _w = _w + ['Sa58V_RCO_EP1'];
+ _w = _w + ['Sa58V_CCO_EP1'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_des_EP1'];
+ _w = _w + ['SVD_NSPU_EP1'];
+ _w = _w + ['ksvk'];;
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['M47Launcher_EP1'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ /* Not all units are able to carry a backpack */
+ _get = getNumber(configFile >> 'CfgVehicles' >> typeOf player >> 'canCarryBackPack');
+
+ if (_get == 1) then {
+ _w = _w + ['TK_Assault_Pack_EP1'];
+ _w = _w + ['TK_RPG_Backpack_EP1'];
+ _w = _w + ['TK_ALICE_Pack_EP1'];
+ _w = _w + ['Tripod_Bag'];
+ _w = _w + ['KORD_TK_Bag_EP1'];
+ _w = _w + ['KORD_high_TK_Bag_EP1'];
+ _w = _w + ['SPG9_TK_INS_Bag_EP1'];
+ _w = _w + ['AGS_TK_Bag_EP1'];
+ _w = _w + ['Metis_TK_Bag_EP1'];
+ _w = _w + ['2b14_82mm_TK_Bag_EP1'];
+ };
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearm. */
+ _w = ['Makarov'];
+ _w = _w + ['revolver_EP1'];
+ _w = _w + ['revolver_gold_EP1'];
+ _w = _w + ['MakarovSD'];
+ _w = _w + ['Sa61_EP1'];
+ _w = _w + ['UZI_EP1'];
+ _w = _w + ['UZI_SD_EP1'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_ied_v1'];
+ _w = _w + ['BAF_ied_v2'];
+ _w = _w + ['BAF_ied_v3'];
+ _w = _w + ['BAF_ied_v4'];
+ };
+
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['Binocular_Vector'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = [['AKS_74_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL_kobra' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL_kobra' >> 'picture')];
+ _t = _t + [['AK_74_GL_kobra']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'picture')];
+ _t = _t + [['AKS_74_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'picture')];
+ _t = _t + [['Sa58V_RCO_EP1','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'picture')];
+ _t = _t + [['AK_74','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'picture')];
+ _t = _t + [['AKS_74_U','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ if (_tiMode) then {
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'picture')];
+ _t = _t + [['AKS_74_GOSHAWK','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+ };
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'picture')];
+ _t = _t + [['SVD_des_EP1','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_NSPU' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_NSPU' >> 'picture')];
+ _t = _t + [['AKS_74_NSPU','Laserdesignator','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_EASTDEFAULTWEAPONS',['AK_74','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_EASTLEADERWEAPONS01',['AKS_74','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS02',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_EASTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_EASTLEADERWEAPONS11',['AKS_74_kobra','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_EASTLEADERWEAPONS21',['AKS_74_NSPU','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO21',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS22',['SVD_des_EP1','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO22',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS23',['PK','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO23',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_EASTLEADERWEAPONS31',['AK_74_GL','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS32',['Sa58V_RCO_EP1','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO32',['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS33',['SVD_NSPU_EP1','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO33',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Arrowhead/Loadout_US.sqf b/Common/Config/Core_Loadout/Arrowhead/Loadout_US.sqf
new file mode 100644
index 0000000..d1333e0
--- /dev/null
+++ b/Common/Config/Core_Loadout/Arrowhead/Loadout_US.sqf
@@ -0,0 +1,450 @@
+/* US Loadout */
+Private ['_tiMode'];
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+if (!isServer || local player) then {
+ if (side player == WEST) then {
+ /* Magazines. */
+ _m = ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_StanagSD"];
+ _m = _m + ["20Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_G36"];
+ _m = _m + ["30Rnd_556x45_G36SD"];
+ _m = _m + ["100Rnd_556x45_BetaCMag"];
+ _m = _m + ["5Rnd_762x51_M24"];
+ _m = _m + ["20Rnd_762x51_DMR"];
+ _m = _m + ["10Rnd_127x99_m107"];
+ _m = _m + ["100Rnd_762x51_M240"];
+ _m = _m + ["100Rnd_556x45_M249"];
+ _m = _m + ["200Rnd_556x45_M249"];
+ _m = _m + ["20Rnd_762x51_B_SCAR"];
+ _m = _m + ["20Rnd_762x51_SB_SCAR"];
+ _m = _m + ["6Rnd_HE_M203"];
+ _m = _m + ["6Rnd_FlareWhite_M203"];
+ _m = _m + ["6Rnd_FlareGreen_M203"];
+ _m = _m + ["6Rnd_FlareRed_M203"];
+ _m = _m + ["6Rnd_FlareYellow_M203"];
+ _m = _m + ["6Rnd_Smoke_M203"];
+ _m = _m + ["6Rnd_SmokeRed_M203"];
+ _m = _m + ["6Rnd_SmokeGreen_M203"];
+ _m = _m + ["6Rnd_SmokeYellow_M203"];
+ _m = _m + ["M136"];
+ _m = _m + ["MAAWS_HEAT"];
+ _m = _m + ["MAAWS_HEDP"];
+ _m = _m + ["Javelin"];
+ _m = _m + ["Stinger"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["15Rnd_9x19_M9"];
+ _m = _m + ["15Rnd_9x19_M9SD"];
+ _m = _m + ["7Rnd_45ACP_1911"];
+ _m = _m + ["17Rnd_9x19_glock17"];
+
+ if (paramDLCBAF) then {
+ _m = _m + ["5Rnd_127x99_AS50"];
+ _m = _m + ["5Rnd_86x70_L115A1"];
+ _m = _m + ["200Rnd_556x45_L110A1"];
+ _m = _m + ["NLAW"];
+ };
+
+ if (paramDLCPMC) then {
+ _m = _m + ["20Rnd_B_AA12_Pellets"];
+ _m = _m + ["20Rnd_B_AA12_74Slug"];
+ _m = _m + ["20Rnd_B_AA12_HE"];
+ };
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['M24_des_EP1'];
+ _w = _w + ['m240_scoped_EP1'];
+ _w = _w + ['M60A4_EP1'];
+ _w = _w + ['Mk_48_DES_EP1'];
+ _w = _w + ['M249_EP1'];
+ if (_tiMode) then {
+ _w = _w + ['M249_TWS_EP1'];
+ };
+ _w = _w + ['M249_m145_EP1'];
+ _w = _w + ['M4A1'];
+ _w = _w + ['M4A3_CCO_EP1'];
+ _w = _w + ['M4A3_RCO_GL_EP1'];
+ _w = _w + ['G36C_camo'];
+ _w = _w + ['G36_C_SD_camo'];
+ _w = _w + ['G36A_camo'];
+ _w = _w + ['G36K_camo'];
+ _w = _w + ['MG36_camo'];
+ _w = _w + ['M32_EP1'];
+ _w = _w + ['M79_EP1'];
+ _w = _w + ['Mk13_EP1'];
+ _w = _w + ['M14_EP1'];
+ _w = _w + ['m107'];
+ if (_tiMode) then {
+ _w = _w + ['m107_TWS_EP1'];
+ _w = _w + ['M110_TWS_EP1'];
+ };
+ _w = _w + ['M110_NVG_EP1'];
+ _w = _w + ['SCAR_L_CQC'];
+ _w = _w + ['SCAR_L_CQC_Holo'];
+ _w = _w + ['SCAR_L_STD_Mk4CQT'];
+ _w = _w + ['SCAR_L_STD_EGLM_RCO'];
+ _w = _w + ['SCAR_L_CQC_EGLM_Holo'];
+ if (_tiMode) then {
+ _w = _w + ['SCAR_L_STD_EGLM_TWS'];
+ };
+ _w = _w + ['SCAR_L_STD_HOLO'];
+ _w = _w + ['SCAR_H_CQC_CCO'];
+ _w = _w + ['SCAR_H_CQC_CCO_SD'];
+ _w = _w + ['SCAR_H_STD_EGLM_Spect'];
+ _w = _w + ['SCAR_H_LNG_Sniper'];
+ _w = _w + ['SCAR_H_LNG_Sniper_SD'];
+ if (_tiMode) then {
+ _w = _w + ['SCAR_H_STD_TWS_SD'];
+ };
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_AS50_scoped'];
+ if (_tiMode) then {
+ _w = _w + ['BAF_AS50_TWS'];
+ };
+ _w = _w + ['BAF_LRR_scoped'];
+ _w = _w + ['BAF_LRR_scoped_W'];
+ _w = _w + ['BAF_L85A2_RIS_Holo'];
+ _w = _w + ['BAF_L85A2_UGL_Holo'];
+ _w = _w + ['BAF_L85A2_RIS_SUSAT'];
+ _w = _w + ['BAF_L85A2_UGL_SUSAT'];
+ _w = _w + ['BAF_L85A2_RIS_ACOG'];
+ _w = _w + ['BAF_L85A2_UGL_ACOG'];
+ if (_tiMode) then {
+ _w = _w + ['BAF_L85A2_RIS_CWS'];
+ };
+ _w = _w + ['BAF_L86A2_ACOG'];
+ _w = _w + ['BAF_L110A1_Aim'];
+ _w = _w + ['BAF_L7A2_GPMG'];
+ };
+
+ if (paramDLCPMC) then {
+ _w = _w + ['AA12_PMC'];
+ _w = _w + ['m8_carbine'];
+ _w = _w + ['m8_carbineGL'];
+ _w = _w + ['m8_compact'];
+ _w = _w + ['m8_sharpshooter'];
+ _w = _w + ['m8_SAW'];
+ _w = _w + ['m8_carbine_pmc'];
+ _w = _w + ['m8_compact_pmc'];
+ _w = _w + ['m8_holo_sd'];
+ if (_tiMode) then {
+ _w = _w + ['m8_tws'];
+ _w = _w + ['m8_tws_sd'];
+ };
+ };
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+
+ _w = ['M136'];
+ _w = _w + ['MAAWS'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_NLAW_Launcher'];
+ };
+
+ _w = _w + ['Javelin'];
+ _w = _w + ['Stinger'];
+ _w = _w + ['Laserdesignator'];
+
+ /* Not all units are able to carry a backpack */
+ _get = getNumber(configFile >> 'CfgVehicles' >> typeOf player >> 'canCarryBackPack');
+
+ if (_get == 1) then {
+ _w = _w + ['US_Assault_Pack_EP1'];
+ _w = _w + ['US_Patrol_Pack_EP1'];
+ _w = _w + ['US_Backpack_EP1'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_AssaultPack_RifleAmmo'];
+ };
+
+ _w = _w + ['Tripod_Bag'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_L2A1_ACOG_minitripod_bag'];
+ _w = _w + ['BAF_L2A1_ACOG_tripod_bag'];
+ _w = _w + ['BAF_GPMG_Minitripod_D_bag'];
+ _w = _w + ['BAF_GMG_ACOG_minitripod_bag'];
+ };
+
+ _w = _w + ['M2HD_mini_TriPod_US_Bag_EP1'];
+ _w = _w + ['M2StaticMG_US_Bag_EP1'];
+ _w = _w + ['MK19_TriPod_US_Bag_EP1'];
+ _w = _w + ['TOW_TriPod_US_Bag_EP1'];
+ _w = _w + ['M252_US_Bag_EP1'];
+ };
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearm. */
+ _w = ['Colt1911'];
+ _w = _w + ['M9'];
+ _w = _w + ['M9SD'];
+ _w = _w + ['glock17_EP1'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+
+ _w = ['HandGrenade_West'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_L109A1_HE'];
+ };
+
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['IR_Strobe_Target'];
+ _w = _w + ['IR_Strobe_Marker'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_M203'];
+ _w = _w + ['FlareYellow_M203'];
+ _w = _w + ['FlareGreen_M203'];
+ _w = _w + ['FlareRed_M203'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_Smoke_M203'];
+ _w = _w + ['1Rnd_SmokeRed_M203'];
+ _w = _w + ['1Rnd_SmokeGreen_M203'];
+ _w = _w + ['1Rnd_SmokeYellow_M203'];
+ _w = _w + ['Mine'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['Binocular_Vector'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'picture')];
+ _t = [['SCAR_L_CQC','Colt1911']];
+ _m = [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ 'HandGrenade_West','HandGrenade_West','SmokeShellBlue','SmokeShellBlue','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M16A2GL' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M16A2GL' >> 'picture')];
+ _t = _t + [['M16A2GL']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ '30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203',
+ '1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'G36C_camo' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M136' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'G36C_camo' >> 'picture')];
+ _t = _t + [['G36C_camo','M136']];
+ _m = _m + [['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_STD_EGLM_Spect' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MAAWS' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_STD_EGLM_Spect' >> 'picture')];
+ _t = _t + [['SCAR_H_STD_EGLM_Spect','MAAWS']];
+ _m = _m + [['20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','MAAWS_HEAT',
+ 'MAAWS_HEAT','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_HOLO' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MAAWS' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_HOLO' >> 'picture')];
+ _t = _t + [['SCAR_L_STD_HOLO','MAAWS','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M4A3_CCO_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Javelin' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M4A3_CCO_EP1' >> 'picture')];
+ _t = _t + [['M4A3_CCO_EP1','Javelin','Colt1911']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Javelin',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_Mk4CQT' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Stinger' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_Mk4CQT' >> 'picture')];
+ _t = _t + [['SCAR_L_STD_Mk4CQT','Stinger','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Stinger',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'Mine' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'picture')];
+ _t = _t + [['SCAR_L_CQC','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Mine','Mine','Mine',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_CQC_CCO_SD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_CQC_CCO_SD' >> 'picture')];
+ _t = _t + [['SCAR_H_CQC_CCO_SD','M9SD']];
+ _m = _m + [['20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','PipeBomb','PipeBomb','PipeBomb',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm240_scoped_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm240_scoped_EP1' >> 'picture')];
+ _t = _t + [['m240_scoped_EP1','Colt1911']];
+ _m = _m + [['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M249_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M249_EP1' >> 'picture')];
+ _t = _t + [['M249_EP1','Colt1911']];
+ _m = _m + [['200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M14_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M14_EP1' >> 'picture')];
+ _t = _t + [['M14_EP1','M9SD']];
+ _m = _m + [['20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR',
+ '20Rnd_762x51_DMR','20Rnd_762x51_DMR','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ if (_tiMode) then {
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M110_TWS_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M110_TWS_EP1' >> 'picture')];
+ _t = _t + [['M110_TWS_EP1','Laserdesignator','M9SD']];
+ _m = _m + [['20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR',
+ '20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','HandGrenade_West','Laserbatteries','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+ };
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'picture')];
+ _t = _t + [['m107','M9SD']];
+ _m = _m + [['10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107',
+ '10Rnd_127x99_m107','10Rnd_127x99_m107','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_WESTDEFAULTWEAPONS',['M16A2','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_WESTDEFAULTAMMO',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_WESTLEADERWEAPONS01',['SCAR_L_CQC','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO01',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS02',['G36C_camo','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO02',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS03',['m240_scoped_EP1','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_WESTLEADERAMMO03',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_WESTLEADERWEAPONS11',['M4A3_CCO_EP1','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO11',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS12',['G36K_camo','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO12',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS13',['M14_EP1','M9SD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO13',['20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_WESTLEADERWEAPONS21',['SCAR_L_STD_HOLO','MAAWS','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO21',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS22',['G36C_camo','MAAWS','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO22',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','MAAWS_HEAT','MAAWS_HEAT','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS23',['MG36_camo','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO23',['100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_WESTLEADERWEAPONS31',['SCAR_L_CQC_EGLM_Holo','MAAWS','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO31',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS32',['SCAR_H_STD_EGLM_Spect','Javelin','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO32',['20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','Javelin','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS33',['Mk_48_DES_EP1','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO33',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/CombinedOps/Loadout_RU.sqf b/Common/Config/Core_Loadout/CombinedOps/Loadout_RU.sqf
new file mode 100644
index 0000000..137c6a8
--- /dev/null
+++ b/Common/Config/Core_Loadout/CombinedOps/Loadout_RU.sqf
@@ -0,0 +1,483 @@
+/* RU Loadout */
+Private ['_tiMode'];
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+if (!isServer || local player) then {
+ if (side player == EAST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["30Rnd_556x45_G36"];
+ _m = _m + ["30Rnd_556x45_G36SD"];
+ _m = _m + ["100Rnd_556x45_BetaCMag"];
+ _m = _m + ["64Rnd_9x19_Bizon"];
+ _m = _m + ["64Rnd_9x19_SD_Bizon"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["5x_22_LR_17_HMR"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["8Rnd_B_Saiga12_74Slug"];
+ _m = _m + ["8Rnd_B_Saiga12_Pellets"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10Rnd_9x39_SP5_VSS"];
+ _m = _m + ["20Rnd_9x39_SP5_VSS"];
+ _m = _m + ["10x_303"];
+ _m = _m + ["30Rnd_762x39_SA58"];
+ _m = _m + ["20Rnd_762x51_FNFAL"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["Dragon_EP1"];
+ _m = _m + ["SMAW_HEAA"];
+ _m = _m + ["SMAW_HEDP"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["6Rnd_45ACP"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+ _m = _m + ["10Rnd_B_765x17_Ball"];
+ _m = _m + ["20Rnd_B_765x17_Ball"];
+ _m = _m + ["30Rnd_9x19_UZI"];
+ _m = _m + ["30Rnd_9x19_UZI_SD"];
+ if (paramDLCPMC) then {
+ _m = _m + ["20Rnd_B_AA12_Pellets"];
+ _m = _m + ["20Rnd_B_AA12_74Slug"];
+ _m = _m + ["20Rnd_B_AA12_HE"];
+ };
+
+ if (WF_ACE) then
+ {
+ _m = _m + ["ACE_Battery_Rangefinder"];
+ _m = _m + ["ACE_75Rnd_762x39_B_AK47"];
+ _m = _m + ["ACE_40Rnd_762x39_B_AK47"];
+ _m = _m + ["ACE_75Rnd_762x39_T_AK47"];
+ _m = _m + ["ACE_40Rnd_762x39_T_AK47"];
+ _m = _m + ["ACE_30Rnd_762x39_T_AK47"];
+ _m = _m + ["ACE_30Rnd_762x39_SD_AK47"];
+ _m = _m + ["ACE_75Rnd_545x39_T_RPK"];
+ _m = _m + ["ACE_30Rnd_545x39_T_AK"];
+ _m = _m + ["ACE_10Rnd_762x54_T_SVD"];
+ _m = _m + ["ACE_5Rnd_127x108_T_KSVK"];
+ _m = _m + ["ACE_TBG7V"];
+ _m = _m + ["ACE_RPG29_PG29"];
+ _m = _m + ["ACE_RPG29_TBG29"];
+ _m = _m + ["ACE_2B14HE_CSWDM"];
+ _m = _m + ["ACE_KORD_CSWDM"];
+ _m = _m + ["ACE_Konkurs_CSWDM"];
+ _m = _m + ["ACE_2B14WP_CSWDM"];
+ _m = _m + ["ACE_30Rnd_762x39_T_SA58"];
+ _m = _m + ["ACE_5Rnd_25x59_HEDP_Barrett"];
+ };
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AK_74_GL_kobra'];
+ _w = _w + ['AK_107_kobra'];
+ _w = _w + ['AK_107_GL_kobra'];
+ _w = _w + ['AK_107_pso'];
+ _w = _w + ['AK_107_GL_pso'];
+ _w = _w + ['AKS_74'];
+ if (_tiMode) then {
+ _w = _w + ['AKS_74_GOSHAWK'];
+ };
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_NSPU'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['AKS_74_UN_kobra'];
+ _w = _w + ['AKS_GOLD'];
+ _w = _w + ['bizon'];
+ _w = _w + ['bizon_silenced'];
+ _w = _w + ['FN_FAL'];
+ _w = _w + ['FN_FAL_ANPVS4'];
+ _w = _w + ['LeeEnfield'];
+ _w = _w + ['PK'];
+ _w = _w + ['Pecheneg'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['huntingrifle'];
+ _w = _w + ['Sa58P_EP1'];
+ _w = _w + ['Sa58V_EP1'];
+ _w = _w + ['Sa58V_RCO_EP1'];
+ _w = _w + ['Sa58V_CCO_EP1'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_des_EP1'];
+ _w = _w + ['SVD_NSPU_EP1'];
+ _w = _w + ['SVD_CAMO'];
+ _w = _w + ['Saiga12K'];
+ _w = _w + ['ksvk'];
+ _w = _w + ['VSS_vintorez'];
+
+ if (WF_ACE) then
+ {
+ _w = _w + ['ACE_SVD_Bipod'];
+ _w = _w + ['ACE_AK103'];
+ _w = _w + ['ACE_AK103_Kobra'];
+ _w = _w + ['ACE_AK104_Kobra'];
+ _w = _w + ['ACE_AK104'];
+ _w = _w + ['ACE_AK104_PSO'];
+ _w = _w + ['ACE_AK104_1P29'];
+ _w = _w + ['ACE_AK103_GL'];
+ _w = _w + ['ACE_AK103_1P29'];
+ _w = _w + ['ACE_AK103_GL_1P29'];
+ _w = _w + ['ACE_AK103_GL_PSO'];
+ _w = _w + ['ACE_AK103_GL_Kobra'];
+ _w = _w + ['ACE_AK105_1P29'];
+ _w = _w + ['ACE_RPK74M_1P29'];
+ _w = _w + ['ACE_AKMS_SD'];
+ _w = _w + ['ACE_AK105_Kobra'];
+ _w = _w + ['ACE_AK103_PSO'];
+ _w = _w + ['ACE_AK74M_GL_1P29'];
+ _w = _w + ['ACE_AK74M_GL_PSO'];
+ _w = _w + ['ACE_AK74M_GL_Kobra'];
+ _w = _w + ['ACE_AK74M_PSO'];
+ _w = _w + ['ACE_AK74M_1P29'];
+ _w = _w + ['ACE_M109'];
+ };
+
+ _w = _w + ['m8_carbine'];
+ _w = _w + ['m8_carbineGL'];
+ _w = _w + ['m8_compact'];
+ _w = _w + ['m8_sharpshooter'];
+ _w = _w + ['m8_SAW'];
+ if (paramDLCPMC) then {
+ _w = _w + ['AA12_PMC'];
+ _w = _w + ['m8_carbine_pmc'];
+ _w = _w + ['m8_compact_pmc'];
+ _w = _w + ['m8_holo_sd'];
+ if (_tiMode) then {
+ _w = _w + ['m8_tws'];
+ _w = _w + ['m8_tws_sd'];
+ };
+ };
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['M47Launcher_EP1'];
+ _w = _w + ['SMAW'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ if (WF_ACE) then
+ {
+ _w = _w + ['ACE_RPG7V_PGO7'];
+ _w = _w + ['ACE_RPG29'];
+ _w = _w + ['ACE_RPG27'];
+ _w = _w + ['ACE_KORDProxy'];
+ _w = _w + ['ACE_6T7TripodProxy'];
+ _w = _w + ['ACE_KonkursTripodProxy'];
+ _w = _w + ['ACE_2b14Proxy'];
+ _w = _w + ['ACE_2b14TripodProxy'];
+ _w = _w + ['ACE_Rucksack_RD90'];
+ _w = _w + ['ACE_Rucksack_RD54'];
+ _w = _w + ['ACE_Rucksack_RD99'];
+ }
+ else
+ {
+ /* Not all units are able to carry a backpack */
+ _get = getNumber(configFile >> 'CfgVehicles' >> typeOf player >> 'canCarryBackPack');
+
+ if (_get == 1) then {
+ _w = _w + ['TK_Assault_Pack_EP1'];
+ _w = _w + ['TK_RPG_Backpack_EP1'];
+ _w = _w + ['TK_ALICE_Pack_EP1'];
+ _w = _w + ['Tripod_Bag'];
+ _w = _w + ['KORD_TK_Bag_EP1'];
+ _w = _w + ['KORD_high_TK_Bag_EP1'];
+ _w = _w + ['SPG9_TK_INS_Bag_EP1'];
+ _w = _w + ['AGS_TK_Bag_EP1'];
+ _w = _w + ['Metis_TK_Bag_EP1'];
+ _w = _w + ['2b14_82mm_TK_Bag_EP1'];
+ };
+ };
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Makarov'];
+ _w = _w + ['revolver_EP1'];
+ _w = _w + ['revolver_gold_EP1'];
+ _w = _w + ['MakarovSD'];
+ _w = _w + ['Sa61_EP1'];
+ _w = _w + ['UZI_EP1'];
+ _w = _w + ['UZI_SD_EP1'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['Binocular_Vector'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ if (WF_ACE) then
+ {
+ _w = _w + ['ACE_MX2A'];
+ _w = _w + ['ACE_Earplugs'];
+ _w = _w + ['ACE_Bandage'];
+ _w = _w + ['ACE_Morphine'];
+ _w = _w + ['ACE_Epinephrine'];
+ _w = _w + ['ACE_Medkit'];
+ _w = _w + ['ACE_GlassesLHD_glasses'];
+ _w = _w + ['ACE_GlassesTactical'];
+ };
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'picture')];
+ _t = [['AK_107_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_kobra' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_kobra' >> 'picture')];
+ _t = _t + [['AK_107_GL_kobra']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_pso' >> 'picture')];
+ _t = _t + [['AK_107_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Sa58V_RCO_EP1' >> 'picture')];
+ _t = _t + [['Sa58V_RCO_EP1','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'picture')];
+ _t = _t + [['AK_107_kobra','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'bizon_silenced' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'bizon_silenced' >> 'picture')];
+ _t = _t + [['bizon_silenced','Makarov']];
+ _m = _m + [['64Rnd_9x19_SD_Bizon','64Rnd_9x19_SD_Bizon','64Rnd_9x19_SD_Bizon','64Rnd_9x19_SD_Bizon','64Rnd_9x19_SD_Bizon','64Rnd_9x19_SD_Bizon','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ if (_tiMode) then {
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_GOSHAWK' >> 'picture')];
+ _t = _t + [['AKS_74_GOSHAWK','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+ };
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD_des_EP1' >> 'picture')];
+ _t = _t + [['SVD_des_EP1','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'picture')];
+ _t = _t + [['VSS_vintorez','Laserdesignator','MakarovSD']];
+ _m = _m + [['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS',
+ '20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+if (WF_ACE) then
+{
+ ['WFBE_EASTDEFAULTWEAPONS',['AK_107_kobra','ItemCompass','ItemMap','ItemWatch','ItemRadio','ACE_Earplugs','Binocular','RPG18'],true] Call SetNamespace;
+ ['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+}
+else
+{
+ ['WFBE_EASTDEFAULTWEAPONS',['AK_107_kobra','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+ ['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+};
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_EASTLEADERWEAPONS01',['AKS_74','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS02',['AK_107_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_EASTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_EASTLEADERWEAPONS11',['AK_107_kobra','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_EASTLEADERWEAPONS21',['AK_107_pso','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO21',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS22',['SVD_des_EP1','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO22',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS23',['Pecheneg','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO23',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_EASTLEADERWEAPONS31',['AK_107_GL_pso','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS32',['Sa58V_RCO_EP1','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO32',['30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','30Rnd_762x39_SA58','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS33',['VSS_vintorez','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO33',['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/CombinedOps/Loadout_US.sqf b/Common/Config/Core_Loadout/CombinedOps/Loadout_US.sqf
new file mode 100644
index 0000000..0d658e2
--- /dev/null
+++ b/Common/Config/Core_Loadout/CombinedOps/Loadout_US.sqf
@@ -0,0 +1,574 @@
+/* US Loadout */
+Private ['_tiMode'];
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+if (!isServer || local player) then {
+ if (side player == WEST) then {
+ /* Magazines. */
+ _m = ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_StanagSD"];
+ _m = _m + ["20Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_G36"];
+ _m = _m + ["30Rnd_556x45_G36SD"];
+ _m = _m + ["100Rnd_556x45_BetaCMag"];
+ _m = _m + ["5Rnd_762x51_M24"];
+ _m = _m + ["20Rnd_762x51_DMR"];
+ _m = _m + ["10Rnd_127x99_m107"];
+ _m = _m + ["100Rnd_762x51_M240"];
+ _m = _m + ["100Rnd_556x45_M249"];
+ _m = _m + ["200Rnd_556x45_M249"];
+ _m = _m + ["30Rnd_9x19_MP5"];
+ _m = _m + ["30Rnd_9x19_MP5SD"];
+ _m = _m + ["8Rnd_B_Beneli_74Slug"];
+ _m = _m + ["8Rnd_B_Beneli_Pellets"];
+ _m = _m + ["20Rnd_762x51_B_SCAR"];
+ _m = _m + ["20Rnd_762x51_SB_SCAR"];
+ _m = _m + ["6Rnd_HE_M203"];
+ _m = _m + ["6Rnd_FlareWhite_M203"];
+ _m = _m + ["6Rnd_FlareGreen_M203"];
+ _m = _m + ["6Rnd_FlareRed_M203"];
+ _m = _m + ["6Rnd_FlareYellow_M203"];
+ _m = _m + ["6Rnd_Smoke_M203"];
+ _m = _m + ["6Rnd_SmokeRed_M203"];
+ _m = _m + ["6Rnd_SmokeGreen_M203"];
+ _m = _m + ["6Rnd_SmokeYellow_M203"];
+ _m = _m + ["M136"];
+ _m = _m + ["MAAWS_HEAT"];
+ _m = _m + ["MAAWS_HEDP"];
+ _m = _m + ["SMAW_HEAA"];
+ _m = _m + ["SMAW_HEDP"];
+ _m = _m + ["Javelin"];
+ _m = _m + ["Stinger"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["15Rnd_9x19_M9"];
+ _m = _m + ["15Rnd_9x19_M9SD"];
+ _m = _m + ["7Rnd_45ACP_1911"];
+ _m = _m + ["17Rnd_9x19_glock17"];
+
+ if (WF_ACE) then
+ {
+ _m = _m + ["ACE_Battery_Rangefinder"];
+ _m = _m + ["ACE_20Rnd_762x51_B_HK417"];
+ _m = _m + ["ACE_30Rnd_556x45_T_Stanag"];
+ _m = _m + ["ACE_20Rnd_762x51_T_M110"];
+ _m = _m + ["ACE_100Rnd_556x45_T_M249"];
+ _m = _m + ["ACE_200Rnd_556x45_T_M249"];
+ _m = _m + ["ACE_10Rnd_127x99_T_m107"];
+ _m = _m + ["ACE_10Rnd_127x99_Raufoss_m107"];
+ _m = _m + ["ACE_M252HE_CSWDM"];
+ _m = _m + ["ACE_M252WP_CSWDM"];
+ _m = _m + ["ACE_M2_CSWDM"];
+ _m = _m + ["ACE_TOW_CSWDM"];
+ _m = _m + ["ACE_5Rnd_25x59_HEDP_Barrett"];
+ _m = _m + ["ACE_30Rnd_556x45_T_G36"];
+ _m = _m + ["ACE_20Rnd_762x51_T_HK417"];
+ _m = _m + ["ACE_5Rnd_762x51_T_M24"];
+ _m = _m + ["ACE_20Rnd_762x51_SB_SCAR"];
+ };
+
+ if (paramDLCBAF) then {
+ _m = _m + ["5Rnd_127x99_AS50"];
+ _m = _m + ["5Rnd_86x70_L115A1"];
+ _m = _m + ["200Rnd_556x45_L110A1"];
+ _m = _m + ["NLAW"];
+ };
+
+ if (paramDLCPMC) then {
+ _m = _m + ["20Rnd_B_AA12_Pellets"];
+ _m = _m + ["20Rnd_B_AA12_74Slug"];
+ _m = _m + ["20Rnd_B_AA12_HE"];
+ };
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['m16a4'];
+ _w = _w + ['m16a4_acg'];
+ _w = _w + ['M16A4_GL'];
+ _w = _w + ['M16A4_ACG_GL'];
+ _w = _w + ['M24'];
+ _w = _w + ['M40A3'];
+ _w = _w + ['M24_des_EP1'];
+ _w = _w + ['M240'];
+ _w = _w + ['m240_scoped_EP1'];
+ _w = _w + ['M60A4_EP1'];
+ _w = _w + ['Mk_48'];
+ _w = _w + ['Mk_48_DES_EP1'];
+ _w = _w + ['M249_EP1'];
+ if (_tiMode) then {
+ _w = _w + ['M249_TWS_EP1'];
+ };
+ _w = _w + ['M249_m145_EP1'];
+ _w = _w + ['M4A1'];
+ _w = _w + ['M4A1_Aim'];
+ _w = _w + ['M4A1_Aim_camo'];
+ _w = _w + ['M4A1_RCO_GL'];
+ _w = _w + ['M4A1_AIM_SD_camo'];
+ _w = _w + ['M4A1_HWS_GL_SD_Camo'];
+ _w = _w + ['M4A1_HWS_GL'];
+ _w = _w + ['M4A1_HWS_GL_camo'];
+ _w = _w + ['M4SPR'];
+ _w = _w + ['M4A3_CCO_EP1'];
+ _w = _w + ['M4A3_RCO_GL_EP1'];
+ _w = _w + ['MP5SD'];
+ _w = _w + ['MP5A5'];
+ _w = _w + ['G36C'];
+ _w = _w + ['G36C_camo'];
+ _w = _w + ['G36_C_SD_eotech'];
+ _w = _w + ['G36_C_SD_camo'];
+ _w = _w + ['G36a'];
+ _w = _w + ['G36A_camo'];
+ _w = _w + ['G36K'];
+ _w = _w + ['G36K_camo'];
+ _w = _w + ['MG36'];
+ _w = _w + ['MG36_camo'];
+ _w = _w + ['DMR'];
+ _w = _w + ['M1014'];
+ _w = _w + ['M32_EP1'];
+ _w = _w + ['M79_EP1'];
+ _w = _w + ['Mk13_EP1'];
+ _w = _w + ['M14_EP1'];
+ _w = _w + ['m107'];
+ if (_tiMode) then {
+ _w = _w + ['m107_TWS_EP1'];
+ _w = _w + ['M110_TWS_EP1'];
+ };
+ _w = _w + ['M110_NVG_EP1'];
+ _w = _w + ['SCAR_L_CQC'];
+ _w = _w + ['SCAR_L_CQC_Holo'];
+ _w = _w + ['SCAR_L_STD_Mk4CQT'];
+ _w = _w + ['SCAR_L_STD_EGLM_RCO'];
+ _w = _w + ['SCAR_L_CQC_EGLM_Holo'];
+ if (_tiMode) then {
+ _w = _w + ['SCAR_L_STD_EGLM_TWS'];
+ };
+ _w = _w + ['SCAR_L_STD_HOLO'];
+ _w = _w + ['SCAR_H_CQC_CCO'];
+ _w = _w + ['SCAR_H_CQC_CCO_SD'];
+ _w = _w + ['SCAR_H_STD_EGLM_Spect'];
+ _w = _w + ['SCAR_H_LNG_Sniper'];
+ _w = _w + ['SCAR_H_LNG_Sniper_SD'];
+ if (_tiMode) then {
+ _w = _w + ['SCAR_H_STD_TWS_SD'];
+ };
+ _w = _w + ['m8_carbine'];
+ _w = _w + ['m8_carbineGL'];
+ _w = _w + ['m8_compact'];
+ _w = _w + ['m8_sharpshooter'];
+ _w = _w + ['m8_SAW'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_AS50_scoped'];
+ if (_tiMode) then {
+ _w = _w + ['BAF_AS50_TWS'];
+ };
+ _w = _w + ['BAF_LRR_scoped'];
+ _w = _w + ['BAF_LRR_scoped_W'];
+ _w = _w + ['BAF_L85A2_RIS_Holo'];
+ _w = _w + ['BAF_L85A2_UGL_Holo'];
+ _w = _w + ['BAF_L85A2_RIS_SUSAT'];
+ _w = _w + ['BAF_L85A2_UGL_SUSAT'];
+ _w = _w + ['BAF_L85A2_RIS_ACOG'];
+ _w = _w + ['BAF_L85A2_UGL_ACOG'];
+ if (_tiMode) then {
+ _w = _w + ['BAF_L85A2_RIS_CWS'];
+ };
+ _w = _w + ['BAF_L86A2_ACOG'];
+ _w = _w + ['BAF_L110A1_Aim'];
+ _w = _w + ['BAF_L7A2_GPMG'];
+ };
+
+ if (paramDLCPMC) then {
+ _w = _w + ['AA12_PMC'];
+ _w = _w + ['m8_carbine_pmc'];
+ _w = _w + ['m8_compact_pmc'];
+ _w = _w + ['m8_holo_sd'];
+ if (_tiMode) then {
+ _w = _w + ['m8_tws'];
+ _w = _w + ['m8_tws_sd'];
+ };
+ };
+
+ if (WF_ACE) then
+ {
+ _w = _w + ['ACE_HK416_D10'];
+ _w = _w + ['ACE_HK416_D10_Holo'];
+ _w = _w + ['ACE_HK416_D10_COMPM3_SD'];
+ _w = _w + ['ACE_HK416_D10_M320'];
+ _w = _w + ['ACE_HK416_D14'];
+ _w = _w + ['ACE_HK416_D14_ACOG_PVS14'];
+ _w = _w + ['ACE_HK416_D14_TWS'];
+ _w = _w + ['ACE_HK416_D14_COMPM3_M320'];
+ _w = _w + ['ACE_HK417_Eotech_4x'];
+ _w = _w + ['ACE_HK417_micro'];
+ _w = _w + ['ACE_HK417_leupold'];
+ _w = _w + ['ACE_M109'];
+ };
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+
+ _w = ['M136'];
+ _w = _w + ['MAAWS'];
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_NLAW_Launcher'];
+ };
+
+ _w = _w + ['Javelin'];
+ _w = _w + ['Stinger'];
+ _w = _w + ['Laserdesignator'];
+ _w = _w + ['SMAW'];
+
+ if(WF_ACE) then
+ {
+ _w = _w + ['ACE_Rucksack_MOLLE_Brown'];
+ _w = _w + ['ACE_Coyote_Pack'];
+ _w = _w + ['ACE_CharliePack'];
+ _w = _w + ['ACE_M252Proxy'];
+ _w = _w + ['ACE_M252TripodProxy'];
+ _w = _w + ['ACE_M2HBProxy'];
+ _w = _w + ['ACE_M3TripodProxy'];
+ _w = _w + ['ACE_M220Proxy'];
+ _w = _w + ['ACE_M220TripodProxy'];
+ }
+ else
+ {
+ /* Not all units are able to carry a backpack */
+ _get = getNumber(configFile >> 'CfgVehicles' >> typeOf player >> 'canCarryBackPack');
+
+ if (_get == 1) then {
+ _w = _w + ['US_Assault_Pack_EP1'];
+ _w = _w + ['US_Patrol_Pack_EP1'];
+ _w = _w + ['US_Backpack_EP1'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_AssaultPack_RifleAmmo'];
+ };
+
+ _w = _w + ['Tripod_Bag'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_L2A1_ACOG_minitripod_bag'];
+ _w = _w + ['BAF_L2A1_ACOG_tripod_bag'];
+ _w = _w + ['BAF_GPMG_Minitripod_D_bag'];
+ _w = _w + ['BAF_GMG_ACOG_minitripod_bag'];
+ };
+
+ _w = _w + ['M2HD_mini_TriPod_US_Bag_EP1'];
+ _w = _w + ['M2StaticMG_US_Bag_EP1'];
+ _w = _w + ['MK19_TriPod_US_Bag_EP1'];
+ _w = _w + ['TOW_TriPod_US_Bag_EP1'];
+ _w = _w + ['M252_US_Bag_EP1'];
+ };
+
+ if (WF_ACE) then {
+ _w = _w + ['ACE_M224TripodProxy'];
+ _w = _w + ['ACE_M224Proxy'];
+ _w = _w + ['ACE_VTAC_RUSH72_ACU'];
+ _w = _w + ['ACE_BackPack_ACR_TT'];
+ _w = _w + ['ACE_CharliePack_ACU'];
+ _w = _w + ['ACE_CharliePack_ACU_Medic'];
+ _w = _w + ['ACE_M252Proxy'];
+ _w = _w + ['ACE_M252TripodProxy'];
+ };
+ };
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Colt1911'];
+ _w = _w + ['M9'];
+ _w = _w + ['M9SD'];
+ _w = _w + ['glock17_EP1'];
+ if (WF_ACE) then {
+ _w = _w + ['ACE_USP'];
+ _w = _w + ['ACE_USPSD'];
+ _w = _w + ['ACE_P226'];
+ _w = _w + ['ACE_P8'];
+ };
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_West'];
+
+ if (paramDLCBAF) then {
+ _w = _w + ['BAF_L109A1_HE'];
+ };
+
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['IR_Strobe_Target'];
+ _w = _w + ['IR_Strobe_Marker'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_M203'];
+ _w = _w + ['FlareYellow_M203'];
+ _w = _w + ['FlareGreen_M203'];
+ _w = _w + ['FlareRed_M203'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_Smoke_M203'];
+ _w = _w + ['1Rnd_SmokeRed_M203'];
+ _w = _w + ['1Rnd_SmokeGreen_M203'];
+ _w = _w + ['1Rnd_SmokeYellow_M203'];
+ _w = _w + ['Mine'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['Binocular_Vector'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ if (WF_ACE) then
+ {
+ _w = _w + ['ACE_MX2A'];
+ _w = _w + ['ACE_Earplugs'];
+ _w = _w + ["ACE_SMAW_Spotting"];
+ _w = _w + ["ACE_HuntIR_M203"];
+ _w = _w + ["ACE_HuntIR_monitor"];
+ _w = _w + ["ACE_HuntIR_monitor"];
+ _w = _w + ['ACE_Bandage'];
+ _w = _w + ['ACE_Morphine'];
+ _w = _w + ['ACE_Epinephrine'];
+ _w = _w + ['ACE_Medkit'];
+ _w = _w + ['ACE_GlassesLHD_glasses'];
+ _w = _w + ['ACE_GlassesTactical'];
+ _w = _w + ['ACE_Javelin_CLU'];
+ };
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'picture')];
+ _t = [['SCAR_L_CQC','Colt1911']];
+ _m = [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ 'HandGrenade_West','HandGrenade_West','SmokeShellBlue','SmokeShellBlue','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M16A4_GL' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M16A4_GL' >> 'picture')];
+ _t = _t + [['M16A4_GL']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ '30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203',
+ '1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'G36C_camo' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M136' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'G36C_camo' >> 'picture')];
+ _t = _t + [['G36C_camo','M136']];
+ _m = _m + [['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_STD_EGLM_Spect' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MAAWS' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_STD_EGLM_Spect' >> 'picture')];
+ _t = _t + [['SCAR_H_STD_EGLM_Spect','MAAWS']];
+ _m = _m + [['20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','20rnd_762x51_B_SCAR','MAAWS_HEAT',
+ 'MAAWS_HEAT','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_HOLO' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MAAWS' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_HOLO' >> 'picture')];
+ _t = _t + [['SCAR_L_STD_HOLO','MAAWS','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M4A3_CCO_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Javelin' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M4A3_CCO_EP1' >> 'picture')];
+ _t = _t + [['M4A3_CCO_EP1','Javelin','Colt1911']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Javelin',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_Mk4CQT' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Stinger' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_STD_Mk4CQT' >> 'picture')];
+ _t = _t + [['SCAR_L_STD_Mk4CQT','Stinger','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Stinger',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'Mine' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_L_CQC' >> 'picture')];
+ _t = _t + [['SCAR_L_CQC','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Mine','Mine','Mine',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_CQC_CCO_SD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SCAR_H_CQC_CCO_SD' >> 'picture')];
+ _t = _t + [['SCAR_H_CQC_CCO_SD','M9SD']];
+ _m = _m + [['20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','20Rnd_762x51_SB_SCAR','PipeBomb','PipeBomb','PipeBomb',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm240_scoped_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm240_scoped_EP1' >> 'picture')];
+ _t = _t + [['m240_scoped_EP1','Colt1911']];
+ _m = _m + [['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M249_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M249_EP1' >> 'picture')];
+ _t = _t + [['M249_EP1','Colt1911']];
+ _m = _m + [['200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M14_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M14_EP1' >> 'picture')];
+ _t = _t + [['M14_EP1','M9SD']];
+ _m = _m + [['20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR',
+ '20Rnd_762x51_DMR','20Rnd_762x51_DMR','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ if (_tiMode) then {
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M110_TWS_EP1' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M110_TWS_EP1' >> 'picture')];
+ _t = _t + [['M110_TWS_EP1','Laserdesignator','M9SD']];
+ _m = _m + [['20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR',
+ '20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','HandGrenade_West','Laserbatteries','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+ };
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'picture')];
+ _t = _t + [['m107','M9SD']];
+ _m = _m + [['10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107',
+ '10Rnd_127x99_m107','10Rnd_127x99_m107','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular_Vector','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+if (WF_ACE) then
+{
+ ['WFBE_WESTDEFAULTWEAPONS',['m16a4','ItemCompass','ItemMap','ItemWatch','ItemRadio','ACE_Earplugs','Binocular','M136'],true] Call SetNamespace;
+ ['WFBE_WESTDEFAULTAMMO',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West'],true] Call SetNamespace;
+}
+else
+{
+ ['WFBE_WESTDEFAULTWEAPONS',['m16a4','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+ ['WFBE_WESTDEFAULTAMMO',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West'],true] Call SetNamespace;
+};
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_WESTLEADERWEAPONS01',['SCAR_L_CQC','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO01',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS02',['G36C_camo','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO02',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS03',['m240_scoped_EP1','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_WESTLEADERAMMO03',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_WESTLEADERWEAPONS11',['M4A3_CCO_EP1','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO11',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS12',['G36K_camo','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO12',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS13',['M14_EP1','M9SD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO13',['20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_WESTLEADERWEAPONS21',['SCAR_L_STD_HOLO','MAAWS','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO21',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS22',['G36C_camo','MAAWS','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO22',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','MAAWS_HEAT','MAAWS_HEAT','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS23',['MG36_camo','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO23',['100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_WESTLEADERWEAPONS31',['SCAR_L_CQC_EGLM_Holo','MAAWS','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO31',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','MAAWS_HEAT','MAAWS_HEAT','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS32',['SCAR_H_STD_EGLM_Spect','Javelin','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO32',['20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','20Rnd_762x51_B_SCAR','Javelin','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS33',['Mk_48_DES_EP1','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO33',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Vanilla/Loadout_CDF.sqf b/Common/Config/Core_Loadout/Vanilla/Loadout_CDF.sqf
new file mode 100644
index 0000000..df76937
--- /dev/null
+++ b/Common/Config/Core_Loadout/Vanilla/Loadout_CDF.sqf
@@ -0,0 +1,306 @@
+/* USMC Loadout */
+
+if (!isServer || local player) then {
+ if (side player == WEST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["64Rnd_9x19_Bizon"];
+ _m = _m + ["64Rnd_9x19_SD_Bizon"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["5x_22_LR_17_HMR"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["8Rnd_B_Saiga12_74Slug"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10Rnd_9x39_SP5_VSS"];
+ _m = _m + ["20Rnd_9x39_SP5_VSS"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['AKS_74_UN_kobra'];
+ _w = _w + ['AKS_GOLD'];
+ _w = _w + ['bizon'];
+ _w = _w + ['bizon_silenced'];
+ _w = _w + ['PK'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['huntingrifle'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_CAMO'];
+ _w = _w + ['Saiga12K'];
+ _w = _w + ['ksvk'];
+ _w = _w + ['VSS_vintorez'];
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Makarov'];
+ _w = _w + ['MakarovSD'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = [['AKS_74_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'picture')];
+ _t = _t + [['AKS_74_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'picture')];
+ _t = _t + [['AKS_74_U','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'picture')];
+ _t = _t + [['AK_74','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'picture')];
+ _t = _t + [['Saiga12K','Makarov']];
+ _m = _m + [['8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_UN_kobra','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'picture')];
+ _t = _t + [['SVD','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'picture')];
+ _t = _t + [['VSS_vintorez','Laserdesignator','MakarovSD']];
+ _m = _m + [['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS',
+ '20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_WESTDEFAULTWEAPONS',['AK_74','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_WESTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_WESTLEADERWEAPONS01',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS02',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_WESTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_WESTLEADERWEAPONS11',['AK_74_GL','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_WESTLEADERWEAPONS21',['VSS_vintorez','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO21',['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS22',['AKS_74_pso','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO22',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS23',['RPK_74','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO23',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_WESTLEADERWEAPONS31',['AK_74_GL','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS32',['AKS_74_kobra','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO32',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS33',['SVD_CAMO','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO33',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Vanilla/Loadout_INS.sqf b/Common/Config/Core_Loadout/Vanilla/Loadout_INS.sqf
new file mode 100644
index 0000000..e655422
--- /dev/null
+++ b/Common/Config/Core_Loadout/Vanilla/Loadout_INS.sqf
@@ -0,0 +1,306 @@
+/* USMC Loadout */
+
+if (!isServer || local player) then {
+ if (side player == EAST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["64Rnd_9x19_Bizon"];
+ _m = _m + ["64Rnd_9x19_SD_Bizon"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["5x_22_LR_17_HMR"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["8Rnd_B_Saiga12_74Slug"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10Rnd_9x39_SP5_VSS"];
+ _m = _m + ["20Rnd_9x39_SP5_VSS"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['AKS_74_UN_kobra'];
+ _w = _w + ['AKS_GOLD'];
+ _w = _w + ['bizon'];
+ _w = _w + ['bizon_silenced'];
+ _w = _w + ['PK'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['huntingrifle'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_CAMO'];
+ _w = _w + ['Saiga12K'];
+ _w = _w + ['ksvk'];
+ _w = _w + ['VSS_vintorez'];
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Makarov'];
+ _w = _w + ['MakarovSD'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = [['AKS_74_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_pso' >> 'picture')];
+ _t = _t + [['AKS_74_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74_GL' >> 'picture')];
+ _t = _t + [['AK_74_GL','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'picture')];
+ _t = _t + [['AKS_74_U','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'picture')];
+ _t = _t + [['AK_74','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'picture')];
+ _t = _t + [['Saiga12K','Makarov']];
+ _m = _m + [['8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_UN_kobra','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'picture')];
+ _t = _t + [['SVD','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'picture')];
+ _t = _t + [['VSS_vintorez','Laserdesignator','MakarovSD']];
+ _m = _m + [['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS',
+ '20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_EASTDEFAULTWEAPONS',['AK_74','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_EASTLEADERWEAPONS01',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS02',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_EASTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_EASTLEADERWEAPONS11',['AK_74_GL','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_EASTLEADERWEAPONS21',['VSS_vintorez','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO21',['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS22',['AKS_74_pso','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO22',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS23',['RPK_74','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO23',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_EASTLEADERWEAPONS31',['AK_74_GL','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS32',['AKS_74_kobra','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO32',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS33',['SVD_CAMO','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO33',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Vanilla/Loadout_RU.sqf b/Common/Config/Core_Loadout/Vanilla/Loadout_RU.sqf
new file mode 100644
index 0000000..6bc4d45
--- /dev/null
+++ b/Common/Config/Core_Loadout/Vanilla/Loadout_RU.sqf
@@ -0,0 +1,320 @@
+/* RU Loadout */
+
+if (!isServer || local player) then {
+ if (side player == EAST) then {
+ /* Magazines. */
+ _m = ["30Rnd_762x39_AK47"];
+ _m = _m + ["30Rnd_545x39_AK"];
+ _m = _m + ["30Rnd_545x39_AKSD"];
+ _m = _m + ["64Rnd_9x19_Bizon"];
+ _m = _m + ["64Rnd_9x19_SD_Bizon"];
+ _m = _m + ["100Rnd_762x54_PK"];
+ _m = _m + ["75Rnd_545x39_RPK"];
+ _m = _m + ["5x_22_LR_17_HMR"];
+ _m = _m + ["10Rnd_762x54_SVD"];
+ _m = _m + ["8Rnd_B_Saiga12_74Slug"];
+ _m = _m + ["5Rnd_127x108_KSVK"];
+ _m = _m + ["10Rnd_9x39_SP5_VSS"];
+ _m = _m + ["20Rnd_9x39_SP5_VSS"];
+ _m = _m + ["PG7V"];
+ _m = _m + ["PG7VL"];
+ _m = _m + ["OG7"];
+ _m = _m + ["PG7VR"];
+ _m = _m + ["RPG18"];
+ _m = _m + ["AT13"];
+ _m = _m + ["Igla"];
+ _m = _m + ["Strela"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["8Rnd_9x18_Makarov"];
+ _m = _m + ["8Rnd_9x18_MakarovSD"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['AK_47_M'];
+ _w = _w + ['AK_47_S'];
+ _w = _w + ['AK_74'];
+ _w = _w + ['AK_74_GL'];
+ _w = _w + ['AK_107_kobra'];
+ _w = _w + ['AK_107_GL_kobra'];
+ _w = _w + ['AK_107_pso'];
+ _w = _w + ['AK_107_GL_pso'];
+ _w = _w + ['AKS_74_kobra'];
+ _w = _w + ['AKS_74_pso'];
+ _w = _w + ['AKS_74_U'];
+ _w = _w + ['AKS_74_UN_kobra'];
+ _w = _w + ['AKS_GOLD'];
+ _w = _w + ['bizon'];
+ _w = _w + ['bizon_silenced'];
+ _w = _w + ['PK'];
+ _w = _w + ['Pecheneg'];
+ _w = _w + ['RPK_74'];
+ _w = _w + ['huntingrifle'];
+ _w = _w + ['SVD'];
+ _w = _w + ['SVD_CAMO'];
+ _w = _w + ['Saiga12K'];
+ _w = _w + ['ksvk'];
+ _w = _w + ['VSS_vintorez'];
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['RPG7V'];
+ _w = _w + ['RPG18'];
+ _w = _w + ['MetisLauncher'];
+ _w = _w + ['Igla'];
+ _w = _w + ['Strela'];
+ _w = _w + ['Laserdesignator'];
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Makarov'];
+ _w = _w + ['MakarovSD'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_East'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_GP25'];
+ _w = _w + ['FlareYellow_GP25'];
+ _w = _w + ['FlareGreen_GP25'];
+ _w = _w + ['FlareRed_GP25'];
+ _w = _w + ['1Rnd_HE_GP25'];
+ _w = _w + ['1Rnd_SMOKE_GP25'];
+ _w = _w + ['1Rnd_SMOKERED_GP25'];
+ _w = _w + ['1Rnd_SMOKEGREEN_GP25'];
+ _w = _w + ['1Rnd_SMOKEYELLOW_GP25'];
+ _w = _w + ['MineE'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'picture')];
+ _t = [['AK_107_kobra','Makarov']];
+ _m = [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ 'HandGrenade_East','HandGrenade_East','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_kobra' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_kobra' >> 'picture')];
+ _t = _t + [['AK_107_GL_kobra']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK',
+ '30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25',
+ '1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_pso' >> 'picture')];
+ _t = _t + [['AK_107_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_pso' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_GL_pso' >> 'picture')];
+ _t = _t + [['AK_107_GL_pso','RPG7V']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7V',
+ 'PG7V','PG7V','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'RPG7V' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_U' >> 'picture')];
+ _t = _t + [['AKS_74_U','RPG7V','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MetisLauncher' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_107_kobra' >> 'picture')];
+ _t = _t + [['AK_107_kobra','MetisLauncher','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Igla' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AK_74' >> 'picture')];
+ _t = _t + [['AK_74','Igla','Makarov']];
+ _m = _m + [['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','Igla',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'MineE' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Saiga12K' >> 'picture')];
+ _t = _t + [['Saiga12K','Makarov']];
+ _m = _m + [['8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','8Rnd_B_Saiga12_74Slug','MineE','MineE','MineE',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'AKS_74_UN_kobra' >> 'picture')];
+ _t = _t + [['AKS_74_UN_kobra','MakarovSD']];
+ _m = _m + [['30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','30Rnd_545x39_AKSD','PipeBomb','PipeBomb','PipeBomb',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'PK' >> 'picture')];
+ _t = _t + [['PK','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'Pecheneg' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Makarov' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'Pecheneg' >> 'picture')];
+ _t = _t + [['Pecheneg','Makarov']];
+ _m = _m + [['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','SmokeShellBlue','SmokeShellBlue','8Rnd_9x18_Makarov',
+ '8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'SVD' >> 'picture')];
+ _t = _t + [['SVD','MakarovSD']];
+ _m = _m + [['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD',
+ '10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'VSS_vintorez' >> 'picture')];
+ _t = _t + [['VSS_vintorez','Laserdesignator','MakarovSD']];
+ _m = _m + [['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS',
+ '20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','HandGrenade_East','Laserbatteries','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'MakarovSD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'ksvk' >> 'picture')];
+ _t = _t + [['ksvk','MakarovSD']];
+ _m = _m + [['5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','5Rnd_127x108_KSVK',
+ '5Rnd_127x108_KSVK','5Rnd_127x108_KSVK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD',
+ '8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_EASTDEFAULTWEAPONS',['AK_74','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_EASTDEFAULTAMMO',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','HandGrenade_East','HandGrenade_East'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No upgrades.
+ ['WFBE_EASTLEADERWEAPONS01',['AK_107_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO01',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS02',['AKS_74_kobra','RPG18','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO02',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','RPG18','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS03',['PK','Makarov','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_EASTLEADERAMMO03',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_EASTLEADERWEAPONS11',['AK_107_pso','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO11',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS12',['RPK_74','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO12',['75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','75Rnd_545x39_RPK','PG7VL','PG7VL','PG7VR','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS13',['SVD','MakarovSD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO13',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD','8Rnd_9x18_MakarovSD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_EASTLEADERWEAPONS21',['VSS_vintorez','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO21',['20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','20Rnd_9x39_SP5_VSS','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS22',['bizon','RPG7V','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO22',['64Rnd_9x19_Bizon','64Rnd_9x19_Bizon','64Rnd_9x19_Bizon','64Rnd_9x19_Bizon','64Rnd_9x19_Bizon','64Rnd_9x19_Bizon','PG7VL','PG7VL','PG7VL','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS23',['Pecheneg','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO23',['100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','100Rnd_762x54_PK','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_EASTLEADERWEAPONS31',['AK_107_GL_pso','RPG7V','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO31',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','PG7VL','PG7VL','PG7VL','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25','1Rnd_HE_GP25'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS32',['AK_107_kobra','MetisLauncher','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO32',['30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','30Rnd_545x39_AK','AT13','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERWEAPONS33',['SVD_CAMO','Makarov','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_EASTLEADERAMMO33',['10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','10Rnd_762x54_SVD','HandGrenade_East','HandGrenade_East','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov','8Rnd_9x18_Makarov'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Loadout/Vanilla/Loadout_USMC.sqf b/Common/Config/Core_Loadout/Vanilla/Loadout_USMC.sqf
new file mode 100644
index 0000000..09046c5
--- /dev/null
+++ b/Common/Config/Core_Loadout/Vanilla/Loadout_USMC.sqf
@@ -0,0 +1,331 @@
+/* USMC Loadout */
+
+if (!isServer || local player) then {
+ if (side player == WEST) then {
+ /* Magazines. */
+ _m = ["30Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_StanagSD"];
+ _m = _m + ["20Rnd_556x45_Stanag"];
+ _m = _m + ["30Rnd_556x45_G36"];
+ _m = _m + ["30Rnd_556x45_G36SD"];
+ _m = _m + ["100Rnd_556x45_BetaCMag"];
+ _m = _m + ["5Rnd_762x51_M24"];
+ _m = _m + ["20Rnd_762x51_DMR"];
+ _m = _m + ["10Rnd_127x99_m107"];
+ _m = _m + ["100Rnd_762x51_M240"];
+ _m = _m + ["200Rnd_556x45_M249"];
+ _m = _m + ["30Rnd_9x19_MP5"];
+ _m = _m + ["30Rnd_9x19_MP5SD"];
+ _m = _m + ["8Rnd_B_Beneli_74Slug"];
+ _m = _m + ["M136"];
+ _m = _m + ["SMAW_HEAA"];
+ _m = _m + ["SMAW_HEDP"];
+ _m = _m + ["Javelin"];
+ _m = _m + ["Stinger"];
+ _m = _m + ["Laserbatteries"];
+ _m = _m + ["15Rnd_9x19_M9"];
+ _m = _m + ["15Rnd_9x19_M9SD"];
+ _m = _m + ["7Rnd_45ACP_1911"];
+
+ WF_Logic setVariable ['magazineClasses',_m];
+
+ /* Primary. */
+ _w = ['M16A2'];
+ _w = _w + ['M16A2GL'];
+ _w = _w + ['m16a4'];
+ _w = _w + ['m16a4_acg'];
+ _w = _w + ['M16A4_GL'];
+ _w = _w + ['M16A4_ACG_GL'];
+ _w = _w + ['M24'];
+ _w = _w + ['M40A3'];
+ _w = _w + ['M240'];
+ _w = _w + ['Mk_48'];
+ _w = _w + ['M249'];
+ _w = _w + ['M4A1'];
+ _w = _w + ['M4A1_Aim'];
+ _w = _w + ['M4A1_Aim_camo'];
+ _w = _w + ['M4SPR'];
+ _w = _w + ['M4A1_RCO_GL'];
+ _w = _w + ['M4A1_AIM_SD_camo'];
+ _w = _w + ['M4A1_HWS_GL_SD_Camo'];
+ _w = _w + ['M4A1_HWS_GL'];
+ _w = _w + ['M4A1_HWS_GL_camo'];
+ _w = _w + ['MP5SD'];
+ _w = _w + ['MP5A5'];
+ _w = _w + ['G36C'];
+ _w = _w + ['G36_C_SD_eotech'];
+ _w = _w + ['G36a'];
+ _w = _w + ['G36K'];
+ _w = _w + ['MG36'];
+ _w = _w + ['DMR'];
+ _w = _w + ['M1014'];
+ _w = _w + ['m107'];
+ _w = _w + ['m8_carbine'];
+ _w = _w + ['m8_carbineGL'];
+ _w = _w + ['m8_compact'];
+ _w = _w + ['m8_sharpshooter'];
+ _w = _w + ['m8_SAW'];
+
+ WF_Logic setVariable ['primaryClasses',_w];
+
+ /* Secondary. */
+ _w = ['M136'];
+ _w = _w + ['SMAW'];
+ _w = _w + ['Javelin'];
+ _w = _w + ['Stinger'];
+ _w = _w + ['Laserdesignator'];
+
+ WF_Logic setVariable ['secondaryClasses',_w];
+
+ /* Sidearms. */
+ _w = ['Colt1911'];
+ _w = _w + ['M9'];
+ _w = _w + ['M9SD'];
+
+ WF_Logic setVariable ['sidearmClasses',_w];
+
+ /* Misc. */
+ _w = ['HandGrenade_West'];
+ _w = _w + ['HandGrenade_Stone'];
+ _w = _w + ['SmokeShell'];
+ _w = _w + ['SmokeShellRed'];
+ _w = _w + ['SmokeShellGreen'];
+ _w = _w + ['SmokeShellBlue'];
+ _w = _w + ['SmokeShellYellow'];
+ _w = _w + ['SmokeShellOrange'];
+ _w = _w + ['SmokeShellPurple'];
+ _w = _w + ['FlareWhite_M203'];
+ _w = _w + ['FlareYellow_M203'];
+ _w = _w + ['FlareGreen_M203'];
+ _w = _w + ['FlareRed_M203'];
+ _w = _w + ['1Rnd_HE_M203'];
+ _w = _w + ['1Rnd_Smoke_M203'];
+ _w = _w + ['1Rnd_SmokeRed_M203'];
+ _w = _w + ['1Rnd_SmokeGreen_M203'];
+ _w = _w + ['1Rnd_SmokeYellow_M203'];
+ _w = _w + ['Mine'];
+ _w = _w + ['PipeBomb'];
+ _w = _w + ['Binocular'];
+ _w = _w + ['NVGoggles'];
+ _w = _w + ['ItemCompass'];
+ _w = _w + ['ItemGPS'];
+ _w = _w + ['ItemMap'];
+ _w = _w + ['ItemRadio'];
+ _w = _w + ['ItemWatch'];
+
+ WF_Logic setVariable ['miscClasses',_w];
+
+ //--- Templates.
+ _items = ['ItemCompass','ItemGPS','ItemMap','ItemRadio','ItemWatch'];
+
+ _d = [getText(configFile >> 'CfgWeapons' >> 'm16a4' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = [getText(configFile >> 'CfgWeapons' >> 'm16a4' >> 'picture')];
+ _t = [['m16a4','Colt1911']];
+ _m = [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ 'HandGrenade_West','HandGrenade_West','SmokeShellBlue','SmokeShellBlue','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = [['Binocular']];
+ _i = [_items];
+ _l = [0];
+ _b = [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M16A4_GL' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M16A4_GL' >> 'picture')];
+ _t = _t + [['M16A4_GL']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag',
+ '30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203',
+ '1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'G36C' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M136' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'G36C' >> 'picture')];
+ _t = _t + [['G36C','M136']];
+ _m = _m + [['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M4A1_HWS_GL_SD_Camo' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'SMAW' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M4A1_HWS_GL_SD_Camo' >> 'picture')];
+ _t = _t + [['M4A1_HWS_GL_SD_Camo','SMAW']];
+ _m = _m + [['30Rnd_556x45_StanagSD','30Rnd_556x45_StanagSD','30Rnd_556x45_StanagSD','30Rnd_556x45_StanagSD','30Rnd_556x45_StanagSD','30Rnd_556x45_StanagSD','SMAW_HEAA',
+ 'SMAW_HEAA','SMAW_HEDP','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm8_carbine' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'SMAW' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm8_carbine' >> 'picture')];
+ _t = _t + [['m8_carbine','SMAW','M9']];
+ _m = _m + [['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','SMAW_HEAA','SMAW_HEAA','SMAW_HEDP',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M4A1_Aim' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Javelin' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M4A1_Aim' >> 'picture')];
+ _t = _t + [['M4A1_Aim','Javelin','Colt1911']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Javelin',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M16A2' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Stinger' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M16A2' >> 'picture')];
+ _t = _t + [['M16A2','Stinger','M9']];
+ _m = _m + [['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','Stinger',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M1014' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'Mine' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M1014' >> 'picture')];
+ _t = _t + [['M1014','M9']];
+ _m = _m + [['8Rnd_B_Beneli_74Slug','8Rnd_B_Beneli_74Slug','8Rnd_B_Beneli_74Slug','8Rnd_B_Beneli_74Slug','8Rnd_B_Beneli_74Slug','8Rnd_B_Beneli_74Slug','Mine','Mine','Mine',
+ '15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9','15Rnd_9x19_M9']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'MP5SD' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName') + '/' + getText(configFile >> 'CfgMagazines' >> 'PipeBomb' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'MP5SD' >> 'picture')];
+ _t = _t + [['MP5SD','M9SD']];
+ _m = _m + [['30Rnd_9x19_MP5SD','30Rnd_9x19_MP5SD','30Rnd_9x19_MP5SD','30Rnd_9x19_MP5SD','30Rnd_9x19_MP5SD','30Rnd_9x19_MP5SD','PipeBomb','PipeBomb','PipeBomb',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [1];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M240' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M240' >> 'picture')];
+ _t = _t + [['M240','Colt1911']];
+ _m = _m + [['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular']];
+ _i = _i + [_items];
+ _l = _l + [0];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M249' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Colt1911' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M249' >> 'picture')];
+ _t = _t + [['M249','Colt1911']];
+ _m = _m + [['200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','200Rnd_556x45_M249','SmokeShellRed','SmokeShellRed','7Rnd_45ACP_1911',
+ '7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [true];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'DMR' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'DMR' >> 'picture')];
+ _t = _t + [['DMR','M9SD']];
+ _m = _m + [['20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR','20Rnd_762x51_DMR',
+ '20Rnd_762x51_DMR','20Rnd_762x51_DMR','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'M40A3' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'Laserdesignator' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'M40A3' >> 'picture')];
+ _t = _t + [['M40A3','Laserdesignator','M9SD']];
+ _m = _m + [['5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24','5Rnd_762x51_M24',
+ '5Rnd_762x51_M24','5Rnd_762x51_M24','HandGrenade_West','Laserbatteries','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [2];
+ _b = _b + [false];
+
+ _d = _d + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'displayName') + '/' + getText(configFile >> 'CfgWeapons' >> 'M9SD' >> 'displayName')];
+ _p = _p + [getText(configFile >> 'CfgWeapons' >> 'm107' >> 'picture')];
+ _t = _t + [['m107','M9SD']];
+ _m = _m + [['10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107','10Rnd_127x99_m107',
+ '10Rnd_127x99_m107','10Rnd_127x99_m107','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD',
+ '15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD']];
+ _s = _s + [['Binocular','NVGoggles']];
+ _i = _i + [_items];
+ _l = _l + [3];
+ _b = _b + [false];
+
+ _c = [];
+ _totalTemplates = count _d;
+
+ for [{_count = 0},{_count < _totalTemplates},{_count = _count + 1}] do {
+ _cost = 0;
+ {
+ _get = (_x+"_W") Call GetNamespace;
+ if (isNil '_get') then {
+ _get = _x Call GetNamespace;
+ };
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach (_t select _count);
+
+ {
+ _get = _x Call GetNamespace;
+ if !(isNil '_get') then {_cost = _cost + (_get select QUERYGEARCOST)};
+ } forEach ((_m select _count) + (_s select _count) + (_i select _count));
+
+ _c = _c + [_cost];
+ };
+
+ WF_Logic setVariable ['templateClasses',_t];
+ WF_Logic setVariable ['templateNames',_d];
+ WF_Logic setVariable ['templateCosts',_c];
+ WF_Logic setVariable ['templatePictures',_p];
+ WF_Logic setVariable ['templateMags',_m];
+ WF_Logic setVariable ['templateItems',_i];
+ WF_Logic setVariable ['templateSpecs',_s];
+ WF_Logic setVariable ['templateUpgrades',_l];
+ WF_Logic setVariable ['templateAllowed',_b];
+ };
+};
+
+['WFBE_WESTDEFAULTWEAPONS',['M16A2','ItemCompass','ItemMap','ItemWatch','ItemRadio'],true] Call SetNamespace;
+['WFBE_WESTDEFAULTAMMO',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West'],true] Call SetNamespace;
+
+//--- AI Leaders Loadouts.
+if (isServer) then {
+ //--- No Upgrade.
+ ['WFBE_WESTLEADERWEAPONS01',['m16a4','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO01',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS02',['G36C','M136','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO02',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS03',['M240','Colt1911','Binocular','ItemRadio','ItemMap'],true] Call SetNamespace;;
+ ['WFBE_WESTLEADERAMMO03',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 1.
+ ['WFBE_WESTLEADERWEAPONS11',['m16a4_acg','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO11',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS12',['G36K','M136','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO12',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','M136','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS13',['M4SPR','M9SD','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO13',['20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','20Rnd_556x45_Stanag','HandGrenade_West','HandGrenade_West','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD','15Rnd_9x19_M9SD'],true] Call SetNamespace;
+ //--- Upgrade 2.
+ ['WFBE_WESTLEADERWEAPONS21',['M4A1_Aim_camo','SMAW','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO21',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','SMAW_HEAA','SMAW_HEAA','SMAW_HEDP','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS22',['m8_carbine','SMAW','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO22',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','SMAW_HEAA','SMAW_HEAA','SMAW_HEDP','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS23',['MG36','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO23',['100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','100Rnd_556x45_BetaCMag','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ //--- Upgrade 3.
+ ['WFBE_WESTLEADERWEAPONS31',['M4A1_HWS_GL','SMAW','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO31',['30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','30Rnd_556x45_Stanag','SMAW_HEAA','SMAW_HEAA','SMAW_HEDP','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203','1Rnd_HE_M203'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS32',['m8_compact','Javelin','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO32',['30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','30Rnd_556x45_G36','Javelin','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERWEAPONS33',['Mk_48','Colt1911','Binocular','NVGoggles','ItemRadio','ItemMap'],true] Call SetNamespace;
+ ['WFBE_WESTLEADERAMMO33',['100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','100Rnd_762x51_M240','HandGrenade_West','HandGrenade_West','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911','7Rnd_45ACP_1911'],true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_CDF.sqf b/Common/Config/Core_Occupation/Occupation_CDF.sqf
new file mode 100644
index 0000000..eb3d2ad
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_CDF.sqf
@@ -0,0 +1,188 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_MG"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_Engineer"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["BRDM2_ATGM_CDF"];
+_u = _u + ["BRDM2_CDF"];
+_u = _u + ["UAZ_MG_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["BRDM2_ATGM_CDF"];
+_u = _u + ["Ural_ZU23_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["UAZ_AGS30_CDF"];
+_u = _u + ["UAZ_MG_CDF"];
+_u = _u + ["Ural_ZU23_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_MG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["CDF_Soldier_Sniper"];
+_u = _u + ["CDF_Soldier_Spotter"];
+_u = _u + ["CDF_Soldier_Spotter"];
+_u = _u + ["CDF_Soldier_Marksman"];
+_u = _u + ["CDF_Soldier_Marksman"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["Ural_ZU23_CDF"];
+_u = _u + ["BMP2_CDF"];
+_u = _u + ["ZSU_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["BMP2_Ambul_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["ZSU_CDF"];
+_u = _u + ["BMP2_CDF"];
+_u = _u + ["T72_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier_GL"];
+_u = _u + ["CDF_Soldier"];
+_u = _u + ["CDF_Soldier"];
+_u = _u + ["CDF_Soldier_Sniper"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_RPG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier_GL"];
+_u = _u + ["CDF_Soldier_Sniper"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_MG"];
+_u = _u + ["CDF_Soldier_Engineer"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_RPG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["ZSU_CDF"];
+_u = _u + ["BMP2_CDF"];
+_u = _u + ["T72_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["T72_CDF"];
+_u = _u + ["ZSU_CDF"];
+_u = _u + ["GRAD_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["ZSU_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["CDF_Soldier_TL"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["CDF_Soldier_Strela"];
+_u = _u + ["ZSU_CDF"];
+_u = _u + ["ZSU_CDF"];
+_u = _u + ["BMP2_CDF"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_CDF: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_INS.sqf b/Common/Config/Core_Occupation/Occupation_INS.sqf
new file mode 100644
index 0000000..3a09496
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_INS.sqf
@@ -0,0 +1,188 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_1"];
+_u = _u + ["Ins_Soldier_2"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_Sniper"];
+_u = _u + ["Ins_Soldier_AR"];
+_u = _u + ["Ins_Soldier_GL"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_GL"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["BRDM2_INS"];
+_u = _u + ["BRDM2_ATGM_INS"];
+_u = _u + ["UAZ_MG_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ural_ZU23_INS"];
+_u = _u + ["BRDM2_ATGM_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["UAZ_AGS30_INS"];
+_u = _u + ["UAZ_SPG9_INS"];
+_u = _u + ["Ural_ZU23_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AR"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_Sniper"];
+_u = _u + ["Ins_Soldier_Sniper"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ural_ZU23_INS"];
+_u = _u + ["BMP2_INS"];
+_u = _u + ["ZSU_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["BMP2_Ambul_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["ZSU_INS"];
+_u = _u + ["BMP2_INS"];
+_u = _u + ["T72_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_Medic"];
+_u = _u + ["Ins_Soldier_1"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_Medic"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_1"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_GL"];
+_u = _u + ["Ins_Soldier_1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_Sniper"];
+_u = _u + ["Ins_Soldier_AR"];
+_u = _u + ["Ins_Soldier_GL"];
+_u = _u + ["Ins_Soldier_1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["ZSU_INS"];
+_u = _u + ["BMP2_INS"];
+_u = _u + ["T72_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["T72_INS"];
+_u = _u + ["ZSU_INS"];
+_u = _u + ["GRAD_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["ZSU_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["Ins_Soldier_CO"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["Ins_Soldier_AA"];
+_u = _u + ["ZSU_INS"];
+_u = _u + ["ZSU_INS"];
+_u = _u + ["BMP2_INS"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_INS: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_RU.sqf b/Common/Config/Core_Occupation/Occupation_RU.sqf
new file mode 100644
index 0000000..748c3a2
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_RU.sqf
@@ -0,0 +1,177 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["RU_Soldier_MG"];
+_u = _u + ["RU_Soldier_AT"];
+_u = _u + ["RU_Soldier"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["RU_Soldier_LAT"];
+_u = _u + ["RU_Soldier_Marksman"];
+_u = _u + ["RU_Soldier_AR"];
+_u = _u + ["RU_Soldier_GL"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["RU_Soldier_MG"];
+_u = _u + ["RU_Soldier_GL"];
+_u = _u + ["RU_Soldier_AT"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["UAZ_AGS30_RU"];
+_u = _u + ["GAZ_Vodnik"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["GAZ_Vodnik"];
+_u = _u + ["GAZ_Vodnik_HMG"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["UAZ_AGS30_RU"];
+_u = _u + ["GAZ_Vodnik_HMG"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_LAT"];
+_u = _u + ["RU_Soldier_AT"];
+_u = _u + ["RU_Soldier"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["RUS_Commander"];
+_u = _u + ["RUS_Soldier1"];
+_u = _u + ["RUS_Soldier2"];
+_u = _u + ["RUS_Soldier_GL"];
+_u = _u + ["RUS_Soldier_Marksman"];
+_u = _u + ["RUS_Soldier3"];
+_u = _u + ["RUS_Soldier_TL"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["MVD_Soldier_TL"];
+_u = _u + ["MVD_Soldier_MG"];
+_u = _u + ["MVD_Soldier_AT"];
+_u = _u + ["MVD_Soldier_GL"];
+_u = _u + ["MVD_Soldier_Sniper"];
+_u = _u + ["MVD_Soldier_Marksman"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["GAZ_Vodnik"];
+_u = _u + ["BMP3"];
+_u = _u + ["BTR90"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["T72_RU"];
+_u = _u + ["T72_RU"];
+_u = _u + ["GAZ_Vodnik_MedEvac"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["BMP3"];
+_u = _u + ["GAZ_Vodnik_HMG"];
+_u = _u + ["T72_RU"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["RU_Soldier_HAT"];
+_u = _u + ["RU_Soldier_HAT"];
+_u = _u + ["RU_Soldier_HAT"];
+_u = _u + ["RU_Soldier_AT"];
+_u = _u + ["RU_Soldier"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["RUS_Commander"];
+_u = _u + ["RUS_Soldier1"];
+_u = _u + ["RUS_Soldier2"];
+_u = _u + ["RUS_Soldier_GL"];
+_u = _u + ["RUS_Soldier_Marksman"];
+_u = _u + ["RUS_Soldier3"];
+_u = _u + ["RUS_Soldier_TL"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["RU_Soldier_SL"];
+_u = _u + ["RU_Soldier_MG"];
+_u = _u + ["RU_Soldier_AT"];
+_u = _u + ["RU_Soldier_LAT"];
+_u = _u + ["RU_Soldier_Marksman"];
+_u = _u + ["RU_Soldier_AR"];
+_u = _u + ["RU_Soldier_GL"];
+_u = _u + ["RU_Soldier"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["RU_Soldier_TL"];
+if (WF_ACE) then
+{
+ _u = _u + ["ACE_T90A"];
+ _u = _u + ["ACE_T90A"];
+ _u = _u + ["ACE_T90A"];
+}
+else
+{
+ _u = _u + ["T90"];
+ _u = _u + ["T90"];
+ _u = _u + ["T90"];
+};
+_u = _u + ["T72_RU"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["T90"];
+_u = _u + ["GRAD_RU"];
+_u = _u + ["T72_RU"];
+_u = _u + ["2S6M_Tunguska"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["T90"];
+_u = _u + ["T90"];
+_u = _u + ["2S6M_Tunguska"];
+_u = _u + ["T72_RU"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_AA"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["BTR90"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["RU_Soldier_TL"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["BTR90"];
+_u = _u + ["2S6M_Tunguska"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_RU: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_TKA.sqf b/Common/Config/Core_Occupation/Occupation_TKA.sqf
new file mode 100644
index 0000000..9c2596a
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_TKA.sqf
@@ -0,0 +1,176 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_Spotter_EP1"];
+_u = _u + ["TK_Soldier_AR_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["LandRover_MG_TK_EP1"];
+_u = _u + ["BTR60_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BTR60_TK_EP1"];
+_u = _u + ["BRDM2_TK_EP1"];
+_u = _u + ["BRDM2_ATGM_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["UAZ_AGS30_TK_EP1"];
+_u = _u + ["BRDM2_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["TK_Special_Forces_TL_EP1"];
+_u = _u + ["TK_Soldier_Medic_EP1"];
+_u = _u + ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_MG_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["TK_Special_Forces_TL_EP1"];
+_u = _u + ["TK_Soldier_Medic_EP1"];
+_u = _u + ["TK_Soldier_SniperH_EP1"];
+_u = _u + ["TK_Soldier_Sniper_Night_EP1"];
+_u = _u + ["TK_Soldier_Night_1_EP1"];
+_u = _u + ["TK_Soldier_Night_2_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+_u = _u + ["BTR60_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["M113Ambul_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+_u = _u + ["Ural_ZU23_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["TK_Special_Forces_TL_EP1"];
+_u = _u + ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_MG_EP1"];
+_u = _u + ["TK_Special_Forces_MG_EP1"];
+_u = _u + ["TK_Special_Forces_MG_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_Spotter_EP1"];
+_u = _u + ["TK_Soldier_AR_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["T55_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["T55_TK_EP1"];
+_u = _u + ["T55_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["Ural_ZU23_TK_EP1"];
+_u = _u + ["Ural_ZU23_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+[Format["WFBE_EAST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_TKA: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_US.sqf b/Common/Config/Core_Occupation/Occupation_US.sqf
new file mode 100644
index 0000000..6df144e
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_US.sqf
@@ -0,0 +1,172 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["US_Soldier_SL_EP1"];
+_u = _u + ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_LAT_EP1"];
+_u = _u + ["US_Soldier_Medic_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_MG_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_LAT_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["HMMWV_Avenger_DES_EP1"];
+_u = _u + ["HMMWV_M1151_M2_DES_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["US_Soldier_SL_EP1"];
+_u = _u + ["HMMWV_TOW_DES_EP1"];
+_u = _u + ["M1126_ICV_mk19_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["HMMWV_Avenger_DES_EP1"];
+_u = _u + ["HMMWV_M998_crows_MK19_DES_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_Medic_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_LAT_EP1"];
+_u = _u + ["US_Soldier_AT_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_MG_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["US_Soldier_Sniper_EP1"];
+_u = _u + ["US_Soldier_Marksman_EP1"];
+_u = _u + ["US_Soldier_Marksman_EP1"];
+_u = _u + ["US_Soldier_SniperH_EP1"];
+_u = _u + ["US_Soldier_SniperH_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["HMMWV_Avenger_DES_EP1"];
+_u = _u + ["M2A3_EP1"];
+_u = _u + ["M1126_ICV_M2_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["M1A1_US_DES_EP1"];
+_u = _u + ["M1A1_US_DES_EP1"];
+_u = _u + ["HMMWV_Ambulance_DES_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["M1126_ICV_M2_EP1"];
+_u = _u + ["HMMWV_M998_crows_M2_DES_EP1"];
+_u = _u + ["M1A1_US_DES_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["US_Soldier_HAT_EP1"];
+_u = _u + ["US_Soldier_AT_EP1"];
+_u = _u + ["US_Soldier_HAT_EP1"];
+_u = _u + ["US_Soldier_HAT_EP1"];
+_u = _u + ["US_Soldier_HAT_EP1"];
+_u = _u + ["US_Soldier_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["US_Delta_Force_EP1"];
+_u = _u + ["US_Delta_Force_AR_EP1"];
+_u = _u + ["US_Delta_Force_SD_EP1"];
+_u = _u + ["US_Delta_Force_Assault_EP1"];
+_u = _u + ["US_Delta_Force_Marksman_EP1"];
+_u = _u + ["US_Delta_Force_M14_EP1"];
+_u = _u + ["US_Delta_Force_MG_EP1"];
+_u = _u + ["US_Delta_Force_Medic_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_Medic_EP1"];
+_u = _u + ["US_Soldier_GL_EP1"];
+_u = _u + ["US_Soldier_Sniper_EP1"];
+_u = _u + ["US_Soldier_AT_EP1"];
+_u = _u + ["US_Soldier_MG_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_LAT_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["MLRS_DES_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M1A2_US_TUSK_MG_EP1"];
+_u = _u + ["M6_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["HMMWV_Avenger_DES_EP1"];
+_u = _u + ["HMMWV_Avenger_DES_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["US_Soldier_AA_EP1"];
+_u = _u + ["M2A3_EP1"];
+_u = _u + ["M6_EP1"];
+_u = _u + ["M6_EP1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_US: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Occupation/Occupation_USMC.sqf b/Common/Config/Core_Occupation/Occupation_USMC.sqf
new file mode 100644
index 0000000..7969bad
--- /dev/null
+++ b/Common/Config/Core_Occupation/Occupation_USMC.sqf
@@ -0,0 +1,173 @@
+Private ["_n","_u"];
+
+_n = ["SmallTeam1"];
+_u = ["USMC_Soldier_SL"];
+_u = _u + ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam2"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_LAT"];
+_u = _u + ["USMC_Soldier_Medic"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallTeam3"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_MG"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_LAT"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam1"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_Armored"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam2"];
+_u = ["USMC_Soldier_SL"];
+_u = _u + ["HMMWV_TOW"];
+_u = _u + ["LAV25"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SmallVehTeam3"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_MK19"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam1"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam2"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_LAT"];
+_u = _u + ["USMC_Soldier_AT"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_MG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumTeam3"];
+_u = ["USMC_SoldierS_Sniper"];
+_u = _u + ["USMC_SoldierS_Spotter"];
+_u = _u + ["USMC_SoldierS_Spotter"];
+_u = _u + ["USMC_SoldierS"];
+_u = _u + ["USMC_SoldierS"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam1"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["AAV"];
+_u = _u + ["LAV25"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam2"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["M1A1"];
+_u = _u + ["M1A1"];
+_u = _u + ["HMMWV_Ambulance"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumVehTeam3"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["AAV"];
+_u = _u + ["HMMWV_M2"];
+_u = _u + ["M1A1"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam1"];
+_u = ["USMC_Soldier_HAT"];
+_u = _u + ["USMC_Soldier_AT"];
+_u = _u + ["USMC_Soldier_HAT"];
+_u = _u + ["USMC_Soldier_HAT"];
+_u = _u + ["USMC_Soldier_HAT"];
+_u = _u + ["USMC_Soldier"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam2"];
+_u = ["FR_TL"];
+_u = _u + ["FR_AR"];
+_u = _u + ["FR_GL"];
+_u = _u + ["FR_Marksman"];
+_u = _u + ["FR_R"];
+_u = _u + ["FR_Corpsman"];
+_u = _u + ["FR_Sapper"];
+_u = _u + ["FR_AC"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeTeam3"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier_GL"];
+_u = _u + ["USMC_SoldierS_Sniper"];
+_u = _u + ["USMC_Soldier_AT"];
+_u = _u + ["USMC_Soldier_MG"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_LAT"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam1"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam2"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["MLRS"];
+_u = _u + ["M1A2_TUSK_MG"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeVehTeam3"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["M1A2_TUSK_MG"];
+_u = _u + ["AAV"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- AA Units used by towns occupation in case of 'air assault' only.
+_n = _n + ["SmallAATeam"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MediumAATeam"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_Avenger"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LargeAATeam"];
+_u = ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["USMC_Soldier_AA"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_Avenger"];
+_u = _u + ["HMMWV_Armored"];
+[Format["WFBE_WEST%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Occupation_USMC: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Resistance/Resistance_GUE.sqf b/Common/Config/Core_Resistance/Resistance_GUE.sqf
new file mode 100644
index 0000000..3f44b2f
--- /dev/null
+++ b/Common/Config/Core_Resistance/Resistance_GUE.sqf
@@ -0,0 +1,100 @@
+Private ["_n","_u"];
+
+//--- Resistance Key Units.
+['WFBE_GUERCREW','GUE_Soldier_Crew',true] Call SetNamespace;
+['WFBE_GUERPILOT','GUE_Soldier_1',true] Call SetNamespace;
+['WFBE_GUERSOLDIER','GUE_Soldier_1',true] Call SetNamespace;
+
+//--- Town Resistance.
+_n = ["Group"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfSquad"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupAssault"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfSquad_Assault"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupWeapons"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfSquad_Weapons"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol1"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfTeam_1"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol2"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfTeam_2"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["ATTeam"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_InfTeam_AT"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["AATeam"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_GrpInf_TeamAA"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SniperTeam"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_GrpInf_TeamSniper"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Militia"];
+_u = ["Guerrila", "GUE", "Infantry", "GUE_MilitiaSquad"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Technical"];
+_u = ["Guerrila", "GUE", "Motorized", "GUE_MotInfSection"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedGroup"];
+_u = ["Guerrila", "GUE", "Motorized", "GUE_MotInfSquad"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedAATeam"];
+_u = ["Guerrila", "GUE", "Mechanized", "GUE_MechInfSection"] Call GetGroupFromConfig;
+_u = _u + ["Ural_ZU23_Gue"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedGroup"];
+_u = ["Guerrila", "GUE", "Mechanized", "GUE_MechInfSquad"] Call GetGroupFromConfig;
+_u = _u + ["GUE_Soldier_1"];
+_u = _u + ["GUE_Soldier_MG"];
+_u = _u + ["GUE_Soldier_MG"];
+_u = _u + ["GUE_Soldier_Medic"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedPatrol"];
+_u = ["Guerrila", "GUE", "Mechanized", "GUE_MechInfSquad"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LightArmor"];
+_u = ["BMP2_GUE"];
+_u = _u + ["BMP2_GUE"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["HeavyArmor"];
+_u = ["Guerrila", "GUE", "Armored", "GUE_TankSection"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- Patroling Resistance.
+if (('WFBE_RESPATROL' Call GetNamespace) > 0) then {
+ ['WFBE_RESPATROLTYPE10',['GUE_Soldier_1','GUE_Soldier_MG','GUE_Soldier_Sniper','GUE_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE11',['GUE_Soldier_CO','GUE_Soldier_AR','GUE_Soldier_3','GUE_Soldier_AT','GUE_Soldier_2'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE12',['Offroad_DSHKM_Gue','Offroad_SPG9_Gue'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE20',['BRDM2_GUE','BRDM2_GUE'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE21',['V3S_GUE','GUE_Soldier_CO','GUE_Soldier_AT','GUE_Soldier_MG','GUE_Soldier_AT'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE22',['BMP2_GUE','GUE_Soldier_AA','GUE_Soldier_AA','GUE_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE30',['BMP2_GUE','BMP2_GUE'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE31',['T72_GUE','T72_GUE'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE32',['GUE_Soldier_Sniper','GUE_Soldier_Scout','GUE_Soldier_Sniper'],true] Call SetNamespace;
+};
+
+//--- Base Attacker Resistance.
+if (('WFBE_RESSTRIKER' Call GetNamespace) > 0) then {
+ ['WFBE_RESSTRIKERTYPE10',['GUE_Soldier_Sab','GUE_Soldier_Scout','GUE_Soldier_Sniper'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE11',['GUE_Soldier_CO','GUE_Soldier_AR','GUE_Soldier_3','GUE_Soldier_AT','GUE_Soldier_2'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE12',['GUE_Soldier_CO','GUE_Soldier_AA','GUE_Soldier_AA','GUE_Soldier_3'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE13',['GUE_Soldier_CO','GUE_Soldier_MG','GUE_Soldier_Medic','GUE_Soldier_AT','GUE_Soldier_AT'],true] Call SetNamespace;
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Resistance_GUE: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Resistance/Resistance_PMC.sqf b/Common/Config/Core_Resistance/Resistance_PMC.sqf
new file mode 100644
index 0000000..ab70291
--- /dev/null
+++ b/Common/Config/Core_Resistance/Resistance_PMC.sqf
@@ -0,0 +1,127 @@
+Private ["_n","_u"];
+
+//--- Resistance Key Units.
+['WFBE_GUERCREW','Soldier_Crew_PMC',true] Call SetNamespace;
+['WFBE_GUERPILOT','Soldier_Pilot_PMC',true] Call SetNamespace;
+['WFBE_GUERSOLDIER','Soldier_PMC',true] Call SetNamespace;
+
+//--- Town Resistance.
+_n = ["Group"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_Field_Security_Team"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupAssault"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_Security_Detail"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupWeapons"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_Security_Specialists"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol1"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_VIP_Bodyguard"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol2"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_Field_Security_Patrol"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["ATTeam"];
+_u = ["Soldier_AT_PMC"];
+_u = _u + ["Soldier_AT_PMC"];
+_u = _u + ["Soldier_Bodyguard_M4_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["AATeam"];
+_u = ["Soldier_TL_PMC"];
+_u = _u + ["Soldier_AA_PMC"];
+_u = _u + ["Soldier_AA_PMC"];
+_u = _u + ["Soldier_Bodyguard_M4_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SniperTeam"];
+_u = ["Soldier_Sniper_KSVK_PMC"];
+_u = _u + ["Soldier_Sniper_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Militia"];
+_u = ["Guerrila", "PMC_BAF", "Infantry", "PMC_Field_Support_Team"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Technical"];
+_u = ["Soldier_TL_PMC"];
+_u = _u + ["Offroad_DSHKM_TK_GUE_EP1"];
+_u = _u + ["Offroad_SPG9_TK_GUE_EP1"];
+_u = _u + ["ArmoredSUV_PMC"];
+_u = _u + ["Soldier_MG_PMC"];
+_u = _u + ["Soldier_GL_PMC"];
+_u = _u + ["Soldier_Sniper_KSVK_PMC"];
+_u = _u + ["Soldier_AT_PMC"];
+_u = _u + ["Soldier_Bodyguard_M4_PMC"];
+_u = _u + ["Soldier_Medic_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedGroup"];
+_u = ["Guerrila", "PMC_BAF", "Motorized", "PMC_Armored_Patrol"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedAATeam"];
+_u = ["Soldier_TL_PMC"];
+_u = _u + ["Ural_ZU23_TK_GUE_EP1"];
+_u = _u + ["Soldier_Sniper_PMC"];
+_u = _u + ["Soldier_AA_PMC"];
+_u = _u + ["Soldier_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedPatrol"];
+_u = ["Soldier_Bodyguard_M4_PMC"];
+_u = _u + ["BTR40_MG_TK_GUE_EP1"];
+_u = _u + ["BRDM2_TK_GUE_EP1"];
+_u = _u + ["Soldier_Bodyguard_AA12_PMC"];
+_u = _u + ["Soldier_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedGroup"];
+_u = ["Soldier_TL_PMC"];
+_u = _u + ["T34_TK_GUE_EP1"];
+_u = _u + ["ArmoredSUV_PMC"];
+_u = _u + ["Soldier_MG_PMC"];
+_u = _u + ["Soldier_Bodyguard_AA12_PMC"];
+_u = _u + ["Soldier_AT_PMC"];
+_u = _u + ["Soldier_Bodyguard_M4_PMC"];
+_u = _u + ["Soldier_Sniper_KSVK_PMC"];
+_u = _u + ["Soldier_AT_PMC"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LightArmor"];
+_u = ["T34_TK_GUE_EP1"];
+_u = _u + ["T34_TK_GUE_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["HeavyArmor"];
+_u = ["T55_TK_GUE_EP1"];
+_u = _u + ["T55_TK_GUE_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- Patroling Resistance.
+if (('WFBE_RESPATROL' Call GetNamespace) > 0) then {
+ ['WFBE_RESPATROLTYPE10',['Soldier_PMC','Soldier_MG_PKM_PMC','Soldier_Sniper_PMC','Soldier_Medic_PMC'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE11',['Soldier_TL_PMC','Soldier_MG_PMC','Soldier_M4A3_PMC','Soldier_AT_PMC','Soldier_GL_PMC'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE12',['ArmoredSUV_PMC','ArmoredSUV_PMC'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE20',['BTR40_MG_TK_GUE_EP1','Ural_ZU23_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE21',['SUV_PMC','Soldier_TL_PMC','Soldier_AT_PMC','Soldier_Bodyguard_AA12_PMC'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE22',['BTR40_MG_TK_GUE_EP1','Soldier_AA_PMC','Soldier_AA_PMC','Soldier_Medic_PMC'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE30',['T34_TK_GUE_EP1','T34_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE31',['T55_TK_GUE_EP1','T55_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE32',['Ka60_GL_PMC','Soldier_TL_PMC','Soldier_AT_PMC','Soldier_Bodyguard_M4_PMC','Soldier_Bodyguard_M4_PMC'],true] Call SetNamespace;
+};
+
+//--- Base Attacker Resistance.
+if (('WFBE_RESSTRIKER' Call GetNamespace) > 0) then {
+ ['WFBE_RESSTRIKERTYPE10',['ArmoredSUV_PMC','Soldier_PMC','Soldier_PMC'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE11',['Soldier_TL_PMC','Soldier_Bodyguard_M4_PMC','Soldier_M4A3_PMC','Soldier_AT_PMC','Soldier_AA_PMC'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE12',['Soldier_TL_PMC','Soldier_Bodyguard_AA12_PMC','Soldier_AA_PMC','Soldier_Engineer_PMC'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE13',['Ka60_PMC','Soldier_MG_PMC','Soldier_Medic_PMC','Soldier_AT_PMC','Soldier_AT_PMC'],true] Call SetNamespace;
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Resistance_PMC: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Resistance/Resistance_TKGUE.sqf b/Common/Config/Core_Resistance/Resistance_TKGUE.sqf
new file mode 100644
index 0000000..db5998b
--- /dev/null
+++ b/Common/Config/Core_Resistance/Resistance_TKGUE.sqf
@@ -0,0 +1,110 @@
+Private ["_n","_u"];
+
+//--- Resistance Key Units.
+['WFBE_GUERCREW','TK_GUE_Soldier_EP1',true] Call SetNamespace;
+['WFBE_GUERPILOT','TK_GUE_Soldier_EP1',true] Call SetNamespace;
+['WFBE_GUERSOLDIER','TK_GUE_Soldier_EP1',true] Call SetNamespace;
+
+//--- Town Resistance.
+_n = ["Group"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_Group"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupAssault"];
+_u = ["TK_GUE_Warlord_EP1"];
+_u = _u + ["TK_GUE_Soldier_4_EP1"];
+_u = _u + ["TK_GUE_Soldier_AT_EP1"];
+_u = _u + ["TK_GUE_Soldier_AR_EP1"];
+_u = _u + ["TK_GUE_Soldier_MG_EP1"];
+_u = _u + ["TK_GUE_Soldier_HAT_EP1"];
+_u = _u + ["TK_GUE_Soldier_5_EP1"];
+_u = _u + ["TK_GUE_Bonesetter_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["GroupWeapons"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_GroupWeapons"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol1"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_Patrol"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Patrol2"];
+_u = ["TK_GUE_Soldier_EP1"];
+_u = _u + ["TK_GUE_Soldier_AR_EP1"];
+_u = _u + ["TK_GUE_Soldier_4_EP1"];
+_u = _u + ["TK_GUE_Soldier_HAT_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["ATTeam"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_ATTeam"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["AATeam"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_AATeam"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["SniperTeam"];
+_u = ["Guerrila", "BIS_TK_GUE", "Infantry", "TK_GUE_SniperTeam"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Militia"];
+_u = ["TK_GUE_Soldier_2_EP1"];
+_u = _u + ["TK_GUE_Soldier_3_EP1"];
+_u = _u + ["TK_GUE_Soldier_4_EP1"];
+_u = _u + ["TK_GUE_Soldier_5_EP1"];
+_u = _u + ["TK_GUE_Bonesetter_EP1"];
+_u = _u + ["TK_GUE_Soldier_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["Technical"];
+_u = ["Guerrila", "BIS_TK_GUE", "Motorized", "TK_GUE_Technicals"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedGroup"];
+_u = ["Guerrila", "BIS_TK_GUE", "Motorized", "TK_GUE_MotorizedGroup"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MotorizedAATeam"];
+_u = ["Guerrila", "BIS_TK_GUE", "Motorized", "TK_GUE_MotorizedPatrol"] Call GetGroupFromConfig;
+_u = _u + ["Ural_ZU23_TK_GUE_EP1"];
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedPatrol"];
+_u = ["Guerrila", "BIS_TK_GUE", "Mechanized", "TK_GUE_MechanizedPatrol"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["MechanizedGroup"];
+_u = ["Guerrila", "BIS_TK_GUE", "Mechanized", "TK_GUE_MechanizedGroup"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["LightArmor"];
+_u = ["Guerrila", "BIS_TK_GUE", "Armored", "TK_GUE_T34Platoon"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+_n = _n + ["HeavyArmor"];
+_u = ["Guerrila", "BIS_TK_GUE", "Armored", "TK_GUE_T55Section"] Call GetGroupFromConfig;
+[Format["WFBE_RES%1UNITS",_n select (count _n - 1)],_u,true] Call SetNamespace;
+
+//--- Patroling Resistance.
+if (('WFBE_RESPATROL' Call GetNamespace) > 0) then {
+ ['WFBE_RESPATROLTYPE10',['TK_GUE_Soldier_EP1','TK_GUE_Soldier_MG_EP1','TK_GUE_Soldier_Sniper_EP1','TK_GUE_Bonesetter_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE11',['TK_GUE_Warlord_EP1','TK_GUE_Soldier_AR_EP1','TK_GUE_Soldier_3_EP1','TK_GUE_Soldier_AT_EP1','TK_GUE_Soldier_4_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE12',['Offroad_DSHKM_TK_GUE_EP1','Offroad_SPG9_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE20',['BTR40_MG_TK_GUE_EP1','Ural_ZU23_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE21',['V3S_TK_GUE_EP1','TK_GUE_Warlord_EP1','TK_GUE_Soldier_AT_EP1','TK_GUE_Soldier_MG_EP1','TK_GUE_Soldier_HAT_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE22',['BTR40_MG_TK_GUE_EP1','TK_GUE_Soldier_AA_EP1','TK_GUE_Soldier_AA_EP1','TK_GUE_Bonesetter_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE30',['T34_TK_GUE_EP1','T34_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE31',['T55_TK_GUE_EP1','T55_TK_GUE_EP1'],true] Call SetNamespace;
+ ['WFBE_RESPATROLTYPE32',['TK_GUE_Soldier_Sniper_EP1','TK_GUE_Soldier_5_EP1','TK_GUE_Soldier_Sniper_EP1'],true] Call SetNamespace;
+};
+
+//--- Base Attacker Resistance.
+if (('WFBE_RESSTRIKER' Call GetNamespace) > 0) then {
+ ['WFBE_RESSTRIKERTYPE10',['TK_GUE_Soldier_EP1','TK_GUE_Soldier_5_EP1','TK_GUE_Soldier_Sniper_EP1'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE11',['TK_GUE_Warlord_EP1','TK_GUE_Soldier_AR_EP1','TK_GUE_Soldier_3_EP1','TK_GUE_Soldier_AT_EP1','TK_GUE_Soldier_4_EP1'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE12',['TK_GUE_Warlord_EP1','TK_GUE_Soldier_AA_EP1','TK_GUE_Soldier_AA_EP1','TK_GUE_Soldier_3_EP1'],true] Call SetNamespace;
+ ['WFBE_RESSTRIKERTYPE13',['TK_GUE_Warlord_EP1','TK_GUE_Soldier_MG_EP1','TK_GUE_Bonesetter_EP1','TK_GUE_Soldier_AT_EP1','TK_GUE_Soldier_AT_EP1'],true] Call SetNamespace;
+};
+
+diag_log Format ["[WFBE (INIT)][frameno:%1 | ticktime:%2] Resistance_TKGUE: Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Arrowhead/Squad_TK.sqf b/Common/Config/Core_Squads/Arrowhead/Squad_TK.sqf
new file mode 100644
index 0000000..7ba782e
--- /dev/null
+++ b/Common/Config/Core_Squads/Arrowhead/Squad_TK.sqf
@@ -0,0 +1,285 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_d','_f','_l','_u'];
+
+_aiTeamTemplates = [];
+_aiTeamTemplateRequires = [];
+_aiTeamTypes = [];
+_aiTeamUpgrades = [];
+
+_d = ["Infantry - Infantry Squad"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_Spotter_EP1"];
+_u = _u + ["TK_Soldier_AR_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [0,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AR_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [1,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section (AT)"];
+_u = ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [1,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section (HAT)"];
+_u = ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_HAT_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [3,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section (AA)"];
+_u = ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [2,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section (AA/AT)"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,false,false,false];
+_l = [2,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Infantry Section (MG)"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_f = [true,false,false,false];
+_l = [1,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Snipers Team"];
+_u = ["TK_Soldier_Spotter_EP1"];
+_u = _u + ["TK_Soldier_Sniper_EP1"];
+_f = [true,false,false,false];
+_l = [2,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Infantry - Special Ops Team"];
+_u = ["TK_Special_Forces_EP1"];
+_u = _u + ["TK_Special_Forces_TL_EP1"];
+_u = _u + ["TK_Special_Forces_MG_EP1"];
+_f = [true,false,false,false];
+_l = [3,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [0];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Motorized Infantry - Motorized Infantry Squad"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["V3S_TK_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_Spotter_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AR_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_u = _u + ["TK_Soldier_EP1"];
+_f = [true,true,false,false];
+_l = [1,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [1];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Motorized Infantry - Motorized Patrol Section"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BRDM2_TK_EP1"];
+_f = [true,true,false,false];
+_l = [0,1,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [1];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Mechanized Infantry - Motor Rifles (BMP)"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_f = [true,false,true,false];
+_l = [1,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Mechanized Infantry - Motor Rifles (BTR)"];
+_u = ["TK_Soldier_SL_EP1"];
+_u = _u + ["BTR60_TK_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_AT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_GL_EP1"];
+_f = [true,true,false,false];
+_l = [1,2,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [1];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Armor - IFV Platoon (Light)"];
+_u = ["BMP2_TK_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+_f = [false,false,true,false];
+_l = [0,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Armor - Anti Air Platoon"];
+_u = ["ZSU_TK_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+_f = [false,false,true,false];
+_l = [0,0,1,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Armor - Tank Platoon (Light)"];
+_u = ["T55_TK_EP1"];
+_u = _u + ["T55_TK_EP1"];
+_f = [false,false,true,false];
+_l = [0,0,1,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Armor - Tank Platoon (Heavy)"];
+_u = ["T72_TK_EP1"];
+_u = _u + ["T72_TK_EP1"];
+_f = [false,false,true,false];
+_l = [0,0,2,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Air - Mi-17 Squadron"];
+_u = ["Mi17_TK_EP1"];
+_u = _u + ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_f = [true,false,false,true];
+_l = [2,0,0,0];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Air - Mi-24 Squadron"];
+_u = ["Mi24_D_TK_EP1"];
+_u = _u + ["Mi24_D_TK_EP1"];
+_f = [false,false,false,true];
+_l = [0,0,0,1];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Air - L39 Squadron"];
+_u = ["L39_TK_EP1"];
+_u = _u + ["L39_TK_EP1"];
+_f = [false,false,false,true];
+_l = [0,0,0,2];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+_d = _d + ["Air - Sukhoi 25 Squadron"];
+_u = ["Su25_TK_EP1"];
+_u = _u + ["Su25_TK_EP1"];
+_f = [false,false,false,true];
+_l = [0,0,0,3];
+
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [_f];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [_l];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_d] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Arrowhead/Squad_TKA.sqf b/Common/Config/Core_Squads/Arrowhead/Squad_TKA.sqf
new file mode 100644
index 0000000..8360f83
--- /dev/null
+++ b/Common/Config/Core_Squads/Arrowhead/Squad_TKA.sqf
@@ -0,0 +1,45 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["East", "BIS_TK", ["TK_An2Flight"]] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["BMP2_TK_EP1"];
+_u = _u + ["BMP2_TK_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - IFV Platoon (Light)"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,0,0]];
+
+_u = ["ZSU_TK_EP1"];
+_u = _u + ["ZSU_TK_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - Anti Air Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["Mi17_TK_EP1"];
+_u = _u + ["TK_Soldier_SL_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_AA_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_LAT_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+_u = _u + ["TK_Soldier_MG_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry Mi-17 Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[2,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Arrowhead/Squad_US.sqf b/Common/Config/Core_Squads/Arrowhead/Squad_US.sqf
new file mode 100644
index 0000000..8003458
--- /dev/null
+++ b/Common/Config/Core_Squads/Arrowhead/Squad_US.sqf
@@ -0,0 +1,45 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["West", "BIS_US", ["US_AH6XFlight","US_C130JFlight","US_MQ9Flight"]] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["M2A2_EP1"];
+_u = _u + ["M2A2_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - APC Platoon (Bradley)"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["M6_EP1"];
+_u = _u + ["M6_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - Anti-Air Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,3,0]];
+
+_u = ["CH_47F_EP1"];
+_u = _u + ["US_Soldier_TL_EP1"];
+_u = _u + ["US_Soldier_AR_EP1"];
+_u = _u + ["US_Soldier_LAT_EP1"];
+_u = _u + ["US_Soldier_Medic_EP1"];
+_u = _u + ["US_Soldier_EP1"];
+_u = _u + ["US_Soldier_EP1"];
+_u = _u + ["US_Soldier_EP1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry CH-47F Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/CombinedOps/Squad_US_Camo.sqf b/Common/Config/Core_Squads/CombinedOps/Squad_US_Camo.sqf
new file mode 100644
index 0000000..350bf06
--- /dev/null
+++ b/Common/Config/Core_Squads/CombinedOps/Squad_US_Camo.sqf
@@ -0,0 +1,51 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["West", "USMC", ["USMC_MQ9Squadron","USMC_FRTeam_Razor"]] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["M1A1"];
+_u = _u + ["M1A1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - M1A1 Section"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["UH1Y"];
+_u = _u + ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_LAT"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry UH1Y Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,0,1]];
+
+_u = ["MH60S"];
+_u = _u + ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_MG"];
+_u = _u + ["USMC_Soldier_AT"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry MH-60S Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[2,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Squads_GetFactionGroups.sqf b/Common/Config/Core_Squads/Squads_GetFactionGroups.sqf
new file mode 100644
index 0000000..cf5df82
--- /dev/null
+++ b/Common/Config/Core_Squads/Squads_GetFactionGroups.sqf
@@ -0,0 +1,78 @@
+/* Use this file if you wish to set quickly a faction's groups */
+Private ['_aiTeamTemplates','_aiTeamTemplateName','_aiTeamTemplateRequires','_aiTeamTypes','_aiTeamUpgrades','_blacklist','_cfgFaction','_faction','_side'];
+
+_side = _this select 0;
+_faction = _this select 1;
+_blacklist = if (count _this > 2) then {_this select 2} else {[]};
+
+_cfgFaction = configFile >> "CfgGroups" >> _side >> _faction;
+
+if !(isClass _cfgFaction) exitWith {diag_log Format ["[WFBE (ERROR)][frameno:%1 | ticktime:%2] Squads_SetFactionGroups: Entry (configFile >> '%3' >> '%4') is not a valid group config.",diag_frameno,diag_tickTime,_side,_faction]};
+
+_aiTeamTemplates = [];
+_aiTeamTemplateName = [];
+_aiTeamTemplateRequires = [];
+_aiTeamTypes = [];
+_aiTeamUpgrades = [];
+
+//--- Iterate through the faction's config and grab the group along with it's properties.
+for "_i" from 0 to ((count _cfgFaction) - 1) do {
+ Private ["_classKind"];
+ _classKind = _cfgFaction select _i;
+
+ // ACE CSW squads don't work quite right.
+ if (isClass _classKind && toUpper (configName(_classKind)) != "ACE_CSW_INFANTRY") then {
+ Private ["_nameKind"];
+ _nameKind = getText (_classKind >> "name");
+ for "_j" from 0 to ((count _classKind) - 1) do {
+ Private ["_classType"];
+ _classType = _classKind select _j;
+ if (isClass _classType && !(configName(_classType) in _blacklist)) then {
+ Private ["_factoryPool","_groupUnits","_levels","_nameGroup","_require"];
+ _nameGroup = getText (_classType >> "name");
+ _aiTeamTemplateName = _aiTeamTemplateName + [Format ["%1 - %2",_nameKind,_nameGroup]];
+ _groupUnits = [];
+ _require = [false, false, false, false];
+ _levels = [0,0,0,0];
+
+ for "_k" from 0 to ((count _classType) - 1) do {
+ Private ["_classUnit"];
+ _classUnit = _classType select _k;
+
+ if (isClass _classUnit) then {
+ Private ["_unit"];
+ _unit = getText (_classUnit >> "vehicle");
+ _groupUnits = _groupUnits + [_unit];
+
+ _get = _unit Call GetNamespace;
+ if !(isNil "_get") then {
+ _type = _get select QUERYUNITFACTORY;
+ _upgrade = _get select QUERYUNITUPGRADE;
+
+ _require set [_type, true];
+ _levels set [_type, _upgrade];
+ } else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%2 | ticktime:%3] Squads_SetFactionGroups: Unit '%1' is not a defined within the core files.",_unit,diag_frameno,diag_tickTime];
+ /* TODO, Attempt to define*/
+ };
+ };
+ };
+
+ _factoryPool = switch (configName _classKind) do {
+ case "Infantry": {0};
+ case "Motorized": {1};
+ case "Mechanized": {2};
+ case "Armor": {2};
+ case "Air": {3};
+ default {0};
+ };
+ _aiTeamTypes = _aiTeamTypes + [_factoryPool];
+ _aiTeamUpgrades = _aiTeamUpgrades + [_levels];
+ _aiTeamTemplateRequires = _aiTeamTemplateRequires + [_require];
+ _aiTeamTemplates = _aiTeamTemplates + [_groupUnits];
+ };
+ };
+ };
+};
+
+[_aiTeamTemplates, _aiTeamTemplateName, _aiTeamTemplateRequires, _aiTeamTypes, _aiTeamUpgrades] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Vanilla/Squad_CDF.sqf b/Common/Config/Core_Squads/Vanilla/Squad_CDF.sqf
new file mode 100644
index 0000000..2ab99ed
--- /dev/null
+++ b/Common/Config/Core_Squads/Vanilla/Squad_CDF.sqf
@@ -0,0 +1,45 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["West", "CDF"] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["BMP2_CDF"];
+_u = _u + ["BMP2_CDF"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - APC Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,2,0]];
+
+_u = ["ZSU_CDF"];
+_u = _u + ["ZSU_CDF"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - AA Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["Mi17_CDF"];
+_u = _u + ["CDF_Soldier_Medic"];
+_u = _u + ["CDF_Soldier_MG"];
+_u = _u + ["CDF_Soldier_AR"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_RPG"];
+_u = _u + ["CDF_Soldier_Spotter"];
+_u = _u + ["CDF_Soldier"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Mi-8 Infantry Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,false,true]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[1,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Vanilla/Squad_INS.sqf b/Common/Config/Core_Squads/Vanilla/Squad_INS.sqf
new file mode 100644
index 0000000..f379743
--- /dev/null
+++ b/Common/Config/Core_Squads/Vanilla/Squad_INS.sqf
@@ -0,0 +1,45 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["East", "INS"] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["BMP2_INS"];
+_u = _u + ["BMP2_INS"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - APC Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,2,0]];
+
+_u = ["ZSU_INS"];
+_u = _u + ["ZSU_INS"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - AA Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["Mi17_Ins"];
+_u = _u + ["Ins_Soldier_Medic"];
+_u = _u + ["Ins_Soldier_MG"];
+_u = _u + ["Ins_Soldier_AR"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_AT"];
+_u = _u + ["Ins_Soldier_Sniper"];
+_u = _u + ["Ins_Soldier_1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Mi-8 Infantry Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,false,true]];
+_aiTeamUpgrades = _aiTeamUpgrades + [[1,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Vanilla/Squad_RU.sqf b/Common/Config/Core_Squads/Vanilla/Squad_RU.sqf
new file mode 100644
index 0000000..39f77bc
--- /dev/null
+++ b/Common/Config/Core_Squads/Vanilla/Squad_RU.sqf
@@ -0,0 +1,70 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["East", "RU", ["RU_Pchela1TSquadron","RU_Ka52Squadron"]] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["2S6M_Tunguska"];
+_u = _u + ["2S6M_Tunguska"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - Anti Air Platoon"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,3,0]];
+
+_u = ["T72_RU"];
+_u = _u + ["T72_RU"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - Tank Platoon (Light)"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["Mi17_Ins"];
+_u = _u + ["MVD_Soldier_TL"];
+_u = _u + ["MVD_Soldier_GL"];
+_u = _u + ["MVD_Soldier_MG"];
+_u = _u + ["MVD_Soldier_MG"];
+_u = _u + ["MVD_Soldier_Marksman"];
+_u = _u + ["MVD_Soldier_AT"];
+_u = _u + ["MVD_Soldier_AT"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry Mi-8 Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[2,0,0,0]];
+
+_u = ["Mi17_rockets_RU"];
+_u = _u + ["RU_Soldier_TL"];
+_u = _u + ["RU_Soldier_AA"];
+_u = _u + ["RU_Soldier_LAT"];
+_u = _u + ["RU_Soldier_LAT"];
+_u = _u + ["RU_Soldier_MG"];
+_u = _u + ["RU_Soldier_MG"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry Mi-8 Squadron (Rockets)"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[2,0,0,1]];
+
+if !(paramRestrictionKamov) then {
+ _u = ["Ka52Black"];
+ _u = _u + ["Ka52"];
+
+ _aiTeamTemplateName = _aiTeamTemplateName + ["Air - Ka-52 Squadron"];
+ _aiTeamTemplates = _aiTeamTemplates + [_u];
+ _aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,false,true]];
+ _aiTeamTypes = _aiTeamTypes + [3];
+ _aiTeamUpgrades = _aiTeamUpgrades + [[0,0,0,3]];
+};
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Squads/Vanilla/Squad_USMC.sqf b/Common/Config/Core_Squads/Vanilla/Squad_USMC.sqf
new file mode 100644
index 0000000..350bf06
--- /dev/null
+++ b/Common/Config/Core_Squads/Vanilla/Squad_USMC.sqf
@@ -0,0 +1,51 @@
+Private ['_aiTeamTemplateRequires','_aiTeamTemplateName','_aiTeamTemplates','_aiTeamTypes','_aiTeamUpgrades','_return','_u'];
+
+//--- Overall Dump.
+_return = ["West", "USMC", ["USMC_MQ9Squadron","USMC_FRTeam_Razor"]] Call Compile preprocessFile "Common\Config\Core_Squads\Squads_GetFactionGroups.sqf";
+_aiTeamTemplates = _return select 0;
+_aiTeamTemplateName = _return select 1;
+_aiTeamTemplateRequires = _return select 2;
+_aiTeamTypes = _return select 3;
+_aiTeamUpgrades = _return select 4;
+
+//--- Custom Groups.
+_u = ["M1A1"];
+_u = _u + ["M1A1"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Armor - M1A1 Section"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[false,false,true,false]];
+_aiTeamTypes = _aiTeamTypes + [2];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,1,0]];
+
+_u = ["UH1Y"];
+_u = _u + ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_AR"];
+_u = _u + ["USMC_Soldier_LAT"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry UH1Y Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[0,0,0,1]];
+
+_u = ["MH60S"];
+_u = _u + ["USMC_Soldier_TL"];
+_u = _u + ["USMC_Soldier_MG"];
+_u = _u + ["USMC_Soldier_AT"];
+_u = _u + ["USMC_Soldier_Medic"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+_u = _u + ["USMC_Soldier"];
+
+_aiTeamTemplateName = _aiTeamTemplateName + ["Air - Infantry MH-60S Squadron"];
+_aiTeamTemplates = _aiTeamTemplates + [_u];
+_aiTeamTemplateRequires = _aiTeamTemplateRequires + [[true,false,false,true]];
+_aiTeamTypes = _aiTeamTypes + [3];
+_aiTeamUpgrades = _aiTeamUpgrades + [[2,0,0,0]];
+
+[_aiTeamTemplates,_aiTeamTemplateRequires,_aiTeamTypes,_aiTeamUpgrades,_aiTeamTemplateName] \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Arrowhead/Structures_TKA.sqf b/Common/Config/Core_Structures/Arrowhead/Structures_TKA.sqf
new file mode 100644
index 0000000..a2dd569
--- /dev/null
+++ b/Common/Config/Core_Structures/Arrowhead/Structures_TKA.sqf
@@ -0,0 +1,162 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+EASTHQ = "BMP2_HQ_TK_unfolded_EP1";
+EASTBAR = "TK_WarfareBBarracks_EP1";
+EASTLVF = "TK_WarfareBLightFactory_EP1";
+EASTCC = "TK_WarfareBUAVterminal_EP1";
+EASTHEAVY = "TK_WarfareBHeavyFactory_EP1";
+EASTAIR = "TK_WarfareBAircraftFactory_EP1";
+EASTSP = "TK_WarfareBVehicleServicePoint_EP1";
+EASTAAR = "TK_WarfareBAntiAirRadar_EP1";
+
+/* Flag Textures */
+['WFBE_EASTFLAG','\Ca\ca_e\Data\flag_tka_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_EASTFARP','CampEast_EP1',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_EASTCONSTRUCTIONSITE','TK_WarfareBContructionSite_EP1',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [EASTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [EASTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [EASTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [EASTCC];
+_d = _d + [localize "STR_WF_CommandCenter_RU"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [EASTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [EASTAIR];
+_d = _d + [localize "STR_WF_AircraftFactory"];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [EASTSP];
+_d = _d + [localize "STR_WF_MAIN_ServicePoint"];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [EASTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_EAST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_EASTMHQNAME','BMP2_HQ_TK_EP1',true] Call SetNamespace;
+
+['WFBE_EASTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["WarfareBMGNest_PK_TK_EP1"];
+_n = _n + ["SearchLight_TK_EP1"];
+_n = _n + ["KORD_TK_EP1"];
+_n = _n + ["KORD_high_TK_EP1"];
+_n = _n + ["AGS_TK_EP1"];
+_n = _n + ["SPG9_TK_INS_EP1"];
+_n = _n + ["Metis_TK_EP1"];
+_n = _n + ["Igla_AA_pod_TK_EP1"];
+_n = _n + ["ZU23_TK_EP1"];
+_n = _n + ["2b14_82mm_TK_EP1"];
+_n = _n + ["D30_TK_EP1"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["TK_WarfareBBarrier5x_EP1"];
+_n = _n + ["TK_WarfareBBarrier10x_EP1"];
+_n = _n + ["TK_WarfareBBarrier10xTall_EP1"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small_EP1"];
+_n = _n + ["Land_fort_rampart_EP1"];
+_n = _n + ["Land_fort_artillery_nest_EP1"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + ["Land_CamoNet_EAST_EP1"];
+_n = _n + ["Land_CamoNetVar_EAST_EP1"];
+_n = _n + ["Land_CamoNetB_EAST_EP1"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["TKOrdnanceBox_EP1"];
+_n = _n + ["TKVehicleBox_EP1"];
+_n = _n + ["TKBasicAmmunitionBox_EP1"];
+_n = _n + ["TKBasicWeapons_EP1"];
+_n = _n + ["TKLaunchers_EP1"];
+_n = _n + ["TKSpecialWeapons_EP1"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_EASTDEFENSES_MG',['KORD_high_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_GL',['AGS_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_AAPOD',['Igla_AA_pod_TK_EP1','ZU23_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_ATPOD',['Metis_TK_EP1','SPG9_TK_INS_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_CANNON',['D30_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_MASH',['MASH_EP1'],true] Call SetNamespace;
+
+['WFBE_EASTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Arrowhead/Structures_US.sqf b/Common/Config/Core_Structures/Arrowhead/Structures_US.sqf
new file mode 100644
index 0000000..cb59721
--- /dev/null
+++ b/Common/Config/Core_Structures/Arrowhead/Structures_US.sqf
@@ -0,0 +1,166 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+WESTHQ = "M1130_HQ_unfolded_EP1";
+WESTBAR = "US_WarfareBBarracks_EP1";
+WESTLVF = "US_WarfareBLightFactory_EP1";
+WESTCC = "US_WarfareBUAVterminal_EP1";
+WESTHEAVY = "US_WarfareBHeavyFactory_EP1";
+WESTAIR = "US_WarfareBAircraftFactory_EP1";
+WESTSP = "US_WarfareBVehicleServicePoint_EP1";
+WESTAAR = "US_WarfareBAntiAirRadar_EP1";
+
+/* Flag Textures */
+['WFBE_WESTFLAG','\Ca\ca_e\Data\flag_us_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_WESTFARP','Camp_EP1',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_WESTCONSTRUCTIONSITE','US_WarfareBContructionSite_EP1',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [WESTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [WESTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [WESTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [WESTCC];
+_d = _d + [localize "STR_WF_CommandCenter_USMC"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [WESTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [WESTAIR];
+_d = _d + [localize "STR_WF_AircraftFactory"];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [31];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [WESTSP];
+_d = _d + [localize "STR_WF_MAIN_ServicePoint"];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [WESTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_WEST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_WESTMHQNAME','M1130_CV_EP1',true] Call SetNamespace;
+
+['WFBE_WESTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["WarfareBMGNest_M240_US_EP1"];
+_n = _n + ["M2HD_mini_TriPod_US_EP1"];
+_n = _n + ["SearchLight_US_EP1"];
+_n = _n + ["M2StaticMG_US_EP1"];
+if (paramDLCBAF) then {
+ _n = _n + ["BAF_GPMG_Minitripod_W"];
+ _n = _n + ["BAF_GMG_Tripod_W"];
+ _n = _n + ["BAF_L2A1_Minitripod_W"];
+ _n = _n + ["BAF_L2A1_Tripod_W"];
+};
+_n = _n + ["MK19_TriPod_US_EP1"];
+_n = _n + ["TOW_TriPod_US_EP1"];
+_n = _n + ["Stinger_Pod_US_EP1"];
+_n = _n + ["M252_US_EP1"];
+_n = _n + ["M119_US_EP1"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["US_WarfareBBarrier5x_EP1"];
+_n = _n + ["US_WarfareBBarrier10x_EP1"];
+_n = _n + ["US_WarfareBBarrier10xTall_EP1"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small_EP1"];
+_n = _n + ["Land_fort_rampart_EP1"];
+_n = _n + ["Land_fort_artillery_nest_EP1"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + ["Land_CamoNet_NATO_EP1"];
+_n = _n + ["Land_CamoNetVar_NATO_EP1"];
+_n = _n + ["Land_CamoNetB_NATO_EP1"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["USOrdnanceBox_EP1"];
+_n = _n + ["USVehicleBox_EP1"];
+_n = _n + ["USBasicAmmunitionBox_EP1"];
+_n = _n + ["USBasicWeapons_EP1"];
+_n = _n + ["USLaunchers_EP1"];
+_n = _n + ["USSpecialWeapons_EP1"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_WESTDEFENSES_MG',['M2StaticMG_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_GL',['MK19_TriPod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_AAPOD',['Stinger_Pod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_ATPOD',['TOW_TriPod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_CANNON',['M119_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_MASH',['MASH_EP1'],true] Call SetNamespace;
+
+['WFBE_WESTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/CombinedOps/Structures_CDF.sqf b/Common/Config/Core_Structures/CombinedOps/Structures_CDF.sqf
new file mode 100644
index 0000000..265eb8c
--- /dev/null
+++ b/Common/Config/Core_Structures/CombinedOps/Structures_CDF.sqf
@@ -0,0 +1,161 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+WESTHQ = "BMP2_HQ_CDF_unfolded";
+WESTBAR = "CDF_WarfareBBarracks";
+WESTLVF = "CDF_WarfareBLightFactory";
+WESTCC = "CDF_WarfareBUAVterminal";
+WESTHEAVY = "CDF_WarfareBHeavyFactory";
+WESTAIR = "CDF_WarfareBAircraftFactory";
+WESTSP = "CDF_WarfareBVehicleServicePoint";
+WESTAAR = "CDF_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_WESTFLAG','\ca\ca_e\data\flag_cdf_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_WESTFARP','Camp',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_WESTCONSTRUCTIONSITE','CDF_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [WESTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [WESTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [WESTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [WESTCC];
+_d = _d + [localize "STR_WF_CommandCenter_USMC"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [WESTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [WESTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [31];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [WESTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [WESTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_WEST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_WESTMHQNAME','BMP2_HQ_CDF',true] Call SetNamespace;
+
+['WFBE_WESTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["CDF_WarfareBMGNest_PK"];
+_n = _n + ["DSHkM_Mini_TriPod_CDF"];
+_n = _n + ["DSHKM_CDF"];
+_n = _n + ["SearchLight_CDF"];
+_n = _n + ["AGS_CDF"];
+_n = _n + ["SPG9_CDF"];
+_n = _n + ["ZU23_CDF"];
+_n = _n + ["2b14_82mm_CDF"];
+_n = _n + ["D30_CDF"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + [if (WF_Camo) then {"Land_fortified_nest_small"} else {"Land_fortified_nest_small_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_rampart"} else {"Land_fort_rampart_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_artillery_nest"} else {"Land_fort_artillery_nest_EP1"}];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + [if (WF_Camo) then {"Land_CamoNet_NATO"} else {"Land_CamoNet_NATO_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetVar_NATO"} else {"Land_CamoNetVar_NATO_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetB_NATO"} else {"Land_CamoNetB_NATO_EP1"}];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_WESTDEFENSES_MG',['DSHKM_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_GL',['AGS_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_AAPOD',['ZU23_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_ATPOD',['SPG9_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_CANNON',['D30_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_WESTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/CombinedOps/Structures_INS.sqf b/Common/Config/Core_Structures/CombinedOps/Structures_INS.sqf
new file mode 100644
index 0000000..9be1133
--- /dev/null
+++ b/Common/Config/Core_Structures/CombinedOps/Structures_INS.sqf
@@ -0,0 +1,162 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+EASTHQ = "BMP2_HQ_INS_unfolded";
+EASTBAR = "Ins_WarfareBBarracks";
+EASTLVF = "Ins_WarfareBLightFactory";
+EASTCC = "INS_WarfareBUAVterminal";
+EASTHEAVY = "Ins_WarfareBHeavyFactory";
+EASTAIR = "INS_WarfareBAircraftFactory";
+EASTSP = "INS_WarfareBVehicleServicePoint";
+EASTAAR = "INS_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_EASTFLAG','\Ca\Data\flag_chdkz_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_EASTFARP','CampEast',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_EASTCONSTRUCTIONSITE','Ins_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [EASTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [EASTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [EASTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [EASTCC];
+_d = _d + [localize "STR_WF_CommandCenter_RU"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [EASTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [EASTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [EASTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [EASTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_EAST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_EASTMHQNAME','BMP2_HQ_INS',true] Call SetNamespace;
+
+['WFBE_EASTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["Ins_WarfareBMGNest_PK"];
+_n = _n + ["SearchLight_INS"];
+_n = _n + ["DSHkM_Mini_TriPod"];
+_n = _n + ["DSHKM_Ins"];
+_n = _n + ["AGS_Ins"];
+_n = _n + ["SPG9_Ins"];
+_n = _n + ["ZU23_Ins"];
+_n = _n + ["2b14_82mm_INS"];
+_n = _n + ["D30_Ins"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + [if (WF_Camo) then {"Land_fortified_nest_small"} else {"Land_fortified_nest_small_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_rampart"} else {"Land_fort_rampart_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_artillery_nest"} else {"Land_fort_artillery_nest_EP1"}];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + [if (WF_Camo) then {"Land_CamoNet_EAST"} else {"Land_CamoNet_EAST_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetVar_EAST"} else {"Land_CamoNetVar_EAST_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetB_EAST"} else {"Land_CamoNetB_EAST_EP1"}];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_EASTDEFENSES_MG',['DSHKM_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_GL',['AGS_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_AAPOD',['ZU23_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_ATPOD',['SPG9_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_CANNON',['D30_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_EASTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/CombinedOps/Structures_TKA.sqf b/Common/Config/Core_Structures/CombinedOps/Structures_TKA.sqf
new file mode 100644
index 0000000..d5c5220
--- /dev/null
+++ b/Common/Config/Core_Structures/CombinedOps/Structures_TKA.sqf
@@ -0,0 +1,163 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+EASTHQ = if (WF_Camo) then {"BTR90_HQ_unfolded"} else {"BTR90_HQ_unfolded"};
+EASTBAR = if (WF_Camo) then {"RU_WarfareBBarracks"} else {"TK_WarfareBBarracks_EP1"};
+EASTLVF = if (WF_Camo) then {"RU_WarfareBLightFactory"} else {"TK_WarfareBLightFactory_EP1"};
+EASTCC = if (WF_Camo) then {"RU_WarfareBUAVterminal"} else {"TK_WarfareBUAVterminal_EP1"};
+EASTHEAVY = if (WF_Camo) then {"RU_WarfareBHeavyFactory"} else {"TK_WarfareBHeavyFactory_EP1"};
+EASTAIR = if (WF_Camo) then {"RU_WarfareBAircraftFactory"} else {"TK_WarfareBAircraftFactory_EP1"};
+EASTSP = if (WF_Camo) then {"RU_WarfareBVehicleServicePoint"} else {"TK_WarfareBVehicleServicePoint_EP1"};
+EASTAAR = if (WF_Camo) then {"RU_WarfareBAntiAirRadar"} else {"TK_WarfareBAntiAirRadar_EP1"};
+
+/* Flag Textures */
+['WFBE_EASTFLAG','\Ca\Data\flag_rus_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_EASTFARP','CampEast',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_EASTCONSTRUCTIONSITE','RU_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [EASTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [EASTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [EASTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [EASTCC];
+_d = _d + [localize "STR_WF_CommandCenter_RU"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [EASTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [EASTAIR];
+_d = _d + [localize "STR_WF_AircraftFactory"];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [EASTSP];
+_d = _d + [localize "STR_WF_MAIN_ServicePoint"];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [EASTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_EAST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_EASTMHQNAME','BTR90_HQ',true] Call SetNamespace;
+
+['WFBE_EASTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["RU_WarfareBMGNest_PK"];
+_n = _n + ["SearchLight_TK_EP1"];
+_n = _n + ["KORD_TK_EP1"];
+_n = _n + ["KORD_high_TK_EP1"];
+_n = _n + ["AGS_TK_EP1"];
+_n = _n + ["SPG9_TK_INS_EP1"];
+_n = _n + ["Metis_TK_EP1"];
+_n = _n + ["Igla_AA_pod_TK_EP1"];
+_n = _n + ["ZU23_TK_EP1"];
+_n = _n + ["2b14_82mm_TK_EP1"];
+_n = _n + ["D30_TK_EP1"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["TK_WarfareBBarrier5x_EP1"];
+_n = _n + ["TK_WarfareBBarrier10x_EP1"];
+_n = _n + ["TK_WarfareBBarrier10xTall_EP1"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + [if (WF_Camo) then {"Land_fortified_nest_small"} else {"Land_fortified_nest_small_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_rampart"} else {"Land_fort_rampart_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_artillery_nest"} else {"Land_fort_artillery_nest_EP1"}];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + [if (WF_Camo) then {"Land_CamoNet_EAST"} else {"Land_CamoNet_EAST_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetVar_EAST"} else {"Land_CamoNetVar_EAST_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetB_EAST"} else {"Land_CamoNetB_EAST_EP1"}];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_EASTDEFENSES_MG',['KORD_high_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_GL',['AGS_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_AAPOD',['Igla_AA_pod_TK_EP1','ZU23_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_ATPOD',['Metis_TK_EP1','SPG9_TK_INS_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_CANNON',['D30_TK_EP1'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_MASH',['MASH_EP1'],true] Call SetNamespace;
+
+['WFBE_EASTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/CombinedOps/Structures_US.sqf b/Common/Config/Core_Structures/CombinedOps/Structures_US.sqf
new file mode 100644
index 0000000..d2071ab
--- /dev/null
+++ b/Common/Config/Core_Structures/CombinedOps/Structures_US.sqf
@@ -0,0 +1,167 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+WESTHQ = if (WF_Camo) then {"LAV25_HQ_unfolded"} else {"M1130_HQ_unfolded_EP1"};
+WESTBAR = if (WF_Camo) then {"USMC_WarfareBBarracks"} else {"US_WarfareBBarracks_EP1"};
+WESTLVF = if (WF_Camo) then {"USMC_WarfareBLightFactory"} else {"US_WarfareBLightFactory_EP1"};
+WESTCC = if (WF_Camo) then {"USMC_WarfareBUAVterminal"} else {"US_WarfareBUAVterminal_EP1"};
+WESTHEAVY = if (WF_Camo) then {"USMC_WarfareBHeavyFactory"} else {"US_WarfareBHeavyFactory_EP1"};
+WESTAIR = if (WF_Camo) then {"USMC_WarfareBAircraftFactory"} else {"US_WarfareBAircraftFactory_EP1"};
+WESTSP = if (WF_Camo) then {"USMC_WarfareBVehicleServicePoint"} else {"US_WarfareBVehicleServicePoint_EP1"};
+WESTAAR = if (WF_Camo) then {"USMC_WarfareBAntiAirRadar"} else {"US_WarfareBAntiAirRadar_EP1"};
+
+/* Flag Textures */
+['WFBE_WESTFLAG','\Ca\ca_e\Data\flag_us_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_WESTFARP','Camp_EP1',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_WESTCONSTRUCTIONSITE','US_WarfareBContructionSite_EP1',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [WESTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [WESTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [WESTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [WESTCC];
+_d = _d + [localize "STR_WF_CommandCenter_USMC"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [WESTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [WESTAIR];
+_d = _d + [localize "STR_WF_AircraftFactory"];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [31];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [WESTSP];
+_d = _d + [localize "STR_WF_MAIN_ServicePoint"];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [WESTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_WEST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_WESTMHQNAME',if (WF_Camo) then {'LAV25_HQ'} else {'M1130_CV_EP1'},true] Call SetNamespace;
+
+['WFBE_WESTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["WarfareBMGNest_M240_US_EP1"];
+_n = _n + ["M2HD_mini_TriPod_US_EP1"];
+_n = _n + ["SearchLight_US_EP1"];
+_n = _n + ["M2StaticMG_US_EP1"];
+if (paramDLCBAF) then {
+ _n = _n + ["BAF_GPMG_Minitripod_W"];
+ _n = _n + ["BAF_GMG_Tripod_W"];
+ _n = _n + ["BAF_L2A1_Minitripod_W"];
+ _n = _n + ["BAF_L2A1_Tripod_W"];
+};
+_n = _n + ["MK19_TriPod_US_EP1"];
+_n = _n + ["TOW_TriPod_US_EP1"];
+_n = _n + ["Stinger_Pod_US_EP1"];
+_n = _n + ["M252_US_EP1"];
+_n = _n + ["M119_US_EP1"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["US_WarfareBBarrier5x_EP1"];
+_n = _n + ["US_WarfareBBarrier10x_EP1"];
+_n = _n + ["US_WarfareBBarrier10xTall_EP1"];
+_n = _n + ["MASH_EP1"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + [if (WF_Camo) then {"Land_fortified_nest_small"} else {"Land_fortified_nest_small_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_rampart"} else {"Land_fort_rampart_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_fort_artillery_nest"} else {"Land_fort_artillery_nest_EP1"}];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog_EP1"];
+_n = _n + [if (WF_Camo) then {"Land_CamoNet_NATO"} else {"Land_CamoNet_NATO_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetVar_NATO"} else {"Land_CamoNetVar_NATO_EP1"}];
+_n = _n + [if (WF_Camo) then {"Land_CamoNetB_NATO"} else {"Land_CamoNetB_NATO_EP1"}];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Concrete_Wall_EP1"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["USOrdnanceBox_EP1"];
+_n = _n + ["USVehicleBox_EP1"];
+_n = _n + ["USBasicAmmunitionBox_EP1"];
+_n = _n + ["USBasicWeapons_EP1"];
+_n = _n + ["USLaunchers_EP1"];
+_n = _n + ["USSpecialWeapons_EP1"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_WESTDEFENSES_MG',['M2StaticMG_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_GL',['MK19_TriPod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_AAPOD',['Stinger_Pod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_ATPOD',['TOW_TriPod_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_CANNON',['M119_US_EP1'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_MASH',['MASH_EP1'],true] Call SetNamespace;
+
+['WFBE_WESTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Vanilla/Structures_CDF.sqf b/Common/Config/Core_Structures/Vanilla/Structures_CDF.sqf
new file mode 100644
index 0000000..180aed1
--- /dev/null
+++ b/Common/Config/Core_Structures/Vanilla/Structures_CDF.sqf
@@ -0,0 +1,162 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+WESTHQ = "BMP2_HQ_CDF_unfolded";
+WESTBAR = "CDF_WarfareBBarracks";
+WESTLVF = "CDF_WarfareBLightFactory";
+WESTCC = "CDF_WarfareBUAVterminal";
+WESTHEAVY = "CDF_WarfareBHeavyFactory";
+WESTAIR = "CDF_WarfareBAircraftFactory";
+WESTSP = "CDF_WarfareBVehicleServicePoint";
+WESTAAR = "CDF_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_WESTFLAG','\Ca\Data\flag_chernarus_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_WESTFARP','Camp',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_WESTCONSTRUCTIONSITE','CDF_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [WESTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [WESTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [WESTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [WESTCC];
+_d = _d + [localize "STR_WF_CommandCenter_USMC"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [WESTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [WESTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [31];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [WESTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [WESTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_WEST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_WESTMHQNAME','BMP2_HQ_CDF',true] Call SetNamespace;
+
+['WFBE_WESTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["CDF_WarfareBMGNest_PK"];
+_n = _n + ["DSHkM_Mini_TriPod_CDF"];
+_n = _n + ["DSHKM_CDF"];
+_n = _n + ["SearchLight_CDF"];
+_n = _n + ["AGS_CDF"];
+_n = _n + ["SPG9_CDF"];
+_n = _n + ["ZU23_CDF"];
+_n = _n + ["2b14_82mm_CDF"];
+_n = _n + ["D30_CDF"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small"];
+_n = _n + ["Land_fortified_nest_big"];
+_n = _n + ["Land_Fort_Watchtower"];
+_n = _n + ["Land_fort_rampart"];
+_n = _n + ["Land_fort_artillery_nest"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog"];
+_n = _n + ["Land_CamoNet_NATO"];
+_n = _n + ["Land_CamoNetVar_NATO"];
+_n = _n + ["Land_CamoNetB_NATO"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_WESTDEFENSES_MG',['DSHKM_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_GL',['AGS_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_AAPOD',['ZU23_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_ATPOD',['SPG9_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_CANNON',['D30_CDF'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_WESTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Vanilla/Structures_INS.sqf b/Common/Config/Core_Structures/Vanilla/Structures_INS.sqf
new file mode 100644
index 0000000..edfdf5d
--- /dev/null
+++ b/Common/Config/Core_Structures/Vanilla/Structures_INS.sqf
@@ -0,0 +1,163 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+EASTHQ = "BMP2_HQ_INS_unfolded";
+EASTBAR = "Ins_WarfareBBarracks";
+EASTLVF = "Ins_WarfareBLightFactory";
+EASTCC = "INS_WarfareBUAVterminal";
+EASTHEAVY = "Ins_WarfareBHeavyFactory";
+EASTAIR = "INS_WarfareBAircraftFactory";
+EASTSP = "INS_WarfareBVehicleServicePoint";
+EASTAAR = "INS_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_EASTFLAG','\Ca\Data\flag_chdkz_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_EASTFARP','CampEast',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_EASTCONSTRUCTIONSITE','Ins_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [EASTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [EASTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [EASTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [EASTCC];
+_d = _d + [localize "STR_WF_CommandCenter_RU"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [EASTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [EASTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [EASTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [EASTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_EAST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_EASTMHQNAME','BMP2_HQ_INS',true] Call SetNamespace;
+
+['WFBE_EASTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["Ins_WarfareBMGNest_PK"];
+_n = _n + ["SearchLight_INS"];
+_n = _n + ["DSHkM_Mini_TriPod"];
+_n = _n + ["DSHKM_Ins"];
+_n = _n + ["AGS_Ins"];
+_n = _n + ["SPG9_Ins"];
+_n = _n + ["ZU23_Ins"];
+_n = _n + ["2b14_82mm_INS"];
+_n = _n + ["D30_Ins"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small"];
+_n = _n + ["Land_fortified_nest_big"];
+_n = _n + ["Land_Fort_Watchtower"];
+_n = _n + ["Land_fort_rampart"];
+_n = _n + ["Land_fort_artillery_nest"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog"];
+_n = _n + ["Land_CamoNet_EAST"];
+_n = _n + ["Land_CamoNetVar_EAST"];
+_n = _n + ["Land_CamoNetB_EAST"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_EASTDEFENSES_MG',['DSHKM_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_GL',['AGS_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_AAPOD',['ZU23_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_ATPOD',['SPG9_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_CANNON',['D30_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_EASTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Vanilla/Structures_RU.sqf b/Common/Config/Core_Structures/Vanilla/Structures_RU.sqf
new file mode 100644
index 0000000..c0d32f5
--- /dev/null
+++ b/Common/Config/Core_Structures/Vanilla/Structures_RU.sqf
@@ -0,0 +1,165 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+EASTHQ = "BTR90_HQ_unfolded";
+EASTBAR = "RU_WarfareBBarracks";
+EASTLVF = "RU_WarfareBLightFactory";
+EASTCC = "RU_WarfareBUAVterminal";
+EASTHEAVY = "RU_WarfareBHeavyFactory";
+EASTAIR = "RU_WarfareBAircraftFactory";
+EASTSP = "RU_WarfareBVehicleServicePoint";
+EASTAAR = "RU_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_EASTFLAG','\Ca\Data\flag_rus_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_EASTFARP','CampEast',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_EASTCONSTRUCTIONSITE','RU_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [EASTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [EASTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [EASTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [EASTCC];
+_d = _d + [localize "STR_WF_CommandCenter_RU"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [EASTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [EASTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [EASTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [EASTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_EAST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_EASTMHQNAME','BTR90_HQ',true] Call SetNamespace;
+
+['WFBE_EASTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_EASTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_EASTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["RU_WarfareBMGNest_PK"];
+_n = _n + ["SearchLight_RUS"];
+_n = _n + ["KORD"];
+_n = _n + ["KORD_high"];
+_n = _n + ["AGS_RU"];
+_n = _n + ["SPG9_Ins"];
+_n = _n + ["Metis"];
+_n = _n + ["Igla_AA_pod_East"];
+_n = _n + ["ZU23_Ins"];
+_n = _n + ["2b14_82mm"];
+_n = _n + ["D30_RU"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small"];
+_n = _n + ["Land_fortified_nest_big"];
+_n = _n + ["Land_Fort_Watchtower"];
+_n = _n + ["Land_fort_rampart"];
+_n = _n + ["Land_fort_artillery_nest"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog"];
+_n = _n + ["Land_CamoNet_EAST"];
+_n = _n + ["Land_CamoNetVar_EAST"];
+_n = _n + ["Land_CamoNetB_EAST"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["RUOrdnanceBox"];
+_n = _n + ["RUVehicleBox"];
+_n = _n + ["RUBasicAmmunitionBox"];
+_n = _n + ["RUBasicWeaponsBox"];
+_n = _n + ["RULaunchersBox"];
+_n = _n + ["RUSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_EASTDEFENSES_MG',['KORD_high'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_GL',['AGS_RU'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_AAPOD',['Igla_AA_pod_East','ZU23_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_ATPOD',['Metis','SPG9_Ins'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_CANNON',['D30_RU'],true] Call SetNamespace;
+['WFBE_EASTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_EASTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Structures/Vanilla/Structures_USMC.sqf b/Common/Config/Core_Structures/Vanilla/Structures_USMC.sqf
new file mode 100644
index 0000000..16ad994
--- /dev/null
+++ b/Common/Config/Core_Structures/Vanilla/Structures_USMC.sqf
@@ -0,0 +1,162 @@
+Private ['_c','_count','_d','_dir','_dis','_n','_s','_t','_v'];
+
+/* Root Definition */
+WESTHQ = "LAV25_HQ_unfolded";
+WESTBAR = "USMC_WarfareBBarracks";
+WESTLVF = "USMC_WarfareBLightFactory";
+WESTCC = "USMC_WarfareBUAVterminal";
+WESTHEAVY = "USMC_WarfareBHeavyFactory";
+WESTAIR = "USMC_WarfareBAircraftFactory";
+WESTSP = "USMC_WarfareBVehicleServicePoint";
+WESTAAR = "USMC_WarfareBAntiAirRadar";
+
+/* Flag Textures */
+['WFBE_WESTFLAG','\Ca\Data\flag_usa_co.paa',true] Call SetNamespace;
+
+/* Mash used after being deployed */
+['WFBE_WESTFARP','Camp',true] Call SetNamespace;
+
+/* Construction Crates */
+['WFBE_WESTCONSTRUCTIONSITE','USMC_WarfareBContructionSite',true] Call SetNamespace;
+
+/* Structures */
+_v = ["Headquarters"];
+_n = [WESTHQ];
+_d = [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = [('WFBE_HQDEPLOYPRICE' Call GetNamespace)];
+_t = [if (WF_Debug) then {1} else {30}];
+_s = ["HQSite"];
+_dis = [15];
+_dir = [0];
+
+_v = _v + ["Barracks"];
+_n = _n + [WESTBAR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [200];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [18];
+_dir = _dir + [90];
+
+_v = _v + ["Light"];
+_n = _n + [WESTLVF];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [600];
+_t = _t + [if (WF_Debug) then {1} else {90}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["CommandCenter"];
+_n = _n + [WESTCC];
+_d = _d + [localize "STR_WF_CommandCenter_USMC"];
+_c = _c + [1200];
+_t = _t + [if (WF_Debug) then {1} else {110}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [20];
+_dir = _dir + [90];
+
+_v = _v + ["Heavy"];
+_n = _n + [WESTHEAVY];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [2800];
+_t = _t + [if (WF_Debug) then {1} else {130}];
+_s = _s + ["MediumSite"];
+_dis = _dis + [25];
+_dir = _dir + [90];
+
+_v = _v + ["Aircraft"];
+_n = _n + [WESTAIR];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [4400];
+_t = _t + [if (WF_Debug) then {1} else {150}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [31];
+_dir = _dir + [90];
+
+_v = _v + ["ServicePoint"];
+_n = _n + [WESTSP];
+_d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+_c = _c + [700];
+_t = _t + [if (WF_Debug) then {1} else {70}];
+_s = _s + ["SmallSite"];
+_dis = _dis + [21];
+_dir = _dir + [90];
+
+if (paramAARadar) then {
+ _v = _v + ["AARadar"];
+ _n = _n + [WESTAAR];
+ _d = _d + [getText (configFile >> "CfgVehicles" >> (_n select (count _n - 1)) >> "displayName")];
+ _c = _c + [3200];
+ _t = _t + [if (WF_Debug) then {1} else {280}];
+ _s = _s + ["MediumSite"];
+ _dis = _dis + [21];
+ _dir = _dir + [90];
+};
+
+for [{_count = count _v - 1},{_count >= 0},{_count = _count - 1}] do {
+ [Format["WFBE_WEST%1TYPE",_v select _count],_count,true] Call SetNamespace;
+};
+
+['WFBE_WESTMHQNAME','LAV25_HQ',true] Call SetNamespace;
+
+['WFBE_WESTSTRUCTURES',_v,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURENAMES',_n,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDESCRIPTIONS',_d,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURECOSTS',_c,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURETIMES',_t,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDISTANCES',_dis,true] Call SetNamespace;
+['WFBE_WESTSTRUCTUREDIRECTIONS',_dir,true] Call SetNamespace;
+['WFBE_WESTSTRUCTURESCRIPTS',_s,true] Call SetNamespace;
+
+/* Defenses */
+_n = ["USMC_WarfareBMGNest_M240"];
+_n = _n + ["M2HD_mini_TriPod"];
+_n = _n + ["M2StaticMG"];
+_n = _n + ["SearchLight"];
+_n = _n + ["MK19_TriPod"];
+_n = _n + ["TOW_TriPod"];
+_n = _n + ["Stinger_Pod"];
+_n = _n + ["M252"];
+_n = _n + ["M119"];
+_n = _n + ["Land_HBarrier3"];
+_n = _n + ["Land_HBarrier5"];
+_n = _n + ["Land_HBarrier_large"];
+_n = _n + ["Base_WarfareBBarrier5x"];
+_n = _n + ["Base_WarfareBBarrier10x"];
+_n = _n + ["Base_WarfareBBarrier10xTall"];
+_n = _n + ["MASH"];
+_n = _n + ["Land_fort_bagfence_long"];
+_n = _n + ["Land_fort_bagfence_corner"];
+_n = _n + ["Land_fort_bagfence_round"];
+_n = _n + ["Land_fortified_nest_small"];
+_n = _n + ["Land_fortified_nest_big"];
+_n = _n + ["Land_Fort_Watchtower"];
+_n = _n + ["Land_fort_rampart"];
+_n = _n + ["Land_fort_artillery_nest"];
+_n = _n + ["Hhedgehog_concreteBig"];
+_n = _n + ["Hedgehog"];
+_n = _n + ["Land_CamoNet_NATO"];
+_n = _n + ["Land_CamoNetVar_NATO"];
+_n = _n + ["Land_CamoNetB_NATO"];
+_n = _n + ["Sign_Danger"];
+_n = _n + ["HeliH"];
+_n = _n + ["Fort_RazorWire"];
+_n = _n + ["Land_Ind_IlluminantTower"];
+_n = _n + ["Land_Campfire"];
+_n = _n + ["USOrdnanceBox"];
+_n = _n + ["USVehicleBox"];
+_n = _n + ["USBasicAmmunitionBox"];
+_n = _n + ["USBasicWeaponsBox"];
+_n = _n + ["USLaunchersBox"];
+_n = _n + ["USSpecialWeaponsBox"];
+
+/* Class used for AI, AI will attempt to build those */
+['WFBE_WESTDEFENSES_MG',['M2StaticMG'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_GL',['MK19_TriPod'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_AAPOD',['Stinger_Pod'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_ATPOD',['TOW_TriPod'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_CANNON',['M119'],true] Call SetNamespace;
+['WFBE_WESTDEFENSES_MASH',['MASH'],true] Call SetNamespace;
+
+['WFBE_WESTDEFENSENAMES',_n,true] Call SetNamespace; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TK.sqf
new file mode 100644
index 0000000..88c6e33
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TK.sqf
@@ -0,0 +1,20 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* Overall Configuration */
+['WFBE_EASTPILOT','TK_Soldier_Pilot_EP1',false] Call SetNamespace;
+
+/* Takistan Aircraft Vehicles */
+_u = ['Mi17_TK_EP1'];
+_u = _u + ['UH1H_TK_EP1'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi24_D_TK_EP1'];
+};
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su25_TK_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TKA.sqf
new file mode 100644
index 0000000..3bdd836
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_TKA.sqf
@@ -0,0 +1,17 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- Takistan Aircraft Vehicles.
+_u = ['Mi17_TK_EP1'];
+_u = _u + ['UH1H_TK_EP1'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi24_D_TK_EP1'];
+};
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su25_TK_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Aircraft_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_US.sqf
new file mode 100644
index 0000000..3bc2ef5
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Aircraft_US.sqf
@@ -0,0 +1,27 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- US Aircraft Vehicles.
+_u = ['MH6J_EP1'];
+_u = _u + ['UH60M_EP1'];
+_u = _u + ['UH60M_MEV_EP1'];
+_u = _u + ['CH_47F_EP1'];
+if (_r == 0 || _r == 1) then {
+ _u = _u + ['AH6J_EP1'];
+ _u = _u + ['AH64D_EP1'];
+};
+if (_r == 0) then {
+ _u = _u + ['C130J_US_EP1'];
+ _u = _u + ['A10_US_EP1'];
+};
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_Merlin_HC3_D'];
+ _u = _u + ['CH_47F_BAF'];
+ if (_r == 0 || _r == 1) then {
+ _u = _u + ['AW159_Lynx_BAF'];
+ _u = _u + ['BAF_Apache_AH1_D'];
+ };
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Airport_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Airport_TK.sqf
new file mode 100644
index 0000000..6af99f5
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Airport_TK.sqf
@@ -0,0 +1,13 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* Takistan Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su25_TK_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Airport_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Airport_TKA.sqf
new file mode 100644
index 0000000..6af99f5
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Airport_TKA.sqf
@@ -0,0 +1,13 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* Takistan Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su25_TK_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Airport_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Airport_US.sqf
new file mode 100644
index 0000000..a58e6a0
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Airport_US.sqf
@@ -0,0 +1,12 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* US Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['C130J_US_EP1'];
+ _u = _u + ['A10_US_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Barracks_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TK.sqf
new file mode 100644
index 0000000..7ebe052
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TK.sqf
@@ -0,0 +1,33 @@
+Private ['_tiMode','_u'];
+
+/* Overall Configuration */
+['WFBE_EASTSOLDIER','TK_Soldier_EP1',false] Call SetNamespace;
+
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+/* Takistan Troops */
+_u = ['TK_Soldier_EP1'];
+_u = _u + ['TK_Soldier_B_EP1'];
+if (_tiMode) then {
+ _u = _u + ['TK_Soldier_TWS_EP1'];
+};
+_u = _u + ['TK_Soldier_Engineer_EP1'];
+_u = _u + ['TK_Soldier_LAT_EP1'];
+_u = _u + ['TK_Soldier_AT_EP1'];
+_u = _u + ['TK_Soldier_HAT_EP1'];
+_u = _u + ['TK_Soldier_AA_EP1'];
+_u = _u + ['TK_Soldier_AR_EP1'];
+_u = _u + ['TK_Soldier_MG_EP1'];
+_u = _u + ['TK_Soldier_GL_EP1'];
+_u = _u + ['TK_Soldier_Spotter_EP1'];
+_u = _u + ['TK_Soldier_Medic_EP1'];
+_u = _u + ['TK_Special_Forces_EP1'];
+_u = _u + ['TK_Special_Forces_TL_EP1'];
+_u = _u + ['TK_Special_Forces_MG_EP1'];
+_u = _u + ['TK_Soldier_Crew_EP1'];
+_u = _u + ['TK_Soldier_Pilot_EP1'];
+_u = _u + ['TK_Soldier_SL_EP1'];
+_u = _u + ['TK_Soldier_Officer_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKA.sqf
new file mode 100644
index 0000000..c8533b0
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKA.sqf
@@ -0,0 +1,34 @@
+Private ['_tiMode','_u'];
+
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+//--- Takistan Army Troops.
+_u = ['TK_Soldier_EP1'];
+_u = _u + ['TK_Soldier_B_EP1'];
+if (_tiMode) then {
+ _u = _u + ['TK_Soldier_TWS_EP1'];
+};
+_u = _u + ['TK_Soldier_Engineer_EP1'];
+_u = _u + ['TK_Soldier_LAT_EP1'];
+_u = _u + ['TK_Soldier_AAT_EP1'];
+_u = _u + ['TK_Soldier_AT_EP1'];
+_u = _u + ['TK_Soldier_HAT_EP1'];
+_u = _u + ['TK_Soldier_AA_EP1'];
+_u = _u + ['TK_Soldier_AR_EP1'];
+_u = _u + ['TK_Soldier_AMG_EP1'];
+_u = _u + ['TK_Soldier_MG_EP1'];
+_u = _u + ['TK_Soldier_GL_EP1'];
+_u = _u + ['TK_Soldier_Spotter_EP1'];
+_u = _u + ['TK_Soldier_Sniper_EP1'];
+_u = _u + ['TK_Soldier_SniperH_EP1'];
+_u = _u + ['TK_Soldier_Medic_EP1'];
+_u = _u + ['TK_Special_Forces_EP1'];
+_u = _u + ['TK_Special_Forces_TL_EP1'];
+_u = _u + ['TK_Special_Forces_MG_EP1'];
+_u = _u + ['TK_Soldier_Crew_EP1'];
+_u = _u + ['TK_Soldier_Pilot_EP1'];
+_u = _u + ['TK_Soldier_SL_EP1'];
+_u = _u + ['TK_Soldier_Officer_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKGUE.sqf b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKGUE.sqf
new file mode 100644
index 0000000..af2038e
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Barracks_TKGUE.sqf
@@ -0,0 +1,20 @@
+Private ['_u'];
+
+/* Takistan Guerilla Troops */
+_u = ['TK_GUE_Soldier_EP1'];
+_u = _u + ['TK_GUE_Soldier_2_EP1'];
+_u = _u + ['TK_GUE_Soldier_3_EP1'];
+_u = _u + ['TK_GUE_Soldier_4_EP1'];
+_u = _u + ['TK_GUE_Soldier_5_EP1'];
+_u = _u + ['TK_GUE_Soldier_AT_EP1'];
+_u = _u + ['TK_GUE_Soldier_AAT_EP1'];
+_u = _u + ['TK_GUE_Soldier_AA_EP1'];
+_u = _u + ['TK_GUE_Soldier_AR_EP1'];
+_u = _u + ['TK_GUE_Soldier_MG_EP1'];
+_u = _u + ['TK_GUE_Soldier_Sniper_EP1'];
+_u = _u + ['TK_GUE_Bonesetter_EP1'];
+_u = _u + ['TK_GUE_Soldier_HAT_EP1'];
+_u = _u + ['TK_GUE_Soldier_TL_EP1'];
+_u = _u + ['TK_GUE_Warlord_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Barracks_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Barracks_US.sqf
new file mode 100644
index 0000000..ee77cc0
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Barracks_US.sqf
@@ -0,0 +1,132 @@
+Private ['_u'];
+
+//--- US Troops.
+_u = ['US_Soldier_Light_EP1'];
+_u = _u + ['US_Soldier_EP1'];
+_u = _u + ['US_Soldier_B_EP1'];
+_u = _u + ['US_Soldier_LAT_EP1'];
+_u = _u + ['US_Soldier_AT_EP1'];
+_u = _u + ['US_Soldier_HAT_EP1'];
+_u = _u + ['US_Soldier_AA_EP1'];
+_u = _u + ['US_Soldier_AR_EP1'];
+_u = _u + ['US_Soldier_MG_EP1'];
+_u = _u + ['US_Soldier_GL_EP1'];
+_u = _u + ['US_Soldier_Sniper_EP1'];
+_u = _u + ['US_Soldier_SniperH_EP1'];
+_u = _u + ['US_Soldier_Sniper_NV_EP1'];
+_u = _u + ['US_Soldier_Marksman_EP1'];
+_u = _u + ['US_Soldier_Medic_EP1'];
+_u = _u + ['US_Soldier_Engineer_EP1'];
+_u = _u + ['US_Soldier_AMG_EP1'];
+_u = _u + ['US_Soldier_AAR_EP1'];
+_u = _u + ['US_Soldier_AHAT_EP1'];
+_u = _u + ['US_Soldier_AAT_EP1'];
+_u = _u + ['US_Soldier_Spotter_EP1'];
+_u = _u + ['US_Soldier_TL_EP1'];
+_u = _u + ['US_Soldier_SL_EP1'];
+_u = _u + ['US_Soldier_Officer_EP1'];
+_u = _u + ['US_Soldier_Crew_EP1'];
+_u = _u + ['US_Soldier_Pilot_EP1'];
+_u = _u + ['US_Delta_Force_EP1'];
+_u = _u + ['US_Delta_Force_TL_EP1'];
+_u = _u + ['US_Delta_Force_Medic_EP1'];
+_u = _u + ['US_Delta_Force_Assault_EP1'];
+_u = _u + ['US_Delta_Force_SD_EP1'];
+_u = _u + ['US_Delta_Force_MG_EP1'];
+_u = _u + ['US_Delta_Force_AR_EP1'];
+_u = _u + ['US_Delta_Force_Night_EP1'];
+_u = _u + ['US_Delta_Force_Marksman_EP1'];
+_u = _u + ['US_Delta_Force_M14_EP1'];
+_u = _u + ['US_Delta_Force_Air_Controller_EP1'];
+if (paramDLCBAF) then {
+ //--- BAF MTP Camo.
+ _u = _u + ['BAF_Soldier_AA_MTP'];
+ _u = _u + ['BAF_Soldier_AAA_MTP'];
+ _u = _u + ['BAF_Soldier_AAT_MTP'];
+ _u = _u + ['BAF_Soldier_AHAT_MTP'];
+ _u = _u + ['BAF_Soldier_AAR_MTP'];
+ _u = _u + ['BAF_Soldier_AMG_MTP'];
+ _u = _u + ['BAF_Soldier_AT_MTP'];
+ _u = _u + ['BAF_Soldier_HAT_MTP'];
+ _u = _u + ['BAF_Soldier_AR_MTP'];
+ _u = _u + ['BAF_crewman_MTP'];
+ _u = _u + ['BAF_Soldier_EN_MTP'];
+ _u = _u + ['BAF_Soldier_GL_MTP'];
+ _u = _u + ['BAF_Soldier_FAC_MTP'];
+ _u = _u + ['BAF_Soldier_MG_MTP'];
+ _u = _u + ['BAF_Soldier_scout_MTP'];
+ _u = _u + ['BAF_Soldier_Marksman_MTP'];
+ _u = _u + ['BAF_Soldier_Medic_MTP'];
+ _u = _u + ['BAF_Soldier_Officer_MTP'];
+ _u = _u + ['BAF_Pilot_MTP'];
+ _u = _u + ['BAF_Soldier_MTP'];
+ _u = _u + ['BAF_ASoldier_MTP'];
+ _u = _u + ['BAF_Soldier_L_MTP'];
+ _u = _u + ['BAF_Soldier_N_MTP'];
+ _u = _u + ['BAF_Soldier_SL_MTP'];
+ _u = _u + ['BAF_Soldier_SniperN_MTP'];
+ _u = _u + ['BAF_Soldier_SniperH_MTP'];
+ _u = _u + ['BAF_Soldier_Sniper_MTP'];
+ _u = _u + ['BAF_Soldier_spotter_MTP'];
+ _u = _u + ['BAF_Soldier_spotterN_MTP'];
+ _u = _u + ['BAF_Soldier_TL_MTP'];
+ //--- BAF Woodland Camo
+ _u = _u + ['BAF_Soldier_AA_W'];
+ _u = _u + ['BAF_Soldier_AAA_W'];
+ _u = _u + ['BAF_Soldier_AAT_W'];
+ _u = _u + ['BAF_Soldier_AHAT_W'];
+ _u = _u + ['BAF_Soldier_AAR_W'];
+ _u = _u + ['BAF_Soldier_AMG_W'];
+ _u = _u + ['BAF_Soldier_AT_W'];
+ _u = _u + ['BAF_Soldier_HAT_W'];
+ _u = _u + ['BAF_Soldier_AR_W'];
+ _u = _u + ['BAF_crewman_W'];
+ _u = _u + ['BAF_Soldier_EN_W'];
+ _u = _u + ['BAF_Soldier_GL_W'];
+ _u = _u + ['BAF_Soldier_FAC_W'];
+ _u = _u + ['BAF_Soldier_MG_W'];
+ _u = _u + ['BAF_Soldier_scout_W'];
+ _u = _u + ['BAF_Soldier_Marksman_W'];
+ _u = _u + ['BAF_Soldier_Medic_W'];
+ _u = _u + ['BAF_Soldier_Officer_W'];
+ _u = _u + ['BAF_Pilot_W'];
+ _u = _u + ['BAF_Soldier_W'];
+ _u = _u + ['BAF_ASoldier_W'];
+ _u = _u + ['BAF_Soldier_L_W'];
+ _u = _u + ['BAF_Soldier_N_W'];
+ _u = _u + ['BAF_Soldier_SL_W'];
+ _u = _u + ['BAF_Soldier_SniperN_W'];
+ _u = _u + ['BAF_Soldier_SniperH_W'];
+ _u = _u + ['BAF_Soldier_Sniper_W'];
+ _u = _u + ['BAF_Soldier_spotter_W'];
+ _u = _u + ['BAF_Soldier_spotterN_W'];
+ _u = _u + ['BAF_Soldier_TL_W'];
+ //--- BAF Desert Camo
+ _u = _u + ['BAF_Soldier_AA_DDPM'];
+ _u = _u + ['BAF_Soldier_AAA_DDPM'];
+ _u = _u + ['BAF_Soldier_AAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AHAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AAR_DDPM'];
+ _u = _u + ['BAF_Soldier_AMG_DDPM'];
+ _u = _u + ['BAF_Soldier_AT_DDPM'];
+ _u = _u + ['BAF_Soldier_HAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AR_DDPM'];
+ _u = _u + ['BAF_crewman_DDPM'];
+ _u = _u + ['BAF_Soldier_EN_DDPM'];
+ _u = _u + ['BAF_Soldier_GL_DDPM'];
+ _u = _u + ['BAF_Soldier_FAC_DDPM'];
+ _u = _u + ['BAF_Soldier_MG_DDPM'];
+ _u = _u + ['BAF_Soldier_scout_DDPM'];
+ _u = _u + ['BAF_Soldier_Marksman_DDPM'];
+ _u = _u + ['BAF_Soldier_Medic_DDPM'];
+ _u = _u + ['BAF_Soldier_Officer_DDPM'];
+ _u = _u + ['BAF_Pilot_DDPM'];
+ _u = _u + ['BAF_Soldier_DDPM'];
+ _u = _u + ['BAF_ASoldier_DDPM'];
+ _u = _u + ['BAF_Soldier_L_DDPM'];
+ _u = _u + ['BAF_Soldier_N_DDPM'];
+ _u = _u + ['BAF_Soldier_SL_DDPM'];
+ _u = _u + ['BAF_Soldier_TL_DDPM'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Depot_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Depot_TK.sqf
new file mode 100644
index 0000000..c4ce1d1
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Depot_TK.sqf
@@ -0,0 +1,15 @@
+Private ['_u'];
+
+/* Takistan Depot Vehicles */
+_u = ["Old_bike_TK_CIV_EP1"];
+_u = _u + ["TT650_TK_CIV_EP1"];
+_u = _u + ["Lada2_TK_CIV_EP1"];
+_u = _u + ["VolhaLimo_TK_CIV_EP1"];
+_u = _u + ["Volha_2_TK_CIV_EP1"];
+_u = _u + ["Ural_TK_CIV_EP1"];
+_u = _u + ["S1203_TK_CIV_EP1"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_EASTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Depot_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Depot_TKA.sqf
new file mode 100644
index 0000000..c4ce1d1
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Depot_TKA.sqf
@@ -0,0 +1,15 @@
+Private ['_u'];
+
+/* Takistan Depot Vehicles */
+_u = ["Old_bike_TK_CIV_EP1"];
+_u = _u + ["TT650_TK_CIV_EP1"];
+_u = _u + ["Lada2_TK_CIV_EP1"];
+_u = _u + ["VolhaLimo_TK_CIV_EP1"];
+_u = _u + ["Volha_2_TK_CIV_EP1"];
+_u = _u + ["Ural_TK_CIV_EP1"];
+_u = _u + ["S1203_TK_CIV_EP1"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_EASTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Depot_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Depot_US.sqf
new file mode 100644
index 0000000..1d794c9
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Depot_US.sqf
@@ -0,0 +1,15 @@
+Private ['_u'];
+
+/* US Depot Vehicles */
+_u = ["Old_bike_TK_CIV_EP1"];
+_u = _u + ["Old_moto_TK_Civ_EP1"];
+_u = _u + ["Lada1_TK_CIV_EP1"];
+_u = _u + ["Volha_1_TK_CIV_EP1"];
+_u = _u + ["LandRover_TK_CIV_EP1"];
+_u = _u + ["V3S_Open_TK_CIV_EP1"];
+_u = _u + ["Ikarus_TK_CIV_EP1"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_WESTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Heavy_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TK.sqf
new file mode 100644
index 0000000..56a50ab
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TK.sqf
@@ -0,0 +1,14 @@
+Private ['_u'];
+
+/* Overall Configuration */
+['WFBE_EASTCREW','TK_Soldier_Crew_EP1',false] Call SetNamespace;
+
+/* Takistan Heavy Vehicles */
+_u = ['M113_TK_EP1'];
+_u = _u + ['BMP2_TK_EP1'];
+_u = _u + ['ZSU_TK_EP1'];
+_u = _u + ['T34_TK_EP1'];
+_u = _u + ['T55_TK_EP1'];
+_u = _u + ['T72_TK_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKA.sqf
new file mode 100644
index 0000000..96e02cd
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKA.sqf
@@ -0,0 +1,11 @@
+Private ['_u'];
+
+//--- Takistan Heavy Vehicles.
+_u = ['M113_TK_EP1'];
+_u = _u + ['BMP2_TK_EP1'];
+_u = _u + ['ZSU_TK_EP1'];
+_u = _u + ['T34_TK_EP1'];
+_u = _u + ['T55_TK_EP1'];
+_u = _u + ['T72_TK_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKGUE.sqf b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKGUE.sqf
new file mode 100644
index 0000000..5be4eaa
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Heavy_TKGUE.sqf
@@ -0,0 +1,7 @@
+Private ['_u'];
+
+/* Takistan Guerilla Heavy Vehicles */
+_u = ['T34_TK_GUE_EP1'];
+_u = _u + ['T55_TK_GUE_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Heavy_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Heavy_US.sqf
new file mode 100644
index 0000000..317afe0
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Heavy_US.sqf
@@ -0,0 +1,21 @@
+Private ['_u'];
+
+//--- US Heavy Vehicles.
+_u = ['M1126_ICV_M2_EP1'];
+_u = _u + ['M1126_ICV_mk19_EP1'];
+_u = _u + ['M1129_MC_EP1'];
+_u = _u + ['M1135_ATGMV_EP1'];
+_u = _u + ['M1128_MGS_EP1'];
+_u = _u + ['M1133_MEV_EP1'];
+_u = _u + ['M2A2_EP1'];
+_u = _u + ['M2A3_EP1'];
+_u = _u + ['M1A1_US_DES_EP1'];
+_u = _u + ['MLRS_DES_EP1'];
+_u = _u + ['M1A2_US_TUSK_MG_EP1'];
+_u = _u + ['M6_EP1'];
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_FV510_W'];
+ _u = _u + ['BAF_FV510_D'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Light_TK.sqf b/Common/Config/Core_Units/Arrowhead/Units_Light_TK.sqf
new file mode 100644
index 0000000..3e7032c
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Light_TK.sqf
@@ -0,0 +1,29 @@
+Private ['_u'];
+
+/* Overall Configuration */
+['WFBE_EASTREPAIRTRUCK','UralRepair_TK_EP1',false] Call SetNamespace;
+['WFBE_EASTSUPPLYTRUCK','UralSupply_TK_EP1',false] Call SetNamespace;
+
+/* Takistan Light Vehicles */
+_u = ['TT650_TK_EP1'];
+_u = _u + ['UAZ_Unarmed_TK_EP1'];
+_u = _u + ['SUV_TK_EP1'];
+_u = _u + ['UAZ_MG_TK_EP1'];
+_u = _u + ['UAZ_AGS30_TK_EP1'];
+_u = _u + ['LandRover_MG_TK_EP1'];
+_u = _u + ['LandRover_SPG9_TK_EP1'];
+_u = _u + ['V3S_TK_EP1'];
+_u = _u + ['V3S_Open_TK_EP1'];
+_u = _u + ['UralRepair_TK_EP1'];
+_u = _u + ['UralReammo_TK_EP1'];
+_u = _u + ['UralRefuel_TK_EP1'];
+_u = _u + ['UralSalvage_TK_EP1'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['UralSupply_TK_EP1']};
+_u = _u + ['M113Ambul_TK_EP1'];
+_u = _u + ['BRDM2_TK_EP1'];
+_u = _u + ['BRDM2_ATGM_TK_EP1'];
+_u = _u + ['BTR60_TK_EP1'];
+_u = _u + ['Ural_ZU23_TK_EP1'];
+_u = _u + ['GRAD_TK_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Light_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Light_TKA.sqf
new file mode 100644
index 0000000..5021e16
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Light_TKA.sqf
@@ -0,0 +1,25 @@
+Private ['_u'];
+
+//--- Takistan Light Vehicles.
+_u = ['TT650_TK_EP1'];
+_u = _u + ['UAZ_Unarmed_TK_EP1'];
+_u = _u + ['SUV_TK_EP1'];
+_u = _u + ['UAZ_MG_TK_EP1'];
+_u = _u + ['UAZ_AGS30_TK_EP1'];
+_u = _u + ['LandRover_MG_TK_EP1'];
+_u = _u + ['LandRover_SPG9_TK_EP1'];
+_u = _u + ['V3S_TK_EP1'];
+_u = _u + ['V3S_Open_TK_EP1'];
+_u = _u + ['UralRepair_TK_EP1'];
+_u = _u + ['UralReammo_TK_EP1'];
+_u = _u + ['UralRefuel_TK_EP1'];
+_u = _u + ['UralSalvage_TK_EP1'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['UralSupply_TK_EP1']};
+_u = _u + ['M113Ambul_TK_EP1'];
+_u = _u + ['BRDM2_TK_EP1'];
+_u = _u + ['BRDM2_ATGM_TK_EP1'];
+_u = _u + ['BTR60_TK_EP1'];
+_u = _u + ['Ural_ZU23_TK_EP1'];
+_u = _u + ['GRAD_TK_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Light_TKGUE.sqf b/Common/Config/Core_Units/Arrowhead/Units_Light_TKGUE.sqf
new file mode 100644
index 0000000..00736e9
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Light_TKGUE.sqf
@@ -0,0 +1,13 @@
+Private ['_u'];
+
+/* Takistan Guerilla Light Vehicles */
+_u = ['V3S_TK_GUE_EP1'];
+_u = _u + ['Pickup_PK_TK_GUE_EP1'];
+_u = _u + ['Offroad_DSHKM_TK_GUE_EP1'];
+_u = _u + ['Offroad_SPG9_TK_GUE_EP1'];
+_u = _u + ['BRDM2_TK_GUE_EP1'];
+_u = _u + ['BTR40_TK_GUE_EP1'];
+_u = _u + ['BTR40_MG_TK_GUE_EP1'];
+_u = _u + ['Ural_ZU23_TK_GUE_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Light_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Light_US.sqf
new file mode 100644
index 0000000..8e5def5
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Light_US.sqf
@@ -0,0 +1,34 @@
+Private ['_u'];
+
+//--- US Light Vehicles.
+_u = ['M1030_US_DES_EP1'];
+_u = _u + ['ATV_US_EP1'];
+_u = _u + ['HMMWV_DES_EP1'];
+_u = _u + ['HMMWV_M1035_DES_EP1'];
+_u = _u + ['HMMWV_Terminal_EP1'];
+_u = _u + ['HMMWV_MK19_DES_EP1'];
+_u = _u + ['HMMWV_M998A2_SOV_DES_EP1'];
+_u = _u + ['HMMWV_M1151_M2_DES_EP1'];
+_u = _u + ['HMMWV_M998_crows_M2_DES_EP1'];
+_u = _u + ['HMMWV_M998_crows_MK19_DES_EP1'];
+_u = _u + ['HMMWV_TOW_DES_EP1'];
+_u = _u + ['HMMWV_Avenger_DES_EP1'];
+_u = _u + ['HMMWV_Ambulance_DES_EP1'];
+_u = _u + ['MTVR_DES_EP1'];
+_u = _u + ['MtvrRepair_DES_EP1'];
+_u = _u + ['MtvrReammo_DES_EP1'];
+_u = _u + ['MtvrRefuel_DES_EP1'];
+_u = _u + ['MtvrSalvage_DES_EP1'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['MtvrSupply_DES_EP1']};
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_ATV_W'];
+ _u = _u + ['BAF_Offroad_W'];
+ _u = _u + ['BAF_Jackal2_GMG_W'];
+ _u = _u + ['BAF_Jackal2_L2A1_W'];
+ _u = _u + ['BAF_ATV_D'];
+ _u = _u + ['BAF_Offroad_D'];
+ _u = _u + ['BAF_Jackal2_GMG_D'];
+ _u = _u + ['BAF_Jackal2_L2A1_D'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Special_TKA.sqf b/Common/Config/Core_Units/Arrowhead/Units_Special_TKA.sqf
new file mode 100644
index 0000000..379beb7
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Special_TKA.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_EASTANNOUNCERS',['WFHQ_TK0_EP1','WFHQ_TK1_EP1','WFHQ_TK2_EP1','WFHQ_TK3_EP1','WFHQ_TK4_EP1'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_EASTCREW','TK_Soldier_Crew_EP1',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_EASTPILOT','TK_Soldier_Pilot_EP1',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_EASTSOLDIER','TK_Soldier_EP1',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_EASTAMBULANCES',['M113Ambul_TK_EP1'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_EASTREPAIRTRUCKS',['UralRepair_TK_EP1'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_EASTSALVAGETRUCK',['UralSalvage_TK_EP1'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_EASTSUPPLYTRUCKS',['UralSupply_TK_EP1'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_EASTUAV','',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_EASTBASEPATROLS_0',['TK_Soldier_SL_EP1','TK_Soldier_EP1','TK_Soldier_EP1','TK_Soldier_AR_EP1','TK_Soldier_GL_EP1','TK_Soldier_MG_EP1'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_1',['TK_Soldier_SL_EP1','TK_Soldier_EP1','TK_Soldier_EP1','TK_Soldier_MG_EP1','TK_Soldier_LAT_EP1','TK_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_2',['TK_Soldier_SL_EP1','TK_Soldier_EP1','TK_Soldier_EP1','TK_Soldier_AT_EP1','TK_Soldier_AA_EP1','TK_Soldier_Spotter_EP1'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_3',['TK_Soldier_SL_EP1','TK_Soldier_EP1','TK_Soldier_AR_EP1','TK_Soldier_HAT_EP1','TK_Soldier_LAT_EP1','TK_Soldier_GL_EP1'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_EASTPARACHUTELEVEL1',['TK_Soldier_SL_EP1','TK_Soldier_LAT_EP1','TK_Soldier_EP1','TK_Soldier_LAT_EP1','TK_Soldier_AR_EP1','TK_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL2',['TK_Soldier_SL_EP1','TK_Soldier_AT_EP1','TK_Soldier_AT_EP1','TK_Soldier_AT_EP1','TK_Soldier_AA_EP1','TK_Soldier_MG_EP1','TK_Soldier_Medic_EP1','TK_Soldier_Sniper_EP1','TK_Soldier_Spotter_EP1'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL3',['TK_Special_Forces_TL_EP1','TK_Soldier_HAT_EP1','TK_Soldier_HAT_EP1','TK_Soldier_HAT_EP1','TK_Soldier_HAT_EP1','TK_Soldier_HAT_EP1','TK_Soldier_AA_EP1','TK_Soldier_AA_EP1','TK_Special_Forces_MG_EP1','TK_Special_Forces_EP1','TK_Special_Forces_EP1','TK_Special_Forces_EP1'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_EASTPARACARGO','Mi17_TK_EP1',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_EASTREPAIRTRUCK','UralRepair_TK_EP1',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_EASTSTARTINGVEHICLES',['M113Ambul_TK_EP1','V3S_TK_EP1'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_EASTPARAAMMO',['TKBasicAmmunitionBox_EP1','TKBasicWeapons_EP1','TKLaunchers_EP1'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_EASTPARAVEHICARGO','UAZ_Unarmed_TK_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_EASTPARAVEHI','Mi17_TK_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_EASTPARACHUTE','ParachuteMediumEast_EP1',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_EASTSUPPLYTRUCK','UralSupply_TK_EP1',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_EASTDEFAULTFACTION','Takistani Army',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Arrowhead/Units_Special_US.sqf b/Common/Config/Core_Units/Arrowhead/Units_Special_US.sqf
new file mode 100644
index 0000000..5ed76c1
--- /dev/null
+++ b/Common/Config/Core_Units/Arrowhead/Units_Special_US.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_WESTANNOUNCERS',['WFHQ_EN0_EP1','WFHQ_EN1_EP1','WFHQ_EN2_EP1','WFHQ_EN3_EP1','WFHQ_EN4_EP1','WFHQ_EN5_EP1'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_WESTCREW','US_Soldier_Crew_EP1',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_WESTPILOT','US_Soldier_Pilot_EP1',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_WESTSOLDIER','US_Soldier_EP1',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_WESTAMBULANCES',['HMMWV_Ambulance_DES_EP1','M1133_MEV_EP1'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_WESTREPAIRTRUCKS',['MtvrRepair_DES_EP1'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_WESTSALVAGETRUCK',['MtvrSalvage_DES_EP1'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_WESTSUPPLYTRUCKS',['MtvrSupply_DES_EP1'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_WESTUAV','MQ9PredatorB_US_EP1',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_WESTBASEPATROLS_0',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_GL_EP1','US_Soldier_MG_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_1',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_MG_EP1','US_Soldier_LAT_EP1','US_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_2',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AT_EP1','US_Soldier_AA_EP1','US_Soldier_Sniper_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_3',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_HAT_EP1','US_Soldier_LAT_EP1','US_Soldier_GL_EP1'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_WESTPARACHUTELEVEL1',['US_Soldier_SL_EP1','US_Soldier_LAT_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL2',['US_Soldier_SL_EP1','US_Soldier_AT_EP1','US_Soldier_AT_EP1','US_Soldier_AT_EP1','US_Soldier_AA_EP1','US_Soldier_MG_EP1','US_Soldier_Medic_EP1','US_Soldier_Spotter_EP1','US_Soldier_Sniper_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL3',['US_Delta_Force_TL_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_AA_EP1','US_Soldier_AA_EP1','US_Delta_Force_AR_EP1','US_Delta_Force_Assault_EP1','US_Soldier_Medic_EP1','US_Delta_Force_M14_EP1','US_Soldier_AT_EP1','US_Soldier_Marksman_EP1'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_WESTPARACARGO','C130J_US_EP1',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_WESTREPAIRTRUCK','MtvrRepair_DES_EP1',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_WESTSTARTINGVEHICLES',['HMMWV_Ambulance_DES_EP1','MTVR_DES_EP1'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_WESTPARAAMMO',['USBasicAmmunitionBox_EP1','USBasicWeapons_EP1','USLaunchers_EP1'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_WESTPARAVEHICARGO','HMMWV_DES_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_WESTPARAVEHI','CH_47F_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_WESTPARACHUTE','ParachuteMediumWest_EP1',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_WESTSUPPLYTRUCK','MtvrSupply_DES_EP1',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_WESTDEFAULTFACTION','US',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Aircraft_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Aircraft_RU.sqf
new file mode 100644
index 0000000..3ae1dd9
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Aircraft_RU.sqf
@@ -0,0 +1,28 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- Russian Aircraft Vehicles.
+_u = ['Mi17_Ins'];
+_u = _u + ['UH1H_TK_EP1'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi17_medevac_RU'];
+ _u = _u + ['Mi17_rockets_RU'];
+ _u = _u + ['Mi24_V'];
+ _u = _u + ['Mi24_D_TK_EP1'];
+ _u = _u + ['Mi24_P'];
+ if !(paramRestrictionKamov) then {
+ _u = _u + ['Ka52'];
+ _u = _u + ['Ka52Black'];
+ };
+};
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su34'];
+ _u = _u + ['Su25_TK_EP1'];
+ _u = _u + ['Su25_Ins'];
+ _u = _u + ['Su39'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Aircraft_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Aircraft_US.sqf
new file mode 100644
index 0000000..d086a00
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Aircraft_US.sqf
@@ -0,0 +1,38 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- US Aircraft Vehicles.
+_u = ['MH6J_EP1'];
+_u = _u + ['MH60S'];
+_u = _u + ['UH60M_EP1'];
+_u = _u + ['UH60M_MEV_EP1'];
+_u = _u + ['CH_47F_EP1'];
+if (_r == 0 || _r == 1) then {
+ _u = _u + ['UH1Y'];
+ _u = _u + ['AH6J_EP1'];
+ if (WF_ACE) then {
+ _u = _u + ['ACE_AH6_GAU19_FLIR'];
+ _u = _u + ['ACE_AH6J_DAGR_FLIR'];
+ };
+ _u = _u + ['AH1Z'];
+ _u = _u + ['AH64D_EP1'];
+};
+if (_r == 0) then {
+ _u = _u + ['MV22'];
+ _u = _u + ['C130J_US_EP1'];
+ _u = _u + ['F35B'];
+ _u = _u + ['AV8B'];
+ _u = _u + ['AV8B2'];
+ _u = _u + ['A10_US_EP1'];
+};
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_Merlin_HC3_D'];
+ _u = _u + ['CH_47F_BAF'];
+ if (_r == 0 || _r == 1) then {
+ _u = _u + ['AW159_Lynx_BAF'];
+ _u = _u + ['BAF_Apache_AH1_D'];
+ };
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Airport_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Airport_RU.sqf
new file mode 100644
index 0000000..1f3f911
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Airport_RU.sqf
@@ -0,0 +1,16 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* RU Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['An2_TK_EP1'];
+ _u = _u + ['L39_TK_EP1'];
+ _u = _u + ['Su34'];
+ _u = _u + ['Su25_TK_EP1'];
+ _u = _u + ['Su25_Ins'];
+ _u = _u + ['Su39'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Airport_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Airport_US.sqf
new file mode 100644
index 0000000..dd1caf9
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Airport_US.sqf
@@ -0,0 +1,16 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* US Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['MV22'];
+ _u = _u + ['C130J_US_EP1'];
+ _u = _u + ['F35B'];
+ _u = _u + ['AV8B'];
+ _u = _u + ['AV8B2'];
+ _u = _u + ['A10_US_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Barracks_GUE.sqf b/Common/Config/Core_Units/CombinedOps/Units_Barracks_GUE.sqf
new file mode 100644
index 0000000..96b2f76
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Barracks_GUE.sqf
@@ -0,0 +1,42 @@
+Private ['_u'];
+
+/* Guerilla Troops */
+_u = ['GUE_Soldier_1'];
+_u = _u + ['GUE_Soldier_2'];
+_u = _u + ['GUE_Soldier_3'];
+_u = _u + ['GUE_Soldier_GL'];
+_u = _u + ['GUE_Soldier_AT'];
+_u = _u + ['GUE_Soldier_AA'];
+_u = _u + ['GUE_Soldier_AR'];
+_u = _u + ['GUE_Soldier_MG'];
+_u = _u + ['GUE_Soldier_Sniper'];
+_u = _u + ['GUE_Soldier_Medic'];
+_u = _u + ['GUE_Soldier_Crew'];
+_u = _u + ['GUE_Soldier_Pilot'];
+_u = _u + ['GUE_Soldier_Scout'];
+_u = _u + ['GUE_Soldier_Sab'];
+_u = _u + ['GUE_Commander'];
+_u = _u + ['GUE_Worker2'];
+_u = _u + ['GUE_Woodlander3'];
+_u = _u + ['GUE_Villager3'];
+_u = _u + ['GUE_Woodlander2'];
+_u = _u + ['GUE_Woodlander1'];
+_u = _u + ['GUE_Villager4'];
+/* Takistan Guerilla Troops */
+_u = _u + ['TK_GUE_Soldier_EP1'];
+_u = _u + ['TK_GUE_Soldier_2_EP1'];
+_u = _u + ['TK_GUE_Soldier_3_EP1'];
+_u = _u + ['TK_GUE_Soldier_4_EP1'];
+_u = _u + ['TK_GUE_Soldier_5_EP1'];
+_u = _u + ['TK_GUE_Soldier_AT_EP1'];
+_u = _u + ['TK_GUE_Soldier_AAT_EP1'];
+_u = _u + ['TK_GUE_Soldier_AA_EP1'];
+_u = _u + ['TK_GUE_Soldier_AR_EP1'];
+_u = _u + ['TK_GUE_Soldier_MG_EP1'];
+_u = _u + ['TK_GUE_Soldier_Sniper_EP1'];
+_u = _u + ['TK_GUE_Bonesetter_EP1'];
+_u = _u + ['TK_GUE_Soldier_HAT_EP1'];
+_u = _u + ['TK_GUE_Soldier_TL_EP1'];
+_u = _u + ['TK_GUE_Warlord_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Barracks_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Barracks_RU.sqf
new file mode 100644
index 0000000..bcdc317
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Barracks_RU.sqf
@@ -0,0 +1,65 @@
+Private ['_tiMode','_u'];
+
+_tiMode = 'WFBE_THERMALIMAGING' Call GetNamespace;
+_tiMode = if (_tiMode == 1 || _tiMode == 3) then {true} else {false};
+
+//--- Russian Troops.
+_u = ['RU_Soldier'];
+_u = _u + ['RU_Soldier2'];
+_u = _u + ['RU_Soldier_LAT'];
+_u = _u + ['RU_Soldier_AT'];
+_u = _u + ['RU_Soldier_HAT'];
+_u = _u + ['RU_Soldier_AA'];
+_u = _u + ['RU_Soldier_AR'];
+_u = _u + ['RU_Soldier_MG'];
+_u = _u + ['RU_Soldier_GL'];
+_u = _u + ['RU_Soldier_Marksman'];
+_u = _u + ['RU_Soldier_Spotter'];
+_u = _u + ['RU_Soldier_Sniper'];
+_u = _u + ['RU_Soldier_SniperH'];
+_u = _u + ['RU_Soldier_Medic'];
+_u = _u + ['RU_Soldier_TL'];
+_u = _u + ['RU_Soldier_SL'];
+_u = _u + ['RU_Soldier_Crew'];
+_u = _u + ['RU_Soldier_Pilot'];
+_u = _u + ['RUS_Soldier1'];
+_u = _u + ['RUS_Soldier2'];
+_u = _u + ['RUS_Soldier_GL'];
+_u = _u + ['RUS_Soldier_Marksman'];
+_u = _u + ['RUS_Soldier3'];
+_u = _u + ['RUS_Soldier_TL'];
+_u = _u + ['MVD_Soldier_GL'];
+_u = _u + ['MVD_Soldier_MG'];
+_u = _u + ['MVD_Soldier_Marksman'];
+_u = _u + ['MVD_Soldier_AT'];
+_u = _u + ['MVD_Soldier_Sniper'];
+_u = _u + ['MVD_Soldier_TL'];
+//--- Takistan Troops.
+_u = _u + ['TK_Soldier_EP1'];
+_u = _u + ['TK_Soldier_B_EP1'];
+if (_tiMode) then {
+ _u = _u + ['TK_Soldier_TWS_EP1'];
+};
+_u = _u + ['TK_Soldier_Engineer_EP1'];
+_u = _u + ['TK_Soldier_LAT_EP1'];
+_u = _u + ['TK_Soldier_AAT_EP1'];
+_u = _u + ['TK_Soldier_AT_EP1'];
+_u = _u + ['TK_Soldier_HAT_EP1'];
+_u = _u + ['TK_Soldier_AA_EP1'];
+_u = _u + ['TK_Soldier_AR_EP1'];
+_u = _u + ['TK_Soldier_AMG_EP1'];
+_u = _u + ['TK_Soldier_MG_EP1'];
+_u = _u + ['TK_Soldier_GL_EP1'];
+_u = _u + ['TK_Soldier_Spotter_EP1'];
+_u = _u + ['TK_Soldier_Sniper_EP1'];
+_u = _u + ['TK_Soldier_SniperH_EP1'];
+_u = _u + ['TK_Soldier_Medic_EP1'];
+_u = _u + ['TK_Special_Forces_EP1'];
+_u = _u + ['TK_Special_Forces_TL_EP1'];
+_u = _u + ['TK_Special_Forces_MG_EP1'];
+_u = _u + ['TK_Soldier_Crew_EP1'];
+_u = _u + ['TK_Soldier_Pilot_EP1'];
+_u = _u + ['TK_Soldier_SL_EP1'];
+_u = _u + ['TK_Soldier_Officer_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Barracks_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Barracks_US.sqf
new file mode 100644
index 0000000..3a83086
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Barracks_US.sqf
@@ -0,0 +1,163 @@
+Private ['_u'];
+
+//--- US Troops.
+_u = ['US_Soldier_Light_EP1'];
+_u = _u + ['US_Soldier_EP1'];
+_u = _u + ['US_Soldier_B_EP1'];
+_u = _u + ['US_Soldier_LAT_EP1'];
+_u = _u + ['US_Soldier_AT_EP1'];
+_u = _u + ['US_Soldier_HAT_EP1'];
+_u = _u + ['US_Soldier_AA_EP1'];
+_u = _u + ['US_Soldier_AR_EP1'];
+_u = _u + ['US_Soldier_MG_EP1'];
+_u = _u + ['US_Soldier_GL_EP1'];
+_u = _u + ['US_Soldier_Sniper_EP1'];
+_u = _u + ['US_Soldier_SniperH_EP1'];
+_u = _u + ['US_Soldier_Sniper_NV_EP1'];
+_u = _u + ['US_Soldier_Marksman_EP1'];
+_u = _u + ['US_Soldier_Medic_EP1'];
+_u = _u + ['US_Soldier_Engineer_EP1'];
+_u = _u + ['US_Soldier_AMG_EP1'];
+_u = _u + ['US_Soldier_AAR_EP1'];
+_u = _u + ['US_Soldier_AHAT_EP1'];
+_u = _u + ['US_Soldier_AAT_EP1'];
+_u = _u + ['US_Soldier_Spotter_EP1'];
+_u = _u + ['US_Soldier_TL_EP1'];
+_u = _u + ['US_Soldier_SL_EP1'];
+_u = _u + ['US_Soldier_Officer_EP1'];
+_u = _u + ['US_Soldier_Crew_EP1'];
+_u = _u + ['US_Soldier_Pilot_EP1'];
+_u = _u + ['US_Delta_Force_EP1'];
+_u = _u + ['US_Delta_Force_TL_EP1'];
+_u = _u + ['US_Delta_Force_Medic_EP1'];
+_u = _u + ['US_Delta_Force_Assault_EP1'];
+_u = _u + ['US_Delta_Force_SD_EP1'];
+_u = _u + ['US_Delta_Force_MG_EP1'];
+_u = _u + ['US_Delta_Force_AR_EP1'];
+_u = _u + ['US_Delta_Force_Night_EP1'];
+_u = _u + ['US_Delta_Force_Marksman_EP1'];
+_u = _u + ['US_Delta_Force_M14_EP1'];
+_u = _u + ['US_Delta_Force_Air_Controller_EP1'];
+//--- USMC Troops.
+_u = _u + ['USMC_Soldier'];
+_u = _u + ['USMC_Soldier2'];
+_u = _u + ['USMC_Soldier_LAT'];
+_u = _u + ['USMC_Soldier_AT'];
+_u = _u + ['USMC_Soldier_HAT'];
+_u = _u + ['USMC_Soldier_AA'];
+_u = _u + ['USMC_Soldier_AR'];
+_u = _u + ['USMC_Soldier_MG'];
+_u = _u + ['USMC_Soldier_GL'];
+_u = _u + ['USMC_SoldierS_Sniper'];
+_u = _u + ['USMC_SoldierS_SniperH'];
+_u = _u + ['USMC_SoldierM_Marksman'];
+_u = _u + ['USMC_Soldier_Medic'];
+_u = _u + ['USMC_SoldierS_Engineer'];
+_u = _u + ['USMC_SoldierS'];
+_u = _u + ['USMC_SoldierS_Spotter'];
+_u = _u + ['USMC_Soldier_TL'];
+_u = _u + ['USMC_Soldier_SL'];
+_u = _u + ['USMC_Soldier_Crew'];
+_u = _u + ['USMC_Soldier_Pilot'];
+_u = _u + ['FR_GL'];
+_u = _u + ['FR_Corpsman'];
+_u = _u + ['FR_TL'];
+_u = _u + ['FR_Assault_R'];
+_u = _u + ['FR_Assault_GL'];
+_u = _u + ['FR_AR'];
+_u = _u + ['FR_R'];
+_u = _u + ['FR_Sapper'];
+_u = _u + ['FR_AC'];
+_u = _u + ['FR_Marksman'];
+if (paramDLCBAF) then {
+ //--- BAF MTP Camo.
+ _u = _u + ['BAF_Soldier_AA_MTP'];
+ _u = _u + ['BAF_Soldier_AAA_MTP'];
+ _u = _u + ['BAF_Soldier_AAT_MTP'];
+ _u = _u + ['BAF_Soldier_AHAT_MTP'];
+ _u = _u + ['BAF_Soldier_AAR_MTP'];
+ _u = _u + ['BAF_Soldier_AMG_MTP'];
+ _u = _u + ['BAF_Soldier_AT_MTP'];
+ _u = _u + ['BAF_Soldier_HAT_MTP'];
+ _u = _u + ['BAF_Soldier_AR_MTP'];
+ _u = _u + ['BAF_crewman_MTP'];
+ _u = _u + ['BAF_Soldier_EN_MTP'];
+ _u = _u + ['BAF_Soldier_GL_MTP'];
+ _u = _u + ['BAF_Soldier_FAC_MTP'];
+ _u = _u + ['BAF_Soldier_MG_MTP'];
+ _u = _u + ['BAF_Soldier_scout_MTP'];
+ _u = _u + ['BAF_Soldier_Marksman_MTP'];
+ _u = _u + ['BAF_Soldier_Medic_MTP'];
+ _u = _u + ['BAF_Soldier_Officer_MTP'];
+ _u = _u + ['BAF_Pilot_MTP'];
+ _u = _u + ['BAF_Soldier_MTP'];
+ _u = _u + ['BAF_ASoldier_MTP'];
+ _u = _u + ['BAF_Soldier_L_MTP'];
+ _u = _u + ['BAF_Soldier_N_MTP'];
+ _u = _u + ['BAF_Soldier_SL_MTP'];
+ _u = _u + ['BAF_Soldier_SniperN_MTP'];
+ _u = _u + ['BAF_Soldier_SniperH_MTP'];
+ _u = _u + ['BAF_Soldier_Sniper_MTP'];
+ _u = _u + ['BAF_Soldier_spotter_MTP'];
+ _u = _u + ['BAF_Soldier_spotterN_MTP'];
+ _u = _u + ['BAF_Soldier_TL_MTP'];
+ //--- BAF Woodland Camo.
+ _u = _u + ['BAF_Soldier_AA_W'];
+ _u = _u + ['BAF_Soldier_AAA_W'];
+ _u = _u + ['BAF_Soldier_AAT_W'];
+ _u = _u + ['BAF_Soldier_AHAT_W'];
+ _u = _u + ['BAF_Soldier_AAR_W'];
+ _u = _u + ['BAF_Soldier_AMG_W'];
+ _u = _u + ['BAF_Soldier_AT_W'];
+ _u = _u + ['BAF_Soldier_HAT_W'];
+ _u = _u + ['BAF_Soldier_AR_W'];
+ _u = _u + ['BAF_crewman_W'];
+ _u = _u + ['BAF_Soldier_EN_W'];
+ _u = _u + ['BAF_Soldier_GL_W'];
+ _u = _u + ['BAF_Soldier_FAC_W'];
+ _u = _u + ['BAF_Soldier_MG_W'];
+ _u = _u + ['BAF_Soldier_scout_W'];
+ _u = _u + ['BAF_Soldier_Marksman_W'];
+ _u = _u + ['BAF_Soldier_Medic_W'];
+ _u = _u + ['BAF_Soldier_Officer_W'];
+ _u = _u + ['BAF_Pilot_W'];
+ _u = _u + ['BAF_Soldier_W'];
+ _u = _u + ['BAF_ASoldier_W'];
+ _u = _u + ['BAF_Soldier_L_W'];
+ _u = _u + ['BAF_Soldier_N_W'];
+ _u = _u + ['BAF_Soldier_SL_W'];
+ _u = _u + ['BAF_Soldier_SniperN_W'];
+ _u = _u + ['BAF_Soldier_SniperH_W'];
+ _u = _u + ['BAF_Soldier_Sniper_W'];
+ _u = _u + ['BAF_Soldier_spotter_W'];
+ _u = _u + ['BAF_Soldier_spotterN_W'];
+ _u = _u + ['BAF_Soldier_TL_W'];
+ //--- BAF Desert Camo.
+ _u = _u + ['BAF_Soldier_AA_DDPM'];
+ _u = _u + ['BAF_Soldier_AAA_DDPM'];
+ _u = _u + ['BAF_Soldier_AAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AHAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AAR_DDPM'];
+ _u = _u + ['BAF_Soldier_AMG_DDPM'];
+ _u = _u + ['BAF_Soldier_AT_DDPM'];
+ _u = _u + ['BAF_Soldier_HAT_DDPM'];
+ _u = _u + ['BAF_Soldier_AR_DDPM'];
+ _u = _u + ['BAF_crewman_DDPM'];
+ _u = _u + ['BAF_Soldier_EN_DDPM'];
+ _u = _u + ['BAF_Soldier_GL_DDPM'];
+ _u = _u + ['BAF_Soldier_FAC_DDPM'];
+ _u = _u + ['BAF_Soldier_MG_DDPM'];
+ _u = _u + ['BAF_Soldier_scout_DDPM'];
+ _u = _u + ['BAF_Soldier_Marksman_DDPM'];
+ _u = _u + ['BAF_Soldier_Medic_DDPM'];
+ _u = _u + ['BAF_Soldier_Officer_DDPM'];
+ _u = _u + ['BAF_Pilot_DDPM'];
+ _u = _u + ['BAF_Soldier_DDPM'];
+ _u = _u + ['BAF_ASoldier_DDPM'];
+ _u = _u + ['BAF_Soldier_L_DDPM'];
+ _u = _u + ['BAF_Soldier_N_DDPM'];
+ _u = _u + ['BAF_Soldier_SL_DDPM'];
+ _u = _u + ['BAF_Soldier_TL_DDPM'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Depot_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Depot_RU.sqf
new file mode 100644
index 0000000..d62c895
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Depot_RU.sqf
@@ -0,0 +1,21 @@
+Private ['_u'];
+
+/* Russian Depot Vehicles */
+_u = ["MMT_Civ"];
+_u = _u + ["Old_bike_TK_CIV_EP1"];
+_u = _u + ["TT650_Civ"];
+_u = _u + ["Tractor"];
+_u = _u + ["Lada2_TK_CIV_EP1"];
+_u = _u + ["SkodaRed"];
+_u = _u + ["VolhaLimo_TK_CIV_EP1"];
+_u = _u + ["Volha_2_TK_CIV_EP1"];
+_u = _u + ["VWGolf"];
+_u = _u + ["datsun1_civil_2_covered"];
+_u = _u + ["hilux1_civil_2_covered"];
+_u = _u + ["S1203_TK_CIV_EP1"];
+_u = _u + ["Ural_TK_CIV_EP1"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_EASTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Depot_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Depot_US.sqf
new file mode 100644
index 0000000..fa33d8f
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Depot_US.sqf
@@ -0,0 +1,22 @@
+Private ['_u'];
+
+/* US Depot Vehicles */
+_u = ["Old_bike_TK_CIV_EP1"];
+_u = _u + ["MMT_Civ"];
+_u = _u + ["Old_moto_TK_Civ_EP1"];
+_u = _u + ["Lada1_TK_CIV_EP1"];
+_u = _u + ["SkodaBlue"];
+_u = _u + ["car_sedan"];
+_u = _u + ["car_hatchback"];
+_u = _u + ["Volha_1_TK_CIV_EP1"];
+_u = _u + ["datsun1_civil_1_open"];
+_u = _u + ["datsun1_civil_3_open"];
+_u = _u + ["hilux1_civil_1_open"];
+_u = _u + ["LandRover_TK_CIV_EP1"];
+_u = _u + ["V3S_Open_TK_CIV_EP1"];
+_u = _u + ["Ikarus_TK_CIV_EP1"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_WESTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Heavy_GUE.sqf b/Common/Config/Core_Units/CombinedOps/Units_Heavy_GUE.sqf
new file mode 100644
index 0000000..c102bce
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Heavy_GUE.sqf
@@ -0,0 +1,9 @@
+Private ['_u'];
+
+/* Guerilla Heavy Vehicles */
+_u = ['BMP2_Gue'];
+_u = _u + ['T72_Gue'];
+_u = _u + ['T34_TK_GUE_EP1'];
+_u = _u + ['T55_TK_GUE_EP1'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Heavy_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Heavy_RU.sqf
new file mode 100644
index 0000000..1a11602
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Heavy_RU.sqf
@@ -0,0 +1,25 @@
+Private ['_u'];
+
+//--- Russian Heavy Vehicles.
+_u = ['M113_TK_EP1'];
+_u = _u + ['BMP2_INS'];
+_u = _u + ['BMP2_TK_EP1'];
+_u = _u + ['BMP3'];
+_u = _u + ['ZSU_INS'];
+_u = _u + ['ZSU_TK_EP1'];
+_u = _u + ['T34_TK_EP1'];
+_u = _u + ['T55_TK_EP1'];
+_u = _u + ['T72_RU'];
+_u = _u + ['T72_TK_EP1'];
+_u = _u + ['2S6M_Tunguska'];
+
+if (WF_ACE) then
+{
+ _u = _u + ["ACE_T90A"];
+}
+else
+{
+ _u = _u + ['T90'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Heavy_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Heavy_US.sqf
new file mode 100644
index 0000000..ae83933
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Heavy_US.sqf
@@ -0,0 +1,52 @@
+Private ['_u'];
+
+//--- US Heavy Vehicles.
+_u = ['AAV'];
+_u = _u + ['M1126_ICV_M2_EP1'];
+_u = _u + ['M1126_ICV_mk19_EP1'];
+_u = _u + ['M1129_MC_EP1'];
+_u = _u + ['M1135_ATGMV_EP1'];
+_u = _u + ['M1133_MEV_EP1'];
+_u = _u + ['M2A2_EP1'];
+_u = _u + ['M2A3_EP1'];
+_u = _u + ['M1A1'];
+_u = _u + ['M1A1_US_DES_EP1'];
+_u = _u + ['MLRS'];
+_u = _u + ['MLRS_DES_EP1'];
+_u = _u + ['M1A2_TUSK_MG'];
+_u = _u + ['M1A2_US_TUSK_MG_EP1'];
+_u = _u + ['M6_EP1'];
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_FV510_W'];
+ _u = _u + ['BAF_FV510_D'];
+};
+if (WF_ACE) then {
+ _u = _u + ['ACE_Stryker_RV_SLAT_D'];
+ _u = _u + ['ACE_M1A1HA_TUSK_DESERT'];
+ _u = _u + ['ACE_M1A1HA_TUSK_CSAMM_DESERT'];
+ _u = _u + ['ACE_Stryker_ICV_M2_SLAT'];
+ _u = _u + ['ACE_Stryker_RV_SLAT'];
+ _u = _u + ['ACE_Stryker_ICV_MK19_SLAT'];
+ _u = _u + ['ACE_Stryker_TOW_MG_Slat'];
+ _u = _u + ['ACE_Stryker_MGS_Slat'];
+ _u = _u + ['ACE_M113A3_Ambul'];
+ _u = _u + ['ACE_Vulcan'];
+ _u = _u + ['ACE_M113A3'];
+ _u = _u + ['ACE_M2A2_W'];
+ _u = _u + ['ACE_M2A3_W'];
+ _u = _u + ['ACE_M1A1_NATO'];
+ _u = _u + ['ACE_M1A1HA_TUSK'];
+ _u = _u + ['ACE_M1A1HA_TUSK_CSAMM'];
+ _u = _u + ['ACE_M6A1_W'];
+};
+
+if (WF_ACE) then
+{
+ _u = _u + ['ACE_Stryker_MGS_Slat'];
+}
+else
+{
+ _u = _u + ['M1128_MGS_EP1'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Light_GUE.sqf b/Common/Config/Core_Units/CombinedOps/Units_Light_GUE.sqf
new file mode 100644
index 0000000..c5910dc
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Light_GUE.sqf
@@ -0,0 +1,20 @@
+Private ['_u'];
+
+/* Guerilla Light Vehicles */
+_u = ['V3S_TK_GUE_EP1'];
+_u = _u + ['Pickup_PK_TK_GUE_EP1'];
+_u = _u + ['Offroad_DSHKM_TK_GUE_EP1'];
+_u = _u + ['Offroad_SPG9_TK_GUE_EP1'];
+_u = _u + ['BRDM2_TK_GUE_EP1'];
+_u = _u + ['BTR40_TK_GUE_EP1'];
+_u = _u + ['BTR40_MG_TK_GUE_EP1'];
+_u = _u + ['Ural_ZU23_TK_GUE_EP1'];
+_u = _u + ['TT650_Gue'];
+_u = _u + ['V3S_Gue'];
+_u = _u + ['Pickup_PK_GUE'];
+_u = _u + ['Offroad_DSHKM_Gue'];
+_u = _u + ['Offroad_SPG9_Gue'];
+_u = _u + ['BRDM2_Gue'];
+_u = _u + ['Ural_ZU23_Gue'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Light_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Light_RU.sqf
new file mode 100644
index 0000000..1705b99
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Light_RU.sqf
@@ -0,0 +1,50 @@
+Private ['_u'];
+
+//--- Russian Light Vehicles.
+_u = ['MMT_Civ'];
+_u = _u + ['TT650_Ins'];
+_u = _u + ['UAZ_Unarmed_TK_EP1'];
+_u = _u + ['UAZ_MG_TK_EP1'];
+_u = _u + ['UAZ_AGS30_TK_EP1'];
+_u = _u + ['UAZ_RU'];
+_u = _u + ['PBX'];
+_u = _u + ['UAZ_MG_INS'];
+_u = _u + ['UAZ_AGS30_RU'];
+_u = _u + ['UAZ_SPG9_INS'];
+_u = _u + ['LandRover_MG_TK_EP1'];
+_u = _u + ['LandRover_SPG9_TK_EP1'];
+_u = _u + ['SUV_TK_EP1'];
+_u = _u + ['Kamaz'];
+_u = _u + ['V3S_TK_EP1'];
+_u = _u + ['V3S_Open_TK_EP1'];
+_u = _u + ['UralRepair_TK_EP1'];
+_u = _u + ['UralReammo_TK_EP1'];
+_u = _u + ['UralRefuel_TK_EP1'];
+_u = _u + ['UralSalvage_TK_EP1'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['UralSupply_TK_EP1']};
+_u = _u + ['KamazRepair'];
+_u = _u + ['WarfareReammoTruck_RU'];
+_u = _u + ['KamazRefuel'];
+_u = _u + ['WarfareSalvageTruck_RU'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['WarfareSupplyTruck_RU']};
+_u = _u + ['M113Ambul_TK_EP1'];
+_u = _u + ['GAZ_Vodnik_MedEvac'];
+_u = _u + ['BRDM2_TK_EP1'];
+_u = _u + ['BRDM2_ATGM_TK_EP1'];
+_u = _u + ['BRDM2_INS'];
+_u = _u + ['BRDM2_ATGM_INS'];
+_u = _u + ['GAZ_Vodnik'];
+_u = _u + ['GAZ_Vodnik_HMG'];
+_u = _u + ['BTR60_TK_EP1'];
+_u = _u + ['Ural_ZU23_TK_EP1'];
+_u = _u + ['Ural_ZU23_INS'];
+_u = _u + ['BTR90'];
+_u = _u + ['GRAD_TK_EP1'];
+_u = _u + ['GRAD_RU'];
+
+if (paramDLCPMC) then
+{
+ _u = _u + ['ArmoredSUV_PMC'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Light_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Light_US.sqf
new file mode 100644
index 0000000..23ac57e
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Light_US.sqf
@@ -0,0 +1,75 @@
+Private ['_u'];
+
+//--- US Light Vehicles.
+_u = ['MMT_USMC'];
+_u = _u + ['M1030'];
+_u = _u + ['M1030_US_DES_EP1'];
+_u = _u + ['ATV_US_EP1'];
+_u = _u + ['Zodiac'];
+_u = _u + ['HMMWV_DES_EP1'];
+_u = _u + ['HMMWV_M1035_DES_EP1'];
+_u = _u + ['HMMWV_Terminal_EP1'];
+_u = _u + ['HMMWV_MK19_DES_EP1'];
+_u = _u + ['HMMWV_M998A2_SOV_DES_EP1'];
+_u = _u + ['HMMWV_M1151_M2_DES_EP1'];
+_u = _u + ['HMMWV_M998_crows_M2_DES_EP1'];
+_u = _u + ['HMMWV_M998_crows_MK19_DES_EP1'];
+_u = _u + ['HMMWV_TOW_DES_EP1'];
+_u = _u + ['HMMWV_Avenger_DES_EP1'];
+_u = _u + ['HMMWV_Ambulance_DES_EP1'];
+_u = _u + ['HMMWV'];
+_u = _u + ['HMMWV_M2'];
+_u = _u + ['HMMWV_Armored'];
+_u = _u + ['HMMWV_MK19'];
+_u = _u + ['HMMWV_TOW'];
+_u = _u + ['HMMWV_Avenger'];
+_u = _u + ['HMMWV_Ambulance'];
+_u = _u + ['MTVR_DES_EP1'];
+_u = _u + ['MtvrRepair_DES_EP1'];
+_u = _u + ['MtvrReammo_DES_EP1'];
+_u = _u + ['MtvrRefuel_DES_EP1'];
+_u = _u + ['MtvrSalvage_DES_EP1'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['MtvrSupply_DES_EP1']};
+_u = _u + ['MTVR'];
+_u = _u + ['MtvrRepair'];
+_u = _u + ['WarfareReammoTruck_USMC'];
+_u = _u + ['MtvrRefuel'];
+_u = _u + ['WarfareSalvageTruck_USMC'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['WarfareSupplyTruck_USMC']};
+_u = _u + ['RHIB'];
+_u = _u + ['RHIB2Turret'];
+_u = _u + ['LAV25'];
+if (paramDLCBAF) then {
+ _u = _u + ['BAF_ATV_W'];
+ _u = _u + ['BAF_Offroad_W'];
+ _u = _u + ['BAF_Jackal2_GMG_W'];
+ _u = _u + ['BAF_Jackal2_L2A1_W'];
+ _u = _u + ['BAF_ATV_D'];
+ _u = _u + ['BAF_Offroad_D'];
+ _u = _u + ['BAF_Jackal2_GMG_D'];
+ _u = _u + ['BAF_Jackal2_L2A1_D'];
+};
+if (WF_ACE) then {
+ _u = _u + ['ACE_ATV_Honda'];
+ _u = _u + ['ACE_HMMWV_MK19_USARMY'];
+ _u = _u + ['ACE_HMMWV_USARMY'];
+ _u = _u + ['ACE_HMMWV_GMV'];
+ _u = _u + ['ACE_HMMWV_GMV_MK19'];
+ _u = _u + ['ACE_HMMWV_M2_USARMY'];
+ _u = _u + ['ACE_HMMWV_TOW_USARMY'];
+ _u = _u + ['ACE_HMMWV_Ambulance_USARMY'];
+ _u = _u + ['ACE_Truck5tOpen'];
+ _u = _u + ['ACE_Truck5t'];
+ _u = _u + ['ACE_Truck5tMGOpen'];
+ _u = _u + ['ACE_Truck5tMG'];
+ _u = _u + ['ACE_Truck5tRepair'];
+ _u = _u + ['ACE_Truck5tReammo'];
+ _u = _u + ['ACE_Truck5tRefuel'];
+};
+
+if (paramDLCPMC) then
+{
+ _u = _u + ['ArmoredSUV_PMC'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Special_RU.sqf b/Common/Config/Core_Units/CombinedOps/Units_Special_RU.sqf
new file mode 100644
index 0000000..7ec794f
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Special_RU.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer (Vanilla worlds).
+['WFBE_EASTANNOUNCERS',['WFHQ_RU0','WFHQ_RU1','WFHQ_RU2'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_EASTCREW','RU_Soldier_Crew',false] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_EASTPILOT','RU_Soldier_Pilot',false] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_EASTSOLDIER','RU_Soldier',false] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_EASTAMBULANCES',['GAZ_Vodnik_MedEvac','M113Ambul_TK_EP1','Mi17_medevac_RU','M113Ambul_TK_EP1'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_EASTREPAIRTRUCKS',['KamazRepair','UralRepair_TK_EP1'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_EASTSALVAGETRUCK',['WarfareSalvageTruck_RU','UralSalvage_TK_EP1'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_EASTSUPPLYTRUCKS',['WarfareSupplyTruck_RU','UralSupply_TK_EP1'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_EASTUAV','Pchela1T',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_EASTBASEPATROLS_0',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_AR','RU_Soldier_GL','RU_Soldier_MG'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_1',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_MG','RU_Soldier_LAT','RU_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_2',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_AT','RU_Soldier_AA','RU_Soldier_Marksman'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_3',['RU_Soldier_SL','RU_Soldier','RU_Soldier_AR','RU_Soldier_HAT','RU_Soldier_LAT','RU_Soldier_GL'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_EASTPARACHUTELEVEL1',['RU_Soldier_SL','RU_Soldier_LAT','RU_Soldier','RU_Soldier2','RU_Soldier_AR','RU_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL2',['RU_Soldier_SL','RU_Soldier_AT','RU_Soldier_AT','RU_Soldier_AT','RU_Soldier_AA','RU_Soldier_MG','RU_Soldier_Medic','RU_Soldier_Marksman','RUS_Soldier_Marksman'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL3',['MVD_Soldier_TL','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_AA','RU_Soldier_AA','MVD_Soldier_MG','RUS_Commander','MVD_Soldier_Sniper','RUS_Soldier_Marksman'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_EASTPARACARGO','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_EASTREPAIRTRUCK','KamazRepair',false] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_EASTSTARTINGVEHICLES',if (WF_Camo) then {['GAZ_Vodnik_MedEvac','Kamaz']} else {['M113Ambul_TK_EP1','V3S_TK_EP1']},true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_EASTPARAAMMO',['RUBasicAmmunitionBox','RUBasicWeaponsBox','RULaunchersBox'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_EASTPARAVEHICARGO',if (WF_Camo) then {'UAZ_RU'} else {'UAZ_Unarmed_TK_EP1'},true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_EASTPARAVEHI','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_EASTPARACHUTE','ParachuteMediumEast_EP1',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_EASTSUPPLYTRUCK','WarfareSupplyTruck_RU',false] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_EASTDEFAULTFACTION','Russians',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/CombinedOps/Units_Special_US.sqf b/Common/Config/Core_Units/CombinedOps/Units_Special_US.sqf
new file mode 100644
index 0000000..057a602
--- /dev/null
+++ b/Common/Config/Core_Units/CombinedOps/Units_Special_US.sqf
@@ -0,0 +1,74 @@
+//--- Radio Announcer (Vanilla worlds).
+if (worldName in ('WFBE_WORLDWHITELISTVA' Call GetNamespace)) then {
+ ['WFBE_WESTANNOUNCERS',['WFHQ_EN0','WFHQ_EN1','WFHQ_EN2'],true] Call SetNamespace;
+} else {
+ ['WFBE_WESTANNOUNCERS',['WFHQ_EN0_EP1','WFHQ_EN1_EP1','WFHQ_EN2_EP1','WFHQ_EN3_EP1','WFHQ_EN4_EP1','WFHQ_EN5_EP1'],true] Call SetNamespace;
+};
+
+//--- Crew model.
+['WFBE_WESTCREW',if (WF_Camo) then {'USMC_Soldier_Crew'} else {'US_Soldier_Crew_EP1'},false] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_WESTPILOT',if (WF_Camo) then {'USMC_Soldier_Pilot'} else {'US_Soldier_Pilot_EP1'},false] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_WESTSOLDIER',if (WF_Camo) then {'USMC_Soldier'} else {'US_Soldier_EP1'},false] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_WESTAMBULANCES',['HMMWV_Ambulance','HMMWV_Ambulance_DES_EP1','UH60M_MEV_EP1','M1133_MEV_EP1'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_WESTREPAIRTRUCKS',['MtvrRepair','MtvrRepair_DES_EP1'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_WESTSALVAGETRUCK',['WarfareSalvageTruck_USMC','MtvrSalvage_DES_EP1'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_WESTSUPPLYTRUCKS',['WarfareSupplyTruck_USMC','MtvrSupply_DES_EP1'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_WESTUAV','MQ9PredatorB_US_EP1',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_WESTBASEPATROLS_0',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_GL_EP1','US_Soldier_MG_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_1',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_MG_EP1','US_Soldier_LAT_EP1','US_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_2',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AT_EP1','US_Soldier_AA_EP1','US_Soldier_Sniper_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_3',['US_Soldier_SL_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_HAT_EP1','US_Soldier_LAT_EP1','US_Soldier_GL_EP1'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_WESTPARACHUTELEVEL1',['US_Soldier_SL_EP1','US_Soldier_LAT_EP1','US_Soldier_EP1','US_Soldier_EP1','US_Soldier_AR_EP1','US_Soldier_Medic_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL2',['US_Soldier_SL_EP1','US_Soldier_AT_EP1','US_Soldier_AT_EP1','US_Soldier_AT_EP1','US_Soldier_AA_EP1','US_Soldier_MG_EP1','US_Soldier_Medic_EP1','US_Soldier_Spotter_EP1','US_Soldier_Sniper_EP1'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL3',['US_Delta_Force_TL_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_HAT_EP1','US_Soldier_AA_EP1','US_Soldier_AA_EP1','US_Delta_Force_AR_EP1','US_Delta_Force_Assault_EP1','US_Soldier_Medic_EP1','US_Delta_Force_M14_EP1','US_Soldier_AT_EP1','US_Soldier_Marksman_EP1'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_WESTPARACARGO','C130J_US_EP1',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_WESTREPAIRTRUCK',if (WF_Camo) then {'MtvrRepair'} else {'MtvrRepair_DES_EP1'},false] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_WESTSTARTINGVEHICLES',if (WF_Camo) then {['HMMWV_Ambulance','MTVR']} else {['HMMWV_Ambulance_DES_EP1','MTVR_DES_EP1']},true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_WESTPARAAMMO',['USBasicAmmunitionBox_EP1','USBasicWeapons_EP1','USLaunchers_EP1'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_WESTPARAVEHICARGO','HMMWV_DES_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_WESTPARAVEHI','CH_47F_EP1',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_WESTPARACHUTE','ParachuteMediumWest_EP1',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_WESTSUPPLYTRUCK',if (WF_Camo) then {'WarfareSupplyTruck_USMC'} else {'MtvrSupply_DES_EP1'},false] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_WESTDEFAULTFACTION',if (WF_Camo) then {'USMC'} else {'US'},true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Aircraft_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Aircraft_CDF.sqf
new file mode 100644
index 0000000..95b5765
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Aircraft_CDF.sqf
@@ -0,0 +1,15 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* Chernarus Aircraft Vehicles */
+_u = ['Mi17_CDF'];
+_u = _u + ['Mi17_medevac_CDF'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi24_D'];
+};
+if (_r == 0) then {
+ _u = _u + ['Su25_CDF'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Aircraft_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Aircraft_INS.sqf
new file mode 100644
index 0000000..6af3759
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Aircraft_INS.sqf
@@ -0,0 +1,15 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- Insurgent Aircraft Vehicles.
+_u = ['Mi17_Ins'];
+_u = _u + ['Mi17_medevac_Ins'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi24_V'];
+};
+if (_r == 0) then {
+ _u = _u + ['Su25_Ins'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Aircraft_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Aircraft_RU.sqf
new file mode 100644
index 0000000..5c4c6da
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Aircraft_RU.sqf
@@ -0,0 +1,23 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- Russian Aircraft Vehicles.
+_u = ['Mi17_Ins'];
+_u = _u + ['Mi17_medevac_RU'];
+if (_r == 0 ||_r == 1) then {
+ _u = _u + ['Mi17_rockets_RU'];
+ _u = _u + ['Mi24_V'];
+ _u = _u + ['Mi24_P'];
+ if !(paramRestrictionKamov) then {
+ _u = _u + ['Ka52'];
+ _u = _u + ['Ka52Black'];
+ };
+};
+if (_r == 0) then {
+ _u = _u + ['Su34'];
+ _u = _u + ['Su25_Ins'];
+ _u = _u + ['Su39'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Aircraft_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Aircraft_USMC.sqf
new file mode 100644
index 0000000..a979ff6
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Aircraft_USMC.sqf
@@ -0,0 +1,21 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- USMC Aircraft Vehicles.
+_u = ['MH60S'];
+if (_r == 0 || _r == 1) then {
+ _u = _u + ['UH1Y'];
+ _u = _u + ['AH1Z'];
+ _u = _u + ['AH64D'];
+};
+if (_r == 0) then {
+ _u = _u + ['MV22'];
+ _u = _u + ['C130J'];
+ _u = _u + ['F35B'];
+ _u = _u + ['AV8B'];
+ _u = _u + ['AV8B2'];
+ _u = _u + ['A10'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Airport_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Airport_CDF.sqf
new file mode 100644
index 0000000..8734067
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Airport_CDF.sqf
@@ -0,0 +1,11 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* CDF Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['Mi24_D'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Airport_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Airport_INS.sqf
new file mode 100644
index 0000000..dfcb0e2
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Airport_INS.sqf
@@ -0,0 +1,11 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* Insurgent Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['Su25_Ins'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Airport_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Airport_RU.sqf
new file mode 100644
index 0000000..5ed7db0
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Airport_RU.sqf
@@ -0,0 +1,13 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+/* RU Airport Vehicles */
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['Su34'];
+ _u = _u + ['Su25_Ins'];
+ _u = _u + ['Su39'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Airport_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Airport_USMC.sqf
new file mode 100644
index 0000000..495e939
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Airport_USMC.sqf
@@ -0,0 +1,16 @@
+Private ['_r','_u'];
+
+_r = 'WFBE_RESTRICTIONADVAIR' Call GetNamespace;
+
+//--- USMC Airport Vehicles.
+_u = [];
+if (_r == 0) then {
+ _u = _u + ['MV22'];
+ _u = _u + ['C130J'];
+ _u = _u + ['F35B'];
+ _u = _u + ['AV8B'];
+ _u = _u + ['AV8B2'];
+ _u = _u + ['A10'];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Barracks_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Barracks_CDF.sqf
new file mode 100644
index 0000000..d85f848
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Barracks_CDF.sqf
@@ -0,0 +1,23 @@
+Private ['_u'];
+
+//--- Chernarus Defense Forces Troops.
+_u = ['CDF_Soldier'];
+_u = _u + ['CDF_Soldier_Engineer'];
+_u = _u + ['CDF_Soldier_Light'];
+_u = _u + ['CDF_Soldier_GL'];
+_u = _u + ['CDF_Soldier_Militia'];
+_u = _u + ['CDF_Soldier_Medic'];
+_u = _u + ['CDF_Soldier_Sniper'];
+_u = _u + ['CDF_Soldier_Spotter'];
+_u = _u + ['CDF_Soldier_Marksman'];
+_u = _u + ['CDF_Soldier_RPG'];
+_u = _u + ['CDF_Soldier_Strela'];
+_u = _u + ['CDF_Soldier_AR'];
+_u = _u + ['CDF_Soldier_MG'];
+_u = _u + ['CDF_Soldier_TL'];
+_u = _u + ['CDF_Soldier_Officer'];
+_u = _u + ['CDF_Commander'];
+_u = _u + ['CDF_Soldier_Pilot'];
+_u = _u + ['CDF_Soldier_Crew'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Barracks_GUE.sqf b/Common/Config/Core_Units/Vanilla/Units_Barracks_GUE.sqf
new file mode 100644
index 0000000..18b6c5b
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Barracks_GUE.sqf
@@ -0,0 +1,26 @@
+Private ['_u'];
+
+/* Guerilla Troops */
+_u = ['GUE_Soldier_1'];
+_u = _u + ['GUE_Soldier_2'];
+_u = _u + ['GUE_Soldier_3'];
+_u = _u + ['GUE_Soldier_GL'];
+_u = _u + ['GUE_Soldier_AT'];
+_u = _u + ['GUE_Soldier_AA'];
+_u = _u + ['GUE_Soldier_AR'];
+_u = _u + ['GUE_Soldier_MG'];
+_u = _u + ['GUE_Soldier_Sniper'];
+_u = _u + ['GUE_Soldier_Medic'];
+_u = _u + ['GUE_Soldier_Crew'];
+_u = _u + ['GUE_Soldier_Pilot'];
+_u = _u + ['GUE_Soldier_Scout'];
+_u = _u + ['GUE_Soldier_Sab'];
+_u = _u + ['GUE_Commander'];
+_u = _u + ['GUE_Worker2'];
+_u = _u + ['GUE_Woodlander3'];
+_u = _u + ['GUE_Villager3'];
+_u = _u + ['GUE_Woodlander2'];
+_u = _u + ['GUE_Woodlander1'];
+_u = _u + ['GUE_Villager4'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Barracks_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Barracks_INS.sqf
new file mode 100644
index 0000000..1765046
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Barracks_INS.sqf
@@ -0,0 +1,20 @@
+Private ['_u'];
+
+//--- Insurgent Troops.
+_u = ['Ins_Soldier_1'];
+_u = _u + ['Ins_Soldier_2'];
+_u = _u + ['Ins_Soldier_GL'];
+_u = _u + ['Ins_Soldier_CO'];
+_u = _u + ['Ins_Commander'];
+_u = _u + ['Ins_Soldier_Medic'];
+_u = _u + ['Ins_Soldier_AR'];
+_u = _u + ['Ins_Soldier_MG'];
+_u = _u + ['Ins_Soldier_AT'];
+_u = _u + ['Ins_Soldier_AA'];
+_u = _u + ['Ins_Soldier_Sniper'];
+_u = _u + ['Ins_Soldier_Sapper'];
+_u = _u + ['Ins_Soldier_Sab'];
+_u = _u + ['Ins_Soldier_Pilot'];
+_u = _u + ['Ins_Soldier_Crew'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Barracks_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Barracks_RU.sqf
new file mode 100644
index 0000000..eb1be50
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Barracks_RU.sqf
@@ -0,0 +1,35 @@
+Private ['_u'];
+
+//--- Russian Troops.
+_u = ['RU_Soldier'];
+_u = _u + ['RU_Soldier2'];
+_u = _u + ['RU_Soldier_LAT'];
+_u = _u + ['RU_Soldier_AT'];
+_u = _u + ['RU_Soldier_HAT'];
+_u = _u + ['RU_Soldier_AA'];
+_u = _u + ['RU_Soldier_AR'];
+_u = _u + ['RU_Soldier_MG'];
+_u = _u + ['RU_Soldier_GL'];
+_u = _u + ['RU_Soldier_Marksman'];
+_u = _u + ['RU_Soldier_Spotter'];
+_u = _u + ['RU_Soldier_Sniper'];
+_u = _u + ['RU_Soldier_SniperH'];
+_u = _u + ['RU_Soldier_Medic'];
+_u = _u + ['RU_Soldier_TL'];
+_u = _u + ['RU_Soldier_SL'];
+_u = _u + ['RU_Soldier_Crew'];
+_u = _u + ['RU_Soldier_Pilot'];
+_u = _u + ['RUS_Soldier1'];
+_u = _u + ['RUS_Soldier2'];
+_u = _u + ['RUS_Soldier_GL'];
+_u = _u + ['RUS_Soldier_Marksman'];
+_u = _u + ['RUS_Soldier3'];
+_u = _u + ['RUS_Soldier_TL'];
+_u = _u + ['MVD_Soldier_GL'];
+_u = _u + ['MVD_Soldier_MG'];
+_u = _u + ['MVD_Soldier_Marksman'];
+_u = _u + ['MVD_Soldier_AT'];
+_u = _u + ['MVD_Soldier_Sniper'];
+_u = _u + ['MVD_Soldier_TL'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Barracks_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Barracks_USMC.sqf
new file mode 100644
index 0000000..4597ec8
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Barracks_USMC.sqf
@@ -0,0 +1,35 @@
+Private ['_u'];
+
+//--- USMC Troops.
+_u = ['USMC_Soldier'];
+_u = _u + ['USMC_Soldier2'];
+_u = _u + ['USMC_Soldier_LAT'];
+_u = _u + ['USMC_Soldier_AT'];
+_u = _u + ['USMC_Soldier_HAT'];
+_u = _u + ['USMC_Soldier_AA'];
+_u = _u + ['USMC_Soldier_AR'];
+_u = _u + ['USMC_Soldier_MG'];
+_u = _u + ['USMC_Soldier_GL'];
+_u = _u + ['USMC_SoldierS_Sniper'];
+_u = _u + ['USMC_SoldierS_SniperH'];
+_u = _u + ['USMC_SoldierM_Marksman'];
+_u = _u + ['USMC_Soldier_Medic'];
+_u = _u + ['USMC_SoldierS_Engineer'];
+_u = _u + ['USMC_SoldierS'];
+_u = _u + ['USMC_SoldierS_Spotter'];
+_u = _u + ['USMC_Soldier_TL'];
+_u = _u + ['USMC_Soldier_SL'];
+_u = _u + ['USMC_Soldier_Crew'];
+_u = _u + ['USMC_Soldier_Pilot'];
+_u = _u + ['FR_GL'];
+_u = _u + ['FR_Corpsman'];
+_u = _u + ['FR_Assault_R'];
+_u = _u + ['FR_Assault_GL'];
+_u = _u + ['FR_AR'];
+_u = _u + ['FR_TL'];
+_u = _u + ['FR_R'];
+_u = _u + ['FR_Sapper'];
+_u = _u + ['FR_AC'];
+_u = _u + ['FR_Marksman'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Depot_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Depot_CDF.sqf
new file mode 100644
index 0000000..994c144
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Depot_CDF.sqf
@@ -0,0 +1,15 @@
+Private ['_u'];
+
+/* CDF Depot Vehicles */
+_u = ["MMT_Civ"];
+_u = _u + ["TT650_Civ"];
+_u = _u + ["Lada1"];
+_u = _u + ["SkodaBlue"];
+_u = _u + ["car_hatchback"];
+_u = _u + ["datsun1_civil_1_open"];
+_u = _u + ["V3S_Civ"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_WESTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Depot_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Depot_INS.sqf
new file mode 100644
index 0000000..c5f7288
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Depot_INS.sqf
@@ -0,0 +1,15 @@
+Private ['_u'];
+
+/* Insurgent Depot Vehicles */
+_u = ["MMT_Civ"];
+_u = _u + ["TT650_Civ"];
+_u = _u + ["Lada2"];
+_u = _u + ["LadaLM"];
+_u = _u + ["SkodaRed"];
+_u = _u + ["datsun1_civil_2_covered"];
+_u = _u + ["UralCivil"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_EASTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Depot_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Depot_RU.sqf
new file mode 100644
index 0000000..716d071
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Depot_RU.sqf
@@ -0,0 +1,18 @@
+Private ['_u'];
+
+/* Russian Depot Vehicles */
+_u = ["MMT_Civ"];
+_u = _u + ["TT650_Civ"];
+_u = _u + ["Tractor"];
+_u = _u + ["Lada2"];
+_u = _u + ["LadaLM"];
+_u = _u + ["SkodaRed"];
+_u = _u + ["VWGolf"];
+_u = _u + ["datsun1_civil_2_covered"];
+_u = _u + ["hilux1_civil_2_covered"];
+_u = _u + ["UralCivil"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_EASTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Depot_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Depot_USMC.sqf
new file mode 100644
index 0000000..f5f99d6
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Depot_USMC.sqf
@@ -0,0 +1,19 @@
+Private ['_u'];
+
+//--- USMC Depot Vehicles.
+_u = ["MMT_Civ"];
+_u = _u + ["TT650_Civ"];
+_u = _u + ["Lada1"];
+_u = _u + ["SkodaBlue"];
+_u = _u + ["car_sedan"];
+_u = _u + ["car_hatchback"];
+_u = _u + ["datsun1_civil_1_open"];
+_u = _u + ["datsun1_civil_3_open"];
+_u = _u + ["hilux1_civil_1_open"];
+_u = _u + ["V3S_Civ"];
+_u = _u + ["Ikarus"];
+if (paramPurchaseInfDepot) then {
+ _u = _u + ['WFBE_WESTSOLDIER' Call GetNamespace];
+};
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Heavy_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Heavy_CDF.sqf
new file mode 100644
index 0000000..b985cee
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Heavy_CDF.sqf
@@ -0,0 +1,9 @@
+Private ['_u'];
+
+/* Chernarus Heavy Vehicles */
+_u = ['BMP2_Ambul_CDF'];
+_u = _u + ['ZSU_CDF'];
+_u = _u + ['BMP2_CDF'];
+_u = _u + ['T72_CDF'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Heavy_GUE.sqf b/Common/Config/Core_Units/Vanilla/Units_Heavy_GUE.sqf
new file mode 100644
index 0000000..fa5caed
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Heavy_GUE.sqf
@@ -0,0 +1,7 @@
+Private ['_u'];
+
+/* Guerilla Heavy Vehicles */
+_u = ['BMP2_Gue'];
+_u = _u + ['T72_Gue'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Heavy_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Heavy_INS.sqf
new file mode 100644
index 0000000..478320c
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Heavy_INS.sqf
@@ -0,0 +1,9 @@
+Private ['_u'];
+
+//--- Insurgent Heavy Vehicles.
+_u = ['BMP2_Ambul_INS'];
+_u = _u + ['ZSU_INS'];
+_u = _u + ['BMP2_INS'];
+_u = _u + ['T72_INS'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Heavy_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Heavy_RU.sqf
new file mode 100644
index 0000000..259de6b
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Heavy_RU.sqf
@@ -0,0 +1,11 @@
+Private ['_u'];
+
+//--- Russian Heavy Vehicles.
+_u = ['BMP2_INS'];
+_u = _u + ['BMP3'];
+_u = _u + ['ZSU_INS'];
+_u = _u + ['T72_RU'];
+_u = _u + ['T90'];
+_u = _u + ['2S6M_Tunguska'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Heavy_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Heavy_USMC.sqf
new file mode 100644
index 0000000..bea50ed
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Heavy_USMC.sqf
@@ -0,0 +1,9 @@
+Private ['_u'];
+
+//--- USMC Heavy Vehicles.
+_u = ['AAV'];
+_u = _u + ['M1A1'];
+_u = _u + ['MLRS'];
+_u = _u + ['M1A2_TUSK_MG'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Light_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Light_CDF.sqf
new file mode 100644
index 0000000..6bba7de
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Light_CDF.sqf
@@ -0,0 +1,18 @@
+Private ['_u'];
+
+/* Chernarus Light Vehicles */
+_u = ['UAZ_CDF'];
+_u = _u + ['Ural_CDF'];
+_u = _u + ['WarfareSalvageTruck_CDF'];
+_u = _u + ['UralRepair_CDF'];
+_u = _u + ['UralReammo_CDF'];
+_u = _u + ['UralRefuel_CDF'];
+_u = _u + ['WarfareSupplyTruck_CDF'];
+_u = _u + ['UAZ_MG_CDF'];
+_u = _u + ['UAZ_AGS30_CDF'];
+_u = _u + ['BRDM2_CDF'];
+_u = _u + ['BRDM2_ATGM_CDF'];
+_u = _u + ['Ural_ZU23_CDF'];
+_u = _u + ['GRAD_CDF'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Light_GUE.sqf b/Common/Config/Core_Units/Vanilla/Units_Light_GUE.sqf
new file mode 100644
index 0000000..d84b89e
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Light_GUE.sqf
@@ -0,0 +1,12 @@
+Private ['_u'];
+
+/* Guerilla Light Vehicles */
+_u = ['TT650_Gue'];
+_u = _u + ['V3S_Gue'];
+_u = _u + ['Pickup_PK_GUE'];
+_u = _u + ['Offroad_DSHKM_Gue'];
+_u = _u + ['Offroad_SPG9_Gue'];
+_u = _u + ['BRDM2_Gue'];
+_u = _u + ['Ural_ZU23_Gue'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Light_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Light_INS.sqf
new file mode 100644
index 0000000..009441b
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Light_INS.sqf
@@ -0,0 +1,19 @@
+Private ['_u'];
+
+//--- Insurgent Light Vehicles.
+_u = ['UAZ_INS'];
+_u = _u + ['Ural_INS'];
+_u = _u + ['WarfareSalvageTruck_INS'];
+_u = _u + ['UralRepair_INS'];
+_u = _u + ['UralReammo_INS'];
+_u = _u + ['UralRefuel_INS'];
+_u = _u + ['WarfareSupplyTruck_INS'];
+_u = _u + ['UAZ_MG_INS'];
+_u = _u + ['UAZ_AGS30_INS'];
+_u = _u + ['UAZ_SPG9_INS'];
+_u = _u + ['BRDM2_INS'];
+_u = _u + ['BRDM2_ATGM_INS'];
+_u = _u + ['Ural_ZU23_INS'];
+_u = _u + ['GRAD_INS'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Light_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Light_RU.sqf
new file mode 100644
index 0000000..6596f1e
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Light_RU.sqf
@@ -0,0 +1,26 @@
+Private ['_u'];
+
+//--- Russian Light Vehicles.
+_u = ['MMT_Civ'];
+_u = _u + ['TT650_Ins'];
+_u = _u + ['UAZ_RU'];
+_u = _u + ['PBX'];
+_u = _u + ['UAZ_MG_INS'];
+_u = _u + ['UAZ_AGS30_RU'];
+_u = _u + ['UAZ_SPG9_INS'];
+_u = _u + ['Kamaz'];
+_u = _u + ['KamazRepair'];
+_u = _u + ['WarfareReammoTruck_RU'];
+_u = _u + ['KamazRefuel'];
+_u = _u + ['WarfareSalvageTruck_RU'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['WarfareSupplyTruck_RU']};
+_u = _u + ['GAZ_Vodnik_MedEvac'];
+_u = _u + ['BRDM2_INS'];
+_u = _u + ['BRDM2_ATGM_INS'];
+_u = _u + ['GAZ_Vodnik'];
+_u = _u + ['GAZ_Vodnik_HMG'];
+_u = _u + ['Ural_ZU23_INS'];
+_u = _u + ['BTR90'];
+_u = _u + ['GRAD_RU'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Light_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Light_USMC.sqf
new file mode 100644
index 0000000..13133c6
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Light_USMC.sqf
@@ -0,0 +1,24 @@
+Private ['_u'];
+
+//--- USMC Light Vehicles.
+_u = ['MMT_USMC'];
+_u = _u + ['M1030'];
+_u = _u + ['HMMWV'];
+_u = _u + ['Zodiac'];
+_u = _u + ['HMMWV_M2'];
+_u = _u + ['HMMWV_Armored'];
+_u = _u + ['HMMWV_MK19'];
+_u = _u + ['HMMWV_TOW'];
+_u = _u + ['HMMWV_Avenger'];
+_u = _u + ['HMMWV_Ambulance'];
+_u = _u + ['MTVR'];
+_u = _u + ['MtvrRepair'];
+_u = _u + ['WarfareReammoTruck_USMC'];
+_u = _u + ['MtvrRefuel'];
+_u = _u + ['WarfareSalvageTruck_USMC'];
+if (('WFBE_SUPPLYSYSTEM' Call GetNamespace) == 0) then {_u = _u + ['WarfareSupplyTruck_USMC']};
+_u = _u + ['RHIB'];
+_u = _u + ['RHIB2Turret'];
+_u = _u + ['LAV25'];
+
+_u \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Special_CDF.sqf b/Common/Config/Core_Units/Vanilla/Units_Special_CDF.sqf
new file mode 100644
index 0000000..e0c42f5
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Special_CDF.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_WESTANNOUNCERS',['WFHQ_RU0','WFHQ_RU1','WFHQ_RU2'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_WESTCREW','CDF_Soldier_Crew',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_WESTPILOT','CDF_Soldier_Pilot',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_WESTSOLDIER','CDF_Soldier',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_WESTAMBULANCES',['BMP2_Ambul_CDF'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_WESTREPAIRTRUCKS',['UralRepair_CDF'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_WESTSALVAGETRUCK',['WarfareSalvageTruck_CDF'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_WESTSUPPLYTRUCKS',['WarfareSupplyTruck_CDF'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_WESTUAV','MQ9PredatorB',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_WESTBASEPATROLS_0',['CDF_Soldier_TL','CDF_Soldier','CDF_Soldier','CDF_Soldier_AR','CDF_Soldier_GL','CDF_Soldier_MG'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_1',['CDF_Soldier_TL','CDF_Soldier','CDF_Soldier','CDF_Soldier_MG','CDF_Soldier_RPG','CDF_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_2',['CDF_Soldier_TL','CDF_Soldier','CDF_Soldier','CDF_Soldier_Marksman','CDF_Soldier_Strela','CDF_Soldier_Sniper'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_3',['CDF_Soldier_TL','CDF_Soldier','CDF_Soldier_AR','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_GL'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_WESTPARACHUTELEVEL1',['CDF_Soldier_TL','CDF_Soldier_RPG','CDF_Soldier','CDF_Soldier','CDF_Soldier_AR','CDF_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL2',['CDF_Soldier_TL','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_Strela','CDF_Soldier_MG','CDF_Soldier_Medic','CDF_Soldier_Spotter','CDF_Soldier_Sniper'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL3',['CDF_Soldier_TL','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_RPG','CDF_Soldier_Strela','CDF_Soldier_Strela','CDF_Soldier','CDF_Soldier_GL','CDF_Soldier_Medic','CDF_Soldier_Sniper','CDF_Soldier','CDF_Soldier_Marksman'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_WESTPARACARGO','Mi17_CDF',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_WESTREPAIRTRUCK','UralRepair_CDF',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_WESTSTARTINGVEHICLES',['BMP2_Ambul_CDF','Ural_CDF'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_WESTPARAAMMO',['RUBasicAmmunitionBox','RUBasicWeaponsBox','RULaunchersBox'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_WESTPARAVEHICARGO','BRDM2_CDF',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_WESTPARAVEHI','Mi17_CDF',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_WESTPARACHUTE','ParachuteMediumWest',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_WESTSUPPLYTRUCK','WarfareSupplyTruck_CDF',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_WESTDEFAULTFACTION','CDF',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Special_INS.sqf b/Common/Config/Core_Units/Vanilla/Units_Special_INS.sqf
new file mode 100644
index 0000000..1ac66a9
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Special_INS.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_EASTANNOUNCERS',['WFHQ_CZ0','WFHQ_CZ1','WFHQ_CZ2'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_EASTCREW','Ins_Soldier_Crew',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_EASTPILOT','Ins_Soldier_Pilot',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_EASTSOLDIER','Ins_Soldier_1',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_EASTAMBULANCES',['BMP2_Ambul_INS'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_EASTREPAIRTRUCKS',['UralRepair_INS'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_EASTSALVAGETRUCK',['WarfareSalvageTruck_INS'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_EASTSUPPLYTRUCKS',['WarfareSupplyTruck_INS'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_EASTUAV','Pchela1T',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_EASTBASEPATROLS_0',['Ins_Soldier_CO','Ins_Soldier_1','Ins_Soldier_2','Ins_Soldier_AR','Ins_Soldier_GL','Ins_Soldier_MG'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_1',['Ins_Soldier_CO','Ins_Soldier_1','Ins_Soldier_2','Ins_Soldier_MG','Ins_Soldier_AT','Ins_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_2',['Ins_Soldier_CO','Ins_Soldier_1','Ins_Soldier_2','Ins_Soldier_AT','Ins_Soldier_AA','Ins_Soldier_Sniper'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_3',['Ins_Soldier_CO','Ins_Soldier_1','Ins_Soldier_AR','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_GL'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_EASTPARACHUTELEVEL1',['Ins_Soldier_CO','Ins_Soldier_AT','Ins_Soldier_1','Ins_Soldier_2','Ins_Soldier_AR','Ins_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL2',['Ins_Soldier_CO','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_AA','Ins_Soldier_MG','Ins_Soldier_Medic','Ins_Soldier_Sapper','Ins_Soldier_Sniper'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL3',['Ins_Soldier_CO','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_AT','Ins_Soldier_Sapper','Ins_Soldier_AA','Ins_Soldier_AA','Ins_Soldier_MG','Ins_Soldier_Sab','Ins_Soldier_Sniper','Ins_Soldier_Sniper'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_EASTPARACARGO','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_EASTREPAIRTRUCK','UralRepair_INS',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_EASTSTARTINGVEHICLES',['BMP2_Ambul_INS','Ural_INS'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_EASTPARAAMMO',['RUBasicAmmunitionBox','RUBasicWeaponsBox','RULaunchersBox'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_EASTPARAVEHICARGO','BRDM2_INS',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_EASTPARAVEHI','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_EASTPARACHUTE','ParachuteMediumEast',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_EASTSUPPLYTRUCK','WarfareSupplyTruck_INS',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_EASTDEFAULTFACTION','Insurgents',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Special_RU.sqf b/Common/Config/Core_Units/Vanilla/Units_Special_RU.sqf
new file mode 100644
index 0000000..c0362ba
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Special_RU.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_EASTANNOUNCERS',['WFHQ_RU0','WFHQ_RU1','WFHQ_RU2'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_EASTCREW','RU_Soldier_Crew',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_EASTPILOT','RU_Soldier_Pilot',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_EASTSOLDIER','RU_Soldier',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_EASTAMBULANCES',['GAZ_Vodnik_MedEvac'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_EASTREPAIRTRUCKS',['KamazRepair'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_EASTSALVAGETRUCK',['WarfareSalvageTruck_RU'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_EASTSUPPLYTRUCKS',['WarfareSupplyTruck_RU'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_EASTUAV','Pchela1T',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_EASTBASEPATROLS_0',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_AR','RU_Soldier_GL','RU_Soldier_MG'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_1',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_MG','RU_Soldier_LAT','RU_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_2',['RU_Soldier_SL','RU_Soldier','RU_Soldier','RU_Soldier_AT','RU_Soldier_AA','RU_Soldier_Marksman'],true] Call SetNamespace;
+ ['WFBE_EASTBASEPATROLS_3',['RU_Soldier_SL','RU_Soldier','RU_Soldier_AR','RU_Soldier_HAT','RU_Soldier_LAT','RU_Soldier_GL'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_EASTPARACHUTELEVEL1',['RU_Soldier_SL','RU_Soldier_LAT','RU_Soldier','RU_Soldier2','RU_Soldier_AR','RU_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL2',['RU_Soldier_SL','RU_Soldier_AT','RU_Soldier_AT','RU_Soldier_AT','RU_Soldier_AA','RU_Soldier_MG','RU_Soldier_Medic','RU_Soldier_Marksman','RUS_Soldier_Marksman'],true] Call SetNamespace;
+ ['WFBE_EASTPARACHUTELEVEL3',['MVD_Soldier_TL','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_HAT','RU_Soldier_AA','RU_Soldier_AA','MVD_Soldier_MG','RUS_Commander','MVD_Soldier_Sniper','RUS_Soldier_Marksman'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_EASTPARACARGO','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_EASTREPAIRTRUCK','KamazRepair',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_EASTSTARTINGVEHICLES',['GAZ_Vodnik_MedEvac','Kamaz'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_EASTPARAAMMO',['RUBasicAmmunitionBox','RUBasicWeaponsBox','RULaunchersBox'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_EASTPARAVEHICARGO','UAZ_RU',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_EASTPARAVEHI','Mi17_Ins',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_EASTPARACHUTE','ParachuteMediumEast',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_EASTSUPPLYTRUCK','WarfareSupplyTruck_RU',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_EASTDEFAULTFACTION','Russians',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/Core_Units/Vanilla/Units_Special_USMC.sqf b/Common/Config/Core_Units/Vanilla/Units_Special_USMC.sqf
new file mode 100644
index 0000000..a5ac193
--- /dev/null
+++ b/Common/Config/Core_Units/Vanilla/Units_Special_USMC.sqf
@@ -0,0 +1,70 @@
+//--- Radio Announcer.
+['WFBE_WESTANNOUNCERS',['WFHQ_EN0','WFHQ_EN1','WFHQ_EN2'],true] Call SetNamespace;
+
+//--- Crew model.
+['WFBE_WESTCREW','USMC_Soldier_Crew',true] Call SetNamespace;
+
+//--- Pilot model.
+['WFBE_WESTPILOT','USMC_Soldier_Pilot',true] Call SetNamespace;
+
+//--- Soldier model.
+['WFBE_WESTSOLDIER','USMC_Soldier',true] Call SetNamespace;
+
+//--- Ambulances.
+['WFBE_WESTAMBULANCES',['HMMWV_Ambulance'],true] Call SetNamespace;
+
+//--- Repair Trucks.
+['WFBE_WESTREPAIRTRUCKS',['MtvrRepair'],true] Call SetNamespace;
+
+//--- Salvage Trucks.
+['WFBE_WESTSALVAGETRUCK',['WarfareSalvageTruck_USMC'],true] Call SetNamespace;
+
+//--- Supply Trucks.
+['WFBE_WESTSUPPLYTRUCKS',['WarfareSupplyTruck_USMC'],true] Call SetNamespace;
+
+//--- UAV.
+['WFBE_WESTUAV','MQ9PredatorB',true] Call SetNamespace;
+
+if (isServer) then {
+ //--- Base Patrols.
+ if (paramBasePatrols) then {
+ ['WFBE_WESTBASEPATROLS_0',['USMC_Soldier_SL','USMC_Soldier','USMC_Soldier','USMC_Soldier_AR','USMC_Soldier_GL','USMC_Soldier_MG'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_1',['USMC_Soldier_SL','USMC_Soldier','USMC_Soldier','USMC_Soldier_MG','USMC_Soldier_LAT','USMC_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_2',['USMC_Soldier_SL','USMC_Soldier','USMC_Soldier','USMC_Soldier_AT','USMC_Soldier_AA','USMC_SoldierS_Sniper'],true] Call SetNamespace;
+ ['WFBE_WESTBASEPATROLS_3',['USMC_Soldier_SL','USMC_Soldier','USMC_Soldier_AR','USMC_Soldier_HAT','USMC_Soldier_LAT','USMC_Soldier_GL'],true] Call SetNamespace;
+ };
+
+ //--- Paratroopers.
+ ['WFBE_WESTPARACHUTELEVEL1',['USMC_Soldier_SL','USMC_Soldier_LAT','USMC_Soldier','USMC_Soldier2','USMC_Soldier_AR','USMC_Soldier_Medic'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL2',['USMC_Soldier_SL','USMC_Soldier_AT','USMC_Soldier_AT','USMC_Soldier_AT','USMC_Soldier_AA','USMC_Soldier_MG','USMC_Soldier_Medic','USMC_SoldierS_Spotter','USMC_SoldierS_Sniper'],true] Call SetNamespace;
+ ['WFBE_WESTPARACHUTELEVEL3',['FR_Assault_R','USMC_Soldier_HAT','USMC_Soldier_HAT','USMC_Soldier_HAT','USMC_Soldier_HAT','USMC_Soldier_AA','USMC_Soldier_AA','FR_AR','FR_AC','USMC_Soldier_Medic','FR_Marksman','USMC_Soldier_AT','USMC_SoldierS_Sniper'],true] Call SetNamespace;
+
+ //--- Paratroopers, Vehicle.
+ ['WFBE_WESTPARACARGO','C130J',true] Call SetNamespace;
+
+ //--- Repair Truck model.
+ ['WFBE_WESTREPAIRTRUCK','MtvrRepair',true] Call SetNamespace;
+
+ //--- Starting Vehicles.
+ ['WFBE_WESTSTARTINGVEHICLES',['HMMWV_Ambulance','MTVR'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Ammunition.
+ ['WFBE_WESTPARAAMMO',['USBasicAmmunitionBox','USBasicWeaponsBox','USLaunchersBox'],true] Call SetNamespace;
+
+ //--- Supply Paradropping, Dropped Vehicle.
+ ['WFBE_WESTPARAVEHICARGO','HMMWV',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Vehicle.
+ ['WFBE_WESTPARAVEHI','MH60S',true] Call SetNamespace;
+
+ //--- Supply Paradropping, Parachute Model.
+ ['WFBE_WESTPARACHUTE','ParachuteMediumWest',true] Call SetNamespace;
+
+ //--- Supply Truck model.
+ ['WFBE_WESTSUPPLYTRUCK','WarfareSupplyTruck_USMC',true] Call SetNamespace;
+};
+
+if (local player) then {
+ //--- Default Faction (Buy Menu), this is the faction name defined in core_xxx.sqf files.
+ ['WFBE_WESTDEFAULTFACTION','USMC',true] Call SetNamespace;
+}; \ No newline at end of file
diff --git a/Common/Config/readme.txt b/Common/Config/readme.txt
new file mode 100644
index 0000000..b5fdfa5
--- /dev/null
+++ b/Common/Config/readme.txt
@@ -0,0 +1,38 @@
+### CORE SYSTEM GENERAL FACT:
+- Most of the core are defined from Init_Common.sqf
+- All units or weapons used HAVE TO be defined within Core or Core_Gear in order to be used properly.
+- Duplicated items or Wrong classname are not an issue as there is a protection in the core files.
+- arma2.rpt / arma2oa.rpt contains the results of the core system initialization after lauching the game, missing or faulty classes will be shown there.
+
+
+### CORE FOLDERS
+# Core:
+ Contains the Units definitions such as the label, the cost... Any new units shall be defined in this folder.
+
+# Core_Gear:
+ Contains the Loadout definitions such as the label, the cost... Any new weapons or magazine shall be defined in this folder.
+
+# Core_Loadout:
+ Contains the Loadout classname, gear menu weapons are defined there after being delcared in the "Core_Gear" folder.
+
+# Core_Units:
+ Contains the units classname, this folder is used depending on the gamemode to run (Vanilla, Arrowhead...),
+ if you want to add units in a factory, add the units classname here after declaring it in the "Core" folder.
+
+# Core_Squads:
+ This folder contains the AI Units Templates depending on the current running gamemode.
+
+# Core_Resistance:
+ This folder contains the AI Resistance Units templates to use depending on the current running gamemode.
+
+# Core_Occupation:
+ This folder contains the AI Occupation Units templates to use depending on the current running gamemode.
+
+# Core_Structures:
+ This folder contains the Structures used by both players and AI, the defenses are also included here.
+
+# Core_Artillery:
+ Contains the artillery definition per faction.
+
+# Core_Definition:
+ Contains the Team vs Team definition (CDF vs INS, US vs INS...). \ No newline at end of file
diff --git a/Common/Functions/Common_BackpackHasSpace.sqf b/Common/Functions/Common_BackpackHasSpace.sqf
new file mode 100644
index 0000000..7e90dd6
--- /dev/null
+++ b/Common/Functions/Common_BackpackHasSpace.sqf
@@ -0,0 +1,16 @@
+private ["_backpackHasRoom","_bp","_bpContent","_bpItem","_max","_space","_type"];
+_bp = _this select 0;
+_bpContent = _this select 1;
+_bpItem = _this select 2;
+
+_type = _bp;
+if (typeName _bp == 'OBJECT') then {_type = typeOf _bp};
+_max = getNumber(configFile >> 'CfgVehicles' >> _type >> 'transportMaxMagazines');
+
+_space = 0;
+for '_u' from 0 to count(_bpContent select 0)-1 do {
+ _space = _space + (ceil (getNumber(configFile >> 'CfgMagazines' >> ((_bpContent select 0) select _u) >> 'type') / 256)) * ((_bpContent select 1) select _u);
+};
+
+_backpackHasRoom = if ((ceil(getNumber(configFile >> 'CfgMagazines' >> _bpItem >> 'type') / 256)) + _space > _max) then {false} else {true};
+_backpackHasRoom \ No newline at end of file
diff --git a/Common/Functions/Common_BalanceInit.sqf b/Common/Functions/Common_BalanceInit.sqf
new file mode 100644
index 0000000..befed3b
--- /dev/null
+++ b/Common/Functions/Common_BalanceInit.sqf
@@ -0,0 +1,48 @@
+Private ["_unit"];
+_unit = _this select 0;
+
+switch (typeOf _unit) do {
+ case "HMMWV_Avenger": {
+ if (WF_A2_Vanilla) then {
+ _unit removeWeapon "SidewinderLaucher_AH1Z";
+ _unit removeWeapon "StingerLaucher";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addMagazine "2Rnd_Sidewinder_AH1Z";
+ _unit addWeapon "SidewinderLaucher_AH1Z";
+ };
+ };
+ case "M6_EP1": {
+ _unit removeWeapon "StingerLaucher_4x";
+ _unit addMagazine "8Rnd_9M311";
+ _unit addWeapon "9M311Laucher";
+ };
+ case "Ka52": {
+ _unit removeWeapon "AT9Launcher";
+ _unit removeWeapon "VikhrLauncher";
+ _unit addMagazine "4Rnd_AT9_Mi24P";
+ _unit addMagazine "4Rnd_AT9_Mi24P";
+ _unit addweapon "AT9Launcher";
+ _unit addMagazine "4Rnd_R73";
+ _unit addweapon "R73Launcher";
+ };
+ case "Ka52Black": {
+ _unit removeWeapon "AT9Launcher";
+ _unit removeWeapon "VikhrLauncher";
+ _unit addMagazine "4Rnd_AT9_Mi24P";
+ _unit addMagazine "4Rnd_AT9_Mi24P";
+ _unit addweapon "AT9Launcher";
+ _unit addMagazine "4Rnd_R73";
+ _unit addweapon "R73Launcher";
+ };
+ case "An2_TK_EP1": {
+ _unit addMagazine "500Rnd_TwinVickers";
+ _unit addMagazine "500Rnd_TwinVickers";
+ _unit addweapon "TwinVickers";
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_BuildingInRange.sqf b/Common/Functions/Common_BuildingInRange.sqf
new file mode 100644
index 0000000..49eb893
--- /dev/null
+++ b/Common/Functions/Common_BuildingInRange.sqf
@@ -0,0 +1,17 @@
+Private ['_buildings','_buildingType','_checks','_closest','_range','_side','_sorted','_unit'];
+_buildingType = _this select 0;
+_buildings = _this select 1;
+_range = _this select 2;
+_side = _this select 3;
+_unit = _this select 4;
+
+_closest = objNull;
+
+_checks = [_side,Format ["WFBE_%1%2",str _side,_buildingType] Call GetNamespace,_buildings] Call GetFactories;
+if (count _checks > 0) then {
+ _sorted = [_unit,_checks] Call SortByDistance;
+ _closest = _sorted select 0;
+ if (_unit distance _closest > _range) then {_closest = objNull};
+};
+
+_closest \ No newline at end of file
diff --git a/Common/Functions/Common_ChangeClientFunds.sqf b/Common/Functions/Common_ChangeClientFunds.sqf
new file mode 100644
index 0000000..17d840f
--- /dev/null
+++ b/Common/Functions/Common_ChangeClientFunds.sqf
@@ -0,0 +1,7 @@
+private ["_id","_side","_amount"];
+
+_amount = _this Select 0;
+_side = _this Select 1;
+_id = _this Select 2;
+
+Call Compile Format ["%1Funds%2 = %1Funds%2 + %3; publicVariable '%1Funds%2';",str _side,_id,_amount]; \ No newline at end of file
diff --git a/Common/Functions/Common_ChangeSideSupply.sqf b/Common/Functions/Common_ChangeSideSupply.sqf
new file mode 100644
index 0000000..6bcdc91
--- /dev/null
+++ b/Common/Functions/Common_ChangeSideSupply.sqf
@@ -0,0 +1,11 @@
+Private ['_amount','_change','_currentSupply','_side'];
+
+_side = _this select 0;
+_amount = _this select 1;
+
+_currentSupply = (_side) Call GetSideSupply;
+if (isNil '_currentSupply') then {_currentSupply = 0};
+_change = _currentSupply + _amount;
+if (_change < 0) then {_change = _currentSupply - _amount};
+
+WF_Logic setVariable [Format["%1Supplies",_side],_change,true]; \ No newline at end of file
diff --git a/Common/Functions/Common_ChangeTeamFunds.sqf b/Common/Functions/Common_ChangeTeamFunds.sqf
new file mode 100644
index 0000000..f0d8ef0
--- /dev/null
+++ b/Common/Functions/Common_ChangeTeamFunds.sqf
@@ -0,0 +1,8 @@
+Private['_amount','_team'];
+
+_team = _this select 0;
+_amount = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1Funds = %1Funds + _amount; publicVariable '%1Funds';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_CivilianKilled.sqf b/Common/Functions/Common_CivilianKilled.sqf
new file mode 100644
index 0000000..3086451
--- /dev/null
+++ b/Common/Functions/Common_CivilianKilled.sqf
@@ -0,0 +1,29 @@
+Private ["_killed","_killer","_killerTeam","_sideKiller"];
+_killed = _this select 0;
+_killer = _this select 1;
+_sideKiller = side _killer;
+_killerTeam = group _killer;
+
+//--- Renegade.
+if (_sideKiller == sideEnemy) then {
+ if (_killer isKindOf westSoldierBaseClass) then {_sideKiller = west};
+ if (_killer isKindOf eastSoldierBaseClass) then {_sideKiller = east};
+};
+
+//--- Benny's Garbage Collector.
+if (WF_A2_Vanilla) then {
+ trashQueu = trashQueu + [_killed];
+ _killed Spawn TrashObject;
+};
+
+sleep random(2)+random(4);
+
+//--- Civilian's death.
+if (!isNull _killerTeam && (_sideKiller == west) || (_sideKiller == east)) then {
+ if (isPlayer (leader _killerTeam)) then {
+ /* Penalty */
+ WFBE_Penalty = [vehicleVarName (leader _killerTeam),'CLTFNCPENALTY'];
+ publicVariable 'WFBE_Penalty';
+ if (isHostedServer) then {[vehicleVarName (leader _killerTeam),'CLTFNCPENALTY'] Spawn HandlePVF};
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_CreateUnit.sqf b/Common/Functions/Common_CreateUnit.sqf
new file mode 100644
index 0000000..8a42df6
--- /dev/null
+++ b/Common/Functions/Common_CreateUnit.sqf
@@ -0,0 +1,28 @@
+Private ["_get","_position","_side","_skill","_team","_type","_unit"];
+_type = _this select 0;
+_team = _this select 1;
+_position = _this select 2;
+_side = _this select 3;
+
+_get = _type Call GetNamespace;
+_skill = if !(isNil '_get') then {_get select QUERYUNITSKILL} else {'WFBE_AISKILL' Call GetNamespace};
+_unit = _team createUnit [_type,_position,[],0,"FORM"];
+_unit setSkill _skill;
+if (_side != resistance) then {
+ if (paramTrackAI) then {
+ _unit setVehicleInit Format["[this,%1] ExecVM 'Common\Common_InitUnit.sqf';",_side];
+ processInitCommands;
+ } else {
+ if (isPlayer leader _team) then {[_unit,_side] ExecVM 'Common\Common_InitUnit.sqf'};
+ };
+ Call Compile Format ["_unit addEventHandler ['Killed',{[_this select 0,_this select 1,%1] Spawn UnitKilled}];",_side];
+} else {
+ //--- Note To be optimized, 1.03 BIS BUG, cannot add resistance side via call compile format.
+ _unit addEventHandler ['Killed',{[_this select 0,_this select 1,resistance] Spawn UnitKilled}];
+};
+
+if (('WFBE_ISIS' Call GetNamespace) == 2) then {_unit addEventHandler['handleDamage',{_this Call ISIS_Wound}]};
+
+diag_log Format["[WFBE (INFORMATION)][frameno:%5 | ticktime:%6] Common_CreateUnit: A '%1' unit was created (position: %2) and has joined the %3 %4 Team",_type,_position,str _side,_team,diag_frameno,diag_tickTime];
+
+_unit \ No newline at end of file
diff --git a/Common/Functions/Common_CreateVehicle.sqf b/Common/Functions/Common_CreateVehicle.sqf
new file mode 100644
index 0000000..b110416
--- /dev/null
+++ b/Common/Functions/Common_CreateVehicle.sqf
@@ -0,0 +1,20 @@
+Private ["_lock","_position","_side","_type","_vehicle"];
+_type = _this select 0;
+_position = _this select 1;
+_side = _this select 2;
+_lock = _this select 3;
+
+_vehicle = _type createVehicle _position;
+if (_side != resistance) then {
+ _vehicle SetVehicleInit Format["[this,%1] ExecVM 'Common\Common_InitUnit.sqf';",_side];
+ ProcessInitCommands;
+ Call Compile Format ["_vehicle addEventHandler ['Killed',{[_this select 0,_this select 1,%1] Spawn UnitKilled}]",_side];
+} else {
+ //--- Note To be optimized, 1.03 BIS BUG, cannot add resistance side via call compile format? which still isn't fixed in OA 1.59...
+ _vehicle addEventHandler ["Killed",{[_this select 0,_this select 1,resistance] Spawn UnitKilled}];
+};
+_vehicle lock _lock;
+
+diag_log Format["[WFBE (INFORMATION)][frameno:%4 | ticktime:%5] Common_CreateVehicle: A %1 '%2' vehicle has been created (position: %3)",str _side,_type,_position,diag_frameno,diag_tickTime];
+
+_vehicle \ No newline at end of file
diff --git a/Common/Functions/Common_EquipArtillery.sqf b/Common/Functions/Common_EquipArtillery.sqf
new file mode 100644
index 0000000..fc1d315
--- /dev/null
+++ b/Common/Functions/Common_EquipArtillery.sqf
@@ -0,0 +1,19 @@
+Private ['_ammo','_currentUpgrades','_extMagUpgr','_i','_index','_side','_unit'];
+_unit = _this select 0;
+_index = _this select 1;
+_side = _this select 2;
+
+//--- Browse for extended Mags (WP, SADARM... )
+_ammo = (Format['WFBE_%1_ARTILLERY_EXTENDED_MAGS',_side] Call GetNamespace) select _index;
+if (count _ammo == 0) exitWith {};
+
+_extMagUpgr = Format['WFBE_%1_ARTILLERY_EXTENDED_MAGS_UPGRD',_side] Call GetNamespace;
+
+//--- Retrieve the Artillery upgrade level.
+_currentUpgrades = ((str _side) Call GetSideUpgrades) select 17;
+
+for [{_i = 0},{_i < count(_ammo)},{_i = _i + 1}] do {
+ if (_currentUpgrades >= ((_extMagUpgr select _index) select _i)) then {
+ _unit addMagazine (_ammo select _i);
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_EquipBackpack.sqf b/Common/Functions/Common_EquipBackpack.sqf
new file mode 100644
index 0000000..27293ef
--- /dev/null
+++ b/Common/Functions/Common_EquipBackpack.sqf
@@ -0,0 +1,9 @@
+private ["_bp","_bpItems"];
+_bp = _this select 0;
+_bpItems = _this select 1;
+
+clearMagazineCargo _bp;
+
+for '_u' from 0 to count(_bpItems select 0)-1 do {
+ _bp addMagazineCargo [(_bpItems select 0) select _u, (_bpItems select 1) select _u];
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_EquipLoadout.sqf b/Common/Functions/Common_EquipLoadout.sqf
new file mode 100644
index 0000000..d14b136
--- /dev/null
+++ b/Common/Functions/Common_EquipLoadout.sqf
@@ -0,0 +1,26 @@
+Private['_ammo','_unit','_use','_weapon','_weapons'];
+
+_unit = _this select 0;
+_weapons = _this select 1;
+_ammo = _this select 2;
+
+removeAllWeapons _unit;
+removeAllItems _unit;
+
+{_unit addMagazine _x} forEach _ammo;
+{_unit addWeapon _x} forEach _weapons;
+
+_use = primaryWeapon _unit;
+if (_use == "") then {
+ Private ["_kind"];
+ {
+ _kind = getNumber(configFile >> 'CfgWeapons' >> _x >> "type");
+ if (_kind in [1,2,4,5]) exitWith {_use = _x};
+ } forEach _weapons;
+};
+
+if (_use != "") then {
+ Private ["_muzzles"];
+ _muzzles = getArray (configFile >> "CfgWeapons" >> _use >> "muzzles");
+ if !("this" in _muzzles) then {_unit selectWeapon (_muzzles select 0)} else {_unit selectWeapon _use};
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_FireArtillery.sqf b/Common/Functions/Common_FireArtillery.sqf
new file mode 100644
index 0000000..87a8367
--- /dev/null
+++ b/Common/Functions/Common_FireArtillery.sqf
@@ -0,0 +1,65 @@
+Private["_ammo","_angle","_artillery","_burst","_destination","_dispersion","_direction","_distance","_FEH","_gunner","_i","_index","_minRange","_maxRange","_position","_radius","_reloadTime","_side","_type","_velocity","_watchPosition","_weapon","_xcoord","_ycoord"];
+
+_artillery = _this select 0;
+_destination = _this select 1;
+_side = _this select 2;
+_radius = _this select 3;
+_index = _this select 4;
+
+_gunner = gunner _artillery;
+if (_index == -1) exitWith {diag_log Format ["[WFBE (INFORMATION)][frameno:%2 | ticktime:%3] Common_FireArtillery.sqf: No artillery types were found for '%1'.",_artillery,diag_frameno,diag_tickTime]};
+if (isNull _gunner) exitWith {diag_log Format ["[WFBE (INFORMATION)][frameno:%2 | ticktime:%3] Common_FireArtillery.sqf: Artillery '%1' gunner is null.",_artillery,diag_frameno,diag_tickTime]};
+if (isPlayer _gunner) exitWith {diag_log Format ["[WFBE (INFORMATION)][frameno:%2 | ticktime:%3] Common_FireArtillery.sqf: Artillery '%1' gunner is player.",_artillery,diag_frameno,diag_tickTime]};
+
+_minRange = (Format ["WFBE_%1_ARTILLERY_MINRANGES",_side] Call GetNamespace) select _index;
+_maxRange = (Format ["WFBE_%1_ARTILLERY_MAXRANGES",_side] Call GetNamespace) select _index;
+_weapon = (Format ["WFBE_%1_ARTILLERY_WEAPONS",_side] Call GetNamespace) select _index;
+_ammo = (Format ["WFBE_%1_ARTILLERY_AMMOS",_side] Call GetNamespace) select _index;
+_velocity = (Format ["WFBE_%1_ARTILLERY_VELOCITIES",_side] Call GetNamespace) select _index;
+_dispersion = (Format ["WFBE_%1_ARTILLERY_DISPERSIONS",_side] Call GetNamespace) select _index;
+
+//--- Move function to global later on.
+if (local player) then {[_artillery] Call ARTY_Prep};
+
+//--- Artillery Calculations.
+_position = getPos _artillery;
+_xcoord = (_destination select 0) - (_position select 0);
+_ycoord = (_destination select 1) - (_position select 1);
+_direction = -(((_ycoord atan2 _xcoord) + 270) % 360);
+if (_direction < 0) then {_direction = _direction + 360};
+_distance = sqrt (((_xcoord ^ 2) + (_ycoord ^ 2))) - _minRange;
+_angle = _distance / (_maxRange - _minRange) * 100 + 15;
+if (_angle > 70) then {_angle = 70};
+if (_distance < 0 || _distance + _minRange > _maxRange) exitWith {};
+
+_FEH = Call Compile Format ["_artillery addEventHandler ['Fired',{[_this select 4,_this select 6,%1,%2,%3,%4,%5,%6,%7,%8,%9] Spawn HandleArtillery}];",_ammo,_destination,_velocity,_dispersion,getPos _artillery,_distance,_radius,_maxRange,sideJoinedText];
+
+{_gunner disableAI _x} forEach ['ANIM','MOVE','TARGET','AUTOTARGET'];
+_watchPosition = [_destination select 0, _destination select 1, (_artillery distance _destination)/(tan(90-_angle))];
+(_gunner) doWatch _watchPosition;
+
+sleep 10;
+if !(alive (_gunner)) exitWith {if !(isNull _artillery) then {_artillery removeEventHandler ['Fired',_FEH]}};
+if !(alive _artillery) exitWith {
+ if (alive (_gunner)) then {{_gunner enableAI _x} forEach ['ANIM','MOVE','TARGET','AUTOTARGET']};
+};
+
+_reloadTime = (Format ["WFBE_%1_ARTILLERY_RELOADTIME",_side] Call GetNamespace) select _index;
+_burst = (Format ["WFBE_%1_ARTILLERY_BURST",_side] Call GetNamespace) select _index;
+
+for [{_i = 0},{_i < _burst},{_i = _i + 1}] do {
+ sleep _reloadTime;
+ if (!alive (_gunner) || !alive _artillery) exitWith {};
+
+ _artillery fire _weapon;
+};
+
+sleep 1;
+
+if !(isNull _artillery) then {_artillery removeEventHandler ['Fired',_FEH]};
+
+sleep _reloadTime;
+
+if (alive (_gunner)) then {{_gunner enableAI _x} forEach ['ANIM','MOVE','TARGET','AUTOTARGET']};
+
+if (local player) then {[_artillery] Call ARTY_Finish}; \ No newline at end of file
diff --git a/Common/Functions/Common_GetAIDigit.sqf b/Common/Functions/Common_GetAIDigit.sqf
new file mode 100644
index 0000000..935b372
--- /dev/null
+++ b/Common/Functions/Common_GetAIDigit.sqf
@@ -0,0 +1,21 @@
+Private ["_i","_split","_unit","_yield"];
+
+_unit = _this;
+
+if (_unit == leader (group _unit)) exitWith {"Leader"};
+
+_split = toArray(str _unit);
+
+_find = _split find 58;
+_yield = [];
+
+if (_find != -1) then {
+ for '_i' from (_find+1) to count(_split)-1 do {
+ if ((_split select _i) == 65 || (_split select _i) == 32) exitWith {};
+ _yield = _yield + [_split select _i];
+ };
+};
+
+if (count _yield == 0) exitWith {"0"};
+
+toString(_yield) \ No newline at end of file
diff --git a/Common/Functions/Common_GetClientID.sqf b/Common/Functions/Common_GetClientID.sqf
new file mode 100644
index 0000000..54fc0c3
--- /dev/null
+++ b/Common/Functions/Common_GetClientID.sqf
@@ -0,0 +1,6 @@
+Private["_index"];
+
+_index = ('WFBE_EASTSLOTNAMES' Call GetNamespace) find (vehicleVarName _this);
+if (_index < 0) then {_index = ('WFBE_WESTSLOTNAMES' Call GetNamespace) find (vehicleVarName _this)};
+
+_index + 1 \ No newline at end of file
diff --git a/Common/Functions/Common_GetClientIDFromTeam.sqf b/Common/Functions/Common_GetClientIDFromTeam.sqf
new file mode 100644
index 0000000..dd732a7
--- /dev/null
+++ b/Common/Functions/Common_GetClientIDFromTeam.sqf
@@ -0,0 +1,11 @@
+Private ['_index','_team'];
+
+_team = _this;
+
+if (isNil '_team') exitWith {0};
+if (isNull _team) exitWith {0};
+
+_index = (Format["WFBE_%1TEAMS",str (side _team)] Call GetNamespace) find _team;
+if (_index < 0) exitWith {0};
+
+_index+1 \ No newline at end of file
diff --git a/Common/Functions/Common_GetClientTeam.sqf b/Common/Functions/Common_GetClientTeam.sqf
new file mode 100644
index 0000000..3212017
--- /dev/null
+++ b/Common/Functions/Common_GetClientTeam.sqf
@@ -0,0 +1,7 @@
+Private["_ID","_side","_team"];
+
+_side = _this Select 0;
+_ID = _this Select 1;
+
+_team = ((Format["WFBE_%1TEAMS",str _side]) Call GetNamespace) select (_ID - 1);
+_team \ No newline at end of file
diff --git a/Common/Functions/Common_GetClosestLocation.sqf b/Common/Functions/Common_GetClosestLocation.sqf
new file mode 100644
index 0000000..63b6c59
--- /dev/null
+++ b/Common/Functions/Common_GetClosestLocation.sqf
@@ -0,0 +1,5 @@
+Private["_object"];
+
+_object = _this select 0;
+
+([_object,towns] Call SortByDistance) select 0; \ No newline at end of file
diff --git a/Common/Functions/Common_GetClosestLocationBySide.sqf b/Common/Functions/Common_GetClosestLocationBySide.sqf
new file mode 100644
index 0000000..ec76f29
--- /dev/null
+++ b/Common/Functions/Common_GetClosestLocationBySide.sqf
@@ -0,0 +1,21 @@
+Private["_enemyTowns","_object","_nearest","_side"];
+
+_object = _this select 0;
+_side = _this select 1;
+_cvar = if (count _this > 2) then {_this select 2} else {""};
+
+_enemyTowns = towns - ((_side) Call GetSideTowns);
+_nearest = objNull;
+
+if (count _enemyTowns > 0) then {
+ _nearests = [_object,_enemyTowns] Call SortByDistance;
+ if (_cvar != "") then {
+ for '_i' from 0 to count(_nearests)-1 do {
+ if ((_nearests select _i) getVariable _cvar) exitWith{_nearest = (_nearests select _i)};
+ };
+ } else {
+ _nearest = _nearests select 0;
+ }
+};
+
+_nearest \ No newline at end of file
diff --git a/Common/Functions/Common_GetCommanderFromVotes.sqf b/Common/Functions/Common_GetCommanderFromVotes.sqf
new file mode 100644
index 0000000..c0210f6
--- /dev/null
+++ b/Common/Functions/Common_GetCommanderFromVotes.sqf
@@ -0,0 +1,36 @@
+Private["_AI","_commander","_count","_highest","_highestTeam","_side","_teams","_tie","_total","_vote","_votes"];
+
+_side = _this Select 0;
+
+_AI = 0;
+_teams = (Format["WFBE_%1TEAMS",str _side] Call GetNamespace);
+_total = Count _teams;
+
+_votes = [];
+for [{_count = 0},{_count < _total},{_count = _count + 1}] do {_votes = _votes + [0]};
+
+//Count votes.
+for [{_count = 0},{_count < _total},{_count = _count + 1}] do {
+ if (isPlayer (leader (_teams Select _count))) then {
+ _vote = Call Compile Format ["%1Team%2Vote",Str _side,_count + 1];
+ if (_vote != -1) then {
+ _votes Set[_vote,(_votes Select _vote) + 1];
+ } else {
+ _AI = _AI + 1;
+ };
+ };
+};
+
+_count = 0;
+_highest = 0;
+_highestTeam = -1;
+_tie = false;
+{if (_x == _highest && _x > 0) then {_tie = true};if (_x > _highest) then {_highestTeam = _count;_highest = _x;_tie = false};_count = _count + 1} ForEach _votes;
+
+_commander = ObjNull;
+
+if (!_tie && _highest > _AI && _highestTeam != -1) then {
+ _commander = _teams select _highestTeam;
+};
+
+_commander \ No newline at end of file
diff --git a/Common/Functions/Common_GetCommanderTeam.sqf b/Common/Functions/Common_GetCommanderTeam.sqf
new file mode 100644
index 0000000..7de4fec
--- /dev/null
+++ b/Common/Functions/Common_GetCommanderTeam.sqf
@@ -0,0 +1,7 @@
+Private ["_cmdrTeam","_side"];
+_side = _this;
+
+_cmdrTeam = WF_Logic getVariable Format ["%1CommanderTeam",str _side];
+if (isNil "_cmdrTeam") then {_cmdrTeam = objNull};
+
+_cmdrTeam \ No newline at end of file
diff --git a/Common/Functions/Common_GetCommanderVotes.sqf b/Common/Functions/Common_GetCommanderVotes.sqf
new file mode 100644
index 0000000..054f363
--- /dev/null
+++ b/Common/Functions/Common_GetCommanderVotes.sqf
@@ -0,0 +1,19 @@
+Private["_count","_side","_teams","_total","_vote","_votes"];
+
+_side = _this Select 0;
+
+_teams = (Format["WFBE_%1TEAMS",str _side] Call GetNamespace);
+_total = Count _teams + 1;
+
+_votes = [];
+for [{_count = 0},{_count < _total},{_count = _count + 1}] do {_votes = _votes + [0]};
+
+//Count votes.
+for [{_count = 1},{_count < _total},{_count = _count + 1}] do {
+ if (isPlayer (leader (_teams Select (_count - 1)))) then {
+ _vote = (Call Compile Format ["%1Team%2Vote",Str _side,_count]) + 1;
+ _votes Set[_vote,(_votes Select _vote) + 1];
+ };
+};
+
+_votes
diff --git a/Common/Functions/Common_GetConfigInfo.sqf b/Common/Functions/Common_GetConfigInfo.sqf
new file mode 100644
index 0000000..ce83cad
--- /dev/null
+++ b/Common/Functions/Common_GetConfigInfo.sqf
@@ -0,0 +1,8 @@
+Private ['_element','_from','_object'];
+_object = _this select 0;
+_element = _this select 1;
+_from = if (count _this > 2) then {_this select 2} else {'CfgVehicles'};
+
+if (typeName _object == 'OBJECT') then {_object = typeOf(_object)};
+
+getText (configFile >> _from >> _object >> _element) \ No newline at end of file
diff --git a/Common/Functions/Common_GetConfigVehicleCrewSlot.sqf b/Common/Functions/Common_GetConfigVehicleCrewSlot.sqf
new file mode 100644
index 0000000..6039ff7
--- /dev/null
+++ b/Common/Functions/Common_GetConfigVehicleCrewSlot.sqf
@@ -0,0 +1,21 @@
+/* Adapted from BIS turret's function. */
+private ['_entry','_turrestcount','_turrets'];
+_entry = configFile >> 'CfgVehicles' >> _this >> 'Turrets';
+
+vhasCommander = false;
+vhasGunner = false;
+_turrets = [_entry] Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleTurretsReturn.sqf";
+
+tmp_overall = [];
+
+if (count _turrets > 0) then {
+ [_turrets, []] Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleTurrets.sqf";
+};
+
+_turrestcount = count(tmp_overall);
+if (vhasGunner) then {_turrestcount = _turrestcount - 1};
+if (vhasCommander) then {_turrestcount = _turrestcount - 1};
+
+// diag_log format ["%1 %2",_entry,tmp_overall];
+
+[[vhasCommander,vhasGunner,count(tmp_overall)+1,_turrestcount], tmp_overall] \ No newline at end of file
diff --git a/Common/Functions/Common_GetConfigVehicleTurrets.sqf b/Common/Functions/Common_GetConfigVehicleTurrets.sqf
new file mode 100644
index 0000000..f060f7a
--- /dev/null
+++ b/Common/Functions/Common_GetConfigVehicleTurrets.sqf
@@ -0,0 +1,16 @@
+private ["_turrets", "_i", "_path"];
+_turrets = _this select 0;
+_path = _this select 1;
+_i = 0;
+
+while {_i < (count _turrets)} do {
+ private ["_turretIndex", "_thisTurret"];
+ _turretIndex = _turrets select _i;
+ _thisTurret = _path + [_turretIndex];
+
+ tmp_overall = tmp_overall + [_thisTurret];
+
+ [([_turrets select (_i + 1), _thisTurret] Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleTurrets.sqf")];
+
+ _i = _i + 2;
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_GetConfigVehicleTurretsReturn.sqf b/Common/Functions/Common_GetConfigVehicleTurretsReturn.sqf
new file mode 100644
index 0000000..c0901d5
--- /dev/null
+++ b/Common/Functions/Common_GetConfigVehicleTurretsReturn.sqf
@@ -0,0 +1,54 @@
+if ((count _this) < 1) exitWith {debugLog "Log: [returnVehicleTurrets] Function requires at least 1 parameter!"; []};
+
+private ["_entry"];
+_entry = _this select 0;
+
+//Validate parameters
+if ((typeName _entry) != (typeName configFile)) exitWith {debugLog "Log: [returnVehicleTurrets] Entry (0) must be a Config!"; []};
+
+private ["_turrets", "_turretIndex"];
+_turrets = [];
+_turretIndex = 0;
+
+//Explore all turrets and sub-turrets recursively.
+for "_i" from 0 to ((count _entry) - 1) do
+{
+ private ["_subEntry"];
+ _subEntry = _entry select _i;
+
+ if (isClass _subEntry) then
+ {
+ private ["_hasGunner","_isset","_pcom","_pgun"];
+ _hasGunner = [_subEntry, "hasGunner"] Call BIS_fnc_returnConfigEntry;
+
+ _pgun = [_subEntry, "primaryGunner"] Call BIS_fnc_returnConfigEntry;
+ _pcom = [_subEntry, "primaryObserver"] Call BIS_fnc_returnConfigEntry;
+
+ _isset = false;
+ if (_pgun == 1 && !vhasGunner) then {vhasGunner = true;_isset = true};
+ if (_pcom == 1 && !vhasCommander && !_isset) then {vhasCommander = true};
+
+ //Make sure the entry was found.
+ if !(isNil "_hasGunner") then
+ {
+ if (_hasGunner == 1) then
+ {
+ _turrets = _turrets + [_turretIndex];
+
+ //Include sub-turrets, if present.
+ if (isClass (_subEntry >> "Turrets")) then
+ {
+ _turrets = _turrets + [[_subEntry >> "Turrets"] Call Compile preprocessFile "Common\Functions\Common_GetConfigVehicleTurretsReturn.sqf"];
+ }
+ else
+ {
+ _turrets = _turrets + [[]];
+ };
+ };
+ };
+
+ _turretIndex = _turretIndex + 1;
+ };
+};
+
+_turrets \ No newline at end of file
diff --git a/Common/Functions/Common_GetFactories.sqf b/Common/Functions/Common_GetFactories.sqf
new file mode 100644
index 0000000..39c7ffc
--- /dev/null
+++ b/Common/Functions/Common_GetFactories.sqf
@@ -0,0 +1,10 @@
+Private ["_buildings","_kind","_list","_side","_type"];
+_side = _this select 0;
+_kind = _this select 1;
+_buildings = _this select 2;
+
+_list = [];
+_type = (Format["WFBE_%1STRUCTURENAMES",str _side] Call GetNamespace) select _kind;
+{if (typeOf _x == _type && alive _x) then {_list = _list + [_x]}} forEach _buildings;
+
+_list \ No newline at end of file
diff --git a/Common/Functions/Common_GetFriendlyCamps.sqf b/Common/Functions/Common_GetFriendlyCamps.sqf
new file mode 100644
index 0000000..cebe329
--- /dev/null
+++ b/Common/Functions/Common_GetFriendlyCamps.sqf
@@ -0,0 +1,14 @@
+private ["_camps","_friendlyCamps","_side","_sideID","_town"];
+
+_town = _this Select 0;
+_side = _this Select 1;
+
+_sideID = _side Call GetSideID;
+_camps = _town getVariable "camps";
+_friendlyCamps = [];
+
+{
+ if ((_x getVariable "sideID") == _sideID) then {_friendlyCamps = _friendlyCamps + [_x]};
+} forEach _camps;
+
+_friendlyCamps \ No newline at end of file
diff --git a/Common/Functions/Common_GetGroupFromConfig.sqf b/Common/Functions/Common_GetGroupFromConfig.sqf
new file mode 100644
index 0000000..5427057
--- /dev/null
+++ b/Common/Functions/Common_GetGroupFromConfig.sqf
@@ -0,0 +1,23 @@
+Private ['_config','_faction','_group','_kind','_side','_type'];
+_side = _this select 0;
+_faction = _this select 1;
+_kind = _this select 2;
+_type = _this select 3;
+
+_config = configFile >> "CfgGroups" >> _side >> _faction >> _kind >> _type;
+_group = [];
+
+if (isClass _config) then {
+ for "_j" from 0 to ((count _config) - 1) do {
+ private ["_mclass"];
+ _mclass = _config select _j;
+
+ if (isClass (_mclass)) then {
+ _group = _group + [getText(_mclass >> "vehicle")];
+ };
+ };
+} else {
+ diag_log Format ["[WFBE (ERROR)][frameno:%1 | ticktime:%2] Common_GetGroupFromConfig: Entry (configFile >> 'CfgGroups' >> '%3' >> '%4' >> '%5' >> '%6') is not a valid group config.",diag_frameno,diag_tickTime,_side,_faction,_kind,_type];
+};
+
+_group \ No newline at end of file
diff --git a/Common/Functions/Common_GetHostilesInArea.sqf b/Common/Functions/Common_GetHostilesInArea.sqf
new file mode 100644
index 0000000..eef2647
--- /dev/null
+++ b/Common/Functions/Common_GetHostilesInArea.sqf
@@ -0,0 +1,18 @@
+Private ['_hostiles','_object','_objects','_safeFromSide','_within'];
+_object = _this select 0;
+_safeFromSide = _this select 1;
+_within = if (count _this > 2) then {_this select 2} else {50};
+
+_objects = _object nearEntities[[eastSoldierBaseClass,westSoldierBaseClass,resistanceSoldierBaseClass,"Car","Motorcycle","Tank","Air"],_within];
+_hostiles = 0;
+
+if (typeName _safeFromSide == 'ARRAY') then {
+ {
+ _hostiles = _hostiles + (_x countSide _objects);
+ } forEach _safeFromSide;
+};
+if (typeName _safeFromSide == 'SIDE') then {
+ _hostiles = _hostiles + (_safeFromSide countSide _objects);
+};
+
+_hostiles \ No newline at end of file
diff --git a/Common/Functions/Common_GetLiveUnits.sqf b/Common/Functions/Common_GetLiveUnits.sqf
new file mode 100644
index 0000000..5909c82
--- /dev/null
+++ b/Common/Functions/Common_GetLiveUnits.sqf
@@ -0,0 +1,8 @@
+Private["_liveUnits","_units"];
+
+_units = _this;
+
+_liveUnits = [];
+
+{if (alive _x) then {_liveUnits = _liveUnits + [_x]}} forEach _units;
+_liveUnits
diff --git a/Common/Functions/Common_GetNameSpace.sqf b/Common/Functions/Common_GetNameSpace.sqf
new file mode 100644
index 0000000..589da00
--- /dev/null
+++ b/Common/Functions/Common_GetNameSpace.sqf
@@ -0,0 +1,5 @@
+Private ['_variable'];
+
+_variable = _this;
+
+missionNamespace getVariable _variable \ No newline at end of file
diff --git a/Common/Functions/Common_GetPositionFrom.sqf b/Common/Functions/Common_GetPositionFrom.sqf
new file mode 100644
index 0000000..a695b6b
--- /dev/null
+++ b/Common/Functions/Common_GetPositionFrom.sqf
@@ -0,0 +1,11 @@
+private ["_distance","_direction","_position"];
+
+_position = _this Select 0;
+if (TypeName _position != "ARRAY") then {_position = Position _position};
+
+_distance = _this Select 1;
+
+_direction = _this Select 2;
+if (TypeName _direction != "SCALAR") then {_direction = [_position,_direction] Call GetDirTo};
+
+[(_position Select 0)+((sin _direction)*_distance),(_position Select 1)+((cos _direction)*_distance),(_position Select 2)] \ No newline at end of file
diff --git a/Common/Functions/Common_GetRandomPosition.sqf b/Common/Functions/Common_GetRandomPosition.sqf
new file mode 100644
index 0000000..a5e41ea
--- /dev/null
+++ b/Common/Functions/Common_GetRandomPosition.sqf
@@ -0,0 +1,12 @@
+Private["_position","_radius","_direction","_maxRadius","_minRadius"];
+
+_position = _this select 0;
+_minRadius = _this select 1;
+_maxRadius = _this select 2;
+_direction = random 360;
+
+_radius = (random (_maxRadius - _minRadius)) + _minRadius;
+_position = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),(_position select 2)];
+while {surfaceIsWater _position}do {_direction = random 360;_radius = (random (_maxRadius - _minRadius)) + _minRadius;_position = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),(_position select 2)]};
+
+_position \ No newline at end of file
diff --git a/Common/Functions/Common_GetRespawnCamps.sqf b/Common/Functions/Common_GetRespawnCamps.sqf
new file mode 100644
index 0000000..4c8f2ed
--- /dev/null
+++ b/Common/Functions/Common_GetRespawnCamps.sqf
@@ -0,0 +1,14 @@
+Private ['_availableSpawn','_camps','_closestCamp','_deathLoc','_enemySide','_get','_hostiles','_nearestCamps','_respawnCampsMode','_respawnCampsRuleMode','_respawnMinRange','_side','_town','_townSID'],; _deathLoc = _this select 0;
+_side = _this select 1;
+_availableSpawn = [];
+_respawnCampsMode = 'WFBE_RESPAWNCAMPSMODE' Call GetNamespace;
+_respawnCampsRuleMode = 'WFBE_RESPAWNCAMPSRULEMODE' Call GetNamespace;
+_respawnMinRange = 'WFBE_RESPAWNMINRANGE' Call GetNamespace;
+
+ switch (_respawnCampsMode) do { case 1: { /* Classic Respawn */ _town = [_deathLoc] Call GetClosestLocation; if !(isNull _town) then { if (_town distance _deathLoc < ('WFBE_RESPAWNRANGE' Call GetNamespace)) then { _camps = [_town,_side] Call GetFriendlyCamps; if (count _camps > 0) then { if (_respawnCampsRuleMode > 0) then { _closestCamp = ([_deathLoc,_camps] Call SortByDistance) select 0; _enemySide = if (_side == west) then {[east]} else {[west]}; if (_respawnCampsRuleMode == 2) then {_enemySide = _enemySide + [resistance]}; _hostiles = [_closestCamp,_enemySide,_respawnMinRange] Call GetHostilesInArea; if (_deathLoc distance _closestCamp < _respawnMinRange && _hostiles > 0) then {_camps = _camps - [_closestCamp]}; }; _availableSpawn = _availableSpawn + _camps; }; };
+ };
+ };
+ case 2: { /* Enhanced Respawn - Get the camps around the unit */ _nearestCamps = nearestObjects [_deathLoc, WFCAMP, ('WFBE_RESPAWNRANGE' Call GetNamespace)]; { _get = _x getVariable 'sideID'; if !(isNil '_get') then { if ((_side Call GetSideID) == _get) then { if (_respawnCampsRuleMode > 0) then { if (_deathLoc distance _x < _respawnMinRange) then { _enemySide = if (_side == west) then {[east]} else {[west]}; if (_respawnCampsRuleMode == 2) then {_enemySide = _enemySide + [resistance]}; _hostiles = [_x,_enemySide,_respawnMinRange] Call GetHostilesInArea; if (_hostiles == 0) then {_availableSpawn = _availableSpawn + [_x]}; } else { _availableSpawn = _availableSpawn + [_x]; }; } else { _availableSpawn = _availableSpawn + [_x]; }; }; }; } forEach _nearestCamps; }; case 3: { /* Defender Only Respawn - Get the camps around the unit only if the town is friendly to the unit. */ _nearestCamps = nearestObjects [_deathLoc, WFCAMP, ('WFBE_RESPAWNRANGE' Call GetNamespace)]; { _get = _x getVariable 'sideID'; if !(isNil '_get') then { _town = _x getVariable 'town'; _townSID = _town getVariable 'sideID'; if ((_side Call GetSideID) == _townSID && _get == _townSID) then {
+ if (_respawnCampsRuleMode > 0) then { if (_deathLoc distance _x < _respawnMinRange) then { _enemySide = if (_side == west) then {[east]} else {[west]}; if (_respawnCampsRuleMode == 2) then {_enemySide = _enemySide + [resistance]}; _hostiles = [_x,_enemySide,_respawnMinRange] Call GetHostilesInArea; if (_hostiles == 0) then {_availableSpawn = _availableSpawn + [_x]}; } else { _availableSpawn = _availableSpawn + [_x]; }; } else { _availableSpawn = _availableSpawn + [_x]; }; }; }; } forEach _nearestCamps; }; };
+
+/* Return the available camps */ _availableSpawn \ No newline at end of file
diff --git a/Common/Functions/Common_GetSafePlace.sqf b/Common/Functions/Common_GetSafePlace.sqf
new file mode 100644
index 0000000..fe0024c
--- /dev/null
+++ b/Common/Functions/Common_GetSafePlace.sqf
@@ -0,0 +1,27 @@
+Private["_count","_currentPosition","_direction","_obstacles","_placed","_position","_radius","_retPos","_vehicles"];
+scopeName "PlaceSafe";
+
+_position = _this select 0;
+_radius = if (count _this > 1) then {_this select 1} else {35};
+_retPos = [];
+
+_currentPosition = _position;
+_placed = false;
+_direction = 0;
+
+for [{_count = 0},{_count < 30 && !_placed},{_count = _count + 1}] do {
+ _obstacles = nearestObjects [_currentPosition, ["Building"], 15];
+ _vehicles = _currentPosition nearEntities [["Building","Car","Tank","Air"], 7];
+
+ if (count _obstacles > 0 || count _vehicles > 0 || surfaceIsWater _currentPosition) then {
+ _currentPosition = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),0];
+ _direction = _direction + 36;
+ if (_count > 15) then {_radius = _radius + 25};
+ } else {
+ _retPos = _currentPosition;
+ _placed = true;
+ breakTo "PlaceSafe";
+ };
+};
+
+_retPos \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideFromID.sqf b/Common/Functions/Common_GetSideFromID.sqf
new file mode 100644
index 0000000..3d549b7
--- /dev/null
+++ b/Common/Functions/Common_GetSideFromID.sqf
@@ -0,0 +1,7 @@
+Private["_side"];
+
+_side = Resistance;
+if (_this == EASTID) then {_side = East};
+if (_this == WESTID) then {_side = West};
+
+_side \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideHQ.sqf b/Common/Functions/Common_GetSideHQ.sqf
new file mode 100644
index 0000000..6c1fab8
--- /dev/null
+++ b/Common/Functions/Common_GetSideHQ.sqf
@@ -0,0 +1 @@
+Call Compile Format ["%1MHQ",_this] \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideHQDeployed.sqf b/Common/Functions/Common_GetSideHQDeployed.sqf
new file mode 100644
index 0000000..9b06dbd
--- /dev/null
+++ b/Common/Functions/Common_GetSideHQDeployed.sqf
@@ -0,0 +1 @@
+Call Compile Format ["%1MHQDeployed",_this] \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideID.sqf b/Common/Functions/Common_GetSideID.sqf
new file mode 100644
index 0000000..a7b2053
--- /dev/null
+++ b/Common/Functions/Common_GetSideID.sqf
@@ -0,0 +1,7 @@
+Private["_ID"];
+
+_ID = RESISTANCEID;
+if (_this == east) then {_ID = EASTID};
+if (_this == west) then {_ID = WESTID};
+
+_ID \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideStructures.sqf b/Common/Functions/Common_GetSideStructures.sqf
new file mode 100644
index 0000000..50a503f
--- /dev/null
+++ b/Common/Functions/Common_GetSideStructures.sqf
@@ -0,0 +1 @@
+Call Compile Format ["%1BaseStructures",_this] \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideSupply.sqf b/Common/Functions/Common_GetSideSupply.sqf
new file mode 100644
index 0000000..a23b240
--- /dev/null
+++ b/Common/Functions/Common_GetSideSupply.sqf
@@ -0,0 +1 @@
+WF_Logic getVariable Format["%1Supplies",_this] \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideTowns.sqf b/Common/Functions/Common_GetSideTowns.sqf
new file mode 100644
index 0000000..211ce4c
--- /dev/null
+++ b/Common/Functions/Common_GetSideTowns.sqf
@@ -0,0 +1,10 @@
+Private ['_sideID','_towns'];
+
+_sideID = (_this) Call GetSideID;
+_towns = [];
+
+{
+ if ((_x getVariable 'sideID') == _sideID) then {_towns = _towns + [_x]};
+} forEach towns;
+
+_towns \ No newline at end of file
diff --git a/Common/Functions/Common_GetSideUpgrades.sqf b/Common/Functions/Common_GetSideUpgrades.sqf
new file mode 100644
index 0000000..dab2428
--- /dev/null
+++ b/Common/Functions/Common_GetSideUpgrades.sqf
@@ -0,0 +1 @@
+Call Compile Format ["%1Upgrades",_this] \ No newline at end of file
diff --git a/Common/Functions/Common_GetSleepFPS.sqf b/Common/Functions/Common_GetSleepFPS.sqf
new file mode 100644
index 0000000..82b5bc4
--- /dev/null
+++ b/Common/Functions/Common_GetSleepFPS.sqf
@@ -0,0 +1,11 @@
+Private ["_delay"];
+
+_delay = _this;
+
+if (diag_fps > 15) exitWith {_delay};
+if (diag_fps <= 15 && diag_fps > 10) exitWith {_delay * 0.85};
+if (diag_fps <= 10 && diag_fps > 7) exitWith {_delay * 0.75};
+if (diag_fps <= 7 && diag_fps > 5) exitWith {_delay * 0.70};
+if (diag_fps <= 5) exitWith {_delay * 0.50};
+
+_delay \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamArtillery.sqf b/Common/Functions/Common_GetTeamArtillery.sqf
new file mode 100644
index 0000000..3bc97d7
--- /dev/null
+++ b/Common/Functions/Common_GetTeamArtillery.sqf
@@ -0,0 +1,32 @@
+Private["_artillery","_artyTypes","_artyWeapons","_count","_ignoreAmmo","_index","_position","_search","_side","_team","_units","_vehicle","_weapon","_x","_y"];
+
+_team = _this select 0;
+_ignoreAmmo = _this select 1;
+_index = _this select 2;
+_side = _this select 3;
+
+if (_index < 0) exitWith {[]};
+
+_units = units _team;
+_artyTypes = (Format ["WFBE_%1_ARTILLERY_NAMES",_side] Call GetNamespace) select _index;
+_artyWeapons = Format ["WFBE_%1_ARTILLERY_WEAPONS",_side] Call GetNamespace;
+
+_artillery = [];
+
+{
+ _vehicle = vehicle _x;
+
+ if (typeOf(_vehicle) in _artyTypes) then {
+ if (!(isNull(gunner _vehicle)) && !(_vehicle in _artillery) && !(isPlayer(gunner _vehicle))) then {
+ if !(isPlayer(gunner _vehicle)) then {
+ _weapon = _artyWeapons select _index;
+
+ if (_ignoreAmmo || (_vehicle ammo _weapon > 0)) then {
+ _artillery = _artillery + [_vehicle];
+ };
+ };
+ };
+ };
+} forEach _units;
+
+_artillery \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamAutonomous.sqf b/Common/Functions/Common_GetTeamAutonomous.sqf
new file mode 100644
index 0000000..9c14c75
--- /dev/null
+++ b/Common/Functions/Common_GetTeamAutonomous.sqf
@@ -0,0 +1,3 @@
+if (isNull _this) exitWith {false};
+
+Call Compile Format ["%1Autonomous",_this getVariable 'identification'] \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamFunds.sqf b/Common/Functions/Common_GetTeamFunds.sqf
new file mode 100644
index 0000000..a203147
--- /dev/null
+++ b/Common/Functions/Common_GetTeamFunds.sqf
@@ -0,0 +1,7 @@
+Private ["_funds"];
+
+if (isNull _this) exitWith {0};
+
+_funds = Call Compile Format ["%1Funds",_this getVariable 'identification'];
+if (isNil '_funds') exitWith {0};
+_funds \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamMoveMode.sqf b/Common/Functions/Common_GetTeamMoveMode.sqf
new file mode 100644
index 0000000..5860877
--- /dev/null
+++ b/Common/Functions/Common_GetTeamMoveMode.sqf
@@ -0,0 +1,3 @@
+if (isNull _this) exitWith {"towns"};
+
+Call Compile Format ["%1MoveMode",_this getVariable 'identification'] \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamMovePos.sqf b/Common/Functions/Common_GetTeamMovePos.sqf
new file mode 100644
index 0000000..c54ea5e
--- /dev/null
+++ b/Common/Functions/Common_GetTeamMovePos.sqf
@@ -0,0 +1,3 @@
+if (isNull _this) exitWith {[0,0,0]};
+
+Call Compile Format ["%1MovePos",_this getVariable 'identification'] \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamRespawn.sqf b/Common/Functions/Common_GetTeamRespawn.sqf
new file mode 100644
index 0000000..4625e2a
--- /dev/null
+++ b/Common/Functions/Common_GetTeamRespawn.sqf
@@ -0,0 +1,3 @@
+if (isNull _this) exitWith {""};
+
+Call Compile Format ["%1Respawn",_this getVariable 'identification'] \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamType.sqf b/Common/Functions/Common_GetTeamType.sqf
new file mode 100644
index 0000000..66932c1
--- /dev/null
+++ b/Common/Functions/Common_GetTeamType.sqf
@@ -0,0 +1,3 @@
+if (isNull _this) exitWith {0};
+
+Call Compile Format ["%1Types",_this getVariable 'identification'] \ No newline at end of file
diff --git a/Common/Functions/Common_GetTeamVehicles.sqf b/Common/Functions/Common_GetTeamVehicles.sqf
new file mode 100644
index 0000000..713fe89
--- /dev/null
+++ b/Common/Functions/Common_GetTeamVehicles.sqf
@@ -0,0 +1,30 @@
+private ["_canMove","_crew","_ignoreOwnerConflict","_member","_ownerConflict","_range","_team","_teamVehicles","_units","_vehicle"];
+
+_team = _this select 0;
+_canMove = _this select 1;
+
+_member = objNull;
+_range = 150;
+if (count _this > 2) then {_member = _this select 2};
+if (count _this > 3) then {_range = _this select 3};
+
+_ignoreOwnerConflict = false;
+if (count _this > 4) then {_ignoreOwnerConflict = _this select 4};
+
+_teamVehicles = [];
+_units = units _team;
+
+ {
+ _vehicle = vehicle _x;
+
+ if (_x != _vehicle && !(_vehicle in _teamVehicles)) then {_teamVehicles = _teamVehicles + [_vehicle]};
+ if (_canMove && !canMove _vehicle) then {_teamVehicles = _teamVehicles - [_vehicle]};
+ if (!IsNull _member && _member distance _vehicle > _range) then {_teamVehicles = _teamVehicles - [_vehicle]};
+
+ _ownerConflict = false;
+ _crew = crew _vehicle;
+ {if (_x != leader _team && isPlayer _x) then {_ownerConflict = true}} forEach _crew;
+ if (!_ignoreOwnerConflict && _ownerConflict) then {_teamVehicles = _teamVehicles - [_vehicle]};
+ } forEach _units;
+
+_teamVehicles \ No newline at end of file
diff --git a/Common/Functions/Common_GetTotalCamps.sqf b/Common/Functions/Common_GetTotalCamps.sqf
new file mode 100644
index 0000000..407dbf6
--- /dev/null
+++ b/Common/Functions/Common_GetTotalCamps.sqf
@@ -0,0 +1,7 @@
+Private ['_camps'];
+
+_camps = _this getVariable "camps";
+if (isNil '_camps') exitWith {1};
+if (count _camps == 0) exitWith {1};
+
+count _camps \ No newline at end of file
diff --git a/Common/Functions/Common_GetTotalCampsOnSide.sqf b/Common/Functions/Common_GetTotalCampsOnSide.sqf
new file mode 100644
index 0000000..10619dc
--- /dev/null
+++ b/Common/Functions/Common_GetTotalCampsOnSide.sqf
@@ -0,0 +1,15 @@
+Private["_camps","_side","_sideID","_total","_town"];
+
+_town = _this select 0;
+_side = _this select 1;
+
+_sideID = _side Call GetSideID;
+
+_camps = _town getVariable "camps";
+if (isNil '_camps') exitWith {1};
+if (count _camps == 0) exitWith {1};
+_total = 0;
+
+{if ((_x getVariable "sideID") == _sideID) then {_total = _total + 1}} forEach _camps;
+
+_total \ No newline at end of file
diff --git a/Common/Functions/Common_GetTotalSupplyValue.sqf b/Common/Functions/Common_GetTotalSupplyValue.sqf
new file mode 100644
index 0000000..2504011
--- /dev/null
+++ b/Common/Functions/Common_GetTotalSupplyValue.sqf
@@ -0,0 +1,13 @@
+Private["_side","_sideID","_totalSupply"];
+
+_side = _this;
+_sideID = _side Call GetSideID;
+_totalSupply = 0;
+
+{
+ if ((_x getVariable "sideID") == _sideID) then {
+ _totalSupply = _totalSupply + (_x getVariable "supplyValue");
+ };
+} forEach towns;
+
+_totalSupply \ No newline at end of file
diff --git a/Common/Functions/Common_GetTownsHeld.sqf b/Common/Functions/Common_GetTownsHeld.sqf
new file mode 100644
index 0000000..e992252
--- /dev/null
+++ b/Common/Functions/Common_GetTownsHeld.sqf
@@ -0,0 +1,8 @@
+private ["_held","_sideID"];
+
+_held = 0;
+_sideID = _this Call GetSideID;
+
+{if ((_x getVariable 'sideID') == _sideID) then {_held = _held + 1}} forEach towns;
+
+_held \ No newline at end of file
diff --git a/Common/Functions/Common_GetTownsIncome.sqf b/Common/Functions/Common_GetTownsIncome.sqf
new file mode 100644
index 0000000..df5bf43
--- /dev/null
+++ b/Common/Functions/Common_GetTownsIncome.sqf
@@ -0,0 +1,18 @@
+Private ["_income","_incomeCoef","_incomeSystem","_side"];
+_side = (_this) Call GetSideID;
+
+_income = 0;
+_incomeSystem = 'WFBE_INCOMESYSTEM' Call GetNamespace;
+_incomeCoef = 0;
+if (_incomeSystem == 3) then {_incomeCoef = 'WFBE_INC_COEFFICIENT' Call GetNamespace};
+
+{
+ if ((_x getVariable "sideID") == _side) then {
+ switch (_incomeSystem) do {
+ case 3: {_income = _income + ((_x getVariable "supplyValue")*_incomeCoef)};
+ default {_income = _income + (_x getVariable "supplyValue")};
+ };
+ };
+} forEach towns;
+
+_income \ No newline at end of file
diff --git a/Common/Functions/Common_GetTurretsMags.sqf b/Common/Functions/Common_GetTurretsMags.sqf
new file mode 100644
index 0000000..f226567
--- /dev/null
+++ b/Common/Functions/Common_GetTurretsMags.sqf
@@ -0,0 +1,42 @@
+/* Adapted from BIS turret's function. */
+private ['_entry','_turrets','_turretIndex'];
+_entry = _this select 0;
+
+_turrets = [];
+_turretIndex = 0;
+
+//Explore all turrets and sub-turrets recursively.
+for '_i' from 0 to ((count _entry) - 1) do
+{
+ private ['_subEntry'];
+ _subEntry = _entry select _i;
+
+ if (isClass _subEntry) then
+ {
+ private ['_hasGunner'];
+ _hasGunner = [_subEntry, 'hasGunner'] call BIS_fnc_returnConfigEntry;
+
+ //Make sure the entry was found.
+ if !(isNil '_hasGunner') then
+ {
+ if (_hasGunner == 1) then
+ {
+ _turrets = _turrets + [[_turretIndex],getArray(_subEntry >> 'magazines')];
+
+ //Include sub-turrets, if present.
+ if (isClass (_subEntry >> 'Turrets')) then
+ {
+ _turrets = _turrets + [[_subEntry >> 'Turrets'] call GetTurretsMags];
+ }
+ else
+ {
+ _turrets = _turrets + [[]];
+ };
+ };
+ };
+
+ _turretIndex = _turretIndex + 1;
+ };
+};
+
+_turrets \ No newline at end of file
diff --git a/Common/Functions/Common_GetUnitVehicle.sqf b/Common/Functions/Common_GetUnitVehicle.sqf
new file mode 100644
index 0000000..f7ba300
--- /dev/null
+++ b/Common/Functions/Common_GetUnitVehicle.sqf
@@ -0,0 +1,6 @@
+Private['_unit','_return'];
+_unit = _this;
+
+_return = if (_unit != vehicle _unit) then {vehicle _unit} else {_unit};
+
+_return \ No newline at end of file
diff --git a/Common/Functions/Common_GetUnitsBelowHeight.sqf b/Common/Functions/Common_GetUnitsBelowHeight.sqf
new file mode 100644
index 0000000..1232042
--- /dev/null
+++ b/Common/Functions/Common_GetUnitsBelowHeight.sqf
@@ -0,0 +1,11 @@
+Private["_belowUnits","_height","_min","_units","_z"];
+
+_units = _this Select 0;
+_height = _this Select 1;
+_min = if (count _this > 2) then {_this select 2} else {-10};
+
+_belowUnits = [];
+
+{_z = getPos _x select 2;if (_z < _height && _z >= _min) then {_belowUnits = _belowUnits + [_x]}} ForEach _units;
+
+_belowUnits \ No newline at end of file
diff --git a/Common/Functions/Common_GetVehicleMags.sqf b/Common/Functions/Common_GetVehicleMags.sqf
new file mode 100644
index 0000000..bb690a4
--- /dev/null
+++ b/Common/Functions/Common_GetVehicleMags.sqf
@@ -0,0 +1,4 @@
+private ["_entry"];
+_entry = _this select 0;
+
+getArray(_entry >> 'magazines') \ No newline at end of file
diff --git a/Common/Functions/Common_HandleArtillery.sqf b/Common/Functions/Common_HandleArtillery.sqf
new file mode 100644
index 0000000..be8e243
--- /dev/null
+++ b/Common/Functions/Common_HandleArtillery.sqf
@@ -0,0 +1,104 @@
+/* Handle artillery Fired EH */
+Private ['_ammo','_ammoList','_cannon','_destination','_direction','_dispersion','_distance','_keepShellAlive','_landDestination','_maxRange','_nearLaser','_percent','_projectile','_radius','_shellpos','_side','_smoke','_smokeOnImpact','_velocity','_xcoord','_ycoord'];
+
+_ammo = _this select 0;
+_ammoList = _this select 2;
+
+//--- Only Catch allowed ammo.
+if (_ammo in _ammoList) then {
+
+ //--- Retrieve the parameters.
+ _projectile = _this select 1;
+ _destination = _this select 3;
+ _velocity = _this select 4;
+ _dispersion = _this select 5;
+ _cannon = _this select 6;
+ _distance = _this select 7;
+ _radius = _this select 8;
+ _maxRange = _this select 9;
+ _side = _this select 10;
+
+ //--- Do we have smoke on impact?
+ _smokeOnImpact = false;
+
+ //--- Randomize Land Area.
+ _distance = random (_distance / _maxRange * 100) + random _radius;
+ _direction = random 360;
+
+ //--- Default Position.
+ _landDestination = [((_destination select 0)+((sin _direction)*_distance))+(random _dispersion)-(random _dispersion),(_destination select 1)+((cos _direction)*_distance)+(random _dispersion)-(random _dispersion),0];
+ _keepShellAlive = true;
+
+ //--- SADARM Rounds.
+ if (_ammo in (Format ["WFBE_%1_ARTILLERY_AMMO_SADARM",_side] Call GetNamespace)) then {
+ [_projectile,_landDestination,_velocity] Spawn ARTY_HandleSADARM;
+ //--- SADARM Destroy the original round.
+ _keepShellAlive = false;
+ };
+
+ //--- ILLUM Rounds.
+ if (_ammo in (Format ["WFBE_%1_ARTILLERY_AMMO_ILLUMN",_side] Call GetNamespace)) then {
+ [_projectile,_landDestination,_velocity] Spawn ARTY_HandleILLUM;
+ //--- ILLUM Destroy the original round.
+ _keepShellAlive = false;
+ };
+
+ //--- Some rounds remove the projectile, make sure that it's not removed or anything.
+ if (_keepShellAlive) then {
+ //--- LASER Rounds.
+ if (_ammo in (Format ["WFBE_%1_ARTILLERY_AMMO_LASER",_side] Call GetNamespace)) then {
+ _nearLaser = _destination nearEntities ['LaserTarget','WFBE_ARTILLERYAMMOLASERRANGE' Call GetNamespace];
+ if (count _nearLaser > 0) then {
+ _nearLaser = getPos (([_destination,_nearLaser] Call SortByDistance) select 0);
+ _landDestination = [(_nearLaser select 0)+(((random _dispersion)-(random _dispersion))/4),(((_nearLaser select 1)+(random _dispersion)-(random _dispersion))/4),0];
+ };
+ };
+
+ //--- Calculate the shell estimated spawn area.
+ _distance = _landDestination distance _cannon;
+ _percent = ((500 * 100 / _distance) / 100);
+ _xcoord = (_landDestination select 0) + _percent * ((_cannon select 0) - (_landDestination select 0));
+ _ycoord = (_landDestination select 1) + _percent * ((_cannon select 1) - (_landDestination select 1));
+ _shellpos = [_xcoord,_ycoord,1000];
+
+ //--- Calculate the direction
+ _xcoord = (_landDestination select 0) - (_cannon select 0);
+ _ycoord = (_landDestination select 1) - (_cannon select 1);
+ _direction = -(((_ycoord atan2 _xcoord) + 270) % 360);
+ if (_direction < 0) then {_direction = _direction + 360};
+
+ //--- Track the shell (FX)?
+ _smokeOnImpact = if (_ammo in (Format ["WFBE_%1_ARTILLERY_DEPLOY_SMOKE",_side] Call GetNamespace)) then {true} else {false};
+
+ //--- Release the shell.
+ if !(isNull _projectile) then {
+ _projectile setPos _shellpos;
+ _projectile setVelocity [(sin _direction*_velocity),(cos _direction*_velocity),((_velocity * 2.03) * -1)];
+
+ if (WF_A2_Vanilla) then {
+ //---- MLRS ammo has some weird config problems on vanilla.
+ if (_ammo == "R_MLRS" || _ammo == "ARTY_R_227mm_HE_Rocket") then {
+ _projectile setPos _landDestination;
+ };
+ };
+ };
+ };
+
+ //--- Release smoke on an impact.
+ if (_smokeOnImpact) then {
+ _shellPos = [];
+
+ //--- Wait for the last known position.
+ while {!isNull _projectile} do {
+ _shellPos = getPos _projectile;
+ sleep 0.02;
+ };
+
+ //--- If we have it, release it.
+ if (count _shellPos > 0) then {
+ _shellPos set [2,0];
+ _smoke = "ARTY_SmokeShellWhite" createVehicle _shellPos;
+ _smoke setPos _shellPos;
+ };
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_HandleIncomingMissile.sqf b/Common/Functions/Common_HandleIncomingMissile.sqf
new file mode 100644
index 0000000..8318f4c
--- /dev/null
+++ b/Common/Functions/Common_HandleIncomingMissile.sqf
@@ -0,0 +1,22 @@
+Private ["_ammo","_irLock","_missile","_source","_unit"];
+_unit = _this select 0;
+_ammo = _this select 1;
+_source = _this select 2;
+
+_missile = nearestObject [_source,_ammo];
+if (isNull _missile) exitWith {};
+
+//--- Get the ammo type.
+_irLock = getNumber(configFile >> "CfgAmmo" >> _ammo >> "irLock");
+
+//--- IR Lock is affected
+if (_irLock == 1) then {
+ _distance = _unit distance _source;
+
+ _limit = 'WFBE_INCOMINGMISSILEMAXRANGE' Call GetNamespace;
+
+ if (_distance > _limit) then {
+ waitUntil {_missile distance _source > _limit};
+ deleteVehicle _missile;
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_IsArtillery.sqf b/Common/Functions/Common_IsArtillery.sqf
new file mode 100644
index 0000000..28b97ba
--- /dev/null
+++ b/Common/Functions/Common_IsArtillery.sqf
@@ -0,0 +1,12 @@
+Private ['_artyNames','_i','_retVal','_side','_unit'];
+_unit = _this select 0;
+_side = _this select 1;
+
+_retVal = -1;
+_artyNames = Format ["WFBE_%1_ARTILLERY_NAMES",_side] Call GetNamespace;
+
+for [{_i = 0},{_i < count(_artyNames)},{_i = _i + 1}] do {
+ if (_unit in (_artyNames select _i)) exitWith {_retVal = _i};
+};
+
+_retVal \ No newline at end of file
diff --git a/Common/Functions/Common_PlaceNear.sqf b/Common/Functions/Common_PlaceNear.sqf
new file mode 100644
index 0000000..99f9b75
--- /dev/null
+++ b/Common/Functions/Common_PlaceNear.sqf
@@ -0,0 +1,34 @@
+Private["_destination","_direction","_faceAway","_maxRadius","_minRadius","_object","_placeSafe","_position","_radius","_randomDirection","_safeRadius"];
+
+_object = _this Select 0;
+_position = _this Select 1;
+_minRadius = _this Select 2;
+_maxRadius = _this Select 3;
+
+_faceAway = true;
+if (Count _this > 4) then {_faceAway = _this Select 4};
+
+_randomDirection = true;
+if (Count _this > 5) then {_randomDirection = _this Select 5};
+
+_placeSafe = false;
+if (Count _this > 6) then {_placeSafe = _this Select 6};
+
+_direction = Random 360;
+_radius = (Random (_maxRadius - _minRadius)) + _minRadius;
+
+if (_placeSafe) then {
+ _safeRadius = (_maxRadius - _minRadius) / 2;
+ if (_safeRadius < 5) then {_safeRadius = 5};
+ _destination = [(_position Select 0)+((sin _direction)*_radius),(_position Select 1)+((cos _direction)*_radius),(_position Select 2)+0.5];
+ [_object,_destination,_safeRadius] Call PlaceSafe;
+} else {
+ _object SetPos [(_position Select 0)+((sin _direction)*_radius),(_position Select 1)+((cos _direction)*_radius),(_position Select 2)+0.5];
+};
+
+if (_randomDirection) then {_object SetDir Random 360};
+
+if (_faceAway) then {
+ _destination = GetPos _object;
+ _object SetDir -((((_destination Select 1) - (_position Select 1)) atan2 ((_destination Select 0) - (_position Select 0))) - 90);
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_PlaceSafe.sqf b/Common/Functions/Common_PlaceSafe.sqf
new file mode 100644
index 0000000..45176c2
--- /dev/null
+++ b/Common/Functions/Common_PlaceSafe.sqf
@@ -0,0 +1,28 @@
+Private["_count","_currentPosition","_direction","_object","_obstacles","_placed","_position","_radius","_vehicles"];
+scopeName "PlaceSafe";
+
+_object = _this select 0;
+_position = _this select 1;
+_radius = if (count _this > 2) then {_this select 2} else {35};
+
+_currentPosition = _position;
+_placed = false;
+_direction = 0;
+
+for [{_count = 0},{_count < 30 && !_placed},{_count = _count + 1}] do {
+ _obstacles = nearestObjects [_currentPosition, ["Building"], 15];
+ _vehicles = _currentPosition nearEntities [["Building","Car","Tank","Air"], 7];
+
+ if (count _obstacles > 0 || count _vehicles > 0 || surfaceIsWater _currentPosition) then {
+ _currentPosition = [(_position select 0)+((sin _direction)*_radius),(_position select 1)+((cos _direction)*_radius),0];
+ _direction = _direction + 36;
+ if (_count > 15) then {_radius = _radius + 25};
+ } else {
+ _object setPos _currentPosition;
+ _object setVelocity [0,0,-0.5];
+ _placed = true;
+ breakTo "PlaceSafe";
+ };
+};
+
+if (!_placed) then {_object setPos _position;_object setVelocity [0,0,-0.5]};
diff --git a/Common/Functions/Common_RearmVehicle.sqf b/Common/Functions/Common_RearmVehicle.sqf
new file mode 100644
index 0000000..58ed35c
--- /dev/null
+++ b/Common/Functions/Common_RearmVehicle.sqf
@@ -0,0 +1,39 @@
+Private["_amount","_get","_isAir","_isArtillery","_magazines","_side","_type","_vehicle"];
+
+_vehicle = _this select 0;
+_side = _this select 1;
+_type = typeOf _vehicle;
+_isAir = if (_vehicle isKindOf "Air") then {true} else {false};
+
+//rearming turrets.
+{_vehicle removeMagazine _x} forEach magazines _vehicle;
+
+_magazines = getArray (configFile >> "CfgVehicles" >> typeOf _vehicle >> "Turrets" >> "MainTurret" >> "Magazines");
+_magazines = _magazines + getArray (configFile >> "CfgVehicles" >> typeOf _vehicle >> "Magazines");
+
+{_vehicle addMagazine _x} forEach _magazines;
+
+/* CM Parameter */
+if (paramCounterMeasures && _isAir) then {
+ _amount = if (_vehicle isKindOf "Plane") then {'WFBE_COUNTERMEASUREPLANES' Call GetNamespace} else {'WFBE_COUNTERMEASURECHOPPERS' Call GetNamespace};
+ _vehicle setVariable ["FlareCount", _amount];
+};
+
+_vehicle setVehicleAmmo 1;
+reload _vehicle;
+
+/* Are we dealing with an artillery unit ? */
+_isArtillery = -1;
+if (_side == west || _side == east) then {_isArtillery = [_type,_side] Call IsArtillery};
+if (_isArtillery != -1) then {[_vehicle,_isArtillery,_side] Call EquipArtillery};
+
+/* Balanced Unit */
+if (_type in ('WFBE_BALANCEDUNITS' Call GetNamespace) && paramBalancing) then {[_vehicle] Call BalanceInit};
+
+/* EASA Module */
+if (paramEASA) then {
+ if (_type in ('WFBE_EASA_Vehicles' Call GetNamespace)) then {
+ _get = _vehicle getVariable 'WFBE_EASA_Setup';
+ if !(isNil '_get') then {[_vehicle,0] Call EASA_Equip};
+ };
+};
diff --git a/Common/Functions/Common_RearmVehicleOA.sqf b/Common/Functions/Common_RearmVehicleOA.sqf
new file mode 100644
index 0000000..9537b90
--- /dev/null
+++ b/Common/Functions/Common_RearmVehicleOA.sqf
@@ -0,0 +1,51 @@
+Private['_amount','_config','_get','_isAir','_isArtillery','_magazines','_side','_turrets','_type','_vehicle'];
+
+_vehicle = _this select 0;
+_side = _this select 1;
+_type = typeOf _vehicle;
+_isAir = if (_vehicle isKindOf "Air") then {true} else {false};
+
+/* Clear the vehicle */
+_vehicle setVehicleAmmo 0;
+
+/* Reload all turrets */
+_turrets = [];
+_config = configFile >> 'CfgVehicles' >> typeOf _vehicle >> 'Turrets';
+_turrets = [_config] call GetTurretsMags;
+[_vehicle,_turrets] Call SetTurretsMags;
+/* Reload the driver (Special) */
+_magazines = [configFile >> 'CfgVehicles' >> typeOf _vehicle] call GetVehicleMags;
+{_vehicle addMagazineTurret[_x,[-1]]} forEach _magazines;
+
+reload _vehicle;
+
+/* CM Parameter */
+if (paramCounterMeasures && _vehicle isKindOf 'Air') then {
+ _amount = if (_vehicle isKindOf 'Plane') then {'WFBE_COUNTERMEASUREPLANES' Call GetNamespace} else {'WFBE_COUNTERMEASURECHOPPERS' Call GetNamespace};
+ _vehicle setVariable ['FlareCount', _amount];
+};
+
+/* Are we dealing with an artillery unit ? */
+_isArtillery = -1;
+if (_side == west || _side == east) then {_isArtillery = [_type,_side] Call IsArtillery};
+if (_isArtillery != -1) then {[_vehicle,_isArtillery,_side] Call EquipArtillery};
+
+/* Balanced Unit */
+if (_type in ('WFBE_BALANCEDUNITS' Call GetNamespace) && paramBalancing) then {[_vehicle] Call BalanceInit};
+
+/* EASA Module */
+if (paramEASA) then {
+ if (_type in ('WFBE_EASA_Vehicles' Call GetNamespace)) then {
+ _get = _vehicle getVariable 'WFBE_EASA_Setup';
+ if !(isNil '_get') then {[_vehicle,0] Call EASA_Equip};
+ };
+};
+
+/* Mando Missiles - Reload Flares */
+if (paramMandoMissiles && _isAir) then {
+ _var = _vehicle getVariable "mando_maxflares";
+ if !(isNil "_var") then {
+ _vehicle setVariable ["mando_flaresleft", _var, true];
+ call mando_update_flares;
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_RevealArea.sqf b/Common/Functions/Common_RevealArea.sqf
new file mode 100644
index 0000000..3a94c95
--- /dev/null
+++ b/Common/Functions/Common_RevealArea.sqf
@@ -0,0 +1,11 @@
+Private ["_pos","_range","_reveal","_team","_unit"];
+
+_unit = _this select 0;
+_range = _this select 1;
+_pos = _this select 2;
+
+{
+ _reveal = [_x];
+ if (_x != vehicle _x) then {_reveal = _reveal + (crew _x)};
+ {_unit reveal _x} forEach _reveal;
+} forEach (_pos nearEntities _range); \ No newline at end of file
diff --git a/Common/Functions/Common_SetCommanderVotes.sqf b/Common/Functions/Common_SetCommanderVotes.sqf
new file mode 100644
index 0000000..48a41c0
--- /dev/null
+++ b/Common/Functions/Common_SetCommanderVotes.sqf
@@ -0,0 +1,14 @@
+Private["_count","_side","_teams","_total","_value"];
+
+_side = _this Select 0;
+_value = _this Select 1;
+
+_teams = (Format["WFBE_%1TEAMS",str _side] Call GetNamespace);
+_total = Count _teams + 1;
+
+//Count votes.
+for [{_count = 1},{_count < _total},{_count = _count + 1}] do {
+ if (isPlayer (leader (_teams Select (_count - 1)))) then {
+ Call Compile Format["if (%1Team%2Vote != _value) then {%1Team%2Vote = _value;PublicVariable '%1Team%2Vote'};",str _side,_count];
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_SetNamespace.sqf b/Common/Functions/Common_SetNamespace.sqf
new file mode 100644
index 0000000..aaf20f2
--- /dev/null
+++ b/Common/Functions/Common_SetNamespace.sqf
@@ -0,0 +1,15 @@
+Private ['_get','_override','_variable','_value'];
+
+_variable = _this select 0;
+_value = _this select 1;
+_override = if (count _this > 2) then {_this select 2} else {false};
+
+//--- BIS Bug, typename doesn't work properly with nil.
+if !(_override) then {
+ _get = _variable Call GetNamespace;
+ if (isNil '_get') then {
+ missionNamespace setVariable [_variable,_value];
+ };
+} else {
+ missionNamespace setVariable [_variable,_value];
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTeamAutonomous.sqf b/Common/Functions/Common_SetTeamAutonomous.sqf
new file mode 100644
index 0000000..e9d2add
--- /dev/null
+++ b/Common/Functions/Common_SetTeamAutonomous.sqf
@@ -0,0 +1,8 @@
+Private['_status','_team'];
+
+_team = _this select 0;
+_status = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1Autonomous = _status; publicVariable '%1Autonomous';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTeamMoveMode.sqf b/Common/Functions/Common_SetTeamMoveMode.sqf
new file mode 100644
index 0000000..e83b940
--- /dev/null
+++ b/Common/Functions/Common_SetTeamMoveMode.sqf
@@ -0,0 +1,8 @@
+Private['_moveMode','_team'];
+
+_team = _this select 0;
+_moveMode = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1MoveMode = _moveMode; publicVariable '%1MoveMode';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTeamMovePos.sqf b/Common/Functions/Common_SetTeamMovePos.sqf
new file mode 100644
index 0000000..7a45b8f
--- /dev/null
+++ b/Common/Functions/Common_SetTeamMovePos.sqf
@@ -0,0 +1,8 @@
+Private['_movePos','_team'];
+
+_team = _this select 0;
+_movePos = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1MovePos = _movePos; publicVariable '%1MovePos';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTeamRespawn.sqf b/Common/Functions/Common_SetTeamRespawn.sqf
new file mode 100644
index 0000000..606f269
--- /dev/null
+++ b/Common/Functions/Common_SetTeamRespawn.sqf
@@ -0,0 +1,8 @@
+Private['_respawn','_team'];
+
+_team = _this select 0;
+_respawn = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1Respawn = _respawn; publicVariable '%1Respawn';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTeamType.sqf b/Common/Functions/Common_SetTeamType.sqf
new file mode 100644
index 0000000..6d77a81
--- /dev/null
+++ b/Common/Functions/Common_SetTeamType.sqf
@@ -0,0 +1,8 @@
+Private['_idtype','_team'];
+
+_team = _this select 0;
+_idtype = _this select 1;
+
+if (isNull _team) exitWith {};
+
+Call Compile Format ["%1Types = _idtype; publicVariable '%1Types';",_team getVariable 'identification']; \ No newline at end of file
diff --git a/Common/Functions/Common_SetTurretsMags.sqf b/Common/Functions/Common_SetTurretsMags.sqf
new file mode 100644
index 0000000..7881ed9
--- /dev/null
+++ b/Common/Functions/Common_SetTurretsMags.sqf
@@ -0,0 +1,30 @@
+private ["_content","_cpt","_data","_dataRow","_tConstruct","_turretPath","_vehicle"];
+_vehicle = _this select 0;
+_data = _this select 1;
+_turretPath = if (count _this > 2) then {_this select 2} else {[]};
+_cpt = count _turretPath;
+
+for "_i" from 0 to ((count _data) - 1) do {
+ _dataRow = _data select _i;
+
+ if (count _dataRow > 0) then {
+ if (typeName _dataRow == 'ARRAY') then {
+ _content = _dataRow select 0;
+ //--- root.
+ if (typeName _content == 'SCALAR') then {
+ _turretPath set [_cpt,[_content]];
+ _tConstruct = [];
+ {_tConstruct = _tConstruct + _x} forEach _turretPath;
+ {
+ _vehicle addMagazineTurret [_x, _tConstruct];
+ } forEach (_data select (_i+1));
+ };
+ //--- go deeper.
+ if (typeName _content == 'ARRAY') then {
+ [_vehicle,_dataRow,_turretPath] Call SetTurretsMags;
+ _turretPath = [];
+ _cpt = 0;
+ };
+ };
+ };
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_SortByDistance.sqf b/Common/Functions/Common_SortByDistance.sqf
new file mode 100644
index 0000000..a34680e
--- /dev/null
+++ b/Common/Functions/Common_SortByDistance.sqf
@@ -0,0 +1,24 @@
+Private["_count","_count1","_current","_distance","_nearest","_nearestDistance","_object","_objects","_sorted","_total"];
+
+_object = _this Select 0;
+_objects = +(_this Select 1);
+
+_sorted = [];
+
+_total = Count _objects;
+for [{_count = 0},{_count < _total},{_count = _count + 1}] do {
+ _nearest = ObjNull;
+ _nearestDistance = 100000;
+
+ for [{_count1 = Count _objects - 1},{_count1 >= 0},{_count1 = _count1 - 1}] do {
+ _current = _objects Select _count1;
+ _distance = _current Distance _object;
+
+ if (_distance < _nearestDistance) then {_nearest = _current;_nearestDistance = _distance};
+ };
+
+ _sorted = _sorted + [_nearest];
+ _objects = _objects - [_nearest];
+};
+
+_sorted \ No newline at end of file
diff --git a/Common/Functions/Common_SpawnTurrets.sqf b/Common/Functions/Common_SpawnTurrets.sqf
new file mode 100644
index 0000000..b9ae10e
--- /dev/null
+++ b/Common/Functions/Common_SpawnTurrets.sqf
@@ -0,0 +1,22 @@
+private ["_turrets", "_path", "_vehicle", "_crew", "_team", "_unit"];
+_turrets = _this select 0;
+_path = _this select 1;
+_vehicle = _this select 2;
+_crew = _this select 3;
+_team = _this select 4;
+private ["_i"];
+_i = 0;
+while {_i < (count _turrets)} do {
+ private ["_turretIndex", "_thisTurret"];
+ _turretIndex = _turrets select _i;
+ _thisTurret = _path + [_turretIndex];
+
+ if (isNull (_vehicle turretUnit _thisTurret)) then {
+ _unit = [_crew,_team,getPos _vehicle,side _team] Call CreateMan;
+ _unit moveInTurret [_vehicle, _thisTurret];
+ };
+
+ //Spawn units into subturrets.
+ [_turrets select (_i + 1), _thisTurret, _vehicle, _crew, _team] call SpawnTurrets;
+ _i = _i + 2;
+}; \ No newline at end of file
diff --git a/Common/Functions/Common_UnitKilled.sqf b/Common/Functions/Common_UnitKilled.sqf
new file mode 100644
index 0000000..dbf11df
--- /dev/null
+++ b/Common/Functions/Common_UnitKilled.sqf
@@ -0,0 +1,196 @@
+Private ["_bounty","_crew","_get","_group","_isAIControlled","_iskilledplayer","_iskillerplayer","_isMan","_killed","_killedname","_killeduid","_killer","_killerID","_killername","_killerTeam","_killerVehName","_killertype","_killeruid","_lost","_objects","_objectType","_side","_sideKiller","_sideVictim","_sta","_uid","_vehicle"];
+_killed = _this select 0;
+_killer = _this select 1;
+_sideVictim = _this select 2;
+_sideKiller = side _killer;
+
+_group = group _killed;
+_killerTeam = group _killer;
+_killerVehName = vehicleVarName (leader _killerTeam);
+_vehicle = vehicle _killer;
+_objectType = typeOf _killed;
+_killertype = "";
+_killeruid = "";
+_killername = "";
+_killeduid = "";
+_killedname = "";
+_iskilledplayer = false;
+
+_isMan = if (_killed isKindOf "Man") then {true} else {false};
+
+_iskillerplayer = if (isPlayer _killer) then {true} else {false};
+if (mysql) then {
+ _killertype = typeOf _killer;
+ _iskilledplayer = if (isPlayer _killed) then {true} else {false};
+ _killeruid = if (_iskillerplayer) then {getPlayerUID(_killer)} else {"0"};
+ _killeduid = if (_iskilledplayer) then {getPlayerUID(_killed)} else {"0"};
+ _killername = if (_iskillerplayer) then {name _killer} else {"nil"};
+ _killedname = if (_iskilledplayer) then {name _killed} else {"nil"};
+};
+
+//--- Renegade.
+if (_sideKiller == sideEnemy) then {
+ if (_killer isKindOf westSoldierBaseClass) then {_sideKiller = west};
+ if (_killer isKindOf eastSoldierBaseClass) then {_sideKiller = east};
+};
+if (_sideVictim == sideEnemy) then {
+ if (_killed isKindOf westSoldierBaseClass) then {_sideVictim = west};
+ if (_killed isKindOf eastSoldierBaseClass) then {_sideVictim = east};
+};
+
+//--- Benny's Garbage Collector.
+if (WF_A2_Vanilla) then {
+ /* Vanilla use the old garbage system */
+ if (!(isServer) || local player) then {
+ _objects = (WF_Logic getVariable "trash") + [_killed];
+ WF_Logic setVariable ["trash",_objects,true];
+ } else {
+ trashQueu = trashQueu + [_killed];
+ _killed Spawn TrashObject;
+ };
+} else {
+ /* OA use the evolved system which no longer require network variables */
+ if (isServer) then {
+ trashQueu = trashQueu + [_killed];
+ _killed Spawn TrashObject;
+ };
+};
+
+sleep (random 3);
+
+if (_isMan && (_sideVictim == west || _sideVictim == east)) then {[str _sideVictim,'Casualties',1] Call UpdateStatistics};
+if (!_isMan && (_sideVictim == west || _sideVictim == east)) then {[str _sideVictim,'VehiclesLost',1] Call UpdateStatistics};
+
+_killerID = (leader _killerTeam) Call GetClientID;
+_get = _objectType Call GetNamespace;
+
+_isAIControlled = true;
+if (_killerID > 0) then {_isAIControlled = if (isPlayer (leader _killerTeam)) then {false} else {true}};
+
+//--- Normal kill.
+if (!isNull _killerTeam && !isNil '_get' && (_sideKiller != sideEnemy) && (_sideKiller != _sideVictim) && (_sideKiller != Civilian)) then {
+ if (_killerID > 0 && !_isAIControlled) then {
+ /* Bounty */
+ if (paramBounty) then {
+ WFBE_AwardBounty = [_killerVehName,'CLTFNCAWARDBOUNTY',[_objectType, false]];
+ publicVariable 'WFBE_AwardBounty';
+ if (isHostedServer) then {[_killerVehName,'CLTFNCAWARDBOUNTY',[_objectType, false]] Spawn HandlePVF};
+
+ //--- Kill Assist.
+ if (!(_vehicle isKindOf 'Man') && alive _vehicle) then {
+ _crew = [driver _vehicle, gunner _vehicle, commander _vehicle] - [_killer, player];
+ {
+ if !(isNull _x) then {
+ if (isPlayer _x && group _x != _killerTeam) then {
+ WFBE_AwardBounty = [vehicleVarName _x,'CLTFNCAWARDBOUNTY',[_objectType, true]];
+ publicVariable 'WFBE_AwardBounty';
+ if (isHostedServer) then {[vehicleVarName _x,'CLTFNCAWARDBOUNTY',[_objectType, true]] Spawn HandlePVF};
+ };
+ };
+ } forEach _crew;
+ };
+ };
+
+ /* AI Score */
+ if !(_iskillerplayer) then {
+ [_objectType,leader _killerTeam] Spawn {
+ Private ['_player','_point','_type'];
+ _type = _this select 0;
+ _player = _this select 1;
+
+ _point = switch (true) do {
+ case (_type isKindOf "Infantry"): {1};
+ case (_type isKindOf "Car"): {2};
+ case (_type isKindOf "Ship"): {4};
+ case (_type isKindOf "Motorcycle"): {1};
+ case (_type isKindOf "Tank"): {4};
+ case (_type isKindOf "Helicopter"): {4};
+ case (_type isKindOf "Plane"): {6};
+ case (_type isKindOf "StaticWeapon"): {2};
+ case (_type isKindOf "Building"): {2};
+ default {1};
+ };
+
+ sleep random(3);
+
+ if (isServer) then {
+ ['SRVFNCREQUESTCHANGESCORE',[_player,score _player + _point]] Spawn HandleSPVF;
+ } else {
+ WFBE_RequestChangeScore = ['SRVFNCREQUESTCHANGESCORE',[_player,score _player + _point]];
+ publicVariable 'WFBE_RequestChangeScore';
+ if (isHostedServer) then {['SRVFNCREQUESTCHANGESCORE',[_player,score _player + _point]] Spawn HandleSPVF};
+ };
+ };
+ };
+
+ /* MySQL */
+ if (mysql) then {
+ _sta = switch (true) do {
+ case (_objectType isKindOf "Infantry"): {1};
+ case (_objectType isKindOf "Car"): {2};
+ case (_objectType isKindOf "Ship"): {2};
+ case (_objectType isKindOf "Motorcycle"): {1};
+ case (_objectType isKindOf "Tank"): {4};
+ case (_objectType isKindOf "Helicopter"): {6};
+ case (_objectType isKindOf "Plane"): {8};
+ case (_objectType isKindOf "StaticWeapon"): {3};
+ case (_objectType isKindOf "Building"): {3};
+ default {1};
+ };
+ if (isServer) then {
+ if (_iskilledplayer) then {
+ WF_Logic setVariable ["WF_MYSQL_SERVER",(WF_Logic getVariable "WF_MYSQL_SERVER") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKP?%1?%2?%3?%4?%5",_killeduid,_killedname,_killeruid,_killername,worldName]]];
+ WF_Logic setVariable ["WF_MYSQL_SERVER",(WF_Logic getVariable "WF_MYSQL_SERVER") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?%5?%6",_killertype,_killeduid,_killedname,"killedby",_sta,worldName]]];
+ } else {
+ WF_Logic setVariable ["WF_MYSQL_SERVER",(WF_Logic getVariable "WF_MYSQL_SERVER") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?%5?%6",_objectType,_killeruid,_killername,"killed",_sta,worldName]]];
+ };
+ } else {
+ if (_iskilledplayer) then {
+ WF_Logic setVariable ["WF_MYSQL_CLIENT",(WF_Logic getVariable "WF_MYSQL_CLIENT") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKP?%1?%2?%3?%4?%5",_killeduid,_killedname,_killeruid,_killername,worldName]],true];
+ WF_Logic setVariable ["WF_MYSQL_CLIENT",(WF_Logic getVariable "WF_MYSQL_CLIENT") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?%5?%6",_killertype,_killeduid,_killedname,"killedby",_sta,worldName]],true];
+ } else {
+ WF_Logic setVariable ["WF_MYSQL_CLIENT",(WF_Logic getVariable "WF_MYSQL_CLIENT") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?%5?%6",_objectType,_killeruid,_killername,"killed",_sta,worldName]],true];
+ };
+ };
+ };
+ };
+
+ if (mysql) then {
+ if (_isAIControlled) then {
+ if (isServer) then {
+ if (mysql && _iskilledplayer) then {
+ WF_Logic setVariable ["WF_MYSQL_SERVER",(WF_Logic getVariable "WF_MYSQL_SERVER") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?0?%5",_killertype,_killeduid,_killedname,"killedby",worldName]]];
+ };
+ } else {
+ if (mysql && _iskilledplayer) then {
+ WF_Logic setVariable ["WF_MYSQL_CLIENT",(WF_Logic getVariable "WF_MYSQL_CLIENT") + [Format ["MYSQLDATA?WFBE_InsertOrUpdate_PKAI?%1?%2?%3?%4?0?%5",_killertype,_killeduid,_killedname,"killedby",worldName]],true];
+ };
+ };
+ };
+ };
+
+ /* Playable AI Kill */
+ if (paramAI && _killerID > 0 && _isAIControlled) then {
+ if (isServer) then {
+ _bounty = (_get select QUERYUNITPRICE) * ('WFBE_BOUNTYMODIFIER' Call GetNamespace);
+ _bounty = _bounty - (_bounty % 1);
+ [_killerTeam,_bounty] Call ChangeTeamFunds;
+ };
+ };
+};
+
+//--- Teamkill.
+if (!isNull _killerTeam && !isNil '_get' && (_sideKiller != sideEnemy) && (_sideKiller == _sideVictim) && (_sideKiller != Civilian) && _isMan) then {
+ if (_killerID > 0 && !_isAIControlled) then {
+ WFBE_LocalizeMessage = [_killerVehName,'CLTFNCLOCALIZEMESSAGE',['Teamkill']];
+ publicVariable 'WFBE_LocalizeMessage';
+ if (isHostedServer) then {[_killerVehName,'CLTFNCLOCALIZEMESSAGE',['Teamkill']] Spawn HandlePVF};
+ if (mysql) then {
+ if (isServer) then {
+ WF_Logic setVariable ["WF_MYSQL_SERVER",(WF_Logic getVariable "WF_MYSQL_SERVER") + [Format ["MYSQLDATA?WFBE_Update?%1?%2?teamkill?%3",_killeruid,_killername,worldName]]];
+ } else {
+ WF_Logic setVariable ["WF_MYSQL_CLIENT",(WF_Logic getVariable "WF_MYSQL_CLIENT") + [Format ["MYSQLDATA?WFBE_Update?%1?%2?teamkill?%3",_killeruid,_killername,worldName]],true];
+ };
+ };
+ };
+};
diff --git a/Common/Functions/Common_UpdateStatistics.sqf b/Common/Functions/Common_UpdateStatistics.sqf
new file mode 100644
index 0000000..5fd0ef6
--- /dev/null
+++ b/Common/Functions/Common_UpdateStatistics.sqf
@@ -0,0 +1 @@
+Private ['_side','_val','_var']; _side = _this select 0; _var = _this select 1; _val = _this select 2; WF_Logic setVariable [Format["%1%2",_side,_var],((WF_Logic getVariable Format["%1%2",_side,_var]) + _val),true]; \ No newline at end of file
diff --git a/Common/Functions/Common_UseStationaryDefense.sqf b/Common/Functions/Common_UseStationaryDefense.sqf
new file mode 100644
index 0000000..6f90f09
--- /dev/null
+++ b/Common/Functions/Common_UseStationaryDefense.sqf
@@ -0,0 +1,32 @@
+Private["_count","_defense","_defenses","_defenseTypes","_emptyDefenses","_range","_total","_totalDefenses","_unit","_units"];
+
+_units = _this select 0;
+_range = _this select 1;
+
+_total = count _units;
+if (_total < 1) exitWith {diag_log Format["[WFBE (ERROR)][frameno:%1 | ticktime:%2] Common_UseStationaryDefense.sqf: No units were specified",diag_frameno,diag_tickTime]};
+
+_defenseTypes = Format["WFBE_%1DEFENSENAMES",side leader group (_units select 0)] Call GetNamespace;
+_defenses = (leader group (_units select 0)) nearEntities[_defenseTypes,_range];
+
+_emptyDefenses = [];
+
+{if (_x EmptyPositions "gunner" > 0) then {_emptyDefenses = _emptyDefenses + [_x]}} forEach _defenses;
+
+for [{_count = 0},{_count < _total},{_count = _count + 1}] do
+{
+ _unit = _units select _count;
+
+ _totalDefenses = count _emptyDefenses;
+ if (_totalDefenses < 1) exitWith {};
+
+ //If not in a vehicle then check for available defense.
+ if (alive _unit && _unit == vehicle _unit) then
+ {
+ _defense = _emptyDefenses select (_totalDefenses - 1);
+
+ [_unit] allowGetIn true;
+ _unit assignAsGunner _defense;
+ _emptyDefenses = _emptyDefenses - [_defense];
+ };
+}; \ No newline at end of file
diff --git a/Common/Init/Init_Airfield.sqf b/Common/Init/Init_Airfield.sqf
new file mode 100644
index 0000000..14f56e8
--- /dev/null
+++ b/Common/Init/Init_Airfield.sqf
@@ -0,0 +1,9 @@
+Private ["_location"];
+_location = _this select 0;
+
+waitUntil {commonInitComplete};
+
+if (isNil "Airfields") then {Airfields = []};
+Airfields = Airfields + [_location];
+
+diag_log Format["[WFBE (INIT)][frameno:%4 | ticktime:%5] Init_Airfield: Airfield initialization (position: %1 - item: %2 (%3)) - [Done]",getPos _location,_location,typeOf _location,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Init/Init_Boundaries.sqf b/Common/Init/Init_Boundaries.sqf
new file mode 100644
index 0000000..9f55ba7
--- /dev/null
+++ b/Common/Init/Init_Boundaries.sqf
@@ -0,0 +1,38 @@
+Private ['_boundariesXY'];
+_boundariesXY = -1;
+
+switch (toLower(worldName)) do {
+ case 'chernarus': {_boundariesXY = 15360};
+ case 'eden': {_boundariesXY = 12800};
+ case 'fallujah': {_boundariesXY = 10240};
+ case 'isladuala': {_boundariesXY = 10240};
+ case 'panthera2': {_boundariesXY = 10240};
+ case 'queshkibrul': {_boundariesXY = 5120};
+ case 'sara': {_boundariesXY = 20480};
+ case 'saraLite': {_boundariesXY = 10240};
+ case 'takistan': {_boundariesXY = 12800};
+ case 'utes': {_boundariesXY = 5120};
+ case 'yapal': {_boundariesXY = 5120};
+ case 'zargabad': {_boundariesXY = 8192};
+};
+
+if (paramBoundaries) then {
+ if (_boundariesXY == -1) then {
+ paramBoundaries = false;
+ if (local player) then {
+ BoundariesIsOnMap = nil;
+ BoundariesHandleOnMap = nil;
+ };
+ diag_log Format["[WFBE (INFORMATION)][frameno:%2 | ticktime:%3] Init_Boundaries: There is no proper boundaries set for the island '%1'",worldName,diag_frameno,diag_tickTime];
+ } else {
+ ['WFBE_BOUNDARIESXY',_boundariesXY,true] Call SetNamespace;
+ diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Boundaries: Boundaries found for the island '%1' %2",worldName,_boundariesXY,diag_frameno,diag_tickTime];
+ };
+} else {
+ if (_boundariesXY == -1) then {
+ diag_log Format["[WFBE (INFORMATION)][frameno:%2 | ticktime:%3] Init_Boundaries: There is no proper boundaries set for the island '%1'",worldName,diag_frameno,diag_tickTime];
+ } else {
+ ['WFBE_BOUNDARIESXY',_boundariesXY,true] Call SetNamespace;
+ diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Boundaries: Boundaries found for the island '%1' %2 [Boundaries parameter is disabled]",worldName,_boundariesXY,diag_frameno,diag_tickTime];
+ };
+}; \ No newline at end of file
diff --git a/Common/Init/Init_Camp.sqf b/Common/Init/Init_Camp.sqf
new file mode 100644
index 0000000..9a31709
--- /dev/null
+++ b/Common/Init/Init_Camp.sqf
@@ -0,0 +1,85 @@
+Private ['_camp','_camps','_flagPole','_index','_marker','_supplyValue','_town'];
+
+_camp = _this select 0;
+_town = _this select 1;
+
+waitUntil {townModeSet};
+if (isNull _town && !isNull _camp) exitWith {
+ if (isServer) then {
+ if (isNil 'EastMHQ' || isNil 'WestMHQ') exitWith {};
+ (getPos _camp) Spawn {
+ Private ["_defenses"];
+ waitUntil {commonInitComplete};
+ _defenses = _this nearEntities[('WFBE_RESISTANCEDEFENSENAMES' Call GetNamespace),250];
+ {deleteVehicle _x} forEach _defenses;
+ };
+ deleteVehicle _camp;
+ };
+};
+if ((str _town) in TownTemplate) exitWith {
+ if (isServer) then {
+ if (isNil 'EastMHQ' || isNil 'WestMHQ') exitWith {};
+ diag_log Format ["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Camp: Removing camp %1 (%2) since the town is removed in the towns templates.",_camp,str _town,diag_frameno,diag_tickTime];
+ (getPos _camp) Spawn {
+ Private ["_defenses"];
+ waitUntil {commonInitComplete};
+ _defenses = _this nearEntities[('WFBE_RESISTANCEDEFENSENAMES' Call GetNamespace),250];
+ {deleteVehicle _x} forEach _defenses;
+ };
+ deleteVehicle _camp;
+ };
+};
+
+waitUntil{initJIP};
+if !(paramKeepCamps) exitWith{
+ diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Camp: Removing camp %3 due to a parameter (Town: %4) - [Done]",diag_frameno,diag_tickTime,_camp,_town];
+ (getPos _camp) Spawn {
+ Private ["_defenses"];
+ waitUntil {commonInitComplete};
+ _defenses = _this nearEntities[('WFBE_RESISTANCEDEFENSENAMES' Call GetNamespace),250];
+ {deleteVehicle _x} forEach _defenses;
+ };
+ deleteVehicle _camp;
+};
+
+if (isNull _camp) exitWith {diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Camp: Camp removed (Town is null) - [Done]",diag_frameno,diag_tickTime];};
+
+_camps = _town getVariable "camps";
+if (isNil "_camps") then {_town setVariable ["camps",[]]};
+_camps = _town getVariable "camps";
+_camps = _camps + [_camp];
+_town setVariable ["camps",_camps];
+_camp setVariable ['town',_town];
+
+diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Camp: Camp '%1' of town '%2' initialization - [Done]",str _camp,str _town,diag_frameno,diag_tickTime];
+
+waitUntil {commonInitComplete};
+
+if (local player) then {
+ waitUntil {clientInitComplete};
+
+ _index = _camps find _camp;
+ _marker = Format["%1Camp%2",str _town,_index];
+ createMarkerLocal [_marker,getPos _camp];
+ _marker setMarkerTypeLocal "Strongpoint";
+ _marker setMarkerSizeLocal [0.5,0.5];
+ _marker setMarkerColorLocal ("Resistance" Call GetMarkerColoration);
+};
+
+if (isServer) then {
+ if (isNil 'EastMHQ' || isNil 'WestMHQ') exitWith {};
+
+ sleep 10;
+
+ _supplyValue = 0;
+ if (isNil {_camp getVariable "sideID"}) then {_camp setVariable ["sideID",RESISTANCEID,true]};
+ /* OA Camps are made of kryptonite */
+ if (WF_A2_Arrowhead || WF_A2_CombinedOps) then {_camp addEventHandler ['handleDamage',{false}]};
+ if (isNil {_camp getVariable "supplyValue"}) then {
+ waitUntil {_supplyValue = _town getVariable "supplyValue"; !isNil "_supplyValue"};
+ _camp setVariable ["supplyValue",_supplyValue,true];
+ _flagPole = WFFLAG createVehicle getPos _camp;
+ waitUntil {serverInitComplete && townInit};
+ [_camp,_town,_flagPole] ExecFSM 'Server\FSM\updatecamp.fsm';
+ };
+}; \ No newline at end of file
diff --git a/Common/Init/Init_Common.sqf b/Common/Init/Init_Common.sqf
new file mode 100644
index 0000000..abb5787
--- /dev/null
+++ b/Common/Init/Init_Common.sqf
@@ -0,0 +1,285 @@
+private ['_count'];
+diag_log Format["[WFBE (INIT)][frameno:%2 | ticktime:%3] Init_Common: Init Start at %1",time,diag_frameno,diag_tickTime];
+
+Private ['_count'];
+
+if (paramBalancing) then {BalanceInit = Compile preprocessFile "Common\Functions\Common_BalanceInit.sqf"};
+if !(WF_A2_Vanilla) then {
+ BackpackHasSpace = Compile preprocessFile "Common\Functions\Common_BackpackHasSpace.sqf";
+ EquipBackpack = Compile preprocessFile "Common\Functions\Common_EquipBackpack.sqf";
+};
+BuildingInRange = Compile preprocessFile "Common\Functions\Common_BuildingInRange.sqf";
+ChangeSideSupply = Compile preprocessFile "Common\Functions\Common_ChangeSideSupply.sqf";
+ChangeTeamFunds = Compile preprocessFile "Common\Functions\Common_ChangeTeamFunds.sqf";
+CreateMan = Compile preprocessFile "Common\Functions\Common_CreateUnit.sqf";
+CreateVehi = Compile preprocessFile "Common\Functions\Common_CreateVehicle.sqf";
+EquipArtillery = Compile preprocessFile "Common\Functions\Common_EquipArtillery.sqf";
+EquipLoadout = Compile preprocessFile "Common\Functions\Common_EquipLoadout.sqf";
+FireArtillery = Compile preprocessFile "Common\Functions\Common_FireArtillery.sqf";
+GetAIDigit = Compile preprocessFile "Common\Functions\Common_GetAIDigit.sqf";
+GetClientID = Compile preprocessFile "Common\Functions\Common_GetClientID.sqf";
+GetClientTeam = Compile preprocessFile "Common\Functions\Common_GetClientTeam.sqf";
+GetClosestLocation = Compile preprocessFile "Common\Functions\Common_GetClosestLocation.sqf";
+GetClosestLocationBySide = Compile preprocessFile "Common\Functions\Common_GetClosestLocationBySide.sqf";
+GetCommanderFromVotes = Compile preprocessFile "Common\Functions\Common_GetCommanderFromVotes.sqf";
+GetCommanderTeam = Compile preprocessFile "Common\Functions\Common_GetCommanderTeam.sqf";
+GetCommanderVotes = Compile preprocessFile "Common\Functions\Common_GetCommanderVotes.sqf";
+GetConfigInfo = Compile preprocessFile "Common\Functions\Common_GetConfigInfo.sqf";
+GetFactories = Compile preprocessFile "Common\Functions\Common_GetFactories.sqf";
+GetFriendlyCamps = Compile preprocessFile "Common\Functions\Common_GetFriendlyCamps.sqf";
+GetGroupFromConfig = Compile preprocessFile "Common\Functions\Common_GetGroupFromConfig.sqf";
+GetHostilesInArea = Compile preprocessFile "Common\Functions\Common_GetHostilesInArea.sqf";
+GetLiveUnits = Compile preprocessFile "Common\Functions\Common_GetLiveUnits.sqf";
+GetNamespace = Compile preprocessFile "Common\Functions\Common_GetNamespace.sqf";
+GetPositionFrom = Compile preprocessFile "Common\Functions\Common_GetPositionFrom.sqf";
+GetRandomPosition = Compile preprocessFile "Common\Functions\Common_GetRandomPosition.sqf";
+GetRespawnCamps = Compile preprocessFile "Common\Functions\Common_GetRespawnCamps.sqf";
+GetSafePlace = Compile preprocessFile "Common\Functions\Common_GetSafePlace.sqf";
+GetSideFromID = Compile preprocessFile "Common\Functions\Common_GetSideFromID.sqf";
+GetSideHQ = Compile preprocessFile "Common\Functions\Common_GetSideHQ.sqf";
+GetSideHQDeployed = Compile preprocessFile "Common\Functions\Common_GetSideHQDeployed.sqf";
+GetSideID = Compile preprocessFile "Common\Functions\Common_GetSideID.sqf";
+GetSideStructures = Compile preprocessFile "Common\Functions\Common_GetSideStructures.sqf";
+GetSideSupply = Compile preprocessFile "Common\Functions\Common_GetSideSupply.sqf";
+GetSideUpgrades = Compile preprocessFile "Common\Functions\Common_GetSideUpgrades.sqf";
+GetSideTowns = Compile preprocessFile "Common\Functions\Common_GetSideTowns.sqf";
+GetSleepFPS = Compile preprocessFile "Common\Functions\Common_GetSleepFPS.sqf";
+GetTeamArtillery = Compile preprocessFile "Common\Functions\Common_GetTeamArtillery.sqf";
+GetTeamAutonomous = Compile preprocessFile "Common\Functions\Common_GetTeamAutonomous.sqf";
+GetTeamFunds = Compile preprocessFile "Common\Functions\Common_GetTeamFunds.sqf";
+GetTeamMoveMode = Compile preprocessFile "Common\Functions\Common_GetTeamMoveMode.sqf";
+GetTeamMovePos = Compile preprocessFile "Common\Functions\Common_GetTeamMovePos.sqf";
+GetTeamRespawn = Compile preprocessFile "Common\Functions\Common_GetTeamRespawn.sqf";
+GetTeamType = Compile preprocessFile "Common\Functions\Common_GetTeamType.sqf";
+GetTeamVehicles = Compile preprocessFile "Common\Functions\Common_GetTeamVehicles.sqf";
+GetTotalCamps = Compile preprocessFile "Common\Functions\Common_GetTotalCamps.sqf";
+GetTotalCampsOnSide = Compile preprocessFile "Common\Functions\Common_GetTotalCampsOnSide.sqf";
+GetTotalSupplyValue = Compile preprocessFile "Common\Functions\Common_GetTotalSupplyValue.sqf";
+GetTownsHeld = Compile preprocessFile "Common\Functions\Common_GetTownsHeld.sqf";
+GetTownsIncome = Compile preprocessFile "Common\Functions\Common_GetTownsIncome.sqf";
+GetUnitsBelowHeight = Compile preprocessFile "Common\Functions\Common_GetUnitsBelowHeight.sqf";
+GetUnitVehicle = Compile preprocessFile "Common\Functions\Common_GetUnitVehicle.sqf";
+HandleArtillery = Compile preprocessFile "Common\Functions\Common_HandleArtillery.sqf";
+HandleIncomingMissile = Compile preprocessFile "Common\Functions\Common_HandleIncomingMissile.sqf";
+IsArtillery = Compile preprocessFile "Common\Functions\Common_IsArtillery.sqf";
+MarkerUpdate = Compile preprocessFile "Common\Common_MarkerUpdate.sqf";
+PlaceNear = Compile preprocessFile "Common\Functions\Common_PlaceNear.sqf";
+PlaceSafe = Compile preprocessFile "Common\Functions\Common_PlaceSafe.sqf";
+if !(WF_A2_Vanilla) then {
+ GetTurretsMags = Compile preprocessFile "Common\Functions\Common_GetTurretsMags.sqf";
+ GetVehicleMags = Compile preprocessFile "Common\Functions\Common_GetVehicleMags.sqf";
+ RearmVehicle = Compile preprocessFile "Common\Functions\Common_RearmVehicleOA.sqf";
+ SetTurretsMags = Compile preprocessFile "Common\Functions\Common_SetTurretsMags.sqf";
+} else {
+ RearmVehicle = Compile preprocessFile "Common\Functions\Common_RearmVehicle.sqf";
+};
+RevealArea = Compile preprocessFile "Common\Functions\Common_RevealArea.sqf";
+SetCommanderVotes = Compile preprocessFile "Common\Functions\Common_SetCommanderVotes.sqf";
+SetNamespace = Compile preprocessFile "Common\Functions\Common_SetNamespace.sqf";
+SetTeamAutonomous = Compile preprocessFile "Common\Functions\Common_SetTeamAutonomous.sqf";
+SetTeamRespawn = Compile preprocessFile "Common\Functions\Common_SetTeamRespawn.sqf";
+SetTeamMoveMode = Compile preprocessFile "Common\Functions\Common_SetTeamMoveMode.sqf";
+SetTeamMovePos = Compile preprocessFile "Common\Functions\Common_SetTeamMovePos.sqf";
+SetTeamType = Compile preprocessFile "Common\Functions\Common_SetTeamType.sqf";
+SpawnTurrets = Compile preprocessFile "Common\Functions\Common_SpawnTurrets.sqf";
+SortByDistance = Compile preprocessFile "Common\Functions\Common_SortByDistance.sqf";
+UnitKilled = Compile preprocessFile "Common\Functions\Common_UnitKilled.sqf";
+UpdateStatistics = Compile preprocessFile "Common\Functions\Common_UpdateStatistics.sqf";
+UseStationaryDefense = Compile preprocessFile "Common\Functions\Common_UseStationaryDefense.sqf";
+if (paramICBM) then {
+ NukeDammage = Compile preprocessFile "Client\Module\Nuke\damage.sqf";
+ NukeRadiation = Compile preprocessFile "Client\Module\Nuke\radzone.sqf";
+};
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Common: Functions - [Done]",diag_frameno,diag_tickTime];
+
+varQueu = (random 10)+(random 100)+(random 1000);
+
+EastCommanderTeam = ObjNull;
+WestCommanderTeam = ObjNull;
+
+/* Starting Supply */
+if (isNil "EastSupplies") then {EastSupplies = if (WF_Debug) then {900000} else {1200}};
+if (isNil "WestSupplies") then {WestSupplies = if (WF_Debug) then {900000} else {1200}};
+
+diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Common: Starting Supply (West: %1 East: %2) - [Done]",WestSupplies,EastSupplies,diag_frameno,diag_tickTime];
+
+/* Starting Money */
+['WFBE_EASTSTARTINGMONEY',if (WF_Debug) then {900000} else {800},false] Call SetNamespace;
+['WFBE_WESTSTARTINGMONEY',if (WF_Debug) then {900000} else {800},false] Call SetNamespace;
+
+diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Common: Starting Funds (West: %1 East: %2) - [Done]",'WFBE_WESTSTARTINGMONEY' Call GetNamespace,'WFBE_EASTSTARTINGMONEY' Call GetNamespace,diag_frameno,diag_tickTime];
+
+/* Allies */
+if (('WFBE_ALLIES' Call GetNamespace) > 0) then {
+ westAlliesFunds = ('WFBE_WESTSTARTINGMONEY' Call GetNamespace)*5;
+ eastAlliesFunds = ('WFBE_EASTSTARTINGMONEY' Call GetNamespace)*5;
+
+ diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Common: Allies Starting Funds (West: %1 East: %2) - [Done]",('WFBE_WESTSTARTINGMONEY' Call GetNamespace)*5,('WFBE_EASTSTARTINGMONEY' Call GetNamespace)*5,diag_frameno,diag_tickTime];
+};
+
+unitMarker = 0;
+
+for [{_count = 0},{_count < maxPlayers},{_count = _count + 1}] do {
+ Call Compile Format["if (IsNil 'EastTeam%1Vote') then {EastTeam%1Vote = -1}",_count + 1];
+ Call Compile Format["if (IsNil 'WestTeam%1Vote') then {WestTeam%1Vote = -1}",_count + 1];
+};
+
+/* Respawn Markers */
+createMarkerLocal ["respawn_east",getMarkerPos "EastTempRespawnMarker"];
+"respawn_east" setMarkerColorLocal "ColorGreen";
+"respawn_east" setMarkerShapeLocal "RECTANGLE";
+"respawn_east" setMarkerBrushLocal "BORDER";
+"respawn_east" setMarkerSizeLocal [15,15];
+"respawn_east" setMarkerAlphaLocal 0;
+createMarkerLocal ["respawn_west",getMarkerPos "WestTempRespawnMarker"];
+"respawn_west" setMarkerColorLocal "ColorGreen";
+"respawn_west" setMarkerShapeLocal "RECTANGLE";
+"respawn_west" setMarkerBrushLocal "BORDER";
+"respawn_west" setMarkerSizeLocal [15,15];
+"respawn_west" setMarkerAlphaLocal 0;
+
+/* Prepare the common constants */
+[] Call Compile preprocessFile "Common\Init\Init_CommonConstants.sqf";
+
+if (('WFBE_ISIS' Call GetNamespace) != 0) then {
+ ISIS_Heal = Compile preprocessFile "Client\Module\ISIS\ISIS_Heal.sqf";
+ ISIS_Wound = Compile preprocessFile "Client\Module\ISIS\ISIS_Wound.sqf";
+ ISIS_Wounded = Compile preprocessFile "Client\Module\ISIS\ISIS_Wounded.sqf";
+};
+
+/* Wait for BIS Module Init */
+waitUntil {!(isNil 'BIS_fnc_init')};
+waitUntil {BIS_fnc_init};
+
+/* CORE SYSTEM - Start
+ Different Core are added depending on the current ArmA Version running, add yours bellow.
+*/
+switch (true) do {
+ case WF_A2_Vanilla: {
+ /* Gear Core */
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_Vanilla_G.sqf';
+ /* Class Core */
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_CDF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_CIV.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_FR.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_GUE.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_INS.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_MVD.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_RU.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_Spetsnaz.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_USMC.sqf';
+
+ /* Call in the teams template - Vanilla */
+ [] Call Compile preprocessFile 'Common\Config\Core_Definition\Vanilla\Definition_USMC_RU.sqf';
+ };
+ case WF_A2_Arrowhead: {
+ /* Gear Core */
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_Arrowhead_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_BAF_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_PMC_G.sqf';
+ /* Class Core */
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_ACR.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAFD.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAFW.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_DeltaForce.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_KSK.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_PMC.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKA.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKCIV.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKGUE.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKSF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_US.sqf';
+
+ /* Call in the teams template - Arrowhead */
+ [] Call Compile preprocessFile 'Common\Config\Core_Definition\Arrowhead\Definition_US_TKA.sqf';
+ };
+ case WF_A2_CombinedOps: {
+ /* Gear Core */
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_Vanilla_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_Arrowhead_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_BAF_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_PMC_G.sqf';
+ /* Class Core */
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_ACR.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAFD.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_BAFW.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_CDF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_CIV.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_DeltaForce.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_FR.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_GUE.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_INS.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_KSK.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_MVD.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_PMC.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_RU.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_Spetsnaz.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKA.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKCIV.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKGUE.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_TKSF.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_US.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_USMC.sqf';
+
+ /* Call in the teams template - Combined Operations */
+ [] Call Compile preprocessFile 'Common\Config\Core_Definition\CombinedOps\Definition_US_RU.sqf';
+
+ /* Mods */
+ if (WF_ACE) then {
+ [] Call Compile preprocessFile 'Common\Config\Core_Gear\Core_ACE_G.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_ACE_US_D.sqf';
+ [] Call Compile preprocessFile 'Common\Config\Core\Core_ACE_US_W.sqf';
+ };
+ };
+};
+/* CORE SYSTEM - End */
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Common: Core Loading - [Done]",diag_frameno,diag_tickTime];
+
+//--- Common Exec.
+[] Call Compile preprocessFile "Common\Init\Init_PublicVariables.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Special.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Artillery.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Barracks.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_LightFactory.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_HeavyFactory.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_AircraftFactory.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Airport.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Depot.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Structures.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Squads.sqf";
+[] Call Compile preprocessFile "Common\Config\Config_Loadouts.sqf";
+
+//--- Server Exec.
+if (isServer) then {
+ [] Call Compile preprocessFile "Common\Config\Config_Resistance.sqf";
+ [] Call Compile preprocessFile "Common\Config\Config_Occupation.sqf";
+
+ //--- Allies.
+ if (('WFBE_ALLIES' Call GetNamespace) > 0) then {[] Call Compile preprocessFile "Common\Config\Config_Allies.sqf"};
+};
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Common: Config Loading - [Done]",diag_frameno,diag_tickTime];
+
+//--- Boundaries, use setPos to find the perfect spot on other islands and worldName to determine the island name (editor: diag_log worldName; player setPos [0,5120,0]; ).
+[] Call Compile preprocessFile "Common\Init\Init_Boundaries.sqf";
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Common: Boundaries Loading - [Done]",diag_frameno,diag_tickTime];
+
+//--- Neighbors
+if (('WFBE_TOWNCONQUESTMODE' Call GetNamespace) > 0) then {[] Call Compile preprocessFile "Common\Init\Init_Neighbors.sqf"};
+
+//--- CIPHER Module - Functions.
+[] Call Compile preprocessFile "Common\Module\CIPHER\CIPHER_Init.sqf";
+
+//--- Common initilization is complete at this point.
+diag_log Format["[WFBE (INIT)][frameno:%2 | ticktime:%3] Init_Common: Init End at %1",time,diag_frameno,diag_tickTime];
+commonInitComplete = true;
+
+//--- Variable Destruction.
+{Call Compile Format ["%1 = nil",_x]} forEach ['WFBE_V_West_UnitsRootVersion','WFBE_V_East_UnitsRootVersion','WFBE_V_West_Faction',
+'WFBE_V_East_Faction','WFBE_V_East_SquadsFaction','WFBE_V_West_SquadsFaction','WFBE_V_East_SquadsRootVersion','WFBE_V_West_SquadsRootVersion','WFBE_V_East_Loadout',
+'WFBE_V_West_Loadout','WFBE_V_East_LoadoutRootVersion','WFBE_V_West_LoadoutRootVersion','WFBE_V_West_StructuresFaction','WFBE_V_East_StructuresFaction','WFBE_V_East_StructuresRootVersion',
+'WFBE_V_West_StructuresRootVersion','WFBE_V_West_ArtilleryRootVersion','WFBE_V_West_ArtilleryFaction','WFBE_V_East_ArtilleryRootVersion','WFBE_V_East_ArtilleryFaction']; \ No newline at end of file
diff --git a/Common/Init/Init_CommonConstants.sqf b/Common/Init/Init_CommonConstants.sqf
new file mode 100644
index 0000000..58cfc6c
--- /dev/null
+++ b/Common/Init/Init_CommonConstants.sqf
@@ -0,0 +1,492 @@
+Private ['_resType'];
+
+/* DO NOT CHANGE! */
+EASTID = 128;
+WESTID = 256;
+RESISTANCEID = 512;
+/* DO NOT CHANGE! */
+QUERYUNITLABEL = 0;
+QUERYUNITPICTURE = 1;
+QUERYUNITPRICE = 2;
+QUERYUNITTIME = 3;
+QUERYUNITCREW = 4;
+QUERYUNITUPGRADE = 5;
+QUERYUNITFACTORY = 6;
+QUERYUNITSKILL = 7;
+QUERYUNITFACTION = 8;
+QUERYUNITTURRETS = 9;
+/* DO NOT CHANGE! */
+QUERYGEARLABEL = 0;
+QUERYGEARPICTURE = 1;
+QUERYGEARCLASS = 2;
+QUERYGEARTYPE = 3;
+QUERYGEARCOST = 4;
+QUERYGEARUPGRADE = 5;
+QUERYGEARALLOWED = 6;
+QUERYGEARHANDGUNPOOL = 7;
+QUERYGEARMAGAZINES = 8;
+QUERYGEARSPACE = 9;
+QUERYGEARALLOWTWO = 10;
+
+/* IMPORTANT: New Getter/Setter, variable are stored into missionNamespace, the true/false variable define whether we shall override an existing variable or not */
+//--- How long a vehicle last empty before being sweeped.
+['WFBE_ABANDONVEHICLETIMER',1200,false] Call SetNamespace;
+//--- AI Commander will move the base after this laps of time if all conditions are met.
+['WFBE_AICOMMANDERMOVEINTERVAL',3600,true] Call SetNamespace;
+//--- Global AI Skill (only used over units not present in core).
+['WFBE_AISKILL',0.7,true] Call SetNamespace;
+//--- Maximum AIs that will be able to man defense within the barracks area.
+['WFBE_AIDEFENSE',30,false] Call SetNamespace;
+//--- Allies Parameters (0 Disabled, 1 West, 2 East, 3 both).
+['WFBE_ALLIES',0,false] Call SetNamespace;
+//--- Anti Air Radar Z offset detection.
+['WFBE_ANTIAIRRADARDETECTION',100,true] Call SetNamespace;
+//--- Artillery Computer (0: Disabled, 1: Enabled on Upgrade, 2: Enabled).
+['WFBE_ARTILLERYCOMPUTER',1,false] Call SetNamespace;
+//--- Artillery Range.
+['WFBE_ARTILLERYMAXRANGE',3,false] Call SetNamespace;
+//--- Artillery Laser Detection Range (Per Shell).
+['WFBE_ARTILLERYAMMOLASERRANGE',175,true] Call SetNamespace;
+//--- Artillery SADARM Detection Range (Distance from the core).
+['WFBE_ARTILLERYAMMOSADARMRANGE',200,true] Call SetNamespace;
+//--- Price Focus. (0: Default, 1: Infantry, 2: Tanks, 3: Air).
+['WFBE_BALANCEPRICE',0,false] Call SetNamespace;
+//--- Balanced units.
+['WFBE_BALANCEDUNITS',['HMMWV_Avenger','M6_EP1','Ka52','Ka52Black'],true] Call SetNamespace;
+//--- Base Area Limits.
+['WFBE_BASEAREARANGE',250,true] Call SetNamespace;
+['WFBE_BASEAREAMAX',2,false] Call SetNamespace;
+//--- Bounty Coefficient Modifier (Blood money).
+['WFBE_BOUNTYMODIFIER',0.25,true] Call SetNamespace;
+//--- Bounty Coefficient Modifier, Kill Assist (bounty = (Unit price * WFBE_BOUNTYMODIFIER) * WFBE_BOUNTYMODIFIERASSIST).
+['WFBE_BOUNTYMODIFIERASSIST',0.5,true] Call SetNamespace;
+//--- Building Damage Reduction (Current damage given / x, 1 = normal).
+['WFBE_BUILDINGDAMAGEREDUCTION',6,true] Call SetNamespace;
+//--- Building is sold after x seconds.
+['WFBE_BUILDINGSELLDELAY',240,true] Call SetNamespace;
+//--- Building Limits.
+['WFBE_BUILDINGMAXBARRACKS',3,false] Call SetNamespace;
+['WFBE_BUILDINGMAXLIGHT',3,false] Call SetNamespace;
+['WFBE_BUILDINGMAXCOMMANDCENTER',3,false] Call SetNamespace;
+['WFBE_BUILDINGMAXHEAVY',3,false] Call SetNamespace;
+['WFBE_BUILDINGMAXAIRCRAFT',3,false] Call SetNamespace;
+['WFBE_BUILDINGMAXSERVICEPOINT',6,false] Call SetNamespace;
+//--- Bounty received by player whenever he capture a camp.
+['WFBE_CAMPCAPTUREBOUNTY',100,true] Call SetNamespace;
+//--- Civilian Faction (first is nil).
+if (WF_A2_Vanilla) then {['WFBE_CIVILIANFACTIONS',['','Chernarus Civilians'],true] Call SetNamespace};
+if (WF_A2_Arrowhead) then {['WFBE_CIVILIANFACTIONS',['','Takistan Civilians'],true] Call SetNamespace};
+if (WF_A2_CombinedOps) then {['WFBE_CIVILIANFACTIONS',['','Takistan Civilians','Chernarus Civilians'],true] Call SetNamespace};
+['WFBE_CIVILIANFACTION',0,false] Call SetNamespace;
+//--- Killed Civilians bring a $xxx penalty to the player.
+['WFBE_CIVILIANPENALTY',2500,true] Call SetNamespace;
+//--- Command Center Range.
+['WFBE_COMMANDCENTERRANGE',50000,true] Call SetNamespace;
+//--- Commander bounties.
+['WFBE_COMMANDERBUILDSCORE',1,true] Call SetNamespace;
+['WFBE_COMMANDERTOWNCAPTURECOEF',30,true] Call SetNamespace;
+['WFBE_COMMANDERTOWNCAPTURESCORE',1,true] Call SetNamespace;
+['WFBE_COMMANDERUPGRADESCORE',1,true] Call SetNamespace;
+//--- Counter Measures.
+['WFBE_COUNTERMEASUREPLANES',64,true] Call SetNamespace;
+['WFBE_COUNTERMEASURECHOPPERS',32,true] Call SetNamespace;
+//--- Crew Cost.
+['WFBE_CREWCOST',120,true] Call SetNamespace;
+//--- Within 250 meters, units on defense mode will board defenses.
+['WFBE_DEFENSEMANRANGE',250,false] Call SetNamespace;
+//--- Supply Trucks (Clients) delivery range.
+['WFBE_DELIVERYRANGE',30,true] Call SetNamespace;
+//--- Patrolling Range Ratio.
+['WFBE_DETECTIONTOPATROLRANGERATIO',0.4,true] Call SetNamespace;
+//--- Fast Time skip time rate index.
+['WFBE_FASTTIMERATE',0,false] Call SetNamespace;
+//--- Fast time rates (Seconds = value * 60 * 60).
+['WFBE_FASTTIMERATES',[0,0.000555,0.000833,0.00111,0.00138,0.00277,0.00416,0.00555,0.00694,0.00833],true] Call SetNamespace;
+//--- Fast Travel (0 Disabled, 1 Free, 2 Fee).
+['WFBE_FASTTRAVEL',1,false] Call SetNamespace;
+['WFBE_FASTTRAVELMAXRANGE',3500,true] Call SetNamespace;
+['WFBE_FASTTRAVELPRICEKM',215,true] Call SetNamespace;
+['WFBE_FASTTRAVELRANGE',175,true] Call SetNamespace;
+['WFBE_FASTTRAVELTIMECOEF',1,true] Call SetNamespace;
+//--- Fire mission interval.
+['WFBE_FIREMISSIONTIMEOUT0',300,true] Call SetNamespace;
+['WFBE_FIREMISSIONTIMEOUT1',250,true] Call SetNamespace;
+['WFBE_FIREMISSIONTIMEOUT2',200,true] Call SetNamespace;
+['WFBE_FIREMISSIONTIMEOUT3',150,true] Call SetNamespace;
+//--- Coef per supply delivery.
+['WFBE_FUNDSPERSUPPLYPOINT',2,true] Call SetNamespace;
+//--- Distance above which units are able to perform an HALO jump.
+['WFBE_HALOJUMPHEIGHT',200,true] Call SetNamespace;
+//--- HQ Deploy / Mobilize Price.
+['WFBE_HQDEPLOYPRICE',100,false] Call SetNamespace;
+//--- MHQ Deploy Range.
+['WFBE_HQDEPLOYRANGE',120,false] Call SetNamespace;
+//--- Income Interval (Delay between each paycheck).
+['WFBE_INCOMEINTERVAL',60,false] Call SetNamespace;
+//--- Income System (1:Full, 2:Half (Half -> 120 SV Town = 60$ / 60SV), 3: Commander System, 4: Commander System: Full)
+['WFBE_INCOMESYSTEM',4,false] Call SetNamespace;
+//--- Incoming Guided missiles Range limit (0 = Disabled).
+['WFBE_INCOMINGMISSILEMAXRANGE',0,false] Call SetNamespace;
+//--- ISIS, Injury System (0: Disabled, 1: Leaders only, 2: All).
+['WFBE_ISIS',0,false] Call SetNamespace;
+//--- Map Coloration System (0: Default, 1: Nato).
+['WFBE_MAPCOLORATION',0,false] Call SetNamespace;
+//--- Time that a marker remain on a dead unit.
+['WFBE_MARKERDEADDELAY',60,true] Call SetNamespace;
+//--- Maximum spread area of artillery support.
+['WFBE_MAXARTILLERYAREA',300,true] Call SetNamespace;
+//--- Maximum rate of a camp's capture affecting a town.
+['WFBE_MAXCAMPCAPTURERATE',5,true] Call SetNamespace;
+//--- Maximum Client Group size.
+['WFBE_MAXGROUPSIZE',14,false] Call SetNamespace;
+['WFBE_MAXGROUPSIZEAI',10,false] Call SetNamespace;
+//--- Skill (Soldiers), have more units than the others.
+['WFBE_MAXGZBONUSSKILL',6,true] Call SetNamespace;
+//--- Maximum amount of supply truck per side (AI).
+['WFBE_MAXAISUPPLYTRUCKS',5,true] Call SetNamespace;
+//--- Maximum Clutter Distance (Grass).
+['WFBE_MAXCLUTTERDISTANCE',50,false] Call SetNamespace;
+//--- Maximum Supply per trucks.
+['WFBE_MAXSUPPLYTRUCKSSV0',5,true] Call SetNamespace;
+['WFBE_MAXSUPPLYTRUCKSSV1',7,true] Call SetNamespace;
+['WFBE_MAXSUPPLYTRUCKSSV2',10,true] Call SetNamespace;
+//--- Maximum Client Side View Distance.
+['WFBE_MAXVIEWDISTANCE',4000,false] Call SetNamespace;
+//--- HQ Building Range.
+['WFBE_MHQBUILDINGRANGE',120,true] Call SetNamespace;
+//--- HQ Repair Price.
+['WFBE_MHQREPAIRPRICE',if !(paramMoneyOnly) then {25000} else {50000},true] Call SetNamespace;
+//--- Occupation 'part' (faction) to be used, keep the alias (US..USMC) the same as the files in Core_Occupation.
+if (WF_A2_Vanilla) then {
+ ['WFBE_OCCUPATIONWESTFACTIONS',['CDF','USMC'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTIONS',['INS','RU'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONWESTFACTION',1,false] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTION',1,false] Call SetNamespace;
+};
+if (WF_A2_Arrowhead) then {
+ ['WFBE_OCCUPATIONWESTFACTIONS',['US'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTIONS',['TKA'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONWESTFACTION',0,false] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTION',0,false] Call SetNamespace;
+};
+if (WF_A2_CombinedOps) then {
+ ['WFBE_OCCUPATIONWESTFACTIONS',['CDF','US','USMC'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTIONS',['INS','RU','TKA'],true] Call SetNamespace;
+ ['WFBE_OCCUPATIONWESTFACTION',1,false] Call SetNamespace;
+ ['WFBE_OCCUPATIONEASTFACTION',1,false] Call SetNamespace;
+};
+//--- East or West Inactive period before being removed (town).
+['WFBE_OCCUPATIONINACTIVETIME',300,true] Call SetNamespace;
+//--- Maximum man-able defenses per town.
+['WFBE_OCCUPATIONMAXDEFENSES',20,true] Call SetNamespace;
+//--- Delay between each occupation reinforcement spawned in town.
+['WFBE_OCCUPATIONREINFORCEMENTDELAY',300,true] Call SetNamespace;
+//--- Town Occupation SV floor.
+['WFBE_OCCUPATIONTEAM1',20,true] Call SetNamespace;
+['WFBE_OCCUPATIONTEAM2',40,true] Call SetNamespace;
+['WFBE_OCCUPATIONTEAM3',60,true] Call SetNamespace;
+['WFBE_OCCUPATIONTEAM4',80,true] Call SetNamespace;
+['WFBE_OCCUPATIONTEAM5',100,true] Call SetNamespace;
+['WFBE_OCCUPATIONTEAM6',120,true] Call SetNamespace;
+//--- Town Occupation AA SV floor.
+['WFBE_OCCUPATIONAATEAM1',50,true] Call SetNamespace;
+['WFBE_OCCUPATIONAATEAM2',100,true] Call SetNamespace;
+//--- Maximum seconds off the map limits.
+['WFBE_OFFMAPMAXTIME',30,true] Call SetNamespace;
+//--- Paratroopers Call Interval.
+['WFBE_PARADELAY',1200,true] Call SetNamespace;
+//--- Unit Patrol Radius.
+['WFBE_PATROLRANGE',400,true] Call SetNamespace;
+//--- Purchase Unit Range.
+['WFBE_PURCHASEUNITSRANGE',150,true] Call SetNamespace;
+['WFBE_PURCHASEUNITSRANGEAIR',50,true] Call SetNamespace;
+//--- Purchase Gear Range.
+['WFBE_PURCHASEGEARRANGE',150,true] Call SetNamespace;
+//--- Repair truck repair range.
+['WFBE_REPAIRTRUCKRANGE',40,true] Call SetNamespace;
+//--- Resistance 'part' (faction) to be used, don't forget to define the types bellow for patrol & strikers, keep the alias (GUE..TKGUE) the same as the files in Core_Resistance.
+if (WF_A2_Vanilla) then {
+ ['WFBE_RESISTANCEFACTIONS',['GUE'],true] Call SetNamespace;
+ ['WFBE_RESISTANCEFACTION',0,false] Call SetNamespace;
+};
+if (WF_A2_Arrowhead) then {
+ ['WFBE_RESISTANCEFACTIONS',['PMC','TKGUE'],true] Call SetNamespace;
+ ['WFBE_RESISTANCEFACTION',1,false] Call SetNamespace;
+};
+if (WF_A2_CombinedOps) then {
+ ['WFBE_RESISTANCEFACTIONS',['GUE','PMC','TKGUE'],true] Call SetNamespace;
+ ['WFBE_RESISTANCEFACTION',2,false] Call SetNamespace;
+};
+//--- Resistance Inactive period before being removed (town).
+['WFBE_RESISTANCEINACTIVETIME',300,true] Call SetNamespace;
+//--- Delay between each resistance reinforcement spawned in town.
+['WFBE_RESISTANCEREINFORCEMENTDELAY',240,true] Call SetNamespace;
+//--- Respawn Camps (0: Disabled, 1: Classic [from town center], 2: Enhanced [from nearby camps]).
+['WFBE_RESPAWNCAMPSMODE',2,false] Call SetNamespace;
+//--- Respawn Camps Rule (0: Disabled, 1: West | East, 2: West | East | Resistance).
+['WFBE_RESPAWNCAMPSRULEMODE',2,false] Call SetNamespace;
+//--- Respawn Delay (Players/AI).
+['WFBE_RESPAWNDELAY',30,false] Call SetNamespace;
+//--- Respawn Penalty (0: None, 1: Remove All, 2: Pay full gear price, 3: Pay 1/2 gear price, 4: pay 1/4 gear price, 5: Charge on Mobile).
+['WFBE_RESPAWNPENALTY',5,false] Call SetNamespace;
+//--- How far a player need to be from a town to spawn at camps.
+['WFBE_RESPAWNRANGE',550,false] Call SetNamespace;
+['WFBE_RESPAWNMINRANGE',50,true] Call SetNamespace;
+//--- How far a player need to be from a mobile respawn in order to spawn on it.
+['WFBE_RESPAWNMOBILERANGE0',250,true] Call SetNamespace;
+['WFBE_RESPAWNMOBILERANGE1',350,true] Call SetNamespace;
+['WFBE_RESPAWNMOBILERANGE2',500,true] Call SetNamespace;
+//--- Advanced Aircraft restriction.
+['WFBE_RESTRICTIONADVAIR',0,false] Call SetNamespace;
+//--- Salvager Sell %.
+['WFBE_SALVAGERPERCENT',30,true] Call SetNamespace;
+//--- Salvager's Range.
+['WFBE_SALVAGERRANGE',20,true] Call SetNamespace;
+//--- Score Gained per town assist.
+['WFBE_SCOREASSISTCAPTURETOWN',5,true] Call SetNamespace;
+//--- Points Gained per camp captire.
+['WFBE_SCORECAPTURECAMP',1,true] Call SetNamespace;
+//--- Score Gained per town capture.
+['WFBE_SCORECAPTURETOWN',10,true] Call SetNamespace;
+//--- Points Received per Supply delivery.
+['WFBE_SCOREPERSUPPLYPOINT',2,true] Call SetNamespace;
+//--- Service points action range.
+['WFBE_SERVICEPOINTRANGE',50,true] Call SetNamespace;
+//--- Sides need at last xkm of distance between them.
+['WFBE_SIDESTARTINGDISTANCE',5000,false] Call SetNamespace;
+//--- Starting Locations Mode: 0 = WN|ES; 1 = WS|EN; 2 = Random;
+['WFBE_STARTINGLOCATIONMODE',2,false] Call SetNamespace;
+//--- When a structure is sold, x% of supply goes back to the side.
+['WFBE_STRUCTURESELLPERCENT',40,false] Call SetNamespace;
+//--- Supply System (0: Trucks, 1: Automatic with time).
+['WFBE_SUPPLYSYSTEM',0,false] Call SetNamespace;
+//--- If SUPPLYSYSTEM == 1 then, we increase of SUPPLYSYSTEMINCREASE each SUPPLYSYSTEMINCREASETIME.
+['WFBE_SUPPLYSYSTEMINCREASE0',1,true] Call SetNamespace;
+['WFBE_SUPPLYSYSTEMINCREASE1',2,true] Call SetNamespace;
+['WFBE_SUPPLYSYSTEMINCREASE2',3,true] Call SetNamespace;
+['WFBE_SUPPLYSYSTEMINCREASETIME',60,true] Call SetNamespace;
+//--- Action range for repair/rearm/refuel.
+['WFBE_SUPPORTRANGE',70,true] Call SetNamespace;
+//--- Price of Support (Base), note that Rearm, Refuel and Repair are using Ratio.
+['WFBE_SUPPORTHEALPRICE',100,true] Call SetNamespace;
+['WFBE_SUPPORTREARMPRICE',4,true] Call SetNamespace;
+['WFBE_SUPPORTREFUELPRICE',16,true] Call SetNamespace;
+['WFBE_SUPPORTREPAIRPRICE',2,true] Call SetNamespace;
+//--- Amount of time required to be able to use an action from the support menu again.
+['WFBE_SUPPORTHEALTIME',25,true] Call SetNamespace;
+['WFBE_SUPPORTREARMTIME',30,true] Call SetNamespace;
+['WFBE_SUPPORTREFUELTIME',20,true] Call SetNamespace;
+['WFBE_SUPPORTREPAIRTIME',40,true] Call SetNamespace;
+//--- Money to be deducted from a teamkiller.
+['WFBE_TEAMKILLPENALTY',500,true] Call SetNamespace;
+//--- Thermal Imaging (0: Disabled, 1: Weapons, 2: Vehicles, 3: All).
+['WFBE_THERMALIMAGING',3,false] Call SetNamespace;
+//--- Bounty received by player whenever he get an assist in a town.
+['WFBE_TOWNASSISTCAPTUREBOUNTY',175,true] Call SetNamespace;
+['WFBE_TOWNMISSIONASSISTCAPTUREBOUNTY',350,true] Call SetNamespace;
+//--- Restrict use of build menu if the player is near a town.
+['WFBE_TOWNBUILDPROTECTIONRANGE',450,false] Call SetNamespace;
+//--- Range Coefficient whenever a player get an assist in a town.
+['WFBE_TOWNCAPTUREASSISTRANGEMODIFIER',0.6,true] Call SetNamespace;
+//--- Bounty received by player whenever he capture a town.
+['WFBE_TOWNCAPTUREBOUNTY',400,true] Call SetNamespace;
+['WFBE_TOWNMISSIONCAPTUREBOUNTY',800,true] Call SetNamespace;
+//--- Town capture mode (0: normal, 1: threshold, 2: all camps[Best Use with PvP]).
+['WFBE_TOWNCAPTUREMODE',1,false] Call SetNamespace;
+//--- Town Depot capture range.
+['WFBE_TOWNCAPTURERANGE',40,true] Call SetNamespace;
+//--- Town Depot capture range (Threshold Capture mode).
+['WFBE_TOWNCAPTURERANGETHRESHOLD',50,true] Call SetNamespace;
+//--- Town Capture rate.
+['WFBE_TOWNCAPTURERATE',1,true] Call SetNamespace;
+//--- Town Conquest mode (0: None, 1: Territoriality 2: (tbd) commander task set). - TODO
+['WFBE_TOWNCONQUESTMODE',0,false] Call SetNamespace;
+//--- Buy Gear From (0: None, 1: Camps, 2: Depot, 3: Camps & Depot).
+['WFBE_TOWNGEAR',1,false] Call SetNamespace;
+//--- Amount of Waypoints given to the AI Patrol in towns (Higher is wider).
+['WFBE_TOWNPATROLHOPS',5,true] Call SetNamespace;
+//--- Town Purchase range.
+['WFBE_TOWNPURCHASERANGE',30,true] Call SetNamespace;
+//--- Town occupation Difficulty (1: Light, 2: Medium, 3: Hard, 4: Insane, 5: Auto).
+['WFBE_TOWNOCCUPATIONDIFFICULTY',1,false] Call SetNamespace;
+//--- Town resistance Difficulty (1: Light, 2: Medium, 3: Hard, 4: Insane).
+['WFBE_TOWNRESISTANCEDIFFICULTY',1,false] Call SetNamespace;
+//--- Town starting mode (0: Resistance, 1: 50% blu, 50% red, 2: Nearby Towns, 3: Random).
+['WFBE_TOWNSTARTINGMODE',0,false] Call SetNamespace;
+//--- Distance between each defensive waypoints.
+['WFBE_TOWNUNITSDEFENSEDISTANCE',30,true] Call SetNamespace;
+//--- Distance between each patrolling waypoints.
+['WFBE_TOWNUNITSPATROLDISTANCE',360,true] Call SetNamespace;
+//--- Unit will spawn within this range.
+['WFBE_TOWNUNITSPAWNRANGE',75,true] Call SetNamespace;
+//--- Interval between each uav spotting routine.
+['WFBE_UAVSPOTTINGDELAY',20,true] Call SetNamespace;
+//--- UAV will reveal each targets that it knows about this value (0-4)
+['WFBE_UAVSPOTTINGDETECTION',0.21,true] Call SetNamespace;
+//--- Max Range of the UAV spotting.
+['WFBE_UAVSPOTTINGRANGE',900,true] Call SetNamespace;
+//--- Units cleaning delay.
+['WFBE_UNITREMOVEDLAY',300,false] Call SetNamespace;
+//--- Victory Condition (0: Annihilation, 1: Assassination, 2: Supremacy, 3: Towns).
+['WFBE_VICTORYCONDITION',2,false] Call SetNamespace;
+//--- Commander vote time.
+['WFBE_VOTETIME',if (WF_Debug) then {6} else {60},true] Call SetNamespace;
+//--- Weather Type, 0: Clear, 1: Cloudy, 2: Rainy, 3: Dynamic)
+['WFBE_WEATHER',0,false] Call SetNamespace;
+//--- Weather Transition period (longer is more realistic).
+['WFBE_WEATHERTRANSITION',600,true] Call SetNamespace;
+//--- Proper worlds (Radio town localization).
+['WFBE_WORLDWHITELISTOA',["Zargabad","Takistan"],true] Call SetNamespace;
+['WFBE_WORLDWHITELISTVA',["chernarus","utes"],true] Call SetNamespace;
+
+if (paramUseWorkers) then {
+ //--- Minimal Distance in order to start building.
+ ['WFBE_WORKERS_BUILDDISTANCE',30,true] Call SetNamespace;
+ //--- Degredation of the building in time during a repair phase (over 100).
+ ['WFBE_WORKERS_DEGRADATION',1,true] Call SetNamespace;
+ //--- Maximum Workers per side.
+ ['WFBE_WORKERS_MAX',10,true] Call SetNamespace;
+ //--- Maximal Traveling distance.
+ ['WFBE_WORKERS_MAXRANGE',650,true] Call SetNamespace;
+ //--- Workers Models.
+ ['WFBE_WORKERS_MODELS_EAST',if (WF_A2_Vanilla) then {["Worker3","Worker1"]} else {["TK_CIV_Worker01_EP1"]}, true] Call SetNamespace;
+ ['WFBE_WORKERS_MODELS_WEST',if (WF_A2_Vanilla) then {["Worker2","Worker4"]} else {["TK_CIV_Worker02_EP1"]}, true] Call SetNamespace;
+ //--- Worker Price
+ ['WFBE_WORKERS_PRICE',500,true] Call SetNamespace;
+ //--- Build Speed Ratio.
+ ['WFBE_WORKERS_RATIO',2,true] Call SetNamespace;
+ //--- Health Point fixed during a repair.
+ ['WFBE_WORKERS_REPAIR',0.0075,true] Call SetNamespace;
+ //--- Ruins model.
+ ['WFBE_WORKERS_RUINS',if (WF_A2_Vanilla) then {"Land_budova4_ruins"} else {"Land_Mil_Barracks_i_ruins_EP1"}, true] Call SetNamespace;
+};
+
+//--- Build area (Radius/Height).
+['WFBE_AREAHQDEPLOYED',[('WFBE_HQDEPLOYRANGE' Call GetNamespace),25],true] Call SetNamespace;
+['WFBE_AREAHQUNDEPLOYED',[('WFBE_HQDEPLOYRANGE' Call GetNamespace)/2,15],true] Call SetNamespace;
+['WFBE_AREAREPAIRTRUCK',[45,10],true] Call SetNamespace;
+
+//--- Construction Module, Flat Detection.
+if (WF_A2_Vanilla) then {
+ ['WFBE_COINMINDISTANCE',8,true] Call SetNamespace;
+ ['WFBE_COINMAXGRADIENT',4,true] Call SetNamespace;
+} else {
+ ['WFBE_COINMINDISTANCE',24,true] Call SetNamespace;
+ ['WFBE_COINMAXGRADIENT',4,true] Call SetNamespace;
+};
+
+//--- Resistance Island Patrol System.
+['WFBE_RESPATROLINTERVAL',1200,true] Call SetNamespace;
+['WFBE_RESPATROL',0,false] Call SetNamespace;
+
+//--- Resistance Strikers.
+['WFBE_RESSTRIKERINTERVAL',1800,true] Call SetNamespace;
+['WFBE_RESSTRIKER',0,false] Call SetNamespace;
+
+/* UPGRADE SYSTEM: */
+//--- Important: If you add any other upgrades, add them at the end, also add a new 0 to init_server.sqf upgrade array.
+
+//--- Desc-Array - added MrNiceGuy
+['WFBE_UPGRADEDESCRIPTION',
+ [localize 'STR_WF_UPGRADE_barracks_Desc',localize 'STR_WF_UPGRADE_lightfactory_Desc',localize 'STR_WF_UPGRADE_heavyfactory_Desc',localize 'STR_WF_UPGRADE_aircraftfactory_Desc',
+ localize 'STR_WF_UPGRADE_Paratroop_Desc',localize 'STR_WF_UPGRADE_uav_Desc',localize 'STR_WF_UPGRADE_Supply_Desc',localize 'STR_WF_UPGRADE_RespawnRange_Desc',
+ localize 'STR_WF_UPGRADE_Airlift_Desc',localize 'STR_WF_UPGRADE_Countermeasures_Desc',localize 'STR_WF_UPGRADE_ArtilleryUpgrade_Desc',localize 'STR_WF_UPGRADE_ICBM_Desc',
+ localize 'STR_WF_UPGRADE_FastTravel_Desc',localize 'STR_WF_UPGRADE_Gear_Desc',localize 'STR_WF_UPGRADE_Ammo_Desc',localize 'STR_WF_UPGRADE_EASA_Desc',
+ localize 'STR_WF_UPGRADE_Paradrop_Desc',localize 'STR_WF_UPGRADE_ArtilleryAmmo_Desc'],
+ true
+] Call SetNamespace;
+
+['WFBE_UPGRADELABELS',
+ [localize 'strwfbarracks',localize 'strwflightfactory',localize 'strwfheavyfactory',localize 'strwfaircraftfactory',localize 'STR_WF_TACTICAL_Paratroop',
+ localize 'str_dn_uav',localize 'STR_WF_UPGRADE_Supply',localize 'STR_WF_UPGRADE_RespawnRange',localize 'STR_WF_UPGRADE_Airlift',localize 'STR_WF_UPGRADE_Countermeasures',
+ localize 'STR_WF_UPGRADE_ArtilleryUpgrade',localize 'STR_WF_ICBM',localize 'STR_WF_TACTICAL_FastTravel',localize 'STR_WF_UPGRADE_Gear',localize 'STR_WF_Ammo','EASA',
+ localize 'STR_WF_TACTICAL_Paradrop', localize 'STR_WF_UPGRADE_ArtilleryAmmo'],
+ true
+] Call SetNamespace;
+//--- Amount of upgrade levels.
+['WFBE_UPGRADELEVELS',[3,3,3,3,3,1,2,2,1,1,3,1,1,3,1,1,1,3],true] Call SetNamespace;
+//--- [upgrade index, upgrade level].
+['WFBE_UPGRADEDEPENDENCIES',[[],[],[],[],[3,1],[3,2],[],[1,2],[],[3,1],[2,1],[3,3],[],[0,1],[13,3],[3,3],[8,1],[10,3]],true] Call SetNamespace;
+//--- Special condition.
+['WFBE_UPGRADECONDITION',[true,true,true,true,true,true,true,true,true,paramCounterMeasures,paramArty,paramICBM,if (('WFBE_FASTTRAVEL' Call GetNamespace) > 0) then {true} else {false},true,true,paramEASA,true,true],true] Call SetNamespace;
+//--- [Supply,Money].
+['WFBE_UPGRADEPRICESLEVEL1',[[300,750],[800,1850],[3600,4000],[5600,11000],[3200,7400],[2500,5600],[1800,6200],[500,1800],[950,2450],[3400,8200],[1200,2950],[50000,80000],[1350,3550],[250,500],[750,2250],[4400,12500],[3250,8800],[2400,4550]],true] Call SetNamespace;
+['WFBE_UPGRADEPRICESLEVEL2',[[400,1150],[1400,2450],[4500,6750],[7600,16000],[3800,8700],[],[3600,12400],[700,2400],[],[],[1800,4400],[],[],[650,2550],[],[],[],[3500,8500]],true] Call SetNamespace;
+['WFBE_UPGRADEPRICESLEVEL3',[[500,1620],[1900,3400],[5500,8050],[9500,21250],[4400,9800],[],[],[],[],[],[3000,7500],[],[],[1400,4250],[],[],[],[6200,12000]],true] Call SetNamespace;
+//--- Time required per upgrade.
+['WFBE_UPGRADETIMESLEVEL1',[40,60,80,100,120,120,140,120,100,120,100,240,260,180,170,160,140,120],true] Call SetNamespace;
+['WFBE_UPGRADETIMESLEVEL2',[60,80,100,120,140,0,160,140,0,0,140,0,0,200,0,0,0,140],true] Call SetNamespace;
+['WFBE_UPGRADETIMESLEVEL3',[80,100,120,180,160,0,0,0,0,0,160,0,0,220,0,0,0,160],true] Call SetNamespace;
+// ['WFBE_UPGRADETIMESLEVEL1',[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],true] Call SetNamespace;
+// ['WFBE_UPGRADETIMESLEVEL2',[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],true] Call SetNamespace;
+// ['WFBE_UPGRADETIMESLEVEL3',[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],true] Call SetNamespace;
+//--- AI COMMANDER priority, we use the upgrade index (0: Barracks, 4: Paratroops...).
+['WFBE_UPGRADEAIORDER',[0,13,1,6,2,12,3,7,10,3,8,4,5,9,11,14,15,16,17],true] Call SetNamespace;
+
+/* Handle the missions (Server Only) */
+if (isServer && paramSecondaryMissions) then {
+ Private ['_initExt','_tpath'];
+ _tpath = 'Server\Missions\';
+ _initExt = '\m_init.sqf';
+
+ //--- Maximum amount of missions allowed per side at a time.
+ ['WFBE_MISSIONSMAXIMUM_WEST',1,true] Call SetNamespace;
+ ['WFBE_MISSIONSMAXIMUM_EAST',1,true] Call SetNamespace;
+ //--- Time randomizer (Affect the timeout).
+ ['WFBE_MISSIONSRANDOMIZER',160,true] Call SetNamespace;
+ //--- Re-usability, after x missions, mission y is available again.
+ ['WFBE_MISSIONSREUSABILITY',10,true] Call SetNamespace;
+ //--- Time to wait between each missions.
+ ['WFBE_MISSIONSTIMEOUT',2400,true] Call SetNamespace;
+
+ //--- Assign a content.
+ /*
+ all templates need at least a m_init.sqf
+
+ [
+ [island array, * = all, ! = not in, put the worldnames in otherwise],
+ temp path + folder name in templates + init name (path to the template folder),
+ unique identifier (template name or something, avoid duplicated names),
+ starting index (used in case of duplicated template allowed), 0 is ok to start with,
+ condition for template to be 'selectable', keep it as if it was a if (true/false condition), as it will be compiled inside a if on the fly (i.e: time > 600).
+ run for who? both(civ)? west? east?
+ ].
+
+ Each mission receive 3 defaults parameters, the unique identifier, the starting index and the selected index.
+ */
+
+ ['WFBE_M_CONTENT',[
+ [['*'],(_tpath + 'M_UAV_RetrieveModule' + _initExt),'M_UAV_RetrieveModule',0,"true",civilian], /* UAV Retrieving Mission, Any islands, No conditions, Both. */
+ [['*'],(_tpath + 'M_TOWN_Attack' + _initExt),'M_TOWN_AttackWest',0,"time > 1200",west], /* Town Assault, resistance attack a town, require at least a town (we wait a bit), west. */
+ [['*'],(_tpath + 'M_TOWN_Attack' + _initExt),'M_TOWN_AttackEast',0,"time > 1200",east], /* Town Assault, resistance attack a town, require at least a town (we wait a bit), east. */
+ [['*'],(_tpath + 'M_BASE_Attack' + _initExt),'M_BASE_Attack',0,"(count WestBaseStructures > 0) && (time > 600)",west], /* Resistance attack a base, require at least one building (we wait a bit), west. */
+ [['*'],(_tpath + 'M_BASE_Attack' + _initExt),'M_BASE_Attack',0,"(count EastBaseStructures > 0) && (time > 600)",east], /* Resistance attack a base, require at least one building (we wait a bit), east. */
+ [['*'],(_tpath + 'M_PLAYERS_Attack_Air' + _initExt),'M_PLAYERS_Attack_Air',0,"!WF_A2_Vanilla && paramDLCPMC",west], /* Resistance PMC attack players, requires PMC, west. */
+ [['*'],(_tpath + 'M_PLAYERS_Attack_Air' + _initExt),'M_PLAYERS_Attack_Air',0,"!WF_A2_Vanilla && paramDLCPMC",east] /* Resistance PMC attack players, requires PMC, east. */
+ ],true] Call SetNamespace;
+
+ //--- Ensure that the re-usability is not higher than the content.
+ if (('WFBE_MISSIONSREUSABILITY' Call GetNamespace) > count('WFBE_M_CONTENT' Call GetNamespace)-1) then {
+ ['WFBE_MISSIONSREUSABILITY',count('WFBE_M_CONTENT' Call GetNamespace),true] Call SetNamespace;
+ };
+};
+
+//--- UPSMON Parameters.
+if (paramUPSMON) then {
+ //--- Size of the marker (x,y) from the center of a town.
+ ['WFBE_UPSMONTOWNAREASIZE',[550,550],true] Call SetNamespace;
+};
+
+//--- Income System is Commander System?
+if (('WFBE_INCOMESYSTEM' Call GetNamespace) in [3,4]) then {
+ //--- Town Multiplicator Coefficient (SV * x).
+ ['WFBE_INC_COEFFICIENT',10, true] Call SetNamespace;
+ //--- Prevent commander from being a millionaire, and add the rest to the players pool.
+ ['WFBE_INC_DIVIDE_COM',2.75, true] Call SetNamespace;
+
+ //--- Commander Income %.
+ if (isNil "EastCommanderPercent") then {EastCommanderPercent = 70};
+ if (isNil "WestCommanderPercent") then {WestCommanderPercent = 70};
+};
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_CommonConstants: Constants Initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Init/Init_Location.sqf b/Common/Init/Init_Location.sqf
new file mode 100644
index 0000000..d0d97df
--- /dev/null
+++ b/Common/Init/Init_Location.sqf
@@ -0,0 +1,87 @@
+Private ['_camps','_location','_locationName','_marker','_maxSupplyValue','_probability','_range','_resistanceTeamTypes','_startingSupplyValue'];
+
+_location = _this select 0;
+_locationName = _this select 1;
+_resistanceTeamTypes = ["Group","Group"];
+_probability = 70;
+_startingSupplyValue = 10;
+_maxSupplyValue = 50;
+_range = 400;
+
+if (count _this > 3) then {_startingSupplyValue = _this Select 2};
+if (count _this > 4) then {_maxSupplyValue = _this Select 3};
+if (count _this > 5) then {_range = _this Select 4};
+if (count _this > 6) then {_resistanceTeamTypes = _this Select 5};
+if (count _this > 7) then {_probability = _this Select 6};
+
+if (isNull _location) exitWith {};
+
+_camps = _location getVariable "camps";
+if (isNil "_camps") then {_location setVariable ["camps",[]]};
+
+_location setVariable ["name",_locationName];
+_location setVariable ["range",_range];
+_location setVariable ["startingSupplyValue",_startingSupplyValue];
+_location setVariable ["maxSupplyValue",_maxSupplyValue];
+
+diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_Location: Town '%1' (%2) initialization - [Done]",str _location,_locationName,diag_frameno,diag_tickTime];
+
+waitUntil {commonInitComplete};
+
+if (isServer) then {
+ if (isNil 'EastMHQ' || isNil 'WestMHQ') exitWith {};
+ //--- Don't pause.
+ [_location,_startingSupplyValue,_range,_resistanceTeamTypes,_probability,_maxSupplyValue] Spawn {
+ Private ["_defenses","_isSet","_location","_marker","_maxSupplyValue","_probability","_range","_resistanceTeamTypes","_size","_startingSupplyValue"];
+ _location = _this select 0;
+ _startingSupplyValue = _this select 1;
+ _range = _this select 2;
+ _resistanceTeamTypes = _this select 3;
+ _probability = _this select 4;
+ _maxSupplyValue = _this select 5;
+
+ /* OA Depots are made of kryptonite */
+ if (WF_A2_Arrowhead || WF_A2_CombinedOps) then {_location addEventHandler ['handleDamage',{false}]};
+ _isSet = _location getVariable 'sideID';
+ if (isNil '_isSet') then {_location setVariable ["sideID",RESISTANCEID,true]};
+ _location setVariable ["supplyValue",_startingSupplyValue,true];
+ _location setVariable ["resistanceTypes",_resistanceTeamTypes];
+ sleep (random 1);
+ waitUntil {serverInitComplete && townInit};
+ //--- Town SV & Control script.
+ [_location,_range] ExecFSM "Server\FSM\updatetown.fsm";
+ if !(paramRes) then {
+ _defenses = _location nearEntities['WFBE_RESISTANCEDEFENSENAMES' Call GetNamespace,_range];
+ {deleteVehicle _x} forEach _defenses;
+ };
+ //--- Main AI Script
+ if (paramOccup || paramRes) then {[_location, _resistanceTeamTypes, _probability] ExecFSM "Server\FSM\updatetownai.fsm"};
+
+ //--- UPSMON Area Definition.
+ if (paramUPSMON) then {
+ _marker = Format['UPSMON_TOWN_%1',str _location];
+ createMarkerLocal [_marker, getPos _location];
+ _marker setMarkerColorLocal "ColorBlue";
+ _marker setMarkerShapeLocal "RECTANGLE";
+ _marker setMarkerBrushLocal "BORDER";
+ _size = 'WFBE_UPSMONTOWNAREASIZE' Call GetNamespace;
+ _marker setMarkerSizeLocal [_size select 0,_size select 1];
+ _marker setMarkerAlphaLocal 0;
+ };
+ };
+
+ if (('WFBE_TOWNCONQUESTMODE' Call GetNamespace) > 0) then {
+ _location setVariable ["wfbe_cancap_w", false];
+ _location setVariable ["wfbe_cancap_e", false];
+ };
+};
+
+towns = towns + [_location];
+
+if (local player) then {
+ waitUntil {clientInitComplete};
+ _marker = Format["%1Depot",str _location];
+ createMarkerLocal [_marker,getPos _location];
+ _marker setMarkerTypeLocal "Depot";
+ _marker setMarkerColorLocal ("Resistance" Call GetMarkerColoration);
+}; \ No newline at end of file
diff --git a/Common/Init/Init_Neighbors.sqf b/Common/Init/Init_Neighbors.sqf
new file mode 100644
index 0000000..727e0d1
--- /dev/null
+++ b/Common/Init/Init_Neighbors.sqf
@@ -0,0 +1,232 @@
+/*
+ Neighbors town per world.
+*/
+
+Private ["_index","_townMode"];
+_index = 0;
+for [{_i = 0},{_i < (count (missionConfigFile/"Params"))},{_i = _i + 1}] do {if ((configName ((missionConfigFile >> "Params") select _i)) == "townsAmount") exitWith {_index =_i}};
+_townMode = if (isMultiplayer) then {paramsArray select _index} else {getNumber (missionConfigFile >> "Params" >> "townsAmount" >> "default")};
+
+switch (toLower(worldName)) do {
+ case "chernarus": {
+ switch (_townMode) do {
+ case 4: {//--- Full.
+ Kamenka setVariable ["neighbors", [Pavlovo, Komarovo]];
+ Komarovo setVariable ["neighbors", [Pavlovo, Komarovo, Bor, Chernogorsk]];
+ Chernogorsk setVariable ["neighbors", [Komarovo, Nadezhdino, Prigorodki, Kozlovka]];
+ Prigorodki setVariable ["neighbors", [Chernogorsk, Elektrozavodsk]];
+ Elektrozavodsk setVariable ["neighbors", [Prigorodki, Chernogorsk, Pusta, Kamyshovo, Staroye]];
+ Kamyshovo setVariable ["neighbors", [Tulga, Elektrozavodsk]];
+ Tulga setVariable ["neighbors", [Kamyshovo, Msta, Solnichniy]];
+ Solnichniy setVariable ["neighbors", [Kamyshovo, Msta, Nizhnoye, Dolina]];
+ Nizhnoye setVariable ["neighbors", [Solnichniy, Berezino]];
+ Berezino setVariable ["neighbors", [Nizhnoye, Khelm, Orlovets, Dubrovka]];
+ Khelm setVariable ["neighbors", [Berezino, Krasnostav]];
+ Krasnostav setVariable ["neighbors", [Olsha, Gvozdno, Dubrovka, Khelm]];
+ Olsha setVariable ["neighbors", [Krasnostav]];
+ Gvozdno setVariable ["neighbors", [Krasnostav, Grishino]];
+ Grishino setVariable ["neighbors", [Gvozdno, Petrovka, Kabanino]];
+ Petrovka setVariable ["neighbors", [Grishino, Lopatino]];
+ Lopatino setVariable ["neighbors", [Petrovka, Vybor, Pustoshka]];
+ Myshkino setVariable ["neighbors", [Sosnovka, Pustoshka]];
+ Sosnovka setVariable ["neighbors", [Zelenogorsk, Myshkino, Pustoshka]];
+ Zelenogorsk setVariable ["neighbors", [Sosnovka, Pogorevka, Kozlovka, Pavlovo]];
+ Pavlovo setVariable ["neighbors", [Kamenka, Komarovo, Bor, Zelenogorsk]];
+ Bor setVariable ["neighbors", [Pavlovo, Kozlovka, Komarovo]];
+ Kozlovka setVariable ["neighbors", [Bor, Zelenogorsk, Nadezhdino, Chernogorsk]];
+ Nadezhdino setVariable ["neighbors", [Kozlovka, Chernogorsk]];
+ Mogilevka setVariable ["neighbors", [Vyshnoye, Pusta]];
+ Pusta setVariable ["neighbors", [Mogilevka, Elektrozavodsk]];
+ Staroye setVariable ["neighbors", [Shakhovka, Guglovo, Elektrozavodsk, Msta]];
+ Msta setVariable ["neighbors", [Staroye, Tulga, Solnichniy]];
+ Dolina setVariable ["neighbors", [Staroye, Solnichniy, Solnichniy, Polana]];
+ Orlovets setVariable ["neighbors", [Berezino, Polana]];
+ Polana setVariable ["neighbors", [Orlovets, Polana, Dolina, Shakhovka, Gorka]];
+ Gorka setVariable ["neighbors", [Dubrovka, NovySobor, Polana]];
+ Dubrovka setVariable ["neighbors", [Gorka, Krasnostav, Berezino]];
+ Shakhovka setVariable ["neighbors", [Staroye, Polana]];
+ Guglovo setVariable ["neighbors", [Staroye, NovySobor]];
+ NovySobor setVariable ["neighbors", [Guglovo, Gorka, StarySobor]];
+ Vyshnoye setVariable ["neighbors", [StarySobor, Gorka]];
+ StarySobor setVariable ["neighbors", [Vyshnoye, NovySobor, Kabanino, Pogorevka]];
+ Pulkovo setVariable ["neighbors", [Pogorevka]];
+ Pogorevka setVariable ["neighbors", [Pulkovo, Zelenogorsk, StarySobor]];
+ Kabanino setVariable ["neighbors", [Vybor, Grishino, StarySobor]];
+ Vybor setVariable ["neighbors", [Kabanino, Lopatino, Pustoshka]];
+ Pustoshka setVariable ["neighbors", [Kabanino, Vybor, Myshkino]];
+ };
+ case 3: {//--- Large.
+ Chernogorsk setVariable ["neighbors", [Komarovo, Nadezhdino, Elektrozavodsk]];
+ Elektrozavodsk setVariable ["neighbors", [Chernogorsk, Pusta, Kamyshovo, Staroye]];
+ Kamyshovo setVariable ["neighbors", [Solnichniy, Elektrozavodsk]];
+ Solnichniy setVariable ["neighbors", [Kamyshovo, Dolina, Berezino]];
+ Berezino setVariable ["neighbors", [Solnichniy, Dubrovka]];
+ Krasnostav setVariable ["neighbors", [Gvozdno, Dubrovka]];
+ Dubrovka setVariable ["neighbors", [Gorka, Krasnostav, Berezino]];
+ Gorka setVariable ["neighbors", [Dubrovka, Polana, StarySobor]];
+ Polana setVariable ["neighbors", [Gorka, Dolina]];
+ Dolina setVariable ["neighbors", [Polana, Solnichniy, Staroye]];
+ Staroye setVariable ["neighbors", [Elektrozavodsk, Dolina, Guglovo]];
+ Pusta setVariable ["neighbors", [Elektrozavodsk, Mogilevka]];
+ Guglovo setVariable ["neighbors", [Staroye, StarySobor]];
+ Mogilevka setVariable ["neighbors", [Pusta, Vyshnoye, Nadezhdino]];
+ Vyshnoye setVariable ["neighbors", [Mogilevka, StarySobor]];
+ StarySobor setVariable ["neighbors", [Mogilevka, Kabanino, Gorka, Pogorevka, Guglovo]];
+ Gvozdno setVariable ["neighbors", [Grishino, Krasnostav]];
+ Grishino setVariable ["neighbors", [Kabanino, Petrovka, Gvozdno]];
+ Kabanino setVariable ["neighbors", [StarySobor, Grishino, Vybor]];
+ Petrovka setVariable ["neighbors", [Grishino, Lopatino]];
+ Lopatino setVariable ["neighbors", [Vybor, Petrovka]];
+ Vybor setVariable ["neighbors", [Lopatino, Myshkino, Kabanino]];
+ Pogorevka setVariable ["neighbors", [StarySobor, Zelenogorsk]];
+ Myshkino setVariable ["neighbors", [Zelenogorsk, Lopatino]];
+ Nadezhdino setVariable ["neighbors", [Mogilevka, Chernogorsk]];
+ Zelenogorsk setVariable ["neighbors", [Pogorevka, Myshkino, Pavlovo]];
+ Pavlovo setVariable ["neighbors", [Zelenogorsk, Komarovo]];
+ Komarovo setVariable ["neighbors", [Pavlovo, Chernogorsk]];
+ };
+ case 2: {//--- Medium.
+ Chernogorsk setVariable ["neighbors", [Komarovo, Nadezhdino, Kozlovka, Mogilevka]];
+ Mogilevka setVariable ["neighbors", [Vyshnoye, Nadezhdino]];
+ Vyshnoye setVariable ["neighbors", [Mogilevka, StarySobor]];
+ StarySobor setVariable ["neighbors", [Mogilevka, Kabanino, Pogorevka]];
+ Grishino setVariable ["neighbors", [Kabanino]];
+ Kabanino setVariable ["neighbors", [StarySobor, Grishino, Vybor]];
+ Lopatino setVariable ["neighbors", [Vybor]];
+ Vybor setVariable ["neighbors", [Lopatino, Pustoshka, Kabanino]];
+ Myshkino setVariable ["neighbors", [Zelenogorsk, Pustoshka]];
+ Nadezhdino setVariable ["neighbors", [Mogilevka, Chernogorsk]];
+ Zelenogorsk setVariable ["neighbors", [Pogorevka, Myshkino, Pavlovo, Kozlovka]];
+ Pavlovo setVariable ["neighbors", [Zelenogorsk, Komarovo, Kamenka]];
+ Komarovo setVariable ["neighbors", [Pavlovo, Chernogorsk, Kamenka]];
+ Kamenka setVariable ["neighbors", [Pavlovo, Komarovo]];
+ Kozlovka setVariable ["neighbors", [Zelenogorsk, Nadezhdino, Chernogorsk]];
+ Pustoshka setVariable ["neighbors", [Vybor, Myshkino]];
+ Pogorevka setVariable ["neighbors", [StarySobor, Zelenogorsk]];
+ };
+ case 1: {//--- Small.
+ Berezino setVariable ["neighbors", [Khelm, Orlovets, Dubrovka]];
+ Orlovets setVariable ["neighbors", [Berezino, Polana]];
+ Polana setVariable ["neighbors", [Gorka, Orlovets]];
+ Gorka setVariable ["neighbors", [Dubrovka, Polana]];
+ Dubrovka setVariable ["neighbors", [Gorka, Krasnostav, Berezino]];
+ Khelm setVariable ["neighbors", [Berezino, Krasnostav]];
+ Krasnostav setVariable ["neighbors", [Olsha, Gvozdno, Dubrovka, Khelm]];
+ Olsha setVariable ["neighbors", [Krasnostav]];
+ Gvozdno setVariable ["neighbors", [Krasnostav]];
+ };
+ case 0: {//--- Extra Small.
+ Grishino setVariable ["neighbors", [Kabanino]];
+ Kabanino setVariable ["neighbors", [Grishino, Vybor]];
+ Vybor setVariable ["neighbors", [Kabanino, Lopatino, Pustoshka]];
+ Pustoshka setVariable ["neighbors", [Vybor]];
+ Lopatino setVariable ["neighbors", [Vybor]];
+ };
+ };
+ };
+ case "takistan": {
+ switch (_townMode) do {
+ case 4: {//--- Full.
+ Landay setVariable ["neighbors", [ChakChak]];
+ ChakChak setVariable ["neighbors", [Landay, Sakhee, Huzrutimam]];
+ Huzrutimam setVariable ["neighbors", [ChakChak, Sultansafee]];
+ Sultansafee setVariable ["neighbors", [Huzrutimam, LoyManara]];
+ LoyManara setVariable ["neighbors", [Sultansafee, Jaza, Chardarakht, Timurkalay]];
+ Chardarakht setVariable ["neighbors", [LoyManara, HazarBagh]];
+ HazarBagh setVariable ["neighbors", [Chardarakht]];
+ Timurkalay setVariable ["neighbors", [LoyManara, Anar, Garmarud]];
+ Garmarud setVariable ["neighbors", [Timurkalay, Garmsar, Imarat]];
+ Garmsar setVariable ["neighbors", [Garmarud]];
+ Imarat setVariable ["neighbors", [Garmarud, Zavarak, Bastam]];
+ Zavarak setVariable ["neighbors", [Imarat, Karachinar, Ravanay]];
+ Karachinar setVariable ["neighbors", [Zavarak]];
+ Ravanay setVariable ["neighbors", [Zavarak]];
+ Bastam setVariable ["neighbors", [Imarat, Falar, Rasman, Gospandi]];
+ Rasman setVariable ["neighbors", [Shamali, Bastam]];
+ Shamali setVariable ["neighbors", [Rasman, Nagara]];
+ Nagara setVariable ["neighbors", [Nur, Gospandi, Shamali]];
+ Nur setVariable ["neighbors", [Nagara]];
+ Gospandi setVariable ["neighbors", [Nagara, Bastam, Mulladoost]];
+ Mulladoost setVariable ["neighbors", [Gospandi, Khushab]];
+ Khushab setVariable ["neighbors", [Mulladoost, Jilavur, Shukurkalay]];
+ Shukurkalay setVariable ["neighbors", [Khushab, Jilavur, Chaman]];
+ Chaman setVariable ["neighbors", [Shukurkalay]];
+ Jilavur setVariable ["neighbors", [Shukurkalay, Khushab, Sakhee, FeeruzAbad]];
+ Sakhee setVariable ["neighbors", [Jilavur, ChakChak, FeeruzAbad, Kakaru]];
+ Kakaru setVariable ["neighbors", [Sakhee, Anar, FeeruzAbad]];
+ FeeruzAbad setVariable ["neighbors", [Jilavur, Anar, Kakaru, Falar, Sakhee]];
+ Anar setVariable ["neighbors", [FeeruzAbad, Kakaru, Timurkalay, Falar]];
+ Falar setVariable ["neighbors", [FeeruzAbad, Anar, Bastam]];
+ };
+ case 3: {//--- Large.
+ Landay setVariable ["neighbors", [ChakChak]];
+ ChakChak setVariable ["neighbors", [Landay, Sakhee, Huzrutimam]];
+ Huzrutimam setVariable ["neighbors", [ChakChak, Sultansafee]];
+ Sultansafee setVariable ["neighbors", [Huzrutimam, LoyManara]];
+ LoyManara setVariable ["neighbors", [Sultansafee, Jaza, Chardarakht, Timurkalay]];
+ Chardarakht setVariable ["neighbors", [LoyManara]];
+ Timurkalay setVariable ["neighbors", [LoyManara, Anar, Garmarud]];
+ Garmarud setVariable ["neighbors", [Timurkalay, Garmsar, Imarat]];
+ Garmsar setVariable ["neighbors", [Garmarud]];
+ Imarat setVariable ["neighbors", [Garmarud, Zavarak, Bastam]];
+ Zavarak setVariable ["neighbors", [Imarat, Karachinar, Ravanay]];
+ Karachinar setVariable ["neighbors", [Zavarak]];
+ Ravanay setVariable ["neighbors", [Zavarak]];
+ Bastam setVariable ["neighbors", [Imarat, Falar, Rasman, Gospandi]];
+ Rasman setVariable ["neighbors", [Shamali, Bastam]];
+ Shamali setVariable ["neighbors", [Rasman, Nagara]];
+ Nagara setVariable ["neighbors", [Gospandi, Shamali]];
+ Gospandi setVariable ["neighbors", [Nagara, Bastam, Mulladoost]];
+ Mulladoost setVariable ["neighbors", [Gospandi, Khushab]];
+ Khushab setVariable ["neighbors", [Mulladoost, Jilavur, Shukurkalay]];
+ Shukurkalay setVariable ["neighbors", [Khushab, Jilavur]];
+ Jilavur setVariable ["neighbors", [Shukurkalay, Khushab, Sakhee, FeeruzAbad]];
+ Sakhee setVariable ["neighbors", [Jilavur, ChakChak, FeeruzAbad, Kakaru]];
+ Kakaru setVariable ["neighbors", [Sakhee, Anar, FeeruzAbad]];
+ FeeruzAbad setVariable ["neighbors", [Jilavur, Anar, Kakaru, Falar, Sakhee]];
+ Anar setVariable ["neighbors", [FeeruzAbad, Kakaru, Timurkalay, Falar]];
+ Falar setVariable ["neighbors", [FeeruzAbad, Anar, Bastam]];
+ };
+ case 2: {//--- Medium.
+ Garmarud setVariable ["neighbors", [Imarat]];
+ Imarat setVariable ["neighbors", [Garmarud, Bastam]];
+ Bastam setVariable ["neighbors", [Imarat, Falar, Rasman, Gospandi]];
+ Rasman setVariable ["neighbors", [Shamali, Bastam]];
+ Shamali setVariable ["neighbors", [Rasman, Nagara]];
+ Nagara setVariable ["neighbors", [Gospandi, Shamali]];
+ Gospandi setVariable ["neighbors", [Nagara, Bastam, Mulladoost]];
+ Mulladoost setVariable ["neighbors", [Gospandi, Khushab]];
+ Khushab setVariable ["neighbors", [Mulladoost]];
+ Falar setVariable ["neighbors", [Anar, Bastam]];
+ };
+ case 1: {//--- Small.
+ Bastam setVariable ["neighbors", [Imarat, Falar, Rasman, Gospandi]];
+ Rasman setVariable ["neighbors", [Shamali, Bastam]];
+ Shamali setVariable ["neighbors", [Rasman, Nagara]];
+ Nagara setVariable ["neighbors", [Gospandi, Shamali]];
+ Nur setVariable ["neighbors", [Nagara]];
+ Gospandi setVariable ["neighbors", [Nagara, Bastam, Mulladoost]];
+ };
+ case 0: {//--- Extra Small.
+ Huzrutimam setVariable ["neighbors", [LoyManara]];
+ LoyManara setVariable ["neighbors", [Chardarakht, Huzrutimam]];
+ Chardarakht setVariable ["neighbors", [LoyManara]];
+ };
+ };
+ };
+ case "zargabad": {
+ Qeslaq setVariable ["neighbors", [Shahbaz, Zargabad]];
+ Shahbaz setVariable ["neighbors", [Qeslaq, Yarum]];
+ Yarum setVariable ["neighbors", [Zargabad, Shahbaz]];
+ Zargabad setVariable ["neighbors", [Qeslaq, Yarum, Nango, Azizajt, HazarBagh]];
+ Azizajt setVariable ["neighbors", [Zargabad, Nango]];
+ Nango setVariable ["neighbors", [Zargabad, Azizajt, HazarBagh]];
+ HazarBagh setVariable ["neighbors", [Zargabad, Nango]];
+ };
+ default {
+ ['WFBE_TOWNCONQUESTMODE', 0, true] Call SetNamespace;
+ };
+};
+
+objnull setVariable ["neighbors",objnull];
+
diff --git a/Common/Init/Init_PublicVariables.sqf b/Common/Init/Init_PublicVariables.sqf
new file mode 100644
index 0000000..535b47b
--- /dev/null
+++ b/Common/Init/Init_PublicVariables.sqf
@@ -0,0 +1,62 @@
+Private ['_clientCommandPV','_count','_l','_serverCommandPV'];
+
+_l = ["RequestVehicleLock"];
+_l = _l + ["RequestChangeScore"];
+_l = _l + ["RequestCommanderVote"];
+_l = _l + ["RequestStructure"];
+_l = _l + ["RequestDefense"];
+_l = _l + ["RequestJoin"];
+_l = _l + ["RequestMHQRepair"];
+_l = _l + ["RequestSpecial"];
+_l = _l + ["RequestTeamUpdate"];
+_l = _l + ["RequestUpgrade"];
+if (paramUseWorkers) then {_l = _l + ["RequestWorker"]};
+
+_serverCommandPV = _l;
+
+_l = ["AllCampsCaptured"];
+_l = _l + ["AwardBounty"];
+_l = _l + ["CampCaptured"];
+_l = _l + ["CanJoin"];
+_l = _l + ["ChangeScore"];
+_l = _l + ["CommanderVote"];
+_l = _l + ["DisplayICBM"];
+_l = _l + ["EndGame"];
+_l = _l + ["ISIS_AddAction"];
+_l = _l + ["LocalizeMessage"];
+_l = _l + ["Penalty"];
+_l = _l + ["PerformAction"];
+_l = _l + ["SetHQStatus"];
+_l = _l + ["SetTask"];
+_l = _l + ["SetVehicleLock"];
+_l = _l + ["TownCaptured"];
+_l = _l + ["TownCapturedPublic"];
+_l = _l + ["UAV_Reveal"];
+_l = _l + ["VoteForCommander"];
+
+/* Add missions Clients PVF here */
+if (paramSecondaryMissions) then {
+ _l = _l + ['M_BASE_Attack'];
+ _l = _l + ['M_TOWN_Attack'];
+ _l = _l + ['M_UAV_RetrieveModule'];
+ /* OA/CO Specific PVF */
+ if !(WF_A2_Vanilla) then {
+ _l = _l + ['M_PLAYERS_Attack_Air'];
+ };
+};
+
+_clientCommandPV = _l;
+
+for [{_count = Count _clientCommandPV - 1},{_count >= 0},{_count = _count - 1}] do {Call Compile Format["CLTFNC%1 = Compile PreprocessFile 'Client\PVFunctions\%1.sqf'",_clientCommandPV Select _count,_count]};
+for [{_count = Count _serverCommandPV - 1},{_count >= 0},{_count = _count - 1}] do {Call Compile Format["SRVFNC%1 = Compile PreprocessFile 'Server\PVFunctions\%1.sqf'",_serverCommandPV Select _count,_count]};
+
+//--- Handle the client side publicVariable.
+if (local player) then {
+ {Format['WFBE_%1',_x] addPublicVariableEventHandler {(_this select 1) Spawn HandlePVF}} forEach _clientCommandPV;
+};
+//--- Handle the server side publicVariable.
+if (isServer) then {
+ {Format['WFBE_%1',_x] addPublicVariableEventHandler {(_this select 1) Spawn HandleSPVF}} forEach _serverCommandPV;
+};
+
+diag_log Format["[WFBE (INIT)][frameno:%3 | ticktime:%4] Init_PublicVariables: Public Variable Initialization (SRV: %1 CLT: %2) - [Done]",count _serverCommandPV, count _clientCommandPV,diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Init/Init_TownMode.sqf b/Common/Init/Init_TownMode.sqf
new file mode 100644
index 0000000..bafc29a
--- /dev/null
+++ b/Common/Init/Init_TownMode.sqf
@@ -0,0 +1,53 @@
+/*
+ Town mode initialization.
+ the town that have to be removed need to be stored on the desired variable over WF_Logic. If those ain't set, the full town setting will be used.
+ Custom templates can be added bellow.
+*/
+private ['_index','_i','_paramName','_value'];
+Private ['_i','_index','_paramName','_value'];
+
+_index = 0;
+for [{_i = 0},{_i < (count (missionConfigFile/"Params"))},{_i = _i + 1}] do {
+ _paramName = (configName ((missionConfigFile >> "Params") select _i));
+ if (_paramName == "townsAmount") exitWith {_index =_i};
+};
+
+_value = if (isMultiplayer) then {paramsArray select _index} else {getNumber (missionConfigFile >> "Params" >> "townsAmount" >> "default")};
+
+/*
+ Chernarus Template (WF_Logic init field):
+ this setVariable ["Towns_RemovedXSmall",["Zelenogorsk","Dolina","StarySobor","Myshkino","Chernogorsk","Dubrovka","Pogorevka","Bor","Staroye","Pulkovo","Khelm","Kamyshovo","Pavlovo","Nadezhdino","Mogilevka","Vyshnoye","Berezino","Krasnostav","Gorka","Elektrozavodsk","Msta","Komarovo","Petrovka","Shakhovka","Prigorodki","Olsha","Orlovets","Nizhnoye","Solnichniy","Tulga","Kozlovka","Polana","Kamenka","Gvozdno","NovySobor","Pusta","Guglovo"]];
+ this setVariable ["Towns_RemovedSmall",["Zelenogorsk","Dolina","StarySobor","Lopatino","Myshkino","Chernogorsk","Pogorevka","Bor","Kabanino","Staroye","Pulkovo","Kamyshovo","Vybor","Pavlovo","Nadezhdino","Grishino","Mogilevka","Vyshnoye","Elektrozavodsk","Msta","Komarovo","Petrovka","Shakhovka","Prigorodki","Nizhnoye","Solnichniy","Tulga","Kozlovka","Pustoshka","Kamenka","NovySobor","Pusta","Guglovo"]];
+ this setVariable ["Towns_RemovedMedium",["Dolina","Dubrovka","Bor","Staroye","Elektrozavodsk","Berezino","Krasnostav","Pulkovo","Khelm","Kamyshovo","Vyshnoye","Gorka","Msta","Petrovka","Shakhovka","Prigorodki","Olsha","Orlovets","Nizhnoye","Solnichniy","Tulga","Polana","Gvozdno","NovySobor","Pusta","Guglovo","Sosnovka"]];
+ this setVariable ["Towns_RemovedLarge",["Bor","Pulkovo","Khelm","Msta","Shakhovka","Prigorodki","Olsha","Orlovets","Nizhnoye","Tulga","Kozlovka","Pustoshka","Kamenka","NovySobor","Sosnovka"]];
+*/
+
+TownTemplate = [];
+switch (_value) do {
+ case 0: {TownTemplate = WF_Logic getVariable "Towns_RemovedXSmall"};
+ case 1: {TownTemplate = WF_Logic getVariable "Towns_RemovedSmall"};
+ case 2: {TownTemplate = WF_Logic getVariable "Towns_RemovedMedium"};
+ case 3: {TownTemplate = WF_Logic getVariable "Towns_RemovedLarge"};
+ //--- case 4 = full. useless.
+ /* Add your templates here !
+ Custom templates can be added here, just set a new variable with the towns to remove in WF_Logic and add your template name/value in the parameter class
+ - WF_Logic: this setVariable ["myRemovedTowns",["Chernogorsk","Pavlovo","Zelenogorsk"]];
+ - parameter (Add it at the end!!!):
+ class townsAmount {
+ title = "$STR_WF_PARAMETER_TownsAmount";
+ values[] = {0,1,2,3,4,5};
+ texts[] = {"Extra Small","Small","Medium","Large","Full","MyOwnTemplate"};
+ default = 3;
+ };
+ - Init_TownMode.sqf (Here!): case 5: {TownTemplate = WF_Logic getVariable "myRemovedTowns"}
+
+ As a result, Chernogorsk, Pavlovo and Zelenogorsk will be removed.
+ */
+};
+
+if (isNil "TownTemplate") then {TownTemplate = []};//--- The field is not defined, we use the default island setting.
+totalTowns = (WF_Logic getVariable "totalTowns") - (count TownTemplate);
+
+townModeSet = true;
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_TownMode: Towns mode initialization (world: %3) - [Done]",diag_frameno,diag_tickTime,worldName]; \ No newline at end of file
diff --git a/Common/Init/Init_Towns.sqf b/Common/Init/Init_Towns.sqf
new file mode 100644
index 0000000..4ee8796
--- /dev/null
+++ b/Common/Init/Init_Towns.sqf
@@ -0,0 +1,25 @@
+Private ["_startAt","_txt"];
+
+waitUntil{townModeSet};
+_startAt = time;
+waitUntil {!isNil "totalTowns" || time - _startAt > 120};
+waitUntil {(count towns == totalTowns) || time - _startAt > 120};
+if ((count towns != totalTowns) && local player) then {
+ _txt = Format["DEBUG: \n\n Something might be wrong with the town initialization process... \n\n This could be related to the towns amount set in WF_Logic or to the initialization itself, try to rejoin the game if the auto-fix doesn't work... \n\n Extra Info: \n count towns: %1 \n totalTowns: %2... \n\n The game will now attempt to fix itself...",count towns,totalTowns];
+ _txt Call DebugHint;
+
+ /* Attempt to fix Null over JIP */
+ towns = towns - [objNull];
+ if (count towns == totalTowns) then
+ {
+ townInit = true;
+ }
+ else
+ {
+ diag_log Format["[WFBE (INIT)] Init_Towns: Fail with count towns = %1, totalTowns = %2",count towns, totalTowns];
+ sleep 5;
+ failMission "END1";
+ };
+} else {townInit = true};
+
+diag_log Format["[WFBE (INIT)][frameno:%1 | ticktime:%2] Init_Towns: Towns initialization - [Done]",diag_frameno,diag_tickTime]; \ No newline at end of file
diff --git a/Common/Module/CIPHER/CIPHER_Init.sqf b/Common/Module/CIPHER/CIPHER_Init.sqf
new file mode 100644
index 0000000..05866ba
--- /dev/null
+++ b/Common/Module/CIPHER/CIPHER_Init.sqf
@@ -0,0 +1,91 @@
+/*
+ * Cipher Module
+ * Author: Benny.
+ * Description: Alphabetical functions such as sorting and string compare.
+ */
+
+
+/* Compare whether string A is greater than string B */
+CIPHER_CompareString = {
+ Private ["_aisgreater","_stringA","_stringB"];
+ _stringA = toArray(_this select 0);
+ _stringB = toArray(_this select 1);
+
+ _aisgreater = false;
+
+ for '_i' from 0 to count(_stringA)-1 do {
+ if (_i > count(_stringB)-1) exitWith {_aisgreater = true};
+ if ((_stringA select _i) != (_stringB select _i)) exitWith {
+ _aisgreater = if ((_stringA select _i) > (_stringB select _i)) then {true} else {false};
+ };
+ };
+
+ _aisgreater;
+};
+
+/* Swap Element A with Element B in an array. */
+CIPHER_ArraySwap = {
+ Private ["_array","_elea","_eleb","_posa","_posb"];
+ _array = _this select 0;
+ _posa = _this select 1;
+ _posb = _this select 2;
+
+ _elea = _array select _posa;
+ _eleb = _array select _posb;
+
+ _array set [_posa, _eleb];
+ _array set [_posb, _elea];
+
+ _array;
+};
+
+/* Reverse an array */
+CIPER_ArrayReverse = {
+ Private ["_array","_reversed","_u"];
+ _array = _this;
+ _reversed = [];
+
+ _u = 0;
+ for '_i' from count(_array)-1 step -1 to 0 do {
+ _reversed set [_u, _array select _i];
+ _u = _u + 1;
+ };
+
+ _reversed
+};
+
+/* Sort an array by alphabetical order, selection sort. */
+CIPHER_SortArray = {
+ Private['_auxArray','_list','_min','_reverse'];
+
+ _list = _this select 0;
+ _reverse = _this select 1;
+ _auxArray = if (count _this > 2) then {+(_this select 2)} else {[]};
+
+ if (count _list == 0) exitWith {[]};
+ _isString = if (typeName(_list select 0) == typeName "") then {true} else {false};
+
+ for '_i' from 0 to (count _list)-1 do {
+ _min = _i;
+
+ for '_j' from _i+1 to (count _list)-1 do {
+ if (_isString) then {
+ if !([_list select _j, _list select _min] Call CIPHER_CompareString) then {_min = _j}
+ } else {
+ if ((_list select _j) < (_list select _min)) then {_min = _j};
+ };
+ };
+
+ if (_min != _i) then {
+ _list = [_list, _i, _min] Call CIPHER_ArraySwap;
+ if (count _auxArray > 0) then {_auxArray = [_auxArray, _i, _min] Call CIPHER_ArraySwap};
+ };
+ };
+
+ if (_reverse) then {
+ _list = (_list) Call CIPER_ArrayReverse;
+ if (count _auxArray > 0) then {_auxArray = (_auxArray) Call CIPER_ArrayReverse};
+ };
+
+ [_list, _auxArray]
+}; \ No newline at end of file
diff --git a/Common/Module/CIPHER/CIPHER_Sort.sqf b/Common/Module/CIPHER/CIPHER_Sort.sqf
new file mode 100644
index 0000000..0ae438b
--- /dev/null
+++ b/Common/Module/CIPHER/CIPHER_Sort.sqf
@@ -0,0 +1,63 @@
+/* Elements to sort etc ... */
+
+_preformat = {
+ Private ["_get","_output","_units"];
+ _units = _this;
+ _output = [];
+
+ for '_i' from 0 to count(_units)-1 do {
+ _get = (_units select _i) Call GetNamespace;
+ if !(isNil "_get") then {
+ _output set [_i, _get select QUERYUNITLABEL];
+ } else {
+ _output set [_i, (_units select _i)];
+ };
+ };
+
+ _output
+};
+
+_preformat_gear = {
+ Private ["_content","_get","_output"];
+ _content = _this;
+ _output = [];
+
+ for '_i' from 0 to count(_content)-1 do {
+ _get = (_content select _i) Call GetNamespace;
+ if !(isNil "_get") then {
+ _output set [_i, _get select QUERYGEARLABEL];
+ } else {
+ _output set [_i, (_content select _i)];
+ };
+ };
+
+ _output
+};
+
+//--- Sort Factions.
+{
+ _content = Format["WFBE_%1%2FACTIONS",sideJoinedText,_x] Call GetNamespace;
+ _sorted = ([_content, false] Call CIPHER_SortArray) select 0;
+ [Format['WFBE_%1%2FACTIONS',sideJoinedText,_x], _sorted, true] Call SetNamespace;
+
+ //--- While we're at it we set the default selected faction.
+ _content = Format["WFBE_%1%2FACTIONS",sideJoinedText,_x] Call GetNamespace;
+ _find = _content find (Format["WFBE_%1DEFAULTFACTION",sideJoinedText] Call GetNamespace);
+ if (_find != -1) then {
+ [Format["WFBE_%1%2CURRENTFACTIONSELECTED",sideJoinedText,_x], _find] Call SetNamespace;
+ };
+} forEach ["BARRACKS","LIGHT","HEAVY","AIRCRAFT","AIRPORT","DEPOT"];
+
+//--- Sort Purchases (Default, name - asc).
+{
+ _content = Format['WFBE_%1%2UNITS',sideJoinedText,_x] Call GetNamespace;
+ _sorted = ([(_content) Call _preformat,false,_content] Call CIPHER_SortArray) select 1;
+ [Format['WFBE_%1%2UNITS',sideJoinedText,_x], _sorted, true] Call SetNamespace;
+} forEach ["BARRACKS","LIGHT","HEAVY","AIRCRAFT","AIRPORT","DEPOT"];
+
+//--- Sort Gear.
+{
+ _content = WF_Logic getVariable Format ["%1Classes",_x];
+ _sorted = ([(_content) Call _preformat_gear,false,_content] Call CIPHER_SortArray) select 1;
+ WF_Logic setVariable [Format ["%1Classes",_x], _sorted];
+} forEach ["primary","secondary","sidearm","misc"]; \ No newline at end of file