diff --git a/addons/disarming/$PBOPREFIX$ b/addons/disarming/$PBOPREFIX$
new file mode 100644
index 0000000000..47b746cf19
--- /dev/null
+++ b/addons/disarming/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\disarming
\ No newline at end of file
diff --git a/addons/disarming/CfgEventHandlers.hpp b/addons/disarming/CfgEventHandlers.hpp
new file mode 100644
index 0000000000..e75956f440
--- /dev/null
+++ b/addons/disarming/CfgEventHandlers.hpp
@@ -0,0 +1,11 @@
+class Extended_PreInit_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_preInit));
+ };
+};
+
+class Extended_PostInit_EventHandlers {
+ class ADDON {
+ init = QUOTE(call COMPILE_FILE(XEH_postInit));
+ };
+};
diff --git a/addons/disarming/CfgVehicles.hpp b/addons/disarming/CfgVehicles.hpp
new file mode 100644
index 0000000000..e7fbb92aa1
--- /dev/null
+++ b/addons/disarming/CfgVehicles.hpp
@@ -0,0 +1,53 @@
+class CfgVehicles {
+ class Man;
+ class CAManBase: Man {
+ class ACE_Actions {
+ class ACE_Disarm {
+ displayName = "Disarm >>";
+ distance = 3;
+ condition = QUOTE([ARR_2(_player, _target)] call FUNC(canDisarm));
+ statement = "";
+ showDisabled = 0;
+ priority = 3.2;
+ // icon = PATHTOF(UI\team\team_management_ca.paa);
+ subMenu[] = {"ACE_Disarm", 0};
+ // hotkey = "M";
+ enableInside = 0;
+
+ class ACE_removeWeapons {
+ displayName = "Remove Weapons";
+ distance = 3;
+ condition = QUOTE([ARR_3(_player, _target, 'weapons')] call FUNC(canDisarm));
+ statement = QUOTE([ARR_3(_player, _target, 'weapons')] call FUNC(startDisarmCaller));
+ exceptions[] = {};
+ showDisabled = 1;
+ priority = 2.4;
+ // icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ // hotkey = "C";
+ };
+ class ACE_removeBackpack {
+ displayName = "Remove Backpack";
+ distance = 3;
+ condition = QUOTE([ARR_3(_player, _target, 'backpack')] call FUNC(canDisarm));
+ statement = QUOTE([ARR_3(_player, _target, 'backpack')] call FUNC(startDisarmCaller));
+ exceptions[] = {};
+ showDisabled = 1;
+ priority = 2.4;
+ // icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ // hotkey = "C";
+ };
+ class ACE_removeUniform {
+ displayName = "Remove Uniform";
+ distance = 3;
+ condition = QUOTE([ARR_3(_player, _target, 'uniform')] call FUNC(canDisarm));
+ statement = QUOTE([ARR_3(_player, _target, 'uniform')] call FUNC(startDisarmCaller));
+ exceptions[] = {};
+ showDisabled = 1;
+ priority = 2.4;
+ // icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ // hotkey = "C";
+ };
+ };
+ };
+ };
+};
diff --git a/addons/disarming/CfgWeapons.hpp b/addons/disarming/CfgWeapons.hpp
new file mode 100644
index 0000000000..404ef4aa76
--- /dev/null
+++ b/addons/disarming/CfgWeapons.hpp
@@ -0,0 +1,14 @@
+class CfgWeapons {
+ class ACE_ItemCore;
+ class InventoryItem_Base_F;
+
+ class ACE_DebugPotato: ACE_ItemCore {
+ displayName = "ACE Potato (debug)";
+ descriptionShort = "Glorious Potato
If you see this in game it means someone fucked up";
+ picture = QUOTE(PATHTOF(UI\potato_ca.paa));
+ scope = 1;
+ class ItemInfo: InventoryItem_Base_F {
+ mass = 1;
+ };
+ };
+};
diff --git a/addons/disarming/README.md b/addons/disarming/README.md
new file mode 100644
index 0000000000..3938720f08
--- /dev/null
+++ b/addons/disarming/README.md
@@ -0,0 +1,14 @@
+ace_captives
+============
+
+Allows taking people captive/handcuffed
+
+####Items:
+`ACE_CableTie` - adds ability to take someone captive
+
+
+## Maintainers
+
+The people responsible for merging changes to this component or answering potential questions.
+
+- [PabstMirror](https://github.com/PabstMirror)
diff --git a/addons/disarming/UI/potato_ca.paa b/addons/disarming/UI/potato_ca.paa
new file mode 100644
index 0000000000..00757d8ed3
Binary files /dev/null and b/addons/disarming/UI/potato_ca.paa differ
diff --git a/addons/disarming/XEH_postInit.sqf b/addons/disarming/XEH_postInit.sqf
new file mode 100644
index 0000000000..a2397235c7
--- /dev/null
+++ b/addons/disarming/XEH_postInit.sqf
@@ -0,0 +1,4 @@
+#include "script_component.hpp"
+
+["Disarm", {_this call FUNC(startDisarmTarget)}] call EFUNC(common,addEventHandler);
+["DisarmFinished", {_this call FUNC(finishDisarmCaller)}] call EFUNC(common,addEventHandler);
diff --git a/addons/disarming/XEH_preInit.sqf b/addons/disarming/XEH_preInit.sqf
new file mode 100644
index 0000000000..7078bdb74a
--- /dev/null
+++ b/addons/disarming/XEH_preInit.sqf
@@ -0,0 +1,12 @@
+#include "script_component.hpp"
+
+ADDON = false;
+
+PREP(canDisarm);
+PREP(disarmDropItems);
+PREP(finishDisarmCaller);
+PREP(finishDisarmTarget);
+PREP(startDisarmCaller);
+PREP(startDisarmTarget);
+
+ADDON = true;
diff --git a/addons/disarming/config.cpp b/addons/disarming/config.cpp
new file mode 100644
index 0000000000..b54e52e57e
--- /dev/null
+++ b/addons/disarming/config.cpp
@@ -0,0 +1,18 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+ class ADDON {
+ units[] = {};
+ weapons[] = {"ACE_DebugPotato"};
+ requiredVersion = REQUIRED_VERSION;
+ requiredAddons[] = {"ACE_Interaction"};
+ author[] = {"PabstMirror"};
+ authorUrl = "https://github.com/PabstMirror/";
+ VERSION_CONFIG;
+ };
+};
+
+#include "CfgEventHandlers.hpp"
+#include "CfgVehicles.hpp"
+#include "CfgWeapons.hpp"
+
diff --git a/addons/disarming/functions/fnc_canDisarm.sqf b/addons/disarming/functions/fnc_canDisarm.sqf
new file mode 100644
index 0000000000..bb654b3dd8
--- /dev/null
+++ b/addons/disarming/functions/fnc_canDisarm.sqf
@@ -0,0 +1,32 @@
+/*
+ * Author: PabstMirror
+ * Checks the conditions for being able to disarm
+ *
+ * Arguments:
+ * 0: caller (player)