From 8021ce42156d8282d7aff0bcc22e241c061fcf01 Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Wed, 29 Nov 2017 18:09:05 +0100
Subject: [PATCH 1/6] New function "setAimCoef" at common, change
 ace_advanced_fatigue_fnc_handleEffects to use new function instead of
 setCustomAimCoef

---
 .../functions/fnc_handleEffects.sqf           |  6 +--
 addons/common/XEH_PREP.hpp                    |  1 +
 addons/common/functions/fnc_setAimCoef.sqf    | 50 +++++++++++++++++++
 3 files changed, 54 insertions(+), 3 deletions(-)
 create mode 100644 addons/common/functions/fnc_setAimCoef.sqf

diff --git a/addons/advanced_fatigue/functions/fnc_handleEffects.sqf b/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
index 111727c826..cd1dc5c689 100644
--- a/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
+++ b/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
@@ -90,12 +90,12 @@ if (_overexhausted) then {
 
 switch (stance _unit) do {
     case ("CROUCH"): {
-        _unit setCustomAimCoef (1.0 + _fatigue ^ 2 * 0.1);
+        [_unit, QUOTE(ADDON), 1.0 + _fatigue ^ 2 * 0.1] call EFUNC(common,setAimCoef);
     };
     case ("PRONE"): {
-        _unit setCustomAimCoef (1.0 + _fatigue ^ 2 * 2.0);
+        [_unit, QUOTE(ADDON), 1.0 + _fatigue ^ 2 * 2.0] call EFUNC(common,setAimCoef);
     };
     default {
-        _unit setCustomAimCoef (1.5 + _fatigue ^ 2 * 3.0);
+        [_unit, QUOTE(ADDON), 1.5 + _fatigue ^ 2 * 3.0] call EFUNC(common,setAimCoef);
     };
 };
diff --git a/addons/common/XEH_PREP.hpp b/addons/common/XEH_PREP.hpp
index d8c91ec843..99e3ec63de 100644
--- a/addons/common/XEH_PREP.hpp
+++ b/addons/common/XEH_PREP.hpp
@@ -142,6 +142,7 @@ PREP(runTests);
 PREP(sanitizeString);
 PREP(sendRequest);
 PREP(serverLog);
+PREP(setAimCoef);
 PREP(setApproximateVariablePublic);
 PREP(setDefinedVariable);
 PREP(setDisableUserInputStatus);
diff --git a/addons/common/functions/fnc_setAimCoef.sqf b/addons/common/functions/fnc_setAimCoef.sqf
new file mode 100644
index 0000000000..23898a3f3b
--- /dev/null
+++ b/addons/common/functions/fnc_setAimCoef.sqf
@@ -0,0 +1,50 @@
+/*
+ * Author: xrufix, Glowbal
+ * Handle set AimCoef calls. Will use highest available setting.
+ *
+ * Arguments:
+ * 0: id <STRING>
+ * 1: settings <NUMBER>
+ * 2: add [true] OR remove [false] (default: true) <BOOL>
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [player,"ace_advanced_fatigue", 1, true] call ace_common_fnc_setAimCoef
+ *
+ * Public: Yes
+ */
+#include "script_component.hpp"
+
+params ["_unit","_id", "_setting", ["_add", true]];
+
+private _exists = false;
+private _highestCoef = 1;
+private _map = _unit getVariable [QGVAR(setAimCoefMap), []];
+
+_map = _map select {
+    _x params ["_xID", "_xSetting"];
+    if (_id == _xID) then {
+        _exists = true;
+        if (_add) then {
+            _x set [1, _setting];
+            _highestCoef = _highestCoef max _setting;
+            true
+        } else {
+            false
+        };
+    } else {
+        _highestCoef = _highestCoef max _xSetting;
+        true
+    };
+};
+
+if (!exists && _add) then {
+	_highestCoef = _highestCoef max _setting;
+	_map pushBack [_id, _setting];
+};
+
+// Update the value
+_unit setVariable [QGVAR(setAimCoefMap), _map];
+_unit setCustomAimCoef _highestCoef;

From e1f919303b726f1a56e690691b499f9b42e2ea86 Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Wed, 29 Nov 2017 19:06:00 +0100
Subject: [PATCH 2/6] Fix typo.

---
 addons/common/functions/fnc_setAimCoef.sqf | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/addons/common/functions/fnc_setAimCoef.sqf b/addons/common/functions/fnc_setAimCoef.sqf
index 23898a3f3b..baf1ef53c4 100644
--- a/addons/common/functions/fnc_setAimCoef.sqf
+++ b/addons/common/functions/fnc_setAimCoef.sqf
@@ -3,9 +3,10 @@
  * Handle set AimCoef calls. Will use highest available setting.
  *
  * Arguments:
- * 0: id <STRING>
- * 1: settings <NUMBER>
- * 2: add [true] OR remove [false] (default: true) <BOOL>
+ * 0: unit <OBJECT>
+ * 1: id <STRING>
+ * 2: settings <NUMBER>
+ * 3: add [true] OR remove [false] (default: true) <BOOL>
  *
  * Return Value:
  * None
@@ -40,7 +41,7 @@ _map = _map select {
     };
 };
 
-if (!exists && _add) then {
+if (!_exists && _add) then {
 	_highestCoef = _highestCoef max _setting;
 	_map pushBack [_id, _setting];
 };

From d6af0ea0eb1ce14bb8c95e95fe3029e38dee86e4 Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Wed, 29 Nov 2017 19:27:51 +0100
Subject: [PATCH 3/6] Replace tabs with spaces.

---
 addons/common/functions/fnc_setAimCoef.sqf | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/common/functions/fnc_setAimCoef.sqf b/addons/common/functions/fnc_setAimCoef.sqf
index baf1ef53c4..69fa8f8b26 100644
--- a/addons/common/functions/fnc_setAimCoef.sqf
+++ b/addons/common/functions/fnc_setAimCoef.sqf
@@ -42,8 +42,8 @@ _map = _map select {
 };
 
 if (!_exists && _add) then {
-	_highestCoef = _highestCoef max _setting;
-	_map pushBack [_id, _setting];
+    _highestCoef = _highestCoef max _setting;
+    _map pushBack [_id, _setting];
 };
 
 // Update the value

From 6b0ee1de09358b0aa4c9837ac200ec529e9847bd Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Wed, 29 Nov 2017 20:00:51 +0100
Subject: [PATCH 4/6] Better readability.

---
 addons/common/functions/fnc_setAimCoef.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/common/functions/fnc_setAimCoef.sqf b/addons/common/functions/fnc_setAimCoef.sqf
index 69fa8f8b26..9ee5d38b15 100644
--- a/addons/common/functions/fnc_setAimCoef.sqf
+++ b/addons/common/functions/fnc_setAimCoef.sqf
@@ -18,7 +18,7 @@
  */
 #include "script_component.hpp"
 
-params ["_unit","_id", "_setting", ["_add", true]];
+params ["_unit", "_id", "_setting", ["_add", true]];
 
 private _exists = false;
 private _highestCoef = 1;

From 7c4adee2e7ccea11984cd428eaf3235a7ec01755 Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Sun, 10 Dec 2017 11:41:05 +0100
Subject: [PATCH 5/6] Prepare for merging with #5773.

---
 addons/advanced_fatigue/functions/fnc_handleEffects.sqf | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/advanced_fatigue/functions/fnc_handleEffects.sqf b/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
index cd1dc5c689..dd973afe29 100644
--- a/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
+++ b/addons/advanced_fatigue/functions/fnc_handleEffects.sqf
@@ -90,12 +90,12 @@ if (_overexhausted) then {
 
 switch (stance _unit) do {
     case ("CROUCH"): {
-        [_unit, QUOTE(ADDON), 1.0 + _fatigue ^ 2 * 0.1] call EFUNC(common,setAimCoef);
+        [_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 0.1) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
     };
     case ("PRONE"): {
-        [_unit, QUOTE(ADDON), 1.0 + _fatigue ^ 2 * 2.0] call EFUNC(common,setAimCoef);
+        [_unit, QUOTE(ADDON), (1.0 + _fatigue ^ 2 * 2.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
     };
     default {
-        [_unit, QUOTE(ADDON), 1.5 + _fatigue ^ 2 * 3.0] call EFUNC(common,setAimCoef);
+        [_unit, QUOTE(ADDON), (1.5 + _fatigue ^ 2 * 3.0) * GVAR(swayFactor)] call EFUNC(common,setAimCoef);
     };
 };

From b6b58d4860f4c08176d2e00d12df61d96dcb3705 Mon Sep 17 00:00:00 2001
From: rufix <stefan@ruhfass.com>
Date: Tue, 10 Apr 2018 03:55:28 +0200
Subject: [PATCH 6/6] Update headers

---
 addons/common/functions/fnc_setAimCoef.sqf           | 12 ++++++------
 addons/common/functions/fnc_setHearingCapability.sqf |  6 +++---
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/addons/common/functions/fnc_setAimCoef.sqf b/addons/common/functions/fnc_setAimCoef.sqf
index 9ee5d38b15..7c9352c3be 100644
--- a/addons/common/functions/fnc_setAimCoef.sqf
+++ b/addons/common/functions/fnc_setAimCoef.sqf
@@ -1,18 +1,18 @@
 /*
  * Author: xrufix, Glowbal
- * Handle set AimCoef calls. Will use highest available setting.
+ * Handle set AimCoef calls. Will use the highest available setting.
  *
  * Arguments:
- * 0: unit <OBJECT>
- * 1: id <STRING>
- * 2: settings <NUMBER>
- * 3: add [true] OR remove [false] (default: true) <BOOL>
+ * 0: Unit <OBJECT>
+ * 1: Unique ID <STRING>
+ * 2: Aim coefficient (a higher value causes more shaking) <NUMBER>
+ * 3: Add (true) or remove (false) <BOOL> (default: true)
  *
  * Return Value:
  * None
  *
  * Example:
- * [player,"ace_advanced_fatigue", 1, true] call ace_common_fnc_setAimCoef
+ * [player, "ace_advanced_fatigue", 1, true] call ace_common_fnc_setAimCoef
  *
  * Public: Yes
  */
diff --git a/addons/common/functions/fnc_setHearingCapability.sqf b/addons/common/functions/fnc_setHearingCapability.sqf
index 5b1e7a5a3a..ab5edcfc41 100644
--- a/addons/common/functions/fnc_setHearingCapability.sqf
+++ b/addons/common/functions/fnc_setHearingCapability.sqf
@@ -3,9 +3,9 @@
  * Handle set volume calls. Will use the lowest available volume setting.
  *
  * Arguments:
- * 0: id <STRING>
- * 1: settings <NUMBER>
- * 2: add [true] OR remove [false] (default: true) <BOOL>
+ * 0: ID <STRING>
+ * 1: Settings <NUMBER>
+ * 2: Add (true) or remove (false) <BOOL> (default: true)
  *
  * Return Value:
  * None