diff --git a/README.md b/README.md
index ddece2a48d..77548f7ea4 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@
Requires the latest version of CBA A3 | BIF thread
-**ACE 3** is a join effort by the teams behind **ACE 2**, **AGM**, **CSE** and **RHS** to improve the realism and authenticity of Arma 3.
+**ACE 3** is a join effort by the teams behind **ACE 2**, **AGM** and **CSE** to improve the realism and authenticity of Arma 3.
This mod is entirely **open-source**, and everyone is free to propose changes or maintain their own, customized version as long as they make their changes open to the public in accordance with the GNU General Public License (for more information check the license file attached to this project).
@@ -32,7 +32,7 @@ More information on the purpose of the different components of ACE and which one
* Realistic ballistics including wind and humidity
* Backblast simulation
* Weapon resting and bipod deployment
-* A fire control system for armored vehicles and helicopters
+* A fire control system for armored vehicles and helicopters
***and more...***
For a full list of current features, check [the official wiki](https://github.com/KoffeinFlummi/ACE3/wiki).
diff --git a/ace_fcs.dll b/ace_fcs.dll
index 9907d9e1a0..7c222dc1d7 100644
Binary files a/ace_fcs.dll and b/ace_fcs.dll differ
diff --git a/addons/aircraft/CfgVehicles.hpp b/addons/aircraft/CfgVehicles.hpp
index 5f419506c0..e9fb90e61e 100644
--- a/addons/aircraft/CfgVehicles.hpp
+++ b/addons/aircraft/CfgVehicles.hpp
@@ -217,9 +217,8 @@ class CfgVehicles {
};*/
};
- class I_Heli_Transport_02_F: Heli_Transport_02_base_F {};
-
- class I_Heli_light_03_base_F: Helicopter_Base_F {
+ class Heli_light_03_base_F: Helicopter_Base_F {};
+ class I_Heli_light_03_base_F: Heli_light_03_base_F {
lockDetectionSystem = 0;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
@@ -242,15 +241,15 @@ class CfgVehicles {
};
};
- class I_Heli_light_03_F: I_Heli_light_03_base_F {
+ class I_Heli_light_03_F: Heli_light_03_base_F {
class Turrets: Turrets {
class MainTurret: MainTurret {};
};
};
- class I_Heli_light_03_unarmed_base_F: I_Heli_light_03_base_F {};
+ class Heli_light_03_unarmed_base_F: Heli_light_03_base_F {};
- class I_Heli_light_03_unarmed_F: I_Heli_light_03_unarmed_base_F {};
+ class I_Heli_light_03_unarmed_F: Heli_light_03_unarmed_base_F {};
class Plane_CAS_01_base_F: Plane_Base_F {
lockDetectionSystem = 12;
@@ -303,7 +302,8 @@ class CfgVehicles {
};*/
};
- class B_Heli_Transport_03_base_F: Helicopter_Base_H {
+ class Heli_Transport_03_base_F: Helicopter_Base_H {};
+ class B_Heli_Transport_03_base_F: Heli_Transport_03_base_F {
lockDetectionSystem = 12;
incomingMissileDetectionSystem = 16;
driverCanEject = 1;
@@ -317,7 +317,7 @@ class CfgVehicles {
};
};
- class B_Heli_Transport_03_unarmed_base_F: B_Heli_Transport_03_base_F {
+ class B_Heli_Transport_03_unarmed_base_F: Heli_Transport_03_base_F {
class Turrets: Turrets {
class CopilotTurret: CopilotTurret {
canEject = 1;
diff --git a/addons/attach/CfgVehicles.hpp b/addons/attach/CfgVehicles.hpp
index b681c0f7f7..047549dfba 100644
--- a/addons/attach/CfgVehicles.hpp
+++ b/addons/attach/CfgVehicles.hpp
@@ -2,9 +2,6 @@
#define MACRO_ATTACHTOVEHICLE \
class ACE_Actions { \
class ACE_MainActions { \
- selection = ""; \
- distance = 5; \
- condition = "true"; \
class GVAR(AttachVehicle) { \
displayName = "$STR_ACE_Attach_AttachDetach"; \
condition = QUOTE(([ARR_3(_player, _target, '')] call FUNC(canAttach))); \
diff --git a/addons/attach/functions/fnc_openAttachUI.sqf b/addons/attach/functions/fnc_openAttachUI.sqf
index 5533956bb6..1b95be9b84 100644
--- a/addons/attach/functions/fnc_openAttachUI.sqf
+++ b/addons/attach/functions/fnc_openAttachUI.sqf
@@ -62,6 +62,5 @@ _attachables = items _unit;
},
{
call EFUNC(interaction,hideMenu);
- if !(profileNamespace getVariable [QEGVAR(interaction,AutoCloseMenu), false]) then {"Default" call EFUNC(interaction,openMenuSelf)};
}
] call EFUNC(interaction,openSelectMenu);
diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp
index 3e4147eee1..b6f9edd576 100644
--- a/addons/captives/CfgVehicles.hpp
+++ b/addons/captives/CfgVehicles.hpp
@@ -2,34 +2,26 @@ class CfgVehicles {
class Man;
class CAManBase: Man {
class ACE_Actions {
- class ACE_RightHandActions {
+
+ class ACE_ApplyHandcuffs {
+ displayName = "$STR_ACE_Captives_SetCaptive";
selection = "righthand";
- displayName = "Right hand";
- distance = 5;
- condition = QUOTE(([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs)) || ([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs)));
- class ACE_ApplyHandcuffs {
- displayName = "$STR_ACE_Captives_SetCaptive";
- distance = 4;
- condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
- statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
- exceptions[] = {};
- showDisabled = 0;
- priority = 2.4;
- icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
- hotkey = "C";
- };
- class ACE_RemoveHandcuffs {
- displayName = "$STR_ACE_Captives_ReleaseCaptive";
- distance = 4;
- condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
- statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
- exceptions[] = {};
- showDisabled = 0;
- priority = 2.4;
- icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
- hotkey = "R";
- };
+ distance = 2;
+ condition = QUOTE([ARR_2(_player, _target)] call FUNC(canApplyHandcuffs));
+ statement = QUOTE([ARR_2(_player, _target)] call FUNC(doApplyHandcuffs));
+ exceptions[] = {};
+ icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
};
+ class ACE_RemoveHandcuffs {
+ displayName = "$STR_ACE_Captives_ReleaseCaptive";
+ selection = "righthand";
+ distance = 2;
+ condition = QUOTE([ARR_2(_player, _target)] call FUNC(canRemoveHandcuffs));
+ statement = QUOTE([ARR_2(_player, _target)] call FUNC(doRemoveHandcuffs));
+ exceptions[] = {};
+ icon = QUOTE(PATHTOF(UI\handcuff_ca.paa));
+ };
+
class ACE_MainActions {
class ACE_EscortCaptive {
displayName = "$STR_ACE_Captives_EscortCaptive";
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index 62fbd7404f..144194b96f 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -15,6 +15,7 @@ PREP(addSetting);
PREP(adminKick);
PREP(ambientBrightness);
PREP(applyForceWalkStatus);
+PREP(ASLToPosition);
PREP(beingCarried);
PREP(binarizeNumber);
PREP(blurScreen);
@@ -135,6 +136,7 @@ PREP(onLoadRscDisplayChannel);
PREP(owned);
PREP(player);
PREP(playerSide);
+PREP(positionToASL);
PREP(progressBar);
PREP(queueAnimation);
PREP(readSettingFromModule);
@@ -145,6 +147,7 @@ PREP(removeCameraEventHandler);
PREP(removeCustomEventHandler);
PREP(removeMapMarkerCreatedEventHandler);
PREP(removeScrollWheelEventHandler);
+PREP(removeSpecificMagazine);
PREP(requestCallback);
PREP(resetAllDefaults);
PREP(restoreVariablesJIP);
diff --git a/addons/common/functions/fnc_ASLToPosition.sqf b/addons/common/functions/fnc_ASLToPosition.sqf
new file mode 100644
index 0000000000..41e532d39b
--- /dev/null
+++ b/addons/common/functions/fnc_ASLToPosition.sqf
@@ -0,0 +1,21 @@
+/*
+ * Author: CAA-Picard
+ * Converts ASL to Arma "Position"
+ *
+ * Arguments:
+ * 0: position x
+ * 1: position y
+ * 2: position z
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (surfaceIsWater _this) then {
+ _this
+} else {
+ ASLtoATL _this
+};
diff --git a/addons/common/functions/fnc_positionToASL.sqf b/addons/common/functions/fnc_positionToASL.sqf
new file mode 100644
index 0000000000..916184eb33
--- /dev/null
+++ b/addons/common/functions/fnc_positionToASL.sqf
@@ -0,0 +1,21 @@
+/*
+ * Author: CAA-Picard
+ * Converts Arma "Position" to ASL
+ *
+ * Arguments:
+ * 0: position x
+ * 1: position y
+ * 2: position z
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (surfaceIsWater _this) then {
+ _this
+} else {
+ ATLtoASL _this
+};
diff --git a/addons/common/functions/fnc_removeSpecificMagazine.sqf b/addons/common/functions/fnc_removeSpecificMagazine.sqf
new file mode 100644
index 0000000000..7f29cf979c
--- /dev/null
+++ b/addons/common/functions/fnc_removeSpecificMagazine.sqf
@@ -0,0 +1,69 @@
+/*
+ * Author: CAA-Picard
+ * Removes a magazine from the unit that has an specific ammo count
+ *
+ * Argument:
+ * 0: Player