From daec785600de9ce3a8b219a9b8752417e5f8ef2a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= <nicolas.d.badano@gmail.com>
Date: Sat, 17 Jan 2015 18:02:03 -0300
Subject: [PATCH 1/2] AGM_Smallarms pre CBA

---
 {TO_MERGE/agm/Smallarms => addons/smallarms}/config.cpp | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename {TO_MERGE/agm/Smallarms => addons/smallarms}/config.cpp (100%)

diff --git a/TO_MERGE/agm/Smallarms/config.cpp b/addons/smallarms/config.cpp
similarity index 100%
rename from TO_MERGE/agm/Smallarms/config.cpp
rename to addons/smallarms/config.cpp

From a1cb57f4dbf6b0c5001d2207c3b8710410fc6d41 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Nicol=C3=A1s=20Badano?= <nicolas.d.badano@gmail.com>
Date: Sat, 17 Jan 2015 18:14:56 -0300
Subject: [PATCH 2/2] smallarms: port

---
 addons/smallarms/$PBOPREFIX$          |   1 +
 addons/smallarms/CfgMagazines.hpp     | 158 ++++++++
 addons/smallarms/CfgVehicles.hpp      |  34 ++
 addons/smallarms/CfgWeapons.hpp       | 310 +++++++++++++++
 addons/smallarms/config.cpp           | 529 +-------------------------
 addons/smallarms/script_component.hpp |  12 +
 addons/switchunits/$PBOPREFIX$        |   1 +
 7 files changed, 529 insertions(+), 516 deletions(-)
 create mode 100644 addons/smallarms/$PBOPREFIX$
 create mode 100644 addons/smallarms/CfgMagazines.hpp
 create mode 100644 addons/smallarms/CfgVehicles.hpp
 create mode 100644 addons/smallarms/CfgWeapons.hpp
 create mode 100644 addons/smallarms/script_component.hpp
 create mode 100644 addons/switchunits/$PBOPREFIX$

diff --git a/addons/smallarms/$PBOPREFIX$ b/addons/smallarms/$PBOPREFIX$
new file mode 100644
index 0000000000..9d0480659e
--- /dev/null
+++ b/addons/smallarms/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\switchunits
\ No newline at end of file
diff --git a/addons/smallarms/CfgMagazines.hpp b/addons/smallarms/CfgMagazines.hpp
new file mode 100644
index 0000000000..a9cc718258
--- /dev/null
+++ b/addons/smallarms/CfgMagazines.hpp
@@ -0,0 +1,158 @@
+class CfgMagazines {
+    class CA_Magazine;
+
+    // Magazine updates:
+    // 1. Update all magazines with tracer mix to use 1 in 5 mix. Full tracer mags should not be changed!
+    // 2. Remove tracers at bottom of magazine.
+    // 3. Do string updates.
+
+    // 5.56mm ////////////////////////////////////
+
+    class 30Rnd_556x45_Stanag : CA_Magazine {
+        displayname = "5.56mm 30Rnd Mag";
+        displaynameshort = "5.56mm";
+
+        tracersEvery = 0;
+        lastRoundsTracer = 0;
+    };
+
+    class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag {
+        displayname = "5.56mm 30Rnd Tracer Mag";
+        displaynameshort = "5.56mm";
+    };
+
+    class 30Rnd_556x45_Stanag_Tracer_Green: 30Rnd_556x45_Stanag {
+        displayname = "5.56mm 30Rnd Tracer Mag";
+        displaynameshort = "5.56mm";
+    };
+
+    class 30Rnd_556x45_Stanag_Tracer_Yellow: 30Rnd_556x45_Stanag {
+        displayname = "5.56mm 30Rnd Tracer Mag";
+        displaynameshort = "5.56mm";
+    };
+
+    class 20Rnd_556x45_UW_mag: 30Rnd_556x45_Stanag {
+        displayname = "5.56mm 20Rnd MEA Mag";
+        displaynameshort = "5.56mm MEA";
+    };
+
+    // 6.5mm //////////////////////////////////////////
+
+    class 30Rnd_65x39_caseless_mag : CA_Magazine { // MX!!
+        displayname = "6.5mm 30Rnd Mag";
+        displaynameshort = "6.5mm";
+
+        tracersEvery = 0;
+        lastRoundsTracer = 0;
+    };
+
+    class 30Rnd_65x39_caseless_mag_Tracer : 30Rnd_65x39_caseless_mag { // MX!!
+        displayname = "6.5mm 30Rnd Tracer Mag";
+        displaynameshort = "6.5mm Tracer";
+    };
+
+    class 30Rnd_65x39_caseless_green : 30Rnd_65x39_caseless_mag { // Katiba!!
+        displayname = "6.5mm 30Rnd Mag";
+        displaynameshort = "6.5mm";
+
+        tracersEvery = 0;
+        lastRoundsTracer = 0;
+    };
+
+    class 30Rnd_65x39_caseless_green_Tracer : 30Rnd_65x39_caseless_green { // Katiba!!
+        displayname = "6.5mm 30Rnd Tracer Magazine";
+        displaynameshort = "6.5mm Tracer";
+    };
+
+    class 100Rnd_65x39_caseless_mag : CA_Magazine {
+        displayname = "6.5mm 100Rnd Mag";
+        displaynameshort = "6.5mm";
+
+        tracersEvery = 5;
+        lastRoundsTracer = 3;
+    };
+
+    class 100Rnd_65x39_caseless_mag_Tracer : 100Rnd_65x39_caseless_mag {
+        displayname = "6.5mm 100Rnd Tracer Mag";
+        displaynameshort = "6.5mm Tracer";
+    };
+
+    class 200Rnd_65x39_cased_Box : 100Rnd_65x39_caseless_mag {
+        displayname = "6.5mm 200Rnd Box";
+        displaynameshort = "6.5mm";
+
+        tracersEvery = 5;
+        lastRoundsTracer = 3;
+    };
+    class 200Rnd_65x39_cased_Box_Tracer: 200Rnd_65x39_cased_Box {
+        displayname = "6.5mm 200Rnd Tracer Box";
+        displaynameshort = "6.5mm Tracer";
+    };
+
+    // 7.62mm //////////////////////////////////////////
+
+    class 20Rnd_762x51_Mag: CA_Magazine {
+        displayname = "7.62mm 20Rnd Mag";
+        displaynameshort = "7.62mm";
+    };
+
+    class 150Rnd_762x51_Box : CA_Magazine {
+        displayname = "7.62mm 150Rnd Box";
+
+        tracersEvery = 5;
+        lastRoundsTracer = 3;
+    };
+
+    class 150Rnd_762x51_Box_Tracer : 150Rnd_762x51_Box {
+        displayname = "7.62mm 150Rnd Tracer Box";
+    };
+
+    // Anti-materiel ///////////////////////////////
+
+    class 7Rnd_408_Mag: CA_Magazine {
+        displayname = ".408 7Rnd Mag";
+    };
+
+    class 5Rnd_127x108_Mag: CA_Magazine {
+        displayname = "12.7mm 5Rnd Mag";
+    };
+
+    // SMG & Pistol ////////////////////////////
+
+    class 30Rnd_9x21_Mag : CA_Magazine {
+        displayname = "9mm 30Rnd Mag";
+        displaynameshort = "9mm";
+
+        lastRoundsTracer = 0;
+    };
+
+    class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
+        displayname = "9mm 17Rnd Mag";
+        displaynameshort = "9mm";
+
+        count = 17;
+    };
+
+    class 30Rnd_45ACP_Mag_SMG_01 : 30Rnd_9x21_Mag {
+        displayname = ".45 25Rnd Mag";
+        displaynameshort = ".45";
+
+        picture = "\A3\weapons_f\data\ui\M_30Rnd_9x21_CA.paa";
+
+        count = 25;
+
+        tracersEvery = 0;
+        lastRoundsTracer = 0;
+    };
+
+    class 9Rnd_45ACP_Mag : 30Rnd_45ACP_Mag_SMG_01 {
+        displayname = ".45 8Rnd Mag";
+        displaynameshort = ".45";
+
+        count = 8;
+    };
+
+    class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 {
+        displayname = ".45 25Rnd Tracer Mag";
+    };
+};
\ No newline at end of file
diff --git a/addons/smallarms/CfgVehicles.hpp b/addons/smallarms/CfgVehicles.hpp
new file mode 100644
index 0000000000..49de74005a
--- /dev/null
+++ b/addons/smallarms/CfgVehicles.hpp
@@ -0,0 +1,34 @@
+/*#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \
+    name = #ITEM; \
+    count = COUNT; \
+};
+
+class CfgVehicles {
+    class NATO_Box_Base;
+    class EAST_Box_Base;
+    class IND_Box_Base;
+
+    class Box_NATO_Support_F: NATO_Box_Base {
+        class TransportItems {
+            MACRO_ADDITEM(ACE_acc_flashlight_tls,5)
+        };
+    };
+
+    class Box_East_Support_F: EAST_Box_Base {
+        class TransportItems {
+            MACRO_ADDITEM(ACE_acc_flashlight_tls,5)
+        };
+    };
+
+    class Box_IND_Support_F: IND_Box_Base {
+        class TransportItems {
+            MACRO_ADDITEM(ACE_acc_flashlight_tls,5)
+        };
+    };
+
+    class ACE_Box_Misc: Box_NATO_Support_F {
+        class TransportItems {
+            MACRO_ADDITEM(ACE_acc_flashlight_tls,2)
+        };
+    };
+};*/
diff --git a/addons/smallarms/CfgWeapons.hpp b/addons/smallarms/CfgWeapons.hpp
new file mode 100644
index 0000000000..8c42847bd8
--- /dev/null
+++ b/addons/smallarms/CfgWeapons.hpp
@@ -0,0 +1,310 @@
+class Mode_SemiAuto;
+class Mode_Burst;
+class Mode_FullAuto;
+
+// config inheritance of weapon slot info v1.32
+class SlotInfo;
+class CowsSlot: SlotInfo {};
+class PointerSlot: SlotInfo {
+    //compatibleItems[] = {"acc_flashlight","acc_pointer_IR", "ACE_acc_flashlight_tls"};
+};
+
+class CfgWeapons {
+
+    // config inheritance of weapon slot info v1.32 for launchers
+    class Launcher;
+    class Launcher_Base_F: Launcher {
+        class WeaponSlotsInfo {};
+    };
+
+    // config inheritance of weapon slot info v1.32 for assault rifles
+    class RifleCore;
+    class Rifle: RifleCore {
+        class WeaponSlotsInfo {
+            class MuzzleSlot: SlotInfo {};
+            class CowsSlot: CowsSlot {};
+            class PointerSlot: PointerSlot {};
+        };
+    };
+    class Rifle_Base_F: Rifle {};
+    class Rifle_Long_Base_F: Rifle_Base_F {
+        class WeaponSlotsInfo: WeaponSlotsInfo {};
+    };
+
+    // config inheritance of weapon slot info v1.32 for handguns
+    class PistolCore;
+    class Pistol: PistolCore {
+        class WeaponSlotsInfo {
+            class CowsSlot: SlotInfo {};
+        };
+    };
+    class Pistol_Base_F: Pistol {
+        class WeaponSlotsInfo: WeaponSlotsInfo {
+            class MuzzleSlot: SlotInfo {};
+        };
+    };
+
+    ///////////////////////////////////////////////////////////////////////////////
+    //////////// SMALL ARMS WEAPONS ///////////////////////////////////////////////
+    ///////////////////////////////////////////////////////////////////////////////
+
+    // Weapon updates:
+    // 1. Do string update.
+    // 2. Fix magazine compatibility as needed.
+    // 3. Fix firing modes as needed.
+    // 4. Fix accessory compatibility as needed.
+
+    // Grenade launchers /////////////////////////////////////
+    // Updated strings are in weapon configs.
+    class GrenadeLauncher;
+    class UGL_F : GrenadeLauncher {};
+
+    // MXs ////////////////////////////////////////////////////
+
+    class arifle_MX_Base_F : Rifle_Base_F {
+        //magazines[] = {"30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag_Tracer", "100Rnd_65x39_caseless_mag", "100Rnd_65x39_caseless_mag_Tracer"};
+
+        // http://www.bushmaster.com/acr/#/intro
+        // 800 rpm (whatever, fictional lol)
+
+        //class Single : Mode_SemiAuto {};
+        class Single : Mode_SemiAuto {
+            reloadTime = 0.075;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.075;
+        };
+    };
+
+    class arifle_MX_SW_F : arifle_MX_Base_F {
+        modes[] = {"Single", "manual", "close", "short", "medium", "far_optic1", "far_optic2"};
+
+        //class Single : Single {};
+        //class manual : FullAuto {};
+    };
+
+    // Katibas ////////////////////////////////////////////////////
+
+    class arifle_katiba_Base_F : Rifle_Base_F {
+        // http://world.guns.ru/assault/iran/khaybar-kh2002-e.html
+        // 800 rpm
+
+        class Single : Mode_SemiAuto {
+            reloadTime = 0.075;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.075;
+        };
+    };
+
+    // SDAR //////////////////////////////////////////////////
+
+    class SDAR_base_F : Rifle_Base_F {
+        modes[] = {"Single", "FullAuto"}; // Leave in the imaginary full-auto mode because, whatever.
+    };
+
+    // Tavor TRG ////////////////////////////////////////////////
+
+    class Tavor_base_F : Rifle_Base_F {
+        // http://www.israel-weapon.com/files/brochure_2012/IWI_TAVOR_AR.pdf
+        // 700 ~1000 rpm (850)
+        class Single : Mode_SemiAuto {
+            reloadTime = 0.07;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.07;
+        };
+    };
+
+    // Mk20 (F2000) //////////////////////////////////////////////////
+
+    class mk20_base_F : Rifle_Base_F {
+        // http://www.fnherstal.com/primary-menu/products-capabilities/rifles/technical-data/product/182/232/182/1/_/fn-f2000R-standard.html
+        // 850 rpm
+        class Single : Mode_SemiAuto {
+            reloadTime = 0.07;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.07;
+        };
+    };
+
+    // SMG Vermin ////////////////////////////////////////////////////
+
+    class SMG_01_Base : Rifle_Base_F {
+        // http://kriss-usa.com/pdf/operatormanual/
+        // 1200 rpm
+        class Single : Mode_SemiAuto {
+            reloadTime = 0.05;
+        };
+
+        class Burst : Mode_Burst {
+            burst = 2;
+            reloadTime = 0.05;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.05;
+        };
+    };
+
+    // SMG Scorpion ////////////////////////////////////////////////////
+
+    class SMG_02_base_F : Rifle_Base_F {
+        //http://www.czub.cz/zbrojovka/cz-manual/Instruction-Manual-Scorpion-EVO-3-A1_en.pdf
+        // 1150 rpm
+
+        class Single : Mode_SemiAuto {
+            // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf
+            // 900-1100 rpm (1000rpm)
+            reloadTime = 0.052;
+        };
+
+        class Burst : Mode_Burst {
+            reloadTime = 0.052;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.052;
+        };
+    };
+
+    // SMG PDW2000 ///////////////////////////////////////////////////
+
+    class pdw2000_base_F: Rifle_Base_F {
+        magazines[] = {"30Rnd_9x21_Mag"};
+
+        modes[] = {"Single", "FullAuto"}; // No burst on this thing
+
+        class Single : Mode_SemiAuto {
+            // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf
+            // 900-1100 rpm (1000rpm)
+            reloadTime = 0.06;
+        };
+
+        class FullAuto: Mode_FullAuto {
+            reloadTime = 0.06;
+        };
+    };
+
+    // Pistols //////////////////////////////////////////////
+
+    class hgun_P07_F : Pistol_Base_F {
+        magazines[] = {"16Rnd_9x21_Mag"};
+    };
+
+    class hgun_Rook40_F : Pistol_Base_F {
+        magazines[] = {"16Rnd_9x21_Mag"};
+    };
+
+    /*class hgun_ACPC2_F: Pistol_Base_F {};
+    class hgun_Pistol_heavy_01_F: Pistol_Base_F {};
+    class hgun_Pistol_heavy_02_F: Pistol_Base_F {};*/
+
+    // LMGs //////////////////////////////////////////////
+
+    class LMG_Mk200_F : Rifle_Long_Base_F {
+        modes[] = {"manual", "Single", "close", "short", "medium", "far_optic1", "far_optic2"};
+
+        class manual : Mode_FullAuto {
+            // http://www.defensereview.com/kac-stoner-lmg-belt-fed-5-56mm-nato-lightweight-light-machine-gun-squad-automatic-weapon-lmgsaw-displayed-at-sofic-2010/
+            // 550 rpm
+            reloadTime = 0.109;
+        };
+
+        // Add semi-auto mode.
+        // Inherit from 'manual' for sound reasons.
+        class Single : manual {
+            reloadTime = 0.109;
+            dispersion = 0.00175; // radians. Equal to 6 MOA.
+            autofire = 0;
+            burst = 1;
+            displayname = "Semi";
+            texturetype = "semi";
+            showToPlayer = 1;
+        };
+    };
+
+    class LMG_Zafir_F: Rifle_Long_Base_F {
+        modes[] = {"FullAuto", "Single",  "close", "short", "medium", "far_optic1", "far_optic2"};
+
+        class FullAuto : Mode_FullAuto {
+            reloadTime = 0.070; // 850 RPM on gas position 1
+        };
+    };
+
+    // Sniper and anti-materiel rifles /////////////////////////////////
+
+    class EBR_base_F : Rifle_Long_Base_F {
+        // EMR/EBR is typically issued semi-auto AFAIK
+        modes[] = {"Single", "single_close_optics1", "single_medium_optics1", "single_far_optics1"};
+        cursor = "arifle";
+    };
+
+    class LRR_base_F : Rifle_Long_Base_F {
+        cursor = "arifle";
+    };
+
+    class GM6_base_F : Rifle_Long_Base_F {
+        cursor = "arifle";
+
+        // Fuck your balancing, BI.
+        class Single : Mode_SemiAuto {
+            // 250 rpm is probably the limit of the finger on a heavy bullpup trigger like this thing must have.
+            reloadTime = 0.24;
+        };
+    };
+
+    ///////////////////////////////////////////////////////////////////////////////
+    //////////// WEAPON ATTACHMENTS ///////////////////////////////////////////////
+    ///////////////////////////////////////////////////////////////////////////////
+
+    /* Handgun flashlight
+    class ItemCore;
+    class InventoryItem_Base_F;
+    class InventoryMuzzleItem_Base_F;
+    class InventoryFlashLightItem_Base_F;
+
+    class ACE_acc_flashlight_tls: ItemCore {
+        author = "$STR_A3_Bohemia_Interactive";
+        _generalMacro = "ACE_acc_flashlight_tls";
+        scope = 1; //2;
+        displayName = "$STR_A3_cfgWeapons_acc_flashlight0";//
+        descriptionUse = "$STR_A3_cfgWeapons_use_flashlight0";//
+        picture = "\A3\weapons_F\Data\UI\gear_accv_flashlight_tls_ca.paa";
+        model = "\A3\weapons_f\acc\accv_flashlight_TLS_F";
+        descriptionShort = "$STR_A3_cfgWeapons_acc_flashlight1";//
+        class ItemInfo: InventoryFlashLightItem_Base_F {
+            mass = 4;
+            class FlashLight {
+                color[] = {180,156,120};
+                ambient[] = {0.9,0.78,0.6};
+                intensity = 20;
+                size = 1;
+                innerAngle = 20;
+                outerAngle = 80;
+                coneFadeCoef = 5;
+                position = "flash dir";
+                direction = "flash";
+                useFlare = 1;
+                flareSize = 1.4;
+                flareMaxDistance = "100.0f";
+                dayLight = 0;
+                class Attenuation {
+                    start = 0.5;
+                    constant = 0;
+                    linear = 0;
+                    quadratic = 1.1;
+                    hardLimitStart = 20;
+                    hardLimitEnd = 30;
+                };
+                scale[] = {0};
+            };
+        };
+        inertia = 0.1;
+    };*/
+};
diff --git a/addons/smallarms/config.cpp b/addons/smallarms/config.cpp
index b01cbb04a9..e5731df7b3 100644
--- a/addons/smallarms/config.cpp
+++ b/addons/smallarms/config.cpp
@@ -1,17 +1,15 @@
-// SEE LICENSE.TXT FOR LICENSING INFORMATION
+#include "script_component.hpp"
 
 class CfgPatches {
-  class AGM_Smallarms {
-    units[] = {};
-    weapons[] = {}; //{"AGM_acc_flashlight_tls"};
-    requiredVersion = 0.60;
-    requiredAddons[] = {AGM_Core};
-    version = "0.95";
-    versionStr = "0.95";
-    versionAr[] = {0,95,0};
-    author[] = {"TaoSensai", "KoffeinFlummi"};
-    authorUrl = "https://github.com/Taosenai/tmr";
-  };
+    class ADDON {
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
+        requiredAddons[] = {"ace_common"};
+        author[] = {"TaoSensai", "KoffeinFlummi"};
+        authorUrl = "https://github.com/Taosenai/tmr";
+        VERSION_CONFIG;
+    };
 };
 
 // EVERYTHING BELOW BELONGS TO TAOSENSAI
@@ -22,509 +20,8 @@ class CfgPatches {
 // 3. Add displaynameshort to TMR standards.
 //////////////////////////////////////////////////////
 
-class CfgMagazines {
-  class CA_Magazine;
+#include "CfgMagazines.hpp"
 
-  // Magazine updates:
-  // 1. Update all magazines with tracer mix to use 1 in 5 mix. Full tracer mags should not be changed!
-  // 2. Remove tracers at bottom of magazine.
-  // 3. Do string updates.
+#include "CfgWeapons.hpp"
 
-  // 5.56mm ////////////////////////////////////
-
-  class 30Rnd_556x45_Stanag : CA_Magazine {
-    displayname = "5.56mm 30Rnd Mag";
-    displaynameshort = "5.56mm";
-
-    tracersEvery = 0;
-    lastRoundsTracer = 0;
-  };
-
-  class 30Rnd_556x45_Stanag_Tracer_Red: 30Rnd_556x45_Stanag {
-    displayname = "5.56mm 30Rnd Tracer Mag";
-    displaynameshort = "5.56mm";
-  };
-
-  class 30Rnd_556x45_Stanag_Tracer_Green: 30Rnd_556x45_Stanag {
-    displayname = "5.56mm 30Rnd Tracer Mag";
-    displaynameshort = "5.56mm";
-  };
-
-  class 30Rnd_556x45_Stanag_Tracer_Yellow: 30Rnd_556x45_Stanag {
-    displayname = "5.56mm 30Rnd Tracer Mag";
-    displaynameshort = "5.56mm";
-  };
-
-  class 20Rnd_556x45_UW_mag: 30Rnd_556x45_Stanag {
-    displayname = "5.56mm 20Rnd MEA Mag";
-    displaynameshort = "5.56mm MEA";
-  };
-
-  // 6.5mm //////////////////////////////////////////
-
-  class 30Rnd_65x39_caseless_mag : CA_Magazine { // MX!!
-    displayname = "6.5mm 30Rnd Mag";
-    displaynameshort = "6.5mm";
-
-    tracersEvery = 0;
-    lastRoundsTracer = 0;
-  };
-
-  class 30Rnd_65x39_caseless_mag_Tracer : 30Rnd_65x39_caseless_mag { // MX!!
-    displayname = "6.5mm 30Rnd Tracer Mag";
-    displaynameshort = "6.5mm Tracer";
-  };
-
-  class 30Rnd_65x39_caseless_green : 30Rnd_65x39_caseless_mag { // Katiba!!
-    displayname = "6.5mm 30Rnd Mag";
-    displaynameshort = "6.5mm";
-
-    tracersEvery = 0;
-    lastRoundsTracer = 0;
-  };
-
-  class 30Rnd_65x39_caseless_green_Tracer : 30Rnd_65x39_caseless_green { // Katiba!!
-    displayname = "6.5mm 30Rnd Tracer Magazine";
-    displaynameshort = "6.5mm Tracer";
-  };
-
-  class 100Rnd_65x39_caseless_mag : CA_Magazine {
-    displayname = "6.5mm 100Rnd Mag";
-    displaynameshort = "6.5mm";
-
-    tracersEvery = 5;
-    lastRoundsTracer = 3;
-  };
-
-  class 100Rnd_65x39_caseless_mag_Tracer : 100Rnd_65x39_caseless_mag {
-    displayname = "6.5mm 100Rnd Tracer Mag";
-    displaynameshort = "6.5mm Tracer";
-  };
-
-  class 200Rnd_65x39_cased_Box : 100Rnd_65x39_caseless_mag {
-    displayname = "6.5mm 200Rnd Box";
-    displaynameshort = "6.5mm";
-
-    tracersEvery = 5;
-    lastRoundsTracer = 3;
-  };
-  class 200Rnd_65x39_cased_Box_Tracer: 200Rnd_65x39_cased_Box {
-    displayname = "6.5mm 200Rnd Tracer Box";
-    displaynameshort = "6.5mm Tracer";
-  };
-
-  // 7.62mm //////////////////////////////////////////
-
-  class 20Rnd_762x51_Mag: CA_Magazine {
-    displayname = "7.62mm 20Rnd Mag";
-    displaynameshort = "7.62mm";
-  };
-
-  class 150Rnd_762x51_Box : CA_Magazine {
-    displayname = "7.62mm 150Rnd Box";
-
-    tracersEvery = 5;
-    lastRoundsTracer = 3;
-  };
-
-  class 150Rnd_762x51_Box_Tracer : 150Rnd_762x51_Box {
-    displayname = "7.62mm 150Rnd Tracer Box";
-  };
-
-  // Anti-materiel ///////////////////////////////
-
-  class 7Rnd_408_Mag: CA_Magazine {
-    displayname = ".408 7Rnd Mag";
-  };
-
-  class 5Rnd_127x108_Mag: CA_Magazine {
-    displayname = "12.7mm 5Rnd Mag";
-  };
-
-  // SMG & Pistol ////////////////////////////
-
-  class 30Rnd_9x21_Mag : CA_Magazine {
-    displayname = "9mm 30Rnd Mag";
-    displaynameshort = "9mm";
-
-    lastRoundsTracer = 0;
-  };
-
-  class 16Rnd_9x21_Mag: 30Rnd_9x21_Mag {
-    displayname = "9mm 17Rnd Mag";
-    displaynameshort = "9mm";
-
-    count = 17;
-  };
-
-  class 30Rnd_45ACP_Mag_SMG_01 : 30Rnd_9x21_Mag {
-    displayname = ".45 25Rnd Mag";
-    displaynameshort = ".45";
-
-    picture = "\A3\weapons_f\data\ui\M_30Rnd_9x21_CA.paa";
-
-    count = 25;
-
-    tracersEvery = 0;
-    lastRoundsTracer = 0;
-  };
-
-  class 9Rnd_45ACP_Mag : 30Rnd_45ACP_Mag_SMG_01 {
-    displayname = ".45 8Rnd Mag";
-    displaynameshort = ".45";
-
-    count = 8;
-  };
-
-  class 30Rnd_45ACP_Mag_SMG_01_Tracer_Green: 30Rnd_45ACP_Mag_SMG_01 {
-    displayname = ".45 25Rnd Tracer Mag";
-  };
-};
-
-class Mode_SemiAuto;
-class Mode_Burst;
-class Mode_FullAuto;
-
-// config inheritance of weapon slot info v1.32
-class SlotInfo;
-class CowsSlot: SlotInfo {};
-class PointerSlot: SlotInfo {
-  //compatibleItems[] = {"acc_flashlight","acc_pointer_IR", "AGM_acc_flashlight_tls"};
-};
-
-class CfgWeapons {
-
-  // config inheritance of weapon slot info v1.32 for launchers
-  class Launcher;
-  class Launcher_Base_F: Launcher {
-    class WeaponSlotsInfo {};
-  };
-
-  // config inheritance of weapon slot info v1.32 for assault rifles
-  class RifleCore;
-  class Rifle: RifleCore {
-    class WeaponSlotsInfo {
-      class MuzzleSlot: SlotInfo {};
-      class CowsSlot: CowsSlot {};
-      class PointerSlot: PointerSlot {};
-    };
-  };
-  class Rifle_Base_F: Rifle {};
-  class Rifle_Long_Base_F: Rifle_Base_F {
-    class WeaponSlotsInfo: WeaponSlotsInfo {};
-  };
-
-  // config inheritance of weapon slot info v1.32 for handguns
-  class PistolCore;
-  class Pistol: PistolCore {
-    class WeaponSlotsInfo {
-      class CowsSlot: SlotInfo {};
-    };
-  };
-  class Pistol_Base_F: Pistol {
-    class WeaponSlotsInfo: WeaponSlotsInfo {
-      class MuzzleSlot: SlotInfo {};
-    };
-  };
-
-  ///////////////////////////////////////////////////////////////////////////////
-  //////////// SMALL ARMS WEAPONS ///////////////////////////////////////////////
-  ///////////////////////////////////////////////////////////////////////////////
-
-  // Weapon updates:
-  // 1. Do string update.
-  // 2. Fix magazine compatibility as needed.
-  // 3. Fix firing modes as needed.
-  // 4. Fix accessory compatibility as needed.
-
-  // Grenade launchers /////////////////////////////////////
-  // Updated strings are in weapon configs.
-  class GrenadeLauncher;
-  class UGL_F : GrenadeLauncher {};
-
-  // MXs ////////////////////////////////////////////////////
-
-  class arifle_MX_Base_F : Rifle_Base_F {
-    //magazines[] = {"30Rnd_65x39_caseless_mag", "30Rnd_65x39_caseless_mag_Tracer", "100Rnd_65x39_caseless_mag", "100Rnd_65x39_caseless_mag_Tracer"};
-
-    // http://www.bushmaster.com/acr/#/intro
-    // 800 rpm (whatever, fictional lol)
-
-    //class Single : Mode_SemiAuto {};
-    class Single : Mode_SemiAuto {
-      reloadTime = 0.075;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.075;
-    };
-  };
-
-  class arifle_MX_SW_F : arifle_MX_Base_F {
-    modes[] = {"Single", "manual", "close", "short", "medium", "far_optic1", "far_optic2"};
-
-    //class Single : Single {};
-    //class manual : FullAuto {};
-  };
-
-  // Katibas ////////////////////////////////////////////////////
-
-  class arifle_katiba_Base_F : Rifle_Base_F {
-    // http://world.guns.ru/assault/iran/khaybar-kh2002-e.html
-    // 800 rpm
-
-    class Single : Mode_SemiAuto {
-      reloadTime = 0.075;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.075;
-    };
-  };
-
-  // SDAR //////////////////////////////////////////////////
-
-  class SDAR_base_F : Rifle_Base_F {
-    modes[] = {"Single", "FullAuto"}; // Leave in the imaginary full-auto mode because, whatever.
-  };
-
-  // Tavor TRG ////////////////////////////////////////////////
-
-  class Tavor_base_F : Rifle_Base_F {
-    // http://www.israel-weapon.com/files/brochure_2012/IWI_TAVOR_AR.pdf
-    // 700 ~1000 rpm (850)
-    class Single : Mode_SemiAuto {
-      reloadTime = 0.07;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.07;
-    };
-  };
-
-  // Mk20 (F2000) //////////////////////////////////////////////////
-
-  class mk20_base_F : Rifle_Base_F {
-    // http://www.fnherstal.com/primary-menu/products-capabilities/rifles/technical-data/product/182/232/182/1/_/fn-f2000R-standard.html
-    // 850 rpm
-    class Single : Mode_SemiAuto {
-      reloadTime = 0.07;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.07;
-    };
-  };
-
-  // SMG Vermin ////////////////////////////////////////////////////
-
-  class SMG_01_Base : Rifle_Base_F {
-    // http://kriss-usa.com/pdf/operatormanual/
-    // 1200 rpm
-    class Single : Mode_SemiAuto {
-      reloadTime = 0.05;
-    };
-
-    class Burst : Mode_Burst {
-      burst = 2;
-      reloadTime = 0.05;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.05;
-    };
-  };
-
-  // SMG Scorpion ////////////////////////////////////////////////////
-
-  class SMG_02_base_F : Rifle_Base_F {
-    //http://www.czub.cz/zbrojovka/cz-manual/Instruction-Manual-Scorpion-EVO-3-A1_en.pdf
-    // 1150 rpm
-
-    class Single : Mode_SemiAuto {
-      // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf
-      // 900-1100 rpm (1000rpm)
-      reloadTime = 0.052;
-    };
-
-    class Burst : Mode_Burst {
-      reloadTime = 0.052;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.052;
-    };
-  };
-
-  // SMG PDW2000 ///////////////////////////////////////////////////
-
-  class pdw2000_base_F: Rifle_Base_F {
-    magazines[] = {"30Rnd_9x21_Mag"};
-
-    modes[] = {"Single", "FullAuto"}; // No burst on this thing
-
-    class Single : Mode_SemiAuto {
-      // http://www.stengg.com/upload/915fGdhTi3ggnnGQGGL.pdf
-      // 900-1100 rpm (1000rpm)
-      reloadTime = 0.06;
-    };
-
-    class FullAuto: Mode_FullAuto {
-      reloadTime = 0.06;
-    };
-  };
-
-  // Pistols //////////////////////////////////////////////
-
-  class hgun_P07_F : Pistol_Base_F {
-    magazines[] = {"16Rnd_9x21_Mag"};
-  };
-
-  class hgun_Rook40_F : Pistol_Base_F {
-    magazines[] = {"16Rnd_9x21_Mag"};
-  };
-
-  /*class hgun_ACPC2_F: Pistol_Base_F {};
-  class hgun_Pistol_heavy_01_F: Pistol_Base_F {};
-  class hgun_Pistol_heavy_02_F: Pistol_Base_F {};*/
-
-  // LMGs //////////////////////////////////////////////
-
-  class LMG_Mk200_F : Rifle_Long_Base_F {
-    modes[] = {"manual", "Single", "close", "short", "medium", "far_optic1", "far_optic2"};
-
-    class manual : Mode_FullAuto {
-      // http://www.defensereview.com/kac-stoner-lmg-belt-fed-5-56mm-nato-lightweight-light-machine-gun-squad-automatic-weapon-lmgsaw-displayed-at-sofic-2010/
-      // 550 rpm
-      reloadTime = 0.109;
-    };
-
-    // Add semi-auto mode.
-    // Inherit from 'manual' for sound reasons.
-    class Single : manual {
-      reloadTime = 0.109;
-      dispersion = 0.00175; // radians. Equal to 6 MOA.
-      autofire = 0;
-      burst = 1;
-      displayname = "Semi";
-      texturetype = "semi";
-      showToPlayer = 1;
-    };
-  };
-
-  class LMG_Zafir_F: Rifle_Long_Base_F {
-    modes[] = {"FullAuto", "Single",  "close", "short", "medium", "far_optic1", "far_optic2"};
-
-    class FullAuto : Mode_FullAuto {
-      reloadTime = 0.070; // 850 RPM on gas position 1
-    };
-  };
-
-  // Sniper and anti-materiel rifles /////////////////////////////////
-
-  class EBR_base_F : Rifle_Long_Base_F {
-    // EMR/EBR is typically issued semi-auto AFAIK
-    modes[] = {"Single", "single_close_optics1", "single_medium_optics1", "single_far_optics1"};
-    cursor = "arifle";
-  };
-
-  class LRR_base_F : Rifle_Long_Base_F {
-    cursor = "arifle";
-  };
-
-  class GM6_base_F : Rifle_Long_Base_F {
-    cursor = "arifle";
-
-    // Fuck your balancing, BI.
-    class Single : Mode_SemiAuto {
-      // 250 rpm is probably the limit of the finger on a heavy bullpup trigger like this thing must have.
-      reloadTime = 0.24;
-    };
-  };
-
-  ///////////////////////////////////////////////////////////////////////////////
-  //////////// WEAPON ATTACHMENTS ///////////////////////////////////////////////
-  ///////////////////////////////////////////////////////////////////////////////
-
-
-
-
-  class ItemCore;
-  class InventoryItem_Base_F;
-  class InventoryMuzzleItem_Base_F;
-  class InventoryFlashLightItem_Base_F;
-
-  class AGM_acc_flashlight_tls: ItemCore {
-    author = "$STR_A3_Bohemia_Interactive";
-    _generalMacro = "AGM_acc_flashlight_tls";
-    scope = 1; //2;
-    displayName = "$STR_A3_cfgWeapons_acc_flashlight0";//
-    descriptionUse = "$STR_A3_cfgWeapons_use_flashlight0";//
-    picture = "\A3\weapons_F\Data\UI\gear_accv_flashlight_tls_ca.paa";
-    model = "\A3\weapons_f\acc\accv_flashlight_TLS_F";
-    descriptionShort = "$STR_A3_cfgWeapons_acc_flashlight1";//
-    class ItemInfo: InventoryFlashLightItem_Base_F {
-      mass = 4;
-      class FlashLight {
-        color[] = {180,156,120};
-        ambient[] = {0.9,0.78,0.6};
-        intensity = 20;
-        size = 1;
-        innerAngle = 20;
-        outerAngle = 80;
-        coneFadeCoef = 5;
-        position = "flash dir";
-        direction = "flash";
-        useFlare = 1;
-        flareSize = 1.4;
-        flareMaxDistance = "100.0f";
-        dayLight = 0;
-        class Attenuation {
-          start = 0.5;
-          constant = 0;
-          linear = 0;
-          quadratic = 1.1;
-          hardLimitStart = 20;
-          hardLimitEnd = 30;
-        };
-        scale[] = {0};
-      };
-    };
-    inertia = 0.1;
-  };
-};
-
-#define MACRO_ADDITEM(ITEM,COUNT) class _xx_##ITEM { \
-  name = #ITEM; \
-  count = COUNT; \
-};
-
-/*class CfgVehicles {
-  class NATO_Box_Base;
-  class EAST_Box_Base;
-  class IND_Box_Base;
-
-  class Box_NATO_Support_F: NATO_Box_Base {
-    class TransportItems {
-      MACRO_ADDITEM(AGM_acc_flashlight_tls,5)
-    };
-  };
-
-  class Box_East_Support_F: EAST_Box_Base {
-    class TransportItems {
-      MACRO_ADDITEM(AGM_acc_flashlight_tls,5)
-    };
-  };
-
-  class Box_IND_Support_F: IND_Box_Base {
-    class TransportItems {
-      MACRO_ADDITEM(AGM_acc_flashlight_tls,5)
-    };
-  };
-
-  class AGM_Box_Misc: Box_NATO_Support_F {
-    class TransportItems {
-      MACRO_ADDITEM(AGM_acc_flashlight_tls,2)
-    };
-  };
-};*/
+#include "CfgVehicles.hpp"
diff --git a/addons/smallarms/script_component.hpp b/addons/smallarms/script_component.hpp
new file mode 100644
index 0000000000..d9c70ca5e6
--- /dev/null
+++ b/addons/smallarms/script_component.hpp
@@ -0,0 +1,12 @@
+#define COMPONENT smallarms
+#include "\z\ace\addons\main\script_mod.hpp"
+
+#ifdef DEBUG_ENABLED_SMALLARMS
+	#define DEBUG_MODE_FULL
+#endif
+
+#ifdef DEBUG_SETTINGS_SMALLARMS
+	#define DEBUG_SETTINGS DEBUG_SETTINGS_SMALLARMS
+#endif
+
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/switchunits/$PBOPREFIX$ b/addons/switchunits/$PBOPREFIX$
new file mode 100644
index 0000000000..9d0480659e
--- /dev/null
+++ b/addons/switchunits/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\switchunits
\ No newline at end of file