From 112c002b0bac700985309e68ffd1b0a547cfc88e Mon Sep 17 00:00:00 2001
From: bux <github@jonathandavid.de>
Date: Tue, 29 Dec 2015 20:57:55 +0100
Subject: [PATCH 1/3] remove ace_offset entry

Ported from AGM and simply renamed. It wasn't even used in AGM.
---
 addons/explosives/CfgVehicles.hpp | 2 --
 1 file changed, 2 deletions(-)

diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp
index 7a51a7d765..de978e0d2b 100644
--- a/addons/explosives/CfgVehicles.hpp
+++ b/addons/explosives/CfgVehicles.hpp
@@ -89,7 +89,6 @@ class CfgVehicles {
         scope = 2;
         scopeCurator = 1;
         vehicleClass = "Cargo";
-        ACE_offset[] = {0,0,0};
         class ACE_Actions {
             class ACE_MainActions {
                 selection = "";
@@ -137,7 +136,6 @@ class CfgVehicles {
     class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
         displayName = "APERS Tripwire Mine";
         model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
-        ACE_offset[] = {1,0,0};
     };
 
     class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {

From 2a6042bf619e75e0f9e3b50a18eb7ee4a79ca486 Mon Sep 17 00:00:00 2001
From: bux <github@jonathandavid.de>
Date: Wed, 30 Dec 2015 09:11:57 +0100
Subject: [PATCH 2/3] add interaction position and defuse object position

and reduce interaction distance
---
 addons/explosives/CfgAmmo.hpp                 | 24 +++++++++-----
 addons/explosives/CfgVehicles.hpp             | 33 ++++++++++++++++---
 .../explosives/functions/fnc_interactEH.sqf   | 12 ++++++-
 3 files changed, 54 insertions(+), 15 deletions(-)

diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp
index 8299a979b3..e354e763e8 100644
--- a/addons/explosives/CfgAmmo.hpp
+++ b/addons/explosives/CfgAmmo.hpp
@@ -21,7 +21,6 @@ class CfgAmmo {
 
     class DirectionalBombCore: TimeBombCore;
     class DirectionalBombBase: DirectionalBombCore;
-    class APERSTripMine_Wire_Ammo: DirectionalBombBase;
 
     class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase;
 
@@ -31,11 +30,16 @@ class CfgAmmo {
     class DirectionalBombBase;
     class ClaymoreDirectionalMine_Remote_Ammo: DirectionalBombBase {
         ACE_Explosive = "ClaymoreDirectionalMine_Remote_Ammo_Scripted";
+        GVAR(defuseObjectPosition[]) = {0, 0, 0.038};
         soundActivation[] = {"", 0, 0, 0};
         soundDeactivation[] = {"", 0, 0, 0};
     };
     //class ClaymoreDirectionalMine_Remote_Ammo_Scripted: ClaymoreDirectionalMine_Remote_Ammo;
 
+    class APERSTripMine_Wire_Ammo: DirectionalBombBase {
+        GVAR(defuseObjectPosition[]) = {-1.415, 0, 0.12};
+    };
+
     class SLAMDirectionalMine_Wire_Ammo: DirectionalBombBase {
         indirectHitRange = 20;
         ACE_explodeOnDefuse = 1;
@@ -55,6 +59,7 @@ class CfgAmmo {
     class PipeBombBase;
     class DemoCharge_Remote_Ammo: PipeBombBase {
         ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
+        GVAR(defuseObjectPosition[]) = {0.07,0,0.055};
         soundActivation[] = {"", 0, 0, 0};
         soundDeactivation[] = {"", 0, 0, 0};
         hit = 500;
@@ -63,17 +68,18 @@ class CfgAmmo {
     };
     class SatchelCharge_Remote_Ammo: PipeBombBase {
         ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
+        GVAR(defuseObjectPosition[]) = {0.1,0.1,0.05};
         soundActivation[] = {"", 0, 0, 0};
         soundDeactivation[] = {"", 0, 0, 0};
     };
-    
+
     /*class DemoCharge_Remote_Ammo_Scripted: DemoCharge_Remote_Ammo;
     class SatchelCharge_Remote_Ammo_Scripted: SatchelCharge_Remote_Ammo;*/
-    
+
     class IEDUrbanBig_Remote_Ammo: PipeBombBase {
         triggerWhenDestroyed = 1;
         ACE_explodeOnDefuse = 0.02;
-        soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40};        
+        soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40};
     };
     class IEDUrbanBig_Command_Ammo: IEDUrbanBig_Remote_Ammo {
         mineTrigger = "RemoteTrigger";
@@ -81,19 +87,19 @@ class CfgAmmo {
     class IEDUrbanBig_Range_Ammo: IEDUrbanBig_Remote_Ammo {
         mineTrigger = "RangeTrigger";
     };
-    
+
     class IEDUrbanSmall_Remote_Ammo: PipeBombBase {
         triggerWhenDestroyed = 1;
         ACE_explodeOnDefuse = 0.02;
         soundTrigger[] = {"A3\Sounds_F\weapons\mines\mech_trigger_1", 0.8, 1, 40};
-    };    
-    class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo {   
+    };
+    class IEDUrbanSmall_Command_Ammo: IEDUrbanSmall_Remote_Ammo {
         mineTrigger = "RemoteTrigger";
     };
     class IEDUrbanSmall_Range_Ammo: IEDUrbanSmall_Remote_Ammo {
         mineTrigger = "RangeTrigger";
     };
-    
+
     class IEDLandBig_Remote_Ammo: PipeBombBase {
         triggerWhenDestroyed = 1;
         ACE_explodeOnDefuse = 0.02;
@@ -105,7 +111,7 @@ class CfgAmmo {
     class IEDLandBig_Range_Ammo: IEDLandBig_Remote_Ammo {
         mineTrigger = "RangeTrigger";
     };
-    
+
     class IEDLandSmall_Remote_Ammo: PipeBombBase {
         triggerWhenDestroyed = 1;
         ACE_explodeOnDefuse = 0.02;
diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp
index de978e0d2b..62ef51a8f2 100644
--- a/addons/explosives/CfgVehicles.hpp
+++ b/addons/explosives/CfgVehicles.hpp
@@ -62,7 +62,7 @@ class CfgVehicles {
         class ACE_Actions {
             class ACE_MainActions {
                 selection = "";
-                distance = 5;
+                distance = 1;
                 condition = "true";
                 class ACE_Defuse {
                     displayName = CSTRING(Defuse);
@@ -73,7 +73,7 @@ class CfgVehicles {
                     icon = PATHTOF(UI\Defuse_ca.paa);
                     priority = 0.8;
                     hotkey = "F";
-                    distance = 5;
+                    distance = 1;
                 };
             };
         };
@@ -92,12 +92,12 @@ class CfgVehicles {
         class ACE_Actions {
             class ACE_MainActions {
                 selection = "";
-                distance = 5;
+                distance = 1;
                 condition = "true";
                 class ACE_SetTrigger {
                     selection = "";
                     displayName = CSTRING(TriggerMenu);
-                    distance = 4;
+                    distance = 1;
                     condition = "true";
                     statement = "";
                     insertChildren = QUOTE([ARR_3(_target getVariable QUOTE(QGVAR(class)),_target,_player)] call FUNC(addTriggerActions););
@@ -109,7 +109,7 @@ class CfgVehicles {
                 class ACE_PickUp {
                     selection = "";
                     displayName = CSTRING(Pickup);
-                    distance = 4;
+                    distance = 1;
                     condition = "true";
                     statement = QUOTE([ARR_2(_player,_target getVariable QUOTE(QGVAR(class)))] call EFUNC(common,addToInventory);deleteVehicle _target;);
                     showDisabled = 0;
@@ -124,6 +124,11 @@ class CfgVehicles {
     class ACE_Explosives_Place_DemoCharge:ACE_Explosives_Place {
         displayName = "Demo Charge";
         model = "\A3\Weapons_F\explosives\c4_charge_small_d";
+        class ACE_Actions: ACE_Actions {
+            class ACE_MainActions: ACE_MainActions {
+                position = "[-0.07,0,0.055]";
+            };
+        };
     };
     class ACE_Explosives_Place_APERSBoundingMine:ACE_Explosives_Place {
         displayName = "APERS Bounding Mine";
@@ -136,6 +141,14 @@ class CfgVehicles {
     class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
         displayName = "APERS Tripwire Mine";
         model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
+
+        class ACE_Actions: ACE_Actions {
+            class ACE_MainActions: ACE_MainActions {
+                position = "[1.415,0,0.12]";
+            };
+        };
+
+
     };
 
     class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {
@@ -146,11 +159,21 @@ class CfgVehicles {
     class ACE_Explosives_Place_Claymore:ACE_Explosives_Place {
         displayName = "Claymore";
         model = "\A3\Weapons_F\explosives\mine_AP_miniclaymore";
+        class ACE_Actions: ACE_Actions {
+            class ACE_MainActions: ACE_MainActions {
+                position = "[0,0,0.038]";
+            };
+        };
     };
 
     class ACE_Explosives_Place_SatchelCharge:ACE_Explosives_Place {
         displayName = "Satchel Charge";
         model = "\A3\Weapons_F\Explosives\satchel";
+        class ACE_Actions: ACE_Actions {
+            class ACE_MainActions: ACE_MainActions {
+                position = "[-0.1,-0.1,0.05]";
+            };
+        };
     };
 
     class ACE_Explosives_Place_SLAM:ACE_Explosives_Place {
diff --git a/addons/explosives/functions/fnc_interactEH.sqf b/addons/explosives/functions/fnc_interactEH.sqf
index 9be7568530..da5e5ec149 100644
--- a/addons/explosives/functions/fnc_interactEH.sqf
+++ b/addons/explosives/functions/fnc_interactEH.sqf
@@ -45,7 +45,17 @@ if (!("ACE_DefusalKit" in (items ACE_player))) exitWith {};
                 if (((_x distance ACE_player) < 15) && {!(_x in _minesHelped)}) then {
                     TRACE_2("Making Defuse Helper",(_x),(typeOf _x));
                     _defuseHelper = "ACE_DefuseObject" createVehicleLocal (getPos _x);
-                    _defuseHelper attachTo [_x, [0,0,0]];
+
+                    private _config = configFile >> "CfgAmmo" >> typeOf _x;
+
+                    private _defuseObjectPosition = getArray (_config >> QGVAR(defuseObjectPosition));
+                    if (_defuseObjectPosition isEqualTo []) then {
+                        _defuseObjectPosition = [0,0,0];
+                    };
+
+                    TRACE_1("DefuseObjectPosition",(_defuseObjectPosition));
+
+                    _defuseHelper attachTo [_x, _defuseObjectPosition];
                     _defuseHelper setVariable [QGVAR(Explosive),_x];
                     _addedDefuseHelpers pushBack _defuseHelper;
                     _minesHelped pushBack _x;

From d6c5643790826d8918c1d4ae8344d2e3210fe8b2 Mon Sep 17 00:00:00 2001
From: bux <github@jonathandavid.de>
Date: Wed, 30 Dec 2015 09:43:19 +0100
Subject: [PATCH 3/3] improve code style

---
 addons/explosives/CfgAmmo.hpp     | 4 ++--
 addons/explosives/CfgVehicles.hpp | 3 ---
 2 files changed, 2 insertions(+), 5 deletions(-)

diff --git a/addons/explosives/CfgAmmo.hpp b/addons/explosives/CfgAmmo.hpp
index e354e763e8..843ecdb8e3 100644
--- a/addons/explosives/CfgAmmo.hpp
+++ b/addons/explosives/CfgAmmo.hpp
@@ -59,7 +59,7 @@ class CfgAmmo {
     class PipeBombBase;
     class DemoCharge_Remote_Ammo: PipeBombBase {
         ACE_Explosive = "DemoCharge_Remote_Ammo_Scripted";
-        GVAR(defuseObjectPosition[]) = {0.07,0,0.055};
+        GVAR(defuseObjectPosition[]) = {0.07, 0, 0.055};
         soundActivation[] = {"", 0, 0, 0};
         soundDeactivation[] = {"", 0, 0, 0};
         hit = 500;
@@ -68,7 +68,7 @@ class CfgAmmo {
     };
     class SatchelCharge_Remote_Ammo: PipeBombBase {
         ACE_Explosive = "SatchelCharge_Remote_Ammo_Scripted";
-        GVAR(defuseObjectPosition[]) = {0.1,0.1,0.05};
+        GVAR(defuseObjectPosition[]) = {0.1, 0.1, 0.05};
         soundActivation[] = {"", 0, 0, 0};
         soundDeactivation[] = {"", 0, 0, 0};
     };
diff --git a/addons/explosives/CfgVehicles.hpp b/addons/explosives/CfgVehicles.hpp
index 62ef51a8f2..ce90b9079b 100644
--- a/addons/explosives/CfgVehicles.hpp
+++ b/addons/explosives/CfgVehicles.hpp
@@ -141,14 +141,11 @@ class CfgVehicles {
     class ACE_Explosives_Place_APERSTripwireMine:ACE_Explosives_Place {
         displayName = "APERS Tripwire Mine";
         model = "\A3\Weapons_F\explosives\mine_AP_tripwire";
-
         class ACE_Actions: ACE_Actions {
             class ACE_MainActions: ACE_MainActions {
                 position = "[1.415,0,0.12]";
             };
         };
-
-
     };
 
     class ACE_Explosives_Place_ATMine:ACE_Explosives_Place {