diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp
new file mode 100644
index 0000000000..77ce494e39
--- /dev/null
+++ b/extras/CfgWeaponsReference.hpp
@@ -0,0 +1,1894 @@
+class CfgWeapons
+{
+    class MGun;
+    class MGunCore;
+    class Pistol_Base_F;
+    class Rifle_Base_F;
+    class Rifle_Long_Base_F;
+    class arifle_MX_Base_F;
+    class PDW2000_Base_F;
+    class arifle_Katiba_Base_F;
+    class SDAR_base_F;
+    class SMG_02_Base_F;
+    class Tavor_base_F;
+    class SMG_01_Base;
+    class DMR_01_base_F;
+    class Mk20_Base_F;
+    class EBR_base_F;
+    class HMG_127;
+    class LRR_base_F;
+    class GM6_base_F;
+    class DMR_02_base_F;
+    class DMR_03_base_F;
+    class DMR_04_base_F;
+    class DMR_05_base_F;
+    class DMR_06_base_F;
+    class MMG_01_base_F;
+    class MMG_02_base_F;
+    class hgun_P07_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4;
+    };
+    class hgun_Rook40_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class hgun_Pistol_heavy_01_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class hgun_Pistol_heavy_02_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=3;
+    };
+    class hgun_ACPC2_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class hgun_PDW2000_F : PDW2000_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=7;
+    };
+    class arifle_Katiba_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=28.7;
+    };
+    class arifle_Katiba_C_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=26.8;
+    };
+    class arifle_Katiba_GL_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=28.7;
+    };
+    class arifle_MX_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_MX_GL_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_MX_SW_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=16.0;
+    };
+    class arifle_MXC_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=10.5;
+    };
+    class arifle_MXM_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=18;
+    };
+    class arifle_SDAR_F : SDAR_base_F 
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=18;
+    };
+    class SMG_02_F : SMG_02_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=7.7;
+    };
+    class arifle_TRG20_F : Tavor_base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=15;
+    };
+    class arifle_TRG21_F : Tavor_base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.1;
+    };
+    class LMG_Zafir_F : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18.1;
+    };
+    class arifle_Mk20_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=17.4;
+    };
+    class arifle_Mk20C_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_Mk20_GL_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class SMG_01_F : SMG_01_Base
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.5;
+    };
+    class srifle_DMR_01_F : DMR_01_base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=24;
+    };
+    class srifle_EBR_F : EBR_base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24;
+    };
+    class LMG_Mk200_F : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class srifle_LRR_F : LRR_base_F
+    {
+        ACE_barrelTwist=13;
+        ACE_barrelLength=29;
+    };
+    class srifle_GM6_F : GM6_base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=43.3;
+    };
+    class srifle_DMR_02_F: DMR_02_base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=26;
+    };
+    class srifle_DMR_03_F: DMR_03_base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class srifle_DMR_04_F: DMR_04_base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=17.72;
+    };
+    class srifle_DMR_05_blk_F: DMR_05_base_F
+    {
+        ACE_barrelTwist=14.17;
+        ACE_barrelLength=24.41;
+    };
+    class srifle_DMR_06_camo_F: DMR_06_base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class MMG_01_hex_F: MMG_01_base_F
+    {
+        ACE_barrelTwist=14.17;
+        ACE_barrelLength=21.65;
+    };
+    class MMG_02_camo_F: MMG_02_base_F
+    {
+        ACE_barrelTwist=9.25;
+        ACE_barrelLength=24;
+    };
+    class HMG_M2 : HMG_127
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=45;
+    };
+    
+    class RH_deagle : Pistol_Base_F
+    {
+        ACE_barrelTwist=19;
+        ACE_barrelLength=6;
+    };
+    class RH_sw659 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=7.44;
+    };
+    class RH_usp : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.41;
+    };
+    class RH_uspm : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=6;
+    };
+    class RH_mak : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class RH_m1911 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class RH_kimber : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class RH_m9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class RH_vz61 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class RH_tec9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };
+    class RH_muzi : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };
+    class RH_g18 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };
+    class RH_g17 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };
+    class RH_tt33 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.6;
+    };
+    class RH_mk2 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4;
+    };
+    class RH_p226 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.4;
+    };
+    class RH_g19 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4;
+    };
+    class RH_gsh18 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.1;	
+    };
+    class RH_mateba : Pistol_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=6;
+    };
+    class RH_python : Pistol_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=6;
+    };
+    class RH_bull : Pistol_Base_F
+    {
+        ACE_barrelTwist=24;
+        ACE_barrelLength=6.5;
+    };
+    class RH_ttracker : Pistol_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=4;
+    };
+    class RH_mp412 : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=6;
+    };
+    class RH_fnp45 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class RH_fn57 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.1;
+        ACE_barrelLength=4.8;		
+    };
+    class RH_vp70 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.6;
+    };
+    class RH_cz75 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=4.7;
+    };
+    
+    class RH_PDW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10;
+    };
+    
+    class RH_hb : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=6;
+    };
+    class RH_sbr9 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=9;
+    };
+    class RH_ar10 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20.8;
+    };
+    class RH_m4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class RH_M4m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.5;
+    };
+    class RH_M4sbr : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.5;
+    };
+    class RH_M16a1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_hk416 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class RH_hk416c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class RH_hk416s : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.4;
+    };
+    class RH_m27iar : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.5;
+    };
+    class RH_Mk12mod1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class RH_SAMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.7;
+        ACE_barrelLength=20;
+    };
+    class RH_m110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class RH_mk11 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class RH_sr25ec : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20;
+    };
+    
+    class hlc_rifle_ak74 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class hlc_rifle_ak47 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_akm : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_rpk : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=23.2;
+    };
+    class hlc_rifle_aek971 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=17;
+    };
+    class hlc_rifle_saiga12k : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.9;
+    };
+    class hlc_ar15_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=11.5;
+    };
+    class hlc_rifle_bcmjack : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class hlc_rifle_Bushmaster300 : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=16;
+    };
+    class hlc_rifle_SAMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=16;
+    };
+    class hlc_rifle_honeybase : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=6;
+    };
+    class hlc_rifle_SLRchopmod : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_LAR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_c1A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.7;
+    };
+    class hlc_rifle_FAL5061 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class hlc_rifle_STG58F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_SLR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.7;
+    };
+    class hlc_rifle_falosw : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=13;
+    };
+    class hlc_rifle_psg1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=25.6;
+    };
+    class hlc_rifle_g3sg1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class hlc_rifle_hk51 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=8.31;
+    };
+    class hlc_rifle_hk53 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=8.31;
+    };
+    class hlc_rifle_g3a3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class hlc_M14_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class hlc_rifle_m14sopmod : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class hlc_lmg_M60E4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17;
+    };
+    class hlc_lmg_m60 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    
+    class hlc_smg_mp5k_PDW : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.5;
+    };
+    class hlc_smg_mp5a2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5a4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5n : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5sd5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class hlc_smg_mp5sd6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class hlc_smg_9mmar : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp510 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5a3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+            
+    class hgun_mas_usp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.41;
+    };
+    class hgun_mas_m23_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.87;
+    };
+    class hgun_mas_acp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.03;
+    };
+    class hgun_mas_m9_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.9;
+    };
+    class hgun_mas_bhp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.7;
+    };
+    class hgun_mas_glock_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.84;
+        ACE_barrelLength=4.48;
+    };
+    class hgun_mas_glocksf_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=15.75;
+        ACE_barrelLength=4.60;
+    };
+    class hgun_mas_grach_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class hgun_mas_mak_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class hgun_mas_sa61_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class hgun_mas_uzi_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.28;
+    };
+    class arifle_mas_mk16 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.8;
+    };
+    class arifle_mas_mk16_l : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class arifle_mas_mk17 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class srifle_mas_m110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class arifle_mas_ak_74m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.34;
+    };
+    class arifle_mas_ak_74m_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.34;
+    };
+    class srifle_mas_svd : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class srifle_mas_m91 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=29;
+    };
+    class srifle_mas_ksvk : Rifle_Base_F
+    {
+        ACE_barrelTwist=18;
+        ACE_barrelLength=39.37;
+    };
+    class LMG_mas_rpk_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class LMG_mas_pkm_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class arifle_mas_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class arifle_mas_bizon : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=9.1;
+    };
+    class arifle_mas_saiga : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.93;
+    };
+    class arifle_mas_hk416 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_hk416_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_hk416c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9.0;
+    };
+    class arifle_mas_hk416_m203c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9.0;
+    };
+    class arifle_mas_hk417c : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=13;
+    };
+    class arifle_mas_m4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_m4c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class arifle_mas_l119 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_l119_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_l119_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_m16 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class arifle_mas_m16_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class srifle_mas_hk417 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=16.5;
+    };
+    class srifle_mas_sr25 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class srifle_mas_ebr : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class srifle_mas_m24 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class arifle_mas_mp5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class arifle_mas_mp5sd : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class srifle_mas_m107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class LMG_mas_M249_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class LMG_mas_M249a_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class LMG_mas_mk48_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.75;
+    };
+    class LMG_mas_m240_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class LMG_mas_mg3_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22.2;
+    };
+    class arifle_mas_g3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class arifle_mas_g3_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class arifle_mas_fal : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class arifle_mas_fal_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class arifle_mas_m1014 : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18.5;
+    };
+    
+    class BWA3_P8 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.25;
+    };
+    class BWA3_MP7 : Pistol_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=7.1;
+    };
+    class BWA3_G36 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class BWA3_G36K : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class BWA3_G28_Standard : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16.5;
+    };
+    class BWA3_G27 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class BWA3_MG4 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class BWA3_MG5 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.6;
+    };
+    class BWA3_G82 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    
+    class Trixie_L131A1 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.5;
+    };
+    class Trixie_XM8_Carbine : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class Trixie_XM8_Compact : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class Trixie_XM8_SAW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_SAW_NB : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_DMR_NB : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class L129A1_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=16;
+    };
+    class Trixie_Enfield : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=25.2;
+    };
+    class Trixie_CZ550_Rail : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=23.622;
+    };
+    class Trixie_FNFAL_Rail : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+        
+    class Trixie_M110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class Trixie_MK12 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class Trixie_LM308MWS : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=16;
+    };
+    class Trixie_M14DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class Trixie_M14DMR_NG_Short : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class Trixie_M14 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class Trixie_M40A3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24;
+    };
+    class Trixie_CZ750 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=26;
+    };
+    class Trixie_M24 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class Trixie_AWM338 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=27;
+    };
+    class Trixie_M107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class Trixie_AS50 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class L110A1_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };
+    class Trixie_L86A2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=25.4;
+    };
+    class Trixie_l85a2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20.4;
+    };
+    class L7A2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    
+    class rhs_weap_pya : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class rhs_weap_pkp : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };
+    class rhs_weap_pkm : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class rhs_weap_rpk74m : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class rhs_weap_rpk74 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class rhs_weap_ak74m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class rhs_weap_akm : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_svd : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class rhs_weap_svds : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=22.2;
+    };
+    class rhs_weap_m4_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class rhs_weap_m16a4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m16a4_carryhandle : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m16a4_grip : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m240B : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class rhs_weap_m249_pip : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_mk18 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class rhs_weap_M590_5RD : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18.5;
+    };
+    class rhs_weap_M590_8RD : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_sr25 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class rhs_weap_sr25_ec : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_XM2010_Base_F: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=24;
+    };
+    
+    class R3F_PAMAS : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class R3F_Famas_F1: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.2;
+    };
+    class R3F_Famas_surb: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=15.9;
+    };
+    class R3F_Minimi: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };
+    class R3F_Minimi_762: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.8;
+    };
+    class R3F_FRF2: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=25.59;
+    };
+    class R3F_PGM_Hecate_II: Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=27.6;
+    };
+    class R3F_HK417S_HG : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=12;
+    };
+    class R3F_HK417M : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=16;
+    };
+    class R3F_HK417L : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class R3F_M107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class R3F_HK416M : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14;
+    };
+    class R3F_MP5SD : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    
+    class CUP_hgun_Colt1911 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class CUP_sgun_AA12 : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18;		
+    };
+    class CUP_arifle_AK_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };	
+    class CUP_arifle_AK107_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_arifle_AKS_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_arifle_AKS74U : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class CUP_arifle_RPK74 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };			
+    class CUP_srifle_AS50 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class CUP_srifle_AWM_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=27;
+    };	
+    class CUP_smg_bizon : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=9.1;
+    };
+    class CUP_hgun_Compact : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=3.74;
+    };	
+    class CUP_srifle_CZ750 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=26;
+    };	
+    class CUP_arifle_CZ805_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_CZ805_A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_CZ805_A2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=10.9;
+    };
+    class CUP_srifle_DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };	
+    class CUP_hgun_Duty : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=3.74;
+    };
+    class CUP_arifle_FNFAL : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };	
+    class CUP_arifle_G36A : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class CUP_arifle_G36K : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_G36C : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class CUP_arifle_MG36 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class CUP_hgun_Glock17 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };	
+    class CUP_srifle_CZ550 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=23.622;
+    };	
+    class CUP_srifle_ksvk : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=18;
+        ACE_barrelLength=39.37;
+    };	
+    class CUP_lmg_L7A2 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };	
+    class CUP_arifle_L85A2_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20.4;
+    };	
+    class CUP_lmg_L110A1 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };	
+    class CUP_srifle_LeeEnfield : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=25.2;
+    };
+    class CUP_hgun_M9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class CUP_srifle_M14 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class CUP_arifle_M16_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_M4_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class CUP_srifle_Mk12SPR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class CUP_srifle_M24_des : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };	
+    class CUP_lmg_M60A4 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17;
+    };
+    class CUP_srifle_M107_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class CUP_srifle_M110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class CUP_lmg_M240 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class CUP_lmg_M249_para : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_lmg_M249 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class CUP_sgun_M1014 : Rifle_Base_F
+    {
+        ACE_twistDirection=0;
+        ACE_barrelTwist=0;
+        ACE_barrelLength=18.5;
+    };	
+    class CUP_hgun_Makarov : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };	
+    class CUP_hgun_MicroUzi : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };	
+    class CUP_lmg_Mk48_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.75;
+    };	
+    class CUP_smg_MP5SD6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class CUP_smg_MP5A5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };	
+    class CUP_hgun_PB6P9 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.1;
+    };
+    class CUP_hgun_Phantom : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=4.7;
+    };	
+    class CUP_lmg_PKM : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class CUP_lmg_Pecheneg : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };	
+    class CUP_hgun_TaurusTracker455 : Pistol_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=4;
+    };
+    class CUP_arifle_Sa58P : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=15.4;
+    };
+    class CUP_arifle_Sa58V : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=15.4;
+    };
+    class CUP_hgun_SA61 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class CUP_sgun_Saiga12K: Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.9;
+    }	
+    class CUP_arifle_Mk16_CQC : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10;
+    };
+    class CUP_arifle_Mk16_STD : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_Mk16_SV : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };	
+    class CUP_arifle_Mk17_CQC : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=13;
+    };
+    class CUP_arifle_Mk17_STD : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class CUP_arifle_Mk20 : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=20;
+    };
+    class CUP_srifle_SVD : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class CUP_lmg_UK59 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=21.7;
+    };
+    class CUP_DSHKM_W : MGun
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=42.1;
+    };
+    class CUP_KPVT_W : MGun
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class CUP_KPVB_W : MGun
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class CUP_M134 : MGunCore
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class CUP_M240_veh_W : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;		 	
+    };
+    class CUP_PKT_W : MGun
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=28.43;
+    };
+    class CUP_srifle_VSSVintorez : Rifle_Base_F
+    {
+        ACE_barrelTwist=8.3;
+        ACE_barrelLength=7.9;
+    };
+    class CUP_arifle_XM8_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_XM8_Carbine : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_xm8_sharpshooter : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_xm8_SAW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_XM8_Compact : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class CUP_arifle_XM8_Railed_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    
+    class VTN_AK_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M_GP25: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M_GP30M: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74N: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74N_76: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74_76: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS_aa: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=10.3;
+    };
+    class VTN_AKS74U_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class VTN_AKM_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS_T_P: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK103_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK104_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_AK105_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_AK105_P_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_SVD_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SVD_63: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SVD_86: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SV98_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=12.6;
+        ACE_barrelLength=25.59;
+    };
+    class VTN_PKM_BAS: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class VTN_PKP: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };
+    class VTN_PYA: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class VTN_PM: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class VTN_PB: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.1;
+    };
+    class VTN_GSH18: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.1;
+    };
+    class VTN_PSS: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=1.4;
+    };
+    class VTN_PKT: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=28.43;
+    };
+    class VTN_KORD: Rifle_Base_F
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class VTN_KPVT: Rifle_Base_F
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class VTN_C_M4A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class VTN_MK18MOD0: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class VTN_M16_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class VTN_FN_SAMR_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.7;
+        ACE_barrelLength=20;
+    };
+    class VTN_M249_SAW_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class VTN_M249_PARA: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_M240G_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class VTN_M9: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class VTN_M45A1: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class VTN_M24: Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class VTN_M240: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class VTN_KO44: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=20.2;
+    };
+    class VTN_SAIGA_MK03: Rifle_Base_F
+    {
+        ACE_twistDirection=9.45;
+        ACE_barrelLength=16.3;
+    };
+};
\ No newline at end of file
diff --git a/tools/make.cfg b/tools/make.cfg
index 1eb02b826f..e89568d60e 100644
--- a/tools/make.cfg
+++ b/tools/make.cfg
@@ -39,6 +39,11 @@ prefix = z\ace\addons
 # Default: <work_drive>\<prefix>\addons
 module_root = P:\z\ace\addons
 
+# Set the location where the optional addon source folders (i.e. P:\z\ace\optionals)
+# Default: <work_drive>\<prefix>\optionals
+optionals_root = P:\z\ace\optionals
+
+
 # Directory where the built addon will be saved.
 # Default: release
 release_dir = P:\z\ace\release
diff --git a/tools/make.py b/tools/make.py
index 29cf3f1956..5146a666bb 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -30,7 +30,7 @@
 
 ###############################################################################
 
-__version__ = "0.3dev"
+__version__ = "0.4"
 
 import sys
 
@@ -54,6 +54,13 @@ import re
 if sys.platform == "win32":
 	import winreg
 
+######## GLOBALS #########
+work_drive = ""
+module_root = ""
+release_dir = ""
+module_root_parent = ""
+optionals_root = ""
+
 ###############################################################################
 # http://akiscode.com/articles/sha-1directoryhash.shtml
 # Copyright (c) 2009 Stephen Akiki
@@ -284,11 +291,122 @@ def print_yellow(msg):
 	print(msg)
 	color("reset")
 
+	
+def copy_important_files(source_dir,destination_dir):
+	
+	originalDir = os.getcwd()
+	importantFiles = ["mod.cpp",
+	"README.md",
+	"AUTHORS.txt",
+	"LICENSE",
+	"logo_ace3_ca.paa"
+	]
+	
+	print_yellow ("source_dir: " + source_dir)
+	print_yellow("destination_dir: " + destination_dir)
+	
+	#copy importantFiles
+	try:
+		print_blue("\nSearching for important files in " + source_dir)
+		for file in importantFiles:
+			print_green("Copying file => " + os.path.join(source_dir,file))
+			shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file))
+	except:
+		print_error("COPYING IMPORTANT FILES.")
+		raise
+	
+	#copy all extension dlls
+	try:
+		os.chdir(os.path.join(source_dir))
+		print_blue("\nSearching for DLLs in " + os.getcwd())
+		filenames = glob.glob("*.dll")
+		
+		if not filenames:
+			print ("Empty SET")
+			
+		for dll in filenames:
+			print_green("Copying dll => " + os.path.join(source_dir,dll))
+			if os.path.isfile(dll):
+				shutil.copyfile(os.path.join(source_dir,dll),os.path.join(destination_dir,dll))
+	except:
+		print_error("COPYING DLL FILES.")
+		raise
+	finally:
+		os.chdir(originalDir)
+
+def copy_optionals_for_building(mod,pbos):
+	src_directories = os.listdir(optionals_root)
+	current_dir = os.getcwd()
+	
+	print("")
+	try:
+		
+		#special server.pbo processing
+		files = glob.glob(os.path.join(release_dir, "@ace","optionals","*.pbo"))
+		for file in files:
+			file_name = os.path.basename(file)
+			print ("Adding the following file: " + file_name)
+			pbos.append(file_name)
+			pbo_path = os.path.join(release_dir, "@ace","optionals",file_name)
+			if (os.path.isfile(pbo_path)):
+				print("Moving " + pbo_path + " for processing.")
+				shutil.move(pbo_path, os.path.join(release_dir,"@ace","addons",file_name))
+
+	except:
+		print_error("Error in moving")
+		raise
+	finally:
+		os.chdir(current_dir)
+
+	print("")
+	try:
+		for dir_name in src_directories:
+			mod.append(dir_name)
+			if (dir_name == "userconfig"):
+				destination = os.path.join(work_drive,dir_name)
+			else:
+				destination = os.path.join(module_root,dir_name)
+
+			print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.")
+			shutil.rmtree(destination, True)
+			shutil.copytree(os.path.join(optionals_root,dir_name), destination)
+	except:
+		print_error("Copy Optionals Failed")
+		raise
+	finally:
+		os.chdir(current_dir)
+		
+def cleanup_optionals(mod,pbos):
+	print("")
+	try:			
+		for dir_name in mod:
+			if (dir_name == "userconfig"):
+				destination = os.path.join(work_drive,dir_name)
+			else:
+				destination = os.path.join(module_root,dir_name)
+			
+			print("Cleaning " + destination)
+			
+			try:
+				file_name = "ace_{}.pbo".format(dir_name)
+				src_file_path = os.path.join(release_dir, "@ace","addons",file_name)
+				dst_file_path = os.path.join(release_dir, "@ace","optionals",file_name)
+				if (os.path.isfile(src_file_path)):
+					#print("Preserving " + file_name)
+					os.renames(src_file_path,dst_file_path)
+			except FileExistsError:
+				print_error(file_name + " already exists")
+				continue
+			shutil.rmtree(destination)
+			
+	except:
+		print_error("Cleaning Optionals Failed")
+		raise
 ###############################################################################
 
 def main(argv):
 	"""Build an Arma addon suite in a directory from rules in a make.cfg file."""
-	print_blue(("\nmake.py for Arma, v" + __version__))
+	print_blue(("\nmake.py for Arma, modified for Advanced Combat Environment v" + __version__))
 
 	if sys.platform != "win32":
 		print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.")
@@ -321,6 +439,7 @@ make.py [help] [test] [force] [key <name>] [target <name>] [release <version>]
 test -- Copy result to Arma 3.
 release <version> -- Make archive with <version>.
 force -- Ignore cache and build all.
+checkexternal -- Check External Files
 target <name> -- Use rules in make.cfg under heading [<name>] rather than
    default [Make]
 key <name> -- Use key in working directory with <name> to sign. If it does not
@@ -378,6 +497,12 @@ See the make.cfg file for additional build options.
 		quiet = True
 		argv.remove("quiet")
 
+	if "checkexternal" in argv:
+		argv.remove("checkexternal")
+		check_external = True
+	else:
+		check_external = False
+
 	# Get the directory the make script is in.
 	make_root = os.path.dirname(os.path.realpath(__file__))
 	make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
@@ -396,6 +521,12 @@ See the make.cfg file for additional build options.
 
 	cfg = configparser.ConfigParser();
 	try:
+		global work_drive
+		global module_root
+		global release_dir
+		global module_root_parent
+		global optionals_root
+		
 		cfg.read(os.path.join(make_root, "make.cfg"))
 
 		# Project name (with @ symbol)
@@ -429,27 +560,35 @@ See the make.cfg file for additional build options.
 
 		# Release/build directory, relative to script dir
 		release_dir = cfg.get(make_target, "release_dir", fallback="release")
-
+		
 		# Project PBO file prefix (files are renamed to prefix_name.pbo)
 		pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None)
 
 		# Project module Root
 		module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
 		module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
+		optionals_root = os.path.join(module_root_parent, "optionals")
 		print_green ("module_root: " + module_root)
+		
 		if (os.path.isdir(module_root)):
 			os.chdir(module_root)
 		else:
 			print_error ("Directory " + module_root + " does not exist.")
 			sys.exit()
 
+		if (os.path.isdir(optionals_root)):
+			print_green ("optionals_root: " + optionals_root)
+		else:
+			print_error ("Directory " + optionals_root + " does not exist.")
+			sys.exit()
+		
+		print_green ("release_dir: " + release_dir)
+		
 	except:
 		raise
 		print_error("Could not parse make.cfg.")
 		sys.exit(1)
 
-
-
 	# See if we have been given specific modules to build from command line.
 	if len(argv) > 1 and not make_release:
 		arg_modules = True
@@ -492,9 +631,14 @@ See the make.cfg file for additional build options.
 		print ("No cache found.")
 		cache = {}
 
+	#Temporarily copy optionals_root for building. They will be removed later. 
+	optionals_modules = []
+	optional_files = []
+	copy_optionals_for_building(optionals_modules,optional_files)
+	
 	# Get list of subdirs in make root.
 	dirs = next(os.walk(module_root))[1]
-
+	
 	# Autodetect what directories to build.
 	if module_autodetect and not arg_modules:
 		modules = []
@@ -537,7 +681,8 @@ See the make.cfg file for additional build options.
 	# For each module, prep files and then build.
 	for module in modules:
 		print_green("\nMaking " + module + "-"*max(1, (60-len(module))))
-
+		missing = False
+		
 		# Cache check
 		if module in cache:
 			old_sha = cache[module]
@@ -550,10 +695,15 @@ See the make.cfg file for additional build options.
 
 		# Hash the module
 		new_sha = get_directory_hash(os.path.join(module_root, module))
+		
+		# Is the pbo file missing?
+		missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module)))
+		if missing:
+			print("ace_{}.pbo".format(module) + " is missing. Building...")
 
 		# Check if it needs rebuilt
 		# print ("Hash:", new_sha)
-		if old_sha == new_sha:
+		if old_sha == new_sha and not missing:
 			if not force_build:
 				print("Module has not changed.")
 				# Skip everything else
@@ -658,7 +808,10 @@ See the make.cfg file for additional build options.
 					cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
 
 				else:
-					cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+					if check_external:
+						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+					else:
+						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
 
 				color("grey")
 				if quiet:
@@ -841,6 +994,8 @@ See the make.cfg file for additional build options.
 			except:
 				print_error("Could not copy files. Is Arma 3 running?")
 
+	copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
+	cleanup_optionals(optionals_modules,optional_files)
 if __name__ == "__main__":
 	main(sys.argv)
 input("Press Enter to continue...")