From 623ab02a125b29fbcb4b878625df3b539cbf65ff Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Wed, 8 Apr 2015 13:06:06 +0200
Subject: [PATCH 001/257] fix falling over static weapons

---
 addons/vehicles/CfgEventHandlers.hpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/addons/vehicles/CfgEventHandlers.hpp b/addons/vehicles/CfgEventHandlers.hpp
index 049b154088..2725e526bc 100644
--- a/addons/vehicles/CfgEventHandlers.hpp
+++ b/addons/vehicles/CfgEventHandlers.hpp
@@ -18,3 +18,12 @@ class Extended_Engine_EventHandlers {
         };
     };
 };
+
+class Extended_Init_EventHandlers {
+    class StaticWeapon {
+        class ACE_FixMass {
+            init = QUOTE(if (local (_this select 0)) then {(_this select 0) setMass (getMass (_this select 0) max 250)};);
+            exclude[] = {"TargetSoldierBase","Static_Designator_01_base_F","Static_Designator_02_base_F","Pod_Heli_Transport_04_base_F"};
+        };
+    };
+};

From e7b5218d52189599d1bcb95c72dcd091186d04ea Mon Sep 17 00:00:00 2001
From: Tenga <tenga6@gmail.com>
Date: Sat, 11 Apr 2015 00:14:06 +0200
Subject: [PATCH 002/257] Altimeter fix, division by zero when no time has
 passed (game paused, etc.)

---
 addons/parachute/functions/fnc_showAltimeter.sqf | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/addons/parachute/functions/fnc_showAltimeter.sqf b/addons/parachute/functions/fnc_showAltimeter.sqf
index a8200fb2ca..45816cc883 100644
--- a/addons/parachute/functions/fnc_showAltimeter.sqf
+++ b/addons/parachute/functions/fnc_showAltimeter.sqf
@@ -14,19 +14,24 @@
  * Public: Yes
  */
 #include "script_component.hpp"
+
 private ["_unit"];
+
 _unit = _this select 0;
-(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN",0,true];
+
+(["ACE_Altimeter"] call BIS_fnc_rscLayer) cutRsc ["ACE_Altimeter", "PLAIN", 0, true];
 if (isNull (uiNamespace getVariable ["ACE_Altimeter", displayNull])) exitWith {};
 
 GVAR(AltimeterActive) = true;
+
 [{
-    if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler);};
+    if (!GVAR(AltimeterActive)) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler)};
     disableSerialization;
     EXPLODE_4_PVT(_this select 0,_display,_unit,_oldHeight,_prevTime);
-    if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler);call FUNC(hideAltimeter);};
+    if !("ACE_Altimeter" in assignedItems _unit) exitWith {[_this select 1] call CALLSTACK(cba_fnc_removePerFrameEventHandler); call FUNC(hideAltimeter)};
+
+    private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime", "_timeDiff"];
 
-    private ["_height", "_hour", "_minute", "_descentRate","_HeightText", "_DecendRate", "_TimeText", "_curTime"];
     _HeightText = _display displayCtrl 1100;
     _DecendRate = _display displayCtrl 1000;
     _TimeText = _display displayCtrl 1001;
@@ -35,7 +40,8 @@ GVAR(AltimeterActive) = true;
 
     _height = (getPosASL _unit) select 2;
     _curTime = time;
-    _descentRate = floor ((_oldHeight - _height) / (_curTime - _prevTime));
+    _timeDiff = _curTime - _prevTime;
+    _descentRate = if(_timeDiff > 0) then {floor((_oldHeight - _height) / _timeDiff)} else {0};
 
     _TimeText ctrlSetText (format ["%1:%2",[_hour, 2] call EFUNC(common,numberToDigitsString),[_minute, 2] call EFUNC(common,numberToDigitsString)]);
     _HeightText ctrlSetText (format ["%1", floor(_height)]);

From dd7e7463686ed731af9468726fbe7cc8716be089 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sat, 11 Apr 2015 19:52:30 +0200
Subject: [PATCH 003/257] formatting

---
 .../common/functions/fnc_disableUserInput.sqf | 132 ++++++++++--------
 1 file changed, 73 insertions(+), 59 deletions(-)

diff --git a/addons/common/functions/fnc_disableUserInput.sqf b/addons/common/functions/fnc_disableUserInput.sqf
index 57be44fe43..a1486438b6 100644
--- a/addons/common/functions/fnc_disableUserInput.sqf
+++ b/addons/common/functions/fnc_disableUserInput.sqf
@@ -1,14 +1,16 @@
 /*
  * Author: commy2
- *
  * Disables key input. ESC can still be pressed to open the menu.
  *
- * Argument:
- * 0: True to disable key inputs, false to re-enable them (Bool)
+ * Arguments:
+ * 0: True to disable key inputs, false to re-enable them <BOOL>
  *
  * Return value:
  * Nothing
+ *
+ * Public: Yes
  */
+
 #include "script_component.hpp"
 
 private ["_state", "_dlg"];
@@ -16,76 +18,88 @@ private ["_state", "_dlg"];
 _state = _this select 0;
 
 if (_state) then {
-  disableSerialization;
+    disableSerialization;
 
-  if (!isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull])) exitWith {};
-  if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) exitWith {};
+    if (!isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull])) exitWith {};
+    if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) exitWith {};
 
-  // end TFAR and ACRE2 radio transmissions
-  0 spawn FUNC(endRadioTransmission);
+    // end TFAR and ACRE2 radio transmissions
+    call FUNC(endRadioTransmission);
 
-  // Close map
-  if (visibleMap && {!(player getVariable ["ACE_canSwitchUnits", false])}) then {openMap false};
+    // Close map
+    if (visibleMap && {!(player getVariable ["ACE_canSwitchUnits", false])}) then {
+        openMap false;
+    };
 
-  closeDialog 0;
-  createDialog QGVAR(DisableMouse_Dialog);
+    closeDialog 0;
+    createDialog QGVAR(DisableMouse_Dialog);
 
-  _dlg = uiNamespace getVariable QGVAR(dlgDisableMouse);
+    _dlg = uiNamespace getVariable QGVAR(dlgDisableMouse);
 
-  _dlg displayAddEventHandler ["KeyDown", {
-    _key = _this select 1;
-
-    if (_key == 1 && {alive player}) then {
-      createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer);
-
-      disableSerialization;
-      _dlg = finddisplay 49;
-      _dlg displayAddEventHandler ["KeyDown", {
+    _dlg displayAddEventHandler ["KeyDown", {
         _key = _this select 1;
-        !(_key == 1)
-      }];
 
-      for "_index" from 100 to 2000 do {
-        (_dlg displayCtrl _index) ctrlEnable false;
-      };
+        if (_key == 1 && {alive player}) then {
+            createDialog (["RscDisplayInterrupt", "RscDisplayMPInterrupt"] select isMultiplayer);
 
-      _ctrl = _dlg displayctrl 103;
-      _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)];
-      _ctrl ctrlEnable true;
-      _ctrl ctrlSetText "ABORT";
-      _ctrl ctrlSetTooltip "Abort.";
+            disableSerialization;
+            _dlg = finddisplay 49;
+            _dlg displayAddEventHandler ["KeyDown", {
+                _key = _this select 1;
+                !(_key == 1)
+            }];
 
-      _ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer);
-      _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)];
-      _ctrl ctrlEnable (call {_config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}});
-      _ctrl ctrlSetText "RESPAWN";
-      _ctrl ctrlSetTooltip "Respawn.";
-    };
+            for "_index" from 100 to 2000 do {
+                (_dlg displayCtrl _index) ctrlEnable false;
+            };
 
-    if (_key in actionKeys "TeamSwitch"       && {teamSwitchEnabled})                                then {(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; teamSwitch};//_acc = accTime; teamSwitch; setAccTime _acc};
-    if (_key in actionKeys "CuratorInterface" && {getAssignedCuratorLogic player in allCurators})    then {(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openCuratorInterface};
-    if (_key in actionKeys "ShowMap"          && {player getVariable ["ACE_canSwitchUnits", false]}) then {(uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openMap true};
+            _ctrl = _dlg displayctrl 103;
+            _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(while {!isNull (uiNamespace getVariable [ARR_2(QUOTE(QGVAR(dlgDisableMouse)),displayNull)])} do {closeDialog 0}; failMission 'LOSER'; [false] call DFUNC(disableUserInput);)];
+            _ctrl ctrlEnable true;
+            _ctrl ctrlSetText "ABORT";
+            _ctrl ctrlSetTooltip "Abort.";
 
-    if (serverCommandAvailable "#missions" || {player getVariable ["ACE_isUnconscious", false] && {(call FUNC(player)) getVariable [QEGVAR(medical,AllowChatWhileUnconscious), missionNamespace getVariable [QEGVAR(medical,AllowChatWhileUnconscious), false]]}})  then {
-      if (!(_key in (actionKeys "DefaultAction" + actionKeys "Throw")) && {_key in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) then {
-        _key = 0;
-      };
-    };
+            _ctrl = _dlg displayctrl ([104, 1010] select isMultiplayer);
+            _ctrl ctrlSetEventHandler ["buttonClick", QUOTE(closeDialog 0; player setDamage 1; [false] call DFUNC(disableUserInput);)];
+            _ctrl ctrlEnable (call {_config = missionConfigFile >> "respawnButton"; !isNumber _config || {getNumber _config == 1}});
+            _ctrl ctrlSetText "RESPAWN";
+            _ctrl ctrlSetTooltip "Respawn.";
+        };
 
-    _key > 0
-  }];
-  _dlg displayAddEventHandler ["KeyUp", {true}];
+        if (_key in actionKeys "TeamSwitch" && {teamSwitchEnabled}) then {
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; teamSwitch
+        };//_acc = accTime; teamSwitch; setAccTime _acc};
+
+        if (_key in actionKeys "CuratorInterface" && {getAssignedCuratorLogic player in allCurators})    then {
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openCuratorInterface;
+        };
+
+        if (_key in actionKeys "ShowMap" && {player getVariable ["ACE_canSwitchUnits", false]}) then {
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openMap true
+        };
+
+        if (serverCommandAvailable "#missions" || {player getVariable ["ACE_isUnconscious", false] && {(call FUNC(player)) getVariable [QEGVAR(medical,AllowChatWhileUnconscious), missionNamespace getVariable [QEGVAR(medical,AllowChatWhileUnconscious), false]]}}) then {
+            if (!(_key in (actionKeys "DefaultAction" + actionKeys "Throw")) && {_key in (actionKeys "Chat" + actionKeys "PrevChannel" + actionKeys "NextChannel")}) then {
+                _key = 0;
+            };
+        };
+
+        _key > 0
+    }];
+
+    _dlg displayAddEventHandler ["KeyUp", {true}];
+
+    ["ACE_DisableUserInput", "onEachFrame", {
+        if (isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) && {!visibleMap && isNull findDisplay 49 && isNull findDisplay 312 && isNull findDisplay 632}) then {
+            ["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
+            [true] call FUNC(disableUserInput);
+        };
+    }] call BIS_fnc_addStackedEventHandler;
 
-  ["ACE_DisableUserInput", "onEachFrame", {
-    if (isNull (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) && {!visibleMap && isNull findDisplay 49 && isNull findDisplay 312 && isNull findDisplay 632}) then {
-      ["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
-      [true] call FUNC(disableUserInput);
-    };
-  }] call BIS_fnc_addStackedEventHandler;
 } else {
-  if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) then {
-    ["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
-  };
+    if ("ACE_DisableUserInput" in ([BIS_stackedEventHandlers_onEachFrame, {_this select 0}] call FUNC(map))) then {
+        ["ACE_DisableUserInput", "onEachFrame"] call BIS_fnc_removeStackedEventHandler;
+    };
 
-  (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
+    (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
 };

From 24765741ab3c9cacb0ad3e0aec9e6af4030311a8 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sat, 11 Apr 2015 20:05:22 +0200
Subject: [PATCH 004/257] Enabled setAccTime fix from commy

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

diff --git a/addons/common/functions/fnc_disableUserInput.sqf b/addons/common/functions/fnc_disableUserInput.sqf
index a1486438b6..0b1275e9cf 100644
--- a/addons/common/functions/fnc_disableUserInput.sqf
+++ b/addons/common/functions/fnc_disableUserInput.sqf
@@ -67,15 +67,20 @@ if (_state) then {
         };
 
         if (_key in actionKeys "TeamSwitch" && {teamSwitchEnabled}) then {
-            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; teamSwitch
-        };//_acc = accTime; teamSwitch; setAccTime _acc};
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
+            _acc = accTime;
+            teamSwitch;
+            setAccTime _acc;
+        };
 
         if (_key in actionKeys "CuratorInterface" && {getAssignedCuratorLogic player in allCurators})    then {
-            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openCuratorInterface;
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
+            openCuratorInterface;
         };
 
         if (_key in actionKeys "ShowMap" && {player getVariable ["ACE_canSwitchUnits", false]}) then {
-            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0; openMap true
+            (uiNamespace getVariable [QGVAR(dlgDisableMouse), displayNull]) closeDisplay 0;
+            openMap true;
         };
 
         if (serverCommandAvailable "#missions" || {player getVariable ["ACE_isUnconscious", false] && {(call FUNC(player)) getVariable [QEGVAR(medical,AllowChatWhileUnconscious), missionNamespace getVariable [QEGVAR(medical,AllowChatWhileUnconscious), false]]}}) then {

From f57f7186c203f0e2f7faf4f30dc40aeea6e2a149 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:08:00 +0200
Subject: [PATCH 005/257] Config for compatiblity to ASDG Joint Rails

Added the  scopes and railitems to the according ASDG rails.
---
 optionals/asdg_comp/config.cpp | 42 ++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 optionals/asdg_comp/config.cpp

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
new file mode 100644
index 0000000000..c82d5e0624
--- /dev/null
+++ b/optionals/asdg_comp/config.cpp
@@ -0,0 +1,42 @@
+#include "script_component.hpp"
+
+class CfgPatches
+{
+	class ADDON
+	{
+		units[] = {};
+		weapons[] = {};
+		requiredVersion = REQUIRED_VERSION;
+		requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};
+		author[]={"OnkelDisMaster"};
+		authorUrl = "http://2.xn--gebirgsjgerkompanie-nwb.de/";
+		VERSION_CONFIG;
+	};
+};
+
+class asdg_SlotInfo;
+class asdg_FrontSideRail: asdg_SlotInfo
+{
+	class compatibleItems 
+	{
+		ACE_acc_pointer_red = 1;
+		ACE_acc_pointer_green = 1;
+	};
+};
+
+class asdg_OpticRail;
+class asdg_OpticRail1913: asdg_OpticRail
+{
+	class compatibleItems
+	{
+		ACE_optic_Hamr_2D = 1;
+		ACE_optic_Hamr_PIP = 1;
+		ACE_optic_Arco_2D = 1;
+		ACE_optic_Arco_PIP = 1;
+		ACE_optic_MRCO_2D = 1;
+		ACE_optic_SOS_2D = 1;
+		ACE_optic_SOS_PIP = 1;
+		ACE_optic_LRPS_2D = 1;
+		ACE_optic_LRPS_PIP = 1;
+	};
+};

From a18171547e231ad7f01bf5b2aa6ed4916203e7a7 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:11:06 +0200
Subject: [PATCH 006/257] script_component.hpp for asdg_comp

Included in config.cpp of #485
---
 optionals/asdg_comp/script_component.hpp | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 optionals/asdg_comp/script_component.hpp

diff --git a/optionals/asdg_comp/script_component.hpp b/optionals/asdg_comp/script_component.hpp
new file mode 100644
index 0000000000..e67bf3b9e4
--- /dev/null
+++ b/optionals/asdg_comp/script_component.hpp
@@ -0,0 +1,5 @@
+#define COMPONENT asdg_comp
+
+#include "\z\ace\addons\main\script_mod.hpp"
+
+#include "\z\ace\addons\main\script_macros.hpp"

From 6899659f1c9fe5f055dd6207a852edd32a6d2952 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:19:37 +0200
Subject: [PATCH 007/257] Update config.cpp

---
 optionals/asdg_comp/config.cpp | 54 +++++++++++++++++-----------------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
index c82d5e0624..1a51ba0432 100644
--- a/optionals/asdg_comp/config.cpp
+++ b/optionals/asdg_comp/config.cpp
@@ -2,41 +2,41 @@
 
 class CfgPatches
 {
-	class ADDON
-	{
-		units[] = {};
-		weapons[] = {};
-		requiredVersion = REQUIRED_VERSION;
-		requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};
-		author[]={"OnkelDisMaster"};
-		authorUrl = "http://2.xn--gebirgsjgerkompanie-nwb.de/";
-		VERSION_CONFIG;
-	};
+    class ADDON
+    {
+        units[] = {};
+	weapons[] = {};
+	requiredVersion = REQUIRED_VERSION;
+	requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};
+	author[]={"OnkelDisMaster"};
+	authorUrl = "http://2.xn--gebirgsjgerkompanie-nwb.de/";
+	VERSION_CONFIG;
+    };
 };
 
 class asdg_SlotInfo;
 class asdg_FrontSideRail: asdg_SlotInfo
 {
-	class compatibleItems 
-	{
-		ACE_acc_pointer_red = 1;
-		ACE_acc_pointer_green = 1;
-	};
+    class compatibleItems 
+    {
+        ACE_acc_pointer_red = 1;
+	ACE_acc_pointer_green = 1;
+    };
 };
 
 class asdg_OpticRail;
 class asdg_OpticRail1913: asdg_OpticRail
 {
-	class compatibleItems
-	{
-		ACE_optic_Hamr_2D = 1;
-		ACE_optic_Hamr_PIP = 1;
-		ACE_optic_Arco_2D = 1;
-		ACE_optic_Arco_PIP = 1;
-		ACE_optic_MRCO_2D = 1;
-		ACE_optic_SOS_2D = 1;
-		ACE_optic_SOS_PIP = 1;
-		ACE_optic_LRPS_2D = 1;
-		ACE_optic_LRPS_PIP = 1;
-	};
+    class compatibleItems
+    {
+	ACE_optic_Hamr_2D = 1;
+	ACE_optic_Hamr_PIP = 1;
+        ACE_optic_Arco_2D = 1;
+	ACE_optic_Arco_PIP = 1;
+	ACE_optic_MRCO_2D = 1;
+	ACE_optic_SOS_2D = 1;
+	ACE_optic_SOS_PIP = 1;
+	ACE_optic_LRPS_2D = 1;
+	ACE_optic_LRPS_PIP = 1;
+    };
 };

From 876cec35df5b2f0a0859f4a460f2ffbc1ef09a9c Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:20:59 +0200
Subject: [PATCH 008/257] Update config.cpp

---
 optionals/asdg_comp/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
index 1a51ba0432..d76a4da654 100644
--- a/optionals/asdg_comp/config.cpp
+++ b/optionals/asdg_comp/config.cpp
@@ -31,7 +31,7 @@ class asdg_OpticRail1913: asdg_OpticRail
     {
 	ACE_optic_Hamr_2D = 1;
 	ACE_optic_Hamr_PIP = 1;
-        ACE_optic_Arco_2D = 1;
+	ACE_optic_Arco_2D = 1;
 	ACE_optic_Arco_PIP = 1;
 	ACE_optic_MRCO_2D = 1;
 	ACE_optic_SOS_2D = 1;

From 57bcb555e940730359c2c12fd5c79ffc1eaf5b29 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:22:07 +0200
Subject: [PATCH 009/257] Update config.cpp

---
 optionals/asdg_comp/config.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
index d76a4da654..81115fc96f 100644
--- a/optionals/asdg_comp/config.cpp
+++ b/optionals/asdg_comp/config.cpp
@@ -19,8 +19,8 @@ class asdg_FrontSideRail: asdg_SlotInfo
 {
     class compatibleItems 
     {
-        ACE_acc_pointer_red = 1;
-	ACE_acc_pointer_green = 1;
+    	ACE_acc_pointer_red = 1;
+    	ACE_acc_pointer_green = 1;
     };
 };
 

From 85acaa3ab8d4f31edd3cdfe0e7ef0bba2c472349 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Sat, 11 Apr 2015 21:22:20 +0200
Subject: [PATCH 010/257] Update config.cpp

---
 optionals/asdg_comp/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
index 81115fc96f..18ef70cb1c 100644
--- a/optionals/asdg_comp/config.cpp
+++ b/optionals/asdg_comp/config.cpp
@@ -4,7 +4,7 @@ class CfgPatches
 {
     class ADDON
     {
-        units[] = {};
+    	units[] = {};
 	weapons[] = {};
 	requiredVersion = REQUIRED_VERSION;
 	requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};

From 7c6b84b1f106f5870b95398a10790472d72e33cb Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sun, 12 Apr 2015 16:52:10 -0700
Subject: [PATCH 011/257] Begin laserdesignator UI changes.

---
 addons/laser/RscInGameUI.hpp | 113 ++++++++++++++++++++++++++++++++++-
 addons/laser/config.cpp      |   3 +-
 2 files changed, 114 insertions(+), 2 deletions(-)

diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index 457d320520..15a0ea015d 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -1 +1,112 @@
-// TODO: RscOptics_LaserDesignator for laser code designation
\ No newline at end of file
+class RscInGameUI {
+    class RscOptics_LaserDesignator {
+		idd = 300;
+		controls[] = {"CA_IGUI_elements_group"};
+		class CA_IGUI_elements_group: RscControlsGroup {
+			idc = 170;
+			class VScrollbar: VScrollbar {
+				width = 0;
+			};
+			class HScrollbar: HScrollbar {
+				height = 0;
+			};
+			x = "0 * 		(0.01875 * SafezoneH) + 		(SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+			y = "0 * 		(0.025 * SafezoneH) + 		(SafezoneY)";
+			w = "53.5 * 		(0.01875 * SafezoneH)";
+			h = "40 * 		(0.025 * SafezoneH)";
+			class controls {
+				class CA_OpticsZoom: RscText {
+					idc = 180;
+					style = 1;
+					colorText[] = {0.706,0.0745,0.0196,1};
+					sizeEx = "0.038*SafezoneH";
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "4.5";
+					x = "43.85 * 		(0.01875 * SafezoneH)";
+					y = "19.6 * 		(0.025 * SafezoneH)";
+					w = "4.5 * 		(0.01875 * SafezoneH)";
+					h = "1.1 * 		(0.025 * SafezoneH)";
+				};
+				class CA_Distance: RscText {
+					idc = 151;
+					style = 0;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "2456";
+					x = "24.5 * 		(0.01875 * SafezoneH)";
+					y = "3 * 		(0.025 * SafezoneH)";
+					w = "4 * 		(0.01875 * SafezoneH)";
+					h = "1.5 * 		(0.025 * SafezoneH)";
+				};
+				class CA_Elev: RscText {
+					idc = 175;
+					style = 1;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "80.5";
+					x = "32.7 * 		(0.01875 * SafezoneH)";
+					y = "3 * 		(0.025 * SafezoneH)";
+					w = "5 * 		(0.01875 * SafezoneH)";
+					h = "1.5 * 		(0.025 * SafezoneH)";
+				};
+				class CA_VisionMode: RscText {
+					idc = 179;
+					style = 0;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "VIS";
+					x = "6.5 * 		(0.01875 * SafezoneH)";
+					y = "19.6 * 		(0.025 * SafezoneH)";
+					w = "4 * 		(0.01875 * SafezoneH)";
+					h = "1.1 * 		(0.025 * SafezoneH)";
+				};
+				class CA_Laser: RscText {
+					idc = 158;
+					style = "0x30 + 0x800";
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
+					x = "29.2 * 		(0.01875 * SafezoneH)";
+					y = "3 * 		(0.025 * SafezoneH)";
+					w = "3.5 * 		(0.01875 * SafezoneH)";
+					h = "1.5 * 		(0.025 * SafezoneH)";
+				};
+				class CA_Heading: RscText {
+					idc = 156;
+					style = 0;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "023";
+					x = "16.1 * 		(0.01875 * SafezoneH)";
+					y = "3 * 		(0.025 * SafezoneH)";
+					w = "3.5 * 		(0.01875 * SafezoneH)";
+					h = "1.6 * 		(0.025 * SafezoneH)";
+				};
+                
+                class ACE_LaserCode : RscText {
+					idc = 123001;
+					style = 0;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "Code: 1001";
+					x = "20.1 * 		(0.01875 * SafezoneH)";
+					y = "3 * 		(0.025 * SafezoneH)";
+					w = "3.5 * 		(0.01875 * SafezoneH)";
+					h = "1.6 * 		(0.025 * SafezoneH)";
+				};
+			};
+		};
+	};
\ No newline at end of file
diff --git a/addons/laser/config.cpp b/addons/laser/config.cpp
index 3f430619ef..ad368cdc2d 100644
--- a/addons/laser/config.cpp
+++ b/addons/laser/config.cpp
@@ -12,4 +12,5 @@ class CfgPatches {
 
 #include "CfgEventhandlers.hpp"
 #include "CfgVehicles.hpp"
-#include "CfgWeapons.hpp"
\ No newline at end of file
+#include "CfgWeapons.hpp"
+#include "RscInGameUI.hpp"
\ No newline at end of file

From af255604ac098030613ab983a313e790dac2a02e Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Tue, 14 Apr 2015 21:17:36 +0200
Subject: [PATCH 012/257] Switched to event based sync system for open wounds

---
 addons/medical/XEH_postInit.sqf                      |  2 +-
 addons/medical/functions/fnc_handleDamage_wounds.sqf |  1 -
 .../medical/functions/fnc_onWoundUpdateRequest.sqf   | 12 +++++-------
 addons/medical/functions/fnc_requestWoundSync.sqf    |  4 ++--
 addons/medical/script_component.hpp                  |  2 +-
 5 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 1b0a38f1af..3743511790 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -247,7 +247,7 @@ if (USE_WOUND_EVENT_SYNC) then {
                 // We are only pulling the wounds for the units in the player group. Anything else will come when the unit interacts with them.
                 {
                     [_x, _newPlayer] call FUNC(requestWoundSync);
-                }foreach units group player;
+                }foreach units group _newPlayer;
             };
         }] call EFUNC(common,addEventhandler);
     };
diff --git a/addons/medical/functions/fnc_handleDamage_wounds.sqf b/addons/medical/functions/fnc_handleDamage_wounds.sqf
index 5933651e57..b45a974166 100644
--- a/addons/medical/functions/fnc_handleDamage_wounds.sqf
+++ b/addons/medical/functions/fnc_handleDamage_wounds.sqf
@@ -133,7 +133,6 @@ if (count _woundsCreated > 0) then {
 };
 
 if (USE_WOUND_EVENT_SYNC) then {
-    // TODO Should this be done in a single broadcast?
     // Broadcast the new injuries across the net in parts. One broadcast per injury. Prevents having to broadcast one massive array of injuries.
     {
         ["medical_propagateWound", [_unit, _x]] call EFUNC(common,globalEvent);
diff --git a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf
index c160e47ea0..ccbb373648 100644
--- a/addons/medical/functions/fnc_onWoundUpdateRequest.sqf
+++ b/addons/medical/functions/fnc_onWoundUpdateRequest.sqf
@@ -1,11 +1,10 @@
 /*
  * Author: Glowbal
- * Enabled the vitals loop for a unit.
+ * Handles an wound update request.
  *
  * Arguments:
  * 0: The Unit <OBJECT>
- * 1: the last known ID <NUMBER>
- * 2: Origin object <OBJECT>
+ * 1: Origin object <OBJECT>
  *
  * ReturnValue:
  * <NIL>
@@ -14,12 +13,11 @@
  */
 
 #include "script_component.hpp"
-private ["_unit", "_lastId", "_openWounds"];
+private ["_unit", "_openWounds"];
 _unit = _this select 0;
-_lastId = _this select 1;
-_originOfrequest = _this select 2;
+_originOfrequest = _this select 1;
 
-if (local _unit) then {
+if (local _unit && !(local _originOfrequest)) then {
     _openWounds = _unit getvariable [QGVAR(openWounds), []];
     {
         ["medical_propagateWound", [_originOfrequest], [_unit, _x]] call EFUNC(common,targetEvent);
diff --git a/addons/medical/functions/fnc_requestWoundSync.sqf b/addons/medical/functions/fnc_requestWoundSync.sqf
index bf6f881930..7144c49684 100644
--- a/addons/medical/functions/fnc_requestWoundSync.sqf
+++ b/addons/medical/functions/fnc_requestWoundSync.sqf
@@ -14,11 +14,11 @@
 
 #include "script_component.hpp"
 
-private [ "_target", "_caller", "_openWounds","_lastId"];
+private [ "_target", "_caller", "_openWounds"];
 _target = _this select 0;
 _caller = _this select 1;
 
 if (local _target || GVAR(level) < 2) exitwith {}; // if the target is local, we already got the most update to date information
 if (_target getvariable [QGVAR(isWoundSynced), false]) exitwith {};
 _target setvariable [QGVAR(isWoundSynced), true];
-["medical_woundUpdateRequest", [_target], [_target, _lastId, _caller]] call EFUNC(common,targetEvent);
+["medical_woundUpdateRequest", [_target], [_target, _caller]] call EFUNC(common,targetEvent);
diff --git a/addons/medical/script_component.hpp b/addons/medical/script_component.hpp
index 939a811a41..bac6744bc1 100644
--- a/addons/medical/script_component.hpp
+++ b/addons/medical/script_component.hpp
@@ -11,4 +11,4 @@
 
 #include "\z\ace\addons\main\script_macros.hpp"
 
-#define USE_WOUND_EVENT_SYNC false
+#define USE_WOUND_EVENT_SYNC true

From f85fc12fc8392c1377fbf4d7eb7a0bd66854b289 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 14 Apr 2015 14:24:50 -0700
Subject: [PATCH 013/257] string overflow fix, perf fix for pass-by-ref.

---
 extensions/breakLine/ace_breakLine.cpp | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/extensions/breakLine/ace_breakLine.cpp b/extensions/breakLine/ace_breakLine.cpp
index 74a32cc66d..fb5775b861 100644
--- a/extensions/breakLine/ace_breakLine.cpp
+++ b/extensions/breakLine/ace_breakLine.cpp
@@ -19,13 +19,13 @@
 
 #define MAXCHARACTERS 14
 
-static char version[] = "1.0";
+static char VERSION[] = "1.0";
 
 extern "C" {
     __declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function);
 };
 
-std::vector<std::string> splitString(std::string input) {
+std::vector<std::string> splitString(const std::string & input) {
     std::istringstream ss(input);
     std::string token;
 
@@ -38,10 +38,10 @@ std::vector<std::string> splitString(std::string input) {
 }
 
 std::string addLineBreaks(const std::vector<std::string> &words) {
-
     std::stringstream sstream;
     int numChar = 0;
     int i = 0;
+
     while (i < words.size()) {
         if (numChar == 0) {
             sstream << words[i];
@@ -58,6 +58,7 @@ std::string addLineBreaks(const std::vector<std::string> &words) {
             }
         }
     }
+    
     return sstream.str();
 }
 
@@ -66,12 +67,10 @@ std::string addLineBreaks(const std::vector<std::string> &words) {
 #pragma warning( disable : 4996 )
 
 void __stdcall RVExtension(char *output, int outputSize, const char *function) {
-    //strncpy(output, function, outputSize);
-
     if (!strcmp(function, "version")) {
-        strncpy(output, version, outputSize);
+        strncpy(output, VERSION, outputSize);
     } else {
-        strcpy(output, addLineBreaks(splitString(function)).c_str());
+        strncpy(output, addLineBreaks(splitString(function)).c_str(), outputSize);
         output[outputSize - 1] = '\0';
     }
 }

From 971566fc3ea075b845b197f0019362a17a607b68 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 14 Apr 2015 16:05:01 -0700
Subject: [PATCH 014/257] Laser code dialog entry. ACTUALLY HIDE THE DAMN LASER

---
 addons/laser/CfgVehicles.hpp                  | 22 +++-------------
 addons/laser/RscInGameUI.hpp                  | 26 ++++++++++++-------
 .../functions/fnc_drawVisibleLaserTargets.sqf | 10 ++++++-
 3 files changed, 30 insertions(+), 28 deletions(-)

diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp
index f4e2ed42ab..361f3e1867 100644
--- a/addons/laser/CfgVehicles.hpp
+++ b/addons/laser/CfgVehicles.hpp
@@ -4,30 +4,16 @@ class CfgVehicles {
     class LaserTarget: All {
         // @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
         model = "\A3\Weapons_F\empty.p3d";
-        simulation = "nvmarker";
-        nvTarget = 1;
-        //simulation = "laserTarget";
-        //threat[] = {0,0,0};
+		simulation = "house";
+        
         class EventHandlers {
             init = QUOTE(_this call FUNC(laser_init));
         };
-        
-        diffuse[] = {0,0,0};
-        ambient[] = {0,0,0};
-        brightness = 0;
-        name = "pozicni blik";
-        drawLight = 0;
-        drawLightSize = 0;
-        drawLightCenterSize = 0;
-        activeLight = 0;
-        blinking = 0;
-        dayLight = 0;
-        onlyInNvg = 0;
-        useFlare = 0;
     };
     
     // Visual laserTarget override
     class ACE_LaserTarget_Visual : LaserTarget {
-        //model = "\A3\Weapons_f\laserTgt.p3d";
+        simulation = "LaserTarget";
+        model = "\A3\Weapons_f\laserTgt.p3d";
     };
 };
\ No newline at end of file
diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index 15a0ea015d..366d779fde 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -1,20 +1,27 @@
+class RscControlsGroup;
+class VScrollbar;
+class HScrollbar;
+class RscText;
+
 class RscInGameUI {
     class RscOptics_LaserDesignator {
 		idd = 300;
 		controls[] = {"CA_IGUI_elements_group"};
+        
 		class CA_IGUI_elements_group: RscControlsGroup {
 			idc = 170;
+
+            x = "0 * 		(0.01875 * SafezoneH) + 		(SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+			y = "0 * 		(0.025 * SafezoneH) + 		(SafezoneY)";
+			w = "53.5 * 		(0.01875 * SafezoneH)";
+			h = "40 * 		(0.025 * SafezoneH)";
 			class VScrollbar: VScrollbar {
 				width = 0;
 			};
 			class HScrollbar: HScrollbar {
 				height = 0;
 			};
-			x = "0 * 		(0.01875 * SafezoneH) + 		(SafezoneX + ((SafezoneW - SafezoneH) / 2))";
-			y = "0 * 		(0.025 * SafezoneH) + 		(SafezoneY)";
-			w = "53.5 * 		(0.01875 * SafezoneH)";
-			h = "40 * 		(0.025 * SafezoneH)";
-			class controls {
+            class controls {
 				class CA_OpticsZoom: RscText {
 					idc = 180;
 					style = 1;
@@ -102,11 +109,12 @@ class RscInGameUI {
 					shadow = 0;
 					font = "EtelkaMonospacePro";
 					text = "Code: 1001";
-					x = "20.1 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "3.5 * 		(0.01875 * SafezoneH)";
+					x = "32.7 * 		(0.01875 * SafezoneH)";
+					y = "35.5 * 		(0.025 * SafezoneH)";
+					w = "12 * 		(0.01875 * SafezoneH)";
 					h = "1.6 * 		(0.025 * SafezoneH)";
 				};
 			};
 		};
-	};
\ No newline at end of file
+	};
+};
\ No newline at end of file
diff --git a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf
index 161364c0f2..10d5f1e1b6 100644
--- a/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf
+++ b/addons/laser/functions/fnc_drawVisibleLaserTargets.sqf
@@ -1 +1,9 @@
-// @TODO: This is to draw the actual LaserTarget positions to utilize for laser shooting.
\ No newline at end of file
+// This is a debug function for displaying visible lasers for ourselves
+#include "script_component.hpp"
+
+diag_log text format["[ACE]: Laser Emitter Dump"];
+
+{ 
+    diag_log text format["  %1", _x];
+    diag_log text format["    %2", HASH_GET(GVAR(laserEmitters), _x)];  
+} forEach GVAR(laserEmitters) select 0;
\ No newline at end of file

From 2ec74a6a3e07935cc8eddd6c50a52b84546394c5 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 14 Apr 2015 16:20:03 -0700
Subject: [PATCH 015/257] align correctly, create event, remove FCS from
 laserDesignator.

---
 addons/fcs/CfgOptics.hpp                            |  7 -------
 addons/javelin/CfgWeapons.hpp                       |  1 +
 addons/laser/CfgVehicles.hpp                        |  1 +
 addons/laser/RscInGameUI.hpp                        | 13 ++++++++++++-
 addons/laser/XEH_pre_init.sqf                       |  2 ++
 .../laser/functions/fnc_onLaserDesignatorDraw.sqf   |  5 +++++
 addons/laser/script_component.hpp                   |  6 +++++-
 7 files changed, 26 insertions(+), 9 deletions(-)
 create mode 100644 addons/laser/functions/fnc_onLaserDesignatorDraw.sqf

diff --git a/addons/fcs/CfgOptics.hpp b/addons/fcs/CfgOptics.hpp
index c9704081f9..91f83dd6f6 100644
--- a/addons/fcs/CfgOptics.hpp
+++ b/addons/fcs/CfgOptics.hpp
@@ -35,13 +35,6 @@ class RscInGameUI {
             };
         };
     };
-    class RscOptics_LaserDesignator {
-        class CA_IGUI_elements_group: RscControlsGroup {
-            class controls {
-                MACRO_RANGEFINDER
-            };
-        };
-    };
     class RscWeaponRangeFinderMAAWS {
         class CA_IGUI_elements_group: RscControlsGroup {
             class controls {
diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp
index cef967e32e..8573218048 100644
--- a/addons/javelin/CfgWeapons.hpp
+++ b/addons/javelin/CfgWeapons.hpp
@@ -10,5 +10,6 @@ class CfgWeapons {
          
         lockingTargetSound[] = {"",0,1};
 		lockedTargetSound[] = {"",0,1};
+
     };
 };
\ No newline at end of file
diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp
index 361f3e1867..1e83f66cc9 100644
--- a/addons/laser/CfgVehicles.hpp
+++ b/addons/laser/CfgVehicles.hpp
@@ -4,6 +4,7 @@ class CfgVehicles {
     class LaserTarget: All {
         // @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
         model = "\A3\Weapons_F\empty.p3d";
+        destrType = "DestructNo";
 		simulation = "house";
         
         class EventHandlers {
diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index 366d779fde..770c2104b6 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -2,12 +2,17 @@ class RscControlsGroup;
 class VScrollbar;
 class HScrollbar;
 class RscText;
+class RscMapControl;
 
 class RscInGameUI {
     class RscOptics_LaserDesignator {
 		idd = 300;
 		controls[] = {"CA_IGUI_elements_group"};
         
+        onLoad = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',(_this select 0)];";
+        onUnload = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',nil];";
+        
+        
 		class CA_IGUI_elements_group: RscControlsGroup {
 			idc = 170;
 
@@ -43,7 +48,7 @@ class RscInGameUI {
 					shadow = 0;
 					font = "EtelkaMonospacePro";
 					text = "2456";
-					x = "24.5 * 		(0.01875 * SafezoneH)";
+					x = "24.6 * 		(0.01875 * SafezoneH)";
 					y = "3 * 		(0.025 * SafezoneH)";
 					w = "4 * 		(0.01875 * SafezoneH)";
 					h = "1.5 * 		(0.025 * SafezoneH)";
@@ -101,6 +106,12 @@ class RscInGameUI {
 					h = "1.6 * 		(0.025 * SafezoneH)";
 				};
                 
+                class ACE_LaserCode_Helper : RscMapControl {
+                    idc = -1;
+                    onDraw = QUOTE(_this call FUNC(onLaserDesignatorDraw));
+                    w = 0;
+                    h = 0;
+                };
                 class ACE_LaserCode : RscText {
 					idc = 123001;
 					style = 0;
diff --git a/addons/laser/XEH_pre_init.sqf b/addons/laser/XEH_pre_init.sqf
index e160a533f2..de56274759 100644
--- a/addons/laser/XEH_pre_init.sqf
+++ b/addons/laser/XEH_pre_init.sqf
@@ -11,6 +11,8 @@ PREP(findStrongestRay);
 PREP(translateToModelSpace);
 PREP(translateToWeaponSpace);
 
+PREP(onLaserDesignatorDraw);
+
 PREP(seekerFindLaserSpot);
 PREP(laserOn);
 PREP(laserOff);
diff --git a/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
new file mode 100644
index 0000000000..3f756443fa
--- /dev/null
+++ b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
@@ -0,0 +1,5 @@
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+
+
+TRACE_1("", _this);
\ No newline at end of file
diff --git a/addons/laser/script_component.hpp b/addons/laser/script_component.hpp
index 2be1e9e14b..6bd4063f4e 100644
--- a/addons/laser/script_component.hpp
+++ b/addons/laser/script_component.hpp
@@ -12,4 +12,8 @@
 #include "\z\ace\Addons\main\script_macros.hpp"
 
 
-#define FIREMODE_DIRECT_LOAL 1
\ No newline at end of file
+#define FIREMODE_DIRECT_LOAL 1
+
+
+#define __LaserDesignatorIGUI (uiNamespace getVariable ["ACE_RscOptics_LaserDesignator", nil])
+#define __LaserDesignatorIGUI_LaserCode (__LaserDesignatorIGUI displayCtrl 123001)
\ No newline at end of file

From 934f2ce097637ac140eeb5b994b66c4b32f01bea Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 14 Apr 2015 16:29:49 -0700
Subject: [PATCH 016/257] Display current laser code. Standardize GVARs

---
 addons/laser/XEH_post_init.sqf                         |  1 +
 addons/laser/functions/fnc_onLaserDesignatorDraw.sqf   |  8 ++++++--
 .../functions/fnc_laserHudDesignateOn.sqf              | 10 +++++-----
 3 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/addons/laser/XEH_post_init.sqf b/addons/laser/XEH_post_init.sqf
index fb189d5041..f868ef9895 100644
--- a/addons/laser/XEH_post_init.sqf
+++ b/addons/laser/XEH_post_init.sqf
@@ -2,3 +2,4 @@
 
 ["laser_laserOn", {_this call DFUNC(handleLaserOn)}] call EFUNC(common,addEventHandler);
 ["laser_laserOff", {_this call DFUNC(handleLaserOff)}] call EFUNC(common,addEventHandler);
+
diff --git a/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
index 3f756443fa..a5da33b236 100644
--- a/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
+++ b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
@@ -1,5 +1,9 @@
 #define DEBUG_MODE_FULL
 #include "script_component.hpp"
+TRACE_1("", _this);
+private["_laserCode"];
 
-
-TRACE_1("", _this);
\ No newline at end of file
+_laserCode = ACE_player getVariable[QGVAR(code), ACE_DEFAULT_LASER_CODE];
+if(!isNil "_laserCode") then {
+    __LaserDesignatorIGUI_LaserCode ctrlSetText format["Code: %1", [_laserCode, 4, 0, false] call CBA_fnc_formatNumber];
+};
\ No newline at end of file
diff --git a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
index c480c051bb..6301f6f5e4 100644
--- a/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
+++ b/addons/laser_selfdesignate/functions/fnc_laserHudDesignateOn.sqf
@@ -43,8 +43,8 @@ FUNC(laserHudDesignatePFH) = {
     _turretInfo = [_vehicle, _gunnerInfo select 1] call EFUNC(common,getTurretDirection);
     _povPos = _turretInfo select 0;
     
-    _laserCode = (vehicle ACE_player) getVariable[QGVAR(currentCode), ACE_DEFAULT_LASER_CODE];
-    _waveLength = (vehicle ACE_player) getVariable[QGVAR(currentWaveLength), ACE_DEFAULT_LASER_WAVELENGTH];
+    _laserCode = (vehicle ACE_player) getVariable["ace_laser_code", ACE_DEFAULT_LASER_CODE];
+    _waveLength = (vehicle ACE_player) getVariable["ace_laser_waveLength", ACE_DEFAULT_LASER_WAVELENGTH];
     
     
     _laserResult = [_povPos, [_waveLength,_waveLength], _laserCode] call EFUNC(laser,seekerFindLaserSpot);
@@ -73,9 +73,9 @@ if(!GVAR(active)) then {
     TRACE_1("Activating laser", "");
     
     // Get the self-designation variables, or use defaults
-    _laserCode = (vehicle ACE_player) getVariable[QGVAR(currentCode), ACE_DEFAULT_LASER_CODE];
-    _waveLength = (vehicle ACE_player) getVariable[QGVAR(currentWaveLength), ACE_DEFAULT_LASER_WAVELENGTH];
-    _beamSpread = (vehicle ACE_player) getVariable[QGVAR(currentBeamSpread), ACE_DEFAULT_LASER_BEAMSPREAD];
+    _laserCode = (vehicle ACE_player) getVariable["ace_laser_code", ACE_DEFAULT_LASER_CODE];
+    _waveLength = (vehicle ACE_player) getVariable["ace_laser_waveLength", ACE_DEFAULT_LASER_WAVELENGTH];
+    _beamSpread = (vehicle ACE_player) getVariable["ace_laser_beamSpread", ACE_DEFAULT_LASER_BEAMSPREAD];
     
     _laserUuid = [(vehicle ACE_player), ACE_player, QFUNC(findLaserSource), _waveLength, _laserCode, _beamSpread] call EFUNC(laser,laserOn);
     

From fb6553a7a7b68968508f6fef5042029cae63f763 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 14 Apr 2015 16:57:01 -0700
Subject: [PATCH 017/257] Only show distance if laser is on.

---
 addons/laser/RscInGameUI.hpp                    | 17 +++++++++++++++--
 .../functions/fnc_onLaserDesignatorDraw.sqf     | 10 ++++++++--
 addons/laser/script_component.hpp               |  5 ++++-
 3 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index 770c2104b6..d3dfaa5d43 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -40,8 +40,8 @@ class RscInGameUI {
 					w = "4.5 * 		(0.01875 * SafezoneH)";
 					h = "1.1 * 		(0.025 * SafezoneH)";
 				};
-				class CA_Distance: RscText {
-					idc = 151;
+                class ACE_Distance: RscText {
+					idc = 123002;
 					style = 0;
 					sizeEx = "0.038*SafezoneH";
 					colorText[] = {0.706,0.0745,0.0196,1};
@@ -53,6 +53,19 @@ class RscInGameUI {
 					w = "4 * 		(0.01875 * SafezoneH)";
 					h = "1.5 * 		(0.025 * SafezoneH)";
 				};
+				class CA_Distance: RscText {
+					idc = 151;
+					style = 0;
+					sizeEx = "0.038*SafezoneH";
+					colorText[] = {0.706,0.0745,0.0196,1};
+					shadow = 0;
+					font = "EtelkaMonospacePro";
+					text = "2456";
+					x = 0;
+                    y = 0;
+                    w = 0;
+                    h = 0;
+				};
 				class CA_Elev: RscText {
 					idc = 175;
 					style = 1;
diff --git a/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
index a5da33b236..7f8537ab9b 100644
--- a/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
+++ b/addons/laser/functions/fnc_onLaserDesignatorDraw.sqf
@@ -1,9 +1,15 @@
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
-TRACE_1("", _this);
 private["_laserCode"];
 
 _laserCode = ACE_player getVariable[QGVAR(code), ACE_DEFAULT_LASER_CODE];
 if(!isNil "_laserCode") then {
     __LaserDesignatorIGUI_LaserCode ctrlSetText format["Code: %1", [_laserCode, 4, 0, false] call CBA_fnc_formatNumber];
+};
+
+if(! (ctrlShown __LaserDesignatorIGUI_LaserOn) ) then {
+    // TODO: hide distance
+    __LaserDesignatorIGUI_ACE_Distance ctrlSetText "----";
+} else {
+    __LaserDesignatorIGUI_ACE_Distance ctrlSetText (ctrlText __LaserDesignatorIGUI_CA_Distance);
 };
\ No newline at end of file
diff --git a/addons/laser/script_component.hpp b/addons/laser/script_component.hpp
index 6bd4063f4e..77369ead96 100644
--- a/addons/laser/script_component.hpp
+++ b/addons/laser/script_component.hpp
@@ -16,4 +16,7 @@
 
 
 #define __LaserDesignatorIGUI (uiNamespace getVariable ["ACE_RscOptics_LaserDesignator", nil])
-#define __LaserDesignatorIGUI_LaserCode (__LaserDesignatorIGUI displayCtrl 123001)
\ No newline at end of file
+#define __LaserDesignatorIGUI_LaserCode (__LaserDesignatorIGUI displayCtrl 123001)
+#define __LaserDesignatorIGUI_ACE_Distance (__LaserDesignatorIGUI displayCtrl 123002)
+#define __LaserDesignatorIGUI_CA_Distance (__LaserDesignatorIGUI displayCtrl 151)
+#define __LaserDesignatorIGUI_LaserOn (__LaserDesignatorIGUI displayCtrl 158)
\ No newline at end of file

From 5eededd3e1a9808418cd3ca73797bfe47513bcba Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Wed, 15 Apr 2015 15:01:07 +0200
Subject: [PATCH 018/257] Recoil overhaul initial commmit

---
 addons/recoil/$PBOPREFIX$          |   1 +
 addons/recoil/CfgRecoils.hpp       | 240 +++++++++++++++++++++++++++++
 addons/recoil/config.cpp           |  15 ++
 addons/recoil/script_component.hpp |  12 ++
 4 files changed, 268 insertions(+)
 create mode 100644 addons/recoil/$PBOPREFIX$
 create mode 100644 addons/recoil/CfgRecoils.hpp
 create mode 100644 addons/recoil/config.cpp
 create mode 100644 addons/recoil/script_component.hpp

diff --git a/addons/recoil/$PBOPREFIX$ b/addons/recoil/$PBOPREFIX$
new file mode 100644
index 0000000000..1ab9ffa5e1
--- /dev/null
+++ b/addons/recoil/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\recoil
\ No newline at end of file
diff --git a/addons/recoil/CfgRecoils.hpp b/addons/recoil/CfgRecoils.hpp
new file mode 100644
index 0000000000..27283e71f1
--- /dev/null
+++ b/addons/recoil/CfgRecoils.hpp
@@ -0,0 +1,240 @@
+
+class CfgRecoils {
+    class Default {
+        muzzleOuter[] = {0,"0.4f","0.5f","0.6f"};
+        muzzleInner[] = {0,"0.05f","0.2f","0.2f"};
+        kickBack[] = {"0.05f",0.1};
+        permanent = 0.1;
+        temporary = 0.01;
+    };
+
+    class recoil_default: Default {
+        muzzleOuter[] = {0.3,1,0.3,0.2};
+        muzzleInner[] = {0,0,0.1,0.1};
+        kickBack[] = {0.03,0.06};
+        permanent = 0.1;
+        temporary = 0.01;
+    };
+
+    class recoil_mk20: recoil_default {
+        muzzleOuter[] = {0.2,0.6,0.2,0.2};
+        kickBack[] = {0.01,0.03};
+        temporary = 0.01;
+    };
+
+    class recoil_mk20c: recoil_default {
+        muzzleOuter[] = {0.2,0.8,0.3,0.2};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.015;
+    };
+
+    class recoil_trg20: recoil_default {
+        muzzleOuter[] = {0.2,1,0.3,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.015;
+    };
+
+    class recoil_trg21: recoil_default {
+        muzzleOuter[] = {0.2,0.8,0.3,0.2};
+        kickBack[] = {0.01,0.03};
+        temporary = 0.01;
+    };
+
+    class recoil_mx: recoil_default {
+        muzzleOuter[] = {0.3,1,0.4,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.01;
+    };
+
+    class recoil_mxc: recoil_default {
+        muzzleOuter[] = {0.3,1.2,0.4,0.3};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.015;
+    };
+
+    class recoil_sw: recoil_default {
+        muzzleOuter[] = {0.3,0.8,0.5,0.2};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.005;
+    };
+
+    class recoil_mxm: recoil_default {
+        muzzleOuter[] = {0.3,0.8,0.4,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.01;
+    };
+
+    class recoil_ktb: recoil_default {
+        muzzleOuter[] = {0.3,1,0.3,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.01;
+    };
+
+    class recoil_ktbc: recoil_default {
+        muzzleOuter[] = {0.3,1.2,0.3,0.3};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.015;
+    };
+
+    class recoil_smg_01: recoil_default {
+        muzzleOuter[] = {0.1,0.8,0.3,0.2};
+        kickBack[] = {0.01,0.03};
+        temporary = 0.015;
+    };
+
+    class recoil_smg_02: recoil_default {
+        muzzleOuter[] = {0.1,0.6,0.2,0.2};
+        kickBack[] = {0.01,0.02};
+        temporary = 0.01;
+    };
+
+    class recoil_pdw: recoil_default {
+        muzzleOuter[] = {0.2,1,0.3,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.02;
+    };
+
+    class recoil_sdar: recoil_default {
+        muzzleOuter[] = {0.2,1,0.3,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.01;
+    };
+
+    class recoil_pistol_p07: recoil_default {
+        muzzleOuter[] = {0.2,1,0.2,0.3};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.03;
+    };
+
+    class recoil_pistol_rook40: recoil_default {
+        muzzleOuter[] = {0.2,1,0.2,0.3};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.02;
+    };
+
+    class recoil_pistol_acpc2: recoil_default {
+        muzzleOuter[] = {0.2,1.5,0.2,0.3};
+        kickBack[] = {0.04,0.08};
+        temporary = 0.04;
+    };
+
+    class recoil_pistol_4five: recoil_default {
+        muzzleOuter[] = {0.2,1.5,0.2,0.3};
+        kickBack[] = {0.04,0.08};
+        temporary = 0.06;
+    };
+
+    class recoil_pistol_zubr: recoil_default {
+        muzzleOuter[] = {0.2,1.5,0.2,0.3};
+        kickBack[] = {0.04,0.08};
+        temporary = 0.08;
+    };
+
+    class recoil_pistol_signal: recoil_default {
+        muzzleOuter[] = {0.2,1.5,0.2,0.3};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.02;
+    };
+
+    class recoil_rpg: recoil_default {
+        muzzleOuter[] = {2,3,1,0.5};
+        kickBack[] = {0.08,0.1};
+        temporary = 0.1;
+    };
+
+    class recoil_nlaw: recoil_default {
+        muzzleOuter[] = {2,3,1,0.5};
+        kickBack[] = {0.06,0.08};
+        temporary = 0.08;
+    };
+
+    class recoil_titan_long: recoil_default {
+        muzzleOuter[] = {2,3,1,0.5};
+        kickBack[] = {0.1,0.12};
+        temporary = 0.15;
+    };
+
+    class recoil_titan_short: recoil_default {
+        muzzleOuter[] = {2,3,1,0.5};
+        kickBack[] = {0.1,0.12};
+        temporary = 0.12;
+    };
+
+    class recoil_mk200: recoil_default {
+        muzzleOuter[] = {0.4,0.6,0.6,0.2};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.005;
+    };
+
+    class recoil_zafir: recoil_default {
+        muzzleOuter[] = {0.5,1,0.7,0.3};
+        kickBack[] = {0.02,0.08};
+        temporary = 0.005;
+    };
+
+    class recoil_m320: recoil_default {
+        muzzleOuter[] = {1,3,0.5,0.6};
+        kickBack[] = {0.08,0.1};
+        temporary = 0.02;
+    };
+
+    class recoil_gm6: recoil_default {
+        muzzleOuter[] = {1.4,3.5,0.7,0.8};
+        kickBack[] = {0.1,0.12};
+        temporary = 0.025;
+    };
+
+    class recoil_ebr: recoil_default {
+        muzzleOuter[] = {0.4,1.5,0.6,0.4};
+        kickBack[] = {0.04,0.07};
+        temporary = 0.01;
+    };
+
+    class recoil_dmr_01: recoil_default {
+        muzzleOuter[] = {0.5,2,0.5,0.5};
+        kickBack[] = {0.03,0.08};
+        temporary = 0.015;
+    };
+
+    class recoil_dmr_02: recoil_default {
+        muzzleOuter[] = {0.5,2.5,0.6,0.5};
+        kickBack[] = {0.06,0.08};
+        temporary = 0.01;
+    };
+
+    class recoil_dmr_03: recoil_default {
+        muzzleOuter[] = {0.3,1.5,0.5,0.4};
+        kickBack[] = {0.03,0.06};
+        temporary = 0.005;
+    };
+
+    class recoil_dmr_04: recoil_default {
+        muzzleOuter[] = {0.4,1.5,0.5,0.4};
+        kickBack[] = {0.02,0.04};
+        temporary = 0.015;
+    };
+
+    class recoil_dmr_05: recoil_default {
+        muzzleOuter[] = {0.5,2.5,0.8,0.6};
+        kickBack[] = {0.08,0.1};
+        temporary = 0.01;
+    };
+
+    class recoil_dmr_06: recoil_default {
+        muzzleOuter[] = {0.5,2,0.7,0.5};
+        kickBack[] = {0.05,0.1};
+        temporary = 0.01;
+    };
+
+    class recoil_mmg_01: recoil_default {
+        muzzleOuter[] = {0.6,1.5,0.8,0.3};
+        kickBack[] = {0.02,0.08};
+        temporary = 0.005;
+    };
+
+    class recoil_mmg_02: recoil_default {
+        muzzleOuter[] = {0.5,1.5,0.6,0.4};
+        kickBack[] = {0.04,0.08};
+        temporary = 0.005;
+    };
+};
diff --git a/addons/recoil/config.cpp b/addons/recoil/config.cpp
new file mode 100644
index 0000000000..1e2ce69fae
--- /dev/null
+++ b/addons/recoil/config.cpp
@@ -0,0 +1,15 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+    class ADDON {
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
+        requiredAddons[] = {"ace_common"};
+        author[] = {"commy2"};
+        authorUrl = "";
+        VERSION_CONFIG;
+    };
+};
+
+#include "CfgRecoils.hpp"
diff --git a/addons/recoil/script_component.hpp b/addons/recoil/script_component.hpp
new file mode 100644
index 0000000000..b5a74ec8dd
--- /dev/null
+++ b/addons/recoil/script_component.hpp
@@ -0,0 +1,12 @@
+#define COMPONENT recoil
+#include "\z\ace\addons\main\script_mod.hpp"
+
+#ifdef DEBUG_ENABLED_RECOIL
+    #define DEBUG_MODE_FULL
+#endif
+
+#ifdef DEBUG_ENABLED_RECOIL
+    #define DEBUG_SETTINGS DEBUG_ENABLED_RECOIL
+#endif
+
+#include "\z\ace\addons\main\script_macros.hpp"
\ No newline at end of file

From c88479d54d49e169a0eaab2fb6f48b966b6ac833 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Wed, 15 Apr 2015 19:45:42 +0200
Subject: [PATCH 019/257] staged work

---
 .../functions/fnc_handleBandageOpening.sqf       | 16 +++++++++++++---
 addons/medical/functions/fnc_init.sqf            |  1 +
 .../fnc_treatmentAdvanced_bandageLocal.sqf       |  3 ++-
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/addons/medical/functions/fnc_handleBandageOpening.sqf b/addons/medical/functions/fnc_handleBandageOpening.sqf
index b4e40984ae..21211c9c1b 100644
--- a/addons/medical/functions/fnc_handleBandageOpening.sqf
+++ b/addons/medical/functions/fnc_handleBandageOpening.sqf
@@ -59,20 +59,30 @@ if (isClass (_config >> _className)) then {
 _bandagedWounds = _target getvariable [QGVAR(bandagedWounds), []];
 _exist = false;
 _injuryId = _injury select 0;
+_bandagedInjury = [];
 {
     if ((_x select 0) == _injuryId) exitwith {
         _exist = true;
         _existingInjury = _x;
         _existingInjury set [3, (_existingInjury select 3) + _impact];
         _bandagedWounds set [_foreachIndex, _existingInjury];
+
+        _bandagedInjury = _existingInjury;
     };
 }foreach _bandagedWounds;
 
 if !(_exist) then {
     // [ID, classID, bodypart, percentage treated, bloodloss rate]
-    _bandagedWounds pushback [_injuryId, _injury select 1, _injury select 2, _impact, _injury select 4];
+    _bandagedInjury = [_injuryId, _injury select 1, _injury select 2, _impact, _injury select 4];
+    _bandagedWounds pushback _bandagedInjury;
+};
+
+_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC];
+
+if (USE_WOUND_EVENT_SYNC) then {
+    // sync _bandagedInjury
+
 };
-_target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true];
 
 // Check if we are ever going to reopen this
 if (random(1) <= _reopeningChance) then {
@@ -109,7 +119,7 @@ if (random(1) <= _reopeningChance) then {
                 }foreach _bandagedWounds;
 
                 if (_exist) then {
-                    _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, true];
+                    _target setvariable [QGVAR(bandagedWounds), _bandagedWounds, !USE_WOUND_EVENT_SYNC];
                 };
             };
             // Otherwise something went wrong, we we don't reopen them..
diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf
index ed8301b6b2..fa6aa357c2 100644
--- a/addons/medical/functions/fnc_init.sqf
+++ b/addons/medical/functions/fnc_init.sqf
@@ -28,6 +28,7 @@ _unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true];
 _unit setvariable [QGVAR(openWounds), [], true];
 _unit setvariable [QGVAR(bandagedWounds), [], true];
 _unit setVariable [QGVAR(internalWounds), [], true];
+_unit setvariable [QGVAR(lastUniqueWoundID), 1];
 
 // vitals
 _unit setVariable [QGVAR(heartRate), 80];
diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
index 217a69cd4d..02626ff1fe 100644
--- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
+++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
@@ -92,7 +92,8 @@ if (USE_WOUND_EVENT_SYNC) then {
 };
 // Handle the reopening of bandaged wounds
 if (_impact > 0 && {GVAR(enableAdvancedWounds)}) then {
-    [_target, _impact, _part, _mostEffectiveSpot, _mostEffectiveInjury, _bandage] call FUNC(handleBandageOpening);
+// TODO temp disabled until bandaged wounds are supported by event sync.
+//    [_target, _impact, _part, _mostEffectiveSpot, _mostEffectiveInjury, _bandage] call FUNC(handleBandageOpening);
 };
 
 // If all wounds have been bandaged, we will reset all damage to 0, so the unit is not showing any blood on the model anymore.

From 23f47f97ae2b818381e6d42b4d7b4536cfc00ac5 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Wed, 15 Apr 2015 18:32:47 -0500
Subject: [PATCH 020/257] Wirecutter - better sound effects, cleanup

---
 .../logistics_wirecutter/CfgEventHandlers.hpp |  1 -
 addons/logistics_wirecutter/CfgSounds.hpp     | 15 ++++--------
 addons/logistics_wirecutter/CfgWeapons.hpp    | 24 +++++++++----------
 addons/logistics_wirecutter/config.cpp        |  2 +-
 .../functions/fnc_cutDownFence.sqf            | 19 ++++++++++-----
 .../functions/fnc_getNearestFence.sqf         |  6 ++---
 .../functions/fnc_interactEH.sqf              |  2 +-
 .../functions/fnc_isFence.sqf                 | 13 +++++-----
 8 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/addons/logistics_wirecutter/CfgEventHandlers.hpp b/addons/logistics_wirecutter/CfgEventHandlers.hpp
index 79c3aaa959..3daad1425a 100644
--- a/addons/logistics_wirecutter/CfgEventHandlers.hpp
+++ b/addons/logistics_wirecutter/CfgEventHandlers.hpp
@@ -1,4 +1,3 @@
-
 class Extended_PreInit_EventHandlers {
     class ADDON {
         init = QUOTE(call COMPILE_FILE(XEH_preInit));
diff --git a/addons/logistics_wirecutter/CfgSounds.hpp b/addons/logistics_wirecutter/CfgSounds.hpp
index 9958190ec1..aa5f3464f6 100644
--- a/addons/logistics_wirecutter/CfgSounds.hpp
+++ b/addons/logistics_wirecutter/CfgSounds.hpp
@@ -1,12 +1,7 @@
 class CfgSounds {
-  class ACE_Wirecutter_sound {
-    name = "ACE_wirecutter_sound";
-    sound[] = {QUOTE(PATHTOF(sound\wire_cut.ogg)), "db-0", 1};
-    titles[] = {};
-  };
-  class ACE_Wirecutter_sound_long {
-    name = "ACE_wirecutter_sound_long";
-    sound[] = {QUOTE(PATHTOF(sound\wire_cut_long.ogg)), "db-0", 1};
-    titles[] = {};
-  };
+    class ACE_Wirecutter_sound {
+        name = "ACE_wirecutter_sound";
+        sound[] = {QUOTE(PATHTOF(sound\wirecut.ogg)), "db-0", 1};
+        titles[] = {};
+    };
 };
diff --git a/addons/logistics_wirecutter/CfgWeapons.hpp b/addons/logistics_wirecutter/CfgWeapons.hpp
index 76b1003f34..648bc3a3f8 100644
--- a/addons/logistics_wirecutter/CfgWeapons.hpp
+++ b/addons/logistics_wirecutter/CfgWeapons.hpp
@@ -1,16 +1,16 @@
 class CfgWeapons {
-  class InventoryItem_Base_F;
-  class ACE_ItemCore;
+    class InventoryItem_Base_F;
+    class ACE_ItemCore;
 
-  class ACE_wirecutter: ACE_ItemCore {
-    author = "$STR_ACE_Common_ACETeam";
-    displayName = "$STR_ACE_logistics_wirecutter_wirecutterName";
-    descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription";
-    model = "\A3\weapons_F\ammo\mag_univ.p3d";
-    picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa));
-    scope = 2;
-    class ItemInfo: InventoryItem_Base_F {
-      mass = 100;
+    class ACE_wirecutter: ACE_ItemCore {
+        author = "$STR_ACE_Common_ACETeam";
+        displayName = "$STR_ACE_logistics_wirecutter_wirecutterName";
+        descriptionShort = "$STR_ACE_logistics_wirecutter_wirecutterDescription";
+        model = "\A3\weapons_F\ammo\mag_univ.p3d";
+        picture = QUOTE(PATHTOF(ui\item_wirecutter_ca.paa));
+        scope = 2;
+        class ItemInfo: InventoryItem_Base_F {
+            mass = 100;
+        };
     };
-  };
 };
diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp
index 6e1db15061..8e14bde892 100644
--- a/addons/logistics_wirecutter/config.cpp
+++ b/addons/logistics_wirecutter/config.cpp
@@ -3,7 +3,7 @@
 class CfgPatches {
     class ADDON {
         units[] = {};
-        weapons[] = {};
+        weapons[] = {"ACE_wirecutter"};
         requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {"ace_interaction"};
         author[] = {"gpgpgpgp", "PabstMirror"};
diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
index ee4c512cd2..0186ea4b3a 100644
--- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
@@ -16,19 +16,26 @@
  */
 #include "script_component.hpp"
 
+#define SOUND_CLIP_TIME_SPACEING    1.5
 private ["_timeToCut"];
 
 PARAMS_2(_unit,_fenceObject);
 if (_unit != ACE_player) exitWith {};
 
-_timeToCut = if ([ACE_player] call EFUNC(common,isEngineer)) then {5} else {10};
+_timeToCut = if ([ACE_player] call EFUNC(common,isEngineer)) then {7.5} else {11};
 
 [ACE_player, "AinvPknlMstpSnonWnonDr_medic5", 0] call EFUNC(common,doAnimation);
 
-if (_timeToCut > 5) then {
-  playSound "ACE_wirecutter_sound_long";
-} else {
-  playSound "ACE_wirecutter_sound";
+_progressCheck = {
+    PARAMS_2(_args,_passedTime);
+    EXPLODE_2_PVT(_args,_fenceObject,_lastSoundEffectTime);
+    if (_passedTime > (_lastSoundEffectTime + SOUND_CLIP_TIME_SPACEING)) then {
+        // playSound "ACE_wirecutter_sound";
+        playSound3D [QUOTE(PATHTO_R(sound\wirecut.ogg)), objNull, false, (getPosASL ACE_player), 1, 1, 10];
+        _args set [1, _passedTime];
+    };
+
+    ((!isNull _fenceObject) && {(damage _fenceObject) < 1} && {("ACE_wirecutter" in (items ACE_player))})
 };
 
-[_timeToCut, [_fenceObject], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_logistics_wirecutter_CuttingFence"] call EFUNC(common,progressBar);
+[_timeToCut, [_fenceObject,0], {(_this select 0) call FUNC(cutDownFenceCallback)}, {(_this select 0) call FUNC(cutDownFenceAbort)}, localize "STR_ACE_logistics_wirecutter_CuttingFence", _progressCheck] call EFUNC(common,progressBar);
diff --git a/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf
index c9e59b41a0..15bfbdb8ef 100644
--- a/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_getNearestFence.sqf
@@ -20,9 +20,9 @@ PARAMS_1(_unit);
 
 _nearestFence = objNull;
 {
-  if ((isNull _nearestFence) && {[_x] call FUNC(isFence)}) then {
-    _nearestFence = _x;
-  };
+    if ((isNull _nearestFence) && {[_x] call FUNC(isFence)}) then {
+        _nearestFence = _x;
+    };
 } forEach nearestObjects [_unit, [], 15];
 
 _nearestFence
diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
index 6dace9c42d..ddd180047c 100644
--- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
@@ -35,7 +35,7 @@ if (!("ACE_wirecutter" in (items ace_player))) exitWith {};
     } else {
         // Prevent Rare Error when ending mission with interact key down:
         if (isNull ace_player) exitWith {};
-    
+
         //If player moved >5 meters from last pos, then rescan
         if (((getPosASL ace_player) distance _setPosition) > 5) then {
 
diff --git a/addons/logistics_wirecutter/functions/fnc_isFence.sqf b/addons/logistics_wirecutter/functions/fnc_isFence.sqf
index aee9a22ef9..1ab97a67af 100644
--- a/addons/logistics_wirecutter/functions/fnc_isFence.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_isFence.sqf
@@ -17,11 +17,9 @@
 #include "script_component.hpp"
 
 //find is case sensitive, so keep everything lowercase
-#define FENCE_A3_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f"]
-#define FENCE_A3_P3DS ["mil_wiredfence_f.p3d"]
+#define FENCE_TYPENAMES ["land_net_fence_4m_f", "land_net_fence_8m_f", "land_net_fenced_8m_f", "land_new_wiredfence_5m_f", "land_new_wiredfence_10m_dam_f", "land_new_wiredfence_10m_f", "land_pipe_fence_4m_f", "land_pipe_fence_4mnolc_f", "land_sportground_fence_f", "land_wired_fence_4m_f", "land_wired_fence_4md_f", "land_wired_fence_8m_f", "land_wired_fence_8md_f", "land_razorwire_f"]
 
-#define FENCE_AIA_TYPENAMES []
-#define FENCE_AIA_P3DS ["wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"]
+#define FENCE_P3DS ["mil_wiredfence_f.p3d","wall_indfnc_3.p3d", "wall_indfnc_9.p3d", "wall_indfnc_corner.p3d", "pletivo_wired.p3d", "wall_fen1_5.p3d"]
 
 private ["_typeOf", "_returnValue"];
 PARAMS_1(_object);
@@ -30,14 +28,15 @@ _typeOf = toLower (typeOf _object);
 _returnValue = false;
 
 if (_typeOf != "") then {
-    _returnValue = _typeOf in (FENCE_A3_TYPENAMES + FENCE_AIA_TYPENAMES);
+    //If the fence has configEntry we can check it directly
+    _returnValue = _typeOf in FENCE_TYPENAMES;
 } else {
     _typeOf = toLower (str _object);  //something like "123201: wall_indfnc_9.p3d"
     {
-        if ((_typeOf find _x) != -1) then {
+        if ((_typeOf find _x) != -1) exitWith {
             _returnValue = true;
         };
-    } forEach (FENCE_A3_P3DS + FENCE_AIA_P3DS);
+    } forEach FENCE_P3DS;
 };
 
 _returnValue

From 80516f4f6197c87e7fe9080cb1734b5d1461175a Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Wed, 15 Apr 2015 22:27:12 -0500
Subject: [PATCH 021/257] Increase Sound Volume

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

diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
index 0186ea4b3a..5153176de2 100644
--- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
@@ -31,7 +31,7 @@ _progressCheck = {
     EXPLODE_2_PVT(_args,_fenceObject,_lastSoundEffectTime);
     if (_passedTime > (_lastSoundEffectTime + SOUND_CLIP_TIME_SPACEING)) then {
         // playSound "ACE_wirecutter_sound";
-        playSound3D [QUOTE(PATHTO_R(sound\wirecut.ogg)), objNull, false, (getPosASL ACE_player), 1, 1, 10];
+        playSound3D [QUOTE(PATHTO_R(sound\wirecut.ogg)), objNull, false, (getPosASL ACE_player), 3, 1, 10];
         _args set [1, _passedTime];
     };
 

From 58dfc6aa97c80dae442483c477ae7c2816466287 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Wed, 15 Apr 2015 22:34:24 -0500
Subject: [PATCH 022/257] Add item to ace misc box

---
 addons/logistics_wirecutter/CfgVehicles.hpp | 8 ++++++++
 addons/logistics_wirecutter/config.cpp      | 1 +
 2 files changed, 9 insertions(+)
 create mode 100644 addons/logistics_wirecutter/CfgVehicles.hpp

diff --git a/addons/logistics_wirecutter/CfgVehicles.hpp b/addons/logistics_wirecutter/CfgVehicles.hpp
new file mode 100644
index 0000000000..a31d9c0d99
--- /dev/null
+++ b/addons/logistics_wirecutter/CfgVehicles.hpp
@@ -0,0 +1,8 @@
+class CfgVehicles {
+    class Box_NATO_Support_F;
+    class ACE_Box_Misc: Box_NATO_Support_F {
+        class TransportItems {
+            MACRO_ADDITEM(ACE_wirecutter,4);
+        };
+    };
+};
diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp
index 8e14bde892..89fbd1c10f 100644
--- a/addons/logistics_wirecutter/config.cpp
+++ b/addons/logistics_wirecutter/config.cpp
@@ -15,3 +15,4 @@ class CfgPatches {
 #include "CfgEventHandlers.hpp"
 #include "CfgSounds.hpp"
 #include "CfgWeapons.hpp"
+#include "CfgVehicles.hpp"

From a129f18a2ad51ffb73dc1be6012c66bc3d8e8c14 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:13:50 +0200
Subject: [PATCH 023/257] Update stringtable.xml

Italian
---
 addons/winddeflection/stringtable.xml | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml
index 897a3c556b..8e2e00d96e 100644
--- a/addons/winddeflection/stringtable.xml
+++ b/addons/winddeflection/stringtable.xml
@@ -11,6 +11,7 @@
                 <French>Vent</French>
                 <German>Windinformationen</German>
                 <Hungarian>Szélinformáció</Hungarian>
+                <Italian>Informazioni sul vento</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WIND_DIRECTION">
                 <English>Direction: %1</English>
@@ -21,6 +22,7 @@
                 <French>Direction %1</French>
                 <German>Windrichtung: %1</German>
                 <Hungarian>Irány: %1</Hungarian>
+                <Italian>Direzione: %1</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WIND_SPEED">
                 <English>Speed: %1 m/s</English>
@@ -31,6 +33,7 @@
                 <French>Vitesse %1 m/s</French>
                 <German>Geschwindigkeit: %1m/s</German>
                 <Hungarian>Sebesség: %1 m/s</Hungarian>
+                <Italian>Velocità: %1 m/s</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WEATHER_CATEGORY">
                 <English>Weather Information</English>
@@ -41,6 +44,7 @@
                 <French>Météo</French>
                 <German>Wetterinformationen</German>
                 <Hungarian>Időjárás-Információ</Hungarian>
+                <Italian>Meteo</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WEATHER_HUMIDITY">
                 <English>Humidity: %1%</English>
@@ -51,6 +55,7 @@
                 <French>Humidité: %1%</French>
                 <German>Luftfeuchtigkeit: %1</German>
                 <Hungarian>Páratartalom: %1%</Hungarian>
+                <Italian>Umidità: %1%</Italian>
             </Key>
         </Container>
     </Package>

From b3d4e2f48f0011d4371ff61607e4c90673c14632 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:14:18 +0200
Subject: [PATCH 024/257] Update stringtable.xml

IT
---
 addons/weather/stringtable.xml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml
index 46a0653269..0837919e34 100644
--- a/addons/weather/stringtable.xml
+++ b/addons/weather/stringtable.xml
@@ -7,6 +7,7 @@
             <Polish>Pokaż inf. o wietrze</Polish>
             <Russian>Показать информацию о погоде</Russian>
             <French>Afficher information du vent</French>
+            <Italian>Mostra informazioni sul vento</Italian>
         </Key>
     </Package>
 </Project>

From c1655aa9a9f79e8e0935b95abb765cf7ebd275df Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:16:17 +0200
Subject: [PATCH 025/257] Update stringtable.xml

IT
---
 addons/weaponselect/stringtable.xml | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml
index d534ecd29b..d7d2929a5f 100644
--- a/addons/weaponselect/stringtable.xml
+++ b/addons/weaponselect/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Wyświetl tekst przy rzucie granatem</Polish>
             <French>Afficher texte lors d'un lancé de grenade</French>
             <Hungarian>Szöveg mutatása gránát eldobásakor</Hungarian>
+            <Italian>Mostra indicazioni nel lancio granate</Italian>
         </Key>
         <Key ID="STR_ACE_Weaponselect_SettingDisplayTextDesc">
             <English>Display a hint or text on grenade throw.</English>
@@ -20,6 +21,7 @@
             <Polish>Wyświetla powiadomienie lub tekst przy rzucie granatem.</Polish>
             <French>Afficher texte/info au lancé de grenade</French>
             <Hungarian>Jelez egy súgót vagy szöveget a gránát eldobásakor.</Hungarian>
+            <Italian>Mostra un suggerimento quando si lanciano granate</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectPistol">
             <English>Select Pistol</English>
@@ -55,7 +57,7 @@
             <French>Sélectionner Lanceur</French>
             <Hungarian>Rakétavető Kiválasztása</Hungarian>
             <Portuguese>Selecionar Lançador</Portuguese>
-            <Italian>Seleziona il Lanciatore</Italian>
+            <Italian>Seleziona il Lanciamissili</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectRifleMuzzle">
             <English>Select Grenade Launcher</English>
@@ -162,6 +164,7 @@
             <Hungarian>Gránát: %1</Hungarian>
             <Russian>Граната %1</Russian>
             <French>Grenade %1</French>
+            <Italian>Granata %1</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_ReadyGrenade">
             <English>Ready Grenade</English>
@@ -172,6 +175,7 @@
             <Hungarian>Gránát előkészítése</Hungarian>
             <Russian>Подготовить гранату</Russian>
             <French>Grenade prête</French>
+            <Italian>Granata pronta</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectGrenadeFrag">
             <English>Select Frag Grenade</English>
@@ -194,7 +198,7 @@
             <Hungarian>Nem-robbanó Gránát Kiválasztása</Hungarian>
             <Czech>Zvolit Ne-Výbušný Granát</Czech>
             <Portuguese>Selecionar Granada</Portuguese>
-            <Italian>Seleziona Altre Granate</Italian>
+            <Italian>Seleziona granate non a frammentazione</Italian>
             <Russian>Выбрать гранату</Russian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_ThrowGrenade">
@@ -218,6 +222,7 @@
             <Czech>Žádné granáty</Czech>
             <Hungarian>Nincs több gránát</Hungarian>
             <Russian>Гранат не осталось</Russian>
+            <Italian>Granate esaurite</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_NoFragsLeft">
             <English>No frags left</English>
@@ -264,6 +269,7 @@
             <Polish>Wystrzel granat dymny</Polish>
             <Hungarian>Füstvető eltüzelése</Hungarian>
             <Russian>Запустить дымовую завесу</Russian>
+            <Italian>Lancia fumogeno</Italian>
         </Key>
     </Package>
 </Project>

From 5e7fb0fb6467012b9155948be7e9e8cf283526ab Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:18:49 +0200
Subject: [PATCH 026/257] Update stringtable.xml

IT
---
 addons/vehiclelock/stringtable.xml | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml
index a327352f9b..349cd46e98 100644
--- a/addons/vehiclelock/stringtable.xml
+++ b/addons/vehiclelock/stringtable.xml
@@ -10,6 +10,7 @@
             <Czech>Odemknout vozidlo</Czech>
             <Hungarian>Jármű nyitása</Hungarian>
             <Russian>Открыть машину</Russian>
+            <Italian>Apri il veicolo</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Action_Lock">
             <English>Lock Vehicle</English>
@@ -20,6 +21,7 @@
             <Czech>Zamknout vozidlo</Czech>
             <Hungarian>Jármű zárása</Hungarian>
             <Russian>Закрыть машину</Russian>
+            <Italian>Chiudi il veicolo</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Action_Lockpick">
             <English>Lockpick Vehicle</English>
@@ -30,6 +32,7 @@
             <Czech>Vypáčit vozidlo</Czech>
             <Hungarian>Jármű feltörése</Hungarian>
             <Russian>Взломать замок</Russian>
+            <Italian>Scassina veicolo</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Action_LockpickInUse">
             <English>Picking Lock....</English>
@@ -40,6 +43,7 @@
             <Czech>Páčim vozidlo...</Czech>
             <Hungarian>Zár feltörése...</Hungarian>
             <Russian>Взламываем замок...</Russian>
+            <Italian>Scassino il veicolo....</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Custom_Description">
             <English>A custom key that will open a specific vehicle.</English>
@@ -50,6 +54,7 @@
             <Czech>Vlastní klíč, který otevře konkrétní vozidlo.</Czech>
             <Hungarian>Egy egyedi kulcs, ami egy meghatározott járművet nyit ki.</Hungarian>
             <Russian>Ключ от конкретной машины.</Russian>
+            <Italian>Una chiave personalizzata che apre determinati veicoli.</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Master_Description">
             <English>A Master Key will open any lock, no matter what!</English>
@@ -60,6 +65,7 @@
             <Czech>Hlavní klíč otevře libovolný zámek, bez vyjímek!</Czech>
             <Hungarian>Egy főkulcs, ami minden zárat kinyit, helyzettől függetlenül!</Hungarian>
             <Russian>Универсальный ключ, открывающий любой замок.</Russian>
+            <Italian>Una chiave principale che apre qualsiasi serratura!</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Lockpick_Description">
             <English>A lockpick set that can pick the locks of most vehicles.</English>
@@ -70,6 +76,7 @@
             <Czech>Sada paklíčů, která dokáže odemknout zámky u většiny vozidel.</Czech>
             <Hungarian>Egy tolvajkulcs-készlet, mely a legtöbb jármű zárjait fel tudja törni.</Hungarian>
             <Russian>Набор отмычек, которым можно взломать почти любую машину.</Russian>
+            <Italian>Un grimardello per forzare la maggior parte dei veicoli</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_West_Description">
             <English>A key that should open most WEST vehicles.</English>
@@ -80,6 +87,7 @@
             <Czech>Klíč který by měl otevřít většinou Západních vozidel.</Czech>
             <Hungarian>Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni.</Hungarian>
             <Russian>Ключ для открытия большинства машин Запада.</Russian>
+            <Italian>Una chiave che apre la maggior parte dei veicoli WEST</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_East_Description">
             <English>A key that should open most EAST vehicle.</English>
@@ -90,6 +98,7 @@
             <Hungarian>Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni.</Hungarian>
             <Czech>Klíč který by měl otevřít vetšinu Východních vozidel.</Czech>
             <Russian>Ключ для открытия большинства машин Востока.</Russian>
+            <Italian>Una chaive che apr ela maggior parte dei veicoli EAST</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Indp_Description">
             <English>A key that should open most INDEP vehicle.</English>
@@ -100,6 +109,7 @@
             <Hungarian>Egy kulcs, ami a FÜGGETLEN egységek legtöbb járművét ki tudja nyitni.</Hungarian>
             <Czech>Klíč který by měl otevřít většinu Nezávislých vozidel.</Czech>
             <Russian>Ключ для открытия большинства машин Независимых.</Russian>
+            <Italian>Una chaive che apr ela maggior parte dei veicoli INDEP</Italian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Civ_Description">
             <English>A key that should open most CIV vehicle.</English>
@@ -110,6 +120,7 @@
             <Czech>Klíč který by měl otevřít většinu Civilních vozidel.</Czech>
             <Hungarian>Egy kulcs, ami a CIVIL járművek többségét ki tudja nyitni.</Hungarian>
             <Russian>Ключ для открытия большинства машин Гражданских.</Russian>
+            <Italian>Una chaive che apr ela maggior parte dei veicoli CIV</Italian>
         </Key>
     </Package>
 </Project>

From 59643152bd7bc5e23251db5ce1563270a6fe307b Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:19:43 +0200
Subject: [PATCH 027/257] Update stringtable.xml

IT
---
 addons/switchunits/stringtable.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml
index c95da37337..58b0b46d6d 100644
--- a/addons/switchunits/stringtable.xml
+++ b/addons/switchunits/stringtable.xml
@@ -10,6 +10,7 @@
             <Spanish>Cambiado de unidad</Spanish>
             <French>Unité changée</French>
             <Hungarian>Egység átváltva</Hungarian>
+            <Italian>Cambia unità</Italian>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_TooCloseToEnemy">
             <English>This unit is too close to the enemy.</English>
@@ -20,6 +21,7 @@
             <Spanish>Esta unidad está demasiado cerca del enemigo.</Spanish>
             <French>Cette unité est trop proche des ennemis</French>
             <Hungarian>Ez az egység túl közel van az ellenséghez.</Hungarian>
+            <Italian>Questa unità è troppo vicina al nemico.</Italian>
         </Key>
     </Package>
 </Project>

From fda1febc30f8e4c86bf2547e78f368fb5a4181eb Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:21:49 +0200
Subject: [PATCH 028/257] Update stringtable.xml

IT
---
 addons/scopes/stringtable.xml | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml
index 16d6b60c4c..396e32c6d6 100644
--- a/addons/scopes/stringtable.xml
+++ b/addons/scopes/stringtable.xml
@@ -5,46 +5,55 @@
             <English>Minor adjustment up</English>
             <Polish>Zerowanie powoli w górę</Polish>
             <Russian>Малая корректировка ВВЕРХ</Russian>
+            <Italian>Regola leggermente alzata in alto</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMinor">
             <English>Minor adjustment down</English>
             <Polish>Zerowanie powoli w dół</Polish>
             <Russian>Малая корректировка ВНИЗ</Russian>
+            <Italian>Regola leggermente alzata in basso</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMinor">
             <English>Minor adjustment right</English>
             <Polish>Zerowanie powoli w prawo</Polish>
             <Russian>Малая корректировка ВПРАВО</Russian>
+            <Italian>Regola leggermente il tiro a destra</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMinor">
             <English>Minor adjustment left</English>
             <Polish>Zerowanie powoli w lewo</Polish>
             <Russian>Малая корректировка ВЛЕВО</Russian>
+            <Italian>Regola leggermete il tiro a sinistra</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustUpMajor">
             <English>Major adjustment up</English>
             <Polish>Zerowanie w górę</Polish>
             <Russian>Большая корректировка ВВЕРХ</Russian>
+            <Italian>Regola l'alzata in alto</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMajor">
             <English>Major adjustment down</English>
             <Polish>Zerowanie w dół</Polish>
             <Russian>Большая корректировка ВНИЗ</Russian>
+            <Italian>Regola l'alzata in basso</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMajor">
             <English>Major adjustment right</English>
             <Polish>Zerowanie w prawo</Polish>
             <Russian>Большая корректировка ВПРАВО</Russian>
+            <Italian>Regola il tiro a destra</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMajor">
             <English>Major adjustment left</English>
             <Polish>Zerowanie w lewo</Polish>
             <Russian>Большая корректировка ВЛЕВО</Russian>
+            <Italian>Regola il tiro a sinistra</Italian>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustZero">
             <English>Set zero adjustment</English>
             <Polish>Zresetuj wyzerowanie</Polish>
             <Russian>Сбросить корректировку</Russian>
+            <Italian>Resetta i valori del tiro</Italian>
         </Key>
     </Package>
 </Project>

From 0655c3f3b69e1186b54e71c0d326cb68eb4dad52 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:22:32 +0200
Subject: [PATCH 029/257] Update stringtable.xml

IT
---
 addons/safemode/stringtable.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/safemode/stringtable.xml b/addons/safemode/stringtable.xml
index 40691bd7da..521651999a 100644
--- a/addons/safemode/stringtable.xml
+++ b/addons/safemode/stringtable.xml
@@ -10,6 +10,7 @@
             <Hungarian>Biztonságos mód</Hungarian>
             <Russian>Предохранитель</Russian>
             <French>Sécurité</French>
+            <Italian>Sicura inserita</Italian>
         </Key>
         <Key ID="STR_ACE_SafeMode_TakeOffSafety">
             <English>Take off Safety</English>
@@ -20,6 +21,7 @@
             <Hungarian>Biztonsági kapcsoló eltolása</Hungarian>
             <Russian>Снять с предохранителя</Russian>
             <French>Enlever sécurité</French>
+            <Italian>Togli la sicura</Italian>
         </Key>
         <Key ID="STR_ACE_SafeMode_PutOnSafety">
             <English>Put on Safety</English>
@@ -30,6 +32,7 @@
             <Hungarian>Biztonsági kapcsoló helyretolása</Hungarian>
             <Russian>Поставить на предохранитель</Russian>
             <French>Sécurité mise</French>
+            <Italian>Inserisci la sicura</Italian>
         </Key>
         <Key ID="STR_ACE_SafeMode_TookOffSafety">
             <English>Took off Safety</English>
@@ -40,6 +43,7 @@
             <Hungarian>Biztonságos mód megszüntetve</Hungarian>
             <Russian>Снят с предохранителя</Russian>
             <French>Sécurité enlevée</French>
+            <Italian>Togli la sicura</Italian>
         </Key>
     </Package>
 </Project>

From 13de953aaba349e36aaba4b4b03f8af56fbff74a Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:23:34 +0200
Subject: [PATCH 030/257] Update stringtable.xml

IT
---
 addons/respawn/stringtable.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index af003b4c28..7b3d997a1c 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Rozmieszczenie za 5 sekund ...</Polish>
             <Czech>Respawn za 5 sekund...</Czech>
             <Hungarian>Kihelyezés 5 másodperc múlva ...</Hungarian>
+            <Italian>Dispiegamento in 5 secondi ...</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_Deployed">
             <English>Rallypoint deployed</English>
@@ -20,6 +21,7 @@
             <Polish>Punkt zbiórki rozmieszczony</Polish>
             <Czech>Rallypoint umístěn</Czech>
             <Hungarian>Gyülekezőpont elhelyezve</Hungarian>
+            <Italian>Rallypoint dispiegato</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_TeleportedToBase">
             <English>Teleported to Base</English>
@@ -30,6 +32,7 @@
             <Polish>Przeteleportowano do bazy</Polish>
             <Czech>Odteleportován na základnu</Czech>
             <Hungarian>Bázisra teleportálva</Hungarian>
+            <Italian>Teleportato alla base</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_TeleportedToRallypoint">
             <English>Teleported to Rallypoint</English>
@@ -40,6 +43,7 @@
             <Polish>Przeteleportowano do punktu zbiórki</Polish>
             <Czech>Odteleportován na rallypoint</Czech>
             <Hungarian>Gyülekezőpontra teleportálva</Hungarian>
+            <Italian>Teleportato al rallypoint</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWestBase">
             <English>Rallypoint West (Base)</English>

From 66ba74e79d997b9b86e0fa0ac1d771b66e13d730 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:24:17 +0200
Subject: [PATCH 031/257] Update stringtable.xml

IT
---
 addons/reloadlaunchers/stringtable.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/reloadlaunchers/stringtable.xml b/addons/reloadlaunchers/stringtable.xml
index ff5637eaf6..7716050334 100644
--- a/addons/reloadlaunchers/stringtable.xml
+++ b/addons/reloadlaunchers/stringtable.xml
@@ -11,6 +11,7 @@
             <Polish>Załaduj wyrzutnię</Polish>
             <French>Charger lanceur</French>
             <Hungarian>Kilövö betöltése</Hungarian>
+            <Italian>Carica lanciamissili</Italian>
         </Key>
         <Key ID="STR_ACE_ReloadLaunchers_LoadingLauncher">
             <English>Loading launcher ...</English>
@@ -21,6 +22,7 @@
             <Czech>Nabíjím odpalovač  ...</Czech>
             <Polish>Ładowanie wyrzutni ...</Polish>
             <Hungarian>Kilövő betöltés alatt ...</Hungarian>
+            <Italian>Carico il lanciamissili ...</Italian>
         </Key>
         <Key ID="STR_ACE_ReloadLaunchers_LauncherLoaded">
             <English>Launcher loaded</English>
@@ -31,6 +33,7 @@
             <Czech>Odpalovač nabit</Czech>
             <Polish>Wyrzutnia załadowana</Polish>
             <Hungarian>Kilövő betöltve</Hungarian>
+            <Italian>Lanciamissili caricato</Italian>
         </Key>
         <Key ID="STR_ACE_ReloadLaunchers_LoadMagazine">
             <English>Load %1</English>
@@ -41,6 +44,7 @@
             <Czech>Nabít %1</Czech>
             <Polish>Załadowano %1</Polish>
             <Hungarian>%1 betöltése</Hungarian>
+            <Italian>Caricato %1</Italian>
         </Key>
     </Package>
 </Project>

From 500098d0610c07189276a69777f0e5f00e14a440 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:25:39 +0200
Subject: [PATCH 032/257] Update stringtable.xml

IT
---
 addons/reload/stringtable.xml | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml
index 7c401fec05..51956670b7 100644
--- a/addons/reload/stringtable.xml
+++ b/addons/reload/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Sprawdź stan amunicji przy przeładowaniu broni</Polish>
             <French>Vérification des munitions au rechargement</French>
             <Hungarian>Lőszer ellenőrzése a fegyver újratöltésekor</Hungarian>
+            <Italian>Controlla le munizioni ricaricando</Italian>
         </Key>
         <Key ID="STR_ACE_reload_SettingDisplayTextDesc">
             <English>Check the ammo in your new magazine on magazine reload.</English>
@@ -20,6 +21,7 @@
             <Polish>Pokaż stan amunicji w nowym magazynku przy przeładowaniu broni</Polish>
             <French>Vérification du nombre de munition au rechargement</French>
             <Hungarian>A lőszer ellenőrzése az új tárad behelyezésekor újratöltés közben.</Hungarian>
+            <Italian>Controlla le munizioni rimanenti nel caricatore in fase di cambio caricatore.</Italian>
         </Key>
         <Key ID="STR_ACE_Reload_checkAmmo">
             <English>Check Ammo</English>
@@ -54,6 +56,7 @@
             <Polish>Podłącz taśmę</Polish>
             <German>Gurt anhängen</German>
             <Hungarian>Töltényheveder összekötése</Hungarian>
+            <Italian>Attacca la tracolla</Italian>
         </Key>
         <Key ID="STR_ACE_Reload_LinkingBelt">
             <English>Linking belt...</English>
@@ -64,6 +67,7 @@
             <Polish>Podłączanie taśmy...</Polish>
             <German>Gurt anhängen ...</German>
             <Hungarian>Töltényheveder összekötése folyamatban...</Hungarian>
+            <Italian>Attacco la tracolla...</Italian>
         </Key>
     </Package>
 </Project>

From 23cb1058fc386ea282fcd832c37853d803948686 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:26:55 +0200
Subject: [PATCH 033/257] Update stringtable.xml

IT
---
 addons/parachute/stringtable.xml | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/addons/parachute/stringtable.xml b/addons/parachute/stringtable.xml
index 52ccaefe77..a1de714331 100644
--- a/addons/parachute/stringtable.xml
+++ b/addons/parachute/stringtable.xml
@@ -11,6 +11,7 @@
             <Spanish>Altímetro</Spanish>
             <Hungarian>Magasságmérő</Hungarian>
             <Russian>Высотомер</Russian>
+            <Italian>Altimetro</Italian>
         </Key>
         <Key ID="STR_ACE_Parachute_AltimeterDisplayName">
             <English>Altimeter Watch</English>
@@ -21,6 +22,7 @@
             <Spanish>Reloj altímetro</Spanish>
             <Hungarian>Magasságmérős karóra</Hungarian>
             <Russian>Часы с высотомером</Russian>
+            <Italian>Controlla l'altimetro</Italian>
         </Key>
         <Key ID="STR_ACE_Parachute_AltimeterDescription">
             <English>Used to show height, descent rate and the time.</English>
@@ -31,6 +33,7 @@
             <Spanish>Utilizado para mostrar altura, tasa de descenso y hora.</Spanish>
             <Hungarian>Mutatja a magasságot, a zuhanási sebességet, és az időt.</Hungarian>
             <Russian>Используется для определения высоты, скорости снижения и времени.</Russian>
+            <Italian>Usato per mostrare l'altitudine, la velocità di discesa e l'ora.</Italian>
         </Key>
         <Key ID="STR_ACE_Parachute_NonSteerableParachute">
             <English>Non-Steerable Parachute</English>
@@ -41,6 +44,7 @@
             <Czech>Neříditelný padák</Czech>
             <Hungarian>Irányíthatatlan ejtőernyő</Hungarian>
             <Russian>Неуправляемый парашют</Russian>
+            <Italian>Paracadute non manovrabile</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From ba510facbd550549e432b7ec5fb1e71b9e3deee9 Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:29:17 +0200
Subject: [PATCH 034/257] Update stringtable.xml

IT
---
 addons/optionsmenu/stringtable.xml | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index c4ac2b1593..f9bd537e3f 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -22,6 +22,7 @@
             <Polish>Napraw animację</Polish>
             <French>Corriger animation</French>
             <Hungarian>Animációk kijavítása</Hungarian>
+            <Italian>Fixa l'animazione</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_ResetAll">
             <English>Reset All</English>
@@ -32,6 +33,7 @@
             <Polish>Resetuj wszystko</Polish>
             <French>Défaut</French>
             <Hungarian>Minden visszaállítása</Hungarian>
+            <Italian>Resetta tutto</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_TabColors">
             <English>Colors</English>
@@ -42,6 +44,7 @@
             <Czech>Barvy</Czech>
             <Polish>Kolory</Polish>
             <Hungarian>Színek</Hungarian>
+            <Italian>Colori</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_TabOptions">
             <English>Options</English>
@@ -64,6 +67,7 @@
             <French>Valeurs</French>
             <German>Werte</German>
             <Hungarian>Értékek</Hungarian>
+            <Italian>Valori</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_Enabled">
             <English>Yes</English>
@@ -98,6 +102,7 @@
             <Polish>Ustawienie:</Polish>
             <French>Paramètres</French>
             <Hungarian>Opció:</Hungarian>
+            <Italian>Parametri:</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_Export">
             <English>Export</English>
@@ -108,6 +113,7 @@
             <Polish>Eksport</Polish>
             <French>Exporter</French>
             <Hungarian>Exportálás</Hungarian>
+            <Italian>Esporta</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_OpenExport">
             <English>Open Export Menu</English>
@@ -118,6 +124,7 @@
             <Polish>Otwórz menu eksportowania</Polish>
             <French>Ouvrir le menu d'exportation</French>
             <Hungarian>Exportálási menü megnyitása</Hungarian>
+            <Italian>Apri menù esportazione</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_stringType">
             <English>String input.</English>
@@ -127,6 +134,7 @@
             <Polish>Wpisywanie tekstu.</Polish>
             <French>Entrée</French>
             <Hungarian>String bevitel.</Hungarian>
+            <Italian>Stringa di unput.</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_arrayType">
             <English>Array. Seperate elements by using ,.</English>
@@ -137,6 +145,7 @@
             <French>Tableau. Séparation par ,.</French>
             <Czech>Tabulka. Odděl elementy použitím ,.</Czech>
             <Hungarian>Array. Válasszad el az elemeket vesszővel.</Hungarian>
+            <Italian>Array. Separa gli elementi usando ,.</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_scalarType">
             <English>Number</English>
@@ -147,6 +156,7 @@
             <Polish>Cyfra</Polish>
             <French>Nombre</French>
             <Hungarian>Szám</Hungarian>
+            <Italian>Numero</Italian>
         </Key>
         <Key ID="STR_ACE_optionsMenu_unknownType">
             <English>Uknown input type</English>
@@ -157,6 +167,7 @@
             <Polish>Nieznany rodzaj danych</Polish>
             <French>Type d'entrée inconnue</French>
             <Hungarian>Ismeretlen beviteli típus</Hungarian>
+            <Italian>Input inserito sconosciuto</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_SaveInput">
             <English>Save input</English>
@@ -167,6 +178,7 @@
             <Polish>Zapisz dane</Polish>
             <French>Sauvegarder</French>
             <Hungarian>Bevitel elmentése</Hungarian>
+            <Italian>Salva input</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_inClientSettings">
             <English>Include Client Settings</English>
@@ -177,6 +189,7 @@
             <Polish>Zawrzyj ustawienia klienta</Polish>
             <French>Inclure paramètres client</French>
             <Hungarian>Kliens-beállítások melléklése</Hungarian>
+            <Italian>Includi i parametri del client</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_exClientSettings">
             <English>Exclude Client Settings</English>
@@ -187,6 +200,7 @@
             <Polish>Wyklucz ustawienia klienta</Polish>
             <French>Exclure paramètres client</French>
             <Hungarian>Kliens-beállítások elhagyása</Hungarian>
+            <Italian>Escludi i parametri del client</Italian>
         </Key>
         <Key ID="STR_ACE_OptionsMenu_settingsExported">
             <English>Settings exported to clipboard</English>
@@ -197,6 +211,7 @@
             <Polish>Ustawienia wyeksportowano do schowka</Polish>
             <French>Paramètres exportés dans le presse papier</French>
             <Hungarian>Beállítások exportálva a vágólapba</Hungarian>
+            <Italian>Parametri esportati alla clipboard</Italian>
         </Key>
     </Package>
 </Project>

From 00c0839ce5e284c3224153cf7828f7214c5eee0a Mon Sep 17 00:00:00 2001
From: Marco <ramius86@users.noreply.github.com>
Date: Thu, 16 Apr 2015 10:33:15 +0200
Subject: [PATCH 035/257] Update stringtable.xml

IT
---
 addons/nametags/stringtable.xml | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 32eb35781b..4f6e2cfb93 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Pokaż imiona</Polish>
             <Hungarian>Nevek mutatása</Hungarian>
             <Russian>Показать имена</Russian>
+            <Italian>Mostra i nomi</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerNames">
             <English>Show player names</English>
@@ -30,7 +31,7 @@
             <German>Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen)</German>
             <French>Noms uniquement sous le curseur (si noms affichés)</French>
             <Czech>Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů)</Czech>
-            <Italian>Mostra i nomi solo se puntati (richiede i nomi dei giocatori abilitati)</Italian>
+            <Italian>Mostra i nomi solo se puntati (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar nome de jogador somente no cursor (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges)</Hungarian>
             <Russian>Показать имена игроков только под курсором (требует имен игроков)</Russian>
@@ -44,6 +45,7 @@
             <Polish>Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy)</Polish>
             <Hungarian>Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges)</Hungarian>
             <Russian>Показать имена игроков только по нажатию клавиши (требует имен игроков)</Russian>
+            <Italian>Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato)</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerRanks">
             <English>Show player ranks (requires player names)</English>
@@ -52,7 +54,7 @@
             <Spanish>Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores)</Spanish>
             <French>Grade des joueurs  (si noms affichés)</French>
             <Czech>Zobrazit hodnosti hráčů (vyžaduje jména hráčů)</Czech>
-            <Italian>Mostra i gradi (richiede i nomi dei giocatori abilitati)</Italian>
+            <Italian>Mostra i gradi (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar patente de jogadores (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok rendfokozatának mutatása (a nevek mutatása szükséges)</Hungarian>
             <Russian>Показать звания игроков (требует имен игроков)</Russian>
@@ -66,6 +68,7 @@
             <Czech>Zobrazit info o posádce vozidla</Czech>
             <Russian>Показать экипаж</Russian>
             <Hungarian>Jármű-legénység adatainak mutatása</Hungarian>
+            <Italian>Mostra le informazioni sull'equipaggio del veicolo</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowNamesForAI">
             <English>Show name tags for AI units</English>
@@ -76,6 +79,7 @@
             <Polish>Wyświetl imiona jednostek AI</Polish>
             <French>Afficher les noms des IA</French>
             <Hungarian>Névcímkék mutatása MI-egységeknél</Hungarian>
+            <Italian>Mostra le tag nomi per le unità AI</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowSoundWaves">
             <English>Show SoundWaves (requires player names)</English>
@@ -86,6 +90,7 @@
             <Polish>Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy)</Polish>
             <French>Afficher "qui parle" (si noms affichés)</French>
             <Hungarian>"Hanghullámok" mutatása (a nevek mutatása szükséges)</Hungarian>
+            <Italian>Mostra barra movimento audio (richiede mostra nomi abilitato)</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_DefaultNametagColor">
             <English>Default Nametag Color (Non Group Members)</English>
@@ -96,6 +101,7 @@
             <French>Couleur d'affichage par défaut (si dans aucun groupe)</French>
             <Czech>Standardní barva jmenovek (pro nečleny jednotky)</Czech>
             <Hungarian>Alap névcímke-szín (csoporton kívüli személyek)</Hungarian>
+            <Italian>Colore nametag di default (membri non del gruppo)</Italian>
         </Key>
     </Package>
 </Project>

From 58d7ff792b4a3295d531bc12304f32ad940975df Mon Sep 17 00:00:00 2001
From: Lex Rivera <me@lex.io>
Date: Thu, 16 Apr 2015 13:28:50 +0300
Subject: [PATCH 036/257] Add link to issue reporting format

---
 README.md | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index dd464966f2..f56811dbd8 100644
--- a/README.md
+++ b/README.md
@@ -37,10 +37,11 @@ The mod is **built modularly** — almost any PBO can be removed, thus a team ca
 #### Guides & How-Tos
 If you installed ACE3, but have trouble understanding how it all works, or where to start — see [Getting Started](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md).
 
+
 #### Contributing
 If you want to help put with the ongoing development, you can do so by looking for possible bugs or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. In the process, please add yourself to the author array of any .pbo you will be editing and the AUTHORS.txt file; including a valid email address.
 
-To report a bug, propose a feature, or suggest a change to the existing one — please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues).
+To report a bug, propose a feature, or suggest a change to the existing one — please, use our [Issue Tracker](https://github.com/acemod/ACE3/issues). See [this link](http://ace3mod.com/wiki/user/how-to-report-an-issue.html) for details.
 
 #### Testing & Building
 If you want to help us test the latest development changes, feel free to download our master branch, using either git — if familiar with the process — or directly, by following [this link](https://github.com/acemod/ACE3/archive/master.zip).

From aa5972a03a2cf124c6a706adf11a4d318c16725b Mon Sep 17 00:00:00 2001
From: Lex Rivera <me@lex.io>
Date: Thu, 16 Apr 2015 13:30:09 +0300
Subject: [PATCH 037/257] Damn you, web editor

---
 README.md | 1 -
 1 file changed, 1 deletion(-)

diff --git a/README.md b/README.md
index f56811dbd8..3ec6fe0683 100644
--- a/README.md
+++ b/README.md
@@ -37,7 +37,6 @@ The mod is **built modularly** — almost any PBO can be removed, thus a team ca
 #### Guides & How-Tos
 If you installed ACE3, but have trouble understanding how it all works, or where to start — see [Getting Started](https://github.com/acemod/ACE3/blob/master/documentation/user/getting-started.md).
 
-
 #### Contributing
 If you want to help put with the ongoing development, you can do so by looking for possible bugs or by contributing new features. To contribute something to ACE, simply fork this repository and submit your pull requests for review by other collaborators. In the process, please add yourself to the author array of any .pbo you will be editing and the AUTHORS.txt file; including a valid email address.
 

From 6d93fe45a68a0cb21aa5d760e05da34982755afd Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Thu, 16 Apr 2015 09:35:21 -0700
Subject: [PATCH 038/257] Guidance handoff to guiding unit/laser shooter. This
 needs LOBL vs. LOAL capability.

---
 addons/missileguidance/XEH_post_init.sqf      |  1 +
 addons/missileguidance/XEH_pre_init.sqf       |  3 ++
 .../functions/fnc_doHandoff.sqf               |  4 ++
 .../functions/fnc_handleHandoff.sqf           |  6 +++
 .../missileguidance/functions/fnc_onFired.sqf | 50 +++++++++++--------
 tools/github_privates_bot.py                  | 22 ++++++++
 6 files changed, 66 insertions(+), 20 deletions(-)
 create mode 100644 addons/missileguidance/functions/fnc_doHandoff.sqf
 create mode 100644 addons/missileguidance/functions/fnc_handleHandoff.sqf
 create mode 100644 tools/github_privates_bot.py

diff --git a/addons/missileguidance/XEH_post_init.sqf b/addons/missileguidance/XEH_post_init.sqf
index dc30361926..deaeef669d 100644
--- a/addons/missileguidance/XEH_post_init.sqf
+++ b/addons/missileguidance/XEH_post_init.sqf
@@ -1,2 +1,3 @@
 #include "script_component.hpp"
 
+[QGVAR(handoff), {_this call FUNC(handleHandoff)}] call EFUNC(common,addEventHandler);
diff --git a/addons/missileguidance/XEH_pre_init.sqf b/addons/missileguidance/XEH_pre_init.sqf
index d19b8475c9..08219e02f0 100644
--- a/addons/missileguidance/XEH_pre_init.sqf
+++ b/addons/missileguidance/XEH_pre_init.sqf
@@ -14,6 +14,9 @@ PREP(guidancePFH);
 PREP(doAttackProfile); 
 PREP(doSeekerSearch);
 
+PREP(doHandoff);
+PREP(handleHandoff);
+
 // Attack Profiles
 PREP(attackProfile_LIN);
 PREP(attackProfile_DIR);
diff --git a/addons/missileguidance/functions/fnc_doHandoff.sqf b/addons/missileguidance/functions/fnc_doHandoff.sqf
new file mode 100644
index 0000000000..d99998c8c4
--- /dev/null
+++ b/addons/missileguidance/functions/fnc_doHandoff.sqf
@@ -0,0 +1,4 @@
+#include "script_component.hpp"
+PARAMS_2(_target,_args);
+
+[QGVAR(handoff), [_target, _args]] call EFUNC(common,globalEvent);
\ No newline at end of file
diff --git a/addons/missileguidance/functions/fnc_handleHandoff.sqf b/addons/missileguidance/functions/fnc_handleHandoff.sqf
new file mode 100644
index 0000000000..2f1dfac8e7
--- /dev/null
+++ b/addons/missileguidance/functions/fnc_handleHandoff.sqf
@@ -0,0 +1,6 @@
+#include "script_component.hpp"
+PARAMS_2(_target,_args);
+
+if(!local _target) exitWith {};
+
+[FUNC(guidancePFH), 0, _args] call cba_fnc_addPerFrameHandler;
\ No newline at end of file
diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf
index dd96821692..e36742bce5 100644
--- a/addons/missileguidance/functions/fnc_onFired.sqf
+++ b/addons/missileguidance/functions/fnc_onFired.sqf
@@ -60,27 +60,37 @@ if(isNil "_target") then {
 };
 
 TRACE_4("Beginning ACE guidance system",_target,_ammo,_seekerType,_attackProfile);
-[FUNC(guidancePFH), 0, [_this, 
-                            [_shooter, 
-                                [_target, _targetPos, _launchPos], 
-                                _seekerType, 
-                                _attackProfile,
-                                _lockMode
-                            ], 
-                            [
-                                getNumber ( _config >> "minDeflection" ),
-                                getNumber ( _config >> "maxDeflection" ),
-                                getNumber ( _config >> "incDeflection" )
-                            ],
-                            [
-                                getNumber ( _config >> "seekerAngle" ),
-                                getNumber ( _config >> "seekerAccuracy" ),
-                                getNumber ( _config >> "seekerMaxRange" )
-                            ],
-                            [ diag_tickTime, [], [] ]
-                        ]
-] call cba_fnc_addPerFrameHandler;
+_args = [_this, 
+            [_shooter, 
+                [_target, _targetPos, _launchPos], 
+                _seekerType, 
+                _attackProfile,
+                _lockMode
+            ], 
+            [
+                getNumber ( _config >> "minDeflection" ),
+                getNumber ( _config >> "maxDeflection" ),
+                getNumber ( _config >> "incDeflection" )
+            ],
+            [
+                getNumber ( _config >> "seekerAngle" ),
+                getNumber ( _config >> "seekerAccuracy" ),
+                getNumber ( _config >> "seekerMaxRange" )
+            ],
+            [ diag_tickTime, [], [] ]
+        ];
+  
+// Hand off to the guiding unit. We just use local player so local PFH fires for now
+// Laser code needs to give us a shooter for LOBL, or the seeker unit needs to be able to shift locality
+// Based on its homing laser
+// Lasers need to be handled in a special LOAL/LOBL case
+_guidingUnit = ACE_player;
 
+if(local _guidingUnit) then {
+    [FUNC(guidancePFH), 0, _args ] call cba_fnc_addPerFrameHandler;
+} else {
+    [QGVAR(handoff), [_guidingUnit, _args] ] call FUNC(doHandoff);
+};
 /* Clears locking settings
 (vehicle _shooter) setVariable [QGVAR(target), nil];
 (vehicle _shooter) setVariable [QGVAR(seekerType), nil];
diff --git a/tools/github_privates_bot.py b/tools/github_privates_bot.py
new file mode 100644
index 0000000000..4ef04eb33c
--- /dev/null
+++ b/tools/github_privates_bot.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python3
+
+import os
+import argparse
+
+from pygithub3 import Github
+
+def main():
+    gh = Github(user='acemod', repo='ACE3')
+    
+    pull_requests = gh.pull_requests.list().all()
+    
+    for request in pull_requests:
+        files = gh.pull_requests.list_files(request.number).all()
+        
+        for file in files:
+            # print file.filename
+            if '.sqf' in file.filename:
+                print file
+        
+if __name__ == "__main__":
+    main()
\ No newline at end of file

From aeffc5585911139cfa4aec51445ecc0a012ec7e5 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Thu, 16 Apr 2015 18:52:48 +0200
Subject: [PATCH 039/257] Added missing privates

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

diff --git a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
index 42bac3eac8..f5f1d3861e 100644
--- a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
+++ b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
@@ -16,7 +16,7 @@
 #include "script_component.hpp"
 
 [{
-    private ["_bullet", "_airFriction", "_args", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueVelocity", "_dragRef", "_drag", "_accelRef", "_accel"];
+    private ["_args", "_bullet", "_airFriction", "_time", "_deltaT", "_bulletVelocity", "_bulletSpeed", "_trueVelocity", "_trueSpeed", "_dragRef", "_drag", "_accelRef", "_accel"];
 
     _args = _this select 0;
     _bullet = _args select 0;

From 9db256ad8d80a43374056490b2eabbd9b7258d89 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Thu, 16 Apr 2015 09:54:52 -0700
Subject: [PATCH 040/257] ignore preceeding numbers

---
 tools/search_privates.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/search_privates.py b/tools/search_privates.py
index 55a6dfc791..9cc55fbdcc 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -53,7 +53,7 @@ def check_privates(filepath):
         
         
         # Regex search privates
-        srch = re.compile('(?<![_a-zA-Z])(_[a-zA-Z]*?)[ ,\}\]\)";]')
+        srch = re.compile('(?<![_a-zA-Z0-9])(_[a-zA-Z]*?)[ ,\}\]\)";]')
         priv_use = srch.findall(content)
         priv_use = sorted(set(priv_use))
         

From 668888de818f4416a2e968d508c049f8a369680f Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Thu, 16 Apr 2015 19:00:37 +0200
Subject: [PATCH 041/257] Fixed constant name not following the
 coding-guideline

---
 addons/atragmx/functions/fnc_create_dialog.sqf       |  2 +-
 addons/atragmx/functions/fnc_show_gun_list.sqf       |  2 +-
 .../atragmx/functions/fnc_show_range_card_setup.sqf  |  2 +-
 .../functions/fnc_show_target_range_assist.sqf       |  2 +-
 .../functions/fnc_show_target_speed_assist.sqf       |  2 +-
 .../functions/fnc_target_speed_assist_timer.sqf      |  2 +-
 addons/atragmx/functions/fnc_toggle_range_card.sqf   |  2 +-
 .../functions/fnc_update_target_selection.sqf        | 12 ++++++------
 .../atragmx/functions/fnc_update_unit_selection.sqf  |  8 ++++----
 addons/atragmx/script_component.hpp                  |  2 +-
 10 files changed, 18 insertions(+), 18 deletions(-)

diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 8dc0f3e34f..73945a4030 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -29,7 +29,7 @@ GVAR(showAddNewGun) call FUNC(show_add_new_gun);
 GVAR(showGunList) call FUNC(show_gun_list);
 GVAR(showRangeCard) call FUNC(show_range_card);
 if (GVAR(showRangeCard)) then {
-    ctrlSetFocus (_dsp displayCtrl 5001);
+    ctrlSetFocus (__DSP displayCtrl 5001);
     [] call FUNC(update_range_card);
 };
 GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
diff --git a/addons/atragmx/functions/fnc_show_gun_list.sqf b/addons/atragmx/functions/fnc_show_gun_list.sqf
index e51aaba13b..565da71ce6 100644
--- a/addons/atragmx/functions/fnc_show_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_show_gun_list.sqf
@@ -20,7 +20,7 @@ GVAR(showGunList) = _this;
 {ctrlShow [_x, _this]} forEach [6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007];
 
 if (_this) then {
-    ctrlSetFocus (_dsp displayCtrl 6002);
+    ctrlSetFocus (__DSP displayCtrl 6002);
     
     lbSetCurSel [6000, GVAR(currentGun)];
 };
diff --git a/addons/atragmx/functions/fnc_show_range_card_setup.sqf b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
index e9afe41cc5..98e5f57998 100644
--- a/addons/atragmx/functions/fnc_show_range_card_setup.sqf
+++ b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
@@ -20,7 +20,7 @@ GVAR(showRangeCardSetup) = _this;
 {ctrlShow [_x, _this]} forEach [10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009];
 
 if (_this) then {
-    ctrlSetFocus (_dsp displayCtrl 10006);
+    ctrlSetFocus (__DSP displayCtrl 10006);
     
     ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))];
     ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))];
diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
index e3ca0a2626..f7b973876f 100644
--- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
@@ -20,7 +20,7 @@ GVAR(showTargetRangeAssist) = _this;
 {ctrlShow [_x, _this]} forEach [7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020];
 
 if (_this) then {
-    ctrlSetFocus (_dsp displayCtrl 7018);
+    ctrlSetFocus (__DSP displayCtrl 7018);
     
     ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
     ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
index 90425e26db..43b9afe470 100644
--- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
@@ -20,7 +20,7 @@ GVAR(showTargetSpeedAssist) = _this;
 {ctrlShow [_x, _this]} forEach [8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015];
 
 if (_this) then {
-    ctrlSetFocus (_dsp displayCtrl 8012);
+    ctrlSetFocus (__DSP displayCtrl 8012);
     
     ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
 
diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
index d8414ba692..da4b68a7c7 100644
--- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
+++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
@@ -20,7 +20,7 @@ if !(ctrlVisible 9000) then {
     false call FUNC(show_target_speed_assist);
     true call FUNC(show_target_speed_assist_timer);
 
-    ctrlSetFocus (_dsp displayCtrl 9002);
+    ctrlSetFocus (__DSP displayCtrl 9002);
     
     [{
         private ["_args", "_startTime"];
diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf
index 6a75ea5445..e5d5cb0269 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf
@@ -24,7 +24,7 @@ if (ctrlVisible 5006) then
     false call FUNC(show_main_page);
     true call FUNC(show_range_card);
     
-    ctrlSetFocus (_dsp displayCtrl 5001);
+    ctrlSetFocus (__DSP displayCtrl 5001);
     
     [] call FUNC(calculate_range_card);
     [] call FUNC(update_range_card);
diff --git a/addons/atragmx/functions/fnc_update_target_selection.sqf b/addons/atragmx/functions/fnc_update_target_selection.sqf
index 476c22d658..2a29d05fb1 100644
--- a/addons/atragmx/functions/fnc_update_target_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_target_selection.sqf
@@ -15,13 +15,13 @@
  */
 #include "script_component.hpp"
 
-(_dsp displayCtrl 500) ctrlEnable true;
-(_dsp displayCtrl 501) ctrlEnable true;
-(_dsp displayCtrl 502) ctrlEnable true;
-(_dsp displayCtrl 503) ctrlEnable true;
+(__DSP displayCtrl 500) ctrlEnable true;
+(__DSP displayCtrl 501) ctrlEnable true;
+(__DSP displayCtrl 502) ctrlEnable true;
+(__DSP displayCtrl 503) ctrlEnable true;
 
-(_dsp displayCtrl 500 + GVAR(currentTarget)) ctrlEnable false;
+(__DSP displayCtrl 500 + GVAR(currentTarget)) ctrlEnable false;
 
-ctrlSetFocus (_dsp displayCtrl 3000);
+ctrlSetFocus (__DSP displayCtrl 3000);
 
 [] call FUNC(update_unit_selection);
diff --git a/addons/atragmx/functions/fnc_update_unit_selection.sqf b/addons/atragmx/functions/fnc_update_unit_selection.sqf
index f6a51c5cfc..5468d2d0fc 100644
--- a/addons/atragmx/functions/fnc_update_unit_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_unit_selection.sqf
@@ -15,11 +15,11 @@
  */
 #include "script_component.hpp"
 
-(_dsp displayCtrl 600) ctrlEnable true;
-(_dsp displayCtrl 601) ctrlEnable true;
-(_dsp displayCtrl 602) ctrlEnable true;
+(__DSP displayCtrl 600) ctrlEnable true;
+(__DSP displayCtrl 601) ctrlEnable true;
+(__DSP displayCtrl 602) ctrlEnable true;
 
-(_dsp displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
+(__DSP displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
 
 [] call FUNC(update_gun);
 [] call FUNC(update_atmosphere);
diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp
index 014524c6dd..60b3083a96 100644
--- a/addons/atragmx/script_component.hpp
+++ b/addons/atragmx/script_component.hpp
@@ -11,4 +11,4 @@
 
 #include "\z\ace\addons\main\script_macros.hpp"
 
-#define _dsp (uiNamespace getVariable "ATragMX_Display")
+#define __DSP (uiNamespace getVariable "ATragMX_Display")

From 6a942ac8209cce075fcb7284e6c8eb8e5d5c8b47 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Thu, 16 Apr 2015 10:10:24 -0700
Subject: [PATCH 042/257] Fixed: ACE_Fake**** Was showing in arsenal. Fixes
 #670

---
 addons/common/CfgMagazines.hpp | 1 +
 addons/common/CfgWeapons.hpp   | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/addons/common/CfgMagazines.hpp b/addons/common/CfgMagazines.hpp
index 815ab6db9f..465ea57f78 100644
--- a/addons/common/CfgMagazines.hpp
+++ b/addons/common/CfgMagazines.hpp
@@ -2,6 +2,7 @@
 class CfgMagazines {
     class CA_Magazine;
     class ACE_FakeMagazine: CA_Magazine {
+        scopeCurator = 1;
         descriptionShort = "";
         displayName = "";
         displayNameShort = "";
diff --git a/addons/common/CfgWeapons.hpp b/addons/common/CfgWeapons.hpp
index c2d1532f40..cf8c06798e 100644
--- a/addons/common/CfgWeapons.hpp
+++ b/addons/common/CfgWeapons.hpp
@@ -14,6 +14,8 @@ class CfgWeapons {
 
     class ACE_FakePrimaryWeapon: Rifle_Base_F {
         scope = 2;
+        scopeCurator = 1;
+        
         displayName = "";
         model = "\A3\Weapons_f\empty";
         picture = "";

From e06fd7350e7980da734f3452ab4603be74750d97 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 12:10:40 -0500
Subject: [PATCH 043/257] DEFAULT_PARAM KEY_PARAM private check

---
 tools/search_privates.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/search_privates.py b/tools/search_privates.py
index 9cc55fbdcc..404c56f4db 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -21,7 +21,7 @@ def get_private_declare(content):
     priv_split = sorted(set(priv_split))
     priv_declared += priv_split;
     
-    srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*')
+    srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*')
     priv_srch_declared = srch.findall(content)
     priv_srch_declared = sorted(set(priv_srch_declared))
     

From 638433614c8778ec7b9b80b269ec6829376fa130 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 12:36:12 -0500
Subject: [PATCH 044/257] Some missing private defines.

---
 addons/attach/functions/fnc_attach.sqf                   | 1 +
 addons/attach/functions/fnc_canAttach.sqf                | 2 +-
 addons/attach/functions/fnc_detach.sqf                   | 2 +-
 addons/attach/functions/fnc_getChildrenAttachActions.sqf | 1 +
 addons/backpacks/functions/fnc_backpackOpened.sqf        | 6 +-----
 addons/captives/XEH_postInit.sqf                         | 1 +
 addons/captives/functions/fnc_doLoadCaptive.sqf          | 1 +
 addons/captives/functions/fnc_moduleSurrender.sqf        | 1 +
 addons/captives/functions/fnc_setHandcuffed.sqf          | 2 ++
 addons/captives/functions/fnc_setSurrendered.sqf         | 2 ++
 addons/disarming/functions/fnc_canBeDisarmed.sqf         | 2 ++
 addons/disarming/functions/fnc_disarmDropItems.sqf       | 5 +++++
 addons/disarming/functions/fnc_eventTargetStart.sqf      | 2 ++
 addons/disarming/functions/fnc_getAllGearUnit.sqf        | 2 ++
 addons/disarming/functions/fnc_openDisarmDialog.sqf      | 3 +++
 addons/disarming/functions/fnc_showItemsInListbox.sqf    | 2 +-
 addons/disarming/functions/fnc_verifyMagazinesMoved.sqf  | 2 +-
 addons/disposable/XEH_postInitClient.sqf                 | 5 ++---
 18 files changed, 30 insertions(+), 12 deletions(-)

diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf
index 3bb54eee16..45b1c0a336 100644
--- a/addons/attach/functions/fnc_attach.sqf
+++ b/addons/attach/functions/fnc_attach.sqf
@@ -62,6 +62,7 @@ if (_unit == _attachToVehicle) then {  //Self Attachment
     _actionID = _unit addAction [format ["<t color='#FF0000'>%1</t>", localize "STR_ACE_Attach_CancelAction"], {GVAR(placeAction) = 0}];
 
     [{
+        private "_startingPosition";
         PARAMS_2(_args,_pfID);
         EXPLODE_7_PVT(_args,_unit,_attachToVehicle,_itemClassname,_itemVehClass,_tempObject,_onAtachText,_actionID);
 
diff --git a/addons/attach/functions/fnc_canAttach.sqf b/addons/attach/functions/fnc_canAttach.sqf
index d0930dc069..18071092d5 100644
--- a/addons/attach/functions/fnc_canAttach.sqf
+++ b/addons/attach/functions/fnc_canAttach.sqf
@@ -19,7 +19,7 @@
 
 PARAMS_3(_attachToVehicle,_player,_args);
 
-private ["_itemName", "_attachLimit", "_attachedObjects"];
+private ["_itemName", "_attachLimit", "_attachedObjects","_playerPos"];
 
 _itemName = [_args, 0, ""] call CBA_fnc_defaultParam;
 _attachLimit = [6, 1] select (_player == _attachToVehicle);
diff --git a/addons/attach/functions/fnc_detach.sqf b/addons/attach/functions/fnc_detach.sqf
index 99ac646013..a56936301d 100644
--- a/addons/attach/functions/fnc_detach.sqf
+++ b/addons/attach/functions/fnc_detach.sqf
@@ -18,7 +18,7 @@
 
 PARAMS_2(_attachToVehicle,_unit);
 
-private ["_attachedObjects", "_attachedItems"];
+private ["_attachedObjects", "_attachedItems", "_itemDisplayName"];
 
 _attachedObjects = _attachToVehicle getVariable [QGVAR(Objects), []];
 _attachedItems = _attachToVehicle getVariable [QGVAR(ItemNames), []];
diff --git a/addons/attach/functions/fnc_getChildrenAttachActions.sqf b/addons/attach/functions/fnc_getChildrenAttachActions.sqf
index 3594e10bd6..fb432146be 100644
--- a/addons/attach/functions/fnc_getChildrenAttachActions.sqf
+++ b/addons/attach/functions/fnc_getChildrenAttachActions.sqf
@@ -17,6 +17,7 @@
  */
 #include "script_component.hpp"
 
+private ["_listed", "_actions", "_item", "_displayName", "_picture", "_action"];
 PARAMS_2(_target,_player);
 
 _listed = [];
diff --git a/addons/backpacks/functions/fnc_backpackOpened.sqf b/addons/backpacks/functions/fnc_backpackOpened.sqf
index 1894d68f23..3f5cf53994 100644
--- a/addons/backpacks/functions/fnc_backpackOpened.sqf
+++ b/addons/backpacks/functions/fnc_backpackOpened.sqf
@@ -13,11 +13,7 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_target"];
-
-_unit = _this select 0;
-_target = _this select 1;
-_backpack = _this select 2;
+PARAMS_3(_unit,_target,_backpack);
 
 // do cam shake if the target is the player
 if ([_target] call EFUNC(common,isPlayer)) then {
diff --git a/addons/captives/XEH_postInit.sqf b/addons/captives/XEH_postInit.sqf
index 651edbcf86..f91f24025e 100644
--- a/addons/captives/XEH_postInit.sqf
+++ b/addons/captives/XEH_postInit.sqf
@@ -7,6 +7,7 @@
 if (isServer) then {
     addMissionEventHandler ["HandleDisconnect", {
         PARAMS_1(_disconnectedPlayer);
+        private "_escortedUnit";
         _escortedUnit = _disconnectedPlayer getVariable [QGVAR(escortedUnit), objNull];
         if ((!isNull _escortedUnit) && {(attachedTo _escortedUnit) == _disconnectedPlayer}) then {
             detach _escortedUnit;
diff --git a/addons/captives/functions/fnc_doLoadCaptive.sqf b/addons/captives/functions/fnc_doLoadCaptive.sqf
index 9fd65a130d..97ecd98a0a 100644
--- a/addons/captives/functions/fnc_doLoadCaptive.sqf
+++ b/addons/captives/functions/fnc_doLoadCaptive.sqf
@@ -18,6 +18,7 @@
 #include "script_component.hpp"
 
 PARAMS_3(_unit,_target,_vehicle);
+private "_objects";
 
 if (isNull _target) then {
     _objects = attachedObjects _unit;
diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf
index 0506b0cc17..bf0e04cd6a 100644
--- a/addons/captives/functions/fnc_moduleSurrender.sqf
+++ b/addons/captives/functions/fnc_moduleSurrender.sqf
@@ -18,6 +18,7 @@
 #include "script_component.hpp"
 
 PARAMS_3(_logic,_units,_activated);
+private ["_bisMouseOver", "_mouseOverObject"];
 
 if (!_activated) exitWith {};
 
diff --git a/addons/captives/functions/fnc_setHandcuffed.sqf b/addons/captives/functions/fnc_setHandcuffed.sqf
index 5f134ab03b..bd141988bb 100644
--- a/addons/captives/functions/fnc_setHandcuffed.sqf
+++ b/addons/captives/functions/fnc_setHandcuffed.sqf
@@ -50,6 +50,7 @@ if (_state) then {
 
             //Adds an animation changed eh
             //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
+            private "_animChangedEHID";
             _animChangedEHID = _unit addEventHandler ["AnimChanged", {
                 PARAMS_2(_unit,_newAnimation);
                 if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
@@ -66,6 +67,7 @@ if (_state) then {
     [_unit, QGVAR(Handcuffed), false] call EFUNC(common,setCaptivityStatus);
 
     //remove AnimChanged EH
+    private "_animChangedEHID";
     _animChangedEHID = _unit getVariable [QGVAR(handcuffAnimEHID), -1];
     _unit removeEventHandler ["AnimChanged", _animChangedEHID];
     _unit setVariable [QGVAR(handcuffAnimEHID), -1];
diff --git a/addons/captives/functions/fnc_setSurrendered.sqf b/addons/captives/functions/fnc_setSurrendered.sqf
index d774e7f6e0..22de70921d 100644
--- a/addons/captives/functions/fnc_setSurrendered.sqf
+++ b/addons/captives/functions/fnc_setSurrendered.sqf
@@ -48,6 +48,7 @@ if (_state) then {
         if (_unit getVariable [QGVAR(isSurrendering), false] && {(vehicle _unit) == _unit}) then {
             //Adds an animation changed eh
             //If we get a change in animation then redo the animation (handles people vaulting to break the animation chain)
+            private "_animChangedEHID";
             _animChangedEHID = _unit addEventHandler ["AnimChanged", {
                 PARAMS_2(_unit,_newAnimation);
                 if ((_newAnimation != "ACE_AmovPercMstpSsurWnonDnon") && {!(_unit getVariable ["ACE_isUnconscious", false])}) then {
@@ -63,6 +64,7 @@ if (_state) then {
     [_unit, QGVAR(Surrendered), false] call EFUNC(common,setCaptivityStatus);
 
     //remove AnimChanged EH
+    private "_animChangedEHID";
     _animChangedEHID = _unit getVariable [QGVAR(surrenderAnimEHID), -1];
     _unit removeEventHandler ["AnimChanged", _animChangedEHID];
     _unit setVariable [QGVAR(surrenderAnimEHID), -1];
diff --git a/addons/disarming/functions/fnc_canBeDisarmed.sqf b/addons/disarming/functions/fnc_canBeDisarmed.sqf
index 04171a900d..25ec884919 100644
--- a/addons/disarming/functions/fnc_canBeDisarmed.sqf
+++ b/addons/disarming/functions/fnc_canBeDisarmed.sqf
@@ -17,6 +17,8 @@
 
 PARAMS_1(_target);
 
+private ["_animationStateCfgMoves", "_putDownAnim"];
+
 //Check animationState for putDown anim
 //This ensures the unit doesn't have to actualy do any animation to drop something
 //This should always be true for the 3 possible status effects that allow disarming
diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf
index 24ab96a2cf..2cb3e89b5d 100644
--- a/addons/disarming/functions/fnc_disarmDropItems.sqf
+++ b/addons/disarming/functions/fnc_disarmDropItems.sqf
@@ -20,6 +20,9 @@
 
 #define TIME_MAX_WAIT 5
 
+private ["_fncSumArray", "_return", "_holder", "_dropPos", "_targetMagazinesStart", "_holderMagazinesStart", "_xClassname", "_xAmmo", "_targetMagazinesEnd", "_holderMagazinesEnd", "_holderItemsStart", "_targetItemsStart", "_addToCrateClassnames", "_addToCrateCount", "_index", "_holderItemsEnd", "_targetItemsEnd", "_holderIsEmpty"];
+
+
 PARAMS_3(_caller,_target,_listOfItemsToRemove);
 DEFAULT_PARAM(3,_doNotDropAmmo,false); //By default units drop all weapon mags when dropping a weapon
 
@@ -154,6 +157,8 @@ if (_holderIsEmpty) then {
 
 //Start the PFEH to do the actions (which could take >1 frame)
 [{
+    private ["_needToRemoveWeapon", "_needToRemoveMagazines", "_needToRemoveBackpack", "_needToRemoveVest", "_needToRemoveUniform", "_error", "_magsToPickup", "_index", "_magazinesInHolder"];
+
     PARAMS_2(_args,_pfID);
     EXPLODE_8_PVT(_args,_caller,_target,_listOfItemsToRemove,_holder,_holderIsEmpty,_maxWaitTime,_doNotDropAmmo,_startingMagazines);
 
diff --git a/addons/disarming/functions/fnc_eventTargetStart.sqf b/addons/disarming/functions/fnc_eventTargetStart.sqf
index c91f717e2a..316ec2b656 100644
--- a/addons/disarming/functions/fnc_eventTargetStart.sqf
+++ b/addons/disarming/functions/fnc_eventTargetStart.sqf
@@ -20,6 +20,8 @@
 
 PARAMS_3(_caller,_target,_listOfObjectsToRemove);
 
+private "_itemsToAdd";
+
 _itemsToAdd = [];
 {
     if (_x == (uniform _target)) then {
diff --git a/addons/disarming/functions/fnc_getAllGearUnit.sqf b/addons/disarming/functions/fnc_getAllGearUnit.sqf
index d07f40c972..a319c006ee 100644
--- a/addons/disarming/functions/fnc_getAllGearUnit.sqf
+++ b/addons/disarming/functions/fnc_getAllGearUnit.sqf
@@ -17,6 +17,8 @@
 
 PARAMS_1(_target);
 
+private ["_allItems", "_classnamesCount", "_index", "_uniqueClassnames"];
+
 _allItems = ((weapons _target) + (magazines _target) + (items _target) + (assignedItems _target));
 
 if ((backpack _target) != "") then {
diff --git a/addons/disarming/functions/fnc_openDisarmDialog.sqf b/addons/disarming/functions/fnc_openDisarmDialog.sqf
index 6da123b831..832f32ced5 100644
--- a/addons/disarming/functions/fnc_openDisarmDialog.sqf
+++ b/addons/disarming/functions/fnc_openDisarmDialog.sqf
@@ -28,6 +28,7 @@
     ]
 
 PARAMS_2(_caller,_target);
+private "_display";
 
 //Sanity Checks
 if (_caller != ACE_player) exitwith {ERROR("Player isn't caller?");};
@@ -59,6 +60,7 @@ GVAR(disarmTarget) = _target;
 
 //Setup PFEH
 [{
+    private ["_groundContainer", "_targetContainer", "_playerName", "_rankPicture", "_rankIndex", "_targetUniqueItems", "_holderUniqueItems"];
     disableSerialization;
     EXPLODE_2_PVT(_this,_args,_pfID);
     EXPLODE_3_PVT(_args,_player,_target,_display);
@@ -71,6 +73,7 @@ GVAR(disarmTarget) = _target;
         GVAR(disarmTarget) = objNull;
         if (!isNull _display) then {closeDialog 0;}; //close dialog if still open
     } else {
+
         _groundContainer = _display displayCtrl 632;
         _targetContainer = _display displayCtrl 633;
         _playerName = _display displayCtrl 111;
diff --git a/addons/disarming/functions/fnc_showItemsInListbox.sqf b/addons/disarming/functions/fnc_showItemsInListbox.sqf
index e040233b82..5c809de4a2 100644
--- a/addons/disarming/functions/fnc_showItemsInListbox.sqf
+++ b/addons/disarming/functions/fnc_showItemsInListbox.sqf
@@ -19,7 +19,7 @@
 disableSerialization;
 PARAMS_2(_listBoxCtrl,_itemsCountArray);
 
-private "_classname";
+private ["_classname", "_count", "_displayName", "_picture"];
 
 {
     _displayName = "";
diff --git a/addons/disarming/functions/fnc_verifyMagazinesMoved.sqf b/addons/disarming/functions/fnc_verifyMagazinesMoved.sqf
index 779a5e39ba..e1753f390a 100644
--- a/addons/disarming/functions/fnc_verifyMagazinesMoved.sqf
+++ b/addons/disarming/functions/fnc_verifyMagazinesMoved.sqf
@@ -20,7 +20,7 @@
  */
 #include "script_component.hpp"
 
-private ["_problem", "_beginingArray"];
+private ["_problem", "_beginingArray", "_index"];
 
 PARAMS_4(_startA,_endA,_startB,_endB);
 
diff --git a/addons/disposable/XEH_postInitClient.sqf b/addons/disposable/XEH_postInitClient.sqf
index 1fe598137f..c20dfa886b 100644
--- a/addons/disposable/XEH_postInitClient.sqf
+++ b/addons/disposable/XEH_postInitClient.sqf
@@ -5,7 +5,6 @@
 #include "script_component.hpp"
 
 ["inventoryDisplayLoaded",{
-    _player = ACE_player;
-    [_player] call FUNC(takeLoadedATWeapon);
-    [_player, (_this select 0)] call FUNC(updateInventoryDisplay);
+    [ACE_player] call FUNC(takeLoadedATWeapon);
+    [ACE_player, (_this select 0)] call FUNC(updateInventoryDisplay);
 }] call EFUNC(common,addEventHandler);
\ No newline at end of file

From 3d14b171a6a671af160f3cf0d296c3db72546840 Mon Sep 17 00:00:00 2001
From: KoffeinFlummi <koffeinflummi@gmail.com>
Date: Thu, 16 Apr 2015 19:38:07 +0200
Subject: [PATCH 045/257] Make make.py itself support 32-&64-bit systems ...

... because having two different files is dumb.
---
 tools/make.py   |  15 +-
 tools/make64.py | 837 ------------------------------------------------
 2 files changed, 12 insertions(+), 840 deletions(-)
 delete mode 100644 tools/make64.py

diff --git a/tools/make.py b/tools/make.py
index bd27f893f5..29cf3f1956 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -200,7 +200,10 @@ def find_depbo_tools(regKey):
 		reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
 
 	try:
-		k = winreg.OpenKey(reg, r"Software\Mikero\pboProject")
+		try:
+			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\pboProject")
+		except FileNotFoundError:
+			k = winreg.OpenKey(reg, r"Software\Mikero\pboProject")
 		try:
 			pboproject_path = winreg.QueryValueEx(k, "exe")[0]
 			winreg.CloseKey(k)
@@ -208,7 +211,10 @@ def find_depbo_tools(regKey):
 		except:
 			print_error("ERROR: Could not find pboProject.")
 
-		k = winreg.OpenKey(reg, r"Software\Mikero\rapify")
+		try:
+			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\rapify")
+		except FileNotFoundError:
+			k = winreg.OpenKey(reg, r"Software\Mikero\rapify")
 		try:
 			rapify_path = winreg.QueryValueEx(k, "exe")[0]
 			winreg.CloseKey(k)
@@ -216,7 +222,10 @@ def find_depbo_tools(regKey):
 		except:
 			print_error("Could not find rapify.")
 
-		k = winreg.OpenKey(reg, r"Software\Mikero\MakePbo")
+		try:
+			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\MakePbo")
+		except FileNotFoundError:
+			k = winreg.OpenKey(reg, r"Software\Mikero\MakePbo")
 		try:
 			makepbo_path = winreg.QueryValueEx(k, "exe")[0]
 			winreg.CloseKey(k)
diff --git a/tools/make64.py b/tools/make64.py
deleted file mode 100644
index b6635f884e..0000000000
--- a/tools/make64.py
+++ /dev/null
@@ -1,837 +0,0 @@
-#!/usr/bin/env python
-# vim: set fileencoding=utf-8 :
-
-# make.py
-# An Arma 3 addon build system
-
-###############################################################################
-
-# The MIT License (MIT)
-
-# Copyright (c) 2013-2014 Ryan Schultz
-
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-# THE SOFTWARE.
-
-###############################################################################
-
-__version__ = "0.3dev"
-
-import sys
-
-if sys.version_info[0] == 2:
-	print("Python 3 is required.")
-	sys.exit(1)
-
-import os
-import os.path
-import shutil
-import platform
-import glob
-import subprocess
-import hashlib
-import configparser
-import json
-import traceback
-import time
-import re
-
-if sys.platform == "win32":
-	import winreg
-
-###############################################################################
-# http://akiscode.com/articles/sha-1directoryhash.shtml
-# Copyright (c) 2009 Stephen Akiki
-# MIT License (Means you can do whatever you want with this)
-#  See http://www.opensource.org/licenses/mit-license.php
-# Error Codes:
-#   -1 -> Directory does not exist
-#   -2 -> General error (see stack traceback)
-def  get_directory_hash(directory):
-	directory_hash = hashlib.sha1()
-	if not os.path.exists (directory):
-		return -1
-
-	try:
-		for root, dirs, files in os.walk(directory):
-			for names in files:
-				path = os.path.join(root, names)
-				try:
-					f = open(path, 'rb')
-				except:
-					# You can't open the file for some reason
-					f.close()
-					continue
-
-				while 1:
-					# Read file in as little chunks
-					buf = f.read(4096)
-					if not buf: break
-					new = hashlib.sha1(buf)
-					directory_hash.update(new.digest())
-				f.close()
-
-	except:
-		# Print the stack traceback
-		traceback.print_exc()
-		return -2
-
-	return directory_hash.hexdigest()
-
-# Copyright (c) André Burgaud
-# http://www.burgaud.com/bring-colors-to-the-windows-console-with-python/
-if sys.platform == "win32":
-	from ctypes import windll, Structure, c_short, c_ushort, byref
-
-	SHORT = c_short
-	WORD = c_ushort
-
-	class COORD(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("X", SHORT),
-		("Y", SHORT)]
-
-	class SMALL_RECT(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("Left", SHORT),
-		("Top", SHORT),
-		("Right", SHORT),
-		("Bottom", SHORT)]
-
-	class CONSOLE_SCREEN_BUFFER_INFO(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("dwSize", COORD),
-		("dwCursorPosition", COORD),
-		("wAttributes", WORD),
-		("srWindow", SMALL_RECT),
-		("dwMaximumWindowSize", COORD)]
-
-	# winbase.h
-	STD_INPUT_HANDLE = -10
-	STD_OUTPUT_HANDLE = -11
-	STD_ERROR_HANDLE = -12
-
-	# wincon.h
-	FOREGROUND_BLACK     = 0x0000
-	FOREGROUND_BLUE      = 0x0001
-	FOREGROUND_GREEN     = 0x0002
-	FOREGROUND_CYAN      = 0x0003
-	FOREGROUND_RED       = 0x0004
-	FOREGROUND_MAGENTA   = 0x0005
-	FOREGROUND_YELLOW    = 0x0006
-	FOREGROUND_GREY      = 0x0007
-	FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified.
-
-	BACKGROUND_BLACK     = 0x0000
-	BACKGROUND_BLUE      = 0x0010
-	BACKGROUND_GREEN     = 0x0020
-	BACKGROUND_CYAN      = 0x0030
-	BACKGROUND_RED       = 0x0040
-	BACKGROUND_MAGENTA   = 0x0050
-	BACKGROUND_YELLOW    = 0x0060
-	BACKGROUND_GREY      = 0x0070
-	BACKGROUND_INTENSITY = 0x0080 # background color is intensified.
-
-	stdout_handle = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
-	SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
-	GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo
-
-	def get_text_attr():
-	  """Returns the character attributes (colors) of the console screen
-	  buffer."""
-	  csbi = CONSOLE_SCREEN_BUFFER_INFO()
-	  GetConsoleScreenBufferInfo(stdout_handle, byref(csbi))
-	  return csbi.wAttributes
-
-	def set_text_attr(color):
-	  """Sets the character attributes (colors) of the console screen
-	  buffer. Color is a combination of foreground and background color,
-	  foreground and background intensity."""
-	  SetConsoleTextAttribute(stdout_handle, color)
-###############################################################################
-
-def find_bi_tools(work_drive):
-	"""Find BI tools."""
-
-	reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-	try:
-		k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
-		arma3tools_path = winreg.QueryValueEx(k, "path")[0]
-		winreg.CloseKey(k)
-	except:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
-
-	addonbuilder_path = os.path.join(arma3tools_path, "AddonBuilder", "AddonBuilder.exe")
-	dssignfile_path = os.path.join(arma3tools_path, "DSSignFile", "DSSignFile.exe")
-	dscreatekey_path = os.path.join(arma3tools_path, "DSSignFile", "DSCreateKey.exe")
-	cfgconvert_path = os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe")
-
-	if os.path.isfile(addonbuilder_path) and os.path.isfile(dssignfile_path) and os.path.isfile(dscreatekey_path) and os.path.isfile(cfgconvert_path):
-		return [addonbuilder_path, dssignfile_path, dscreatekey_path, cfgconvert_path]
-	else:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
-
-def find_depbo_tools(regKey):
-	"""Use registry entries to find DePBO-based tools."""
-	stop = False
-
-	if regKey == "HKCU":
-		reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-		stop = True
-	else:
-		reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
-
-	try:
-		k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\pboProject")
-		try:
-			pboproject_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found pboproject.")
-		except:
-			print_error("ERROR: Could not find pboProject.")
-
-		k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\rapify")
-		try:
-			rapify_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found rapify.")
-		except:
-			print_error("Could not find rapify.")
-
-		k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\MakePbo")
-		try:
-			makepbo_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found makepbo.")
-		except:
-			print_error("Could not find makepbo.")
-	except:
-		if stop == True:
-			raise Exception("BadDePBO", "DePBO tools not installed correctly")
-		return -1
-
-
-	#Strip any quotations from the path due to a MikeRo tool bug which leaves a trailing space in some of its registry paths.
-	return [pboproject_path.strip('"'),rapify_path.strip('"'),makepbo_path.strip('"')]
-
-def color(color):
-	"""Set the color. Works on Win32 and normal terminals."""
-	if sys.platform == "win32":
-		if color == "green":
-			set_text_attr(FOREGROUND_GREEN | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "red":
-			set_text_attr(FOREGROUND_RED | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "blue":
-			set_text_attr(FOREGROUND_BLUE | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "reset":
-			set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
-		elif color == "grey":
-			set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
-	else :
-		if color == "green":
-			sys.stdout.write('\033[92m')
-		elif color == "red":
-			sys.stdout.write('\033[91m')
-		elif color == "blue":
-			sys.stdout.write('\033[94m')
-		elif color == "reset":
-			sys.stdout.write('\033[0m')
-
-def print_error(msg):
-	color("red")
-	print ("ERROR: " + msg)
-	color("reset")
-
-def print_green(msg):
-	color("green")
-	print(msg)
-	color("reset")
-
-def print_blue(msg):
-	color("blue")
-	print(msg)
-	color("reset")
-
-def print_yellow(msg):
-	color("yellow")
-	print(msg)
-	color("reset")
-
-###############################################################################
-
-def main(argv):
-	"""Build an Arma addon suite in a directory from rules in a make.cfg file."""
-	print_blue(("\nmake.py for Arma, v" + __version__))
-
-	if sys.platform != "win32":
-		print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.")
-		sys.exit(1)
-
-	reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-	try:
-		k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
-		arma3tools_path = winreg.QueryValueEx(k, "path")[0]
-		winreg.CloseKey(k)
-	except:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
-
-	# Default behaviors
-	test = False # Copy to Arma 3 directory?
-	arg_modules = False # Only build modules on command line?
-	make_release = False # Make zip file from the release?
-	release_version = 0 # Version of release
-	use_pboproject = True # Default to pboProject build tool
-	make_target = "DEFAULT" # Which section in make.cfg to use for the build
-	new_key = False # Make a new key and use it to sign?
-	quiet = False # Suppress output from build tool?
-
-	# Parse arguments
-	if "help" in argv or "-h" in argv or "--help" in argv:
-		print ("""
-make.py [help] [test] [force] [key <name>] [target <name>] [release <version>]
-        [module name] [module name] [...]
-
-test -- Copy result to Arma 3.
-release <version> -- Make archive with <version>.
-force -- Ignore cache and build all.
-target <name> -- Use rules in make.cfg under heading [<name>] rather than
-   default [Make]
-key <name> -- Use key in working directory with <name> to sign. If it does not
-   exist, create key.
-quiet -- Suppress command line output from build tool.
-
-If module names are specified, only those modules will be built.
-
-Examples:
-   make.py force test
-      Build all modules (ignoring cache) and copy the mod folder to the Arma 3
-      directory.
-   make.py mymodule_gun
-      Only build the module named 'mymodule_gun'.
-   make.py force key MyNewKey release 1.0
-      Build all modules (ignoring cache), sign them with NewKey, and pack them
-      into a zip file for release with version 1.0.
-
-
-If a file called $NOBIN$ is found in the module directory, that module will not be binarized.
-
-See the make.cfg file for additional build options.
-""")
-		sys.exit(0)
-
-	if "force" in argv:
-		argv.remove("force")
-		force_build = True
-	else:
-		force_build = False
-
-	if "test" in argv:
-		test = True
-		argv.remove("test")
-
-	if "release" in argv:
-		make_release = True
-		release_version = argv[argv.index("release") + 1]
-		argv.remove(release_version)
-		argv.remove("release")
-
-	if "target" in argv:
-		make_target = argv[argv.index("target") + 1]
-		argv.remove("target")
-		argv.remove(make_target)
-		force_build = True
-
-	if "key" in argv:
-		new_key = True
-		key_name = argv[argv.index("key") + 1]
-		argv.remove("key")
-		argv.remove(key_name)
-
-	if "quiet" in argv:
-		quiet = True
-		argv.remove("quiet")
-
-	# Get the directory the make script is in.
-	make_root = os.path.dirname(os.path.realpath(__file__))
-	make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
-	os.chdir(make_root)
-
-	# Get latest commit ID
-	try:
-		gitpath = os.path.join(os.path.dirname(make_root), ".git")
-		assert os.path.exists(gitpath)
-
-		commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"])
-		commit_id = str(commit_id, "utf-8")[:8]
-	except:
-		print_error("FAILED TO DETERMINE COMMIT ID.")
-		commit_id = "NOGIT"
-
-	cfg = configparser.ConfigParser();
-	try:
-		cfg.read(os.path.join(make_root, "make.cfg"))
-
-		# Project name (with @ symbol)
-		project = cfg.get(make_target, "project", fallback="@"+os.path.basename(os.getcwd()))
-
-		# Private key path
-		key = cfg.get(make_target, "key", fallback=None)
-
-		# Project prefix (folder path)
-		prefix = cfg.get(make_target, "prefix", fallback="")
-
-		# Should we autodetect modules on a complete build?
-		module_autodetect = cfg.getboolean(make_target, "module_autodetect", fallback=True)
-
-		# Manual list of modules to build for a complete build
-		modules = cfg.get(make_target, "modules", fallback=None)
-		# Parse it out
-		if modules:
-			modules = [x.strip() for x in modules.split(',')]
-		else:
-			modules = []
-
-		# List of directories to ignore when detecting
-		ignore = [x.strip() for x in cfg.get(make_target, "ignore",  fallback="release").split(',')]
-
-		# BI Tools work drive on Windows
-		work_drive = cfg.get(make_target, "work_drive",  fallback="P:\\")
-
-		# Which build tool should we use?
-		build_tool = cfg.get(make_target, "build_tool", fallback="addonbuilder").lower()
-
-		# Release/build directory, relative to script dir
-		release_dir = cfg.get(make_target, "release_dir", fallback="release")
-
-		# Project PBO file prefix (files are renamed to prefix_name.pbo)
-		pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None)
-
-		# Project module Root
-		module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
-		module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
-		print_green ("module_root: " + module_root)
-		if (os.path.isdir(module_root)):
-			os.chdir(module_root)
-		else:
-			print_error ("Directory " + module_root + " does not exist.")
-			sys.exit()
-
-	except:
-		raise
-		print_error("Could not parse make.cfg.")
-		sys.exit(1)
-
-
-
-	# See if we have been given specific modules to build from command line.
-	if len(argv) > 1 and not make_release:
-		arg_modules = True
-		modules = argv[1:]
-
-	# Find the tools we need.
-	try:
-		tools = find_bi_tools(work_drive)
-		addonbuilder = tools[0]
-		dssignfile = tools[1]
-		dscreatekey = tools[2]
-		cfgconvert = tools[3]
-
-	except:
-		print_error("Arma 3 Tools are not installed correctly or the P: drive has not been created.")
-		sys.exit(1)
-
-	if build_tool == "pboproject":
-		try:
-			depbo_tools = find_depbo_tools("HKLM")
-			if depbo_tools == -1:
-				depbo_tools = find_depbo_tools("HKCU")
-			pboproject = depbo_tools[0]
-			rapifyTool = depbo_tools[1]
-			makepboTool = depbo_tools[2]
-		except:
-			raise
-			print_error("Could not find dePBO tools. Download the needed tools from: https://dev.withsix.com/projects/mikero-pbodll/files")
-			sys.exit(1)
-
-	# Try to open and deserialize build cache file.
-	try:
-		cache = {}
-		with open(os.path.join(make_root, "make.cache"), 'r') as f:
-			cache_raw = f.read()
-
-		cache = json.loads(cache_raw)
-
-	except:
-		print ("No cache found.")
-		cache = {}
-
-	# Get list of subdirs in make root.
-	dirs = next(os.walk(module_root))[1]
-
-	# Autodetect what directories to build.
-	if module_autodetect and not arg_modules:
-		modules = []
-		for path in dirs:
-			# Any dir that has a config.cpp in its root is an addon to build.
-			config_path = os.path.join(path, 'config.cpp')
-			if os.path.isfile(config_path) and not path in ignore:
-				modules.append(path)
-
-	# Make the key specified from command line if necessary.
-	if new_key:
-		if not os.path.isfile(os.path.join(module_root, key_name + ".biprivatekey")):
-			print_green("\nRequested key does not exist.")
-			ret = subprocess.call([dscreatekey, key_name]) # Created in make_root
-			if ret == 0:
-				print_blue("Created: " + os.path.join(module_root, key_name + ".biprivatekey"))
-			else:
-				print_error("Failed to create key!")
-
-			try:
-				print_blue("Copying public key to release directory.")
-
-				try:
-					os.makedirs(os.path.join(module_root, release_dir, "Keys"))
-				except:
-					pass
-
-				shutil.copyfile(os.path.join(module_root, key_name + ".bikey"), os.path.join(module_root, release_dir, "Keys", key_name + ".bikey"))
-
-			except:
-				raise
-				print_error("Could not copy key to release directory.")
-
-		else:
-			print_green("\nNOTE: Using key " + os.path.join(module_root, key_name + ".biprivatekey"))
-
-		key = os.path.join(module_root, key_name + ".biprivatekey")
-
-
-	# For each module, prep files and then build.
-	for module in modules:
-		print_green("\nMaking " + module + "-"*max(1, (60-len(module))))
-
-		# Cache check
-		if module in cache:
-			old_sha = cache[module]
-		else:
-			old_sha = ""
-
-		#We always build ACE_common so we can properly show the correct version stamp in the RPT file.
-		if module == "common":
-			old_sha = ""
-
-		# Hash the module
-		new_sha = get_directory_hash(os.path.join(module_root, module))
-
-		# Check if it needs rebuilt
-		# print ("Hash:", new_sha)
-		if old_sha == new_sha:
-			if not force_build:
-				print("Module has not changed.")
-				# Skip everything else
-				continue
-
-		# Only do this if the project isn't stored directly on the work drive.
-		# Split the path at the drive name and see if they are on the same drive (usually P:)
-		if os.path.splitdrive(module_root)[0] != os.path.splitdrive(work_drive)[0]:
-			try:
-				# Remove old work drive version (ignore errors)
-				shutil.rmtree(os.path.join(work_drive, prefix, module), True)
-
-				# Copy module to the work drive
-				shutil.copytree(module, os.path.join(work_drive, prefix, module))
-
-			except:
-				raise
-				print_error("ERROR: Could not copy module to work drive. Does the module exist?")
-				input("Press Enter to continue...")
-				print("Resuming build...")
-				continue
-		#else:
-			#print("WARNING: Module is stored on work drive (" + work_drive + ").")
-
-		try:
-			# Remove the old pbo, key, and log
-			old = os.path.join(module_root, release_dir, project, "Addons", module) + "*"
-			files = glob.glob(old)
-			for f in files:
-				os.remove(f)
-
-			if pbo_name_prefix:
-				old = os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module) + "*"
-				files = glob.glob(old)
-				for f in files:
-					os.remove(f)
-		except:
-			raise
-			print_error("ERROR: Could not copy module to work drive. Does the module exist?")
-			input("Press Enter to continue...")
-			print("Resuming build...")
-			continue
-
-		# Build the module into a pbo
-		print_blue("Building: " + os.path.join(work_drive, prefix, module))
-		print_blue("Destination: " + os.path.join(module_root, release_dir, project, "Addons"))
-
-		# Make destination folder (if needed)
-		try:
-			os.makedirs(os.path.join(module_root, release_dir, project, "Addons"))
-		except:
-			pass
-
-		# Run build tool
-		build_successful = False
-		if build_tool == "pboproject":
-			try:
-				#PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up:
-				shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup"))
-
-				os.chdir("P:\\")
-
-				cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")]
-				ret = subprocess.call(cmd)
-				if ret != 0:
-					print_error("CfgConvert -bin return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
-					os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-					shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-
-				cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")]
-				ret = subprocess.call(cmd)
-				if ret != 0:
-					print_error("CfgConvert -txt return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
-					os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-					shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-					
-
-				# Include build number
-				try:
-					configpath = os.path.join(work_drive, prefix, module, "config.cpp")
-					f = open(configpath, "r")
-					configtext = f.read()
-					f.close()
-
-					if configtext:
-						patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1)
-						patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext)
-						configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL)
-						f = open(configpath, "w")
-						f.write(configtext)
-						f.close()
-					else:
-						os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-						os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))	
-				except:
-					raise
-					print_error("Failed to include build number")
-					continue
-
-				if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
-					print_green("$NOBIN$ Found. Proceeding with non-binarizing!")
-					cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
-
-				else:
-					cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
-
-				color("grey")
-				if quiet:
-					devnull = open(os.devnull, 'w')
-					ret = subprocess.call(cmd, stdout=devnull)
-					devnull.close()
-				else:
-					ret = subprocess.call(cmd)
-				color("reset")
-
-				if ret == 0:
-					print_green("pboProject return code == " + str(ret))
-					# Prettyprefix rename the PBO if requested.
-					if pbo_name_prefix:
-						try:
-							os.rename(os.path.join(module_root, release_dir, project, "Addons", module+".pbo"), os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
-						except:
-							raise
-							print_error("Could not rename built PBO with prefix.")
-					# Sign result
-					if key:
-						print("Signing with " + key + ".")
-						if pbo_name_prefix:
-							ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
-						else:
-							ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", module + ".pbo")])
-
-						if ret == 0:
-							build_successful = True
-					else:
-						build_successful = True
-
-				if not build_successful:
-					print_error("pboProject return code == " + str(ret))
-					print_error("Module not successfully built/signed.")
-					print ("Resuming build...")
-					continue
-
-				#PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp
-				#print_green("\Pabst (restoring): " + os.path.join(work_drive, prefix, module, "config.cpp"))
-				os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-				os.remove(os.path.join(work_drive, prefix, module, "config.bin"))
-				os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-
-				# Back to the root
-				os.chdir(module_root)
-
-			except:
-				raise
-				print_error("Could not run Addon Builder.")
-				input("Press Enter to continue...")
-				print ("Resuming build...")
-				continue
-
-		elif build_tool== "addonbuilder":
-			# Detect $NOBIN$ and do not binarize if found.
-			if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
-				do_binarize = False
-				print("$NOBIN$ file found in module, packing only.")
-			else:
-				do_binarize = True
-			try:
-				# Call AddonBuilder
-				os.chdir("P:\\")
-
-				cmd = [addonbuilder, os.path.join(work_drive, prefix, module), os.path.join(make_root, release_dir, project, "Addons"), "-clear", "-project="+work_drive]
-				if not do_binarize:
-					cmd.append("-packonly")
-
-				if quiet:
-					previousDirectory = os.getcwd()
-					os.chdir(arma3tools_path)
-					devnull = open(os.devnull, 'w')
-					ret = subprocess.call(cmd, stdout=devnull)
-					devnull.close()
-					os.chdir(previousDirectory)
-				else:
-					previousDirectory = os.getcwd()
-					os.chdir(arma3tools_path)
-					print_error("Current directory - " + os.getcwd())
-					ret = subprocess.call(cmd)
-					os.chdir(previousDirectory)
-					print_error("Current directory - " + os.getcwd())
-				color("reset")
-				print_green("completed")
-				# Prettyprefix rename the PBO if requested.
-				if pbo_name_prefix:
-					try:
-						os.rename(os.path.join(make_root, release_dir, project, "Addons", module+".pbo"), os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
-					except:
-						raise
-						print_error("Could not rename built PBO with prefix.")
-
-				if ret == 0:
-					# Sign result
-					if key:
-						print("Signing with " + key + ".")
-						if pbo_name_prefix:
-							ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
-						else:
-							ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", module + ".pbo")])
-
-						if ret == 0:
-							build_successful = True
-					else:
-						build_successful = True
-
-				if not build_successful:
-					print_error("Module not successfully built.")
-
-				# Back to the root
-				os.chdir(make_root)
-
-			except:
-				raise
-				print_error("Could not run Addon Builder.")
-				input("Press Enter to continue...")
-				print ("Resuming build...")
-				continue
-
-		else:
-			print_error("Unknown build_tool " + build_tool + "!")
-
-		# Update the hash for a successfully built module
-		if build_successful:
-			cache[module] = new_sha
-
-	# Done building all modules!
-
-	# Write out the cache state
-	cache_out = json.dumps(cache)
-	with open(os.path.join(make_root, "make.cache"), 'w') as f:
-		f.write(cache_out)
-
-	# Delete the pboproject temp files if building a release.
-	if make_release and build_tool == "pboproject":
-		try:
-			shutil.rmtree(os.path.join(module_root, release_dir, project, "temp"), True)
-		except:
-			print_error("ERROR: Could not delete pboProject temp files.")
-
-	print_green("\nDone.")
-
-	# Make release
-	if make_release:
-		print_blue("\nMaking release: " + project + "-" + release_version + ".zip")
-
-		try:
-			# Delete all log files
-			for root, dirs, files in os.walk(os.path.join(module_root, release_dir, project, "Addons")):
-				for currentFile in files:
-					if currentFile.lower().endswith("log"):
-						os.remove(os.path.join(root, currentFile))
-
-			# Create a zip with the contents of release/ in it
-			shutil.make_archive(project + "-" + release_version, "zip", os.path.join(module_root, release_dir))
-		except:
-			raise
-			print_error("Could not make release.")
-
-	# Copy to Arma 3 folder for testing
-	if test:
-		print_blue("\nCopying to Arma 3.")
-
-		if sys.platform == "win32":
-			reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
-			try:
-				k = winreg.OpenKey(reg, r"SOFTWARE\Wow6432Node\Bohemia Interactive\Arma 3")
-				a3_path = winreg.EnumValue(k, 1)[1]
-				winreg.CloseKey(k)
-			except:
-				print_error("Could not find Arma 3's directory in the registry.")
-		else:
-			a3_path = cygwin_a3path
-
-		if os.path.exists(a3_path):
-			try:
-				shutil.rmtree(os.path.join(a3_path, project), True)
-				shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project))
-			except:
-				print_error("Could not copy files. Is Arma 3 running?")
-
-if __name__ == "__main__":
-	main(sys.argv)
-input("Press Enter to continue...")

From 17946063049486dc8d87f75da088138c771f7efb Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Thu, 16 Apr 2015 19:52:20 +0200
Subject: [PATCH 046/257] Got rid of the __DSP macro

---
 addons/atragmx/functions/fnc_create_dialog.sqf       |  2 +-
 addons/atragmx/functions/fnc_show_gun_list.sqf       |  2 +-
 .../atragmx/functions/fnc_show_range_card_setup.sqf  |  2 +-
 .../functions/fnc_show_target_range_assist.sqf       |  2 +-
 .../functions/fnc_show_target_speed_assist.sqf       |  2 +-
 .../functions/fnc_target_speed_assist_timer.sqf      |  2 +-
 addons/atragmx/functions/fnc_toggle_range_card.sqf   |  2 +-
 .../functions/fnc_update_target_selection.sqf        | 12 ++++++------
 .../atragmx/functions/fnc_update_unit_selection.sqf  |  8 ++++----
 addons/atragmx/script_component.hpp                  |  2 --
 10 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 73945a4030..59ec3528af 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -29,7 +29,7 @@ GVAR(showAddNewGun) call FUNC(show_add_new_gun);
 GVAR(showGunList) call FUNC(show_gun_list);
 GVAR(showRangeCard) call FUNC(show_range_card);
 if (GVAR(showRangeCard)) then {
-    ctrlSetFocus (__DSP displayCtrl 5001);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
     [] call FUNC(update_range_card);
 };
 GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
diff --git a/addons/atragmx/functions/fnc_show_gun_list.sqf b/addons/atragmx/functions/fnc_show_gun_list.sqf
index 565da71ce6..5e1cdfa453 100644
--- a/addons/atragmx/functions/fnc_show_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_show_gun_list.sqf
@@ -20,7 +20,7 @@ GVAR(showGunList) = _this;
 {ctrlShow [_x, _this]} forEach [6000, 6001, 6002, 6003, 6004, 6005, 6006, 6007];
 
 if (_this) then {
-    ctrlSetFocus (__DSP displayCtrl 6002);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 6002);
     
     lbSetCurSel [6000, GVAR(currentGun)];
 };
diff --git a/addons/atragmx/functions/fnc_show_range_card_setup.sqf b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
index 98e5f57998..3d44c14b53 100644
--- a/addons/atragmx/functions/fnc_show_range_card_setup.sqf
+++ b/addons/atragmx/functions/fnc_show_range_card_setup.sqf
@@ -20,7 +20,7 @@ GVAR(showRangeCardSetup) = _this;
 {ctrlShow [_x, _this]} forEach [10000, 10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009];
 
 if (_this) then {
-    ctrlSetFocus (__DSP displayCtrl 10006);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 10006);
     
     ctrlSetText [10003, Str(Round(GVAR(rangeCardStartRange)))];
     ctrlSetText [10004, Str(Round(GVAR(rangeCardEndRange)))];
diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
index f7b973876f..60de30930f 100644
--- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
@@ -20,7 +20,7 @@ GVAR(showTargetRangeAssist) = _this;
 {ctrlShow [_x, _this]} forEach [7000, 7001, 7002, 7003, 7004, 7005, 7006, 7007, 7008, 7009, 7010, 7011, 7012, 7013, 7014, 7015, 7016, 7017, 7018, 7019, 7020];
 
 if (_this) then {
-    ctrlSetFocus (__DSP displayCtrl 7018);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 7018);
     
     ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
     ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
index 43b9afe470..3ac05f3f4f 100644
--- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
@@ -20,7 +20,7 @@ GVAR(showTargetSpeedAssist) = _this;
 {ctrlShow [_x, _this]} forEach [8000, 8001, 8002, 8003, 8004, 8005, 8006, 8007, 8008, 8009, 8010, 8011, 8012, 8013, 8014, 8015];
 
 if (_this) then {
-    ctrlSetFocus (__DSP displayCtrl 8012);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 8012);
     
     ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
 
diff --git a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
index da4b68a7c7..6e47461cf3 100644
--- a/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
+++ b/addons/atragmx/functions/fnc_target_speed_assist_timer.sqf
@@ -20,7 +20,7 @@ if !(ctrlVisible 9000) then {
     false call FUNC(show_target_speed_assist);
     true call FUNC(show_target_speed_assist_timer);
 
-    ctrlSetFocus (__DSP displayCtrl 9002);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 9002);
     
     [{
         private ["_args", "_startTime"];
diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf
index e5d5cb0269..572a4fe6ae 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf
@@ -24,7 +24,7 @@ if (ctrlVisible 5006) then
     false call FUNC(show_main_page);
     true call FUNC(show_range_card);
     
-    ctrlSetFocus (__DSP displayCtrl 5001);
+    ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 5001);
     
     [] call FUNC(calculate_range_card);
     [] call FUNC(update_range_card);
diff --git a/addons/atragmx/functions/fnc_update_target_selection.sqf b/addons/atragmx/functions/fnc_update_target_selection.sqf
index 2a29d05fb1..d63f84a90c 100644
--- a/addons/atragmx/functions/fnc_update_target_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_target_selection.sqf
@@ -15,13 +15,13 @@
  */
 #include "script_component.hpp"
 
-(__DSP displayCtrl 500) ctrlEnable true;
-(__DSP displayCtrl 501) ctrlEnable true;
-(__DSP displayCtrl 502) ctrlEnable true;
-(__DSP displayCtrl 503) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 500) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 501) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 502) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 503) ctrlEnable true;
 
-(__DSP displayCtrl 500 + GVAR(currentTarget)) ctrlEnable false;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 500 + GVAR(currentTarget)) ctrlEnable false;
 
-ctrlSetFocus (__DSP displayCtrl 3000);
+ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 3000);
 
 [] call FUNC(update_unit_selection);
diff --git a/addons/atragmx/functions/fnc_update_unit_selection.sqf b/addons/atragmx/functions/fnc_update_unit_selection.sqf
index 5468d2d0fc..2882954c5b 100644
--- a/addons/atragmx/functions/fnc_update_unit_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_unit_selection.sqf
@@ -15,11 +15,11 @@
  */
 #include "script_component.hpp"
 
-(__DSP displayCtrl 600) ctrlEnable true;
-(__DSP displayCtrl 601) ctrlEnable true;
-(__DSP displayCtrl 602) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 600) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 601) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 602) ctrlEnable true;
 
-(__DSP displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
 
 [] call FUNC(update_gun);
 [] call FUNC(update_atmosphere);
diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp
index 60b3083a96..f7ec6e68e8 100644
--- a/addons/atragmx/script_component.hpp
+++ b/addons/atragmx/script_component.hpp
@@ -10,5 +10,3 @@
 #endif
 
 #include "\z\ace\addons\main\script_macros.hpp"
-
-#define __DSP (uiNamespace getVariable "ATragMX_Display")

From fa6cb3e75ce2390614203def390b3dd179450dba Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 12:58:54 -0500
Subject: [PATCH 047/257] #672 - Don't show speaking icon for unconc players

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

diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf
index d8ffda756c..daddd36c05 100644
--- a/addons/nametags/functions/fnc_initIsSpeaking.sqf
+++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf
@@ -41,14 +41,14 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
     diag_log text format ["[ACE_nametags] - ACRE Detected"];
     DFUNC(isSpeaking) = {
         PARAMS_1(_unit);
-        ([_unit] call acre_api_fnc_isSpeaking) || ([ACE_player] call acre_api_fnc_isBroadcasting)
+        (([_unit] call acre_api_fnc_isSpeaking) || ([ACE_player] call acre_api_fnc_isBroadcasting)) && {!(_unit getVariable ["ACE_isUnconscious", false])}
     };
 } else {
     if (isClass (configFile >> "cfgPatches" >> "task_force_radio")) then {
         diag_log text format ["[ACE_nametags] - TFR Detected"];
         DFUNC(isSpeaking) =     {
             PARAMS_1(_unit);
-            (_unit getVariable ["tf_isSpeaking", false])
+            (_unit getVariable ["tf_isSpeaking", false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
         };
     } else {
         //No Radio Mod - Start a PFEH to watch the internal VON icon
@@ -64,7 +64,7 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
 
         DFUNC(isSpeaking) = {
             PARAMS_1(_unit);
-            (_unit getVariable [QGVAR(isSpeakingInGame), false])
+            (_unit getVariable [QGVAR(isSpeakingInGame), false]) && {!(_unit getVariable ["ACE_isUnconscious", false])}
         };
     };
 };

From ce4a9c36763177faa7482ba0db384146d9f6e963 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Thu, 16 Apr 2015 11:32:47 -0700
Subject: [PATCH 048/257] Apply javelin guidance to static titans.

---
 addons/javelin/CfgVehicles.hpp               | 29 ++++++++++++++++++++
 addons/javelin/CfgWeapons.hpp                | 14 +++++++++-
 addons/javelin/config.cpp                    |  3 +-
 addons/javelin/functions/fnc_onFired.sqf     |  5 +++-
 addons/javelin/functions/fnc_onOpticDraw.sqf | 19 +++++++++++--
 addons/missileguidance/CfgAmmo.hpp           |  5 ++--
 6 files changed, 67 insertions(+), 8 deletions(-)
 create mode 100644 addons/javelin/CfgVehicles.hpp

diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp
new file mode 100644
index 0000000000..02b8789e1a
--- /dev/null
+++ b/addons/javelin/CfgVehicles.hpp
@@ -0,0 +1,29 @@
+class CfgVehicles {
+    class LandVehicle;
+    class StaticWeapon : LandVehicle {
+        class Turrets;
+    };
+    
+    class StaticMGWeapon : StaticWeapon {
+        class Turrets : Turrets {
+            class MainTurret;
+        };
+    };
+    
+
+    class AT_01_base_F: StaticMGWeapon {
+        class Turrets : Turrets {
+            class MainTurret : MainTurret {
+                turretInfoType = "ACE_RscOptics_javelin";
+                gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
+                opticsZoomMin = 0.08333;
+                opticsZoomMax = 0.04167;
+                opticsZoomInit = 0.08333;
+                opticsPPEffects[] = {"OpticsCHAbera1","OpticsBlur1"};
+                opticsFlare = 0;
+                discretefov[] = {0.08333,0.04167};
+                discreteInitIndex = 0;
+            };
+        };
+    };
+};
\ No newline at end of file
diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp
index 4e7091c653..0898fa6d3c 100644
--- a/addons/javelin/CfgWeapons.hpp
+++ b/addons/javelin/CfgWeapons.hpp
@@ -1,14 +1,26 @@
 class CfgWeapons {
     class Launcher;
+    class MissileLauncher;
+    
     class Launcher_Base_F : Launcher {
         class WeaponSlotsInfo; 
 	};
     
+    class missiles_titan : MissileLauncher {
+        weaponInfoType = "ACE_RscOptics_javelin";
+        modelOptics = PATHTOF(data\reticle_titan.p3d);
+         
+        canLock = 0;
+
+        lockingTargetSound[] = {"",0,1};
+		lockedTargetSound[] = {"",0,1};
+    };
+    
     class launch_Titan_base : Launcher_Base_F {
         weaponInfoType = "ACE_RscOptics_javelin";
         modelOptics = PATHTOF(data\reticle_titan.p3d);
          
-        canLock = 1;
+        canLock = 0;
         
          
         lockingTargetSound[] = {"",0,1};
diff --git a/addons/javelin/config.cpp b/addons/javelin/config.cpp
index 9d7c14e448..cb76da0010 100644
--- a/addons/javelin/config.cpp
+++ b/addons/javelin/config.cpp
@@ -13,4 +13,5 @@ class CfgPatches {
 #include "CfgEventhandlers.hpp"
 #include "RscInGameUI.hpp"
 #include "CfgSounds.hpp"
-#include "CfgWeapons.hpp"
\ No newline at end of file
+#include "CfgWeapons.hpp"
+#include "CfgVehicles.hpp"
\ No newline at end of file
diff --git a/addons/javelin/functions/fnc_onFired.sqf b/addons/javelin/functions/fnc_onFired.sqf
index 04a023c9d8..a4e351cd92 100644
--- a/addons/javelin/functions/fnc_onFired.sqf
+++ b/addons/javelin/functions/fnc_onFired.sqf
@@ -6,7 +6,10 @@ PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 // Bail on not missile
 if( _shooter != ACE_player) exitWith { false }; 
 
-if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) ) exitWith { };
+if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) 
+    &&  
+    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan"] call EFUNC(common,inheritsFrom)) }
+) exitWith { };
 
 _pfh_handle = uiNamespace getVariable ["ACE_RscOptics_javelin_PFH", nil];
 if(!isNil "_pfh_handle") then {
diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf
index 13669b9d2e..bc17865480 100644
--- a/addons/javelin/functions/fnc_onOpticDraw.sqf
+++ b/addons/javelin/functions/fnc_onOpticDraw.sqf
@@ -30,7 +30,10 @@ _soundTime = _args select 4;
 _randomLockInterval = _args select 5;
 _fireDisabledEH = _args select 6;
 
-if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) ) exitWith {
+if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) 
+    &&
+    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan"] call EFUNC(common,inheritsFrom)) }
+    ) exitWith {
     __JavelinIGUITargeting ctrlShow false;
     __JavelinIGUITargetingGate ctrlShow false;
     __JavelinIGUITargetingLines ctrlShow false;
@@ -55,8 +58,16 @@ if ((velocity ACE_player) distance [0,0,0] > 0.5 && {cameraView == "GUNNER"} &&
         
         
 // bail on not loaded
-if (ACE_player ammo (currentWeapon ACE_player) == 0) exitWith {  };  
-        
+if( (vehicle ACE_player) != ACE_player) then {
+    if( (vehicle player) magazineTurretAmmo ["1Rnd_GAT_missiles", [0]] < 1) exitWith { 
+        TRACE_1("No turret ammo, exit", "");
+    };
+} else {
+    if (ACE_player ammo (currentWeapon ACE_player) < 1 ) exitWith { 
+        TRACE_1("No ammo, exit", "");
+    };  
+};
+          
 _range = parseNumber (ctrlText __JavelinIGUIRangefinder);
 TRACE_1("Viewing range", _range);
 if (_range > 50 && {_range < 2500}) then {
@@ -144,6 +155,8 @@ if (isNull _newTarget) then {
     // Disallow fire
     _fireDisabledEH = [_fireDisabledEH] call FUNC(disableFire);
 } else {
+    _fov = [] call CBA_fnc_getFoV;
+    TRACE_1("FOV", _fov);
     if (_newTarget distance ACE_player < 2500
             && {(call CBA_fnc_getFoV) select 1 > 9} 
              && { (currentVisionMode ACE_player == 2)}
diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp
index 3b74c87065..82045a1720 100644
--- a/addons/missileguidance/CfgAmmo.hpp
+++ b/addons/missileguidance/CfgAmmo.hpp
@@ -105,8 +105,9 @@ class CfgAmmo {
         // Turn off arma crosshair-guidance
         manualControl = 0;
         
-        hit = 1400;
-        
+        hit = 1400;         // default: 800
+		indirectHit = 20;
+		indirectHitRange = 2;
         // ACE uses these values
         //trackOversteer = 1;
         //trackLead = 0;

From e12831bee474814bee5fd4f02f4dc10a9ccb40b6 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 15:17:53 -0500
Subject: [PATCH 049/257] #678 - Missing Text Height in settingMenu

---
 addons/optionsmenu/gui/settingsMenu.hpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp
index 93d35b284c..5361aa7172 100644
--- a/addons/optionsmenu/gui/settingsMenu.hpp
+++ b/addons/optionsmenu/gui/settingsMenu.hpp
@@ -94,6 +94,8 @@ class ACE_settingsMenu {
       periodFocus = 1;
       periodOver = 1;
       action = QUOTE([MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged););
+      SizeEx = (UNITY * 1);
+      Size = (UNITY * 1);
     };
     class selectionAction_2: selectionAction_1 {
       idc = 1001;
@@ -221,6 +223,8 @@ class ACE_settingsMenu {
       periodFocus = 1;
       periodOver = 1;
       action = "closedialog 0;";
+      SizeEx = (UNITY * 1);
+      Size = (UNITY * 1);
     };
     class action_reset: actionClose {
       idc = 1100;

From 4e5c2ef187f900c364c125cc51559726a25b8f44 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 19:11:42 -0500
Subject: [PATCH 050/257] option menu ui scaling

---
 addons/optionsmenu/config.cpp           |  12 +-
 addons/optionsmenu/gui/settingsMenu.hpp | 300 ++++++++++++------------
 addons/optionsmenu/stringtable.xml      |   5 +-
 3 files changed, 170 insertions(+), 147 deletions(-)

diff --git a/addons/optionsmenu/config.cpp b/addons/optionsmenu/config.cpp
index 675e415e47..69249b36c4 100644
--- a/addons/optionsmenu/config.cpp
+++ b/addons/optionsmenu/config.cpp
@@ -26,4 +26,14 @@ class CfgAddons {
 #include "gui\settingsMenu.hpp"
 #include "gui\pauseMenu.hpp"
 
-#include "CFgVehicles.hpp"
+#include "CfgVehicles.hpp"
+
+class ACE_Settings {
+    class GVAR(optionMenuDisplaySize) {
+        value = 0;
+        typeName = "SCALAR";
+        isClientSettable = 1;
+        displayName = "$STR_ACE_optionsMenu_uiScaing";
+        values[] = {"$str_medium", "$str_large", "$str_very_large"};
+    };
+};
diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp
index 5361aa7172..9225564eea 100644
--- a/addons/optionsmenu/gui/settingsMenu.hpp
+++ b/addons/optionsmenu/gui/settingsMenu.hpp
@@ -4,46 +4,56 @@ class ACE_settingsMenu {
   onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', _this select 0)]; [] call FUNC(onSettingsMenuOpen););
   onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', nil)]; saveProfileNamespace;);
 
-  #define SIZEX (((safezoneW / safezoneH) min 1.2))
-  #define SIZEY (SIZEX / 1.2)
-  #define UNITX (SIZEX / 40)
-  #define UNITY (SIZEY / 25)
-  #define OFFSETX (safezoneX + (safezoneW - SIZEX)/2)
-  #define OFFSETY (safezoneY + (safezoneH - (SIZEX / 1.2))/2)
+#define SIZEX (((safezoneW / safezoneH) min 1.2))
+#define SIZEY (SIZEX / 1.2)
+#define X_ORIGINAL(num) (num * (SIZEX / 40) + (safezoneX + (safezoneW - SIZEX)/2))
+#define Y_ORIGINAL(num) (num * (SIZEY / 25) + (safezoneY + (safezoneH - (SIZEX / 1.2))/2))
+#define W_ORIGINAL(num) (num * (SIZEX / 40))
+#define H_ORIGINAL(num) (num * (SIZEY / 25))
 
+#define X_MAKEITBIGGA(num) (num * (safeZoneH / 40) + (safezoneX + (safezoneW - safeZoneH)/2))
+#define Y_MAKEITBIGGA(num) (num * (safeZoneH / 30) + (safezoneY + (safezoneH - (safeZoneH / 1.2))/2))
+#define W_MAKEITBIGGA(num) (num * (safeZoneH / 40))
+#define H_MAKEITBIGGA(num) (num * (safeZoneH / 30))
+
+#define X_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), X_ORIGINAL(num), X_MAKEITBIGGA(num))])
+#define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), Y_ORIGINAL(num), Y_MAKEITBIGGA(num))])
+#define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), W_ORIGINAL(num), W_MAKEITBIGGA(num))])
+#define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), H_ORIGINAL(num), H_MAKEITBIGGA(num))])
+  
   class controlsBackground {
     class HeaderBackground: ACE_gui_backgroundBase {
       idc = -1;
       type = CT_STATIC;
-      x = 1 * UNITX + OFFSETX;
-      y = 1 * UNITY + OFFSETY;
-      w = 38 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(1);
+      w = W_PART(38);
+      h = H_PART(1);
       style = ST_LEFT + ST_SHADOW;
       font = "PuristaMedium";
-      SizeEx = (UNITY * 1);
+      SizeEx = H_PART(1);
       colorText[] = {0.95, 0.95, 0.95, 0.75};
       colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
       text = "";
     };
     class CenterBackground: HeaderBackground {
-      y = 2.1 * UNITY + OFFSETY;
-      h = 2.5 * UNITY;
+      y = Y_PART(2.1);
+      h = H_PART(2.5);
       text = "";
       colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
       colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
     };
     class LeftBackground: CenterBackground {
-      y = 4.8 * UNITY + OFFSETY;
-      h = 17.4 * UNITY;
-      w = 25 * UNITX;
+      y = Y_PART(4.8);
+      h = H_PART(17.4);
+      w = W_PART(25);
     };
     class RightBackground: LeftBackground {
-      x = 26.1 * UNITX + OFFSETX;
-      w = 12.9 * UNITX;
+      x = X_PART(26.1);
+      w = W_PART(12.9);
     };
     class RightBackgroundHeader: RightBackground {
-      h = 1.4 * UNITY;
+      h = H_PART(1.4);
       colorBackground[] = {0,0,0,1};
     };
   };
@@ -52,32 +62,32 @@ class ACE_settingsMenu {
     class HeaderName {
       idc = 1;
       type = CT_STATIC;
-      x = 1 * UNITX + OFFSETX;
-      y = 1 * UNITY + OFFSETY;
-      w = 38 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(1);
+      w = W_PART(38);
+      h = H_PART(1);
       style = ST_LEFT + ST_SHADOW;
       font = "PuristaMedium";
-      SizeEx = (UNITY * 1);
+      SizeEx = H_PART(1);
       colorText[] = {0.95, 0.95, 0.95, 0.75};
       colorBackground[] = {0,0,0,0};
       text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
     };
     class labelSubHeader: ACE_gui_staticBase {
       idc = 13;
-      x = 2 * UNITX + OFFSETX;
-      y = 3.4 * UNITY + OFFSETY;
-      w = 30 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(2);
+      y = Y_PART(3.4);
+      w = W_PART(30);
+      h = H_PART(1);
       text = "";
     };
     class selectionAction_1: ACE_gui_buttonBase {
       idc = 1000;
       text = "$STR_ACE_OptionsMenu_TabOptions";
-      x = 1 * UNITX + OFFSETX;
-      y = 2.1 * UNITY + OFFSETY;
-      w = 9.5 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(2.1);
+      w = W_PART(9.5);
+      h = H_PART(1);
       animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
       animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
       animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
@@ -94,34 +104,34 @@ class ACE_settingsMenu {
       periodFocus = 1;
       periodOver = 1;
       action = QUOTE([MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged););
-      SizeEx = (UNITY * 1);
-      Size = (UNITY * 1);
+      SizeEx = H_PART(1);
+      Size = H_PART(1);
     };
     class selectionAction_2: selectionAction_1 {
       idc = 1001;
       text = "$STR_ACE_OptionsMenu_TabColors";
-      x = 10.5 * UNITX + OFFSETX;
+      x = X_PART(10.5);
       action = QUOTE([MENU_TAB_COLORS] call FUNC(onListBoxShowSelectionChanged););
     };
     class selectionAction_3: selectionAction_1 {
       idc = 1002;
       text = "";
-      x = 20 * UNITX + OFFSETX;
+      x = X_PART(20);
       action = "";
     };
     class selectionAction_4: selectionAction_1 {
       idc = 1003;
       text = "";
-      x = 29.5 * UNITX + OFFSETX;
+      x = X_PART(29.5);
       action = "";
     };
     class listBoxSettingsList: ACE_gui_listNBox {
       idc = 200;
-      x = 2 * UNITX + OFFSETX;
-      y = 5.5 * UNITY + OFFSETY;
-      w = 23 * UNITX;
-      h = 15 * UNITY;
-      SizeEx = (UNITY * 0.8);
+      x = X_PART(2);
+      y = Y_PART(5.5);
+      w = W_PART(23);
+      h = H_PART(15);
+      SizeEx = H_ORIGINAL(0.8);
       colorBackground[] = {0, 0, 0, 0.9};
       colorSelectBackground[] = {0, 0, 0, 0.9};
       columns[] = {0.0, 0.6};
@@ -129,83 +139,83 @@ class ACE_settingsMenu {
     };
     class labelTitle: ACE_gui_staticBase {
       idc = 250;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 5.1 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(5.1);
+      w = W_PART(11);
+      h = H_PART(1);
       text = "";
-      SizeEx = (UNITY *1);
+      SizeEx = H_PART(1);
     };
     class labelKey: ACE_gui_staticBase {  //Variable Name
       idc = 300;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 6.2 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(6.2);
+      w = W_PART(11);
+      h = H_PART(1);
       text = "";
-      SizeEx = (UNITY * 0.65);
+      SizeEx = H_PART(0.65);
     };
     class Label2: labelKey {
       idc = 301;
-      y = 7.3 * UNITY + OFFSETY;
+      y = Y_PART(7.3);
       text = "$STR_ACE_OptionsMenu_Setting";
-      SizeEx = (UNITY * 1);
+      SizeEx = H_PART(1);
     };
     class comboBox1: ACE_gui_comboBoxBase {
       idc = 400;
-      x = 31.1 * UNITX + OFFSETX;
-      y = 7.3 * UNITY + OFFSETY;
-      w = 7 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(31.1);
+      y = Y_PART(7.3);
+      w = W_PART(7);
+      h = H_PART(1);
       onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
-      SizeEx = (UNITY * 0.9);
+      SizeEx = H_PART(0.9);
     };
     class sliderBar1: RscXSliderH {
       idc = 410;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 7.3 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 0.75 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(7.3);
+      w = W_PART(11);
+      h = H_PART(0.75);
       onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
       color[] = {1,0,0,0.4};
       colorActive[] = {1,0,0,1};
     };
     class sliderBar2: sliderBar1 {
       idc = 411;
-      y = 8.2 * UNITY + OFFSETY;
+      y = Y_PART(8.2);
       color[] = {0,1,0,0.4};
       colorActive[] = {0,1,0,1};
     };
     class sliderBar3: sliderBar1 {
       idc = 412;
-      y = 9.1 * UNITY + OFFSETY;
+      y = Y_PART(9.1);
       color[] = {0,0,1,0.4};
       colorActive[] = {0,0,1,1};
     };
     class sliderBar4: sliderBar1 {
       idc = 413;
-      y = 10 * UNITY + OFFSETY;
+      y = Y_PART(10);
       color[] = {1,1,1,0.4};
       colorActive[] = {1,1,1,1};
     };
     class labelDesc: ACE_gui_staticBase {
       idc = 251;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 11 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 11 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(11);
+      w = W_PART(11);
+      h = H_PART(11);
       text = "";
       style = ST_LEFT + ST_MULTI;
       lineSpacing = 1;
-      SizeEx = (UNITY * 0.8);
+      SizeEx = H_PART(0.8);
     };
     class actionClose: ACE_gui_buttonBase {
       idc = 10;
       text = "$STR_DISP_CLOSE";
-      x = 1 * UNITX + OFFSETX;
-      y = 22.3 * UNITY + OFFSETY;
-      w = 7.5 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(22.3);
+      w = W_PART(7.5);
+      h = H_PART(1);
       style = ST_LEFT;
       animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
       animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
@@ -223,19 +233,19 @@ class ACE_settingsMenu {
       periodFocus = 1;
       periodOver = 1;
       action = "closedialog 0;";
-      SizeEx = (UNITY * 1);
-      Size = (UNITY * 1);
+      SizeEx = H_PART(1);
+      Size = H_PART(1);
     };
     class action_reset: actionClose {
       idc = 1100;
       text = "$STR_ACE_OptionsMenu_ResetAll";
-      x = 26.1 * (SIZEX / 40) + OFFSETX;
+      x = X_PART(9.5);
       action = QUOTE([] call FUNC(resetSettings));
     };
     class action_exportServerConfig: actionClose {
       idc = 1102;
       text = "$STR_ACE_OptionsMenu_OpenExport";
-      x = 1 * (SIZEX / 40) + OFFSETX;
+      x = X_PART(18);
       action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; });
     };
   };
@@ -247,32 +257,32 @@ class ACE_serverSettingsMenu: ACE_settingsMenu {
     class HeaderName {
       idc = 1;
       type = CT_STATIC;
-      x = 1 * UNITX + OFFSETX;
-      y = 1 * UNITY + OFFSETY;
-      w = 38 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(1);
+      w = W_PART(38);
+      h = H_PART(1);
       style = ST_LEFT + ST_SHADOW;
       font = "PuristaMedium";
-      SizeEx = (UNITY * 1);
+      SizeEx = H_PART(1);
       colorText[] = {0.95, 0.95, 0.95, 0.75};
       colorBackground[] = {0,0,0,0};
       text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
     };
     class labelSubHeader: ACE_gui_staticBase {
       idc = 13;
-      x = 2 * UNITX + OFFSETX;
-      y = 3.4 * UNITY + OFFSETY;
-      w = 30 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(2);
+      y = Y_PART(3.4);
+      w = W_PART(30);
+      h = H_PART(1);
       text = "";
     };
     class selectionAction_1: ACE_gui_buttonBase {
       idc = 1000;
       text = "$STR_ACE_OptionsMenu_TabOptions";
-      x = 1 * UNITX + OFFSETX;
-      y = 2.1 * UNITY + OFFSETY;
-      w = 9.5 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(1);
+      y = Y_PART(2.1);
+      w = W_PART(9.5);
+      h = H_PART(1);
       animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
       animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
       animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
@@ -293,28 +303,28 @@ class ACE_serverSettingsMenu: ACE_settingsMenu {
     class selectionAction_2: selectionAction_1 {
       idc = 1001;
       text = "$STR_ACE_OptionsMenu_TabColors";
-      x = 10.5 * UNITX + OFFSETX;
+      x = X_PART(10.5);
       action = QUOTE([MENU_TAB_SERVER_COLORS] call FUNC(onServerListBoxShowSelectionChanged););
     };
     class selectionAction_3: selectionAction_1 {
       idc = 1002;
       text = "$STR_ACE_OptionsMenu_TabValues";
-      x = 20 * UNITX + OFFSETX;
+      x = X_PART(20);
       action = QUOTE([MENU_TAB_SERVER_VALUES] call FUNC(onServerListBoxShowSelectionChanged););
     };
     class selectionAction_4: selectionAction_1 {
       idc = 1003;
       text = "";
-      x = 29.5 * UNITX + OFFSETX;
+      x = X_PART(29.5);
       action = "";
     };
     class listBoxSettingsList: ACE_gui_listNBox {
       idc = 200;
-      x = 2 * UNITX + OFFSETX;
-      y = 5.5 * UNITY + OFFSETY;
-      w = 23 * UNITX;
-      h = 15 * UNITY;
-      SizeEx = (UNITY * 0.8);
+      x = X_PART(2);
+      y = Y_PART(5.5);
+      w = W_PART(23);
+      h = H_PART(15);
+      SizeEx = H_PART(0.8);
       colorBackground[] = {0, 0, 0, 0.9};
       colorSelectBackground[] = {0, 0, 0, 0.9};
       columns[] = {0.0, 0.6};
@@ -322,120 +332,120 @@ class ACE_serverSettingsMenu: ACE_settingsMenu {
     };
     class labelTitle: ACE_gui_staticBase {
       idc = 250;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 5.1 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(5.1);
+      w = W_PART(11);
+      h = H_PART(1);
       text = "";
-      SizeEx = (UNITY *1);
+      SizeEx = H_PART(1);
     };
     class labelKey: ACE_gui_staticBase {  //Variable Name
       idc = 300;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 6.2 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(6.2);
+      w = W_PART(11);
+      h = H_PART(1);
       text = "";
-      SizeEx = (UNITY * 0.65);
+      SizeEx = H_PART(0.65);
     };
     class Label2: labelKey {
       idc = 301;
-      y = 7.3 * UNITY + OFFSETY;
+      y = Y_PART(7.3);
       text = "$STR_ACE_OptionsMenu_Setting";
-      SizeEx = (UNITY * 1);
+      SizeEx = H_PART(1);
     };
     class comboBox1: ACE_gui_comboBoxBase {
       idc = 400;
-      x = 31.1 * UNITX + OFFSETX;
-      y = 7.3 * UNITY + OFFSETY;
-      w = 7 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(31.1);
+      y = Y_PART(7.3);
+      w = W_PART(7);
+      h = H_PART(1);
       onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
-      SizeEx = (UNITY * 0.9);
+      SizeEx = H_PART(0.9);
     };
     class sliderBar1: RscXSliderH {
       idc = 410;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 7.3 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 0.75 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(7.3);
+      w = W_PART(11);
+      h = H_PART(0.75);
       onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
       color[] = {1,0,0,0.4};
       colorActive[] = {1,0,0,1};
     };
     class sliderBar2: sliderBar1 {
       idc = 411;
-      y = 8.2 * UNITY + OFFSETY;
+      y = Y_PART(8.2);
       color[] = {0,1,0,0.4};
       colorActive[] = {0,1,0,1};
     };
     class sliderBar3: sliderBar1 {
       idc = 412;
-      y = 9.1 * UNITY + OFFSETY;
+      y = Y_PART(9.1);
       color[] = {0,0,1,0.4};
       colorActive[] = {0,0,1,1};
     };
     class sliderBar4: sliderBar1 {
       idc = 413;
-      y = 10 * UNITY + OFFSETY;
+      y = Y_PART(10);
       color[] = {1,1,1,0.4};
       colorActive[] = {1,1,1,1};
     };
     class inputField1: ACE_gui_editBase {
       idc = 414;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 7.3 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 0.75 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(7.3);
+      w = W_PART(11);
+      h = H_PART(0.75);
     };
     class inputFieldTypeLabel: ACE_gui_staticBase {
       idc = 415;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 8.2 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 0.75 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(8.2);
+      w = W_PART(11);
+      h = H_PART(0.75);
       text = "";
       style = ST_LEFT + ST_MULTI;
       lineSpacing = 1;
-      SizeEx = (UNITY * 0.8);
+      SizeEx = H_PART(0.8);
     };
     class saveInputButton: selectionAction_1 {
       idc = 416;
       text = "$STR_ACE_OptionsMenu_SaveInput";
-      x = 27.1 * UNITX + OFFSETX;
-      y = 9.1 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 1 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(9.1);
+      w = W_PART(11);
+      h = H_PART(1);
       action = QUOTE([] call FUNC(onServerSaveInputField););
     };
     class labelDesc: ACE_gui_staticBase {
       idc = 251;
-      x = 27.1 * UNITX + OFFSETX;
-      y = 11 * UNITY + OFFSETY;
-      w = 11 * UNITX;
-      h = 11 * UNITY;
+      x = X_PART(27.1);
+      y = Y_PART(11);
+      w = W_PART(11);
+      h = H_PART(11);
       text = "";
       style = ST_LEFT + ST_MULTI;
       lineSpacing = 1;
-      SizeEx = (UNITY * 0.8);
+      SizeEx = H_PART(0.8);
     };
     class actionClose;
     class action_reset: actionClose {
       idc = 1100;
       text = "$STR_ACE_OptionsMenu_ResetAll";
-      x = 26.1 * (SIZEX / 40) + OFFSETX;
+      x = X_PART(26.1);
       action = QUOTE([] call FUNC(serverResetSettings));
     };
     class action_exportServerConfig: actionClose {
       idc = 1101;
       text = "$STR_ACE_OptionsMenu_Export";
-      x = 1 * (SIZEX / 40) + OFFSETX;
+      x = X_PART(1);
       action = QUOTE([] call FUNC(exportSettings));
     };
     class action_toggleIncludeClientSettings: actionClose {
       idc = 1102;
       text = "$STR_ACE_OptionsMenu_inClientSettings";
-      x = 9 * (SIZEX / 40) + OFFSETX;
+      x = X_PART(9);
       action = QUOTE([] call FUNC(toggleIncludeClientSettings));
     };
   };
diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index c4ac2b1593..6e512b7d25 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -198,5 +198,8 @@
             <French>Paramètres exportés dans le presse papier</French>
             <Hungarian>Beállítások exportálva a vágólapba</Hungarian>
         </Key>
+        <Key ID="STR_ACE_optionsMenu_uiScaing">
+            <English>Option Menu UI Scaling</English>
+        </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From 53af014eab292835bf0a23b3d37b77fb095b9c4b Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 19:29:39 -0500
Subject: [PATCH 051/257] Fix Localization in value[] array

---
 addons/common/functions/fnc_setSettingFromConfig.sqf | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf
index 4d81ef3535..347320edec 100644
--- a/addons/common/functions/fnc_setSettingFromConfig.sqf
+++ b/addons/common/functions/fnc_setSettingFromConfig.sqf
@@ -75,6 +75,18 @@ if (isNil _name) then {
         getNumber (_optionEntry >> "force") > 0,
         _value
     ];
+    
+    //Strings in the values array won't be localized from the config, so just do that now:
+    private "_values";
+    _values = _settingData select 5;
+    {
+        _text = _x;
+        if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
+            _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
+            _values set [_forEachIndex, _text];
+        };
+    } forEach _values;
+    
 
     GVAR(settings) pushBack _settingData;
 

From 1729c781bd01135182053cdfcc8ad733afc6bf83 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 19:46:42 -0500
Subject: [PATCH 052/257] Cleanup / private vars

---
 addons/inventory/config.cpp                   |   2 +-
 .../functions/fnc_exportSettings.sqf          |   6 +
 .../functions/fnc_onServerSaveInputField.sqf  |  22 +-
 .../fnc_onServerSettingsMenuOpen.sqf          |   3 +-
 .../functions/fnc_onSettingsMenuOpen.sqf      |   4 +-
 .../fnc_serverSettingsMenuUpdateKeyView.sqf   |   2 +-
 .../fnc_serverSettingsMenuUpdateList.sqf      |   2 +-
 .../functions/fnc_settingsMenuUpdateList.sqf  |   2 +-
 addons/optionsmenu/gui/settingsMenu.hpp       | 850 +++++++++---------
 9 files changed, 451 insertions(+), 442 deletions(-)

diff --git a/addons/inventory/config.cpp b/addons/inventory/config.cpp
index 1268f8b886..622dacc624 100644
--- a/addons/inventory/config.cpp
+++ b/addons/inventory/config.cpp
@@ -21,7 +21,7 @@ class ACE_Settings {
         isClientSettable = 1;
         displayName = "$STR_ACE_Inventory_SettingName";
         description = "$STR_ACE_Inventory_SettingDescription";
-        values[] = {"Normal (Default Size)", "Medium", "Bigger"};
+        values[] = {"$str_medium", "$str_large", "$str_very_large"};
     };
 };
 
diff --git a/addons/optionsmenu/functions/fnc_exportSettings.sqf b/addons/optionsmenu/functions/fnc_exportSettings.sqf
index 3ac2455a64..f98c3548e8 100644
--- a/addons/optionsmenu/functions/fnc_exportSettings.sqf
+++ b/addons/optionsmenu/functions/fnc_exportSettings.sqf
@@ -16,6 +16,8 @@
 
 #include "script_component.hpp"
 
+private ["_compiledConfig", "_name", "_typeName", "_isClientSetable", "_localizedName", "_localizedDescription", "_possibleValues", "_defaultValue", "_value", "_compiledConfigEntry"];
+
 _compiledConfig = "
 ";
 {
@@ -52,6 +54,10 @@ class %1 {
     typeName = %3;
     force = 1;
 };", _name, _value, format['"%1"', _typeName]];
+
+        //clipboard seems to be getting cuttoff, so do a backup dump to rpt:
+        diag_log text _compiledConfigEntry;
+        
         _compiledConfig = _compiledConfig + _compiledConfigEntry;
     };
 } forEach EGVAR(common,settings);
diff --git a/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf b/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf
index ca4a00891a..b8eb630f85 100644
--- a/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf
+++ b/addons/optionsmenu/functions/fnc_onServerSaveInputField.sqf
@@ -16,28 +16,28 @@
 
 #include "script_component.hpp"
 
-private ["_settingIndex", "_inputText"];
+private ["_settingIndex", "_inputText", "_setting", "_settingName", "_convertedValue"];
 
 _settingIndex =  lbCurSel 200;  //Index of left list
 _inputText = ctrlText 414;  //Index of right drop down
 
 switch (GVAR(optionMenu_openTab)) do {
     case (MENU_TAB_SERVER_VALUES): {
-    if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(serverSideValues)))) then {
-        try {
-            _setting = (GVAR(serverSideValues) select _settingIndex);
-            _settingName = _setting select 0;
+        if ((_settingIndex >= 0) && (_settingIndex < (count GVAR(serverSideValues)))) then {
+            try {
+                _setting = (GVAR(serverSideValues) select _settingIndex);
+                _settingName = _setting select 0;
 
-            _convertedValue = switch (toUpper (_setting select 1)) do {
+                _convertedValue = switch (toUpper (_setting select 1)) do {
                 case "STRING": {format ['"%1"', _inputText]};
                 case "ARRAY": {format [call compile "[%1]", _inputText]};
                 case "SCALAR": {parseNumber _inputText;};
-                default {throw "Error"};
+                    default {throw "Error"};
+                };
+                [MENU_TAB_SERVER_VALUES, _settingName, _convertedValue] call FUNC(updateSetting);
+            } catch {
             };
-            [MENU_TAB_SERVER_VALUES, _settingName, _convertedValue] call FUNC(updateSetting);
-        } catch {
         };
+        [false] call FUNC(serverSettingsMenuUpdateList);
     };
-    [false] call FUNC(serverSettingsMenuUpdateList);
-  };
 };
diff --git a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf
index 7894d2ff1a..f5501d0860 100644
--- a/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf
+++ b/addons/optionsmenu/functions/fnc_onServerSettingsMenuOpen.sqf
@@ -16,6 +16,8 @@
 
 #include "script_component.hpp"
 
+private ["_name", "_typeName", "_isClientSetable", "_localizedName", "_localizedDescription", "_possibleValues", "_defaultValue", "_setting", "_menu", "_settingsMenu"];
+
 if (GVAR(serverConfigGeneration) == 0 || isMultiplayer) exitwith {closeDialog 145246;};
 
 // Filter only user setable setting
@@ -54,7 +56,6 @@ GVAR(serverSideValues) = [];
 //Delay a frame
 [{ [MENU_TAB_SERVER_OPTIONS] call FUNC(onServerListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame);
 
-private "_menu";
 disableSerialization;
 _menu = uiNamespace getvariable "ACE_serverSettingsMenu";
 (_menu displayCtrl 1003) ctrlEnable false;
diff --git a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf
index 3a4c6ec561..050abcf295 100644
--- a/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf
+++ b/addons/optionsmenu/functions/fnc_onSettingsMenuOpen.sqf
@@ -16,9 +16,12 @@
 
 #include "script_component.hpp"
 
+private ["_setting", "_menu"];
+
 // Filter only user setable setting
 GVAR(clientSideOptions) = [];
 GVAR(clientSideColors) = [];
+
 {
     // If the setting is user setable and not forced
     if ((_x select 2) && !(_x select 6)) then {
@@ -40,7 +43,6 @@ GVAR(clientSideColors) = [];
 //Delay a frame
 [{ [MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged) }, []] call EFUNC(common,execNextFrame);
 
-private "_menu";
 disableSerialization;
 _menu = uiNamespace getvariable "ACE_settingsMenu";
 (_menu displayCtrl 1002) ctrlEnable false;
diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf
index 2dcf9f7fe7..52984b78f3 100644
--- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf
+++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateKeyView.sqf
@@ -16,7 +16,7 @@
 
 #include "script_component.hpp"
 
-private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor"];
+private ["_settingsMenu", "_ctrlList", "_collection", "_settingIndex", "_setting", "_entryName", "_localizedName", "_localizedDescription", "_possibleValues", "_settingsValue", "_currentColor", "_expectedType"];
 disableSerialization;
 
 _settingsMenu = uiNamespace getVariable 'ACE_serverSettingsMenu';
diff --git a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf
index ad5d647c16..dad3012e1b 100644
--- a/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf
+++ b/addons/optionsmenu/functions/fnc_serverSettingsMenuUpdateList.sqf
@@ -16,7 +16,7 @@
 
 #include "script_component.hpp"
 
-private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView"];
+private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue"];
 DEFAULT_PARAM(0,_updateKeyView,true);
 
 disableSerialization;
diff --git a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf
index 0138b9e87d..513b187d7d 100644
--- a/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf
+++ b/addons/optionsmenu/functions/fnc_settingsMenuUpdateList.sqf
@@ -16,7 +16,7 @@
 
 #include "script_component.hpp"
 
-private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView"];
+private ["_settingsMenu", "_ctrlList", "_settingsText", "_color", "_settingsColor", "_updateKeyView", "_settingsValue"];
 DEFAULT_PARAM(0,_updateKeyView,true);
 
 disableSerialization;
diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp
index 9225564eea..04e7ee5aaa 100644
--- a/addons/optionsmenu/gui/settingsMenu.hpp
+++ b/addons/optionsmenu/gui/settingsMenu.hpp
@@ -1,8 +1,8 @@
 class ACE_settingsMenu {
-  idd = 145246;
-  movingEnable = false;
-  onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', _this select 0)]; [] call FUNC(onSettingsMenuOpen););
-  onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', nil)]; saveProfileNamespace;);
+    idd = 145246;
+    movingEnable = false;
+    onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', _this select 0)]; [] call FUNC(onSettingsMenuOpen););
+    onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_settingsMenu', nil)]; saveProfileNamespace;);
 
 #define SIZEX (((safezoneW / safezoneH) min 1.2))
 #define SIZEY (SIZEX / 1.2)
@@ -20,433 +20,433 @@ class ACE_settingsMenu {
 #define Y_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), Y_ORIGINAL(num), Y_MAKEITBIGGA(num))])
 #define W_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), W_ORIGINAL(num), W_MAKEITBIGGA(num))])
 #define H_PART(num) QUOTE(linearConversion [ARR_5(0, 2, (missionNamespace getVariable [ARR_2(QUOTE(QGVAR(optionMenuDisplaySize)), 0)]), H_ORIGINAL(num), H_MAKEITBIGGA(num))])
-  
-  class controlsBackground {
-    class HeaderBackground: ACE_gui_backgroundBase {
-      idc = -1;
-      type = CT_STATIC;
-      x = X_PART(1);
-      y = Y_PART(1);
-      w = W_PART(38);
-      h = H_PART(1);
-      style = ST_LEFT + ST_SHADOW;
-      font = "PuristaMedium";
-      SizeEx = H_PART(1);
-      colorText[] = {0.95, 0.95, 0.95, 0.75};
-      colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
-      text = "";
-    };
-    class CenterBackground: HeaderBackground {
-      y = Y_PART(2.1);
-      h = H_PART(2.5);
-      text = "";
-      colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
-      colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
-    };
-    class LeftBackground: CenterBackground {
-      y = Y_PART(4.8);
-      h = H_PART(17.4);
-      w = W_PART(25);
-    };
-    class RightBackground: LeftBackground {
-      x = X_PART(26.1);
-      w = W_PART(12.9);
-    };
-    class RightBackgroundHeader: RightBackground {
-      h = H_PART(1.4);
-      colorBackground[] = {0,0,0,1};
-    };
-  };
 
-  class controls {
-    class HeaderName {
-      idc = 1;
-      type = CT_STATIC;
-      x = X_PART(1);
-      y = Y_PART(1);
-      w = W_PART(38);
-      h = H_PART(1);
-      style = ST_LEFT + ST_SHADOW;
-      font = "PuristaMedium";
-      SizeEx = H_PART(1);
-      colorText[] = {0.95, 0.95, 0.95, 0.75};
-      colorBackground[] = {0,0,0,0};
-      text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
+    class controlsBackground {
+        class HeaderBackground: ACE_gui_backgroundBase {
+            idc = -1;
+            type = CT_STATIC;
+            x = X_PART(1);
+            y = Y_PART(1);
+            w = W_PART(38);
+            h = H_PART(1);
+            style = ST_LEFT + ST_SHADOW;
+            font = "PuristaMedium";
+            SizeEx = H_PART(1);
+            colorText[] = {0.95, 0.95, 0.95, 0.75};
+            colorBackground[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.69])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.75])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.5])", "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
+            text = "";
+        };
+        class CenterBackground: HeaderBackground {
+            y = Y_PART(2.1);
+            h = H_PART(2.5);
+            text = "";
+            colorText[] = {0, 0, 0, "(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
+            colorBackground[] = {0,0,0,"(profilenamespace getvariable ['GUI_BCG_RGB_A',0.9])"};
+        };
+        class LeftBackground: CenterBackground {
+            y = Y_PART(4.8);
+            h = H_PART(17.4);
+            w = W_PART(25);
+        };
+        class RightBackground: LeftBackground {
+            x = X_PART(26.1);
+            w = W_PART(12.9);
+        };
+        class RightBackgroundHeader: RightBackground {
+            h = H_PART(1.4);
+            colorBackground[] = {0,0,0,1};
+        };
     };
-    class labelSubHeader: ACE_gui_staticBase {
-      idc = 13;
-      x = X_PART(2);
-      y = Y_PART(3.4);
-      w = W_PART(30);
-      h = H_PART(1);
-      text = "";
+
+    class controls {
+        class HeaderName {
+            idc = 1;
+            type = CT_STATIC;
+            x = X_PART(1);
+            y = Y_PART(1);
+            w = W_PART(38);
+            h = H_PART(1);
+            style = ST_LEFT + ST_SHADOW;
+            font = "PuristaMedium";
+            SizeEx = H_PART(1);
+            colorText[] = {0.95, 0.95, 0.95, 0.75};
+            colorBackground[] = {0,0,0,0};
+            text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
+        };
+        class labelSubHeader: ACE_gui_staticBase {
+            idc = 13;
+            x = X_PART(2);
+            y = Y_PART(3.4);
+            w = W_PART(30);
+            h = H_PART(1);
+            text = "";
+        };
+        class selectionAction_1: ACE_gui_buttonBase {
+            idc = 1000;
+            text = "$STR_ACE_OptionsMenu_TabOptions";
+            x = X_PART(1);
+            y = Y_PART(2.1);
+            w = W_PART(9.5);
+            h = H_PART(1);
+            animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
+            animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
+            animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
+            animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
+            color[] = {1, 1, 1, 1};
+            color2[] = {0,0,0, 1};
+            colorBackgroundFocused[] = {1,1,1,1};
+            colorBackground[] = {1,1,1,1};
+            colorbackground2[] = {1,1,1,1};
+            colorDisabled[] = {1,1,1,1};
+            colorFocused[] = {0,0,0,1};
+            periodFocus = 1;
+            periodOver = 1;
+            action = QUOTE([MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged););
+            SizeEx = H_PART(1);
+            Size = H_PART(1);
+        };
+        class selectionAction_2: selectionAction_1 {
+            idc = 1001;
+            text = "$STR_ACE_OptionsMenu_TabColors";
+            x = X_PART(10.5);
+            action = QUOTE([MENU_TAB_COLORS] call FUNC(onListBoxShowSelectionChanged););
+        };
+        class selectionAction_3: selectionAction_1 {
+            idc = 1002;
+            text = "";
+            x = X_PART(20);
+            action = "";
+        };
+        class selectionAction_4: selectionAction_1 {
+            idc = 1003;
+            text = "";
+            x = X_PART(29.5);
+            action = "";
+        };
+        class listBoxSettingsList: ACE_gui_listNBox {
+            idc = 200;
+            x = X_PART(2);
+            y = Y_PART(5.5);
+            w = W_PART(23);
+            h = H_PART(15);
+            SizeEx = H_ORIGINAL(0.8);
+            colorBackground[] = {0, 0, 0, 0.9};
+            colorSelectBackground[] = {0, 0, 0, 0.9};
+            columns[] = {0.0, 0.6};
+            onLBSelChanged = QUOTE(_this call FUNC(settingsMenuUpdateKeyView));
+        };
+        class labelTitle: ACE_gui_staticBase {
+            idc = 250;
+            x = X_PART(27.1);
+            y = Y_PART(5.1);
+            w = W_PART(11);
+            h = H_PART(1);
+            text = "";
+            SizeEx = H_PART(1);
+        };
+        class labelKey: ACE_gui_staticBase {  //Variable Name
+            idc = 300;
+            x = X_PART(27.1);
+            y = Y_PART(6.2);
+            w = W_PART(11);
+            h = H_PART(1);
+            text = "";
+            SizeEx = H_PART(0.65);
+        };
+        class Label2: labelKey {
+            idc = 301;
+            y = Y_PART(7.3);
+            text = "$STR_ACE_OptionsMenu_Setting";
+            SizeEx = H_PART(1);
+        };
+        class comboBox1: ACE_gui_comboBoxBase {
+            idc = 400;
+            x = X_PART(31.1);
+            y = Y_PART(7.3);
+            w = W_PART(7);
+            h = H_PART(1);
+            onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
+            SizeEx = H_PART(0.9);
+        };
+        class sliderBar1: RscXSliderH {
+            idc = 410;
+            x = X_PART(27.1);
+            y = Y_PART(7.3);
+            w = W_PART(11);
+            h = H_PART(0.75);
+            onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
+            color[] = {1,0,0,0.4};
+            colorActive[] = {1,0,0,1};
+        };
+        class sliderBar2: sliderBar1 {
+            idc = 411;
+            y = Y_PART(8.2);
+            color[] = {0,1,0,0.4};
+            colorActive[] = {0,1,0,1};
+        };
+        class sliderBar3: sliderBar1 {
+            idc = 412;
+            y = Y_PART(9.1);
+            color[] = {0,0,1,0.4};
+            colorActive[] = {0,0,1,1};
+        };
+        class sliderBar4: sliderBar1 {
+            idc = 413;
+            y = Y_PART(10);
+            color[] = {1,1,1,0.4};
+            colorActive[] = {1,1,1,1};
+        };
+        class labelDesc: ACE_gui_staticBase {
+            idc = 251;
+            x = X_PART(27.1);
+            y = Y_PART(11);
+            w = W_PART(11);
+            h = H_PART(11);
+            text = "";
+            style = ST_LEFT + ST_MULTI;
+            lineSpacing = 1;
+            SizeEx = H_PART(0.8);
+        };
+        class actionClose: ACE_gui_buttonBase {
+            idc = 10;
+            text = "$STR_DISP_CLOSE";
+            x = X_PART(1);
+            y = Y_PART(22.3);
+            w = W_PART(7.5);
+            h = H_PART(1);
+            style = ST_LEFT;
+            animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
+            animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
+            animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
+            animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
+            color[] = {1, 1, 1, 1};
+            color2[] = {0,0,0, 1};
+            colorBackgroundFocused[] = {1,1,1,1};
+            colorBackground[] = {1,1,1,1};
+            colorbackground2[] = {1,1,1,1};
+            colorDisabled[] = {0.5,0.5,0.5,0.8};
+            colorFocused[] = {0,0,0,1};
+            periodFocus = 1;
+            periodOver = 1;
+            action = "closedialog 0;";
+            SizeEx = H_PART(1);
+            Size = H_PART(1);
+        };
+        class action_reset: actionClose {
+            idc = 1100;
+            text = "$STR_ACE_OptionsMenu_ResetAll";
+            x = X_PART(9.5);
+            action = QUOTE([] call FUNC(resetSettings));
+        };
+        class action_exportServerConfig: actionClose {
+            idc = 1102;
+            text = "$STR_ACE_OptionsMenu_OpenExport";
+            x = X_PART(18);
+            action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; });
+        };
     };
-    class selectionAction_1: ACE_gui_buttonBase {
-      idc = 1000;
-      text = "$STR_ACE_OptionsMenu_TabOptions";
-      x = X_PART(1);
-      y = Y_PART(2.1);
-      w = W_PART(9.5);
-      h = H_PART(1);
-      animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
-      animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
-      animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
-      animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
-      color[] = {1, 1, 1, 1};
-      color2[] = {0,0,0, 1};
-      colorBackgroundFocused[] = {1,1,1,1};
-      colorBackground[] = {1,1,1,1};
-      colorbackground2[] = {1,1,1,1};
-      colorDisabled[] = {1,1,1,1};
-      colorFocused[] = {0,0,0,1};
-      periodFocus = 1;
-      periodOver = 1;
-      action = QUOTE([MENU_TAB_OPTIONS] call FUNC(onListBoxShowSelectionChanged););
-      SizeEx = H_PART(1);
-      Size = H_PART(1);
-    };
-    class selectionAction_2: selectionAction_1 {
-      idc = 1001;
-      text = "$STR_ACE_OptionsMenu_TabColors";
-      x = X_PART(10.5);
-      action = QUOTE([MENU_TAB_COLORS] call FUNC(onListBoxShowSelectionChanged););
-    };
-    class selectionAction_3: selectionAction_1 {
-      idc = 1002;
-      text = "";
-      x = X_PART(20);
-      action = "";
-    };
-    class selectionAction_4: selectionAction_1 {
-      idc = 1003;
-      text = "";
-      x = X_PART(29.5);
-      action = "";
-    };
-    class listBoxSettingsList: ACE_gui_listNBox {
-      idc = 200;
-      x = X_PART(2);
-      y = Y_PART(5.5);
-      w = W_PART(23);
-      h = H_PART(15);
-      SizeEx = H_ORIGINAL(0.8);
-      colorBackground[] = {0, 0, 0, 0.9};
-      colorSelectBackground[] = {0, 0, 0, 0.9};
-      columns[] = {0.0, 0.6};
-      onLBSelChanged = QUOTE(_this call FUNC(settingsMenuUpdateKeyView));
-    };
-    class labelTitle: ACE_gui_staticBase {
-      idc = 250;
-      x = X_PART(27.1);
-      y = Y_PART(5.1);
-      w = W_PART(11);
-      h = H_PART(1);
-      text = "";
-      SizeEx = H_PART(1);
-    };
-    class labelKey: ACE_gui_staticBase {  //Variable Name
-      idc = 300;
-      x = X_PART(27.1);
-      y = Y_PART(6.2);
-      w = W_PART(11);
-      h = H_PART(1);
-      text = "";
-      SizeEx = H_PART(0.65);
-    };
-    class Label2: labelKey {
-      idc = 301;
-      y = Y_PART(7.3);
-      text = "$STR_ACE_OptionsMenu_Setting";
-      SizeEx = H_PART(1);
-    };
-    class comboBox1: ACE_gui_comboBoxBase {
-      idc = 400;
-      x = X_PART(31.1);
-      y = Y_PART(7.3);
-      w = W_PART(7);
-      h = H_PART(1);
-      onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
-      SizeEx = H_PART(0.9);
-    };
-    class sliderBar1: RscXSliderH {
-      idc = 410;
-      x = X_PART(27.1);
-      y = Y_PART(7.3);
-      w = W_PART(11);
-      h = H_PART(0.75);
-      onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
-      color[] = {1,0,0,0.4};
-      colorActive[] = {1,0,0,1};
-    };
-    class sliderBar2: sliderBar1 {
-      idc = 411;
-      y = Y_PART(8.2);
-      color[] = {0,1,0,0.4};
-      colorActive[] = {0,1,0,1};
-    };
-    class sliderBar3: sliderBar1 {
-      idc = 412;
-      y = Y_PART(9.1);
-      color[] = {0,0,1,0.4};
-      colorActive[] = {0,0,1,1};
-    };
-    class sliderBar4: sliderBar1 {
-      idc = 413;
-      y = Y_PART(10);
-      color[] = {1,1,1,0.4};
-      colorActive[] = {1,1,1,1};
-    };
-    class labelDesc: ACE_gui_staticBase {
-      idc = 251;
-      x = X_PART(27.1);
-      y = Y_PART(11);
-      w = W_PART(11);
-      h = H_PART(11);
-      text = "";
-      style = ST_LEFT + ST_MULTI;
-      lineSpacing = 1;
-      SizeEx = H_PART(0.8);
-    };
-    class actionClose: ACE_gui_buttonBase {
-      idc = 10;
-      text = "$STR_DISP_CLOSE";
-      x = X_PART(1);
-      y = Y_PART(22.3);
-      w = W_PART(7.5);
-      h = H_PART(1);
-      style = ST_LEFT;
-      animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.8)";
-      animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.5)";
-      animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
-      animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
-      color[] = {1, 1, 1, 1};
-      color2[] = {0,0,0, 1};
-      colorBackgroundFocused[] = {1,1,1,1};
-      colorBackground[] = {1,1,1,1};
-      colorbackground2[] = {1,1,1,1};
-      colorDisabled[] = {0.5,0.5,0.5,0.8};
-      colorFocused[] = {0,0,0,1};
-      periodFocus = 1;
-      periodOver = 1;
-      action = "closedialog 0;";
-      SizeEx = H_PART(1);
-      Size = H_PART(1);
-    };
-    class action_reset: actionClose {
-      idc = 1100;
-      text = "$STR_ACE_OptionsMenu_ResetAll";
-      x = X_PART(9.5);
-      action = QUOTE([] call FUNC(resetSettings));
-    };
-    class action_exportServerConfig: actionClose {
-      idc = 1102;
-      text = "$STR_ACE_OptionsMenu_OpenExport";
-      x = X_PART(18);
-      action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; });
-    };
-  };
 };
 class ACE_serverSettingsMenu: ACE_settingsMenu {
     onLoad = QUOTE(uiNamespace setVariable [ARR_2('ACE_serverSettingsMenu', _this select 0)]; [] call FUNC(onServerSettingsMenuOpen););
     onUnload = QUOTE(uiNamespace setVariable [ARR_2('ACE_serverSettingsMenu', nil)];);
-  class controls: controls {
-    class HeaderName {
-      idc = 1;
-      type = CT_STATIC;
-      x = X_PART(1);
-      y = Y_PART(1);
-      w = W_PART(38);
-      h = H_PART(1);
-      style = ST_LEFT + ST_SHADOW;
-      font = "PuristaMedium";
-      SizeEx = H_PART(1);
-      colorText[] = {0.95, 0.95, 0.95, 0.75};
-      colorBackground[] = {0,0,0,0};
-      text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
+    class controls: controls {
+        class HeaderName {
+            idc = 1;
+            type = CT_STATIC;
+            x = X_PART(1);
+            y = Y_PART(1);
+            w = W_PART(38);
+            h = H_PART(1);
+            style = ST_LEFT + ST_SHADOW;
+            font = "PuristaMedium";
+            SizeEx = H_PART(1);
+            colorText[] = {0.95, 0.95, 0.95, 0.75};
+            colorBackground[] = {0,0,0,0};
+            text = "$STR_ACE_OptionsMenu_OpenConfigMenu";
+        };
+        class labelSubHeader: ACE_gui_staticBase {
+            idc = 13;
+            x = X_PART(2);
+            y = Y_PART(3.4);
+            w = W_PART(30);
+            h = H_PART(1);
+            text = "";
+        };
+        class selectionAction_1: ACE_gui_buttonBase {
+            idc = 1000;
+            text = "$STR_ACE_OptionsMenu_TabOptions";
+            x = X_PART(1);
+            y = Y_PART(2.1);
+            w = W_PART(9.5);
+            h = H_PART(1);
+            animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
+            animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
+            animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
+            animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
+            animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
+            color[] = {1, 1, 1, 1};
+            color2[] = {0,0,0, 1};
+            colorBackgroundFocused[] = {1,1,1,1};
+            colorBackground[] = {1,1,1,1};
+            colorbackground2[] = {1,1,1,1};
+            colorDisabled[] = {1,1,1,1};
+            colorFocused[] = {0,0,0,1};
+            periodFocus = 1;
+            periodOver = 1;
+            action = QUOTE([MENU_TAB_SERVER_OPTIONS] call FUNC(onServerListBoxShowSelectionChanged););
+        };
+        class selectionAction_2: selectionAction_1 {
+            idc = 1001;
+            text = "$STR_ACE_OptionsMenu_TabColors";
+            x = X_PART(10.5);
+            action = QUOTE([MENU_TAB_SERVER_COLORS] call FUNC(onServerListBoxShowSelectionChanged););
+        };
+        class selectionAction_3: selectionAction_1 {
+            idc = 1002;
+            text = "$STR_ACE_OptionsMenu_TabValues";
+            x = X_PART(20);
+            action = QUOTE([MENU_TAB_SERVER_VALUES] call FUNC(onServerListBoxShowSelectionChanged););
+        };
+        class selectionAction_4: selectionAction_1 {
+            idc = 1003;
+            text = "";
+            x = X_PART(29.5);
+            action = "";
+        };
+        class listBoxSettingsList: ACE_gui_listNBox {
+            idc = 200;
+            x = X_PART(2);
+            y = Y_PART(5.5);
+            w = W_PART(23);
+            h = H_PART(15);
+            SizeEx = H_ORIGINAL(0.8);
+            colorBackground[] = {0, 0, 0, 0.9};
+            colorSelectBackground[] = {0, 0, 0, 0.9};
+            columns[] = {0.0, 0.6};
+            onLBSelChanged = QUOTE(_this call FUNC(serverSettingsMenuUpdateKeyView));
+        };
+        class labelTitle: ACE_gui_staticBase {
+            idc = 250;
+            x = X_PART(27.1);
+            y = Y_PART(5.1);
+            w = W_PART(11);
+            h = H_PART(1);
+            text = "";
+            SizeEx = H_PART(1);
+        };
+        class labelKey: ACE_gui_staticBase {  //Variable Name
+            idc = 300;
+            x = X_PART(27.1);
+            y = Y_PART(6.2);
+            w = W_PART(11);
+            h = H_PART(1);
+            text = "";
+            SizeEx = H_PART(0.65);
+        };
+        class Label2: labelKey {
+            idc = 301;
+            y = Y_PART(7.3);
+            text = "$STR_ACE_OptionsMenu_Setting";
+            SizeEx = H_PART(1);
+        };
+        class comboBox1: ACE_gui_comboBoxBase {
+            idc = 400;
+            x = X_PART(31.1);
+            y = Y_PART(7.3);
+            w = W_PART(7);
+            h = H_PART(1);
+            onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
+            SizeEx = H_PART(0.9);
+        };
+        class sliderBar1: RscXSliderH {
+            idc = 410;
+            x = X_PART(27.1);
+            y = Y_PART(7.3);
+            w = W_PART(11);
+            h = H_PART(0.75);
+            onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
+            color[] = {1,0,0,0.4};
+            colorActive[] = {1,0,0,1};
+        };
+        class sliderBar2: sliderBar1 {
+            idc = 411;
+            y = Y_PART(8.2);
+            color[] = {0,1,0,0.4};
+            colorActive[] = {0,1,0,1};
+        };
+        class sliderBar3: sliderBar1 {
+            idc = 412;
+            y = Y_PART(9.1);
+            color[] = {0,0,1,0.4};
+            colorActive[] = {0,0,1,1};
+        };
+        class sliderBar4: sliderBar1 {
+            idc = 413;
+            y = Y_PART(10);
+            color[] = {1,1,1,0.4};
+            colorActive[] = {1,1,1,1};
+        };
+        class inputField1: ACE_gui_editBase {
+            idc = 414;
+            x = X_PART(27.1);
+            y = Y_PART(7.3);
+            w = W_PART(11);
+            h = H_PART(0.75);
+        };
+        class inputFieldTypeLabel: ACE_gui_staticBase {
+            idc = 415;
+            x = X_PART(27.1);
+            y = Y_PART(8.2);
+            w = W_PART(11);
+            h = H_PART(0.75);
+            text = "";
+            style = ST_LEFT + ST_MULTI;
+            lineSpacing = 1;
+            SizeEx = H_PART(0.8);
+        };
+        class saveInputButton: selectionAction_1 {
+            idc = 416;
+            text = "$STR_ACE_OptionsMenu_SaveInput";
+            x = X_PART(27.1);
+            y = Y_PART(9.1);
+            w = W_PART(11);
+            h = H_PART(1);
+            action = QUOTE([] call FUNC(onServerSaveInputField););
+        };
+        class labelDesc: ACE_gui_staticBase {
+            idc = 251;
+            x = X_PART(27.1);
+            y = Y_PART(11);
+            w = W_PART(11);
+            h = H_PART(11);
+            text = "";
+            style = ST_LEFT + ST_MULTI;
+            lineSpacing = 1;
+            SizeEx = H_PART(0.8);
+        };
+        class actionClose;
+        class action_reset: actionClose {
+            idc = 1100;
+            text = "$STR_ACE_OptionsMenu_ResetAll";
+            x = X_PART(26.1);
+            action = QUOTE([] call FUNC(serverResetSettings));
+        };
+        class action_exportServerConfig: actionClose {
+            idc = 1101;
+            text = "$STR_ACE_OptionsMenu_Export";
+            x = X_PART(1);
+            action = QUOTE([] call FUNC(exportSettings));
+        };
+        class action_toggleIncludeClientSettings: actionClose {
+            idc = 1102;
+            text = "$STR_ACE_OptionsMenu_inClientSettings";
+            x = X_PART(9);
+            action = QUOTE([] call FUNC(toggleIncludeClientSettings));
+        };
     };
-    class labelSubHeader: ACE_gui_staticBase {
-      idc = 13;
-      x = X_PART(2);
-      y = Y_PART(3.4);
-      w = W_PART(30);
-      h = H_PART(1);
-      text = "";
-    };
-    class selectionAction_1: ACE_gui_buttonBase {
-      idc = 1000;
-      text = "$STR_ACE_OptionsMenu_TabOptions";
-      x = X_PART(1);
-      y = Y_PART(2.1);
-      w = W_PART(9.5);
-      h = H_PART(1);
-      animTextureNormal = "#(argb,8,8,3)color(0,0,0,0.9)";
-      animTextureDisabled = "#(argb,8,8,3)color(0,0,0,0.8)";
-      animTextureOver = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureFocused = "#(argb,8,8,3)color(1,1,1,1)";
-      animTexturePressed = "#(argb,8,8,3)color(1,1,1,1)";
-      animTextureDefault = "#(argb,8,8,3)color(1,1,1,1)";
-      color[] = {1, 1, 1, 1};
-      color2[] = {0,0,0, 1};
-      colorBackgroundFocused[] = {1,1,1,1};
-      colorBackground[] = {1,1,1,1};
-      colorbackground2[] = {1,1,1,1};
-      colorDisabled[] = {1,1,1,1};
-      colorFocused[] = {0,0,0,1};
-      periodFocus = 1;
-      periodOver = 1;
-      action = QUOTE([MENU_TAB_SERVER_OPTIONS] call FUNC(onServerListBoxShowSelectionChanged););
-    };
-    class selectionAction_2: selectionAction_1 {
-      idc = 1001;
-      text = "$STR_ACE_OptionsMenu_TabColors";
-      x = X_PART(10.5);
-      action = QUOTE([MENU_TAB_SERVER_COLORS] call FUNC(onServerListBoxShowSelectionChanged););
-    };
-    class selectionAction_3: selectionAction_1 {
-      idc = 1002;
-      text = "$STR_ACE_OptionsMenu_TabValues";
-      x = X_PART(20);
-      action = QUOTE([MENU_TAB_SERVER_VALUES] call FUNC(onServerListBoxShowSelectionChanged););
-    };
-    class selectionAction_4: selectionAction_1 {
-      idc = 1003;
-      text = "";
-      x = X_PART(29.5);
-      action = "";
-    };
-    class listBoxSettingsList: ACE_gui_listNBox {
-      idc = 200;
-      x = X_PART(2);
-      y = Y_PART(5.5);
-      w = W_PART(23);
-      h = H_PART(15);
-      SizeEx = H_PART(0.8);
-      colorBackground[] = {0, 0, 0, 0.9};
-      colorSelectBackground[] = {0, 0, 0, 0.9};
-      columns[] = {0.0, 0.6};
-      onLBSelChanged = QUOTE(_this call FUNC(serverSettingsMenuUpdateKeyView));
-    };
-    class labelTitle: ACE_gui_staticBase {
-      idc = 250;
-      x = X_PART(27.1);
-      y = Y_PART(5.1);
-      w = W_PART(11);
-      h = H_PART(1);
-      text = "";
-      SizeEx = H_PART(1);
-    };
-    class labelKey: ACE_gui_staticBase {  //Variable Name
-      idc = 300;
-      x = X_PART(27.1);
-      y = Y_PART(6.2);
-      w = W_PART(11);
-      h = H_PART(1);
-      text = "";
-      SizeEx = H_PART(0.65);
-    };
-    class Label2: labelKey {
-      idc = 301;
-      y = Y_PART(7.3);
-      text = "$STR_ACE_OptionsMenu_Setting";
-      SizeEx = H_PART(1);
-    };
-    class comboBox1: ACE_gui_comboBoxBase {
-      idc = 400;
-      x = X_PART(31.1);
-      y = Y_PART(7.3);
-      w = W_PART(7);
-      h = H_PART(1);
-      onLBSelChanged = QUOTE( call FUNC(onListBoxSettingsChanged));
-      SizeEx = H_PART(0.9);
-    };
-    class sliderBar1: RscXSliderH {
-      idc = 410;
-      x = X_PART(27.1);
-      y = Y_PART(7.3);
-      w = W_PART(11);
-      h = H_PART(0.75);
-      onSliderPosChanged = QUOTE(_this call FUNC(onSliderPosChanged));
-      color[] = {1,0,0,0.4};
-      colorActive[] = {1,0,0,1};
-    };
-    class sliderBar2: sliderBar1 {
-      idc = 411;
-      y = Y_PART(8.2);
-      color[] = {0,1,0,0.4};
-      colorActive[] = {0,1,0,1};
-    };
-    class sliderBar3: sliderBar1 {
-      idc = 412;
-      y = Y_PART(9.1);
-      color[] = {0,0,1,0.4};
-      colorActive[] = {0,0,1,1};
-    };
-    class sliderBar4: sliderBar1 {
-      idc = 413;
-      y = Y_PART(10);
-      color[] = {1,1,1,0.4};
-      colorActive[] = {1,1,1,1};
-    };
-    class inputField1: ACE_gui_editBase {
-      idc = 414;
-      x = X_PART(27.1);
-      y = Y_PART(7.3);
-      w = W_PART(11);
-      h = H_PART(0.75);
-    };
-    class inputFieldTypeLabel: ACE_gui_staticBase {
-      idc = 415;
-      x = X_PART(27.1);
-      y = Y_PART(8.2);
-      w = W_PART(11);
-      h = H_PART(0.75);
-      text = "";
-      style = ST_LEFT + ST_MULTI;
-      lineSpacing = 1;
-      SizeEx = H_PART(0.8);
-    };
-    class saveInputButton: selectionAction_1 {
-      idc = 416;
-      text = "$STR_ACE_OptionsMenu_SaveInput";
-      x = X_PART(27.1);
-      y = Y_PART(9.1);
-      w = W_PART(11);
-      h = H_PART(1);
-      action = QUOTE([] call FUNC(onServerSaveInputField););
-    };
-    class labelDesc: ACE_gui_staticBase {
-      idc = 251;
-      x = X_PART(27.1);
-      y = Y_PART(11);
-      w = W_PART(11);
-      h = H_PART(11);
-      text = "";
-      style = ST_LEFT + ST_MULTI;
-      lineSpacing = 1;
-      SizeEx = H_PART(0.8);
-    };
-    class actionClose;
-    class action_reset: actionClose {
-      idc = 1100;
-      text = "$STR_ACE_OptionsMenu_ResetAll";
-      x = X_PART(26.1);
-      action = QUOTE([] call FUNC(serverResetSettings));
-    };
-    class action_exportServerConfig: actionClose {
-      idc = 1101;
-      text = "$STR_ACE_OptionsMenu_Export";
-      x = X_PART(1);
-      action = QUOTE([] call FUNC(exportSettings));
-    };
-    class action_toggleIncludeClientSettings: actionClose {
-      idc = 1102;
-      text = "$STR_ACE_OptionsMenu_inClientSettings";
-      x = X_PART(9);
-      action = QUOTE([] call FUNC(toggleIncludeClientSettings));
-    };
-  };
 };

From bdd34221507f8a3e8375935089da32153c3db8b0 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Thu, 16 Apr 2015 23:53:54 -0300
Subject: [PATCH 053/257] Allow to dynamically modify actions at runtime. An
 optional code entry called  modifierFunction can be added. That code is
 called before evaluating the action, allowing to dynamically change the
 actions name, icon, etc

---
 .../functions/fnc_collectActiveActionTree.sqf        |  7 +++++++
 addons/interact_menu/functions/fnc_compileMenu.sqf   |  6 ++++--
 .../functions/fnc_compileMenuSelfAction.sqf          |  6 ++++--
 addons/interact_menu/functions/fnc_createAction.sqf  | 12 ++++++++++--
 4 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf b/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf
index 582fe750a8..6abcebf47e 100644
--- a/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf
+++ b/addons/interact_menu/functions/fnc_collectActiveActionTree.sqf
@@ -22,6 +22,13 @@ private ["_target","_player","_fullPath","_activeChildren","_dynamicChildren","_
 _target = _object;
 _player = ACE_player;
 
+// Check if the function should be modified first
+if !((_origActionData select 10) isEqualTo {}) then {
+    // It should, so make a copy and pass it to the modifierFunction
+    _origActionData = +_origActionData;
+    [_target, ACE_player, _origActionData select 6, _origActionData] call (_origActionData select 10);
+};
+
 // Return nothing if the action itself is not active
 if !([_target, ACE_player, _origActionData select 6] call (_origActionData select 4)) exitWith {
     []
diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf
index baf8e1c272..7983c493e1 100644
--- a/addons/interact_menu/functions/fnc_compileMenu.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenu.sqf
@@ -27,7 +27,7 @@ if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {};
 private "_recurseFnc";
 _recurseFnc = {
     private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled",
-            "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren"];
+            "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren", "_modifierFunction"];
     EXPLODE_1_PVT(_this,_actionsCfg);
     _actions = [];
 
@@ -56,6 +56,7 @@ _recurseFnc = {
             _condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
 
             _insertChildren = compile (getText (_entryCfg >> "insertChildren"));
+            _modifierFunction = compile (getText (_entryCfg >> "modifierFunction"));
 
             _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
             _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
@@ -76,7 +77,8 @@ _recurseFnc = {
                             [],
                             _selection,
                             _distance,
-                            [_showDisabled,_enableInside,_canCollapse,_runOnHover]
+                            [_showDisabled,_enableInside,_canCollapse,_runOnHover],
+                            _modifierFunction
                         ],
                         _children
                     ];
diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
index 968b143701..0258b3dc8a 100644
--- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
@@ -27,7 +27,7 @@ if !(isNil {missionNamespace getVariable [_actionsVarName, nil]}) exitWith {};
 private "_recurseFnc";
 _recurseFnc = {
     private ["_actions", "_displayName", "_distance", "_icon", "_statement", "_selection", "_condition", "_showDisabled",
-            "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren"];
+            "_enableInside", "_canCollapse", "_runOnHover", "_children", "_entry", "_entryCfg", "_insertChildren", "_modifierFunction"];
     EXPLODE_1_PVT(_this,_actionsCfg);
     _actions = [];
 
@@ -46,6 +46,7 @@ _recurseFnc = {
             _condition = _condition + format [QUOTE( && {[ARR_3(ACE_player, _target, %1)] call EFUNC(common,canInteractWith)} ), getArray (_entryCfg >> "exceptions")];
 
             _insertChildren = compile (getText (_entryCfg >> "insertChildren"));
+            _modifierFunction = compile (getText (_entryCfg >> "modifierFunction"));
 
             _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
             _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
@@ -66,7 +67,8 @@ _recurseFnc = {
                             [],
                             [0,0,0],
                             10, //distace
-                            [_showDisabled,_enableInside,_canCollapse,_runOnHover]
+                            [_showDisabled,_enableInside,_canCollapse,_runOnHover],
+                            _modifierFunction
                         ],
                         _children
                     ];
diff --git a/addons/interact_menu/functions/fnc_createAction.sqf b/addons/interact_menu/functions/fnc_createAction.sqf
index 0b0030a1b4..fb3f05b7b5 100644
--- a/addons/interact_menu/functions/fnc_createAction.sqf
+++ b/addons/interact_menu/functions/fnc_createAction.sqf
@@ -14,6 +14,7 @@
  * 7: Position (Position or Selection Name) <POSITION> or <STRING> (Optional)
  * 8: Distance <NUMBER> (Optional)
  * 9: Other parameters <ARRAY> (Optional)
+ * 10: Modifier function <CODE> (Optional)
  *
  * Return value:
  * Action <ARRAY>
@@ -27,7 +28,7 @@
 
 EXPLODE_5_PVT(_this,_actionName,_displayName,_icon,_statement,_condition);
 
-private ["_insertChildren","_customParams","_position","_distance","_params"];
+private ["_insertChildren","_customParams","_position","_distance","_params", "_modifierFunction"];
 
 _insertChildren = if (count _this > 5) then {
     _this select 5
@@ -59,6 +60,12 @@ _params = if (count _this > 9) then {
     [false,false,false,false]
 };
 
+_modifierFunction =  if (count _this > 10) then {
+    _this select 10
+} else {
+    {}
+};
+
 [
     _actionName,
     _displayName,
@@ -70,5 +77,6 @@ _params = if (count _this > 9) then {
     _customParams,
     _position,
     _distance,
-    _params
+    _params,
+    _modifierFunction
 ]

From 7d5a70246b6f352d9a25e1e69927bfa8d7484f68 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Thu, 16 Apr 2015 22:10:33 -0500
Subject: [PATCH 054/257] Remove unnecessary cfgSounds

---
 addons/logistics_wirecutter/CfgSounds.hpp | 7 -------
 addons/logistics_wirecutter/config.cpp    | 1 -
 2 files changed, 8 deletions(-)
 delete mode 100644 addons/logistics_wirecutter/CfgSounds.hpp

diff --git a/addons/logistics_wirecutter/CfgSounds.hpp b/addons/logistics_wirecutter/CfgSounds.hpp
deleted file mode 100644
index aa5f3464f6..0000000000
--- a/addons/logistics_wirecutter/CfgSounds.hpp
+++ /dev/null
@@ -1,7 +0,0 @@
-class CfgSounds {
-    class ACE_Wirecutter_sound {
-        name = "ACE_wirecutter_sound";
-        sound[] = {QUOTE(PATHTOF(sound\wirecut.ogg)), "db-0", 1};
-        titles[] = {};
-    };
-};
diff --git a/addons/logistics_wirecutter/config.cpp b/addons/logistics_wirecutter/config.cpp
index 89fbd1c10f..d83cff4035 100644
--- a/addons/logistics_wirecutter/config.cpp
+++ b/addons/logistics_wirecutter/config.cpp
@@ -13,6 +13,5 @@ class CfgPatches {
 };
 
 #include "CfgEventHandlers.hpp"
-#include "CfgSounds.hpp"
 #include "CfgWeapons.hpp"
 #include "CfgVehicles.hpp"

From 54daa02aa4dbd216d497eeba5d8955024eeeaa36 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Fri, 17 Apr 2015 01:44:38 -0300
Subject: [PATCH 055/257] Weather: headers + privates

---
 addons/weather/XEH_postInit.sqf                   |  2 ++
 addons/weather/functions/fnc_displayWindInfo.sqf  |  7 +++----
 addons/weather/functions/fnc_getMapData.sqf       |  1 -
 addons/weather/functions/fnc_getWind.sqf          | 11 +++++++++++
 addons/weather/functions/fnc_serverController.sqf | 11 +++++++++++
 5 files changed, 27 insertions(+), 5 deletions(-)

diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf
index 75e1277fee..9276e710da 100644
--- a/addons/weather/XEH_postInit.sqf
+++ b/addons/weather/XEH_postInit.sqf
@@ -39,6 +39,7 @@ _fnc_updateWind = {
 
 // Update Rain
 _fnc_updateRain = {
+    private ["_oldStrength","_rainStrength","_transitionTime","_periodPosition","_periodPercent"];
     if(GVAR(enableRain)) then {
         if(!isNil "ACE_RAIN_PARAMS" && {!isNil QGVAR(rain_period_start_time)}) then {
             _oldStrength = ACE_RAIN_PARAMS select 0;
@@ -56,6 +57,7 @@ _fnc_updateRain = {
 
 // Update Temperature
 _fnc_updateTemperature = {
+    private ["_time","_month","_hourlyCoef","_avgTemperature","_pS1","_pS2"];
     _time = daytime;
     _month = date select 1;
 
diff --git a/addons/weather/functions/fnc_displayWindInfo.sqf b/addons/weather/functions/fnc_displayWindInfo.sqf
index 61d556a27c..d84cddd106 100644
--- a/addons/weather/functions/fnc_displayWindInfo.sqf
+++ b/addons/weather/functions/fnc_displayWindInfo.sqf
@@ -1,6 +1,5 @@
 /*
  * Author: Ruthberg
- *
  * Displays a wind info (colored arrow) in the top left corner of the screen
  *
  * Argument:
@@ -29,13 +28,13 @@ GVAR(WindInfo) = true;
 
 [{
     private ["_windSpeed", "_windDir", "_playerDir", "_windIndex", "_windColor", "_newWindSpeed", "_windSource", "_height"];
-    
+
     if !(GVAR(WindInfo) && !(underwater ACE_player) && vehicle ACE_player == ACE_player) exitWith {
         GVAR(WindInfo) = false;
         0 cutText ["", "PLAIN"];
         [_this select 1] call cba_fnc_removePerFrameHandler;
     };
-    
+
     _windIndex = 12;
     _windColor = [1, 1, 1, 1];
 
@@ -46,7 +45,7 @@ GVAR(WindInfo) = true;
     } else {
         vectorMagnitude ACE_wind;
     };
-    
+
     if (_windSpeed > 0.2) then {
         _playerDir = getDir ACE_player;
         _windDir = (ACE_wind select 0) atan2 (ACE_wind select 1);
diff --git a/addons/weather/functions/fnc_getMapData.sqf b/addons/weather/functions/fnc_getMapData.sqf
index 86a05fb225..fecf9f34f7 100644
--- a/addons/weather/functions/fnc_getMapData.sqf
+++ b/addons/weather/functions/fnc_getMapData.sqf
@@ -1,6 +1,5 @@
 /*
  * Author: Ruthberg, esteldunedain
- *
  * Get the weather data for the current map
  *
  * Argument:
diff --git a/addons/weather/functions/fnc_getWind.sqf b/addons/weather/functions/fnc_getWind.sqf
index e25d53309d..b0fbf5e8fa 100644
--- a/addons/weather/functions/fnc_getWind.sqf
+++ b/addons/weather/functions/fnc_getWind.sqf
@@ -1,4 +1,15 @@
+/*
+ * Author: ACE2 Team
+ * Calculate current wind locally from the data broadcasted by the server
+ *
+ * Argument:
+ * None
+ *
+ * Return value:
+ * Wind <ARRAY>
+ */
 #include "script_component.hpp"
+private ["_dir","_dirInc","_dirRange","_period","_periodPercent","_periodPosition","_return","_spd","_spdInc","_spdRange"];
 
 _return = [0,0,0];
 if(!isNil "ACE_WIND_PARAMS") then {
diff --git a/addons/weather/functions/fnc_serverController.sqf b/addons/weather/functions/fnc_serverController.sqf
index 7646475e81..e29836fc18 100644
--- a/addons/weather/functions/fnc_serverController.sqf
+++ b/addons/weather/functions/fnc_serverController.sqf
@@ -1,4 +1,15 @@
+/*
+ * Author: ACE2 Team, esteldunedain
+ * Calculate the wind and rain evolution on the server. Broadcast the current and next values to the clients
+ *
+ * Argument:
+ * None
+ *
+ * Return value:
+ * None
+ */
 #include "script_component.hpp"
+private ["_gustCount","_gustDir","_gustSpeed","_gustTime","_gusts","_i","_lastRain","_maxInterval","_rainOverCast","_startDir","_startSpeed","_time","_timeTillGust","_transitionTime"];
 
 // Rain simulation
 if(GVAR(rain_period_count) > GVAR(rain_next_period)) then {

From e38a6fc62bed074ec3ec399d327adfc9b5bf884a Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 12:01:01 +0300
Subject: [PATCH 056/257] one more russian fix

---
 addons/captives/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 5683eaf0d3..f609aabd93 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -95,7 +95,7 @@
             <Portuguese>Algema Plástica</Portuguese>
             <Italian>Fascietta</Italian>
             <Hungarian>Gyorskötöző</Hungarian>
-            <Russian>Пластиковые наручники</Russian>
+            <Russian>Кабельная стяжка</Russian>
         </Key>
         <Key ID="STR_ACE_Captives_CableTieDescription">
             <English>Cable ties that allow you to restrain prisoners.</English>
@@ -107,7 +107,7 @@
             <Portuguese>A algema plástica permite que você contenha prisioneiros.</Portuguese>
             <Italian>Fascietta che ti consente di arrestare i prigionieri.</Italian>
             <Hungarian>Gyorskötöző, emberek foglyulejtéséhez használható.</Hungarian>
-            <Russian>Пластиковые наручники позволяют связывать пленников.</Russian>
+            <Russian>Кабельные стяжки позволяют связывать пленников.</Russian>
         </Key>
         <Key ID="STR_ACE_Captives_FriskMenuHeader">
             <English>Inventory of frisked person</English>

From 20565e8b026a89789721feb49bad1f4bf0457ce5 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Fri, 17 Apr 2015 11:02:01 +0200
Subject: [PATCH 057/257] hide height / velocity while parachuting, freefallig
 in expert mode, fix 692

---
 addons/parachute/XEH_postInit.sqf             |  3 +-
 addons/parachute/XEH_preInit.sqf              |  1 +
 .../fnc_handleInfoDisplayChanged.sqf          | 41 +++++++++++++++++++
 3 files changed, 43 insertions(+), 2 deletions(-)
 create mode 100644 addons/parachute/functions/fnc_handleInfoDisplayChanged.sqf

diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf
index ead4b33943..2b449d9674 100644
--- a/addons/parachute/XEH_postInit.sqf
+++ b/addons/parachute/XEH_postInit.sqf
@@ -40,5 +40,4 @@ GVAR(PFH) = false;
 }] call EFUNC(common,addEventHandler);
 
 // don't show speed and height when in expert mode
-["Parachute", {if (!cadetMode) then {_dlg = _this select 0; {(_dlg displayCtrl _x) ctrlShow false} forEach [121, 122, 1004, 1005, 1006, 1014];};}] call EFUNC(common,addInfoDisplayEventHandler);  //@todo addEventHandler infoDisplayChanged with select 1 == "Parachute"
-["Soldier", {if (!cadetMode) then {_dlg = _this select 0; {_ctrl = (_dlg displayCtrl _x); _ctrl ctrlSetPosition [0,0,0,0]; _ctrl ctrlCommit 0;} forEach [380, 382]};}] call EFUNC(common,addInfoDisplayEventHandler);  //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier"
+["infoDisplayChanged", {_this call FUNC(handleInfoDisplayChanged)}] call EFUNC(common,addEventHandler);
diff --git a/addons/parachute/XEH_preInit.sqf b/addons/parachute/XEH_preInit.sqf
index 91c24606c6..f446d955b8 100644
--- a/addons/parachute/XEH_preInit.sqf
+++ b/addons/parachute/XEH_preInit.sqf
@@ -18,6 +18,7 @@
 ADDON = false;
 
 PREP(doLanding);
+PREP(handleInfoDisplayChanged);
 PREP(hideAltimeter);
 PREP(onEachFrame);
 PREP(showAltimeter);
diff --git a/addons/parachute/functions/fnc_handleInfoDisplayChanged.sqf b/addons/parachute/functions/fnc_handleInfoDisplayChanged.sqf
new file mode 100644
index 0000000000..9b076256dd
--- /dev/null
+++ b/addons/parachute/functions/fnc_handleInfoDisplayChanged.sqf
@@ -0,0 +1,41 @@
+/*
+ * Author: commy2
+ * Hides the height and velocity display while freefalling or parachuting on higher difficulties.
+ *
+ * Arguments:
+ * Stuff from infoDisplayChanged eventhandler.
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+private ["_dialog", "_type"];
+
+_dialog = _this select 0;
+_type = _this select 1;
+
+// don't do anything in noob mode
+if (cadetMode) exitWith {};
+
+switch (_type) do {
+    case ("Parachute"): {
+        {
+            (_dialog displayCtrl _x) ctrlShow false;
+        } forEach [121, 122, 1004, 1005, 1006, 1014];
+    };
+
+    case ("Soldier"): {
+        {
+            private "_control";
+            _control = (_dialog displayCtrl _x);
+
+            // these reset ctrlShow every frame by the engine. Set height/width to 0 as work around.
+            _control ctrlSetPosition [0,0,0,0];
+            _control ctrlCommit 0;
+        } forEach [380, 382];
+    };
+};
+nil // switch might return true if no case was found. Just to make sure the return value matches

From e04a0c438aa8441e4a01e958a2505c8135cfb7f5 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Fri, 17 Apr 2015 11:05:24 +0200
Subject: [PATCH 058/257] Fixed deprecated delete_gun function

---
 addons/atragmx/functions/fnc_delete_gun.sqf | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/addons/atragmx/functions/fnc_delete_gun.sqf b/addons/atragmx/functions/fnc_delete_gun.sqf
index d16e1f84a0..be230da59a 100644
--- a/addons/atragmx/functions/fnc_delete_gun.sqf
+++ b/addons/atragmx/functions/fnc_delete_gun.sqf
@@ -20,10 +20,8 @@ _index = lbCurSel 6000;
 
 if (_index == -1) exitWith {};
 
-for "_i" from 0 to (count GVAR(currentGun)) - 1 do {
-    if ((GVAR(currentGun) select _i) > _index) then {
-        GVAR(currentGun) set [_i, (GVAR(currentGun) select _i) - 1];
-    };
+if (GVAR(currentGun) > _index) then {
+    GVAR(currentGun) = GVAR(currentGun) - 1;
 };
 
 GVAR(gunList) set [_index, 0];

From 8813315f365d42081d50b79724105d1a6df60c6f Mon Sep 17 00:00:00 2001
From: nomisum <nomisum@googlemail.com>
Date: Fri, 17 Apr 2015 11:40:31 +0200
Subject: [PATCH 059/257] added missing translations german

---
 addons/advanced_ballistics/stringtable.xml |  4 +++-
 addons/atragmx/stringtable.xml             |  5 ++++-
 addons/interact_menu/stringtable.xml       |  3 ++-
 addons/kestrel4500/stringtable.xml         |  8 +++++++-
 addons/overheating/stringtable.xml         |  3 ++-
 addons/scopes/stringtable.xml              | 11 ++++++++++-
 addons/weather/stringtable.xml             |  3 ++-
 7 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index 6890937a45..103256a722 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -9,6 +9,7 @@
             <Russian>Показать информацию о ветре</Russian>
             <French>Afficher les info du vent</French>
             <Spanish>Mostrar información del viento</Spanish>
+            <German>Windinformation anzeigen</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
             <English>Show Protractor</English>
@@ -17,6 +18,7 @@
             <Russian>Показать транспортир</Russian>
             <French>Afficher le rapporteur</French>
             <Spanish>Mostrar transportador</Spanish>
+            <German>Winkelmesser anzeigen</German>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml
index 1baa4fb38c..245e5d5f1c 100644
--- a/addons/atragmx/stringtable.xml
+++ b/addons/atragmx/stringtable.xml
@@ -19,18 +19,21 @@
             <Polish>Otwórz ATragMX</Polish>
             <Russian>Открыть ATragMX</Russian>
             <Spanish>Abrir ATragMX</Spanish>
+            <German>ATragMX öffnen</German>
         </Key>
         <Key ID="STR_ACE_ATragMX_Description">
             <English>Rugged PDA with ATragMX</English>
             <Polish>Przenośny PDA z kalkulatorem balistycznym ATragMX</Polish>
             <Russian>Защищенный КПК с ATragMX</Russian>
             <Spanish>PDA rugerizada con ATragMX</Spanish>
+            <German>Robuster PDA mit ATragMX</German>
         </Key>
         <Key ID="STR_ACE_ATragMX_ATragMXDialogKey">
             <English>Open ATragMX</English>
             <Polish>Otwórz ATragMX</Polish>
             <Russian>Открыть ATragMX</Russian>
             <Spanish>Abrir ATragMX</Spanish>
+            <German>ATragMX öffnen</German>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml
index 98cac6116a..a926c98063 100644
--- a/addons/interact_menu/stringtable.xml
+++ b/addons/interact_menu/stringtable.xml
@@ -19,6 +19,7 @@
             <French>Afficher le menu d'interaction au format liste</French>
             <Italian>Mostra il menù di interazione come lista</Italian>
             <Polish>Wyświetlaj menu interakcji jako listę</Polish>
+            <German>Interaktionsmenü in Listen anzeigen</German>
         </Key>
         <Key ID="STR_ACE_Interact_Menu_InteractKey">
             <English>Interact Key</English>
@@ -65,4 +66,4 @@
             <Italian>Interazioni con veicoli</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/kestrel4500/stringtable.xml b/addons/kestrel4500/stringtable.xml
index 4757159ff5..2703e34e9f 100644
--- a/addons/kestrel4500/stringtable.xml
+++ b/addons/kestrel4500/stringtable.xml
@@ -19,6 +19,7 @@
             <Russian>Карманная метеостанция Kestrel 4500NV</Russian>
             <French>Station météo portable Kestrel 4500</French>
             <Spanish>Kestrel 4500 Pocket Weather Tracker</Spanish>
+            <German>Kestrel 4500 Taschenwettermessgerät</German>
         </Key>
         <Key ID="STR_ACE_Kestrel4500_OpenKestrel">
             <English>Open Kestrel 4500</English>
@@ -28,6 +29,7 @@
             <French>Ouvrir Kestrel 4500</French>
             <Italian>Accendi Kestrel 4500</Italian>
             <Spanish>Abrir Kestrel 4500</Spanish>
+            <German>Kestrel 4500 öffnen</German>
         </Key>
         <Key ID="STR_ACE_Kestrel4500_ShowKestrel">
             <English>Show Kestrel 4500</English>
@@ -36,6 +38,7 @@
             <French>Afficher Kestrel 4500</French>
             <Italian>Mostra Kestrel 4500</Italian>
             <Spanish>Mostrar Kestrel 4500</Spanish>
+            <German>Kestrel 4500 anzeigen</German>
         </Key>
         <Key ID="STR_ACE_Kestrel4500_HideKestrel">
             <English>Hide Kestrel 4500</English>
@@ -44,6 +47,7 @@
             <French>Cacher Kestrel 4500</French>
             <Italian>Nascondi Kestrel 4500</Italian>
             <Spanish>Esconder Kestrel 4500</Spanish>
+            <German>Kestrel 4500 wegstecken</German>
         </Key>
         <Key ID="STR_ACE_Kestrel4500_KestrelDialogKey">
             <English>Open Kestrel 4500</English>
@@ -52,6 +56,7 @@
             <French>Ouvrir Kestrel 4500</French>
             <Italian>Accendi Kestrel 4500</Italian>
             <Spanish>Abrir Kestrel 4500</Spanish>
+            <German>Kestrel 4500 öffnen</German>
         </Key>
         <Key ID="STR_ACE_Kestrel4500_DisplayKestrelKey">
             <English>Show Kestrel 4500</English>
@@ -60,6 +65,7 @@
             <French>Afficher Kestrel 4500</French>
             <Italian>Mostra Kestrel 4500</Italian>
             <Spanish>Mostrar Kestrel 4500</Spanish>
+            <German>Kestrel 4500 anzeigen</German>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/overheating/stringtable.xml b/addons/overheating/stringtable.xml
index 4bb91688fa..89993dee62 100644
--- a/addons/overheating/stringtable.xml
+++ b/addons/overheating/stringtable.xml
@@ -137,6 +137,7 @@
             <French>Vérifier la température</French>
             <Hungarian>Fegyverhő ellenőrzése</Hungarian>
             <Russian>Проверить температуру оружия</Russian>
+            <German>Waffentemperatur prüfen</German>
         </Key>
         <Key ID="STR_ACE_Overheating_CheckingTemperature">
             <English>Checking temperature ...</English>
@@ -163,4 +164,4 @@
             <Russian>Температура</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml
index 4a06a779b5..a47f480bb8 100644
--- a/addons/scopes/stringtable.xml
+++ b/addons/scopes/stringtable.xml
@@ -6,54 +6,63 @@
             <Polish>Zerowanie powoli w górę</Polish>
             <Russian>Малая корректировка ВВЕРХ</Russian>
             <Spanish>Ajuste menor arriba</Spanish>
+            <German>Kleine Korrektur nach oben</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMinor">
             <English>Minor adjustment down</English>
             <Polish>Zerowanie powoli w dół</Polish>
             <Russian>Малая корректировка ВНИЗ</Russian>
             <Spanish>Ajuste menor abajo</Spanish>
+            <German>Kleine Korrektur nach unten</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMinor">
             <English>Minor adjustment right</English>
             <Polish>Zerowanie powoli w prawo</Polish>
             <Russian>Малая корректировка ВПРАВО</Russian>
             <Spanish>Ajuste menor derecha</Spanish>
+            <German>Kleine Korrektur nach rechts</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMinor">
             <English>Minor adjustment left</English>
             <Polish>Zerowanie powoli w lewo</Polish>
             <Russian>Малая корректировка ВЛЕВО</Russian>
             <Spanish>Ajuste menor izquierda</Spanish>
+            <German>Kleine Korrektur nach links</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustUpMajor">
             <English>Major adjustment up</English>
             <Polish>Zerowanie w górę</Polish>
             <Russian>Большая корректировка ВВЕРХ</Russian>
             <Spanish>Ajuste mayor arriba</Spanish>
+            <German>Große Korrektur nach oben</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMajor">
             <English>Major adjustment down</English>
             <Polish>Zerowanie w dół</Polish>
             <Russian>Большая корректировка ВНИЗ</Russian>
             <Spanish>Ajuste mayor abajo</Spanish>
+            <German>Große Korrektur nach unten</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMajor">
             <English>Major adjustment right</English>
             <Polish>Zerowanie w prawo</Polish>
             <Russian>Большая корректировка ВПРАВО</Russian>
             <Spanish>Ajuste mayor derecha</Spanish>
+            <German>Große Korrektur nach rechts</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMajor">
             <English>Major adjustment left</English>
             <Polish>Zerowanie w lewo</Polish>
             <Russian>Большая корректировка ВЛЕВО</Russian>
             <Spanish>Ajuste mayor izquierda</Spanish>
+            <German>Große Korrektur nach links</German>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustZero">
             <English>Set zero adjustment</English>
             <Polish>Zresetuj wyzerowanie</Polish>
             <Russian>Сбросить корректировку</Russian>
             <Spanish>Establecer ajuste a cero</Spanish>
+            <German>Auf 0 justieren</German>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml
index 060d9b6f51..e3cbaa02d4 100644
--- a/addons/weather/stringtable.xml
+++ b/addons/weather/stringtable.xml
@@ -7,6 +7,7 @@
             <Russian>Показать информацию о погоде</Russian>
             <French>Afficher information du vent</French>
             <Spanish>Mostrar información del viento</Spanish>
+            <German>Zeige Windinformationen</German>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From d865e9c038641e7bfb48e0c9729395f64e67a7c1 Mon Sep 17 00:00:00 2001
From: nomisum <nomisum@googlemail.com>
Date: Fri, 17 Apr 2015 11:42:47 +0200
Subject: [PATCH 060/257] fixed typo

---
 addons/advanced_ballistics/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index 103256a722..f92375986e 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -9,7 +9,7 @@
             <Russian>Показать информацию о ветре</Russian>
             <French>Afficher les info du vent</French>
             <Spanish>Mostrar información del viento</Spanish>
-            <German>Windinformation anzeigen</German>
+            <German>Windinformationen anzeigen</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
             <English>Show Protractor</English>

From 45d639b395c5c843ced5babaaf3b3ee2414a2ad0 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Fri, 17 Apr 2015 12:28:06 +0200
Subject: [PATCH 061/257] disposable cleanup, fix #696

---
 addons/disposable/CfgEventHandlers.hpp   | 26 +++++-------------------
 addons/disposable/CfgMagazines.hpp       |  1 +
 addons/disposable/XEH_postInit.sqf       | 10 +++++++++
 addons/disposable/XEH_postInitClient.sqf | 10 ---------
 4 files changed, 16 insertions(+), 31 deletions(-)
 create mode 100644 addons/disposable/XEH_postInit.sqf
 delete mode 100644 addons/disposable/XEH_postInitClient.sqf

diff --git a/addons/disposable/CfgEventHandlers.hpp b/addons/disposable/CfgEventHandlers.hpp
index 02d0cb625f..4b5614f553 100644
--- a/addons/disposable/CfgEventHandlers.hpp
+++ b/addons/disposable/CfgEventHandlers.hpp
@@ -1,44 +1,28 @@
 class Extended_PreInit_EventHandlers {
     class ADDON {
-        init = QUOTE( call COMPILE_FILE(XEH_preInit) );
+        init = QUOTE(call COMPILE_FILE(XEH_preInit));
     };
 };
 
 class Extended_PostInit_EventHandlers {
     class ADDON {
-        clientInit = QUOTE( call COMPILE_FILE(XEH_postInitClient) );
+        init = QUOTE(call COMPILE_FILE(XEH_postInit));
     };
 };
 
 class Extended_FiredBIS_EventHandlers {
     class CAManBase {
         class ADDON {
-            firedBIS = QUOTE( _this call FUNC(replaceATWeapon) );
+            firedBIS = QUOTE(_this call FUNC(replaceATWeapon));
         };
     };
 };
 
 // handle preloaded missile
-class Extended_Init_EventHandlers {
+class Extended_InitPost_EventHandlers {
     class CAManBase {
         class ADDON {
-            init = QUOTE( _this call FUNC(takeLoadedATWeapon) );
-        };
-    };
-};
-
-class Extended_Take_EventHandlers {
-    class CAManBase {
-        class ADDON {
-            take = QUOTE( _this call FUNC(takeLoadedATWeapon);  [_this select 0] call FUNC(updateInventoryDisplay); );
-        };
-    };
-};
-
-class Extended_Put_EventHandlers {
-    class CAManBase {
-        class ADDON {
-            put = QUOTE( [_this select 0] call FUNC(updateInventoryDisplay); );
+            init = QUOTE([ARR_2(_this select 0, secondaryWeapon (_this select 0))] call FUNC(takeLoadedATWeapon); systemChat str [ARR_2(_this select 0, secondaryWeapon (_this select 0))]);
         };
     };
 };
diff --git a/addons/disposable/CfgMagazines.hpp b/addons/disposable/CfgMagazines.hpp
index 8fbae08dfd..6265c06f50 100644
--- a/addons/disposable/CfgMagazines.hpp
+++ b/addons/disposable/CfgMagazines.hpp
@@ -3,6 +3,7 @@ class CfgMagazines {
     class ACE_PreloadedMissileDummy: NLAW_F {              // The dummy magazine
         author = "$STR_ACE_Common_ACETeam";
         scope = 1;
+        scopeArsenal = 1;
         displayName = "$STR_ACE_Disposable_PreloadedMissileDummy";
         picture = PATHTOEF(common,UI\blank_CO.paa);
         weaponPoolAvailable = 0;
diff --git a/addons/disposable/XEH_postInit.sqf b/addons/disposable/XEH_postInit.sqf
new file mode 100644
index 0000000000..bc51974bc6
--- /dev/null
+++ b/addons/disposable/XEH_postInit.sqf
@@ -0,0 +1,10 @@
+// by commy2
+#include "script_component.hpp"
+
+if (!hasInterface) exitWith {};
+
+["inventoryDisplayLoaded", {[ACE_player, _this select 0] call FUNC(updateInventoryDisplay)}] call EFUNC(common,addEventHandler);
+["playerInventoryChanged", {
+    [_this select 0, _this select 1 select 11] call FUNC(takeLoadedATWeapon);
+    [_this select 0] call FUNC(updateInventoryDisplay);
+}] call EFUNC(common,addEventHandler);
diff --git a/addons/disposable/XEH_postInitClient.sqf b/addons/disposable/XEH_postInitClient.sqf
deleted file mode 100644
index c20dfa886b..0000000000
--- a/addons/disposable/XEH_postInitClient.sqf
+++ /dev/null
@@ -1,10 +0,0 @@
-// by commy2
-
-// The Arma InventoryOpened EH fires actually before the inventory dialog is opened (findDisplay 602 => displayNull).
-
-#include "script_component.hpp"
-
-["inventoryDisplayLoaded",{
-    [ACE_player] call FUNC(takeLoadedATWeapon);
-    [ACE_player, (_this select 0)] call FUNC(updateInventoryDisplay);
-}] call EFUNC(common,addEventHandler);
\ No newline at end of file

From 26944ea84e8eb07d81c9558cf110604e5d89edc7 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Fri, 17 Apr 2015 13:01:38 +0200
Subject: [PATCH 062/257] make altimeter actually usable with parachutes

---
 addons/parachute/XEH_postInit.sqf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/addons/parachute/XEH_postInit.sqf b/addons/parachute/XEH_postInit.sqf
index 2b449d9674..19e6d413a2 100644
--- a/addons/parachute/XEH_postInit.sqf
+++ b/addons/parachute/XEH_postInit.sqf
@@ -14,12 +14,13 @@
  * Public: No
  */
 #include "script_component.hpp"
+
 if (!hasInterface) exitWith {};
 
 ["ACE3", QGVAR(showAltimeter), localize "STR_ACE_Parachute_showAltimeter",
 {
     // Conditions: canInteract
-    if !([ACE_player, objNull, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
+    if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
     if (!('ACE_Altimeter' in assignedItems ace_player)) exitWith {false};
     if (!(missionNamespace getVariable [QGVAR(AltimeterActive), false])) then {
         [ace_player] call FUNC(showAltimeter);

From c2214efeb1c8175be8e37a8a55cd5bd9732ffacb Mon Sep 17 00:00:00 2001
From: EpMAK <epmak777@gmail.com>
Date: Fri, 17 Apr 2015 14:54:28 +0300
Subject: [PATCH 063/257] Russian stringtables finished

Filled all the missing lines, little errors fixed.
---
 addons/respawn/stringtable.xml      | 6 ++++++
 addons/vehiclelock/stringtable.xml  | 6 +++---
 addons/weaponselect/stringtable.xml | 4 ++--
 3 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index 409a149f83..dceeb687fe 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -45,31 +45,37 @@
             <English>Rallypoint West (Base)</English>
             <German>Sammelpunkt West (Basis)</German>
             <Spanish>Punto de reunión Oeste (Base)</Spanish>
+            <Russian>Точка сбора Синих (База)</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEastBase">
             <English>Rallypoint East (Base)</English>
             <German>Sammelpunkt Ost (Basis)</German>
             <Spanish>Punto de reunión Este (Base)</Spanish>
+            <Russian>Точка сбора Красных (База)</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependentBase">
             <English>Rallypoint Independent (Base)</English>
             <German>Sammelpunkt Widerstand (Basis)</German>
             <Spanish>Punto de reunión Independiente (Base)</Spanish>
+            <Russian>Точка сбора Независимых (База</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWest">
             <English>Rallypoint West</English>
             <German>Sammelpunkt West</German>
             <Spanish>Punto de reunión Oeste</Spanish>
+            <Russian>Точка сбора Синих</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEast">
             <English>Rallypoint East</English>
             <German>Sammelpunkt Ost</German>
             <Spanish>Punto de reunión Este</Spanish>
+            <Russian>Точка сбора Красных</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependent">
             <English>Rallypoint Independent</English>
             <German>Sammelpunkt Widerstand</German>
             <Spanish>Punto de reunión Independiente</Spanish>
+            <Russian>Точка сбора Независимых</Russian>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml
index a327352f9b..6bf62bb671 100644
--- a/addons/vehiclelock/stringtable.xml
+++ b/addons/vehiclelock/stringtable.xml
@@ -79,7 +79,7 @@
             <Polish>Klucz, który powinien otworzyć większość pojazdów ZACHODU.</Polish>
             <Czech>Klíč který by měl otevřít většinou Západních vozidel.</Czech>
             <Hungarian>Egy kulcs, ami a NYUGAT egységeinek legtöbb járművét ki tudja nyitni.</Hungarian>
-            <Russian>Ключ для открытия большинства машин Запада.</Russian>
+            <Russian>Ключ для открытия большинства машин Красных.</Russian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_East_Description">
             <English>A key that should open most EAST vehicle.</English>
@@ -89,7 +89,7 @@
             <Polish>Klucz, który powinien otworzyć większość pojazdów WSCHODU.</Polish>
             <Hungarian>Egy kulcs, ami a KELET egységeinek legtöbb járművét ki tudja nyitni.</Hungarian>
             <Czech>Klíč který by měl otevřít vetšinu Východních vozidel.</Czech>
-            <Russian>Ключ для открытия большинства машин Востока.</Russian>
+            <Russian>Ключ для открытия большинства машин Синих.</Russian>
         </Key>
         <Key ID="STR_ACE_Vehicle_Item_Indp_Description">
             <English>A key that should open most INDEP vehicle.</English>
@@ -112,4 +112,4 @@
             <Russian>Ключ для открытия большинства машин Гражданских.</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml
index d534ecd29b..ae99f3e032 100644
--- a/addons/weaponselect/stringtable.xml
+++ b/addons/weaponselect/stringtable.xml
@@ -229,7 +229,7 @@
             <Czech>Už nejsou granáty</Czech>
             <Portuguese>Não há granadas de fragmentação restantes</Portuguese>
             <Italian>Nessuna granata a frammentazione rimanente</Italian>
-            <Russian>Осколочныких гранат нет</Russian>
+            <Russian>Осколочных гранат нет</Russian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_NoMiscGrenadeLeft">
             <English>No misc. grenades left</English>
@@ -266,4 +266,4 @@
             <Russian>Запустить дымовую завесу</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From af876e337018b9ecc1e97bbe012e464449fef81f Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 15:27:53 +0300
Subject: [PATCH 064/257] attach

---
 addons/attach/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml
index db98c4fffc..fc419148f8 100644
--- a/addons/attach/stringtable.xml
+++ b/addons/attach/stringtable.xml
@@ -189,7 +189,7 @@
             <Portuguese>%1&lt;br/&gt;Acoplada</Portuguese>
             <Italian>%1&lt;br/&gt;attaccata</Italian>
             <Hungarian>%1&lt;br/&gt;hozzácsatolva</Hungarian>
-            <Russian>%1&lt;br/&gt;присоединена</Russian>
+            <Russian>%1&lt;br/&gt;присоединен(-а)</Russian>
         </Key>
         <Key ID="STR_ACE_Attach_Item_Detached">
             <English>%1&lt;br/&gt;Detached</English>
@@ -201,7 +201,7 @@
             <Portuguese>%1&lt;br/&gt;Separada</Portuguese>
             <Italian>%1&lt;br/&gt;staccata</Italian>
             <Hungarian>%1&lt;br/&gt;lecsatolva</Hungarian>
-            <Russian>%1&lt;br/&gt;отсоединена</Russian>
+            <Russian>%1&lt;br/&gt;отсоединен(-а)</Russian>
         </Key>
     </Package>
 </Project>

From b80ec3f7905bb11a0692b84ee86b67b50bc267de Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 15:57:25 +0300
Subject: [PATCH 065/257] ballistics russian fixes + multilanguage fix

---
 addons/ballistics/stringtable.xml | 90 +++++++++++++++++++++++++++++--
 1 file changed, 87 insertions(+), 3 deletions(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index c95da8d760..cfe91258d5 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -445,6 +445,7 @@
             <Polish>Taśma .338 NM 130rd Smugacz</Polish>
             <French>Bande .338 NM 130Cps Traçante</French>
             <Spanish>Cinta de 130 balas trazadoras de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_TracerNameShort">
             <English>.338 NM Tracer</English>
@@ -453,6 +454,7 @@
             <Czech>.338 NM Svítící</Czech>
             <French>.338 NM Traçante</French>
             <Spanish>.338 NM trazadora</Spanish>
+            <Russian>.338 NM трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_TracerDescription">
             <English>Caliber: .338 Norma Magnum Tracer&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -460,6 +462,7 @@
             <Polish>Kaliber: .338 Norma Magnum Smugacz&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum Traçante&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum trazadora&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum трассирующие&lt;br /&gt;Патронов: 130&lt;br /&gt;Применимы в: SPMG</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimName">
             <English>.338 NM 130Rnd IR-DIM Belt</English>
@@ -467,6 +470,7 @@
             <Polish>Taśma .338 NM 130rd IR-DIM</Polish>
             <French>Bande .338 NM 130Cps IR-DIM</French>
             <Spanish>Cinta de 130 balas IR-DIM de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
             <English>.338 NM IR-DIM</English>
@@ -475,6 +479,7 @@
             <Czech>.338 NM IR-DIM</Czech>
             <French>.338 NM IR-DIM</French>
             <Spanish>.338 NM IR-DIM</Spanish>
+            <Russian>.338 NM трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimDescription">
             <English>Caliber: .338 Norma Magnum Tracer IR-DIM&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -482,6 +487,7 @@
             <Polish>Kaliber: .338 Norma Magnum Smugacz IR-DIM&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum Traçante IR-DIM&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum трассирующие под ПНВ&lt;br /&gt;Патронов: 130&lt;br /&gt;Применимы в: SPMG</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APName">
             <English>.338 NM 130Rnd AP Belt</English>
@@ -489,6 +495,7 @@
             <Polish>Taśma .338 NM 130rd AP</Polish>
             <French>Bande .338 NM 130Cps AP</French>
             <Spanish>Cinta de 130 balas AP de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APNameShort">
             <English>.338 NM AP</English>
@@ -497,6 +504,7 @@
             <Czech>.338 NM AP</Czech>
             <French>.338 NM AP</French>
             <Spanish>.338 NM AP</Spanish>
+            <Russian>.338 NM бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APDescription">
             <English>Caliber: .338 Norma Magnum AP&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -504,6 +512,7 @@
             <Polish>Kaliber: .338 Norma Magnum AP&lt;br /&gt;Pociski: 130&lt;br /&gt;Używane w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum AP&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum AP&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum бронебойные&lt;br /&gt;Патронов: 130&lt;br /&gt;Применимы в: SPMG</Russian>
         </Key>
         <!-- 9.3x64mm 10Rnd -->
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName">
@@ -512,6 +521,7 @@
             <Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
             <French>Chargeur 9.3mm 10Cps Traçante</French>
             <Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9.3 мм трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort">
             <English>9.3mm Tracer</English>
@@ -520,6 +530,7 @@
             <Czech>9.3mm Svítící</Czech>
             <French>9.3mm Traçante</French>
             <Spanish>9.3mm trazadora</Spanish>
+            <Russian>9.3 мм трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription">
             <English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -527,6 +538,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9.3x64 мм трассирующие&lt;br /&gt;Патронов: 10&lt;br /&gt;Применимы в: Cyrus</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName">
             <English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
@@ -534,6 +546,7 @@
             <Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 9.3mm 10Cps Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9.3 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort">
             <English>9.3mm IR-DIM</English>
@@ -542,6 +555,7 @@
             <Czech>9.3mm IR-DIM</Czech>
             <French>9.3mm IR-DIM</French>
             <Spanish>9.3mm IR-DIM</Spanish>
+            <Russian>9.3 мм трассирующие под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription">
             <English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -549,6 +563,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9.3x64 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 10&lt;br /&gt;Применимы в: Cyrus</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
             <English>9.3mm 10Rnd AP Mag</English>
@@ -556,6 +571,7 @@
             <Polish>Magazynek 9,3mm 10rd AP</Polish>
             <French>Chargeur 9.3mm 10Cps AP</French>
             <Spanish>Cargador de 10 balas AP de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9.3 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
             <English>9.3mm AP</English>
@@ -564,6 +580,7 @@
             <Czech>9.3mm AP</Czech>
             <French>9.3mm AP</French>
             <Spanish>9.3mm AP</Spanish>
+            <Russian>9.3 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
             <English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -571,6 +588,7 @@
             <Polish>Kaliber: 9,3x64 mm AP&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm AP&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm AP&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9.3x64 мм бронебойные&lt;br /&gt;Патронов: 10&lt;br /&gt;Применимы в: Cyrus</Russian>
         </Key>
         <!-- 9.3x64mm 150Rnd Belt-->
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
@@ -579,6 +597,7 @@
             <Polish>Taśma 9,3mm 150rd Smugacz</Polish>
             <French>Bande 9.3mm 150Cps Traçante</French>
             <Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9.3 мм трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerNameShort">
             <English>9.3mm Tracer</English>
@@ -587,6 +606,7 @@
             <Czech>9.3mm Svítící</Czech>
             <French>9.3mm Traçante</French>
             <Spanish>9.3mm trazadora</Spanish>
+            <Russian>9.3 мм трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerDescription">
             <English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -594,6 +614,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9.3x64 мм трассирующие&lt;br /&gt;Патронов: 150&lt;br /&gt;Применимы в: Navid</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimName">
             <English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
@@ -601,6 +622,7 @@
             <Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
             <French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
             <Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9.3 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort">
             <English>9.3mm IR-DIM</English>
@@ -609,6 +631,7 @@
             <Czech>9.3mm IR-DIM</Czech>
             <French>9.3mm IR-DIM</French>
             <Spanish>9.3mm IR-DIM</Spanish>
+            <Russian>9.3 мм трассирующие под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription">
             <English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -616,6 +639,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9.3x64 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 150&lt;br /&gt;Применимы в: Navid</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APName">
             <English>9.3mm 150Rnd AP Belt</English>
@@ -623,6 +647,7 @@
             <Polish>Taśma 9,3mm 150rd AP</Polish>
             <French>Bande 9.3mm 150Cps AP</French>
             <Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9.3 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APNameShort">
             <English>9.3mm AP</English>
@@ -631,6 +656,7 @@
             <Czech>9.3mm AP</Czech>
             <French>9.3mm AP</French>
             <Spanish>9.3mm AP</Spanish>
+            <Russian>9.3 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APDescription">
             <English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -638,333 +664,391 @@
             <Polish>Kaliber: 9,3x64 mm AP&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm AP&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm AP&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9.3x64 мм бронебойные&lt;br /&gt;Патронов: 150&lt;br /&gt;Применимы в: Navid</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_Name">
             <English>9x19mm 16Rnd Mag</English>
             <Polish>Magazynek 9x19mm 16rd</Polish>
             <French>Chargeur 9x19mm 16Cps</French>
             <Spanish>Cargador de 16 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 16-ти 9x19 мм патронов</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_NameShort">
             <English>9x19mm</English>
             <Polish>9x19mm</Polish>
             <French>9x19mm</French>
             <Spanish>9x19mm</Spanish>
+            <Russian>9x19 мм патрон</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_Description">
-            <English>9x19mm 30Rnd Mag</English>
+            <English>9x19mm 16Rnd Mag</English>
             <Polish>Magazynek 9x19mm 16rd</Polish>
-            <French>9x19mm 30Cps</French>
+            <French>9x19mm 16Cps</French>
             <Spanish>Cargador de 16 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 16-ти 9x19 мм патронов</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_Name">
             <English>9x19mm 30Rnd Mag</English>
             <Polish>Magazynek 9x19mm 30rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 30 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 30-ти 9x19 мм патронов</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_NameShort">
             <English>9x19mm</English>
             <Polish>9x19mm</Polish>
             <French>9x19mm</French>
             <Spanish>9x19mm</Spanish>
+            <Russian>9x19 мм патрон</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_Description">
             <English>9x19mm 30Rnd Mag</English>
             <Polish>Magazynek 9x19mm 30rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 30 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 30-ти 9x19 мм патронов</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Name">
             <English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 7.62x54mm 10Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
+            <Russian>Магазин из 10-ти 7.62x54 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_NameShort">
             <English>7.62mm IR-DIM</English>
             <Polish>7,62mm IR-DIM</Polish>
             <French>7.62mm IR-DIM</French>
             <Spanish>7.62mm IR-DIM</Spanish>
+            <Russian>7.62x54 мм трассирующие под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Description">
             <English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 7.62x54mm 10Cps Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
+            <Russian>Магазин из 10-ти 7.62x54 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName">
             <English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 100-та 6.5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
             <Polish>6,5mm IR-DIM</Polish>
             <French>6.5mm IR-DIM</French>
             <Spanish>6.5mm IR-DIM</Spanish>
+            <Russian>6.5 мм трассирующие под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
             <English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 100-та 6.5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName">
             <English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Лента из 200-от 6.5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
             <Polish>6,5mm IR-DIM</Polish>
             <French>6.5mm IR-DIM</French>
             <Spanish>6.5mm IR-DIM</Spanish>
+            <Russian>6.5 мм трассирующие под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription">
             <English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Лента из 200-от 6.5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk262)</English>
             <Polish>Magazynek 5,56mm 30rd Mk262</Polish>
             <French>5.56mm 30Cps (Mk262)</French>
             <Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
+            <Russian>Магазин из 30-ти 5.56 мм (Mk262)</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
             <English>5.56mm Mk262</English>
             <Polish>5,56mm Mk262</Polish>
             <French>5.56mm Mk262</French>
             <Spanish>5.56mm (Mk262)</Spanish>
+            <Russian>5.56 мм (Mk262) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description">
             <English>Caliber: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Rounds: 30</English>
             <Polish>Kaliber: 5,56x45 mm NATO (Mk262)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 5.56x45 мм НАТО (Mk262)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk318)</English>
             <Polish>Magazynek 5,56mm 30rd Mk318</Polish>
             <French>5.56mm 30Cps (Mk318)</French>
             <Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
+            <Russian>Магазин из 30-ти 5.56 мм (Mk318)</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
             <English>5.56mm Mk318</English>
             <Polish>5,56mm Mk318</Polish>
             <French>5.56mm Mk318</French>
             <Spanish>5.56mm (Mk318)</Spanish>
+            <Russian>5.56 мм (Mk318) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description">
             <English>Caliber: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Rounds: 30</English>
             <Polish>Kaliber: 5,56x45 mm NATO (Mk318)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 5.56x45 мм НАТО (Mk318)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
             <English>7.62mm 10Rnd Mag (M118LR)</English>
             <Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
             <French>7.62mm 10Cps (M118LR)</French>
             <Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
+            <Russian>Магазин из 10-ти 7.62 мм (M118LR)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort">
             <English>7.62mm M118LR</English>
             <Polish>7,62mm M118LR</Polish>
             <French>7.62mm M118LR</French>
             <Spanish>7.62mm (M118LR)</Spanish>
+            <Russian>7.62 мм (M118LR) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Rounds: 10</English>
             <Polish>Kaliber: 7,62x51 mm NATO (M118LR)&lt;br /&gt;Pociski: 10</Polish>
             <French>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 7.62x51 мм НАТО (M118LR)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Name">
             <English>7.62mm 20Rnd Mag (M118LR)</English>
             <Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
             <French>7.62mm 20Cps (M118LR)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
+            <Russian>Магазин из 20-ти 7.62 мм (M118LR)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort">
             <English>7.62mm M118LR</English>
             <Polish>7,62mm M118LR</Polish>
             <French>7.62mm M118LR</French>
             <Spanish>7.62mm (M118LR)</Spanish>
+            <Russian>7.62 мм (M118LR) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x51 mm NATO (M118LR)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7.62x51 мм НАТО (M118LR)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
             <English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
             <Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
             <French>7.62mm 10Cps (Mk319 Mod 0)</French>
             <Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
+            <Russian>Магазин из 10-ти 7.62 мм (Mk319 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
             <English>7.62mm Mk319</English>
             <Polish>7,62mm Mk319</Polish>
             <French>7.62mm Mk319</French>
             <Spanish>7.62mm Mk319</Spanish>
+            <Russian>7.62 мм Mk319 патрон</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 10</English>
             <Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 10</Polish>
             <French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 7.62x51 мм НАТО (Mk319 Mod 0)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
             <French>7.62mm 20Cps (Mk319 Mod 0)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
+            <Russian>Магазин из 20-ти 7.62 мм (Mk319 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
             <English>7.62mm Mk319</English>
             <Polish>7,62mm Mk319</Polish>
             <French>7.62mm Mk319</French>
             <Spanish>7.62mm Mk319</Spanish>
+            <Russian>7.62 мм Mk319 патрон</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7.62x51 мм НАТО (Mk319 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
             <French>7.62mm 20Cps (Mk248 Mod 0)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
+            <Russian>Магазин из 20-ти 7.62 мм (Mk248 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
             <English>7.62mm (Mk248 Mod 0)</English>
             <Polish>7,62mm (Mk248 Mod 0)</Polish>
             <French>7.62mm (Mk248 Mod 0)</French>
             <Spanish>7.62mm (Mk248 Mod 0)</Spanish>
+            <Russian>7.62 мм (Mk248 Mod 0) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7.62x67 мм НАТО (Mk248 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
             <French>7.62mm 20Cps (Mk248 Mod 1)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
+            <Russian>Магазин из 20-ти 7.62 мм (Mk248 Mod 1)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
             <English>7.62mm (Mk248 Mod 1)</English>
             <Polish>7,62mm (Mk248 Mod 1)</Polish>
             <French>7.62mm (Mk248 Mod 1)</French>
             <Spanish>7.62mm (Mk248 Mod 1)</Spanish>
+            <Russian>7.62 мм (Mk248 Mod 1) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7.62x67 мм НАТО (Mk248 Mod 1)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
             <English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
             <Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
             <French>7.62 20Cps (Berger Hybrid OTM)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
+            <Russian>Магазин из 20-ти 7.62 мм (Berger Hybrid OTM)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
             <English>7.62mm (OTM)</English>
             <Polish>7,62mm (OTM)</Polish>
             <French>7.62mm (OTM)</French>
             <Spanish>7.62mm (OTM)</Spanish>
+            <Russian>7.62 мм (OTM) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7.62x67 мм НАТО (Berger Hybrid OTM)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Name">
             <English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
             <French>6.5x47mm 30Cps (HPBT Scenar)</French>
             <Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
+            <Russian>Магазин из 30-ти 6.5x47 мм (HPBT Scenar)</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
             <English>6.5mm Scenar</English>
             <French>6.5mm Scenar</French>
             <Spanish>6.5mm Scenar</Spanish>
+            <Russian>6.5 мм (Scenar) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
             <English>Caliber: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Rounds: 30</English>
             <French>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 6.5x47 мм (HPBT Scenar)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
             <English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
             <French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
             <Spanish>Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT)</Spanish>
+            <Russian>Магазин из 10-ти .338 (300gr Sierra MatchKing HPBT)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort">
             <English>.338 (HPBT)</English>
             <French>.338 (HPBT)</French>
             <Spanish>.338 (HPBT)</Spanish>
+            <Russian>.338 (HPBT) патрон</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description">
             <English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: .338 (300gr Sierra MatchKing HPBT)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
             <English>.338 10Rnd Mag (API526)</English>
             <French>.338 10Cps (API526)</French>
             <Spanish>Cargador de 10 balas de .338 (API526)</Spanish>
+            <Russian>Магазин из 10-ти .338 (API526)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_NameShort">
             <English>.338 AP</English>
             <French>.338 AP</French>
             <Spanish>.338 AP</Spanish>
+            <Russian>.338 бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Description">
             <English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: .338 (API526)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
             <English>12.7x99mm 5Rnd Mag</English>
             <French>12.7x99mm 5Cps</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
+            <Russian>Магазин из 5-ти 12.7x99 мм патронов</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Russian>12.7x99 мм патрон</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Description">
             <English>Caliber: 12.7x99mm&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm&lt;br /&gt;Balas: 5</Spanish>
+            <Russian>Калибр: 12.7x99 мм&lt;br /&gt;Патронов: 5</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
             <English>12.7x99mm 5Rnd Mag (AMAX)</English>
             <French>12.7x99mm 5Rnd Mag (AMAX)</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
+            <Russian>Магазин из 5-ти 12.7x99 мм (AMAX)</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Russian>12.7x99 мм (AMAX)</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Description">
             <English>Caliber: 12.7x99mm (AMAX)&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Balas: 5</Spanish>
+            <Russian>Калибр: 12.7x99 мм (AMAX)&lt;br /&gt;Патронов: 5</Russian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 766321224b5d783b30daf9e4125df54d179c0975 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 15:59:29 +0300
Subject: [PATCH 066/257] hearing

---
 addons/hearing/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index f57bc2545a..20466db84d 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -31,7 +31,7 @@
             <Spanish>Poner tapones</Spanish>
             <Polish>Włóż stopery</Polish>
             <Czech>Dát špunty do uší</Czech>
-            <Russian>Беруши надеты</Russian>
+            <Russian>Надеть беруши</Russian>
             <French>Bouchons mis</French>
             <Hungarian>Füldugó berakva</Hungarian>
             <Portuguese>Protetores colocados</Portuguese>
@@ -43,7 +43,7 @@
             <Spanish>Quitar tapones</Spanish>
             <Polish>Wyjmij stopery</Polish>
             <Czech>Vyndat špunty z uší</Czech>
-            <Russian>Беруши сняты</Russian>
+            <Russian>Снять беруши</Russian>
             <French>Bouchons enlevés</French>
             <Hungarian>Füldugó kivéve</Hungarian>
             <Portuguese>Protetores retirados</Portuguese>

From a6e0cac734960ebd205cc0e2f9dfa13b31287240 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 16:02:46 +0300
Subject: [PATCH 067/257] interact_menu (fixes to prevent text overlapping)

---
 addons/interact_menu/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml
index 98cac6116a..ad1263b38c 100644
--- a/addons/interact_menu/stringtable.xml
+++ b/addons/interact_menu/stringtable.xml
@@ -5,7 +5,7 @@
             <English>Always display cursor for self interaction</English>
             <German>Immer den Cursor für Selbst-Interaktionen anzeigen.</German>
             <Spanish>Mostrar siempre el cursor para la interacción propia</Spanish>
-            <Russian>Всегда показывать курсор для взаимодействия с собой</Russian>
+            <Russian>Показывать курсор (взаимодействия с собой)</Russian>
             <Czech>Zobrazit kurzor v menu pro vlastní interakci</Czech>
             <Polish>Zawsze wyświetlaj kursor dla własnej interakcji</Polish>
             <French>Toujours afficher le curseur pour les interactions sur soi-même</French>
@@ -15,7 +15,7 @@
         <Key ID="STR_ACE_Interact_Menu_UseListMenu">
             <English>Display interaction menus as lists</English>
             <Spanish>Mostrar los menus de interacción como listas</Spanish>
-            <Russian>Показывать меню взаимодействия в виде списка</Russian>
+            <Russian>Меню взаимодействий в виде списка</Russian>
             <French>Afficher le menu d'interaction au format liste</French>
             <Italian>Mostra il menù di interazione come lista</Italian>
             <Polish>Wyświetlaj menu interakcji jako listę</Polish>

From a4980a91e1d9ce81fa741e9c809deb0f63bc1eb4 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 16:04:26 +0300
Subject: [PATCH 068/257] inventory (semantic correction)

---
 addons/inventory/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml
index f1d1e70f9d..da132cc3f1 100644
--- a/addons/inventory/stringtable.xml
+++ b/addons/inventory/stringtable.xml
@@ -5,7 +5,7 @@
             <English>Make Inventory Display Bigger</English>
             <German>Erhöhe die angezeigte Inventargröße</German>
             <Spanish>Hacer la pantalla de inventario mas grande</Spanish>
-            <Russian>Сделать окно инвентаря больше</Russian>
+            <Russian>Изменить размер окна инвентаря</Russian>
             <Czech>Zvětšit zobrazení inventáře</Czech>
             <Polish>Powiększ UI ekwipunku</Polish>
             <French>Agrandir la taille d'affichage de l'inventaire</French>
@@ -16,7 +16,7 @@
             <English>Normally inventory display is scaled by UI size. This allows scaling the Inventory UI size up, but doesn't increase font size allowing more rows displayed.</English>
             <German>Im Regelfall wird die Inventargröße durch die Größe der Nutzeroberfläche bestimmt. Diese Einstellung erlaubt es das Inventar unter Ausschluss der Schriftgröße zu vergrößern. Dadurch können mehr Gegenstände angezeigt werden.</German>
             <Spanish>Normalmente la pantalla de inventario se escala por el tamaño de la interfaz de usuario. Esto permite ampliar el tamaño de la interfaz de usuario de inventario, pero no aumenta el tamaño de fuente, permitiendo mostrar más filas.</Spanish>
-            <Russian>Обычно, окно инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря в пользовательском интерфейсе, не увеличивая размера шрифтов, так что отображется большее количество строк.</Russian>
+            <Russian>Обычно, размер окна инвентаря зависит от размеров пользовательского интерфейса. Эта настройка позволяет увеличить размер окна инвентаря, не увеличивая размеры шрифтов, так что отображется большее количество строк.</Russian>
             <Czech>Normálně se velikost invetáře škáluje s velikostí UI. Toto nastavení dovoluje škálování velikost inventáře ale nežvětšuje velikost fontu. To dovoluje zobrazení více řad v inventáři.</Czech>
             <Polish>Ekwipunek skalowany jest poprzez rozmiar UI. Ta opcja pozwala powiększyć rozmiar UI ekwipunku, lecz nie zwiększa rozmiaru fontu pozwalając na wyświetlanie większej ilości wierszy.</Polish>
             <French>L'inventaire est normalement affiché en fonction de la taille de l'UI. Cette option permet d'agrandir l'affichage de l'inventaire, mais n'a aucun effet sur la taille des polices permettant d'afficher plus de ligne</French>

From 52dc5d66a47d22662d1be290007f36e24a68dc9c Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 16:09:17 +0300
Subject: [PATCH 069/257] nametags (fix text overlapping, semantic correct)

---
 addons/nametags/stringtable.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 32eb35781b..c4e6f3315e 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -55,7 +55,7 @@
             <Italian>Mostra i gradi (richiede i nomi dei giocatori abilitati)</Italian>
             <Portuguese>Mostrar patente de jogadores (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok rendfokozatának mutatása (a nevek mutatása szükséges)</Hungarian>
-            <Russian>Показать звания игроков (требует имен игроков)</Russian>
+            <Russian>Показать звания игроков (имена обязательны)</Russian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowVehicleCrewInfo">
             <English>Show vehicle crew info</English>
@@ -71,7 +71,7 @@
             <English>Show name tags for AI units</English>
             <German>Zeige Namen für KI Einheiten</German>
             <Spanish>Mostrar etiquetas de nombre para unidades IA </Spanish>
-            <Russian>Показывать именые метки ИИ</Russian>
+            <Russian>Показывать имена ботов</Russian>
             <Czech>Zobrazit jména AI</Czech>
             <Polish>Wyświetl imiona jednostek AI</Polish>
             <French>Afficher les noms des IA</French>
@@ -81,7 +81,7 @@
             <English>Show SoundWaves (requires player names)</English>
             <German>Zeigen Schallwellen  (benötigt Spielernamen)</German>
             <Spanish>Mostrar onda sonora  (requiere Mostrar nombres de jugadores)</Spanish>
-            <Russian>Показывать звуковые волны (требует имен игроков)</Russian>
+            <Russian>Индикатор разговора (имена обязательны)</Russian>
             <Czech>Zobrazit SoundWaves (vyžaduje jména hráčů)</Czech>
             <Polish>Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy)</Polish>
             <French>Afficher "qui parle" (si noms affichés)</French>

From 874cc752713ce862062e5cf67dc7d6e3072945b6 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 16:22:02 +0300
Subject: [PATCH 070/257] medical (semantic correction)

---
 addons/medical/stringtable.xml | 32 ++++++++++++++++----------------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9f651e90b7..e80be2fc65 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -369,7 +369,7 @@
             <English>Give Blood IV (1000ml)</English>
             <German>Bluttransfusion IV (1000ml)</German>
             <Spanish>Dar Sangre IV (1000ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет крови (1000 мл)</Russian>
             <Polish>Podaj krew IV (1000ml)</Polish>
             <French>Administrer du Sang en IV (1000ml)</French>
             <Czech>Podat krev. transfúzi (1000ml)</Czech>
@@ -380,7 +380,7 @@
             <English>Give Blood IV (500ml)</English>
             <German>Bluttransfusion IV (500ml)</German>
             <Spanish>Dar Sangre IV (500ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет крови (500 мл)</Russian>
             <Polish>Podaj krew IV (500ml)</Polish>
             <French>Administrer du Sang en IV (500ml)</French>
             <Czech>Podat krev. transfúzi (500ml) </Czech>
@@ -391,7 +391,7 @@
             <English>Give Blood IV (250ml)</English>
             <German>Bluttransfusion IV (250ml)</German>
             <Spanish>Dar Sangre IV (250ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет крови (250 мл)</Russian>
             <Polish>Podaj krew IV (250ml)</Polish>
             <French>Administrer du Sang en IV (250ml)</French>
             <Czech>Podat krev. transfúzi (250ml)</Czech>
@@ -402,7 +402,7 @@
             <English>Give Plasma IV (1000ml)</English>
             <German>Plasmatransfusion IV (1000ml)</German>
             <Spanish>Dar Plasma IV (1000ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет плазмы (1000 мл)</Russian>
             <Polish>Podaj osocze IV (1000ml)</Polish>
             <French>Administrer du Plasma en IV (1000ml)</French>
             <Czech>Podat plazmu (1000ml)</Czech>
@@ -413,7 +413,7 @@
             <English>Give Plasma IV (500ml)</English>
             <German>Plasmatransfusion IV (500ml)</German>
             <Spanish>Dar Plasma IV (500ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет плазмы (500 мл)</Russian>
             <Polish>Podaj osocze IV (500ml)</Polish>
             <French>Administrer du Plasma en IV (500ml)</French>
             <Czech>Podat plazmu (500ml)</Czech>
@@ -424,7 +424,7 @@
             <English>Give Plasma IV (250ml)</English>
             <German>Plasmatransfusion IV (250ml)</German>
             <Spanish>Dar Plasma IV (250ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет плазмы (250 мл)</Russian>
             <Polish>Podaj osocze IV (250ml)</Polish>
             <French>Administrer du Plasma en IV (250ml)</French>
             <Czech>Podat plazmu (250ml)</Czech>
@@ -435,7 +435,7 @@
             <English>Give Saline IV (1000ml)</English>
             <German>Kochsaltzlösung IV (1000ml)</German>
             <Spanish>Dar Salino IV (1000ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет физраствора (1000 мл)</Russian>
             <Polish>Podaj solankę IV (1000ml)</Polish>
             <French>Administrer de la Solution Saline en IV (1000ml)</French>
             <Czech>Podaz fyz. roztok (1000ml)</Czech>
@@ -446,7 +446,7 @@
             <English>Give Saline IV (500ml)</English>
             <German>Kochsaltzlösung IV (500ml)</German>
             <Spanish>Dar Salino IV (500ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет физраствора (500 мл)</Russian>
             <Polish>Podaj solankę IV (500ml)</Polish>
             <French>Administrer de la Solution Saline en IV (500ml)</French>
             <Czech>Podaz fyz. roztok (500ml)</Czech>
@@ -457,7 +457,7 @@
             <English>Give Saline IV (250ml)</English>
             <German>Kochsaltzlösung IV (250ml)</German>
             <Spanish>Dar Salino IV (250ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет физраствора (250 мл)</Russian>
             <Polish>Podaj solankę IV (250ml)</Polish>
             <French>Administrer de la Solution Saline en IV (250ml)</French>
             <Czech>Podaz fyz. roztok (250ml)</Czech>
@@ -468,7 +468,7 @@
             <English>Minor</English>
             <German>Gering</German>
             <Spanish>Menor</Spanish>
-            <Russian>Незначительная</Russian>
+            <Russian>Легкие ранения</Russian>
             <Polish>Normalny</Polish>
             <French>Mineur</French>
             <Czech>Minimální</Czech>
@@ -478,7 +478,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DELAYED">
             <English>Delayed</English>
             <Spanish>Retrasado</Spanish>
-            <Russian>Груз 300</Russian>
+            <Russian>Средние ранения</Russian>
             <Polish>Opóźniony</Polish>
             <French>Différé</French>
             <German>Verzögert</German>
@@ -489,7 +489,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_IMMEDIATE">
             <English>Immediate</English>
             <Spanish>Inmediato</Spanish>
-            <Russian>Помощь отложена</Russian>
+            <Russian>Тяжелые ранения</Russian>
             <Polish>Natychmiastowy</Polish>
             <French>Urgence Immédiate</French>
             <German>Sofort</German>
@@ -500,7 +500,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DECEASED">
             <English>Deceased</English>
             <Spanish>Fallecido</Spanish>
-            <Russian>Груз 200</Russian>
+            <Russian>Труп</Russian>
             <Polish>Nie żyje</Polish>
             <French>Décédé</French>
             <German>Verstorben</German>
@@ -511,7 +511,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_NONE">
             <English>None</English>
             <Spanish>Ninguno</Spanish>
-            <Russian>Нет</Russian>
+            <Russian>Отсутствует</Russian>
             <Polish>Brak</Polish>
             <French>Aucun</French>
             <German>Keine</German>
@@ -1590,7 +1590,7 @@
             <English>Pain Effect Type</English>
             <German>Schmerzeffekt-Typ</German>
             <Polish>Rodzaj efektu bólu</Polish>
-            <Russian>Вид боли</Russian>
+            <Russian>Эффект боли</Russian>
             <Italian>Pain Effect Type</Italian>
             <Spanish>Tipo de efecto de dolor</Spanish>
         </Key>
@@ -1598,7 +1598,7 @@
             <English>Colour Flashing</English>
             <German>Farbblinken</German>
             <Polish>Pulsujące kolory</Polish>
-            <Russian>Разноцветные вспышки</Russian>
+            <Russian>Пульсирующий свет</Russian>
             <Italian>Colore lampeggiante</Italian>
             <Spanish>Parpadeo de color</Spanish>
         </Key>

From 469dafd0c086d0cd463b1505245b99923118c9ff Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 07:25:49 -0700
Subject: [PATCH 071/257] tab

---
 addons/laser/CfgVehicles.hpp |   2 +-
 addons/laser/RscInGameUI.hpp | 232 +++++++++++++++++------------------
 2 files changed, 117 insertions(+), 117 deletions(-)

diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp
index 1e83f66cc9..23eb00c37c 100644
--- a/addons/laser/CfgVehicles.hpp
+++ b/addons/laser/CfgVehicles.hpp
@@ -5,7 +5,7 @@ class CfgVehicles {
         // @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
         model = "\A3\Weapons_F\empty.p3d";
         destrType = "DestructNo";
-		simulation = "house";
+        simulation = "house";
         
         class EventHandlers {
             init = QUOTE(_this call FUNC(laser_init));
diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index d3dfaa5d43..d87136c960 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -6,118 +6,118 @@ class RscMapControl;
 
 class RscInGameUI {
     class RscOptics_LaserDesignator {
-		idd = 300;
-		controls[] = {"CA_IGUI_elements_group"};
+        idd = 300;
+        controls[] = {"CA_IGUI_elements_group"};
         
         onLoad = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',(_this select 0)];";
         onUnload = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',nil];";
         
         
-		class CA_IGUI_elements_group: RscControlsGroup {
-			idc = 170;
+        class CA_IGUI_elements_group: RscControlsGroup {
+            idc = 170;
 
-            x = "0 * 		(0.01875 * SafezoneH) + 		(SafezoneX + ((SafezoneW - SafezoneH) / 2))";
-			y = "0 * 		(0.025 * SafezoneH) + 		(SafezoneY)";
-			w = "53.5 * 		(0.01875 * SafezoneH)";
-			h = "40 * 		(0.025 * SafezoneH)";
-			class VScrollbar: VScrollbar {
-				width = 0;
-			};
-			class HScrollbar: HScrollbar {
-				height = 0;
-			};
+            x = "0 *         (0.01875 * SafezoneH) +         (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+            y = "0 *         (0.025 * SafezoneH) +         (SafezoneY)";
+            w = "53.5 *         (0.01875 * SafezoneH)";
+            h = "40 *         (0.025 * SafezoneH)";
+            class VScrollbar: VScrollbar {
+                width = 0;
+            };
+            class HScrollbar: HScrollbar {
+                height = 0;
+            };
             class controls {
-				class CA_OpticsZoom: RscText {
-					idc = 180;
-					style = 1;
-					colorText[] = {0.706,0.0745,0.0196,1};
-					sizeEx = "0.038*SafezoneH";
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "4.5";
-					x = "43.85 * 		(0.01875 * SafezoneH)";
-					y = "19.6 * 		(0.025 * SafezoneH)";
-					w = "4.5 * 		(0.01875 * SafezoneH)";
-					h = "1.1 * 		(0.025 * SafezoneH)";
-				};
+                class CA_OpticsZoom: RscText {
+                    idc = 180;
+                    style = 1;
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    sizeEx = "0.038*SafezoneH";
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "4.5";
+                    x = "43.85 *         (0.01875 * SafezoneH)";
+                    y = "19.6 *         (0.025 * SafezoneH)";
+                    w = "4.5 *         (0.01875 * SafezoneH)";
+                    h = "1.1 *         (0.025 * SafezoneH)";
+                };
                 class ACE_Distance: RscText {
-					idc = 123002;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "2456";
-					x = "24.6 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "4 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Distance: RscText {
-					idc = 151;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "2456";
-					x = 0;
+                    idc = 123002;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "2456";
+                    x = "24.6 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "4 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_Distance: RscText {
+                    idc = 151;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "2456";
+                    x = 0;
                     y = 0;
                     w = 0;
                     h = 0;
-				};
-				class CA_Elev: RscText {
-					idc = 175;
-					style = 1;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "80.5";
-					x = "32.7 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "5 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_VisionMode: RscText {
-					idc = 179;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "VIS";
-					x = "6.5 * 		(0.01875 * SafezoneH)";
-					y = "19.6 * 		(0.025 * SafezoneH)";
-					w = "4 * 		(0.01875 * SafezoneH)";
-					h = "1.1 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Laser: RscText {
-					idc = 158;
-					style = "0x30 + 0x800";
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
-					x = "29.2 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "3.5 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Heading: RscText {
-					idc = 156;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "023";
-					x = "16.1 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "3.5 * 		(0.01875 * SafezoneH)";
-					h = "1.6 * 		(0.025 * SafezoneH)";
-				};
+                };
+                class CA_Elev: RscText {
+                    idc = 175;
+                    style = 1;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "80.5";
+                    x = "32.7 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "5 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_VisionMode: RscText {
+                    idc = 179;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "VIS";
+                    x = "6.5 *         (0.01875 * SafezoneH)";
+                    y = "19.6 *         (0.025 * SafezoneH)";
+                    w = "4 *         (0.01875 * SafezoneH)";
+                    h = "1.1 *         (0.025 * SafezoneH)";
+                };
+                class CA_Laser: RscText {
+                    idc = 158;
+                    style = "0x30 + 0x800";
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
+                    x = "29.2 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "3.5 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_Heading: RscText {
+                    idc = 156;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "023";
+                    x = "16.1 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "3.5 *         (0.01875 * SafezoneH)";
+                    h = "1.6 *         (0.025 * SafezoneH)";
+                };
                 
                 class ACE_LaserCode_Helper : RscMapControl {
                     idc = -1;
@@ -126,19 +126,19 @@ class RscInGameUI {
                     h = 0;
                 };
                 class ACE_LaserCode : RscText {
-					idc = 123001;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "Code: 1001";
-					x = "32.7 * 		(0.01875 * SafezoneH)";
-					y = "35.5 * 		(0.025 * SafezoneH)";
-					w = "12 * 		(0.01875 * SafezoneH)";
-					h = "1.6 * 		(0.025 * SafezoneH)";
-				};
-			};
-		};
-	};
+                    idc = 123001;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "Code: 1001";
+                    x = "32.7 *         (0.01875 * SafezoneH)";
+                    y = "35.5 *         (0.025 * SafezoneH)";
+                    w = "12 *         (0.01875 * SafezoneH)";
+                    h = "1.6 *         (0.025 * SafezoneH)";
+                };
+            };
+        };
+    };
 };
\ No newline at end of file

From 6c3e699fdb6c4511286998bea569a2a32c90a508 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 07:28:19 -0700
Subject: [PATCH 072/257] tabs

---
 addons/javelin/CfgWeapons.hpp                 |  6 +-
 addons/javelin/RscInGameUI.hpp                |  6 +-
 addons/missileguidance/CfgAmmo.hpp            | 58 +++++++++----------
 .../Example_ACE_MissileGuidance.hpp           | 38 ++++++------
 4 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp
index 0898fa6d3c..79e7c7358c 100644
--- a/addons/javelin/CfgWeapons.hpp
+++ b/addons/javelin/CfgWeapons.hpp
@@ -4,7 +4,7 @@ class CfgWeapons {
     
     class Launcher_Base_F : Launcher {
         class WeaponSlotsInfo; 
-	};
+    };
     
     class missiles_titan : MissileLauncher {
         weaponInfoType = "ACE_RscOptics_javelin";
@@ -13,7 +13,7 @@ class CfgWeapons {
         canLock = 0;
 
         lockingTargetSound[] = {"",0,1};
-		lockedTargetSound[] = {"",0,1};
+        lockedTargetSound[] = {"",0,1};
     };
     
     class launch_Titan_base : Launcher_Base_F {
@@ -24,6 +24,6 @@ class CfgWeapons {
         
          
         lockingTargetSound[] = {"",0,1};
-		lockedTargetSound[] = {"",0,1};
+        lockedTargetSound[] = {"",0,1};
     };
 };
\ No newline at end of file
diff --git a/addons/javelin/RscInGameUI.hpp b/addons/javelin/RscInGameUI.hpp
index d845c1d00b..ea1e12626c 100644
--- a/addons/javelin/RscInGameUI.hpp
+++ b/addons/javelin/RscInGameUI.hpp
@@ -255,9 +255,9 @@ class RscInGameUI {
             idc = 6999;
             
             x = "SafezoneX";
-			y = "SafezoneY";
-			w = "SafezoneW";
-			h = "SafezoneH";
+            y = "SafezoneY";
+            w = "SafezoneW";
+            h = "SafezoneH";
             
             enabled = 0;
             class Controls {
diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp
index 82045a1720..a4a4f7e25d 100644
--- a/addons/missileguidance/CfgAmmo.hpp
+++ b/addons/missileguidance/CfgAmmo.hpp
@@ -8,29 +8,29 @@ class CfgAmmo {
     
     class M_PG_AT : MissileBase {
         model = "\A3\Weapons_F\Ammo\Rocket_01_fly_F";
-		proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
+        proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
 
         irLock = 0;
-		laserLock = 0;
-		airLock = 0;
-		weaponLockSystem = "2 + 16";
+        laserLock = 0;
+        airLock = 0;
+        weaponLockSystem = "2 + 16";
 
-		maxSpeed = 720;
-		maxControlRange = 5000;
-		maneuvrability = 8;
-		timeToLive = 60;
-		simulationStep = 0.01;
-		airFriction = 0.1;
-		sideAirFriction = 0.16;
-		initTime = 0.002;
-		thrustTime = 1.07;
-		thrust = 530;
-		fuseDistance = 2;
+        maxSpeed = 720;
+        maxControlRange = 5000;
+        maneuvrability = 8;
+        timeToLive = 60;
+        simulationStep = 0.01;
+        airFriction = 0.1;
+        sideAirFriction = 0.16;
+        initTime = 0.002;
+        thrustTime = 1.07;
+        thrust = 530;
+        fuseDistance = 2;
         
-		effectsMissileInit = "MissileDAR1";
-		effectsMissile = "missile2";
-		whistleDist = 4;
-		muzzleEffect = "";
+        effectsMissileInit = "MissileDAR1";
+        effectsMissile = "missile2";
+        whistleDist = 4;
+        muzzleEffect = "";
 
         // Turn off arma crosshair-guidance
         manualControl = 0;
@@ -73,17 +73,17 @@ class CfgAmmo {
     
     class ACE_Hydra70_DAGR : M_PG_AT {
         displayName = "$STR_ACE_Hydra70_DAGR";
-		displayNameShort = "$STR_ACE_Hydra70_DAGR_Short";
+        displayNameShort = "$STR_ACE_Hydra70_DAGR_Short";
         
         description = "$STR_ACE_Hydra70_DAGR";
-		descriptionShort = "$STR_ACE_Hydra70_DAGR_Desc";
+        descriptionShort = "$STR_ACE_Hydra70_DAGR_Desc";
     };
     
     class ACE_Hellfire_AGM114K : ACE_Hydra70_DAGR {
         displayName = "$STR_ACE_Hellfire_AGM114K";
-		displayNameShort = "$STR_ACE_Hellfire_AGM114K_Short";
+        displayNameShort = "$STR_ACE_Hellfire_AGM114K_Short";
         
-		description = "$STR_ACE_Hellfire_AGM114K_desc";
+        description = "$STR_ACE_Hellfire_AGM114K_desc";
         descriptionShort = "$STR_ACE_Hellfire_AGM114K_desc";
         
         // @TODO: placeholder model to at least make it look different
@@ -92,22 +92,22 @@ class CfgAmmo {
         
         hit = 1400;
         indirectHit = 71;
-		indirectHitRange = 4.5;
-		effectsMissile = "missile2";
+        indirectHitRange = 4.5;
+        effectsMissile = "missile2";
     };
     
     // Titan
     class M_Titan_AT : MissileBase {
         irLock = 0;
-		laserLock = 0;
-		airLock = 0;
+        laserLock = 0;
+        airLock = 0;
 
         // Turn off arma crosshair-guidance
         manualControl = 0;
         
         hit = 1400;         // default: 800
-		indirectHit = 20;
-		indirectHitRange = 2;
+        indirectHit = 20;
+        indirectHitRange = 2;
         // ACE uses these values
         //trackOversteer = 1;
         //trackLead = 0;
diff --git a/addons/missileguidance/Example_ACE_MissileGuidance.hpp b/addons/missileguidance/Example_ACE_MissileGuidance.hpp
index 400a3a9a41..d9c1ea8a2c 100644
--- a/addons/missileguidance/Example_ACE_MissileGuidance.hpp
+++ b/addons/missileguidance/Example_ACE_MissileGuidance.hpp
@@ -3,29 +3,29 @@ THIS IS A WIP FUNCTIONALITY, DUE TO CHANGE
 
     class M_PG_AT : MissileBase {
         model = "\A3\Weapons_F\Ammo\Rocket_01_fly_F";
-		proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
+        proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
 
         irLock = 0;
-		laserLock = 0;
-		airLock = 0;
-		weaponLockSystem = "2 + 16";
+        laserLock = 0;
+        airLock = 0;
+        weaponLockSystem = "2 + 16";
 
-		maxSpeed = 720;
-		maxControlRange = 5000;
-		maneuvrability = 8;
-		timeToLive = 60;
-		simulationStep = 0.01;
-		airFriction = 0.1;
-		sideAirFriction = 0.16;
-		initTime = 0.002;
-		thrustTime = 1.07;
-		thrust = 530;
-		fuseDistance = 2;
+        maxSpeed = 720;
+        maxControlRange = 5000;
+        maneuvrability = 8;
+        timeToLive = 60;
+        simulationStep = 0.01;
+        airFriction = 0.1;
+        sideAirFriction = 0.16;
+        initTime = 0.002;
+        thrustTime = 1.07;
+        thrust = 530;
+        fuseDistance = 2;
         
-		effectsMissileInit = "MissileDAR1";
-		effectsMissile = "missile2";
-		whistleDist = 4;
-		muzzleEffect = "";
+        effectsMissileInit = "MissileDAR1";
+        effectsMissile = "missile2";
+        whistleDist = 4;
+        muzzleEffect = "";
 
         // Turn off arma crosshair-guidance
         manualControl = 0;

From 3a94753645f695086cb4518e14e3922a5cae7158 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 07:28:59 -0700
Subject: [PATCH 073/257] tab

---
 addons/laser/CfgVehicles.hpp |   2 +-
 addons/laser/RscInGameUI.hpp | 232 +++++++++++++++++------------------
 2 files changed, 117 insertions(+), 117 deletions(-)

diff --git a/addons/laser/CfgVehicles.hpp b/addons/laser/CfgVehicles.hpp
index 1e83f66cc9..23eb00c37c 100644
--- a/addons/laser/CfgVehicles.hpp
+++ b/addons/laser/CfgVehicles.hpp
@@ -5,7 +5,7 @@ class CfgVehicles {
         // @TODO: Changing the model and simulation hides it, but THEN IT DOESNT SPAWN WTF!?
         model = "\A3\Weapons_F\empty.p3d";
         destrType = "DestructNo";
-		simulation = "house";
+        simulation = "house";
         
         class EventHandlers {
             init = QUOTE(_this call FUNC(laser_init));
diff --git a/addons/laser/RscInGameUI.hpp b/addons/laser/RscInGameUI.hpp
index d3dfaa5d43..d87136c960 100644
--- a/addons/laser/RscInGameUI.hpp
+++ b/addons/laser/RscInGameUI.hpp
@@ -6,118 +6,118 @@ class RscMapControl;
 
 class RscInGameUI {
     class RscOptics_LaserDesignator {
-		idd = 300;
-		controls[] = {"CA_IGUI_elements_group"};
+        idd = 300;
+        controls[] = {"CA_IGUI_elements_group"};
         
         onLoad = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',(_this select 0)];";
         onUnload = "uiNameSpace setVariable ['ACE_RscOptics_LaserDesignator',nil];";
         
         
-		class CA_IGUI_elements_group: RscControlsGroup {
-			idc = 170;
+        class CA_IGUI_elements_group: RscControlsGroup {
+            idc = 170;
 
-            x = "0 * 		(0.01875 * SafezoneH) + 		(SafezoneX + ((SafezoneW - SafezoneH) / 2))";
-			y = "0 * 		(0.025 * SafezoneH) + 		(SafezoneY)";
-			w = "53.5 * 		(0.01875 * SafezoneH)";
-			h = "40 * 		(0.025 * SafezoneH)";
-			class VScrollbar: VScrollbar {
-				width = 0;
-			};
-			class HScrollbar: HScrollbar {
-				height = 0;
-			};
+            x = "0 *         (0.01875 * SafezoneH) +         (SafezoneX + ((SafezoneW - SafezoneH) / 2))";
+            y = "0 *         (0.025 * SafezoneH) +         (SafezoneY)";
+            w = "53.5 *         (0.01875 * SafezoneH)";
+            h = "40 *         (0.025 * SafezoneH)";
+            class VScrollbar: VScrollbar {
+                width = 0;
+            };
+            class HScrollbar: HScrollbar {
+                height = 0;
+            };
             class controls {
-				class CA_OpticsZoom: RscText {
-					idc = 180;
-					style = 1;
-					colorText[] = {0.706,0.0745,0.0196,1};
-					sizeEx = "0.038*SafezoneH";
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "4.5";
-					x = "43.85 * 		(0.01875 * SafezoneH)";
-					y = "19.6 * 		(0.025 * SafezoneH)";
-					w = "4.5 * 		(0.01875 * SafezoneH)";
-					h = "1.1 * 		(0.025 * SafezoneH)";
-				};
+                class CA_OpticsZoom: RscText {
+                    idc = 180;
+                    style = 1;
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    sizeEx = "0.038*SafezoneH";
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "4.5";
+                    x = "43.85 *         (0.01875 * SafezoneH)";
+                    y = "19.6 *         (0.025 * SafezoneH)";
+                    w = "4.5 *         (0.01875 * SafezoneH)";
+                    h = "1.1 *         (0.025 * SafezoneH)";
+                };
                 class ACE_Distance: RscText {
-					idc = 123002;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "2456";
-					x = "24.6 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "4 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Distance: RscText {
-					idc = 151;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "2456";
-					x = 0;
+                    idc = 123002;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "2456";
+                    x = "24.6 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "4 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_Distance: RscText {
+                    idc = 151;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "2456";
+                    x = 0;
                     y = 0;
                     w = 0;
                     h = 0;
-				};
-				class CA_Elev: RscText {
-					idc = 175;
-					style = 1;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "80.5";
-					x = "32.7 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "5 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_VisionMode: RscText {
-					idc = 179;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "VIS";
-					x = "6.5 * 		(0.01875 * SafezoneH)";
-					y = "19.6 * 		(0.025 * SafezoneH)";
-					w = "4 * 		(0.01875 * SafezoneH)";
-					h = "1.1 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Laser: RscText {
-					idc = 158;
-					style = "0x30 + 0x800";
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
-					x = "29.2 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "3.5 * 		(0.01875 * SafezoneH)";
-					h = "1.5 * 		(0.025 * SafezoneH)";
-				};
-				class CA_Heading: RscText {
-					idc = 156;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "023";
-					x = "16.1 * 		(0.01875 * SafezoneH)";
-					y = "3 * 		(0.025 * SafezoneH)";
-					w = "3.5 * 		(0.01875 * SafezoneH)";
-					h = "1.6 * 		(0.025 * SafezoneH)";
-				};
+                };
+                class CA_Elev: RscText {
+                    idc = 175;
+                    style = 1;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "80.5";
+                    x = "32.7 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "5 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_VisionMode: RscText {
+                    idc = 179;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "VIS";
+                    x = "6.5 *         (0.01875 * SafezoneH)";
+                    y = "19.6 *         (0.025 * SafezoneH)";
+                    w = "4 *         (0.01875 * SafezoneH)";
+                    h = "1.1 *         (0.025 * SafezoneH)";
+                };
+                class CA_Laser: RscText {
+                    idc = 158;
+                    style = "0x30 + 0x800";
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
+                    x = "29.2 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "3.5 *         (0.01875 * SafezoneH)";
+                    h = "1.5 *         (0.025 * SafezoneH)";
+                };
+                class CA_Heading: RscText {
+                    idc = 156;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "023";
+                    x = "16.1 *         (0.01875 * SafezoneH)";
+                    y = "3 *         (0.025 * SafezoneH)";
+                    w = "3.5 *         (0.01875 * SafezoneH)";
+                    h = "1.6 *         (0.025 * SafezoneH)";
+                };
                 
                 class ACE_LaserCode_Helper : RscMapControl {
                     idc = -1;
@@ -126,19 +126,19 @@ class RscInGameUI {
                     h = 0;
                 };
                 class ACE_LaserCode : RscText {
-					idc = 123001;
-					style = 0;
-					sizeEx = "0.038*SafezoneH";
-					colorText[] = {0.706,0.0745,0.0196,1};
-					shadow = 0;
-					font = "EtelkaMonospacePro";
-					text = "Code: 1001";
-					x = "32.7 * 		(0.01875 * SafezoneH)";
-					y = "35.5 * 		(0.025 * SafezoneH)";
-					w = "12 * 		(0.01875 * SafezoneH)";
-					h = "1.6 * 		(0.025 * SafezoneH)";
-				};
-			};
-		};
-	};
+                    idc = 123001;
+                    style = 0;
+                    sizeEx = "0.038*SafezoneH";
+                    colorText[] = {0.706,0.0745,0.0196,1};
+                    shadow = 0;
+                    font = "EtelkaMonospacePro";
+                    text = "Code: 1001";
+                    x = "32.7 *         (0.01875 * SafezoneH)";
+                    y = "35.5 *         (0.025 * SafezoneH)";
+                    w = "12 *         (0.01875 * SafezoneH)";
+                    h = "1.6 *         (0.025 * SafezoneH)";
+                };
+            };
+        };
+    };
 };
\ No newline at end of file

From e83ab4049fd6e3bbcc3d3e2e74306f5f1ecf52a4 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 07:30:55 -0700
Subject: [PATCH 074/257] Fixed: Tabs everywhere.

---
 addons/aircraft/CfgAmmo.hpp               |  6 +++---
 addons/aircraft/Heli_Attack_01_base_F.hpp |  8 ++++----
 addons/optics/CfgWeapons.hpp              | 16 ++++++++--------
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/addons/aircraft/CfgAmmo.hpp b/addons/aircraft/CfgAmmo.hpp
index 41462354d8..8aa5d3173e 100644
--- a/addons/aircraft/CfgAmmo.hpp
+++ b/addons/aircraft/CfgAmmo.hpp
@@ -2,7 +2,7 @@
 class CfgAmmo {
     class BulletBase;
     class B_20mm : BulletBase {
-		hit = 80;
+        hit = 80;
         indirectHit = 12;
         indirectHitRange = 2; //2;
         caliber = 1.4;
@@ -13,7 +13,7 @@ class CfgAmmo {
         tracerEndTime = 3.5;
         
         CraterEffects = "ExploAmmoCrater";
-		explosionEffects = "ExploAmmoExplosion";
+        explosionEffects = "ExploAmmoExplosion";
         model = "\A3\Weapons_f\Data\bullettracer\tracer_red";
     };
     class ACE_20mm_HE : B_20mm {};
@@ -23,7 +23,7 @@ class CfgAmmo {
         indirectHitRange = 0.3; //2;
         explosive = 0;
         CraterEffects = "";
-		explosionEffects = "";
+        explosionEffects = "";
     };
 
     // adjust minigun caliber and deflection to other ammo
diff --git a/addons/aircraft/Heli_Attack_01_base_F.hpp b/addons/aircraft/Heli_Attack_01_base_F.hpp
index 7276b3e402..22f2da3833 100644
--- a/addons/aircraft/Heli_Attack_01_base_F.hpp
+++ b/addons/aircraft/Heli_Attack_01_base_F.hpp
@@ -907,7 +907,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
                     thermalMode[] = {0,1};
                     gunnerOpticsColor[] = {0,0,0,1};
                     directionStabilized = 1;
-					horizontallyStabilized = 1;
+                    horizontallyStabilized = 1;
                     gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
                 };
                 class Medium: Wide
@@ -918,7 +918,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
                     maxFov = 0.093;
                     gunnerOpticsColor[] = {0,0,0,1};
                     directionStabilized = 1;
-					horizontallyStabilized = 1;
+                    horizontallyStabilized = 1;
                     gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
                 };
                 class Narrow: Wide
@@ -929,7 +929,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
                     maxFov = 0.029;
                     gunnerOpticsColor[] = {0,0,0,1};
                     directionStabilized = 1;
-					horizontallyStabilized = 1;
+                    horizontallyStabilized = 1;
                     gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
 
                 };
@@ -941,7 +941,7 @@ class Heli_Attack_01_base_F: Helicopter_Base_F {
                     maxFov = 0.01;
                     gunnerOpticsColor[] = {0,0,0,1};
                     directionStabilized = 1;
-					horizontallyStabilized = 1;
+                    horizontallyStabilized = 1;
                     gunnerOpticsModel = "\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
 
                 };
diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp
index 7749db0bc4..6d61ff98a2 100644
--- a/addons/optics/CfgWeapons.hpp
+++ b/addons/optics/CfgWeapons.hpp
@@ -5,20 +5,20 @@ class CfgWeapons {
     class Default;
     
     class Binocular: Default {
-		forceOptics = 0; 			// Allow using compass with Binocular
-		opticsZoomMin = 0.056889; 	// 5.25x power
-		opticsZoomMax = 0.056889; 	// 9 px/mil
-		modelOptics = "\z\ace\addons\optics\models\NWD_M22_5x"; // 7� horizontal field of view
-		visionMode[] = {"Normal"}; // Can't use nvgs with binoculars any more than you can with scopes
-		// Fix AI using Binocs on short range - #18737
+        forceOptics = 0;             // Allow using compass with Binocular
+        opticsZoomMin = 0.056889;     // 5.25x power
+        opticsZoomMax = 0.056889;     // 9 px/mil
+        modelOptics = "\z\ace\addons\optics\models\NWD_M22_5x"; // 7� horizontal field of view
+        visionMode[] = {"Normal"}; // Can't use nvgs with binoculars any more than you can with scopes
+        // Fix AI using Binocs on short range - #18737
         // minRange = 300; // 300 = uses Rangefinder often (runs a few meters, stops, uses RF, repeats)
         minRange = 500; //500 = seem almost never use it..? 
-		minRangeProbab = 0.001;
+        minRangeProbab = 0.001;
         midRange = 1000;
         midRangeProbab = 0.01;
         maxRange = 5000;
         maxRangeProbab = 0.01;
-	};
+    };
 
     // zooming reticle scopes
     class optic_DMS: ItemCore {

From 26984905693c99441a61288c16849b381a218578 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Fri, 17 Apr 2015 17:49:03 +0300
Subject: [PATCH 075/257] medical (patient status semantic fixes)

---
 addons/medical/stringtable.xml | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index e80be2fc65..959662c9f1 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1518,7 +1518,7 @@
             <English>Heavily wounded</English>
             <German>Schwer verwundet:</German>
             <Polish>Ciężko ranny</Polish>
-            <Russian>Сильно ранен</Russian>
+            <Russian>Сильные ранения</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
         </Key>
@@ -1526,7 +1526,7 @@
             <English>Lightly wounded</English>
             <German>Leicht verwundet:</German>
             <Polish>Lekko ranny</Polish>
-            <Russian>Легко ранен</Russian>
+            <Russian>Легкие ранения</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
         </Key>
@@ -1534,7 +1534,7 @@
             <English>Very lightly wounded</English>
             <German>Sehr leicht verwundet:</German>
             <Polish>B. lekko ranny</Polish>
-            <Russian>Очень легко ранен</Russian>
+            <Russian>Царапины</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
         </Key>
@@ -1542,7 +1542,7 @@
             <English>Head</English>
             <German>Kopf</German>
             <Polish>Głowa</Polish>
-            <Russian>Голова</Russian>
+            <Russian>Головы</Russian>
             <Italian>Testa</Italian>
             <Spanish>Cabeza</Spanish>
         </Key>
@@ -1550,7 +1550,7 @@
             <English>Torso</English>
             <German>Torso</German>
             <Polish>Tors</Polish>
-            <Russian>Торс</Russian>
+            <Russian>Торса</Russian>
             <Italian>Torso</Italian>
             <Spanish>Torso</Spanish>
         </Key>
@@ -1558,7 +1558,7 @@
             <English>Left Arm</English>
             <German>Linker Arm</German>
             <Polish>Lewe ramię</Polish>
-            <Russian>Левая рука</Russian>
+            <Russian>Левой руки</Russian>
             <Italian>Braccio sinistro</Italian>
             <Spanish>Brazo izquierdo</Spanish>
         </Key>
@@ -1566,7 +1566,7 @@
             <English>Right Arm</English>
             <German>Rechter Arm</German>
             <Polish>Prawe ramię</Polish>
-            <Russian>Правая рука</Russian>
+            <Russian>Правой руки</Russian>
             <Italian>Braccio destro</Italian>
             <Spanish>Brazo derecho</Spanish>
         </Key>
@@ -1574,7 +1574,7 @@
             <English>Left Leg</English>
             <German>Linkes Bein</German>
             <Polish>Lewa noga</Polish>
-            <Russian>Левая нога</Russian>
+            <Russian>Левой ноги</Russian>
             <Italian>Gamba sinistra</Italian>
             <Spanish>Pierna izquierda</Spanish>
         </Key>
@@ -1582,7 +1582,7 @@
             <English>Right Leg</English>
             <German>Rechtes Bein</German>
             <Polish>Prawa noga</Polish>
-            <Russian>Правая нога</Russian>
+            <Russian>Правой ноги</Russian>
             <Italian>Gamba destra</Italian>
             <Spanish>Pierna derecha</Spanish>
         </Key>

From bb2383cffd960fb01d7be37448df87706cf5fd60 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 09:51:43 -0500
Subject: [PATCH 076/257] #700 - ProgressBar Visual Improvement

---
 addons/common/ProgressScreen.hpp            | 33 ++++++++++++---------
 addons/common/functions/fnc_progressBar.sqf | 10 ++++---
 2 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/addons/common/ProgressScreen.hpp b/addons/common/ProgressScreen.hpp
index df07e5ca2f..ab624669cf 100644
--- a/addons/common/ProgressScreen.hpp
+++ b/addons/common/ProgressScreen.hpp
@@ -1,7 +1,7 @@
 class GVAR(ProgressBar_Dialog) {
     idd = -1;
     movingEnable = false;
-    onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 2)];);
+    onLoad = QUOTE(uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBG)),(_this select 0) displayCtrl 1)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBar)),(_this select 0) displayCtrl 2)]; uiNamespace setVariable [ARR_2(QUOTE(QGVAR(ctrlProgressBarTitle)),(_this select 0) displayCtrl 3)];);
     objects[] = {};
 
     class controlsBackground {
@@ -23,26 +23,31 @@ class GVAR(ProgressBar_Dialog) {
             w = "safezoneW";
             h = "safezoneH";
         };
-        class Progress: ACE_gui_RscProgress {
+        class TitleBackground: ACE_gui_staticBase {
             idc = 1;
-            x = "1.2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
-            y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
-            w = "37.8 * (((safezoneW / safezoneH) min 1.2) / 40)";
-            h = ".8 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
-            colorFrame[] = {0,0,0,0.0};
-            colorBar[] = {0.27,0.5,0.31,0.8};
-            texture = "#(argb,8,8,3)color(1,1,1,0.7)";
-        };
-        class Title_Bar : ACE_gui_staticBase {
-            idc = 2;
-            style = 0x22;
-            colorBackground[] = {0, 0, 0, 0};
+            style = ST_CENTER;
+            sizeEx = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+            colorBackground[] = {0, 0, 0, 0.5};
             colorText[] = {1, 1, 1, 1};
             x = "1 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
             y = "0 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
             w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
             h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
         };
+        class Progress: ACE_gui_RscProgress {
+            idc = 2;
+            x = "1.2 * (((safezoneW / safezoneH) min 1.2) / 40) + (safezoneX + (safezoneW - ((safezoneW / safezoneH) min 1.2))/2)";
+            y = "0.1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2)";
+            w = "38 * (((safezoneW / safezoneH) min 1.2) / 40)";
+            h = "1 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25)";
+            colorFrame[] = {1,1,1,0.5};
+            colorBar[] = {"(profilenamespace getvariable ['GUI_BCG_RGB_R',0.77])","(profilenamespace getvariable ['GUI_BCG_RGB_G',0.51])","(profilenamespace getvariable ['GUI_BCG_RGB_B',0.08])","(profilenamespace getvariable ['GUI_BCG_RGB_A',0.8])"};
+            texture = "#(argb,8,8,3)color(1,1,1,0.7)";
+        };
+        class TitleText: TitleBackground {
+            idc = 3;
+            colorBackground[] = {0, 0, 0, 0};
+        };
     };
 };
 
diff --git a/addons/common/functions/fnc_progressBar.sqf b/addons/common/functions/fnc_progressBar.sqf
index 03c56398c4..f7d927556c 100644
--- a/addons/common/functions/fnc_progressBar.sqf
+++ b/addons/common/functions/fnc_progressBar.sqf
@@ -38,12 +38,14 @@ createDialog QGVAR(ProgressBar_Dialog);
 //Adjust position based on user setting:
 _ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBarTitle));
 _ctrlPos set [1, ((0 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
-(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos;
-(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0;
-_ctrlPos = ctrlPosition (uiNamespace getVariable QGVAR(ctrlProgressBar));
-_ctrlPos set [1, ((0.1 + 29 * GVAR(SettingProgressBarLocation)) * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + (safezoneY + (safezoneH - (((safezoneW / safezoneH) min 1.2) / 1.2))/2))];
+
+(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlSetPosition _ctrlPos;
+(uiNamespace getVariable QGVAR(ctrlProgressBG)) ctrlCommit 0;
 (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlSetPosition _ctrlPos;
 (uiNamespace getVariable QGVAR(ctrlProgressBar)) ctrlCommit 0;
+(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlSetPosition _ctrlPos;
+(uiNamespace getVariable QGVAR(ctrlProgressBarTitle)) ctrlCommit 0;
+
 
 
 _perFrameFunction = {

From 38f32cad0dc505798cbccd1da2ff423aa75e3913 Mon Sep 17 00:00:00 2001
From: jonpas <jonpas33@gmail.com>
Date: Fri, 17 Apr 2015 17:40:13 +0200
Subject: [PATCH 077/257] bracket -> brace

---
 documentation/development/coding-guidelines.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/documentation/development/coding-guidelines.md b/documentation/development/coding-guidelines.md
index f72263eeaa..e39581a9d4 100644
--- a/documentation/development/coding-guidelines.md
+++ b/documentation/development/coding-guidelines.md
@@ -35,8 +35,8 @@ Tabs can be tricky sometimes, especially when it comes to sharing code with othe
 
 ## Braces
 
-- opening bracket on the same line as keyword
-- closing bracket in own line, same level of indentation as keyword
+- opening brace on the same line as keyword
+- closing brace in own line, same level of indentation as keyword
 
 **Yes:**
 
@@ -70,7 +70,7 @@ class Something : Or {
     };
 ```
 
-When using `if`/`else`, it is encouraged to put `else` on the same line as the closing bracket to save space:
+When using `if`/`else`, it is encouraged to put `else` on the same line as the closing brace to save space:
 
 ```c++
 if (alive player) then {
@@ -90,7 +90,7 @@ class Three {foo = 3;};
 
 #### Reasoning
 
-Putting the opening bracket in it's own line wastes a lot of space, and keeping the closing bracket on the same level as the keyword makes it easier to recognize what exactly the bracket closes.
+Putting the opening brace in it's own line wastes a lot of space, and keeping the closing brace on the same level as the keyword makes it easier to recognize what exactly the brace closes.
 
 
 ## How to create a new module

From ba576c5763cf0310576eba7e45cbb9d898d236c0 Mon Sep 17 00:00:00 2001
From: jonpas <jonpas33@gmail.com>
Date: Fri, 17 Apr 2015 17:42:03 +0200
Subject: [PATCH 078/257] Capitalized Visual Studio, Corrected togglable
 spelling

---
 documentation/development/extension-guidelines.md         | 2 +-
 documentation/development/modularity-and-pbo-structure.md | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/documentation/development/extension-guidelines.md b/documentation/development/extension-guidelines.md
index 0558d49d5e..b5e7e98586 100644
--- a/documentation/development/extension-guidelines.md
+++ b/documentation/development/extension-guidelines.md
@@ -11,7 +11,7 @@ order: 9
 ### Requirements
 
 - A compiler (VS/GCC/Clang) 
-    - If starting with visual studio, you need to make sure to use the Visual studio command prompt
+    - If starting with Visual Studio, you need to make sure to use the Visual studio command prompt
 - cmake 3.0 or later in your path
 
 ### Cross-Platform Guidelines
diff --git a/documentation/development/modularity-and-pbo-structure.md b/documentation/development/modularity-and-pbo-structure.md
index ad1194e39c..e3e8c5002a 100644
--- a/documentation/development/modularity-and-pbo-structure.md
+++ b/documentation/development/modularity-and-pbo-structure.md
@@ -10,7 +10,7 @@ order: 4
 
 Main principles:
 - As much stuff as possible should be modular
-- Strive to make as much stuff as possible run-time toogable. Adding/removing PBOS would still be requiring to toogle any feature relying on config changes.
+- Strive to make as much stuff as possible run-time togglable. Adding/removing PBOS would still be requiring to toggle any feature relying on config changes.
 
 ### PBO Structure
 

From 2d5b10fb601d0cafa8b975798ce3ff96e5902a1d Mon Sep 17 00:00:00 2001
From: jonpas <jonpas33@gmail.com>
Date: Fri, 17 Apr 2015 17:45:10 +0200
Subject: [PATCH 079/257] Module names

---
 .../development/modularity-and-pbo-structure.md        | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/documentation/development/modularity-and-pbo-structure.md b/documentation/development/modularity-and-pbo-structure.md
index e3e8c5002a..0c16c4bc97 100644
--- a/documentation/development/modularity-and-pbo-structure.md
+++ b/documentation/development/modularity-and-pbo-structure.md
@@ -17,16 +17,16 @@ Main principles:
 Main principles:
 
 - Try to keep single module dependencies as much as possible
-- InteractionMenu would be the requirement for most modules.
-- Anything that is 100% config should require common and not interaction.
+- Interact_Menu would be the requirement for most modules.
+- Anything that is 100% config should require Common and not Interact_Menu.
 
 ```
-Main -> Common -> OptionsMenu -> InteractionMenu -> Most things
+Main -> Common -> OptionsMenu -> Interact_Menu -> Most things
 
 Main -> Common -> Config things
 
-Main -> Common -> 3D Models      |
-                 InteractionMenu | -> Feature
+Main -> Common -> 3D Models     |
+                  Interact_Menu | -> Feature
 ```
 
 

From 31a2f1b279f049a39bda74c4af0c4c5fb97a3b37 Mon Sep 17 00:00:00 2001
From: EpMAK <epmak777@gmail.com>
Date: Fri, 17 Apr 2015 19:36:07 +0300
Subject: [PATCH 080/257] Russian translations

Again, filling strings, fixing errors
---
 addons/ballistics/stringtable.xml      | 156 +++++++++++++++++++------
 addons/laserpointer/stringtable.xml    |   4 +-
 addons/medical/stringtable.xml         |   4 +-
 addons/missileguidance/stringtable.xml |  16 +--
 addons/movement/stringtable.xml        |   4 +-
 addons/nametags/stringtable.xml        |  16 ++-
 addons/nightvision/stringtable.xml     |   6 +-
 addons/reload/stringtable.xml          |   8 +-
 addons/respawn/stringtable.xml         |   6 +-
 addons/weaponselect/stringtable.xml    |  14 ++-
 addons/winddeflection/stringtable.xml  |   9 +-
 11 files changed, 176 insertions(+), 67 deletions(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index c95da8d760..a60cefcf9d 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -13,7 +13,7 @@
             <Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -25,7 +25,7 @@
             <Czech>6.5mm IR-DIM</Czech>
             <Portuguese>6,5mm IR-DIM</Portuguese>
             <Italian>6.5 IR-DIM</Italian>
-            <Russian>6.5 мм ИК-трассирующие</Russian>
+            <Russian>6,5 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimDescription">
             <English>Caliber: 6.5x39 mm Tracer IR-DIM&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: MX/C/M/SW/3GL</English>
@@ -37,7 +37,7 @@
             <Czech>Ráže: 6.5x39 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: MX/C/M/SW/3GL</Czech>
             <Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: MX/C/M/SW/3GL</Portuguese>
             <Italian>Calibro: 6.5x39 mm Traccianti IR-DIM &lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: MX/C/M/SW/3GL</Italian>
-            <Russian>Калибр: 6.5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: MX/C/M/SW/3GL</Russian>
+            <Russian>Калибр: 6,5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MX/C/M/SW/3GL</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDName">
             <English>6.5mm 30Rnd SD Mag</English>
@@ -49,7 +49,7 @@
             <Czech>6.5mm 30ks SD Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм дозвуковых</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм дозвуковых</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDNameShort">
             <English>6.5mm SD</English>
@@ -61,7 +61,7 @@
             <Czech>6.5mm SD</Czech>
             <Portuguese>6,5mm SD</Portuguese>
             <Italian>6.5mm Sil.</Italian>
-            <Russian>6.5 мм дозвуковые</Russian>
+            <Russian>6,5 мм дозвуковые</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDDescription">
             <English>Caliber: 6.5x39 mm SD&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: MX/C/M/SW/3GL</English>
@@ -73,7 +73,7 @@
             <Czech>Ráže: 6.5x39 mm SD&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: MX/C/M/SW/3GL</Czech>
             <Portuguese>Calibre: 6,5x39 mm SD&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: MX/C/M/SW/3GL</Portuguese>
             <Italian>Calibro: 6.5x39 mm Sil.&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: MX/C/M/SW/3GL </Italian>
-            <Russian>Калибр: 6.5x39 мм дозвуковые&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: MX/C/M/SW/3GL</Russian>
+            <Russian>Калибр: 6,5x39 мм дозвуковые&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MX/C/M/SW/3GL</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APName">
             <English>6.5mm 30Rnd AP Mag</English>
@@ -85,7 +85,7 @@
             <Czech>6.5mm 30ks AP Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd AP</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм бронебойных</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APNameShort">
             <English>6.5mm AP</English>
@@ -97,7 +97,7 @@
             <Czech>6.5mm AP</Czech>
             <Portuguese>6,5mm AP</Portuguese>
             <Italian>6.5mm AP</Italian>
-            <Russian>6.5 мм бронебойные</Russian>
+            <Russian>6,5 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_APDescription">
             <English>Caliber: 6.5x39 mm AP&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: MX/C/M/SW/3GL</English>
@@ -109,7 +109,7 @@
             <Czech>Ráže: 6.5x39 mm AP&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: MX/C/M/SW/3GL</Czech>
             <Portuguese>Calibre: 6,5x39 mm AP&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: MX/C/M/SW/3GL</Portuguese>
             <Italian>Calibro: 6.5x39 mm AP&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: MX/C/M/SW/3GL</Italian>
-            <Russian>Калибр: 6.5x39 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: MX/C/M/SW/3GL</Russian>
+            <Russian>Калибр: 6,5x39 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MX/C/M/SW/3GL</Russian>
         </Key>
         <!-- KATIBA -->
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimName">
@@ -122,7 +122,7 @@
             <Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -134,7 +134,7 @@
             <Czech>6.5mm IR-DIM</Czech>
             <Portuguese>6,5mm IR-DIM</Portuguese>
             <Italian>6.5mm IR-DIM</Italian>
-            <Russian>6.5 мм ИК-трассирующие</Russian>
+            <Russian>6,5 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimDescription">
             <English>Caliber: 6.5x39 mm Tracer IR-DIM&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: Katiba</English>
@@ -146,7 +146,7 @@
             <Czech>Ráže: 6.5x39 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: Katiba</Czech>
             <Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: Katiba</Portuguese>
             <Italian>Calibro: 6.5x39 mm Tracciant IR-DIM&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: Katiba</Italian>
-            <Russian>Калибр: 6.5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: Katiba</Russian>
+            <Russian>Калибр: 6,5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: Katiba</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDName">
             <English>6.5mm 30Rnd SD Mag</English>
@@ -158,7 +158,7 @@
             <Czech>6.5mm 30ks SD Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis SD de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Sil.</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм дозвуковых</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм дозвуковых</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDNameShort">
             <English>6.5mm SD</English>
@@ -170,7 +170,7 @@
             <Czech>6.5mm SD</Czech>
             <Portuguese>6,5mm SD</Portuguese>
             <Italian>6.5mm Sil.</Italian>
-            <Russian>6.5 мм дозвуковые</Russian>
+            <Russian>6,5 мм дозвуковые</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDDescription">
             <English>Caliber: 6.5x39 mm SD&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: Katiba</English>
@@ -182,7 +182,7 @@
             <Czech>Ráže: 6.5x39 mm SD&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: Katiba</Czech>
             <Portuguese>Calibre: 6,5x39 mm SD&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: Katiba</Portuguese>
             <Italian>Calibro: 6.5x39 mm Sil.&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: Katiba</Italian>
-            <Russian>Калибр: 6.5x39 мм дозвуковые&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: Katiba</Russian>
+            <Russian>Калибр: 6,5x39 мм дозвуковые&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: Katiba</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APName">
             <English>6.5mm 30Rnd AP Mag</English>
@@ -194,7 +194,7 @@
             <Czech>6.5mm 30ks AP Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis AP de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd AP</Italian>
-            <Russian>Магазин из 30-ти 6.5 мм бронебойных</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APNameShort">
             <English>6.5mm AP</English>
@@ -206,7 +206,7 @@
             <Czech>6.5mm AP</Czech>
             <Portuguese>6,5mm AP</Portuguese>
             <Italian>6.5mm AP</Italian>
-            <Russian>6.5 мм бронебойные</Russian>
+            <Russian>6,5 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_APDescription">
             <English>Caliber: 6.5x39 mm AP&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: Katiba</English>
@@ -218,7 +218,7 @@
             <Czech>Ráže: 6.5x39 mm AP&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: Katiba</Czech>
             <Portuguese>Calibre: 6,5x39 mm AP&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: Katiba</Portuguese>
             <Italian>Calibro: 6.5x39 mm AP&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: Katiba</Italian>
-            <Russian>Калибр: 6.5x39 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: Katiba</Russian>
+            <Russian>Калибр: 6,5x39 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: Katiba</Russian>
         </Key>
         <!-- 5.56x45mm -->
         <Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimName">
@@ -231,7 +231,7 @@
             <Czech>5.56mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 5,56mm</Portuguese>
             <Italian>Caricatore 5.56mm 30rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 5.56 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 5,56 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort">
             <English>5.56mm IR-DIM</English>
@@ -243,7 +243,7 @@
             <Czech>5.56mm IR-DIM</Czech>
             <Portuguese>5,56mm IR-DIM</Portuguese>
             <Italian>5.56mm IR-DIM</Italian>
-            <Russian>5.56 мм ИК-трассирующие</Russian>
+            <Russian>5,56 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimDescription">
             <English>Caliber: 5.56x45 mm Tracer IR-DIM&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
@@ -255,7 +255,7 @@
             <Czech>Ráže: 5.56x45 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
             <Portuguese>Calibre: 5,56x45 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
             <Italian>Calibro: 5.56x45 mm Traccianti IR-DIM&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
-            <Russian>Калибр: 5.56x45 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
+            <Russian>Калибр: 5,56x45 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_APName">
             <English>5.56mm 30Rnd AP Mag</English>
@@ -267,7 +267,7 @@
             <Czech>5.56mm 30ks AP Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis AP de 5,56mm</Portuguese>
             <Italian>Caricatore 5.56mm 30Rnd AP</Italian>
-            <Russian>Магазин из 30-ти 5.56 мм бронебойных</Russian>
+            <Russian>Магазин из 30-ти 5,56 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_APNameShort">
             <English>5.56mm AP</English>
@@ -279,7 +279,7 @@
             <Czech>5.56mm AP</Czech>
             <Portuguese>5,56mm AP</Portuguese>
             <Italian>5.56mm AP</Italian>
-            <Russian>5.56 мм бронебойные</Russian>
+            <Russian>5,56 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_APDescription">
             <English>Caliber: 5.56x45 mm AP&lt;br /&gt;Rounds: 30&lt;br /&gt;Used in: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</English>
@@ -291,7 +291,7 @@
             <Czech>Ráže: 5.56x45 mm AP&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
             <Portuguese>Calibre: 5,56x45 mm AP&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
             <Italian>Calibro: 5.56x45 mm AP&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
-            <Russian>Калибр: 5.56x45 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Применимы в: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
+            <Russian>Калибр: 5,56x45 мм бронебойные&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
         </Key>
         <!-- 7.62x51mm -->
         <Key ID="STR_ACE_20Rnd_762x51_mag_TracerName">
@@ -304,7 +304,7 @@
             <Czech>7.62mm 20ks Svítící Zásobník</Czech>
             <Portuguese>Carregador de 20 projéteis traçantes de 7,62mm</Portuguese>
             <Italian>Caricatore 7.62mm 20Rnd Traccianti</Italian>
-            <Russian>Магазин из 20-ти 7.62 мм трассирующих</Russian>
+            <Russian>Магазин из 20-ти 7,62 мм трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_TracerNameShort">
             <English>7.62mm Tracer</English>
@@ -316,7 +316,7 @@
             <Czech>7.62mm Svítící</Czech>
             <Portuguese>7,62mm Traçante</Portuguese>
             <Italian>7.62mm Traccianti</Italian>
-            <Russian>7.62 мм трассирущие</Russian>
+            <Russian>7,62 мм трассирущие</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_TracerDescription">
             <English>Caliber: 7.62x51 mm Tracer&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: Mk18 ABR</English>
@@ -328,7 +328,7 @@
             <Czech>Ráže: 7.62x51 mm Svítící&lt;br /&gt;Munice: 20&lt;br /&gt;Použití: Mk18 ABR</Czech>
             <Portuguese>Calibre: 7,62x51 mm Traçante&lt;br /&gt;Projéteis: 20&lt;br /&gt;Usado em: Mk18 ABR</Portuguese>
             <Italian>Calibro: 7.62x51 mm Traccianti&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: Mk18 ABR</Italian>
-            <Russian>Калибр: 7.62x51 мм трассирующие&lt;br /&gt;Патронов: 20&lt;br /&gt;Применимы в: Mk18 ABR</Russian>
+            <Russian>Калибр: 7,62x51 мм трассирующие&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimName">
             <English>7.62mm 20rnd Tracer IR-DIM Mag</English>
@@ -340,7 +340,7 @@
             <Czech>7.62mm 20ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 20 projéteis IR-DIM de 7,62mm</Portuguese>
             <Italian>Caricatore 7.62mm 20rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 20-ти 7.62 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 20-ти 7,62 мм трассирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort">
             <English>7.62mm IR-DIM</English>
@@ -352,7 +352,7 @@
             <Czech>7.62mm IR-DIM</Czech>
             <Portuguese>7,62mm IR-DIM</Portuguese>
             <Italian>7.62mm IR-DIM</Italian>
-            <Russian>7.62 мм ИК-трассирующие</Russian>
+            <Russian>7,62 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimDescription">
             <English>Caliber: 7.62x51 mm Tracer IR-DIM&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: Mk18 ABR</English>
@@ -364,7 +364,7 @@
             <Czech>Ráže: 7.62x51 mm Svítící IR-DIM&lt;br /&gt;Munice: 20&lt;br /&gt;Použití: Mk18 ABR</Czech>
             <Portuguese>Calibre: 7,62x51 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 20&lt;br /&gt;Usado em: Mk18 ABR</Portuguese>
             <Italian>Calibro: 7.62x51 mm Traccianti IR-DIM&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: Mk18 ABR</Italian>
-            <Russian>Калибр: 7.62x51 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 20&lt;br /&gt;Применимы в: Mk18 ABR</Russian>
+            <Russian>Калибр: 7,62x51 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_SDName">
             <English>7.62mm 20Rnd SD Mag</English>
@@ -376,7 +376,7 @@
             <Czech>7.62mm 20ks SD Zásobník</Czech>
             <Portuguese>Carregador de 20 projéteis SD de 7,62mm</Portuguese>
             <Italian>Caricatore 7.62mm 20Rnd Sil.</Italian>
-            <Russian>Магазин из 20-ти 7.62 мм дозвуковых</Russian>
+            <Russian>Магазин из 20-ти 7,62 мм дозвуковых</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_SDNameShort">
             <English>7.62mm SD</English>
@@ -388,7 +388,7 @@
             <Czech>7.62mm SD</Czech>
             <Portuguese>7,62mm SD</Portuguese>
             <Italian>7.62mm Sil.</Italian>
-            <Russian>7.62 мм дозвуковые</Russian>
+            <Russian>7,62 мм дозвуковые</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_SDDescription">
             <English>Caliber: 7.62x51 mm SD&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: Mk18 ABR</English>
@@ -400,7 +400,7 @@
             <Czech>Ráže: 7.62x51 mm SD&lt;br /&gt;Munice: 20&lt;br /&gt;Použití: Mk18 ABR</Czech>
             <Portuguese>Calibre: 7,62x51 mm SD&lt;br /&gt;Projéteis: 20&lt;br /&gt;Usado em: Mk18 ABR</Portuguese>
             <Italian>Calibro: 7.62x51 mm Sil.&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: Mk18 ABR</Italian>
-            <Russian>Калибр: 7.62x51 мм дозвуковые&lt;br /&gt;Патронов: 20&lt;br /&gt;Применимы в: Mk18 ABR</Russian>
+            <Russian>Калибр: 7,62x51 мм дозвуковые&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_APName">
             <English>7.62mm 20Rnd AP Mag</English>
@@ -412,7 +412,7 @@
             <Czech>7.62mm 20ks AP Zásobník</Czech>
             <Portuguese>Carregador de 20 projéteis AP de 7,62mm</Portuguese>
             <Italian>Caricatore 7.62mm 20Rnd AP</Italian>
-            <Russian>Магазин из 20-ти 7.62 мм бронебойных</Russian>
+            <Russian>Магазин из 20-ти 7,62 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_APNameShort">
             <English>7.62mm AP</English>
@@ -424,7 +424,7 @@
             <Czech>7.62mm AP</Czech>
             <Portuguese>7,62mm AP</Portuguese>
             <Italian>7.62mm AP</Italian>
-            <Russian>7.62 мм бронебойные</Russian>
+            <Russian>7,62 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_APDescription">
             <English>Caliber: 7.62x51 mm AP&lt;br /&gt;Rounds: 20&lt;br /&gt;Used in: Mk18 ABR</English>
@@ -436,7 +436,7 @@
             <Czech>Ráže: 7.62x51 mm AP&lt;br /&gt;Munice: 20&lt;br /&gt;Použití: Mk18 ABR</Czech>
             <Portuguese>Calibre: 7,62x51 mm AP&lt;br /&gt;Projéteis: 20&lt;br /&gt;Usado em: Mk18 ABR</Portuguese>
             <Italian>Calibro: 7.62x51 mm AP&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: Mk18 ABR</Italian>
-            <Russian>Калибр: 7.62x51 мм дозвуковые&lt;br /&gt;Патронов: 20&lt;br /&gt;Применимы в: Mk18 ABR</Russian>
+            <Russian>Калибр: 7,62x51 мм дозвуковые&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
         </Key>
         <!-- .338 Norma Magnum -->
         <Key ID="STR_ACE_130Rnd_338_Mag_TracerName">
@@ -445,6 +445,7 @@
             <Polish>Taśma .338 NM 130rd Smugacz</Polish>
             <French>Bande .338 NM 130Cps Traçante</French>
             <Spanish>Cinta de 130 balas trazadoras de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_TracerNameShort">
             <English>.338 NM Tracer</English>
@@ -453,6 +454,7 @@
             <Czech>.338 NM Svítící</Czech>
             <French>.338 NM Traçante</French>
             <Spanish>.338 NM trazadora</Spanish>
+            <Russian>.338 NM трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_TracerDescription">
             <English>Caliber: .338 Norma Magnum Tracer&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -460,6 +462,7 @@
             <Polish>Kaliber: .338 Norma Magnum Smugacz&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum Traçante&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum trazadora&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum трассирующие&lt;br /&gt;Патронов: 130&lt;br /&gt;Используются в: SPMG</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimName">
             <English>.338 NM 130Rnd IR-DIM Belt</English>
@@ -467,6 +470,7 @@
             <Polish>Taśma .338 NM 130rd IR-DIM</Polish>
             <French>Bande .338 NM 130Cps IR-DIM</French>
             <Spanish>Cinta de 130 balas IR-DIM de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM трасирующих под ПНВ</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
             <English>.338 NM IR-DIM</English>
@@ -475,6 +479,7 @@
             <Czech>.338 NM IR-DIM</Czech>
             <French>.338 NM IR-DIM</French>
             <Spanish>.338 NM IR-DIM</Spanish>
+            <Russian>.338 NM ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimDescription">
             <English>Caliber: .338 Norma Magnum Tracer IR-DIM&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -482,6 +487,7 @@
             <Polish>Kaliber: .338 Norma Magnum Smugacz IR-DIM&lt;br /&gt;Pociski: 130&lt;br /&gt;Używany w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum Traçante IR-DIM&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum trazadora IR-DIM&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum ИК-трассирующие&lt;br /&gt;Патронов: 130&lt;br /&gt;Используются с: SPMG</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APName">
             <English>.338 NM 130Rnd AP Belt</English>
@@ -489,6 +495,7 @@
             <Polish>Taśma .338 NM 130rd AP</Polish>
             <French>Bande .338 NM 130Cps AP</French>
             <Spanish>Cinta de 130 balas AP de .338 NM</Spanish>
+            <Russian>Лента из 130-ти .338 NM бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APNameShort">
             <English>.338 NM AP</English>
@@ -497,6 +504,7 @@
             <Czech>.338 NM AP</Czech>
             <French>.338 NM AP</French>
             <Spanish>.338 NM AP</Spanish>
+            <Russian>.338 NM бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_APDescription">
             <English>Caliber: .338 Norma Magnum AP&lt;br /&gt;Rounds: 130&lt;br /&gt;Used in: SPMG</English>
@@ -504,6 +512,7 @@
             <Polish>Kaliber: .338 Norma Magnum AP&lt;br /&gt;Pociski: 130&lt;br /&gt;Używane w: SPMG</Polish>
             <French>Calibre: .338 Norma Magnum AP&lt;br /&gt;Cartouches: 130&lt;br /&gt;Utilisé dans: SPMG</French>
             <Spanish>Calibre: .338 Norma Magnum AP&lt;br /&gt;Balas: 130&lt;br /&gt;Se usa en: SPMG</Spanish>
+            <Russian>Калибр: .338 Norma Magnum бронебойные&lt;br /&gt;Патронов: 130&lt;br /&gt;Используются с: SPMG</Russian>
         </Key>
         <!-- 9.3x64mm 10Rnd -->
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerName">
@@ -512,6 +521,7 @@
             <Polish>Magazynek 9.3mm 10rd Smugacz</Polish>
             <French>Chargeur 9.3mm 10Cps Traçante</French>
             <Spanish>Cargador de 10 balas trazadoras de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9,3 мм трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerNameShort">
             <English>9.3mm Tracer</English>
@@ -520,6 +530,7 @@
             <Czech>9.3mm Svítící</Czech>
             <French>9.3mm Traçante</French>
             <Spanish>9.3mm trazadora</Spanish>
+            <Russian>9,3 мм трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_TracerDescription">
             <English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -527,6 +538,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9,3x64 мм трассирующие&lt;br /&gt;Патронов: 10&lt;br /&gt;Используются с: Cyrus</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimName">
             <English>9.3mm 10Rnd Tracer IR-DIM Mag</English>
@@ -534,6 +546,7 @@
             <Polish>Magazynek 9,3mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 9.3mm 10Cps Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9,3 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimNameShort">
             <English>9.3mm IR-DIM</English>
@@ -542,6 +555,7 @@
             <Czech>9.3mm IR-DIM</Czech>
             <French>9.3mm IR-DIM</French>
             <Spanish>9.3mm IR-DIM</Spanish>
+            <Russian>9,3 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_Tracer_DimDescription">
             <English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -549,6 +563,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9,3x64 мм ИК-трассирующие&lt;br /&gt;Патронов: 10&lt;br /&gt;Используются с: Cyrus</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APName">
             <English>9.3mm 10Rnd AP Mag</English>
@@ -556,6 +571,7 @@
             <Polish>Magazynek 9,3mm 10rd AP</Polish>
             <French>Chargeur 9.3mm 10Cps AP</French>
             <Spanish>Cargador de 10 balas AP de 9.3mm</Spanish>
+            <Russian>Магазин из 10-ти 9,3 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APNameShort">
             <English>9.3mm AP</English>
@@ -564,6 +580,7 @@
             <Czech>9.3mm AP</Czech>
             <French>9.3mm AP</French>
             <Spanish>9.3mm AP</Spanish>
+            <Russian>9,3 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_93x64_DMR_05_Mag_APDescription">
             <English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 10&lt;br /&gt;Used in: Cyrus</English>
@@ -571,6 +588,7 @@
             <Polish>Kaliber: 9,3x64 mm AP&lt;br /&gt;Pociski: 10&lt;br /&gt;Używany w: Cyrus</Polish>
             <French>Calibre: 9.3x64mm AP&lt;br /&gt;Cartouches: 10&lt;br /&gt;Utilisé dans: Cyrus</French>
             <Spanish>Calibre: 9.3x64mm AP&lt;br /&gt;Balas: 10&lt;br /&gt;Se usa en: Cyrus</Spanish>
+            <Russian>Калибр: 9,3x64 мм бронебойные&lt;br /&gt;Патронов: 10&lt;br /&gt;Используются с: Cyrus</Russian>
         </Key>
         <!-- 9.3x64mm 150Rnd Belt-->
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerName">
@@ -579,6 +597,7 @@
             <Polish>Taśma 9,3mm 150rd Smugacz</Polish>
             <French>Bande 9.3mm 150Cps Traçante</French>
             <Spanish>Cinta de 150 balas trazadoras de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9,3 мм трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerNameShort">
             <English>9.3mm Tracer</English>
@@ -587,6 +606,7 @@
             <Czech>9.3mm Svítící</Czech>
             <French>9.3mm Traçante</French>
             <Spanish>9.3mm trazadora</Spanish>
+            <Russian>9,3 мм трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_TracerDescription">
             <English>Caliber: 9.3x64mm Tracer&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -594,6 +614,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm Traçante&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm trazadora&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9,3x64 мм трассирующие&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimName">
             <English>9.3mm 150Rnd Tracer IR-DIM Belt</English>
@@ -601,6 +622,7 @@
             <Polish>Taśma 9,3mm 150rd Smugacz IR-DIM</Polish>
             <French>Bande 9.3mm 150Cps Traçante IR-DIM</French>
             <Spanish>Cinta de 150 balas trazadoras IR-DIM de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9,3 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimNameShort">
             <English>9.3mm IR-DIM</English>
@@ -609,6 +631,7 @@
             <Czech>9.3mm IR-DIM</Czech>
             <French>9.3mm IR-DIM</French>
             <Spanish>9.3mm IR-DIM</Spanish>
+            <Russian>9,3 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_Tracer_DimDescription">
             <English>Caliber: 9.3x64mm Tracer IR-DIM&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -616,6 +639,7 @@
             <Polish>Kaliber: 9,3x64 mm Smugacz IR-DIM&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm Traçante IR-DIM&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm trazadora IR-DIM&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9,3x64 мм ИК-трассирующие&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APName">
             <English>9.3mm 150Rnd AP Belt</English>
@@ -623,6 +647,7 @@
             <Polish>Taśma 9,3mm 150rd AP</Polish>
             <French>Bande 9.3mm 150Cps AP</French>
             <Spanish>Cinta de 150 balas AP de 9.3mm</Spanish>
+            <Russian>Лента из 150-ти 9,3 мм бронебойных</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APNameShort">
             <English>9.3mm AP</English>
@@ -631,6 +656,7 @@
             <Czech>9.3mm AP</Czech>
             <French>9.3mm AP</French>
             <Spanish>9.3mm AP</Spanish>
+            <Russian>9,3 мм бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_150Rnd_93x64_Mag_APDescription">
             <English>Caliber: 9.3x64mm AP&lt;br /&gt;Rounds: 150&lt;br /&gt;Used in: Navid</English>
@@ -638,333 +664,391 @@
             <Polish>Kaliber: 9,3x64 mm AP&lt;br /&gt;Pociski: 150&lt;br /&gt;Używane w: Navid</Polish>
             <French>Calibre: 9.3x64mm AP&lt;br /&gt;Cartouches: 150&lt;br /&gt;Utilisé dans: Navid</French>
             <Spanish>Calibre: 9.3x64mm AP&lt;br /&gt;Balas: 150&lt;br /&gt;Se usa en: Navid</Spanish>
+            <Russian>Калибр: 9,3x64 мм бронебойные&lt;br /&gt;Патронов: 150&lt;br /&gt;Используются с: Навид</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_Name">
             <English>9x19mm 16Rnd Mag</English>
             <Polish>Magazynek 9x19mm 16rd</Polish>
             <French>Chargeur 9x19mm 16Cps</French>
             <Spanish>Cargador de 16 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 16-ти 9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_NameShort">
             <English>9x19mm</English>
             <Polish>9x19mm</Polish>
             <French>9x19mm</French>
             <Spanish>9x19mm</Spanish>
+            <Russian>9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_16Rnd_9x19_mag_Description">
             <English>9x19mm 30Rnd Mag</English>
             <Polish>Magazynek 9x19mm 16rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 16 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 30-ти 9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_Name">
             <English>9x19mm 30Rnd Mag</English>
             <Polish>Magazynek 9x19mm 30rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 30 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 30-ти 9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_NameShort">
             <English>9x19mm</English>
             <Polish>9x19mm</Polish>
             <French>9x19mm</French>
             <Spanish>9x19mm</Spanish>
+            <Russian>9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_Description">
             <English>9x19mm 30Rnd Mag</English>
             <Polish>Magazynek 9x19mm 30rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 30 balas de 9x19mm</Spanish>
+            <Russian>Магазин из 30-ти 9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Name">
             <English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 7.62x54mm 10Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
+            <Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_NameShort">
             <English>7.62mm IR-DIM</English>
             <Polish>7,62mm IR-DIM</Polish>
             <French>7.62mm IR-DIM</French>
             <Spanish>7.62mm IR-DIM</Spanish>
+            <Russian>7,62 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x54_Tracer_mag_Description">
             <English>7.62x54mm 10Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 7,62x54 mm 10rd Smugacz IR-DIM</Polish>
             <French>Chargeur 7.62x54mm 10Cps Traçante IR-DIM</French>
             <Spanish>Cargador de 10 balas trazadoras IR-DIM de 7.62x54mm</Spanish>
+            <Russian>Магазин из 10-ти 7,62 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimName">
             <English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 100-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
             <Polish>6,5mm IR-DIM</Polish>
             <French>6.5mm IR-DIM</French>
             <Spanish>6.5mm IR-DIM</Spanish>
+            <Russian>6,5 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimDescription">
             <English>6.5mm 100Rnd Tracer IR-DIM Mag</English>
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 100-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName">
             <English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 200-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
             <Polish>6,5mm IR-DIM</Polish>
             <French>6.5mm IR-DIM</French>
             <Spanish>6.5mm IR-DIM</Spanish>
+            <Russian>6,5 мм ИК-трассирующие</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimDescription">
             <English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
+            <Russian>Магазин из 200-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk262)</English>
             <Polish>Magazynek 5,56mm 30rd Mk262</Polish>
             <French>5.56mm 30Cps (Mk262)</French>
             <Spanish>Cargador de 30 balas de 5.56mm (Mk262)</Spanish>
+            <Russian>Магазин из 30-ти 5.56 мм Mk262</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_NameShort">
             <English>5.56mm Mk262</English>
             <Polish>5,56mm Mk262</Polish>
             <French>5.56mm Mk262</French>
             <Spanish>5.56mm (Mk262)</Spanish>
+            <Russian>5,56 мм Mk262</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Description">
             <English>Caliber: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Rounds: 30</English>
             <Polish>Kaliber: 5,56x45 mm NATO (Mk262)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 5,56x45 mm NATO (Mk262)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk318)</English>
             <Polish>Magazynek 5,56mm 30rd Mk318</Polish>
             <French>5.56mm 30Cps (Mk318)</French>
             <Spanish>Cargador de 30 balas de 5.56mm (Mk318)</Spanish>
+            <Russian>Магазин из 30-ти 5.56 мм Mk318</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_NameShort">
             <English>5.56mm Mk318</English>
             <Polish>5,56mm Mk318</Polish>
             <French>5.56mm Mk318</French>
             <Spanish>5.56mm (Mk318)</Spanish>
+            <Russian>5.56 мм Mk318</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Description">
             <English>Caliber: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Rounds: 30</English>
             <Polish>Kaliber: 5,56x45 mm NATO (Mk318)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 5,56x45 mm NATO (Mk318)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
             <English>7.62mm 10Rnd Mag (M118LR)</English>
             <Polish>Magazynek 7,62mm 10rd (M118LR)</Polish>
             <French>7.62mm 10Cps (M118LR)</French>
             <Spanish>Cargador de 10 balas de 7.62mm (M118LR)</Spanish>
+            <Russian>Магазин из 10-ти 7,62 мм (M118LR)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_NameShort">
             <English>7.62mm M118LR</English>
             <Polish>7,62mm M118LR</Polish>
             <French>7.62mm M118LR</French>
             <Spanish>7.62mm (M118LR)</Spanish>
+            <Russian>7,62 мм M118LR</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Rounds: 10</English>
             <Polish>Kaliber: 7,62x51 mm NATO (M118LR)&lt;br /&gt;Pociski: 10</Polish>
             <French>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 7,62x51 мм NATO (M118LR)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Name">
             <English>7.62mm 20Rnd Mag (M118LR)</English>
             <Polish>Magazynek 7,62mm 20rd (M118LR)</Polish>
             <French>7.62mm 20Cps (M118LR)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (M118LR)</Spanish>
+            <Russian>Магазин из 20-ти 7,62 мм (M118LR)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_NameShort">
             <English>7.62mm M118LR</English>
             <Polish>7,62mm M118LR</Polish>
             <French>7.62mm M118LR</French>
             <Spanish>7.62mm (M118LR)</Spanish>
+            <Russian>7,62 мм M118LR</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_M118LR_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x51 mm NATO (M118LR)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x51 mm NATO (M118LR)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7,62x51 мм NATO (M118LR)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Name">
             <English>7.62mm 10Rnd Mag (Mk319 Mod 0)</English>
             <Polish>Magazynek 7,62mm 10rd (Mk319 Mod 0)</Polish>
             <French>7.62mm 10Cps (Mk319 Mod 0)</French>
             <Spanish>Cargador de 10 balas de 7.62mm (Mk319 Mod 0)</Spanish>
+            <Russian>Магазин из 10-ти 7,62 мм (Mk319 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
             <English>7.62mm Mk319</English>
             <Polish>7,62mm Mk319</Polish>
             <French>7.62mm Mk319</French>
             <Spanish>7.62mm Mk319</Spanish>
+            <Russian>7,62mm Mk319</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_Mk319_Mod_0_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 10</English>
             <Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 10</Polish>
             <French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk319 Mod 0)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk319 Mod 0)</Polish>
             <French>7.62mm 20Cps (Mk319 Mod 0)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk319 Mod 0)</Spanish>
+            <Russian>Магазин из 20-ти 7,62 мм (Mk319 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_NameShort">
             <English>7.62mm Mk319</English>
             <Polish>7,62mm Mk319</Polish>
             <French>7.62mm Mk319</French>
             <Spanish>7.62mm Mk319</Spanish>
+            <Russian>7,62 мм Mk319</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_Mk319_Mod_0_Mag_Description">
             <English>Caliber: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x51 mm NATO (Mk319 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7,62x51 мм NATO (Mk319 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk248 Mod 0)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk248 Mod 0)</Polish>
             <French>7.62mm 20Cps (Mk248 Mod 0)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 0)</Spanish>
+            <Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_NameShort">
             <English>7.62mm (Mk248 Mod 0)</English>
             <Polish>7,62mm (Mk248 Mod 0)</Polish>
             <French>7.62mm (Mk248 Mod 0)</French>
             <Spanish>7.62mm (Mk248 Mod 0)</Spanish>
+            <Russian>7,62 мм (Mk248 Mod 0)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_0_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Mk248 Mod 0)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 0)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 0)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Name">
             <English>7.62mm 20Rnd Mag (Mk248 Mod 1)</English>
             <Polish>Magazynek 7,62mm 20rd (Mk248 Mod 1)</Polish>
             <French>7.62mm 20Cps (Mk248 Mod 1)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Mk248 Mod 1)</Spanish>
+            <Russian>Магазин из 20-ти 7,62 мм (Mk248 Mod 1)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_NameShort">
             <English>7.62mm (Mk248 Mod 1)</English>
             <Polish>7,62mm (Mk248 Mod 1)</Polish>
             <French>7.62mm (Mk248 Mod 1)</French>
             <Spanish>7.62mm (Mk248 Mod 1)</Spanish>
+            <Russian>7,62 мм (Mk248 Mod 1)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Mk248_Mod_1_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Mk248 Mod 1)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Mk248 Mod 1)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7,62x67 мм NATO (Mk248 Mod 1)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Name">
             <English>7.62mm 20Rnd Mag (Berger Hybrid OTM)</English>
             <Polish>Magazynek 7,62mm 20rd (Berger Hybrid OTM)</Polish>
             <French>7.62 20Cps (Berger Hybrid OTM)</French>
             <Spanish>Cargador de 20 balas de 7.62mm (Berger Hybrid OTM)</Spanish>
+            <Russian>Магазин из 20-ти 7,62 мм (Berger Hybrid OTM)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_NameShort">
             <English>7.62mm (OTM)</English>
             <Polish>7,62mm (OTM)</Polish>
             <French>7.62mm (OTM)</French>
             <Spanish>7.62mm (OTM)</Spanish>
+            <Russian>7,62 мм (OTM)</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag_Description">
             <English>Caliber: 7.62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Rounds: 20</English>
             <Polish>Kaliber: 7,62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Pociski: 20</Polish>
             <French>Calibre: 7.62x67mm NATO (Berger Hybrid OTM)&lt;br /&gt;Cartouches: 20</French>
             <Spanish>Calibre: 7.62x67 mm NATO (Berger Hybrid OTM)&lt;br /&gt;Balas: 20</Spanish>
+            <Russian>Калибр: 7,62x67 мм NATO (Berger Hybrid OTM)&lt;br /&gt;Патронов: 20</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Name">
             <English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
             <French>6.5x47mm 30Cps (HPBT Scenar)</French>
             <Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
+            <Russian>Магазин из 30-ти 6,5x47 мм (HPBT Scenar)</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
             <English>6.5mm Scenar</English>
             <French>6.5mm Scenar</French>
             <Spanish>6.5mm Scenar</Spanish>
+            <Russian>6,5 мм Scenar</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
             <English>Caliber: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Rounds: 30</English>
             <French>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Balas: 30</Spanish>
+            <Russian>Калибр: 6,5x47 мм (HPBT Scenar)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
             <English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
             <French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
             <Spanish>Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT)</Spanish>
+            <Russian>Магазин из 10-ти .338 (300 гран Sierra MatchKing HPBT)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort">
             <English>.338 (HPBT)</English>
             <French>.338 (HPBT)</French>
             <Spanish>.338 (HPBT)</Spanish>
+            <Russian>.338 (HPBT)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description">
             <English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 8,6x70 мм (300 гран Sierra MatchKing HPBT)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
             <English>.338 10Rnd Mag (API526)</English>
             <French>.338 10Cps (API526)</French>
             <Spanish>Cargador de 10 balas de .338 (API526)</Spanish>
+            <Russian>Магазин из 10-ти .338 (API526)</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_NameShort">
             <English>.338 AP</English>
             <French>.338 AP</French>
             <Spanish>.338 AP</Spanish>
+            <Russian>.338 бронебойные</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Description">
             <English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
+            <Russian>Калибр: 8,6x70mm (API526)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
             <English>12.7x99mm 5Rnd Mag</English>
             <French>12.7x99mm 5Cps</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
+            <Russian>Магазин из 5-ти 12,7x99 мм</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Russian>12,7 мм</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Description">
             <English>Caliber: 12.7x99mm&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm&lt;br /&gt;Balas: 5</Spanish>
+            <Russian>Калибр: 12,7x99mm&lt;br /&gt;Патронов: 5</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
             <English>12.7x99mm 5Rnd Mag (AMAX)</English>
             <French>12.7x99mm 5Rnd Mag (AMAX)</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
+            <Russian>Магазин из 5-ти 12,7x99 мм (A-MAX)</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Russian>12,7 мм</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Description">
             <English>Caliber: 12.7x99mm (AMAX)&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Balas: 5</Spanish>
+            <Russian>Калибр: 12,7x99 мм (A-MAX)&lt;br /&gt;Патронов: 5</Russian>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/laserpointer/stringtable.xml b/addons/laserpointer/stringtable.xml
index 6be6baf82b..8fa38e24dd 100644
--- a/addons/laserpointer/stringtable.xml
+++ b/addons/laserpointer/stringtable.xml
@@ -42,7 +42,7 @@
             <Italian>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Laser ON/OFF</Italian>
             <Polish>&lt;t color='#9cf953'&gt;Użyj: &lt;/t&gt;wł./wył. laser</Polish>
             <Portuguese>&lt;t color='#9cf953'&gt;Uso: &lt;/t&gt;Ativar/Desativar laser</Portuguese>
-            <Russian>&lt;t color='#9cf953'&gt;Использовать: &lt;/t&gt;вкл/выкл лазер</Russian>
+            <Russian>&lt;t color='#9cf953'&gt;Использовать: &lt;/t&gt;ВКЛ/ВЫКЛ лазер</Russian>
             <Spanish>&lt;t color='#9cf953'&gt;Usar: &lt;/t&gt;encender/apagar láser</Spanish>
             <Hungarian>&lt;t color='#9cf953'&gt;Használat: &lt;/t&gt;Lézer BE/KI kapcsolása</Hungarian>
         </Key>
@@ -72,4 +72,4 @@
             <Spanish>Cambiar Laser / Laser IR</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9f651e90b7..598e64efb0 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -468,7 +468,7 @@
             <English>Minor</English>
             <German>Gering</German>
             <Spanish>Menor</Spanish>
-            <Russian>Незначительная</Russian>
+            <Russian>Незначительные травмы</Russian>
             <Polish>Normalny</Polish>
             <French>Mineur</French>
             <Czech>Minimální</Czech>
@@ -1611,4 +1611,4 @@
             <Spanish>Aberración cromática</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml
index c9cb4c4c6b..aec2303301 100644
--- a/addons/missileguidance/stringtable.xml
+++ b/addons/missileguidance/stringtable.xml
@@ -11,7 +11,7 @@
             <Italian>Guida missili avanzata</Italian>
             <Portuguese>Avançado Missile Guidance</Portuguese>
             <Hungarian>Fejlett rakétairányító</Hungarian>
-            <Russian>Расширенный ракетой</Russian>
+            <Russian>Продвинутое наведение ракет</Russian>
         </Key>
         <Key ID="STR_ACE_Hydra70_DAGR">
             <English>Hydra-70 DAGR Missile</English>
@@ -23,7 +23,7 @@
             <Italian>Missile Hydra-70 DAGR</Italian>
             <Portuguese></Portuguese>
             <Hungarian>Hydra-70 DAGR rakéta</Hungarian>
-            <Russian></Russian>
+            <Russian>Hydra-70 DAGR</Russian>
         </Key>
         <Key ID="STR_ACE_Hydra70_DAGR_Short">
             <English>DAGR</English>
@@ -35,7 +35,7 @@
             <Italian>DAGR</Italian>
             <Portuguese></Portuguese>
             <Hungarian>DAGR</Hungarian>
-            <Russian></Russian>
+            <Russian>DAGR</Russian>
         </Key>
         <Key ID="STR_ACE_Hydra70_DAGR_Desc">
             <English>Hydra-70 DAGR Laser Guided Missile</English>
@@ -47,7 +47,7 @@
             <Italian>Hydra-70 DAGR missile guida laser</Italian>
             <Portuguese></Portuguese>
             <Hungarian>Hydra-70 DAGR lézer-irányított rakéta</Hungarian>
-            <Russian></Russian>
+            <Russian>Управляемая ракета лазерного наведения Hydra-70 DAGR</Russian>
         </Key>
         <Key ID="STR_ACE_Hellfire_AGM114K">
             <English>Hellfire II AGM-114K Missile</English>
@@ -59,7 +59,7 @@
             <Italian>Missile Hellfire II AGM-114K</Italian>
             <Portuguese></Portuguese>
             <Hungarian>Hellfire II AGM-114K rakéta</Hungarian>
-            <Russian></Russian>
+            <Russian>Hellfire II AGM-114K</Russian>
         </Key>
         <Key ID="STR_ACE_Hellfire_AGM114K_Short">
             <English>AGM-114K</English>
@@ -71,7 +71,7 @@
             <Italian>AGM-114K</Italian>
             <Portuguese></Portuguese>
             <Hungarian>AGM-114K</Hungarian>
-            <Russian></Russian>
+            <Russian>AGM-114K</Russian>
         </Key>
         <Key ID="STR_ACE_Hellfire_AGM114K_desc">
             <English>Hellfire II AGM-114K Laser Guided Missile</English>
@@ -83,7 +83,7 @@
             <Italian>Missile guida laser Hellfire II AGM-114K</Italian>
             <Portuguese></Portuguese>
             <Hungarian>Hellfire II AGM-114K lézer-irányított rakéta</Hungarian>
-            <Russian></Russian>
+            <Russian>Управляемая ракета лазерного наведения Hellfire II AGM-114K</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml
index eb91496de8..843705ebea 100644
--- a/addons/movement/stringtable.xml
+++ b/addons/movement/stringtable.xml
@@ -11,7 +11,7 @@
             <Italian>Mostra peso in libbre</Italian>
             <Portuguese>Mostrar peso em libras</Portuguese>
             <Hungarian>Súly megjelenítése fontban.</Hungarian>
-            <Russian>Показать вес в фунтах</Russian>
+            <Russian>Показывать вес в фунтах</Russian>
         </Key>
         <Key ID="STR_ACE_Movement_Weight">
             <English>Weight:</English>
@@ -48,4 +48,4 @@
             <Italian>Non puoi arrampicarti qui</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 32eb35781b..5ad5b4b956 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Pokaż imiona</Polish>
             <Hungarian>Nevek mutatása</Hungarian>
             <Russian>Показать имена</Russian>
+            <Italian>Mostra i nomi</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerNames">
             <English>Show player names</English>
@@ -30,7 +31,7 @@
             <German>Zeige Spielernamen nur an, wenn die Maus auf sie gerrichtet ist (benötigt Spielernamen)</German>
             <French>Noms uniquement sous le curseur (si noms affichés)</French>
             <Czech>Zobrazit jméno hráče jenom na kurzor (vyžaduje jména hráčů)</Czech>
-            <Italian>Mostra i nomi solo se puntati (richiede i nomi dei giocatori abilitati)</Italian>
+            <Italian>Mostra i nomi solo se puntati (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar nome de jogador somente no cursor (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges)</Hungarian>
             <Russian>Показать имена игроков только под курсором (требует имен игроков)</Russian>
@@ -44,6 +45,7 @@
             <Polish>Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy)</Polish>
             <Hungarian>Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges)</Hungarian>
             <Russian>Показать имена игроков только по нажатию клавиши (требует имен игроков)</Russian>
+            <Italian>Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato)</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerRanks">
             <English>Show player ranks (requires player names)</English>
@@ -52,10 +54,10 @@
             <Spanish>Mostrar rango de los jugadores (requiere Mostrar nombres de jugadores)</Spanish>
             <French>Grade des joueurs  (si noms affichés)</French>
             <Czech>Zobrazit hodnosti hráčů (vyžaduje jména hráčů)</Czech>
-            <Italian>Mostra i gradi (richiede i nomi dei giocatori abilitati)</Italian>
+            <Italian>Mostra i gradi (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar patente de jogadores (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok rendfokozatának mutatása (a nevek mutatása szükséges)</Hungarian>
-            <Russian>Показать звания игроков (требует имен игроков)</Russian>
+            <Russian>Показывать звания игроков (требует имен игроков)</Russian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowVehicleCrewInfo">
             <English>Show vehicle crew info</English>
@@ -64,8 +66,9 @@
             <Spanish>Mostrar tripulantes</Spanish>
             <Polish>Pokaż załogę pojazdu</Polish>
             <Czech>Zobrazit info o posádce vozidla</Czech>
-            <Russian>Показать экипаж</Russian>
+            <Russian>Показывать информацию об экипаже</Russian>
             <Hungarian>Jármű-legénység adatainak mutatása</Hungarian>
+            <Italian>Mostra le informazioni sull'equipaggio del veicolo</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowNamesForAI">
             <English>Show name tags for AI units</English>
@@ -76,6 +79,7 @@
             <Polish>Wyświetl imiona jednostek AI</Polish>
             <French>Afficher les noms des IA</French>
             <Hungarian>Névcímkék mutatása MI-egységeknél</Hungarian>
+            <Italian>Mostra le tag nomi per le unità AI</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowSoundWaves">
             <English>Show SoundWaves (requires player names)</English>
@@ -86,6 +90,7 @@
             <Polish>Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy)</Polish>
             <French>Afficher "qui parle" (si noms affichés)</French>
             <Hungarian>"Hanghullámok" mutatása (a nevek mutatása szükséges)</Hungarian>
+            <Italian>Mostra barra movimento audio (richiede mostra nomi abilitato)</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_DefaultNametagColor">
             <English>Default Nametag Color (Non Group Members)</English>
@@ -96,6 +101,7 @@
             <French>Couleur d'affichage par défaut (si dans aucun groupe)</French>
             <Czech>Standardní barva jmenovek (pro nečleny jednotky)</Czech>
             <Hungarian>Alap névcímke-szín (csoporton kívüli személyek)</Hungarian>
+            <Italian>Colore nametag di default (membri non del gruppo)</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml
index 20c916104a..a2e24d79df 100644
--- a/addons/nightvision/stringtable.xml
+++ b/addons/nightvision/stringtable.xml
@@ -91,7 +91,7 @@
             <Spanish>Sistema de visión nocturna (Panorámicas)</Spanish>
             <Polish>Gogle noktowizyjne (panoramiczne)</Polish>
             <Czech>Noktovizor (Širokoúhlý)</Czech>
-            <Russian>ПНВ (Широкий)</Russian>
+            <Russian>ПНВ (Широкоугольный)</Russian>
             <French>JVN (Large)</French>
             <Hungarian>Éjjellátó szemüveg (széles látószögű)</Hungarian>
         </Key>
@@ -102,7 +102,7 @@
             <Polish>Czułość: %1</Polish>
             <Czech>Jas: %1</Czech>
             <French>Luminosité : %1</French>
-            <Russian>Контраст: </Russian>
+            <Russian>Яркость: %1</Russian>
             <Hungarian>Fényerő: %1</Hungarian>
             <Portuguese>Luminosidade: %1</Portuguese>
             <Italian>Luminosità: %1</Italian>
@@ -132,4 +132,4 @@
             <Italian>Riduci la luminosità dell'NVG</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/reload/stringtable.xml b/addons/reload/stringtable.xml
index 7c401fec05..425c2ba8db 100644
--- a/addons/reload/stringtable.xml
+++ b/addons/reload/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Sprawdź stan amunicji przy przeładowaniu broni</Polish>
             <French>Vérification des munitions au rechargement</French>
             <Hungarian>Lőszer ellenőrzése a fegyver újratöltésekor</Hungarian>
+            <Italian>Controlla le munizioni ricaricando</Italian>
         </Key>
         <Key ID="STR_ACE_reload_SettingDisplayTextDesc">
             <English>Check the ammo in your new magazine on magazine reload.</English>
@@ -20,6 +21,7 @@
             <Polish>Pokaż stan amunicji w nowym magazynku przy przeładowaniu broni</Polish>
             <French>Vérification du nombre de munition au rechargement</French>
             <Hungarian>A lőszer ellenőrzése az új tárad behelyezésekor újratöltés közben.</Hungarian>
+            <Italian>Controlla le munizioni rimanenti nel caricatore in fase di cambio caricatore.</Italian>
         </Key>
         <Key ID="STR_ACE_Reload_checkAmmo">
             <English>Check Ammo</English>
@@ -31,7 +33,7 @@
             <Czech>Zkontrolovat Munici</Czech>
             <Italian>Controlla le munizioni</Italian>
             <Portuguese>Conferir munições</Portuguese>
-            <Russian>Kонтроль Боеприпасы</Russian>
+            <Russian>Проверить боеприпасы</Russian>
         </Key>
         <Key ID="STR_ACE_Reload_Ammo">
             <English>Ammo</English>
@@ -54,6 +56,7 @@
             <Polish>Podłącz taśmę</Polish>
             <German>Gurt anhängen</German>
             <Hungarian>Töltényheveder összekötése</Hungarian>
+            <Italian>Attacca la tracolla</Italian>
         </Key>
         <Key ID="STR_ACE_Reload_LinkingBelt">
             <English>Linking belt...</English>
@@ -64,6 +67,7 @@
             <Polish>Podłączanie taśmy...</Polish>
             <German>Gurt anhängen ...</German>
             <Hungarian>Töltényheveder összekötése folyamatban...</Hungarian>
+            <Italian>Attacco la tracolla...</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index dceeb687fe..67273ff96d 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Rozmieszczenie za 5 sekund ...</Polish>
             <Czech>Respawn za 5 sekund...</Czech>
             <Hungarian>Kihelyezés 5 másodperc múlva ...</Hungarian>
+            <Italian>Dispiegamento in 5 secondi ...</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_Deployed">
             <English>Rallypoint deployed</English>
@@ -20,6 +21,7 @@
             <Polish>Punkt zbiórki rozmieszczony</Polish>
             <Czech>Rallypoint umístěn</Czech>
             <Hungarian>Gyülekezőpont elhelyezve</Hungarian>
+            <Italian>Rallypoint dispiegato</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_TeleportedToBase">
             <English>Teleported to Base</English>
@@ -30,6 +32,7 @@
             <Polish>Przeteleportowano do bazy</Polish>
             <Czech>Odteleportován na základnu</Czech>
             <Hungarian>Bázisra teleportálva</Hungarian>
+            <Italian>Teleportato alla base</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_TeleportedToRallypoint">
             <English>Teleported to Rallypoint</English>
@@ -40,6 +43,7 @@
             <Polish>Przeteleportowano do punktu zbiórki</Polish>
             <Czech>Odteleportován na rallypoint</Czech>
             <Hungarian>Gyülekezőpontra teleportálva</Hungarian>
+            <Italian>Teleportato al rallypoint</Italian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWestBase">
             <English>Rallypoint West (Base)</English>
@@ -57,7 +61,7 @@
             <English>Rallypoint Independent (Base)</English>
             <German>Sammelpunkt Widerstand (Basis)</German>
             <Spanish>Punto de reunión Independiente (Base)</Spanish>
-            <Russian>Точка сбора Независимых (База</Russian>
+            <Russian>Точка сбора Независимых (База)</Russian>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWest">
             <English>Rallypoint West</English>
diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml
index ae99f3e032..14f24b92e1 100644
--- a/addons/weaponselect/stringtable.xml
+++ b/addons/weaponselect/stringtable.xml
@@ -10,6 +10,7 @@
             <Polish>Wyświetl tekst przy rzucie granatem</Polish>
             <French>Afficher texte lors d'un lancé de grenade</French>
             <Hungarian>Szöveg mutatása gránát eldobásakor</Hungarian>
+            <Italian>Mostra indicazioni nel lancio granate</Italian>
         </Key>
         <Key ID="STR_ACE_Weaponselect_SettingDisplayTextDesc">
             <English>Display a hint or text on grenade throw.</English>
@@ -20,6 +21,7 @@
             <Polish>Wyświetla powiadomienie lub tekst przy rzucie granatem.</Polish>
             <French>Afficher texte/info au lancé de grenade</French>
             <Hungarian>Jelez egy súgót vagy szöveget a gránát eldobásakor.</Hungarian>
+            <Italian>Mostra un suggerimento quando si lanciano granate</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectPistol">
             <English>Select Pistol</English>
@@ -55,7 +57,7 @@
             <French>Sélectionner Lanceur</French>
             <Hungarian>Rakétavető Kiválasztása</Hungarian>
             <Portuguese>Selecionar Lançador</Portuguese>
-            <Italian>Seleziona il Lanciatore</Italian>
+            <Italian>Seleziona il Lanciamissili</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectRifleMuzzle">
             <English>Select Grenade Launcher</English>
@@ -162,6 +164,7 @@
             <Hungarian>Gránát: %1</Hungarian>
             <Russian>Граната %1</Russian>
             <French>Grenade %1</French>
+            <Italian>Granata %1</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_ReadyGrenade">
             <English>Ready Grenade</English>
@@ -172,6 +175,7 @@
             <Hungarian>Gránát előkészítése</Hungarian>
             <Russian>Подготовить гранату</Russian>
             <French>Grenade prête</French>
+            <Italian>Granata pronta</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_SelectGrenadeFrag">
             <English>Select Frag Grenade</English>
@@ -194,7 +198,7 @@
             <Hungarian>Nem-robbanó Gránát Kiválasztása</Hungarian>
             <Czech>Zvolit Ne-Výbušný Granát</Czech>
             <Portuguese>Selecionar Granada</Portuguese>
-            <Italian>Seleziona Altre Granate</Italian>
+            <Italian>Seleziona granate non a frammentazione</Italian>
             <Russian>Выбрать гранату</Russian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_ThrowGrenade">
@@ -218,6 +222,7 @@
             <Czech>Žádné granáty</Czech>
             <Hungarian>Nincs több gránát</Hungarian>
             <Russian>Гранат не осталось</Russian>
+            <Italian>Granate esaurite</Italian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_NoFragsLeft">
             <English>No frags left</English>
@@ -241,7 +246,7 @@
             <Czech>Už nejsou žádné ostatní granáty</Czech>
             <Portuguese>Não há outras granadas restantes</Portuguese>
             <Italian>Nessun'altra granata rimanente.</Italian>
-            <Russian>Летальные гранаты закончились</Russian>
+            <Russian>Нелетальные гранаты закончились</Russian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_NoGrenadeSelected">
             <English>No grenade selected</English>
@@ -263,7 +268,8 @@
             <French>Tirer le lance-pots fumigènes</French>
             <Polish>Wystrzel granat dymny</Polish>
             <Hungarian>Füstvető eltüzelése</Hungarian>
-            <Russian>Запустить дымовую завесу</Russian>
+            <Russian>Пустить дымовую завесу</Russian>
+            <Italian>Lancia fumogeno</Italian>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml
index 897a3c556b..73d07eddd4 100644
--- a/addons/winddeflection/stringtable.xml
+++ b/addons/winddeflection/stringtable.xml
@@ -11,16 +11,18 @@
                 <French>Vent</French>
                 <German>Windinformationen</German>
                 <Hungarian>Szélinformáció</Hungarian>
+                <Italian>Informazioni sul vento</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WIND_DIRECTION">
                 <English>Direction: %1</English>
                 <Polish>Kierunek: %1</Polish>
                 <Spanish>Dirección: %1</Spanish>
-                <Russian>Направление: %1</Russian>
+                <Russian>Направление: %1°</Russian>
                 <Czech>Směr: %1</Czech>
                 <French>Direction %1</French>
                 <German>Windrichtung: %1</German>
                 <Hungarian>Irány: %1</Hungarian>
+                <Italian>Direzione: %1</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WIND_SPEED">
                 <English>Speed: %1 m/s</English>
@@ -31,6 +33,7 @@
                 <French>Vitesse %1 m/s</French>
                 <German>Geschwindigkeit: %1m/s</German>
                 <Hungarian>Sebesség: %1 m/s</Hungarian>
+                <Italian>Velocità: %1 m/s</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WEATHER_CATEGORY">
                 <English>Weather Information</English>
@@ -41,6 +44,7 @@
                 <French>Météo</French>
                 <German>Wetterinformationen</German>
                 <Hungarian>Időjárás-Információ</Hungarian>
+                <Italian>Meteo</Italian>
             </Key>
             <Key ID="STR_ACE_WEATHER_METER_WEATHER_HUMIDITY">
                 <English>Humidity: %1%</English>
@@ -51,7 +55,8 @@
                 <French>Humidité: %1%</French>
                 <German>Luftfeuchtigkeit: %1</German>
                 <Hungarian>Páratartalom: %1%</Hungarian>
+                <Italian>Umidità: %1%</Italian>
             </Key>
         </Container>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From 9cede7cf85ab3882f54c879570edbcfd2172328a Mon Sep 17 00:00:00 2001
From: jonpas <jonpas33@gmail.com>
Date: Fri, 17 Apr 2015 19:10:41 +0200
Subject: [PATCH 081/257] Module name Interact_Menu -> Interaction in
 documentation

---
 .../development/modularity-and-pbo-structure.md        | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/documentation/development/modularity-and-pbo-structure.md b/documentation/development/modularity-and-pbo-structure.md
index 0c16c4bc97..036ebb35d4 100644
--- a/documentation/development/modularity-and-pbo-structure.md
+++ b/documentation/development/modularity-and-pbo-structure.md
@@ -17,16 +17,14 @@ Main principles:
 Main principles:
 
 - Try to keep single module dependencies as much as possible
-- Interact_Menu would be the requirement for most modules.
-- Anything that is 100% config should require Common and not Interact_Menu.
+- Interaction would be the requirement for most modules.
+- Anything that is 100% config should require Common and not Interaction.
 
 ```
-Main -> Common -> OptionsMenu -> Interact_Menu -> Most things
+Main -> Common -> OptionsMenu -> Interaction -> Most things
 
 Main -> Common -> Config things
 
 Main -> Common -> 3D Models     |
-                  Interact_Menu | -> Feature
+                  Interaction | -> Feature
 ```
-
-

From 6e077de829d2a7c95a1f443553e40289f939a278 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 12:13:23 -0500
Subject: [PATCH 082/257] Medical - Use default value instead of 0 for getVar

#683 - should prevent people getting knocked out from any damage source
if the variables are undefined
---
 addons/medical/XEH_postInit.sqf                         | 2 +-
 addons/medical/functions/fnc_addToInjuredCollection.sqf | 6 +++---
 addons/medical/functions/fnc_handleUnitVitals.sqf       | 4 ++--
 addons/medical/functions/fnc_setCardiacArrest.sqf       | 2 +-
 4 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 309bb2a888..ae6c87c1c6 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -248,7 +248,7 @@ if (USE_WOUND_EVENT_SYNC) then {
 };
 
 [
-    {(((_this select 0) getvariable [QGVAR(bloodVolume), 0]) < 65)},
+    {(((_this select 0) getvariable [QGVAR(bloodVolume), 100]) < 65)},
     {(((_this select 0) getvariable [QGVAR(pain), 0]) > 0.9)},
     {(((_this select 0) call FUNC(getBloodLoss)) > 0.25)},
     {((_this select 0) getvariable [QGVAR(inReviveState), false])},
diff --git a/addons/medical/functions/fnc_addToInjuredCollection.sqf b/addons/medical/functions/fnc_addToInjuredCollection.sqf
index 82c385f0e1..cbe146d701 100644
--- a/addons/medical/functions/fnc_addToInjuredCollection.sqf
+++ b/addons/medical/functions/fnc_addToInjuredCollection.sqf
@@ -33,10 +33,10 @@ if ([_unit] call FUNC(hasMedicalEnabled) || _force) then {
            [_this select 1] call CBA_fnc_removePerFrameHandler;
            if (!local _unit) then {
                 if (GVAR(level) >= 2) then {
-                    _unit setvariable [QGVAR(heartRate), _unit getvariable [QGVAR(heartRate), 0], true];
-                    _unit setvariable [QGVAR(bloodPressure), _unit getvariable [QGVAR(bloodPressure), [0, 0]], true];
+                    _unit setvariable [QGVAR(heartRate), _unit getvariable [QGVAR(heartRate), 80], true];
+                    _unit setvariable [QGVAR(bloodPressure), _unit getvariable [QGVAR(bloodPressure), [80, 120]], true];
                 };
-                _unit setvariable [QGVAR(bloodVolume), _unit getvariable [QGVAR(bloodVolume), 0], true];
+                _unit setvariable [QGVAR(bloodVolume), _unit getvariable [QGVAR(bloodVolume), 100], true];
            };
         } else {
             [_unit] call FUNC(handleUnitVitals);
diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf
index 81c9ffea40..2b175d7ca2 100644
--- a/addons/medical/functions/fnc_handleUnitVitals.sqf
+++ b/addons/medical/functions/fnc_handleUnitVitals.sqf
@@ -27,7 +27,7 @@ if (_syncValues) then {
     _unit setvariable [QGVAR(lastMomentValuesSynced), time];
 };
 
-_bloodVolume = (_unit getvariable [QGVAR(bloodVolume), 0]) + ([_unit] call FUNC(getBloodVolumeChange));
+_bloodVolume = (_unit getvariable [QGVAR(bloodVolume), 100]) + ([_unit] call FUNC(getBloodVolumeChange));
 _bloodVolume = _bloodVolume max 0;
 
 _unit setvariable  [QGVAR(bloodVolume), _bloodVolume, _syncValues];
@@ -100,7 +100,7 @@ if (GVAR(level) >= 2) then {
     };
 
     // Set the vitals
-    _heartRate = (_unit getvariable [QGVAR(heartRate), 0]) + (([_unit] call FUNC(getHeartRateChange)) * _interval);
+    _heartRate = (_unit getvariable [QGVAR(heartRate), 80]) + (([_unit] call FUNC(getHeartRateChange)) * _interval);
     _unit setvariable  [QGVAR(heartRate), _heartRate, _syncValues];
 
     _bloodPressure = [_unit] call FUNC(getBloodPressure);
diff --git a/addons/medical/functions/fnc_setCardiacArrest.sqf b/addons/medical/functions/fnc_setCardiacArrest.sqf
index cebf968898..b4483defc2 100644
--- a/addons/medical/functions/fnc_setCardiacArrest.sqf
+++ b/addons/medical/functions/fnc_setCardiacArrest.sqf
@@ -33,7 +33,7 @@ _timeInCardiacArrest = 120 + round(random(600));
     _startTime = _args select 1;
     _timeInCardiacArrest = _args select 2;
 
-    _heartRate = _unit getvariable [QGVAR(heartRate), 0];
+    _heartRate = _unit getvariable [QGVAR(heartRate), 80];
     if (_heartRate > 0 || !alive _unit) exitwith {
         [(_this select 1)] call cba_fnc_removePerFrameHandler;
         _unit setvariable [QGVAR(inCardiacArrest), nil,true];

From bf7a7b5bc9df70d570fc23954de9e97b683d9ad5 Mon Sep 17 00:00:00 2001
From: Aleksey Yermakov <epmak777@gmail.com>
Date: Fri, 17 Apr 2015 20:18:41 +0300
Subject: [PATCH 083/257] Update stringtable.xml

---
 addons/ballistics/stringtable.xml | 38 +++++++++++++++----------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index a60cefcf9d..238cdabaf3 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -13,7 +13,7 @@
             <Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 6,5 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -37,7 +37,7 @@
             <Czech>Ráže: 6.5x39 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: MX/C/M/SW/3GL</Czech>
             <Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: MX/C/M/SW/3GL</Portuguese>
             <Italian>Calibro: 6.5x39 mm Traccianti IR-DIM &lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: MX/C/M/SW/3GL</Italian>
-            <Russian>Калибр: 6,5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MX/C/M/SW/3GL</Russian>
+            <Russian>Калибр: 6,5x39 мм ИК-трассирующие&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: MX/C/M/SW/3GL</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_mag_SDName">
             <English>6.5mm 30Rnd SD Mag</English>
@@ -122,7 +122,7 @@
             <Czech>6.5mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 6,5mm</Portuguese>
             <Italian>Caricatore 6.5mm 30Rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 6,5 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -146,7 +146,7 @@
             <Czech>Ráže: 6.5x39 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: Katiba</Czech>
             <Portuguese>Calibre: 6,5x39 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: Katiba</Portuguese>
             <Italian>Calibro: 6.5x39 mm Tracciant IR-DIM&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: Katiba</Italian>
-            <Russian>Калибр: 6,5x39 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: Katiba</Russian>
+            <Russian>Калибр: 6,5x39 мм ИК-трассирующие&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: Katiba</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x39_caseless_green_mag_SDName">
             <English>6.5mm 30Rnd SD Mag</English>
@@ -168,7 +168,7 @@
             <French>6,5mm SD</French>
             <Polish>6,5mm SD</Polish>
             <Czech>6.5mm SD</Czech>
-            <Portuguese>6,5mm SD</Portuguese>
+            <Portuguese>6,5 мм SD</Portuguese>
             <Italian>6.5mm Sil.</Italian>
             <Russian>6,5 мм дозвуковые</Russian>
         </Key>
@@ -231,7 +231,7 @@
             <Czech>5.56mm 30ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 30 projéteis traçantes IR-DIM de 5,56mm</Portuguese>
             <Italian>Caricatore 5.56mm 30rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 30-ти 5,56 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 30-ти 5,56 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_Tracer_DimNameShort">
             <English>5.56mm IR-DIM</English>
@@ -255,7 +255,7 @@
             <Czech>Ráže: 5.56x45 mm Svítící IR-DIM&lt;br /&gt;Munice: 30&lt;br /&gt;Použití: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Czech>
             <Portuguese>Calibre: 5,56x45 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 30&lt;br /&gt;Usado em: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Portuguese>
             <Italian>Calibro: 5.56x45 mm Traccianti IR-DIM&lt;br /&gt;Munizioni: 30&lt;br /&gt;In uso su: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Italian>
-            <Russian>Калибр: 5,56x45 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
+            <Russian>Калибр: 5,56x45 мм ИК-трассирующие&lt;br /&gt;Патронов: 30&lt;br /&gt;Используются с: TRG-20, TRG-21/EGLM, Mk20/C/EGLM, SDAR</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_mag_APName">
             <English>5.56mm 30Rnd AP Mag</English>
@@ -340,7 +340,7 @@
             <Czech>7.62mm 20ks Svítící IR-DIM Zásobník</Czech>
             <Portuguese>Carregador de 20 projéteis IR-DIM de 7,62mm</Portuguese>
             <Italian>Caricatore 7.62mm 20rnd Traccianti IR-DIM</Italian>
-            <Russian>Магазин из 20-ти 7,62 мм трассирующих под ПНВ</Russian>
+            <Russian>Магазин из 20-ти 7,62 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_Tracer_DimNameShort">
             <English>7.62mm IR-DIM</English>
@@ -364,7 +364,7 @@
             <Czech>Ráže: 7.62x51 mm Svítící IR-DIM&lt;br /&gt;Munice: 20&lt;br /&gt;Použití: Mk18 ABR</Czech>
             <Portuguese>Calibre: 7,62x51 mm Traçante IR-DIM&lt;br /&gt;Projéteis: 20&lt;br /&gt;Usado em: Mk18 ABR</Portuguese>
             <Italian>Calibro: 7.62x51 mm Traccianti IR-DIM&lt;br /&gt;Munizioni: 20&lt;br /&gt;In uso su: Mk18 ABR</Italian>
-            <Russian>Калибр: 7,62x51 мм трассирующие под ПНВ&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
+            <Russian>Калибр: 7,62x51 мм ИК-трассирующие&lt;br /&gt;Патронов: 20&lt;br /&gt;Используются с: Mk18 ABR</Russian>
         </Key>
         <Key ID="STR_ACE_20Rnd_762x51_mag_SDName">
             <English>7.62mm 20Rnd SD Mag</English>
@@ -470,7 +470,7 @@
             <Polish>Taśma .338 NM 130rd IR-DIM</Polish>
             <French>Bande .338 NM 130Cps IR-DIM</French>
             <Spanish>Cinta de 130 balas IR-DIM de .338 NM</Spanish>
-            <Russian>Лента из 130-ти .338 NM трасирующих под ПНВ</Russian>
+            <Russian>Лента из 130-ти .338 NM ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_130Rnd_338_Mag_Tracer_DimNameShort">
             <English>.338 NM IR-DIM</English>
@@ -734,7 +734,7 @@
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
-            <Russian>Магазин из 100-ти 6,5 мм ИК-трассирующих</Russian>
+            <Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_100Rnd_65x39_caseless_mag_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -748,14 +748,14 @@
             <Polish>Magazynek 6,5mm 100rd Smugacz IR-DIM</Polish>
             <French>Chargeur 6.5mm 100Rnd Traçante IR-DIM</French>
             <Spanish>Cargador de 100 balas trazadoras IR-DIM de 6.5mm</Spanish>
-            <Russian>Магазин из 100-ти 6,5 мм ИК-трассирующих</Russian>
+            <Russian>Магазин из 100 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimName">
             <English>6.5mm 200Rnd Tracer IR-DIM Belt</English>
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Rnd Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
-            <Russian>Магазин из 200-ти 6,5 мм ИК-трассирующих</Russian>
+            <Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_200Rnd_65x39_cased_Box_Tracer_DimNameShort">
             <English>6.5mm IR-DIM</English>
@@ -769,7 +769,7 @@
             <Polish>Magazynek 6,5mm 200rd Smugacz IR-DIM</Polish>
             <French>Bande 6.5mm 200Cps Traçante IR-DIM</French>
             <Spanish>Cinta de 200 balas trazadoras IR-DIM de 6.5mm</Spanish>
-            <Russian>Магазин из 200-ти 6,5 мм ИК-трассирующих</Russian>
+            <Russian>Магазин из 200-т 6,5 мм ИК-трассирующих</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk262_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk262)</English>
@@ -790,7 +790,7 @@
             <Polish>Kaliber: 5,56x45 mm NATO (Mk262)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk262)&lt;br /&gt;Balas: 30</Spanish>
-            <Russian>Калибр: 5,56x45 mm NATO (Mk262)&lt;br /&gt;Патронов: 30</Russian>
+            <Russian>Калибр: 5,56x45 мм NATO (Mk262)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_556x45_Stanag_Mk318_mag_Name">
             <English>5.56mm 30Rnd Mag (Mk318)</English>
@@ -811,7 +811,7 @@
             <Polish>Kaliber: 5,56x45 mm NATO (Mk318)&lt;br /&gt;Pociski: 30</Polish>
             <French>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 5.56x45 mm NATO (Mk318)&lt;br /&gt;Balas: 30</Spanish>
-            <Russian>Калибр: 5,56x45 mm NATO (Mk318)&lt;br /&gt;Патронов: 30</Russian>
+            <Russian>Калибр: 5,56x45 мм NATO (Mk318)&lt;br /&gt;Патронов: 30</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_762x51_M118LR_Mag_Name">
             <English>7.62mm 10Rnd Mag (M118LR)</English>
@@ -1012,7 +1012,7 @@
             <English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
-            <Russian>Калибр: 8,6x70mm (API526)&lt;br /&gt;Патронов: 10</Russian>
+            <Russian>Калибр: 8,6x70 мм (API526)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
             <English>12.7x99mm 5Rnd Mag</English>
@@ -1030,7 +1030,7 @@
             <English>Caliber: 12.7x99mm&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm&lt;br /&gt;Balas: 5</Spanish>
-            <Russian>Калибр: 12,7x99mm&lt;br /&gt;Патронов: 5</Russian>
+            <Russian>Калибр: 12,7x99 мм&lt;br /&gt;Патронов: 5</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
             <English>12.7x99mm 5Rnd Mag (AMAX)</English>
@@ -1051,4 +1051,4 @@
             <Russian>Калибр: 12,7x99 мм (A-MAX)&lt;br /&gt;Патронов: 5</Russian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 2be38c493c647caa5962fb45b0519402be54dce8 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 10:21:41 -0700
Subject: [PATCH 084/257] ACE JIP synchronized event infastructure.

---
 addons/common/XEH_postInit.sqf                |  7 ++-
 addons/common/XEH_preInit.sqf                 | 12 +++++
 .../fnc__handleRequestSyncedEvent.sqf         | 37 +++++++++++++
 .../functions/fnc__handleSyncedEvent.sqf      | 36 +++++++++++++
 .../functions/fnc_addSyncedEventHandler.sqf   | 32 ++++++++++++
 .../fnc_removeSyncedEventHandler.sqf          | 24 +++++++++
 .../functions/fnc_requestSyncedEvent.sqf      | 17 ++++++
 addons/common/functions/fnc_syncedEvent.sqf   | 31 +++++++++++
 .../common/functions/fnc_syncedEventPFH.sqf   | 52 +++++++++++++++++++
 9 files changed, 247 insertions(+), 1 deletion(-)
 create mode 100644 addons/common/functions/fnc__handleRequestSyncedEvent.sqf
 create mode 100644 addons/common/functions/fnc__handleSyncedEvent.sqf
 create mode 100644 addons/common/functions/fnc_addSyncedEventHandler.sqf
 create mode 100644 addons/common/functions/fnc_removeSyncedEventHandler.sqf
 create mode 100644 addons/common/functions/fnc_requestSyncedEvent.sqf
 create mode 100644 addons/common/functions/fnc_syncedEvent.sqf
 create mode 100644 addons/common/functions/fnc_syncedEventPFH.sqf

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index e470e91c95..96b0f34356 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -87,7 +87,7 @@ enableCamShake true;
 // Set the name for the current player
 ["playerChanged", {
     EXPLODE_2_PVT(_this,_newPlayer,_oldPlayer);
-
+    diag_log text format["PLAYER CHANGED!", _this];
     if (alive _newPlayer) then {
         [_newPlayer] call FUNC(setName)
     };
@@ -188,3 +188,8 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
     // Players can always interact with passengers of the same vehicle
     {!((_this select 0) isEqualTo (_this select 1)) && {vehicle (_this select 0) == vehicle (_this select 1)}}
 }] call FUNC(addCanInteractWithCondition);
+
+// Synced ACE events
+["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
+["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler);
+[FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler;
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index b5382d0b5e..5bacea7505 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -269,6 +269,18 @@ PREP(hashListSelect);
 PREP(hashListSet);
 PREP(hashListPush);
 
+// Synchronized Events
+PREP(syncedEventPFH);
+PREP(addSyncedEventHandler);
+PREP(removeSyncedEventHandler);
+PREP(syncedEvent);
+PREP(_handleSyncedEvent);
+PREP(_handleRequestSyncedEvent);
+PREP(requestSyncedEvent);
+GVAR(syncedEvents) = HASH_CREATE;
+
+// @TODO: Generic local-managed global-synced objects (createVehicleLocal)
+
 //Debug
 ACE_COUNTERS = [];
 
diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
new file mode 100644
index 0000000000..643ce40916
--- /dev/null
+++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
@@ -0,0 +1,37 @@
+/*
+ * Author: jaynus
+ *
+ *
+ * Argument:
+ * 
+ * Return value:
+ * Boolean of success
+ */
+ #define DEBUG_MODE_FULL
+#include "script_component.hpp"
+
+//SEH_s
+if(isServer) then {
+    // Find the event name, and shovel out the events to the client
+    PARAMS_2(_eventName,_client);
+    private["_eventEntry", "_eventLog"];
+    
+    if(!HASH_HASKEY(GVAR(syncedEvents),_eventName)) exitWith {
+        diag_log text format["[ACE] Error, request for synced event - key not found."];
+        false
+    };
+    _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
+    _eventLog = _eventEntry select 1;
+    
+    ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
+} else {
+    PARAMS_2(_eventName,_eventLog);
+    // This is the client handling the response from the server
+    // Start running the events
+    {
+        _eventArgs = _x select 1;
+        [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent);
+    } forEach _eventLog;
+};
+
+true
\ No newline at end of file
diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf
new file mode 100644
index 0000000000..14dfc32bae
--- /dev/null
+++ b/addons/common/functions/fnc__handleSyncedEvent.sqf
@@ -0,0 +1,36 @@
+/*
+ * Author: jaynus
+ *
+ * Call and propegate a synced event
+ *
+ * Argument:
+ * 0: Name (String)
+ * 1: Arguments (Array)
+ * 2: TTL (Number or Code) [Optional]
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+PARAMS_3(_name,_args,_ttl);
+private["_internalData", "_eventLog", "_eventCode"];
+
+if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
+    diag_log text format["[ACE] Error, synced event key not found."];
+    false
+};
+
+_internalData = HASH_GET(GVAR(syncedEvents),_name);
+
+if(isServer) then {
+    // Server needs to internally log it for synchronization
+    if(_ttl > -1) then {
+        _internalData = HASH_GET(GVAR(syncedEvents),_name);
+        _eventLog = _internalData select 1;
+        _eventLog pushback [diag_tickTime, _args, _ttl];
+    };
+};
+
+_eventCode = _internalData select 0;
+_args call _eventCode;
\ No newline at end of file
diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf
new file mode 100644
index 0000000000..ab9d8bb829
--- /dev/null
+++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf
@@ -0,0 +1,32 @@
+/*
+ * Author: jaynus
+ *
+ * Register an event handler for an ACE synced event
+ *
+ * Argument:
+ * 0: Name (String)
+ * 1: Handler (Code)  
+ * 2: TTL (Number or Code) [Optional]
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+PARAMS_2(_name,_handler);
+
+private["_ttl", "_eventId", "_data"];
+if( (count _this) > 2) then {
+    _ttl = _this select 2;
+} else {
+    _ttl = 0;
+};
+
+if(HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
+    diag_log text format["[ACE] Error, duplicate synced event creation."];
+    false
+};
+
+_eventId = [_name, FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
+_data = [_handler,[],_ttl,_eventId];
+HASH_SET(GVAR(syncedEvents),_name,_data);
\ No newline at end of file
diff --git a/addons/common/functions/fnc_removeSyncedEventHandler.sqf b/addons/common/functions/fnc_removeSyncedEventHandler.sqf
new file mode 100644
index 0000000000..6429120bbe
--- /dev/null
+++ b/addons/common/functions/fnc_removeSyncedEventHandler.sqf
@@ -0,0 +1,24 @@
+/*
+ * Author: jaynus
+ *
+ * Remove a synced event handler
+ *
+ * Argument:
+ * 0: Name (String)
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#include "script_component.hpp"
+PARAMS_1(_name);
+
+if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
+    diag_log text format["[ACE] Error, synced event key not found."];
+    false
+};
+
+_data = HASH_GET(GVAR(syncedEvents),_name);
+_eventId = _data select 3;
+
+[_eventId] call ace_common_fnc_removeEventHandler;
+HASH_REM(GVAR(syncedEvents),_name);
\ No newline at end of file
diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf
new file mode 100644
index 0000000000..f18c3542b5
--- /dev/null
+++ b/addons/common/functions/fnc_requestSyncedEvent.sqf
@@ -0,0 +1,17 @@
+/*
+ * Author: jaynus
+ *
+ *
+ * Argument:
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+PARAMS_1(_eventName);
+
+// Only JIP machines on initialization send this off, requesting sync on events with the serverCommand
+if(isServer) exitWith { false };
+
+["SEH_s", [_eventName, ACE_player] ] call ace_common_fnc_serverEvent;
\ No newline at end of file
diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf
new file mode 100644
index 0000000000..43f4feb5bd
--- /dev/null
+++ b/addons/common/functions/fnc_syncedEvent.sqf
@@ -0,0 +1,31 @@
+/*
+ * Author: jaynus
+ *
+ * Call and propegate a synced event
+ *
+ * Argument:
+ * 0: Name (String)
+ * 1: Arguments (Array)
+ * 2: TTL (Number or Code) [Optional] for this specific event call
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+PARAMS_2(_name,_args);
+private["_ttl", "_eventData", "_internalData", "_eventLog"];
+
+if( (count _this) > 2) then {
+    _ttl = _this select 2;
+} else {
+    _ttl = 0;
+};
+
+if(!HASH_HASKEY(GVAR(syncedEvents),_name)) exitWith {
+    diag_log text format["[ACE] Error, synced event key not found."];
+    false
+};
+
+_eventData = [_name, _args,_ttl];
+["SEH", _eventData] call FUNC(globalEvent);
\ No newline at end of file
diff --git a/addons/common/functions/fnc_syncedEventPFH.sqf b/addons/common/functions/fnc_syncedEventPFH.sqf
new file mode 100644
index 0000000000..e8a21202ab
--- /dev/null
+++ b/addons/common/functions/fnc_syncedEventPFH.sqf
@@ -0,0 +1,52 @@
+//#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+
+if(!isServer) exitWith { false };
+
+// Walk through the local synced events and clean up anything thats already EOL
+// @TODO: This should be iteration limited to prevent FPS lag
+private["_data"];
+{
+    private["_data", "_ttl", "_eventLog", "_newEventLog", "_name"];
+    _name = _x;
+
+    _data = HASH_GET(GVAR(syncedEvents),_name);
+    _eventLog = _data select 1;
+    _globalEventTTL = _data select 2; 
+    _newEventLog = [];
+    
+    // @TODO: This should be iteration limited to prevent FPS lag
+    {
+        private["_eventEntry", "_ttlReturn"];
+        _eventEntry = _x;
+        
+        _ttlReturn = true;
+        if(typeName _globalEventTTL == "CODE") then {
+            _ttlReturn = [(_data select 0),_eventEntry] call _globalEventTTL;
+        } else {
+            _ttlReturn = call { _globalEventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _globalEventTTL} };
+        };
+
+        if(_ttlReturn) then {
+            // Do event based TTL check
+            private["_eventTTL"];
+            _eventTTL = _eventEntry select 2;
+            
+            if(typeName _eventTTL == "CODE") then {
+                _ttlReturn = [(_data select 0),_eventEntry] call _eventTTL;
+            } else {
+                _ttlReturn = call { _eventTTL < 1 || {diag_tickTime < (_eventEntry select 0) + _eventTTL} };
+            };
+        };
+
+        // Finally drop it if the TTL check fails
+        if(_ttlReturn) then {
+            _newEventLog pushBack _x;
+        };
+    } forEach _eventLog;
+    
+    _data set[1, _newEventLog];
+} forEach (GVAR(syncedEvents) select 0);
+
+
+// @TODO: Next, detect if we had a new request from a JIP player, and we need to continue syncing events

From 2f1ee94d91598278d26a975bbb99d176bef0a486 Mon Sep 17 00:00:00 2001
From: Aleksey Yermakov <epmak777@gmail.com>
Date: Fri, 17 Apr 2015 20:24:32 +0300
Subject: [PATCH 085/257] Update stringtable.xml

---
 addons/ballistics/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index 238cdabaf3..d79855b916 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -685,7 +685,7 @@
             <Polish>Magazynek 9x19mm 16rd</Polish>
             <French>9x19mm 30Cps</French>
             <Spanish>Cargador de 16 balas de 9x19mm</Spanish>
-            <Russian>Магазин из 30-ти 9х19 мм</Russian>
+            <Russian>Магазин из 16-ти 9х19 мм</Russian>
         </Key>
         <Key ID="STR_ACE_30Rnd_9x19_mag_Name">
             <English>9x19mm 30Rnd Mag</English>

From 8a669c390a16a23a0cee27680092501f15add04d Mon Sep 17 00:00:00 2001
From: Aleksey Yermakov <epmak777@gmail.com>
Date: Fri, 17 Apr 2015 20:35:34 +0300
Subject: [PATCH 086/257] Update stringtable.xml

---
 addons/ballistics/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index d79855b916..30aa21b748 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -994,7 +994,7 @@
             <English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Balas: 10</Spanish>
-            <Russian>Калибр: 8,6x70 мм (300 гран Sierra MatchKing HPBT)&lt;br /&gt;Патронов: 10</Russian>
+            <Russian>Калибр: .338 (300 гран Sierra MatchKing HPBT)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
             <English>.338 10Rnd Mag (API526)</English>
@@ -1012,7 +1012,7 @@
             <English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
-            <Russian>Калибр: 8,6x70 мм (API526)&lt;br /&gt;Патронов: 10</Russian>
+            <Russian>Калибр: .338 (API526)&lt;br /&gt;Патронов: 10</Russian>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
             <English>12.7x99mm 5Rnd Mag</English>

From c86be1266800b7683d0dcbb4dbfcf5a598d3111a Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:24:05 +0200
Subject: [PATCH 087/257] fixes #599

---
 addons/medical/functions/fnc_determineIfFatal.sqf | 6 +++---
 addons/medical/functions/fnc_handleDamage.sqf     | 6 ++++++
 addons/medical/functions/fnc_setUnconscious.sqf   | 7 ++++++-
 3 files changed, 15 insertions(+), 4 deletions(-)

diff --git a/addons/medical/functions/fnc_determineIfFatal.sqf b/addons/medical/functions/fnc_determineIfFatal.sqf
index 6c90e54da3..aedcf161ee 100644
--- a/addons/medical/functions/fnc_determineIfFatal.sqf
+++ b/addons/medical/functions/fnc_determineIfFatal.sqf
@@ -21,10 +21,10 @@ if ((vehicle _unit != _unit) && {!alive (vehicle _unit)}) exitwith { true };
 
 // Find the correct Damage threshold for unit.
 _damageThreshold = [1,1,1];
-if (isPlayer _unit) then {
-    //_damageThreshold =_unit getvariable[QGVAR(unitDamageThreshold), [GVAR(damageThreshold_Players), GVAR(damageThreshold_Players), GVAR(damageThreshold_Players) * 1.7]];
+if ([_unit] call EFUNC(common,IsPlayer)) then {
+    _damageThreshold =_unit getvariable[QGVAR(unitDamageThreshold), [GVAR(playerDamageThreshold), GVAR(playerDamageThreshold), GVAR(playerDamageThreshold) * 1.7]];
 } else {
-    //_damageThreshold =_unit getvariable[QGVAR(unitDamageThreshold), [GVAR(damageThreshold_AI), GVAR(damageThreshold_AI), GVAR(damageThreshold_AI) * 1.7]];
+    _damageThreshold =_unit getvariable[QGVAR(unitDamageThreshold), [GVAR(AIDamageThreshold), GVAR(AIDamageThreshold), GVAR(AIDamageThreshold) * 1.7]];
 };
 
 _damageBodyPart = ((_unit getvariable [QGVAR(bodyPartStatus),[0, 0, 0, 0, 0, 0]]) select _part) + _withDamage;
diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index 1632a8f55b..c80f0c63e8 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -36,6 +36,12 @@ if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0};
 
 _damageReturn = _damage;
 if (GVAR(level) < 2) then {
+    if ([_unit] call EFUNC(isPlayer)) then {
+        _this set [2, _damage / (GVAR(playerDamageThreshold) max 0.01)];
+    } else {
+        _this set [2, _damage / (GVAR(AIDamageThreshold) max 0.01)];
+    };
+
     _damageReturn = _this call FUNC(handleDamage_basic);
 };
 
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 89ab5ee3b3..7fcfa0d24b 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -23,7 +23,7 @@ _set = if (count _this > 1) then {_this select 1} else {true};
 _minWaitingTime = if (count _this > 2) then {_this select 2} else {DEFAULT_DELAY};
 
 if !(_set) exitwith {
-    _unit setvariable ["ACE_isUnconscious", false,true];
+    _unit setvariable ["ACE_isUnconscious", false, true];
 };
 
 if !(!(isNull _unit) && {(_unit isKindOf "CaManBase") && ([_unit] call EFUNC(common,isAwake))}) exitwith{};
@@ -40,6 +40,11 @@ if (_unit == ACE_player) then {
     closeDialog 0;
 };
 
+// if we have unconsciousness for AI disabled, we will kill the unit instead
+if (!([_unit] call EFUNC(common,IsPlayer)) && (GVAR(enableUnsconsiousnessAI) == 0 || (GVAR(enableUnsconsiousnessAI) == 2 && random(1) <= 0.5))) exitwith {
+    [_unit, true] call FUNC(setDead); // force, to avoid getting into a loop in case revive is enabled.
+};
+
 // If a unit has the launcher out, it will sometimes start selecting the primairy weapon while unconscious,
 // therefor we force it to select the primairy weapon before going unconscious
 if ((vehicle _unit) isKindOf "StaticWeapon") then {

From 8b7e46c45f9421d2d87fefa19becf65e2c73aec0 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:26:28 +0200
Subject: [PATCH 088/257] fixes #656

---
 addons/medical/functions/fnc_setUnconscious.sqf | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 7fcfa0d24b..c6a0e80c9b 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -91,6 +91,12 @@ _startingTime = time;
     _hasMovedOut = _args select 5;
 
     if (!alive _unit) exitwith {
+        [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
+        [_unit, false] call EFUNC(common,disableAI);
+        _unit setUnitPos _originalPos;
+        _unit setUnconscious false;
+        ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
+
         [(_this select 1)] call cba_fnc_removePerFrameHandler;
     };
 

From 0e90199e23a75feb5a4390a1b93bbafee913160e Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Fri, 17 Apr 2015 20:29:01 +0200
Subject: [PATCH 089/257] remove debug message

---
 addons/disposable/CfgEventHandlers.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/disposable/CfgEventHandlers.hpp b/addons/disposable/CfgEventHandlers.hpp
index 4b5614f553..e4e4abffd8 100644
--- a/addons/disposable/CfgEventHandlers.hpp
+++ b/addons/disposable/CfgEventHandlers.hpp
@@ -22,7 +22,7 @@ class Extended_FiredBIS_EventHandlers {
 class Extended_InitPost_EventHandlers {
     class CAManBase {
         class ADDON {
-            init = QUOTE([ARR_2(_this select 0, secondaryWeapon (_this select 0))] call FUNC(takeLoadedATWeapon); systemChat str [ARR_2(_this select 0, secondaryWeapon (_this select 0))]);
+            init = QUOTE([ARR_2(_this select 0, secondaryWeapon (_this select 0))] call FUNC(takeLoadedATWeapon));
         };
     };
 };

From 0234eedd54ac6d87203c1db89b85bbf3e4d8211f Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:33:13 +0200
Subject: [PATCH 090/257] Changed, only drop unit is player goes unconscious,
 otherwise keep carrying/dragging unit

---
 .../dragging/functions/fnc_handleUnconscious.sqf   | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/addons/dragging/functions/fnc_handleUnconscious.sqf b/addons/dragging/functions/fnc_handleUnconscious.sqf
index 41562756a2..31c703f37b 100644
--- a/addons/dragging/functions/fnc_handleUnconscious.sqf
+++ b/addons/dragging/functions/fnc_handleUnconscious.sqf
@@ -9,8 +9,6 @@ _isUnconscious = _this select 1;
 private "_player";
 _player = ACE_player;
 
-if ((_unit getHitPointDamage "HitLeftLeg") + (_unit getHitPointDamage "HitRightLeg") > 0.4) exitwith {};
-
 if (_player getVariable [QGVAR(isDragging), false]) then {
 
     private "_draggedObject";
@@ -22,9 +20,9 @@ if (_player getVariable [QGVAR(isDragging), false]) then {
     };
 
     // handle waking up dragged unit
-    if (_unit == _draggedObject) then {
-        [_player, _draggedObject] call FUNC(dropObject);
-    };
+    //if (_unit == _draggedObject) then {
+        // [_player, _draggedObject] call FUNC(dropObject);
+    //};
 
 };
 
@@ -39,8 +37,8 @@ if (_player getVariable [QGVAR(isCarrying), false]) then {
     };
 
     // handle waking up dragged unit
-    if (_unit == _carriedObject) then {
-        [_player, _carriedObject] call FUNC(dropObject_carry);
-    };
+    //if (_unit == _carriedObject) then {
+        // [_player, _carriedObject] call FUNC(dropObject_carry);
+    //};
 
 };

From 847ee7e2294312c1c48da0b0585388062241e642 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:38:02 +0200
Subject: [PATCH 091/257] Moved unconscious event, so it won't conflict in case
 the unit is still being carried

---
 addons/medical/functions/fnc_setUnconscious.sqf | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index c6a0e80c9b..63be3fe5a0 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -118,6 +118,7 @@ _startingTime = time;
                 // TODO: what if the unit switched vehicle?
                 [_unit, _oldAnimation, 2] call EFUNC(common,doAnimation);
             };
+            ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
             // EXIT PFH
             [(_this select 1)] call cba_fnc_removePerFrameHandler;
         };
@@ -133,7 +134,7 @@ _startingTime = time;
             _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)
 
             _unit setUnconscious false;
-            ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
+
             // ensure this statement runs only once
             _args set [5, true];
         };

From b333e6e662c7e1e8389a1fe3fa169c5dc449d23b Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:40:24 +0200
Subject: [PATCH 092/257] Keep units longer unconscious, instead of quickly
 fading in/out

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

diff --git a/addons/medical/functions/fnc_handleUnitVitals.sqf b/addons/medical/functions/fnc_handleUnitVitals.sqf
index 2b175d7ca2..411f64b49e 100644
--- a/addons/medical/functions/fnc_handleUnitVitals.sqf
+++ b/addons/medical/functions/fnc_handleUnitVitals.sqf
@@ -94,7 +94,7 @@ if (GVAR(level) >= 2) then {
     if ([_unit] call EFUNC(common,isAwake)) then {
         if (_bloodVolume < 60) then {
             if (random(1) > 0.9) then {
-                [_unit] call FUNC(setUnconscious);
+                [_unit, true, 15 + random(20)] call FUNC(setUnconscious);
             };
         };
     };
@@ -136,7 +136,7 @@ if (GVAR(level) >= 2) then {
 
     if (!(_unit getvariable [QGVAR(inCardiacArrest),false])) then {
         if (_heartRate < 10 || _bloodPressureH < 30 || _bloodVolume < 20) then {
-            [_unit] call FUNC(setUnconscious); // safety check to ensure unconsciousness for units if they are not dead already.
+            [_unit, true, 10+ random(20)] call FUNC(setUnconscious); // safety check to ensure unconsciousness for units if they are not dead already.
         };
 
         if (_bloodPressureH > 260) then {

From 80139521bcc030eb21e8eda97edebe0d80d93249 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:49:24 +0200
Subject: [PATCH 093/257] fixes #691

---
 addons/medical/functions/fnc_handleDamage.sqf   |  2 +-
 addons/medical/functions/fnc_setUnconscious.sqf | 12 ++++++++++--
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index c80f0c63e8..876feae637 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -36,7 +36,7 @@ if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0};
 
 _damageReturn = _damage;
 if (GVAR(level) < 2) then {
-    if ([_unit] call EFUNC(isPlayer)) then {
+    if ([_unit] call EFUNC(common,isPlayer)) then {
         _this set [2, _damage / (GVAR(playerDamageThreshold) max 0.01)];
     } else {
         _this set [2, _damage / (GVAR(AIDamageThreshold) max 0.01)];
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 63be3fe5a0..99651fc085 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -81,7 +81,7 @@ _unit setUnitPos "DOWN";
 _startingTime = time;
 
 [{
-    private ["_unit", "_vehicleOfUnit","_minWaitingTime", "_oldAnimation", "_captiveSwitch", "_hasMovedOut"];
+    private ["_unit", "_vehicleOfUnit","_minWaitingTime", "_oldAnimation", "_captiveSwitch", "_hasMovedOut", "_parachuteCheck"];
     _args = _this select 0;
     _unit = _args select 0;
     _oldAnimation = _args select 1;
@@ -89,6 +89,7 @@ _startingTime = time;
     _startingTime = _args select 3;
     _minWaitingTime = _args select 4;
     _hasMovedOut = _args select 5;
+    _parachuteCheck = _args select 6;
 
     if (!alive _unit) exitwith {
         [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
@@ -140,6 +141,13 @@ _startingTime = time;
         };
     };
 
+    if (_parachuteCheck) then {
+        if !(vehicle _unit isKindOf "ParachuteBase") then {
+            [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation);
+            _args set [6, false];
+        };
+    };
+
     // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs
     if ((time - _startingTime) >= _minWaitingTime) exitwith {
 
@@ -147,6 +155,6 @@ _startingTime = time;
             _unit setvariable ["ACE_isUnconscious", false, true];
         };
     };
-}, 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false] ] call CBA_fnc_addPerFrameHandler;
+}, 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler;
 
 ["medical_onUnconscious", [_unit, true]] call EFUNC(common,globalEvent);

From 9b4435827ecfe5c29ac27ed1432880f784aaddfe Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 20:51:57 +0200
Subject: [PATCH 094/257] Added setting for unconscious animations on treatment

---
 addons/medical/ACE_Settings.hpp            | 4 ++++
 addons/medical/functions/fnc_treatment.sqf | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 56e5a531ec..0007352dda 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -124,4 +124,8 @@ class ACE_Settings {
         values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"};
         isClientSettable = 1;
     };
+    class GVAR(allowUnconsciousAnimationOnTreatment) {
+        typeName = "BOOL";
+        value = 0;
+    };
 };
diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf
index e010279be1..bb291d6c98 100644
--- a/addons/medical/functions/fnc_treatment.sqf
+++ b/addons/medical/functions/fnc_treatment.sqf
@@ -129,7 +129,7 @@ if (isNil _callbackProgress) then {
 
 // Patient Animation
 _patientAnim = getText (_config >> "animationPatient");
-if (_target getvariable ["ACE_isUnconscious", false]) then {
+if (_target getvariable ["ACE_isUnconscious", false] && GVAR(allowUnconsciousAnimationOnTreatment)) then {
     if !(animationState _target in (getArray (_config >> "animationPatientUnconsciousExcludeOn"))) then {
         _patientAnim = getText (_config >> "animationPatientUnconscious");
     };

From 8bfb76c9651cc4e34fea01cdaaaa8a9996691540 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Fri, 17 Apr 2015 12:05:49 -0700
Subject: [PATCH 095/257] #552 - Default: don't check external files

---
 tools/make.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/tools/make.py b/tools/make.py
index 29cf3f1956..4af9341b6b 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -321,6 +321,7 @@ make.py [help] [test] [force] [key <name>] [target <name>] [release <version>]
 test -- Copy result to Arma 3.
 release <version> -- Make archive with <version>.
 force -- Ignore cache and build all.
+checkexternal -- Check External Files
 target <name> -- Use rules in make.cfg under heading [<name>] rather than
    default [Make]
 key <name> -- Use key in working directory with <name> to sign. If it does not
@@ -378,6 +379,12 @@ See the make.cfg file for additional build options.
 		quiet = True
 		argv.remove("quiet")
 
+	if "checkexternal" in argv:
+		argv.remove("checkexternal")
+		check_external = True
+	else:
+		check_external = False
+
 	# Get the directory the make script is in.
 	make_root = os.path.dirname(os.path.realpath(__file__))
 	make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
@@ -658,8 +665,12 @@ See the make.cfg file for additional build options.
 					cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
 
 				else:
-					cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+                                        if check_external:
+                                                cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+                                        else:
+                                                cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
 
+				print_yellow(cmd)
 				color("grey")
 				if quiet:
 					devnull = open(os.devnull, 'w')

From 31bc09a9a32d0135144cd029cb83a04d8ae75fba Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 21:06:30 +0200
Subject: [PATCH 096/257] fixed AI standing up before being killed Doesn't
 matter if we enable AI again on dead units

---
 addons/common/functions/fnc_disableAI.sqf       | 2 +-
 addons/medical/functions/fnc_setUnconscious.sqf | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/common/functions/fnc_disableAI.sqf b/addons/common/functions/fnc_disableAI.sqf
index 92ad35c0f9..0e1985eced 100644
--- a/addons/common/functions/fnc_disableAI.sqf
+++ b/addons/common/functions/fnc_disableAI.sqf
@@ -27,7 +27,7 @@ if ((local _unit) && {!([_unit] call EFUNC(common,isPlayer))}) then {
         _unit disableConversation true;
     } else {
         //Sanity check to make sure we don't enable unconsious AI
-        if (_unit getVariable ["ace_isunconscious", false]) exitWith {ERROR("Enabling AI for unconsious unit");};
+        if (_unit getVariable ["ace_isunconscious", false] && alive _unit) exitWith {ERROR("Enabling AI for unconsious unit");};
         _unit enableAI "MOVE";
         _unit enableAI "TARGET";
         _unit enableAI "AUTOTARGET";
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 99651fc085..3ef4df4d3f 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -94,7 +94,7 @@ _startingTime = time;
     if (!alive _unit) exitwith {
         [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
         [_unit, false] call EFUNC(common,disableAI);
-        _unit setUnitPos _originalPos;
+        //_unit setUnitPos _originalPos;
         _unit setUnconscious false;
         ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
 

From eb731b116939cf81289dcff585ad87ea77119e62 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 21:07:09 +0200
Subject: [PATCH 097/257] fixes #653

---
 addons/medical/functions/fnc_treatment.sqf         | 2 ++
 addons/medical/functions/fnc_treatment_failure.sqf | 9 ++++++++-
 addons/medical/functions/fnc_treatment_success.sqf | 9 ++++++++-
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf
index bb291d6c98..df6cc173d0 100644
--- a/addons/medical/functions/fnc_treatment.sqf
+++ b/addons/medical/functions/fnc_treatment.sqf
@@ -149,6 +149,8 @@ if (_caller == _target) then {
     _callerAnim = [getText (_config >> "animationCallerSelf"), getText (_config >> "animationCallerSelfProne")] select (stance _caller == "PRONE");
 };
 
+_caller setvariable [QGVAR(selectedWeaponOnTreatment), currentWeapon _caller];
+
 // Cannot use secondairy weapon for animation
 if (currentWeapon _caller == secondaryWeapon _caller) then {
     _caller selectWeapon (primaryWeapon _caller);
diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf
index d4f853374c..fe8bafb0c7 100644
--- a/addons/medical/functions/fnc_treatment_failure.sqf
+++ b/addons/medical/functions/fnc_treatment_failure.sqf
@@ -17,7 +17,7 @@
 
 #include "script_component.hpp"
 
-private ["_caller", "_target","_selectionName","_className","_config","_callback", "_usersOfItems"];
+private ["_caller", "_target","_selectionName","_className","_config","_callback", "_usersOfItems", "_weaponSelect"];
 
 _args = _this select 0;
 _caller = _args select 0;
@@ -34,6 +34,13 @@ if (vehicle _caller == _caller) then {
 };
 _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
 
+_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
+if (_weaponSelect != "") then {
+	_caller selectWeapon _weaponSelect;
+} else {
+	_caller action ["SwitchWeapon", _caller, _caller, 99];
+};
+
 {
     (_x select 0) addItem (_x select 1);
 }foreach _usersOfItems;
diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf
index 5910a4be86..6822f674c7 100644
--- a/addons/medical/functions/fnc_treatment_success.sqf
+++ b/addons/medical/functions/fnc_treatment_success.sqf
@@ -17,7 +17,7 @@
 
 #include "script_component.hpp"
 
-private ["_caller", "_target","_selectionName","_className","_config","_callback"];
+private ["_caller", "_target","_selectionName","_className","_config","_callback", "_weaponSelect"];
 _args = _this select 0;
 _caller = _args select 0;
 _target = _args select 1;
@@ -32,6 +32,13 @@ if (vehicle _caller == _caller) then {
 };
 _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
 
+_weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
+if (_weaponSelect != "") then {
+	_caller selectWeapon _weaponSelect;
+} else {
+	_caller action ["SwitchWeapon", _caller, _caller, 99];
+};
+
 // Record specific callback
 _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className);
 if (GVAR(level) >= 2) then {

From e816907c503c88cedce17a26946cafb4901a458b Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Fri, 17 Apr 2015 12:21:32 -0700
Subject: [PATCH 098/257] #552 - Tab clean up

---
 tools/make.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index 4af9341b6b..166d21c49d 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -665,10 +665,10 @@ See the make.cfg file for additional build options.
 					cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
 
 				else:
-                                        if check_external:
-                                                cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
-                                        else:
-                                                cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+					if check_external:
+						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+					else:
+						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
 
 				print_yellow(cmd)
 				color("grey")

From 008c36ac763de4036389469d9edf405b81099d4c Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 21:27:57 +0200
Subject: [PATCH 099/257] fixes #699

---
 addons/medical/XEH_preInit.sqf                |  1 +
 addons/medical/functions/fnc_handleLocal.sqf  | 10 ++
 .../medical/functions/fnc_setUnconscious.sqf  | 77 +--------------
 .../medical/functions/fnc_unconsciousPFH.sqf  | 93 +++++++++++++++++++
 4 files changed, 105 insertions(+), 76 deletions(-)
 create mode 100644 addons/medical/functions/fnc_unconsciousPFH.sqf

diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index f15b4ec109..a54b6d0d8f 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -97,6 +97,7 @@ PREP(moduleAssignMedicalFacility);
 PREP(moduleTreatmentConfiguration);
 PREP(copyDeadBody);
 PREP(requestWoundSync);
+PREP(unconsciousPFH);
 
 GVAR(injuredUnitCollection) = [];
 GVAR(IVBags) = [];
diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf
index 5d9c5865a4..5a6123d9f7 100644
--- a/addons/medical/functions/fnc_handleLocal.sqf
+++ b/addons/medical/functions/fnc_handleLocal.sqf
@@ -22,4 +22,14 @@ if (_local) then {
     if (_unit getvariable[QGVAR(addedToUnitLoop),false]) then {
         [_unit, true] call FUNC(addToInjuredCollection);
     };
+
+    if (count (_unit getvariable [QGVAR(unconsciousArguments), []]) >= 7) then {
+    	private "_arguments";
+    	_arguments = (_unit getvariable [QGVAR(unconsciousArguments), []]);
+    	_arguments set [ 3, time];
+
+    	[DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler;
+
+    	_unit setvariable [QGVAR(unconsciousArguments), nil, true];
+    };
 };
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index 3ef4df4d3f..ef9ccb246d 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -80,81 +80,6 @@ _unit setUnitPos "DOWN";
 
 _startingTime = time;
 
-[{
-    private ["_unit", "_vehicleOfUnit","_minWaitingTime", "_oldAnimation", "_captiveSwitch", "_hasMovedOut", "_parachuteCheck"];
-    _args = _this select 0;
-    _unit = _args select 0;
-    _oldAnimation = _args select 1;
-    _originalPos = _args select 2;
-    _startingTime = _args select 3;
-    _minWaitingTime = _args select 4;
-    _hasMovedOut = _args select 5;
-    _parachuteCheck = _args select 6;
-
-    if (!alive _unit) exitwith {
-        [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
-        [_unit, false] call EFUNC(common,disableAI);
-        //_unit setUnitPos _originalPos;
-        _unit setUnconscious false;
-        ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
-
-        [(_this select 1)] call cba_fnc_removePerFrameHandler;
-    };
-
-    // In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation
-    if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith {
-
-        // TODO, handle this with carry instead, so we can remove the PFH here.
-        // Wait until the unit isn't being carried anymore, so we won't end up with wierd animations
-        if !(([_unit] call FUNC(isBeingCarried)) || ([_unit] call FUNC(isBeingDragged))) then {
-            if (vehicle _unit == _unit) then {
-                if (animationState _unit == "AinjPpneMstpSnonWrflDnon") then {
-                    [_unit,"AinjPpneMstpSnonWrflDnon_rolltofront", 2] call EFUNC(common,doAnimation);
-                    [_unit,"amovppnemstpsnonwnondnon", 1] call EFUNC(common,doAnimation);
-                } else {
-                    [_unit,"amovppnemstpsnonwnondnon", 2] call EFUNC(common,doAnimation);
-                };
-            } else {
-                // Switch to the units original animation, assuming
-                // TODO: what if the unit switched vehicle?
-                [_unit, _oldAnimation, 2] call EFUNC(common,doAnimation);
-            };
-            ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
-            // EXIT PFH
-            [(_this select 1)] call cba_fnc_removePerFrameHandler;
-        };
-        if (!_hasMovedOut) then {
-            // Reset the unit back to the previous captive state.
-            [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
-
-            // Swhich the unit back to its original group
-            //Unconscious units shouldn't be put in another group #527:
-            // [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
-
-            [_unit, false] call EFUNC(common,disableAI);
-            _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)
-
-            _unit setUnconscious false;
-
-            // ensure this statement runs only once
-            _args set [5, true];
-        };
-    };
-
-    if (_parachuteCheck) then {
-        if !(vehicle _unit isKindOf "ParachuteBase") then {
-            [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation);
-            _args set [6, false];
-        };
-    };
-
-    // Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs
-    if ((time - _startingTime) >= _minWaitingTime) exitwith {
-
-        if (!([_unit] call FUNC(getUnconsciousCondition))) then {
-            _unit setvariable ["ACE_isUnconscious", false, true];
-        };
-    };
-}, 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler;
+[DFUNC(unconsciousPFH), 0.1, [_unit,_animState, _originalPos, _startingTime, _minWaitingTime, false, vehicle _unit isKindOf "ParachuteBase"] ] call CBA_fnc_addPerFrameHandler;
 
 ["medical_onUnconscious", [_unit, true]] call EFUNC(common,globalEvent);
diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf
new file mode 100644
index 0000000000..406d0278c1
--- /dev/null
+++ b/addons/medical/functions/fnc_unconsciousPFH.sqf
@@ -0,0 +1,93 @@
+/*
+ * Author: Glowbal
+ * PFH logic for unconscious state
+ *
+ * Arguments:
+ * 0: The unit that will be put in an unconscious state <OBJECT>
+ *
+ * ReturnValue:
+ * nil
+ *
+ * Public: yes
+ */
+
+#include "script_component.hpp"
+
+private ["_unit", "_vehicleOfUnit","_minWaitingTime", "_oldAnimation", "_captiveSwitch", "_hasMovedOut", "_parachuteCheck"];
+_args = _this select 0;
+_unit = _args select 0;
+_oldAnimation = _args select 1;
+_originalPos = _args select 2;
+_startingTime = _args select 3;
+_minWaitingTime = _args select 4;
+_hasMovedOut = _args select 5;
+_parachuteCheck = _args select 6;
+
+if (!alive _unit) exitwith {
+    [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
+    [_unit, false] call EFUNC(common,disableAI);
+    //_unit setUnitPos _originalPos;
+    _unit setUnconscious false;
+    ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
+
+    [(_this select 1)] call cba_fnc_removePerFrameHandler;
+};
+
+// In case the unit is no longer in an unconscious state, we are going to check if we can already reset the animation
+if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith {
+    // TODO, handle this with carry instead, so we can remove the PFH here.
+    // Wait until the unit isn't being carried anymore, so we won't end up with wierd animations
+    if !(([_unit] call FUNC(isBeingCarried)) || ([_unit] call FUNC(isBeingDragged))) then {
+        if (vehicle _unit == _unit) then {
+            if (animationState _unit == "AinjPpneMstpSnonWrflDnon") then {
+                [_unit,"AinjPpneMstpSnonWrflDnon_rolltofront", 2] call EFUNC(common,doAnimation);
+                [_unit,"amovppnemstpsnonwnondnon", 1] call EFUNC(common,doAnimation);
+            } else {
+                [_unit,"amovppnemstpsnonwnondnon", 2] call EFUNC(common,doAnimation);
+            };
+        } else {
+            // Switch to the units original animation, assuming
+            // TODO: what if the unit switched vehicle?
+            [_unit, _oldAnimation, 2] call EFUNC(common,doAnimation);
+        };
+        ["medical_onUnconscious", [_unit, false]] call EFUNC(common,globalEvent);
+        // EXIT PFH
+        [(_this select 1)] call cba_fnc_removePerFrameHandler;
+    };
+    if (!_hasMovedOut) then {
+        // Reset the unit back to the previous captive state.
+        [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
+
+        // Swhich the unit back to its original group
+        //Unconscious units shouldn't be put in another group #527:
+        // [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
+
+        [_unit, false] call EFUNC(common,disableAI);
+        _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)
+
+        _unit setUnconscious false;
+
+        // ensure this statement runs only once
+        _args set [5, true];
+    };
+};
+
+if (_parachuteCheck) then {
+    if !(vehicle _unit isKindOf "ParachuteBase") then {
+        [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation);
+        _args set [6, false];
+    };
+};
+
+if (!local _unit) exitwith {
+    _args set [ 4, _minWaitingTime - (time - _startingTime)];
+    _unit setvariable [QGVAR(unconsciousArguments), _args, true];
+    [(_this select 1)] call cba_fnc_removePerFrameHandler;
+};
+
+// Ensure we are waiting at least a minimum period before checking if we can wake up the unit again, allows for temp knock outs
+if ((time - _startingTime) >= _minWaitingTime) exitwith {
+    if (!([_unit] call FUNC(getUnconsciousCondition))) then {
+        _unit setvariable ["ACE_isUnconscious", false, true];
+    };
+};

From fa7bb5f9c64b51e2c5eb9e0a0598c2ea20334e07 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 21:28:47 +0200
Subject: [PATCH 100/257] Added unconscious state check

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

diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf
index 5a6123d9f7..98b390b51a 100644
--- a/addons/medical/functions/fnc_handleLocal.sqf
+++ b/addons/medical/functions/fnc_handleLocal.sqf
@@ -23,7 +23,7 @@ if (_local) then {
         [_unit, true] call FUNC(addToInjuredCollection);
     };
 
-    if (count (_unit getvariable [QGVAR(unconsciousArguments), []]) >= 7) then {
+    if ((_unit getvariable ["ACE_isUnconscious",false]) && {count (_unit getvariable [QGVAR(unconsciousArguments), []]) >= 7}) then {
     	private "_arguments";
     	_arguments = (_unit getvariable [QGVAR(unconsciousArguments), []]);
     	_arguments set [ 3, time];

From 7489e514ce3538bb88eb122f06137e9ba87a9d99 Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Fri, 17 Apr 2015 21:48:04 +0200
Subject: [PATCH 101/257] PL translation

---
 addons/ballistics/stringtable.xml | 15 +++++++++++++++
 addons/medical/stringtable.xml    | 22 ++++++++++++----------
 addons/respawn/stringtable.xml    |  7 +++++++
 3 files changed, 34 insertions(+), 10 deletions(-)

diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index c95da8d760..eb8e3a25c7 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -895,76 +895,91 @@
             <English>6.5x47mm 30Rnd Mag (HPBT Scenar)</English>
             <French>6.5x47mm 30Cps (HPBT Scenar)</French>
             <Spanish>Cargador de 30 balas de 6.5x47mm (HPBT Scenar)</Spanish>
+            <Polish>Magazynek 6,5x47 mm 30rd (HPBT Scenar)</Polish>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_NameShort">
             <English>6.5mm Scenar</English>
             <French>6.5mm Scenar</French>
             <Spanish>6.5mm Scenar</Spanish>
+            <Polish>6,5mm Scenar</Polish>
         </Key>
         <Key ID="STR_ACE_30Rnd_65x47_Scenar_mag_Description">
             <English>Caliber: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Rounds: 30</English>
             <French>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Cartouches: 30</French>
             <Spanish>Calibre: 6.5x47mm (HPBT Scenar)&lt;br /&gt;Balas: 30</Spanish>
+            <Polish>Kaliber: 6,5x47 mm (HPBT Scenar)&lt;br /&gt;Pociski: 30</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Name">
             <English>.338 10Rnd Mag (300gr Sierra MatchKing HPBT)</English>
             <French>.338 10 Cps (300gr Sierra MatchKing HPBT)</French>
             <Spanish>Cargador de 10 balas de 8.6x70mm (300gr Sierra MatchKing HPBT)</Spanish>
+            <Polish>Magazynek .338 10rd (300gr Sierra MatchKing HPBT)</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_NameShort">
             <English>.338 (HPBT)</English>
             <French>.338 (HPBT)</French>
             <Spanish>.338 (HPBT)</Spanish>
+            <Polish>.338 (HPBT)</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_300gr_HPBT_Mag_Description">
             <English>Caliber: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Balas: 10</Spanish>
+            <Polish>Kaliber: 8,6x70 mm (300gr Sierra MatchKing HPBT)&lt;br /&gt;Pociski: 10</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Name">
             <English>.338 10Rnd Mag (API526)</English>
             <French>.338 10Cps (API526)</French>
             <Spanish>Cargador de 10 balas de .338 (API526)</Spanish>
+            <Polish>Magazynek .338 10rd (API526)</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_NameShort">
             <English>.338 AP</English>
             <French>.338 AP</French>
             <Spanish>.338 AP</Spanish>
+            <Polish>.338 AP</Polish>
         </Key>
         <Key ID="STR_ACE_10Rnd_338_API526_Mag_Description">
             <English>Caliber: 8.6x70mm (API526)&lt;br /&gt;Rounds: 10</English>
             <French>Calibre: 8.6x70mm (API526)&lt;br /&gt;Cartouches: 10</French>
             <Spanish>Calibre: 8.6x70mm (API526)&lt;br /&gt;Balas: 10</Spanish>
+            <Polish>Kaliber: 8,6x70 mm (API526)&lt;br /&gt;Pociski: 10</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Name">
             <English>12.7x99mm 5Rnd Mag</English>
             <French>12.7x99mm 5Cps</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm</Spanish>
+            <Polish>Magazynek 12,7x99 mm 5rd</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Polish>12,7mm</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_Mag_Description">
             <English>Caliber: 12.7x99mm&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm&lt;br /&gt;Balas: 5</Spanish>
+            <Polish>Kaliber: 12,7x99 mm&lt;br /&gt;Pociski: 5</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Name">
             <English>12.7x99mm 5Rnd Mag (AMAX)</English>
             <French>12.7x99mm 5Rnd Mag (AMAX)</French>
             <Spanish>Cargador de 5 balas de 12.7x99mm (AMAX)</Spanish>
+            <Polish>Magazynek 12,7x99 mm 5rd (AMAX)</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_NameShort">
             <English>12.7mm</English>
             <French>12.7mm</French>
             <Spanish>12.7mm</Spanish>
+            <Polish>12,7mm</Polish>
         </Key>
         <Key ID="STR_ACE_5Rnd_127x99_AMAX_Mag_Description">
             <English>Caliber: 12.7x99mm (AMAX)&lt;br /&gt;Rounds: 5</English>
             <French>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Cartouches: 5</French>
             <Spanish>Calibre: 12.7x99mm (AMAX)&lt;br /&gt;Balas: 5</Spanish>
+            <Polish>Kaliber: 12,7x99 mm (AMAX)&lt;br /&gt;Pociski: 5</Polish>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9f651e90b7..a8a8017160 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Medical">
         <Key ID="STR_ACE_Medical_Inject_Atropine">
@@ -64,7 +65,7 @@
             <German>Salzlösungtransfusion</German>
             <Spanish>Transfundir salino</Spanish>
             <Czech>Transfúze fyziologický roztoku</Czech>
-            <Polish>Przetocz solankę</Polish>
+            <Polish>Przetocz sól fizjologiczną</Polish>
             <French>Transfuser de la Saline</French>
             <Russian>Перелить физраствор</Russian>
             <Hungarian>Infúzió (sós víz)</Hungarian>
@@ -216,7 +217,7 @@
             <German>Sallösungtransfusion ...</German>
             <Spanish>Transfusión de salino ...</Spanish>
             <Czech>Probíha transfúze fyziologický roztoku ...</Czech>
-            <Polish>Przetaczanie solanki ...</Polish>
+            <Polish>Przetaczanie soli fizjologicznej ...</Polish>
             <French>Transfusion de saline ...</French>
             <Russian>Переливание физраствора ...</Russian>
             <Hungarian>Infúzió sós vizzel ...</Hungarian>
@@ -436,7 +437,7 @@
             <German>Kochsaltzlösung IV (1000ml)</German>
             <Spanish>Dar Salino IV (1000ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (1000 мл)</Russian>
-            <Polish>Podaj solankę IV (1000ml)</Polish>
+            <Polish>Podaj sól fizjologiczną IV (1000ml)</Polish>
             <French>Administrer de la Solution Saline en IV (1000ml)</French>
             <Czech>Podaz fyz. roztok (1000ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (1000ml)</Hungarian>
@@ -447,7 +448,7 @@
             <German>Kochsaltzlösung IV (500ml)</German>
             <Spanish>Dar Salino IV (500ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (500 мл)</Russian>
-            <Polish>Podaj solankę IV (500ml)</Polish>
+            <Polish>Podaj sól fizjologiczną IV (500ml)</Polish>
             <French>Administrer de la Solution Saline en IV (500ml)</French>
             <Czech>Podaz fyz. roztok (500ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (500ml)</Hungarian>
@@ -458,7 +459,7 @@
             <German>Kochsaltzlösung IV (250ml)</German>
             <Spanish>Dar Salino IV (250ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (250 мл)</Russian>
-            <Polish>Podaj solankę IV (250ml)</Polish>
+            <Polish>Podaj sól fizjologiczną IV (250ml)</Polish>
             <French>Administrer de la Solution Saline en IV (250ml)</French>
             <Czech>Podaz fyz. roztok (250ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (250ml)</Hungarian>
@@ -930,7 +931,7 @@
             <Russian>Физраствор для в/в вливания (1000 мл)</Russian>
             <Spanish>Solución Salina IV (1000ml)</Spanish>
             <French>Solution Saline 0.9% IV (1000ml)</French>
-            <Polish>Solanka 0,9% IV (1000ml)</Polish>
+            <Polish>Sól fizjologiczna IV (1000ml)</Polish>
             <German>Kochsalzlösung (1000ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (1000ml)</Hungarian>
             <Italian>Soluzione salina IV (1000ml)</Italian>
@@ -940,7 +941,7 @@
             <Russian>Пакет физраствора для возмещения объема потерянной крови</Russian>
             <Spanish>Solución salina intravenosa, para restaurar el volumen sanguíneo</Spanish>
             <French>Solution Saline 0.9% IV, pour rétablir temporairement la tension artérielle</French>
-            <Polish>Solanka 0,9%, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish>
+            <Polish>Sól fizjologiczna, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish>
             <Hungarian>0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására</Hungarian>
             <Italian>Soluzione salina, usata per ripristinare sangue nei pazienti.</Italian>
         </Key>
@@ -958,7 +959,7 @@
             <Russian>Физраствор для в/в вливания (500 мл)</Russian>
             <Spanish>Salino IV (500ml)</Spanish>
             <French>Solution Saline 0.9% IV (500ml)</French>
-            <Polish>Solanka 0,9% IV (500ml)</Polish>
+            <Polish>Sól fizjologiczna IV (500ml)</Polish>
             <German>Kochsalzlösung (500ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (500ml)</Hungarian>
             <Italian>Soluzione salina IV (500ml)</Italian>
@@ -968,7 +969,7 @@
             <Russian>Физраствор для в/в вливания (250 мл)</Russian>
             <Spanish>Salino IV (250ml)</Spanish>
             <French>Solution Saline 0.9% IV (250ml)</French>
-            <Polish>Solanka 0,9% IV (250ml)</Polish>
+            <Polish>Sól fizjologiczna IV (250ml)</Polish>
             <German>Kochsalzlösung (250ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (250ml)</Hungarian>
             <Italian>Soluzione salina IV (250ml)</Italian>
@@ -1128,6 +1129,7 @@
             <Spanish>La Presión Arterial es %2/%3</Spanish>
             <Hungarian>A vérnyomás %2/%3</Hungarian>
             <Italian>Hai riscontrato una pressione di %2/%3</Italian>
+            <Polish>Wyczuwasz ciśnienie krwi o wartości %2/%3</Polish>
         </Key>
         <Key ID="STR_ACE_MEDICAL_CHECK_BLOODPRESSURE_OUTPUT_2">
             <English>You find a low blood pressure</English>
@@ -1611,4 +1613,4 @@
             <Spanish>Aberración cromática</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index 65e21c0107..5874b095ae 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Interaction">
         <Key ID="STR_ACE_Respawn_Deploy">
@@ -50,36 +51,42 @@
             <German>Sammelpunkt West (Basis)</German>
             <Spanish>Punto de reunión Oeste (Base)</Spanish>
             <Russian>Точка сбора Синих (База)</Russian>
+            <Polish>Punkt zbiórki Zachodu (Baza)</Polish>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEastBase">
             <English>Rallypoint East (Base)</English>
             <German>Sammelpunkt Ost (Basis)</German>
             <Spanish>Punto de reunión Este (Base)</Spanish>
             <Russian>Точка сбора Красных (База)</Russian>
+            <Polish>Punkt zbiórki Wschodu (Baza)</Polish>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependentBase">
             <English>Rallypoint Independent (Base)</English>
             <German>Sammelpunkt Widerstand (Basis)</German>
             <Spanish>Punto de reunión Independiente (Base)</Spanish>
             <Russian>Точка сбора Независимых (База</Russian>
+            <Polish>Punkt zbiórki Ruchu oporu (Baza)</Polish>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWest">
             <English>Rallypoint West</English>
             <German>Sammelpunkt West</German>
             <Spanish>Punto de reunión Oeste</Spanish>
             <Russian>Точка сбора Синих</Russian>
+            <Polish>Punkt zbiórki Zachodu</Polish>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEast">
             <English>Rallypoint East</English>
             <German>Sammelpunkt Ost</German>
             <Spanish>Punto de reunión Este</Spanish>
             <Russian>Точка сбора Красных</Russian>
+            <Polish>Punkt zbiórki Wschodu</Polish>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependent">
             <English>Rallypoint Independent</English>
             <German>Sammelpunkt Widerstand</German>
             <Spanish>Punto de reunión Independiente</Spanish>
             <Russian>Точка сбора Независимых</Russian>
+            <Polish>Punkt zbiórki Ruchu oporu</Polish>
         </Key>
     </Package>
 </Project>
\ No newline at end of file

From 0e858be1b17cdbe1a749887afe567f81bd441c63 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:00:07 +0200
Subject: [PATCH 102/257] Changed conditions for body parts are now always
 true.

This way the medical information is always available, and should help a bit with performance as well.
---
 addons/medical/ACE_Medical_Actions.hpp     | 6 ++++++
 addons/medical/ACE_Medical_SelfActions.hpp | 7 +++++++
 2 files changed, 13 insertions(+)

diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp
index 036dd5e9d9..3acc53cf05 100644
--- a/addons/medical/ACE_Medical_Actions.hpp
+++ b/addons/medical/ACE_Medical_Actions.hpp
@@ -3,6 +3,7 @@ class ACE_Head {
     displayName = "$STR_ACE_Interaction_Head";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
@@ -74,6 +75,7 @@ class ACE_Torso {
     displayName = "$STR_ACE_Interaction_Torso";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
@@ -173,6 +175,7 @@ class ACE_ArmLeft {
     displayName = "$STR_ACE_Interaction_ArmLeft";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
@@ -329,6 +332,7 @@ class ACE_ArmRight {
     displayName = "$STR_ACE_Interaction_ArmRight";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
@@ -482,6 +486,7 @@ class ACE_LegLeft {
     displayName = "$STR_ACE_Interaction_LegLeft";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
@@ -623,6 +628,7 @@ class ACE_LegRight {
     displayName = "$STR_ACE_Interaction_LegRight";
     runOnHover = 1;
     statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
+    condition = "true";
     EXCEPTIONS
     icon = PATHTOF(UI\icons\medical_cross.paa);
     distance = MEDICAL_ACTION_DISTANCE;
diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp
index c2a60898f4..e31e99ad01 100644
--- a/addons/medical/ACE_Medical_SelfActions.hpp
+++ b/addons/medical/ACE_Medical_SelfActions.hpp
@@ -4,6 +4,7 @@ class Medical {
     hotkey = "M";
     exceptions[] = {"isNotInside"};
     statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
+    condition = "true";
     icon = PATHTOF(UI\icons\medical_cross.paa);
 
    class ACE_Head {
@@ -11,6 +12,7 @@ class Medical {
         icon = PATHTOF(UI\icons\medical_cross.paa);
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 0)] call DFUNC(displayPatientInformation));
+        condition = "true";
         runOnHover = 1;
 
         class Bandage {
@@ -78,6 +80,7 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
+        condition = "true";
         showDisabled = 1;
         priority = 2;
         hotkey = "";
@@ -146,6 +149,7 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 2)] call DFUNC(displayPatientInformation));
+        condition = "true";
         icon = PATHTOF(UI\icons\medical_cross.paa);
 
         class Bandage {
@@ -246,6 +250,7 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 3)] call DFUNC(displayPatientInformation));
+        condition = "true";
         icon = PATHTOF(UI\icons\medical_cross.paa);
 
         class Bandage {
@@ -342,6 +347,7 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 4)] call DFUNC(displayPatientInformation));
+        condition = "true";
         icon = PATHTOF(UI\icons\medical_cross.paa);
 
         class Bandage {
@@ -427,6 +433,7 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 5)] call DFUNC(displayPatientInformation));
+        condition = "true";
         icon = PATHTOF(UI\icons\medical_cross.paa);
 
         class Bandage {

From 6d18e484c148aa3e4e783e8ec6b2066e81b98b81 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:02:43 +0200
Subject: [PATCH 103/257] Cache condition for target instead of caller

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

diff --git a/addons/medical/functions/fnc_canTreatCached.sqf b/addons/medical/functions/fnc_canTreatCached.sqf
index 34d753b119..b1dfaf7d12 100644
--- a/addons/medical/functions/fnc_canTreatCached.sqf
+++ b/addons/medical/functions/fnc_canTreatCached.sqf
@@ -19,4 +19,4 @@
 #define MAX_DURATION_CACHE 2
 
 // parameters, function, namespace, uid
-[_this, DFUNC(canTreat), _this select 0, format[QGVAR(canTreat_%1_%2), _this select 2, _this select 3], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall);
+[_this, DFUNC(canTreat), _this select 1, format[QGVAR(canTreat_%1_%2), _this select 2, _this select 3], MAX_DURATION_CACHE, "clearConditionCaches"] call EFUNC(common,cachedCall);

From f5effca21636f18ebbcaef1f48bbb5eac9d7f6b1 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:21:15 +0200
Subject: [PATCH 104/257] fixed handleDamage basic

---
 addons/medical/functions/fnc_handleDamage.sqf       | 6 ------
 addons/medical/functions/fnc_handleDamage_basic.sqf | 6 ++++++
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index 876feae637..1632a8f55b 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -36,12 +36,6 @@ if !(_selection in (GVAR(SELECTIONS) + [""])) exitWith {0};
 
 _damageReturn = _damage;
 if (GVAR(level) < 2) then {
-    if ([_unit] call EFUNC(common,isPlayer)) then {
-        _this set [2, _damage / (GVAR(playerDamageThreshold) max 0.01)];
-    } else {
-        _this set [2, _damage / (GVAR(AIDamageThreshold) max 0.01)];
-    };
-
     _damageReturn = _this call FUNC(handleDamage_basic);
 };
 
diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf
index aa9c2f61df..6e343b127a 100644
--- a/addons/medical/functions/fnc_handleDamage_basic.sqf
+++ b/addons/medical/functions/fnc_handleDamage_basic.sqf
@@ -63,6 +63,12 @@ if (_selectionName in GVAR(SELECTIONS)) then {
     _newDamage = _damage - (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName)));
 };
 
+if ([_unit] call EFUNC(common,isPlayer)) then {
+   _newDamage = _newDamage / (GVAR(playerDamageThreshold) max 0.01);
+} else {
+    _newDamage = _newDamage / (GVAR(AIDamageThreshold) max 0.01);
+};
+
 _damage = _damage - _newDamage;
 
 

From 9670267d2001cf7bd8aeb61f65546d250a2e3f63 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:21:54 +0200
Subject: [PATCH 105/257] Fixed wrong classnames for IV treatments

---
 addons/medical/ACE_Medical_Actions.hpp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/medical/ACE_Medical_Actions.hpp b/addons/medical/ACE_Medical_Actions.hpp
index 3acc53cf05..ed5670f814 100644
--- a/addons/medical/ACE_Medical_Actions.hpp
+++ b/addons/medical/ACE_Medical_Actions.hpp
@@ -427,8 +427,8 @@ class ACE_ArmRight {
     };
     class PlasmaIV: BloodIV {
         displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000";
-        condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(canTreatCached));
-        statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'BloodIV')] call DFUNC(treatment));
+        condition = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(canTreatCached));
+        statement = QUOTE([ARR_4(_player, _target, 'hand_r', 'PlasmaIV')] call DFUNC(treatment));
         EXCEPTIONS
     };
     class PlasmaIV_500: PlasmaIV {
@@ -583,8 +583,8 @@ class ACE_LegLeft {
     };
     class PlasmaIV: BloodIV {
         displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000";
-        condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(canTreatCached));
-        statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'BloodIV')] call DFUNC(treatment));
+        condition = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(canTreatCached));
+        statement = QUOTE([ARR_4(_player, _target, 'leg_l', 'PlasmaIV')] call DFUNC(treatment));
         EXCEPTIONS
     };
     class PlasmaIV_500: PlasmaIV {
@@ -724,8 +724,8 @@ class ACE_LegRight {
     };
     class PlasmaIV: BloodIV {
         displayName = "$STR_ACE_MEDICAL_ACTIONS_Plasma4_1000";
-        condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(canTreatCached));
-        statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'BloodIV')] call DFUNC(treatment));
+        condition = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(canTreatCached));
+        statement = QUOTE([ARR_4(_player, _target, 'leg_r', 'PlasmaIV')] call DFUNC(treatment));
         EXCEPTIONS
     };
     class PlasmaIV_500: PlasmaIV {

From cbc3584f9d6624f8e4bba525c0632d98b0d57e04 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:24:42 +0200
Subject: [PATCH 106/257] removed duplicate condition attribute

---
 addons/medical/ACE_Medical_SelfActions.hpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/addons/medical/ACE_Medical_SelfActions.hpp b/addons/medical/ACE_Medical_SelfActions.hpp
index e31e99ad01..9c79503f3d 100644
--- a/addons/medical/ACE_Medical_SelfActions.hpp
+++ b/addons/medical/ACE_Medical_SelfActions.hpp
@@ -80,7 +80,6 @@ class Medical {
         runOnHover = 1;
         exceptions[] = {"isNotInside"};
         statement = QUOTE([ARR_3(_target, true, 1)] call DFUNC(displayPatientInformation));
-        condition = "true";
         showDisabled = 1;
         priority = 2;
         hotkey = "";

From bc4d102d0890023f59bfea846bc4cdc85651f92b Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 22:43:31 +0200
Subject: [PATCH 107/257] changed variable initialization - everything is now
 done local

---
 addons/medical/XEH_init.sqf           |  5 +--
 addons/medical/XEH_respawn.sqf        |  3 +-
 addons/medical/functions/fnc_init.sqf | 49 ++++++++++++++-------------
 3 files changed, 28 insertions(+), 29 deletions(-)

diff --git a/addons/medical/XEH_init.sqf b/addons/medical/XEH_init.sqf
index 2f840fe950..f3fb2b1e93 100644
--- a/addons/medical/XEH_init.sqf
+++ b/addons/medical/XEH_init.sqf
@@ -4,7 +4,4 @@ private ["_unit"];
 _unit = _this select 0;
 
 _unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];
-
-if (local _unit) then {
-    [_unit] call FUNC(init);
-};
+[_unit] call FUNC(init);
diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf
index b2101b1d4e..5047f0026c 100644
--- a/addons/medical/XEH_respawn.sqf
+++ b/addons/medical/XEH_respawn.sqf
@@ -6,8 +6,7 @@ _unit = _this select 0;
 
 if !(local _unit) exitWith {};
 
-diag_log "running respawn";
-[_unit] call FUNC(init);
+[_unit, true] call FUNC(init);
 
 //Reset captive status for respawning unit
 if (!(_unit getVariable ["ACE_isUnconscious", false])) then {
diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf
index fa6aa357c2..0147b99204 100644
--- a/addons/medical/functions/fnc_init.sqf
+++ b/addons/medical/functions/fnc_init.sqf
@@ -13,21 +13,24 @@
 
 #include "script_component.hpp"
 
-private ["_unit", "_allUsedMedication", "_logs"];
+private ["_unit", "_allUsedMedication", "_logs", "_forceNew"];
 
 _unit = _this select 0;
+_forceNew = if (count _this > 1) then {_this select 1} else {false};
 
-_unit setVariable [QGVAR(pain), 0, true];
-_unit setVariable [QGVAR(morphine), 0, true];
-_unit setVariable [QGVAR(bloodVolume), 100, true];
+if (!(isnil {_unit getvariable QGVAR(triageLevel)}) && !_forceNew) exitwith {};
+
+_unit setVariable [QGVAR(pain), 0];
+_unit setVariable [QGVAR(morphine), 0];
+_unit setVariable [QGVAR(bloodVolume), 100];
 
 // tourniquets
-_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true];
+_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0]];
 
 // wounds and injuries
-_unit setvariable [QGVAR(openWounds), [], true];
-_unit setvariable [QGVAR(bandagedWounds), [], true];
-_unit setVariable [QGVAR(internalWounds), [], true];
+_unit setvariable [QGVAR(openWounds), []];
+_unit setvariable [QGVAR(bandagedWounds), []];
+_unit setVariable [QGVAR(internalWounds), []];
 _unit setvariable [QGVAR(lastUniqueWoundID), 1];
 
 // vitals
@@ -40,8 +43,8 @@ _unit setVariable [QGVAR(peripheralResistance), 100];
 _unit setVariable [QGVAR(fractures), []];
 
 // triage card and logs
-_unit setvariable [QGVAR(triageLevel), 0, true];
-_unit setvariable [QGVAR(triageCard), [], true];
+_unit setvariable [QGVAR(triageLevel), 0];
+_unit setvariable [QGVAR(triageCard), []];
 
 // IVs
 _unit setVariable [QGVAR(salineIVVolume), 0];
@@ -49,21 +52,21 @@ _unit setVariable [QGVAR(plasmaIVVolume), 0];
 _unit setVariable [QGVAR(bloodIVVolume), 0];
 
 // damage storage
-_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true];
+_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
 
 // airway
-_unit setvariable [QGVAR(airwayStatus), 100, true];
-_unit setVariable [QGVAR(airwayOccluded), false, true];
-_unit setvariable [QGVAR(airwayCollapsed), false, true];
+_unit setvariable [QGVAR(airwayStatus), 100];
+_unit setVariable [QGVAR(airwayOccluded), false];
+_unit setvariable [QGVAR(airwayCollapsed), false];
 
 // generic medical admin
-_unit setvariable [QGVAR(addedToUnitLoop), false, true];
-_unit setvariable [QGVAR(inCardiacArrest), false, true];
-_unit setVariable ["ACE_isUnconscious", false, true];
-_unit setvariable [QGVAR(hasLostBlood), false, true];
-_unit setvariable [QGVAR(isBleeding), false, true];
-_unit setvariable [QGVAR(hasPain), false, true];
-_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true];
+_unit setvariable [QGVAR(addedToUnitLoop), false];
+_unit setvariable [QGVAR(inCardiacArrest), false];
+_unit setVariable ["ACE_isUnconscious", false];
+_unit setvariable [QGVAR(hasLostBlood), false];
+_unit setvariable [QGVAR(isBleeding), false];
+_unit setvariable [QGVAR(hasPain), false];
+_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)];
 
 // medication
 _allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []];
@@ -74,9 +77,9 @@ _unit setVariable [QGVAR(allUsedMedication), []];
 
 _logs = _unit getvariable [QGVAR(allLogs), []];
 {
-    _unit setvariable [_x, nil, true];
+    _unit setvariable [_x, nil];
 } foreach _logs;
-_unit setvariable [QGVAR(allLogs), [], true];
+_unit setvariable [QGVAR(allLogs), []];
 
 // items
 [{

From 00f26144ecfffef3ef6deaa2401aad7277490867 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 15:45:00 -0500
Subject: [PATCH 108/257] More Privates

---
 .../functions/fnc_pfhUpdateGForces.sqf        |  2 +
 .../functions/fnc_flashbangExplosionEH.sqf    |  2 +-
 .../functions/fnc_flashbangThrownFuze.sqf     |  3 +-
 addons/markers/XEH_preInit.sqf                |  2 +
 .../functions/fnc_initInsertMarker.sqf        |  2 +
 addons/microdagr/XEH_clientInit.sqf           |  2 +
 .../functions/fnc_deviceAddWaypoint.sqf       |  2 +
 .../functions/fnc_deviceDeleteWaypoint.sqf    |  2 +
 .../functions/fnc_mapDoubleTapEH.sqf          |  2 +
 .../microdagr/functions/fnc_mapOnDrawEH.sqf   |  3 +-
 .../fnc_saveCurrentAndSetNewMode.sqf          | 14 +++----
 addons/movement/functions/fnc_canClimb.sqf    |  6 +--
 addons/movement/functions/fnc_getWeight.sqf   |  2 +-
 .../functions/fnc_drawNameTagIcon.sqf         |  2 +-
 .../nametags/functions/fnc_initIsSpeaking.sqf |  1 +
 .../nametags/functions/fnc_moduleNameTags.sqf |  4 +-
 addons/nametags/functions/fnc_onDraw3d.sqf    | 28 ++++++-------
 addons/nightvision/XEH_postInitClient.sqf     |  4 +-
 .../functions/fnc_updatePPEffects.sqf         |  4 +-
 addons/noradio/XEH_post_initClient.sqf        |  6 +--
 .../functions/fnc_addMapFunction.sqf          |  6 +--
 .../functions/fnc_handleMapClick.sqf          |  2 +-
 .../switchunits/functions/fnc_initPlayer.sqf  |  5 +--
 .../functions/fnc_nearestPlayers.sqf          | 15 +++----
 .../switchunits/functions/fnc_switchBack.sqf  | 16 +++-----
 .../switchunits/functions/fnc_switchUnit.sqf  |  4 +-
 .../vehiclelock/functions/fnc_moduleSync.sqf  |  1 +
 .../functions/fnc_onOpenInventory.sqf         |  1 +
 addons/weaponselect/XEH_preInit.sqf           |  1 +
 .../fnc_countMagazinesForGrenadeMuzzle.sqf    | 11 ++---
 .../fnc_displayGrenadeTypeAndNumber.sqf       |  4 +-
 .../functions/fnc_selectGrenadeAll.sqf        | 40 +++++++++----------
 .../functions/fnc_selectGrenadeFrag.sqf       | 34 ++++++++--------
 .../functions/fnc_selectGrenadeOther.sqf      | 34 ++++++++--------
 .../functions/fnc_setNextGrenadeMuzzle.sqf    | 14 +++----
 tools/search_privates.py                      | 15 +++++--
 36 files changed, 151 insertions(+), 145 deletions(-)

diff --git a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
index 01c00511cf..29a4859651 100644
--- a/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
+++ b/addons/gforces/functions/fnc_pfhUpdateGForces.sqf
@@ -13,6 +13,8 @@
  */
  #include "script_component.hpp"
 
+private ["_interval", "_player", "_newVel", "_accel", "_currentGForce", "_average", "_sum", "_classCoef", "_suitCoef", "_gBlackOut", "_gRedOut", "_g", "_gBO", "_coef", "_strength"];
+ 
 EXPLODE_2_PVT(_this,_params,_pfhId);
 
 _interval = time - GVAR(lastUpdateTime);
diff --git a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
index c84ee33b33..75e61dab56 100644
--- a/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
+++ b/addons/grenades/functions/fnc_flashbangExplosionEH.sqf
@@ -15,7 +15,7 @@
  */
 #include "script_component.hpp"
 
-private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light", "_losCount"];
+private ["_affected", "_strength", "_posGrenade", "_posUnit", "_angleGrenade", "_angleView", "_angleDiff", "_light", "_losCount", "_dirToUnitVector", "_eyeDir", "_eyePos"];
 
 PARAMS_1(_grenade);
 
diff --git a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf
index a83c81e660..377793ca7b 100644
--- a/addons/grenades/functions/fnc_flashbangThrownFuze.sqf
+++ b/addons/grenades/functions/fnc_flashbangThrownFuze.sqf
@@ -19,7 +19,8 @@ PARAMS_1(_projectile);
 
 if (alive _projectile) then {
     playSound3D ["A3\Sounds_F\weapons\Explosion\explosion_mine_1.wss", _projectile, false, getPosASL _projectile, 5, 1.2, 400];
-
+    
+    private "_affected";
     _affected = _projectile nearEntities ["CAManBase", 50];
     ["flashbangExplosion", _affected, [_projectile]] call EFUNC(common,targetEvent);
 };
diff --git a/addons/markers/XEH_preInit.sqf b/addons/markers/XEH_preInit.sqf
index fd97aeda0c..b2b9ed5c00 100644
--- a/addons/markers/XEH_preInit.sqf
+++ b/addons/markers/XEH_preInit.sqf
@@ -12,6 +12,8 @@ PREP(sendMarkersJIP);
 PREP(setMarkerJIP);
 PREP(setMarkerNetwork);
 
+private ["_config", "_marker", "_a", "_scope", "_icon", "_rgba", "_name"];
+
 // init marker types
 if (isNil QGVAR(MarkersCache)) then {
     _config = configfile >> "CfgMarkers";
diff --git a/addons/markers/functions/fnc_initInsertMarker.sqf b/addons/markers/functions/fnc_initInsertMarker.sqf
index 6ac13f9e80..6c5160c031 100644
--- a/addons/markers/functions/fnc_initInsertMarker.sqf
+++ b/addons/markers/functions/fnc_initInsertMarker.sqf
@@ -19,6 +19,8 @@
 #define BORDER  0.005
 
 [{
+    private ["_display", "_text", "_picture", "_channel", "_buttonOK", "_buttonCancel", "_description", "_title", "_descriptionChannel", "_sizeX", "_sizeY", "_aceShapeLB", "_aceColorLB", "_aceAngleSlider", "_aceAngleSliderText", "_mapIDD", "_pos", "_posX", "_posY", "_posW", "_posH", "_offsetButtons", "_buttonOk", "_curSelShape", "_curSelColor", "_curSelAngle"];
+
     disableserialization;
     PARAMS_1(_display);
 
diff --git a/addons/microdagr/XEH_clientInit.sqf b/addons/microdagr/XEH_clientInit.sqf
index c917eb0a8d..99c94b4512 100644
--- a/addons/microdagr/XEH_clientInit.sqf
+++ b/addons/microdagr/XEH_clientInit.sqf
@@ -54,6 +54,8 @@ GVAR(rangeFinderPositionASL) = [];
 
 GVAR(mapAltitude) = getNumber (configFile >> "CfgWorlds" >> worldName >> "elevationOffset");
 
+private ["_worldMapLong", "_worldMapLat", "_zone", "_band", "_squareID"];
+
 //Calculate the map's MGRS:
 _worldMapLong = getNumber (configFile >> "CfgWorlds" >> worldName >> "longitude");
 _worldMapLat = getNumber (configFile >> "CfgWorlds" >> worldName >> "latitude");
diff --git a/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf b/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf
index 6912810f58..c383d0a95e 100644
--- a/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf
+++ b/addons/microdagr/functions/fnc_deviceAddWaypoint.sqf
@@ -19,6 +19,8 @@
 
 PARAMS_2(_waypointName,_waypointPosASL);
 
+private "_waypoints";
+
 _waypoints = ace_player getVariable [QGVAR(waypoints), []];
 _waypoints pushBack [_waypointName, _waypointPosASL];
 ace_player setVariable [QGVAR(waypoints), _waypoints];
diff --git a/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf b/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf
index 3d1e8ec852..62ca5a222a 100644
--- a/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf
+++ b/addons/microdagr/functions/fnc_deviceDeleteWaypoint.sqf
@@ -18,6 +18,8 @@
 
 PARAMS_1(_wpIndex);
 
+private "_waypoints";
+
 _waypoints = ace_player getVariable [QGVAR(waypoints), []];
 
 if ((_wpIndex < 0) || (_wpIndex > ((count _waypoints) - 1))) exitWith {ERROR("out of bounds wp");};
diff --git a/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf b/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf
index f36d5f2548..21a164ff2e 100644
--- a/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf
+++ b/addons/microdagr/functions/fnc_mapDoubleTapEH.sqf
@@ -20,6 +20,8 @@
 
 PARAMS_4(_theMap,_mouseButton,_xPos,_yPos);
 
+private ["_worldPos"];
+
 //Only handle LMB
 if (_mouseButton != 0) exitWith {};
 
diff --git a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
index 3acf3e889c..bff20a4b67 100644
--- a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
+++ b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
@@ -17,7 +17,8 @@
 
 PARAMS_1(_theMap);
 
-_theMap = _this select 0;
+private ["_mapSize", "_waypoints", "_size", "_targetPos", "_relBearing", "_wpName", "_wpPos", "_alpha"];
+
 _mapSize = (ctrlPosition _theMap) select 3;
 
 _waypoints = [] call FUNC(deviceGetWaypoints);
diff --git a/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf b/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf
index 1f4982d87f..64a5cab991 100644
--- a/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf
+++ b/addons/microdagr/functions/fnc_saveCurrentAndSetNewMode.sqf
@@ -1,7 +1,7 @@
 /*
  * Author: PabstMirror
  * Saves the current mode and sets a new mode
- * Used to backup display when switching display modes 
+ * Used to backup display when switching display modes
  *
  * Arguments:
  * 0: New Mode <NUMBER>
@@ -16,7 +16,7 @@
  */
 #include "script_component.hpp"
 
-private ["_display", "_theMap", "_mapSize", "_centerPos"];
+private ["_display", "_theMap", "_mapSize", "_centerPos", "_mapCtrlPos"];
 
 PARAMS_1(_newMode);
 
@@ -36,16 +36,16 @@ if (GVAR(currentApplicationPage) == 2) then {
     _centerPos = [((_mapCtrlPos select 0) + (_mapCtrlPos select 2) / 2), ((_mapCtrlPos select 1) + (_mapCtrlPos select 3) / 2)];
     GVAR(mapPosition) = _theMap ctrlMapScreenToWorld _centerPos;
     GVAR(mapZoom) = (ctrlMapScale _theMap) * _mapSize;
-    
+
     //Hit button again, toggle map modes:
     if (_newMode == 2) then {
-       if (GVAR(mapShowTexture)) then {
-         GVAR(mapShowTexture) = false;
-       } else {
+        if (GVAR(mapShowTexture)) then {
+            GVAR(mapShowTexture) = false;
+        } else {
             if (GVAR(MapDataAvailable) == MAP_DETAIL_SAT) then {
                 GVAR(mapShowTexture) = true;
             };
-       };
+        };
     };
 };
 
diff --git a/addons/movement/functions/fnc_canClimb.sqf b/addons/movement/functions/fnc_canClimb.sqf
index 27753d8a12..d9946f381c 100644
--- a/addons/movement/functions/fnc_canClimb.sqf
+++ b/addons/movement/functions/fnc_canClimb.sqf
@@ -9,15 +9,15 @@
  * The return value <BOOL>
  *
  * Example:
- * _bool = [player] call ace_movement_fnc_canClimb
+ * [player] call ace_movement_fnc_canClimb
  *
  * Public: No
  */
 #include "script_component.hpp"
 
-private ["_unit", "_pos", "_dir"];
+private ["_pos", "_dir"];
 
-_unit = _this select 0;
+PARAMS_1(_unit);
 
 _pos = getPosASL _unit;
 _dir = getDir _unit;
diff --git a/addons/movement/functions/fnc_getWeight.sqf b/addons/movement/functions/fnc_getWeight.sqf
index 955be1a215..6941173fde 100644
--- a/addons/movement/functions/fnc_getWeight.sqf
+++ b/addons/movement/functions/fnc_getWeight.sqf
@@ -9,7 +9,7 @@
  * The return value <NUMBER>
  *
  * Example:
- * _bool = [player] call ace_movement_fnc_getWeight
+ * [player] call ace_movement_fnc_getWeight
  *
  * Public: No
  */
diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf
index f0a9bb89d4..6a7db7d5ac 100644
--- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf
+++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf
@@ -27,7 +27,7 @@
     "\A3\Ui_f\data\GUI\Cfg\Ranks\colonel_gs.paa" \
     ]
 
-private ["_height", "_position", "_color", "_name", "_rank", "_size"];
+private ["_height", "_position", "_color", "_name", "_rank", "_size", "_icon"];
 
 PARAMS_5(_player,_target,_alpha,_heightOffset,_iconType);
 
diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf
index daddd36c05..c6087541a8 100644
--- a/addons/nametags/functions/fnc_initIsSpeaking.sqf
+++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf
@@ -55,6 +55,7 @@ if (isClass (configFile >> "cfgPatches" >> "acre_api")) then {
         //Note: class RscDisplayVoiceChat {idd = 55} - only present when talking
 
         [{
+            private ["_oldSetting", "_newSetting"];
             _oldSetting = ACE_player getVariable [QGVAR(isSpeakingInGame), false];
             _newSetting = (!(isNull findDisplay 55));
             if (!(_oldSetting isEqualTo _newSetting)) then {
diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf
index 6050b99c67..1bbd4d8efb 100644
--- a/addons/nametags/functions/fnc_moduleNameTags.sqf
+++ b/addons/nametags/functions/fnc_moduleNameTags.sqf
@@ -14,9 +14,7 @@
 
 if !(isServer) exitWith {};
 
-_logic = _this select 0;
-_units = _this select 1;
-_activated = _this select 2;
+PARAMS_3(_logic,_units,_activated);
 
 if !(_activated) exitWith {};
 
diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf
index d35cef0d67..9efc70aeb9 100644
--- a/addons/nametags/functions/fnc_onDraw3d.sqf
+++ b/addons/nametags/functions/fnc_onDraw3d.sqf
@@ -1,9 +1,9 @@
 #include "script_component.hpp"
 
-_player = ACE_player;
+private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_pos2", "_vecy", "_relPos", "_projDist", "_pos", "_target"];
 
 //don't show nametags in spectator
-if (!alive _player) exitWith {};
+if (!alive ACE_player) exitWith {};
 
 _onKeyPressAlphaMax = if ((GVAR(showPlayerNames) in [3,4])) then {
     2 + (GVAR(ShowNamesTime) - time); //after release 1 second of full opacity, 1 second of fading to 0
@@ -24,14 +24,14 @@ if (GVAR(showCursorTagForVehicles) && {_onKeyPressAlphaMax > 0}) then {
     if ((!(_target isKindOf "CAManBase")) && {!(_target in allUnitsUAV)}) then {
         _target = effectiveCommander _target;
         if ((!isNull _target) &&
-                {(side (group _target)) == (side (group _player))} &&
-                {_target != _player} &&
+                {(side (group _target)) == (side (group ACE_player))} &&
+                {_target != ACE_player} &&
                 {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
                 {!(_target getVariable ["ACE_hideName", false])}) then {
-            _distance = _player distance _target;
+            _distance = ACE_player distance _target;
             _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min 1) * GVAR(PlayerNamesMaxAlpha);
             _alpha = _alpha min _onKeyPressAlphaMax;
-            [_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon);
+            [ACE_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon);
         };
     };
 };
@@ -41,11 +41,11 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then {
     _target = cursorTarget;
     if ((!isNull _target) &&
             {_target isKindOf "CAManBase"} &&
-            {(side (group _target)) == (side (group _player))} &&
-            {_target != _player} &&
+            {(side (group _target)) == (side (group ACE_player))} &&
+            {_target != ACE_player} &&
             {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
             {!(_target getVariable ["ACE_hideName", false])}) then {
-        _distance = _player distance _target;
+        _distance = ACE_player distance _target;
         _alpha = ((1 - 0.2 * (_distance - GVAR(PlayerNamesViewDistance))) min 1) * GVAR(PlayerNamesMaxAlpha);
         _alpha = _alpha min _onKeyPressAlphaMax;
         _icon = ICON_NONE;
@@ -55,7 +55,7 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then {
             _icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target} && {GVAR(showSoundWaves) > 0}) then {ICON_NAME_SPEAK} else {_defaultIcon};
         };
 
-        [_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
+        [ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
     };
 };
 
@@ -84,12 +84,12 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
         };
 
         if ((_icon != ICON_NONE) &&
-                {(side (group _target)) == (side (group _player))} &&
-                {_target != _player} &&
+                {(side (group _target)) == (side (group ACE_player))} &&
+                {_target != ACE_player} &&
                 {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
                 {!(_target getVariable ["ACE_hideName", false])}) then {
 
-            if (lineIntersects [_pos, (visiblePositionASL _target) vectorAdd [0,0,1], vehicle _player, _target]) exitWith {}; // Check if there is line of sight
+            if (lineIntersects [_pos, (visiblePositionASL _target) vectorAdd [0,0,1], vehicle ACE_player, _target]) exitWith {}; // Check if there is line of sight
             _relPos = (visiblePositionASL _target) vectorDiff _pos;
             _distance = vectorMagnitude _relPos;
             _projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy));
@@ -102,7 +102,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
                 _alpha = _alpha min _onKeyPressAlphaMax;
             };
 
-            [_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
+            [ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
         };
     } forEach _targets;
 };
diff --git a/addons/nightvision/XEH_postInitClient.sqf b/addons/nightvision/XEH_postInitClient.sqf
index 376059ce1b..db5d395096 100644
--- a/addons/nightvision/XEH_postInitClient.sqf
+++ b/addons/nightvision/XEH_postInitClient.sqf
@@ -42,7 +42,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0;
     // Conditions: canInteract
     if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
     // Conditions: specific
-    if ((currentVisionMode _player != 1)) exitWith {false};
+    if ((currentVisionMode ACE_player != 1)) exitWith {false};
 
     // Statement
     [ACE_player, 1] call FUNC(changeNVGBrightness);
@@ -56,7 +56,7 @@ GVAR(ppEffectMuzzleFlash) ppEffectCommit 0;
     // Conditions: canInteract
     if !([ACE_player, objNull, ["isNotEscorting", "isNotInside"]] call EFUNC(common,canInteractWith)) exitWith {false};
     // Conditions: specific
-    if ((currentVisionMode _player != 1)) exitWith {false};
+    if ((currentVisionMode ACE_player != 1)) exitWith {false};
 
     // Statement
     [ACE_player, -1] call FUNC(changeNVGBrightness);
diff --git a/addons/nightvision/functions/fnc_updatePPEffects.sqf b/addons/nightvision/functions/fnc_updatePPEffects.sqf
index a90186fe10..9906a440fc 100644
--- a/addons/nightvision/functions/fnc_updatePPEffects.sqf
+++ b/addons/nightvision/functions/fnc_updatePPEffects.sqf
@@ -15,7 +15,7 @@
  */
 #include "script_component.hpp"
 
-private ["_currentVehicle", "_grainSetting", "_blurSetting", "_radBlurSetting", "_config"];
+private ["_currentVehicle", "_grainSetting", "_blurSetting", "_radBlurSetting", "_config", "_hmd", "_cameraView", "_turret"];
 
 _currentVehicle = vehicle ACE_player;
 
@@ -41,7 +41,7 @@ _fnc_isUsingHMD = {
         !("NVG" in getArray (_config >> "ViewOptics" >> "visionMode"));
     };
 
-    private ["_result", "_turretConfig", "_turretConfigOpticsIn"];
+    private ["_result", "_turretConfig", "_turretConfigOpticsIn", "_index"];
     _result = true;
     _turretConfig = [_config, _turret] call EFUNC(common,getTurretConfigPath);
     _turretConfigOpticsIn = _turretConfig >> "OpticsIn";
diff --git a/addons/noradio/XEH_post_initClient.sqf b/addons/noradio/XEH_post_initClient.sqf
index 4f35a1ced9..ecd80a6436 100644
--- a/addons/noradio/XEH_post_initClient.sqf
+++ b/addons/noradio/XEH_post_initClient.sqf
@@ -2,15 +2,13 @@
 #include "script_component.hpp"
 
 /*
-_setupPlayer = {
+[{
     if (!isNull ACE_player) then {
         [(_this select 1)] call cba_fnc_removePerFrameHandler;
 
         [ACE_player, "isPlayer"] call EFUNC(common,muteUnit);
     };
-};
-
-[_setupPlayer, 0, []] call CBA_fnc_addPerFrameHandler;
+}, 0, []] call CBA_fnc_addPerFrameHandler;
 */
 
 if (!hasInterface) exitWith {};
diff --git a/addons/switchunits/functions/fnc_addMapFunction.sqf b/addons/switchunits/functions/fnc_addMapFunction.sqf
index 62a7c42a22..7204e73d36 100644
--- a/addons/switchunits/functions/fnc_addMapFunction.sqf
+++ b/addons/switchunits/functions/fnc_addMapFunction.sqf
@@ -17,12 +17,10 @@
 
 #include "script_component.hpp"
 
-private ["_unit", "_sides"];
-_unit = _this select 0;
-_sides = _this select 1;
+PARAMS_2(_unit,_sides);
 
 ["theMapClick", "onMapSingleClick", {
-
+    // IGNORE_PRIVATE_WARNING(_pos,_shift,_alt)
     if (alive ACE_player && {GVAR(OriginalUnit) getVariable ["ACE_CanSwitchUnits", false]}) then {
         [_this, _pos, _shift, _alt] call FUNC(handleMapClick);
     };
diff --git a/addons/switchunits/functions/fnc_handleMapClick.sqf b/addons/switchunits/functions/fnc_handleMapClick.sqf
index 3033071984..bfe36f13ea 100644
--- a/addons/switchunits/functions/fnc_handleMapClick.sqf
+++ b/addons/switchunits/functions/fnc_handleMapClick.sqf
@@ -10,7 +10,7 @@
  * None
  *
  * Example:
- * [_unit, _sides] call FUNC(handleMapClick)
+ * [unit, _sides] call FUNC(handleMapClick)
  *
  * Public: No
  */
diff --git a/addons/switchunits/functions/fnc_initPlayer.sqf b/addons/switchunits/functions/fnc_initPlayer.sqf
index 9c71f8cefc..c2857f1091 100644
--- a/addons/switchunits/functions/fnc_initPlayer.sqf
+++ b/addons/switchunits/functions/fnc_initPlayer.sqf
@@ -10,7 +10,7 @@
  * None
  *
  * Example:
- * [_player, _sides] call FUNC(initPlayer)
+ * [player, [west]] call FUNC(initPlayer)
  *
  * Public: No
  */
@@ -19,8 +19,7 @@
 
 private ["_playerUnit", "_sides"];
 
-_playerUnit = _this select 0;
-_sides = _this select 1;
+PARAMS_2(_playerUnit,_sides);
 
 if (vehicle _playerUnit == _playerUnit) then {
 
diff --git a/addons/switchunits/functions/fnc_nearestPlayers.sqf b/addons/switchunits/functions/fnc_nearestPlayers.sqf
index b79c54054f..987c4e3528 100644
--- a/addons/switchunits/functions/fnc_nearestPlayers.sqf
+++ b/addons/switchunits/functions/fnc_nearestPlayers.sqf
@@ -10,14 +10,15 @@
  * Player units <ARRAY<OBJECT>>
  *
  * Example:
- * [_pos, 100] call FUNC(nearestPlayers)
+ * [[300,300,0], 100] call FUNC(nearestPlayers)
  *
  * Public: Yes
  */
-
 #include "script_component.hpp"
 
-private ["_position", "_radius", "_nearestPlayers"];
+private ["_nearestPlayers"];
+
+PARAMS_2(_position,_radius);
 
 _position = _this select 0;
 _radius = _this select 1;
@@ -25,9 +26,9 @@ _radius = _this select 1;
 _nearestPlayers = [];
 
 {
-  if ([_x] call EFUNC(common,isPlayer) && {alive _x}) then {
-    _nearestPlayers pushBack _x;
-  };
+    if ([_x] call EFUNC(common,isPlayer) && {alive _x}) then {
+        _nearestPlayers pushBack _x;
+    };
 } forEach (nearestObjects [_position, ["Man"], _radius]);
 
- _nearestPlayers
+_nearestPlayers
diff --git a/addons/switchunits/functions/fnc_switchBack.sqf b/addons/switchunits/functions/fnc_switchBack.sqf
index d54713bbe4..9a5253cb3d 100644
--- a/addons/switchunits/functions/fnc_switchBack.sqf
+++ b/addons/switchunits/functions/fnc_switchBack.sqf
@@ -10,26 +10,20 @@
  * None
  *
  * Example:
- * [_origPlayer, _respPlayer] call FUNC(switchBack)
+ * [_originalPlayerUnit, _currentUnit] call FUNC(switchBack)
  *
  * Public: Yes
  */
 
 #include "script_component.hpp"
 
-private ["_origPlayerUnit"];
+PARMAS_1(_originalPlayerUnit);
 
-_origPlayerUnit = _this select 0;
-[_origPlayerUnit] joinSilent GVAR(OriginalGroup);
+[_originalPlayerUnit] joinSilent GVAR(OriginalGroup);
 
 DFUNC(pfhSwitchBack) = {
-    
-    private ["_args", "_originalPlayerUnit", "_currentUnit"];
-    
-    _args = _this select 0;
-    
-    _originalPlayerUnit = _args select 0;
-    _currentUnit = _args select 1;
+    PARAMS_2(_args,_pfID);
+    EXPLODE_2_PVT(_args,_originalPlayerUnit,_currentUnit);
 
     if (local _originalPlayerUnit) exitWith {
         selectPlayer _originalPlayerUnit;
diff --git a/addons/switchunits/functions/fnc_switchUnit.sqf b/addons/switchunits/functions/fnc_switchUnit.sqf
index abd053ffae..b1879b0999 100644
--- a/addons/switchunits/functions/fnc_switchUnit.sqf
+++ b/addons/switchunits/functions/fnc_switchUnit.sqf
@@ -18,9 +18,9 @@
 
 #include "script_component.hpp"
 
-private ["_unit", "_allNearestPlayers", "_oldUnit", "_leave"];
+private ["_nearestEnemyPlayers", "_allNearestPlayers", "_oldUnit", "_leave"];
 
-_unit = _this select 1;
+PARAMS_1(_unit);
 
 // don't switch to original player units
 if (!([_unit] call FUNC(isValidAi))) exitWith {};
diff --git a/addons/vehiclelock/functions/fnc_moduleSync.sqf b/addons/vehiclelock/functions/fnc_moduleSync.sqf
index feed42e3ab..ede20e3196 100644
--- a/addons/vehiclelock/functions/fnc_moduleSync.sqf
+++ b/addons/vehiclelock/functions/fnc_moduleSync.sqf
@@ -37,6 +37,7 @@ if (!isServer) exitWith {};
     };
 
     {
+        private "_unit";
         _unit = _x;
         if (_unit isKindOf "CAManBase") then {
             {
diff --git a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf
index 55fee28cc6..65c3068dce 100644
--- a/addons/vehiclelock/functions/fnc_onOpenInventory.sqf
+++ b/addons/vehiclelock/functions/fnc_onOpenInventory.sqf
@@ -21,6 +21,7 @@ PARAMS_2(_unit,_container);
 //Only check for player:
 if (_unit != ace_player) exitWith {false};
 
+private "_handeled";
 _handeled = false;
 
 if (GVAR(LockVehicleInventory) && //if setting not enabled
diff --git a/addons/weaponselect/XEH_preInit.sqf b/addons/weaponselect/XEH_preInit.sqf
index 790dfe7a99..4c5216c2f6 100644
--- a/addons/weaponselect/XEH_preInit.sqf
+++ b/addons/weaponselect/XEH_preInit.sqf
@@ -26,6 +26,7 @@ GVAR(CurrentGrenadeMuzzleOther)  = "";
 
 // Collect frag and other muzzles separately
 with uiNamespace do {
+    private ["_magazines", "_magazine", "_ammo", "_explosive"];
     if (isNil QGVAR(FragMuzzles)) then {
         GVAR(FragMuzzles)    = [];
         GVAR(NonFragMuzzles) = [];
diff --git a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf
index f73f2444c4..f45ed0ea57 100644
--- a/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf
+++ b/addons/weaponselect/functions/fnc_countMagazinesForGrenadeMuzzle.sqf
@@ -12,18 +12,13 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_muzzle"];
+PARAMS_2(_unit,_muzzle);
 
-_unit = _this select 0;
-_muzzle = _this select 1;
-
-private ["_uniformMags", "_vestMags", "_backPackMags"];
+private ["_uniformMags", "_vestMags", "_backpackMags", "_numberOfMagazines", "_magazineClasses", "_firstMagazine"];
 
 _uniformMags = getMagazineCargo uniformContainer _unit;
 _vestMags = getMagazineCargo vestContainer _unit;
-_backPackMags = getMagazineCargo backpackContainer _unit;
-
-private ["_numberOfMagazines", "_magazineClasses", "_firstMagazine"];
+_backpackMags = getMagazineCargo backpackContainer _unit;
 
 _numberOfMagazines = 0;
 _magazineClasses = getArray (configFile >> "CfgWeapons" >> "Throw" >> _muzzle >> "magazines");
diff --git a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf
index 1922ffdbb9..d7a68e7f50 100644
--- a/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf
+++ b/addons/weaponselect/functions/fnc_displayGrenadeTypeAndNumber.sqf
@@ -21,10 +21,10 @@ _numberofMagazines = _this select 1;
 
 private ["_color", "_name", "_text", "_picture"];
 
-_color = [[1,0,0], [1,1,1]] select (_numberOfMagazines > 0);
+_color = [[1,0,0], [1,1,1]] select (_numberofMagazines > 0);
 _name = getText (configFile >> "CfgMagazines" >> _magazine >> "displayNameShort");
 
-_text = [format["%1  x%2", _name, _numberOfMagazines], _color] call EFUNC(common,stringToColoredText);
+_text = [format["%1  x%2", _name, _numberofMagazines], _color] call EFUNC(common,stringToColoredText);
 _picture = getText (configFile >> "CfgMagazines" >> _magazine >> "picture");
 
 [_text, _picture] call EFUNC(common,displayTextPicture);
diff --git a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf
index 31999ad0b9..a75a11c202 100644
--- a/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf
+++ b/addons/weaponselect/functions/fnc_selectGrenadeAll.sqf
@@ -11,41 +11,41 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_nextMuzzle"];
+private ["_text", "_nextMuzzle"];
 
-_unit = _this select 0;
+PARAMS_1(_unit);
 
 _nextMuzzle = ["All"] call FUNC(findNextGrenadeMuzzle);
 
 if (_nextMuzzle != "") then {
 
 
-  private ["_magazines", "_magazine", "_count", "_return"];
-  _magazines = GVAR(AllMagazines) select (GVAR(AllMuzzles) find _nextMuzzle);
-  reverse _magazines;
+    private ["_magazines", "_magazine", "_count", "_return"];
+    _magazines = GVAR(AllMagazines) select (GVAR(AllMuzzles) find _nextMuzzle);
+    reverse _magazines;
 
-  _magazine = "";
-  _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
+    _magazine = "";
+    _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
 
-  // There is a muzzle with magazines --> cycle to it
-  [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
+    // There is a muzzle with magazines --> cycle to it
+    [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
 
-  [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
+    [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
 
 } else {
-  // There is a no muzzle with magazines --> select nothing
-  GVAR(CurrentGrenadeMuzzleFrag) = ""; GVAR(CurrentGrenadeMuzzleOther) = "";
+    // There is a no muzzle with magazines --> select nothing
+    GVAR(CurrentGrenadeMuzzleFrag) = ""; GVAR(CurrentGrenadeMuzzleOther) = "";
 
-  if (GVAR(DisplayText)) then {
-    _text = [localize "STR_ACE_WeaponSelect_NoGrenadesLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
-    [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
-  };
+    if (GVAR(DisplayText)) then {
+        _text = [localize "STR_ACE_WeaponSelect_NoGrenadesLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
+        [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
+    };
 };
 
 if (_nextMuzzle in GVAR(FragMuzzles)) then {
-  GVAR(CurrentGrenadeMuzzleFrag)   = _nextMuzzle;
-  GVAR(CurrentGrenadeMuzzleIsFrag) = true;
+    GVAR(CurrentGrenadeMuzzleFrag)   = _nextMuzzle;
+    GVAR(CurrentGrenadeMuzzleIsFrag) = true;
 } else {
-  GVAR(CurrentGrenadeMuzzleOther)  = _nextMuzzle;
-  GVAR(CurrentGrenadeMuzzleIsFrag) = false;
+    GVAR(CurrentGrenadeMuzzleOther)  = _nextMuzzle;
+    GVAR(CurrentGrenadeMuzzleIsFrag) = false;
 };
diff --git a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf
index 408cf0e608..0dee3e5c57 100644
--- a/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf
+++ b/addons/weaponselect/functions/fnc_selectGrenadeFrag.sqf
@@ -11,34 +11,34 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_nextMuzzle"];
+private ["_text", "_nextMuzzle"];
 
-_unit = _this select 0;
+PARAMS_1(_unit);
 
 _nextMuzzle = ["Frag"] call FUNC(findNextGrenadeMuzzle);
 
 if (_nextMuzzle != "") then {
-  GVAR(CurrentGrenadeMuzzleFrag) = _nextMuzzle;
+    GVAR(CurrentGrenadeMuzzleFrag) = _nextMuzzle;
 
-  private ["_magazines", "_magazine", "_count", "_return"];
-  _magazines = GVAR(FragMagazines) select (GVAR(FragMuzzles) find _nextMuzzle);
-  reverse _magazines;
+    private ["_magazines", "_magazine", "_count", "_return"];
+    _magazines = GVAR(FragMagazines) select (GVAR(FragMuzzles) find _nextMuzzle);
+    reverse _magazines;
 
-  _magazine = "";
-  _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
+    _magazine = "";
+    _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
 
-  // There is a muzzle with magazines --> cycle to it
-  [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
+    // There is a muzzle with magazines --> cycle to it
+    [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
 
-  [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
+    [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
 
 } else {
-  // There is a no muzzle with magazines --> select nothing
-  GVAR(CurrentGrenadeMuzzleFrag) = "";
-  if (GVAR(DisplayText)) then {
-    _text = [localize "STR_ACE_WeaponSelect_NoFragsLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
-    [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
-  };
+    // There is a no muzzle with magazines --> select nothing
+    GVAR(CurrentGrenadeMuzzleFrag) = "";
+    if (GVAR(DisplayText)) then {
+        _text = [localize "STR_ACE_WeaponSelect_NoFragsLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
+        [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
+    };
 };
 
 GVAR(CurrentGrenadeMuzzleIsFrag) = true;
diff --git a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf
index c732010a2b..4ab65e5bf3 100644
--- a/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf
+++ b/addons/weaponselect/functions/fnc_selectGrenadeOther.sqf
@@ -11,34 +11,34 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_nextMuzzle"];
+private ["_nextMuzzle", "_text"];
 
-_unit = _this select 0;
+PARAMS_1(_unit);
 
 _nextMuzzle = ["NonFrag"] call FUNC(findNextGrenadeMuzzle);
 
 if (_nextMuzzle != "") then {
-  GVAR(CurrentGrenadeMuzzleOther) = _nextMuzzle;
+    GVAR(CurrentGrenadeMuzzleOther) = _nextMuzzle;
 
-  private ["_magazines", "_magazine", "_count", "_return"];
-  _magazines = GVAR(NonFragMagazines) select (GVAR(NonFragMuzzles) find _nextMuzzle);
-  reverse _magazines;
+    private ["_magazines", "_magazine", "_count", "_return"];
+    _magazines = GVAR(NonFragMagazines) select (GVAR(NonFragMuzzles) find _nextMuzzle);
+    reverse _magazines;
 
-  _magazine = "";
-  _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
+    _magazine = "";
+    _count = {_return = _x in _magazines; if (_return) then {_magazine = _x}; _return} count magazines _unit;
 
-  // There is a muzzle with magazines --> cycle to it
-  [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
+    // There is a muzzle with magazines --> cycle to it
+    [_unit, _nextMuzzle] call FUNC(setNextGrenadeMuzzle);
 
-  [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
+    [_magazine, _count] call FUNC(displayGrenadeTypeAndNumber);
 
 } else {
-  // There is a no muzzle with magazines --> select nothing
-  GVAR(CurrentGrenadeMuzzleOther) = "";
-  if (GVAR(DisplayText)) then {
-    _text = [localize "STR_ACE_WeaponSelect_NoMiscGrenadeLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
-    [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
-  };
+    // There is a no muzzle with magazines --> select nothing
+    GVAR(CurrentGrenadeMuzzleOther) = "";
+    if (GVAR(DisplayText)) then {
+        _text = [localize "STR_ACE_WeaponSelect_NoMiscGrenadeLeft", [1,0,0]] call EFUNC(common,stringToColoredText);
+        [composeText [lineBreak, _text]] call EFUNC(common,displayTextStructured);
+    };
 };
 
 GVAR(CurrentGrenadeMuzzleIsFrag) = false;
diff --git a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf
index ced1fa87b3..81d1a59ed1 100644
--- a/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf
+++ b/addons/weaponselect/functions/fnc_setNextGrenadeMuzzle.sqf
@@ -17,19 +17,15 @@ private ["_unit", "_muzzle"];
 _unit = _this select 0;
 _muzzle = _this select 1;
 
-private ["_uniformMags", "_vestMags", "_backPackMags"];
+private ["_uniformMags", "_vestMags", "_backpackMags", "_i", "_uniformMagsToRemove", "_vestMagsToRemove", "_backpackMagsToRemove", "_firstMagazine", "_throwMuzzleNames"];
 
 _uniformMags = getMagazineCargo uniformContainer _unit;
 _vestMags = getMagazineCargo vestContainer _unit;
-_backPackMags = getMagazineCargo backpackContainer _unit;
-
-private ["_uniformMagsToRemove", "_vestMagsToRemove", "_backPackMagsToRemove"];
+_backpackMags = getMagazineCargo backpackContainer _unit;
 
 _uniformMagsToRemove = [];
 _vestMagsToRemove = [];
-_backPackMagsToRemove = [];
-
-private ["_firstMagazine", "_throwMuzzleNames"];
+_backpackMagsToRemove = [];
 
 _firstMagazine = "";
 _throwMuzzleNames = getArray (configfile >> "CfgWeapons" >> "Throw" >> "muzzles");
@@ -99,7 +95,7 @@ _throwMuzzleNames = getArray (configfile >> "CfgWeapons" >> "Throw" >> "muzzles"
     for [{_i = 0}, {_i < (_x select 1)}, {_i = _i + 1}] do {
         _unit removeItem (_x select 0);
     };
-} forEach _backPackMagsToRemove;
+} forEach _backpackMagsToRemove;
 
 // Readd magazines
 {
@@ -118,4 +114,4 @@ _throwMuzzleNames = getArray (configfile >> "CfgWeapons" >> "Throw" >> "muzzles"
     for [{_i = 0}, {_i < (_x select 1)}, {_i = _i + 1}] do {
         _unit addItemToBackpack (_x select 0);
     };
-} forEach _backPackMagsToRemove;
+} forEach _backpackMagsToRemove;
diff --git a/tools/search_privates.py b/tools/search_privates.py
index 404c56f4db..56626c5bfd 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python3
+#!/usr/bin/env python3
 
 import fnmatch
 import os
@@ -21,7 +21,7 @@ def get_private_declare(content):
     priv_split = sorted(set(priv_split))
     priv_declared += priv_split;
     
-    srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*')
+    srch = re.compile('PARAMS_[0-9].*|EXPLODE_[0-9]_PVT.*|DEFAULT_PARAM.*|KEY_PARAM.*|IGNORE_PRIVATE_WARNING.*')
     priv_srch_declared = srch.findall(content)
     priv_srch_declared = sorted(set(priv_srch_declared))
     
@@ -37,7 +37,7 @@ def get_private_declare(content):
     return priv_declared
         
 def check_privates(filepath):
-    
+    bad_count_file = 0
     def pushClosing(t):
         closingStack.append(closing.expr)
         closing << Literal( closingFor[t[0]] )
@@ -81,6 +81,9 @@ def check_privates(filepath):
             print (filepath)
             for bad_priv in missing:
                 print ('\t' + bad_priv)
+                bad_count_file = bad_count_file + 1
+                
+    return bad_count_file
             
 def main():
 
@@ -89,6 +92,7 @@ def main():
     print("#########################")
 
     sqf_list = []
+    bad_count = 0
     
     parser = argparse.ArgumentParser()
     parser.add_argument('-m','--module', help='only search specified module addon folder', required=False, default=".")
@@ -99,7 +103,10 @@ def main():
         sqf_list.append(os.path.join(root, filename))
         
     for filename in sqf_list:
-        check_privates(filename)
+        bad_count = bad_count + check_privates(filename)
+    
+    
+    print ("Bad Count {0}".format(bad_count))
     
 if __name__ == "__main__":
     main()

From d1a09ae7fc1429fe5d69d5d797110395b3aa51ea Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Fri, 17 Apr 2015 23:15:41 +0200
Subject: [PATCH 109/257] fixed vehicle crashes for adv

---
 addons/medical/functions/fnc_handleDamage.sqf          | 6 ++++++
 addons/medical/functions/fnc_handleDamage_advanced.sqf | 2 ++
 addons/medical/functions/fnc_handleDamage_caching.sqf  | 2 +-
 3 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/addons/medical/functions/fnc_handleDamage.sqf b/addons/medical/functions/fnc_handleDamage.sqf
index 1632a8f55b..c13818bbcd 100644
--- a/addons/medical/functions/fnc_handleDamage.sqf
+++ b/addons/medical/functions/fnc_handleDamage.sqf
@@ -57,6 +57,12 @@ if (GVAR(level) >= 2) then {
             _minLethalDamage = GVAR(minLethalDamages) select _typeIndex;
         };
 
+        if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _source} && {_projectile == ""} && {_selection == ""}) then {
+            if (GVAR(enableVehicleCrashes)) then {
+                _selection = GVAR(SELECTIONS) select (floor(random(count GVAR(SELECTIONS))));
+            };
+        };
+
         if ((_minLethalDamage <= _newDamage) && {[_unit, [_selection] call FUNC(selectionNameToNumber), _newDamage] call FUNC(determineIfFatal)} && {_selection in ["", "head", "body"]}) then {
             if ([_unit] call FUNC(setDead)) then {
                 _damageReturn = 1;
diff --git a/addons/medical/functions/fnc_handleDamage_advanced.sqf b/addons/medical/functions/fnc_handleDamage_advanced.sqf
index ba0eb8af24..8bd0267d3f 100644
--- a/addons/medical/functions/fnc_handleDamage_advanced.sqf
+++ b/addons/medical/functions/fnc_handleDamage_advanced.sqf
@@ -33,10 +33,12 @@ if (isNull _sourceOfDamage && {_typeOfProjectile == ""} && {vehicle _unit == _un
 };
 _typeOfDamage = [_typeOfProjectile] call FUNC(getTypeOfDamage);
 _part = [_selectionName] call FUNC(selectionNameToNumber);
+if (_part < 0) exitwith {};
 
 _hitPoints = ["HitHead", "HitBody", "HitLeftArm", "HitRightArm", "HitLeftLeg", "HitRightLeg"];
 // Sorting out the damage
 _damageBodyParts = _unit getvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
+
 _damageBodyParts set [_part, (_damageBodyParts select _part) + _newDamage];
 _unit setvariable [QGVAR(bodyPartStatus), _damageBodyParts, true];
 
diff --git a/addons/medical/functions/fnc_handleDamage_caching.sqf b/addons/medical/functions/fnc_handleDamage_caching.sqf
index 98b2373c74..95d750843d 100644
--- a/addons/medical/functions/fnc_handleDamage_caching.sqf
+++ b/addons/medical/functions/fnc_handleDamage_caching.sqf
@@ -38,7 +38,7 @@ if (_selectionName in _hitSelections) then {
 
 // Check for vehicle crash
 if (vehicle _unit != _unit && {!(vehicle _unit isKindOf "StaticWeapon")} && {isNull _source} && {_projectile == ""} && {_selectionName == ""}) then {
-    if (missionNamespace getvariable [QGVAR(allowVehicleCrashDamage), true]) then {
+    if (GVAR(enableVehicleCrashes)) then {
         _selectionName = _hitSelections select (floor(random(count _hitSelections)));
         _projectile = "vehiclecrash";
     };

From 25d8c6c93e0670fba02cb58d0507925cb40fa405 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Fri, 17 Apr 2015 23:24:43 +0200
Subject: [PATCH 110/257] function to show error message box

---
 addons/common/XEH_preInit.sqf                |   1 +
 addons/common/functions/fnc_errorMessage.sqf | 144 +++++++++++++++++++
 2 files changed, 145 insertions(+)
 create mode 100644 addons/common/functions/fnc_errorMessage.sqf

diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index b5382d0b5e..c484fd985e 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -42,6 +42,7 @@ PREP(doAnimation);
 PREP(dropBackpack);
 PREP(endRadioTransmission);
 PREP(eraseCache);
+PREP(errorMessage);
 PREP(execNextFrame);
 PREP(execPersistentFnc);
 PREP(execRemoteFnc);
diff --git a/addons/common/functions/fnc_errorMessage.sqf b/addons/common/functions/fnc_errorMessage.sqf
new file mode 100644
index 0000000000..46f2d2c9d4
--- /dev/null
+++ b/addons/common/functions/fnc_errorMessage.sqf
@@ -0,0 +1,144 @@
+/*
+ * Author: commy2, based on BIS_fnc_errorMsg and BIS_fnc_guiMessage by Karel Moricky (BI)
+ * Stops simulation and opens a textbox with error message.
+ *
+ * Arguments:
+ * 0: Error name <STRING>
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+disableSerialization;
+endLoadingScreen;
+
+private ["_textHeader", "_textMessage", "_onOK", "_onCancel"];
+
+_textHeader = _this select 0;
+_textMessage = _this select 1;
+_onOK = ARR_SELECT(_this,2,{});
+_onCancel = ARR_SELECT(_this,3,{});
+
+if (typeName _textMessage == "STRING") then {
+    _textMessage = parseText _textMessage;
+};
+
+(call BIS_fnc_displayMission) createDisplay "RscDisplayCommonMessagePause";
+
+private ["_display", "_ctrlRscMessageBox", "_ctrlBcgCommonTop", "_ctrlBcgCommon", "_ctrlText", "_ctrlBackgroundButtonOK", "_ctrlBackgroundButtonMiddle", "_ctrlBackgroundButtonCancel", "_ctrlButtonOK", "_ctrlButtonCancel"];
+
+_display = uiNamespace getVariable "RscDisplayCommonMessage_display";
+_ctrlRscMessageBox =          _display displayCtrl 2351;
+_ctrlBcgCommonTop =           _display displayCtrl 235100;
+_ctrlBcgCommon =              _display displayCtrl 235101;
+_ctrlText =                   _display displayCtrl 235102;
+_ctrlBackgroundButtonOK =     _display displayCtrl 235103;
+_ctrlBackgroundButtonMiddle = _display displayCtrl 235104;
+_ctrlBackgroundButtonCancel = _display displayCtrl 235105;
+_ctrlButtonOK =               _display displayCtrl 235106;
+_ctrlButtonCancel =           _display displayCtrl 235107;
+
+_ctrlBcgCommonTop ctrlSetText _textHeader;
+
+private ["_ctrlButtonOKPos", "_ctrlBcgCommonPos", "_bottomSpaceY", "_ctrlTextPos", "_marginX", "_marginY"];
+
+_ctrlButtonOKPos = ctrlPosition _ctrlButtonOK;
+_ctrlBcgCommonPos = ctrlPosition _ctrlBcgCommon;
+_bottomSpaceY = (_ctrlButtonOKPos select 1) - ((_ctrlBcgCommonPos select 1) + (_ctrlBcgCommonPos select 3));
+
+_ctrlTextPos = ctrlPosition _ctrlText;
+_marginX = (_ctrlTextPos select 0) - (_ctrlBcgCommonPos select 0);
+_marginY = (_ctrlTextPos select 1) - (_ctrlBcgCommonPos select 1);
+
+private ["_ctrlTextPosH", "_bottomPosY"];
+
+_ctrlText ctrlSetStructuredText _textMessage;
+_ctrlTextPosH = ctrlTextHeight _ctrlText;
+
+_ctrlBcgCommon ctrlSetPosition [
+    _ctrlBcgCommonPos select 0,
+    _ctrlBcgCommonPos select 1,
+    _ctrlBcgCommonPos select 2,
+    _ctrlTextPosH + _marginY * 2
+];
+_ctrlBcgCommon ctrlCommit 0;
+
+_ctrlText ctrlSetPosition [
+    (_ctrlBcgCommonPos select 0) + _marginX,
+    (_ctrlBcgCommonPos select 1) + _marginY,
+    (_ctrlBcgCommonPos select 2) - _marginX * 2,
+    _ctrlTextPosH
+];
+_ctrlText ctrlCommit 0;
+
+_bottomPosY = (_ctrlBcgCommonPos select 1) + _ctrlTextPosH + (_marginY * 2) + _bottomSpaceY;
+
+{
+    private "_xPos";
+    _xPos = ctrlPosition _x;
+
+    _xPos set [1, _bottomPosY];
+    _x ctrlSetPosition _xPos;
+    _x ctrlCommit 0;
+} foreach [
+    _ctrlBackgroundButtonOK,
+    _ctrlBackgroundButtonMiddle,
+    _ctrlBackgroundButtonCancel,
+    _ctrlButtonOK,
+    _ctrlButtonCancel
+];
+
+private ["_ctrlRscMessageBoxPos", "_ctrlRscMessageBoxPosH"];
+
+_ctrlRscMessageBoxPos = ctrlPosition _ctrlRscMessageBox;
+_ctrlRscMessageBoxPosH = _bottomPosY + (_ctrlButtonOKPos select 3);
+
+_ctrlRscMessageBox ctrlSetPosition [
+    0.5 - (_ctrlBcgCommonPos select 2) / 2,
+    0.5 - _ctrlRscMessageBoxPosH / 2,
+    (_ctrlBcgCommonPos select 2) + 0.5,
+    _ctrlRscMessageBoxPosH
+];
+
+_ctrlRscMessageBox ctrlEnable true;
+_ctrlRscMessageBox ctrlCommit 0;
+
+if (_onOK isEqualTo {}) then {
+    _ctrlButtonOK ctrlEnable false;
+    _ctrlButtonOK ctrlSetFade 0;
+    _ctrlButtonOK ctrlSetText "";
+    _ctrlButtonOK ctrlCommit 0;
+} else {
+    _ctrlButtonOK ctrlEnable true;
+    _ctrlButtonOK ctrlSetFade 0;
+    _ctrlButtonOK ctrlSetText localize "STR_DISP_OK";
+    _ctrlButtonOK ctrlCommit 0;
+
+    ctrlSetFocus _ctrlButtonOK;
+};
+
+if (_onCancel isEqualTo {}) then {
+    _ctrlButtonCancel ctrlEnable false;
+    _ctrlButtonCancel ctrlSetFade 0;
+    _ctrlButtonCancel ctrlSetText "";
+    _ctrlButtonCancel ctrlCommit 0;
+} else {
+    _ctrlButtonCancel ctrlEnable true;
+    _ctrlButtonCancel ctrlSetFade 0;
+    _ctrlButtonCancel ctrlSetText localize "STR_DISP_CANCEL";
+    _ctrlButtonCancel ctrlCommit 0;
+
+    ctrlSetFocus _ctrlButtonCancel;
+};
+
+_ctrlButtonOK ctrlAddEventHandler ["buttonClick", {(ctrlParent (_this select 0)) closeDisplay 1; true}];
+_ctrlButtonCancel ctrlAddEventHandler ["buttonClick", {(ctrlParent (_this select 0)) closeDisplay 2; true}];
+
+GVAR(errorOnOK) = _onOK;
+GVAR(errorOnCancel) = _onCancel;
+
+_display displayAddEventHandler ["unload", {call ([{}, GVAR(errorOnOK), GVAR(errorOnCancel)] select (_this select 1))}];
+_display displayAddEventHandler ["keyDown", {_this select 1 == 1}];

From dce344c85ffaf93a501d58e3133468182218789e Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 16:51:27 -0500
Subject: [PATCH 111/257] Ignore Case

---
 .../functions/fnc_teleportToRallypoint.sqf    | 40 +++++++++----------
 .../switchunits/functions/fnc_switchBack.sqf  |  2 +-
 tools/search_privates.py                      |  4 +-
 3 files changed, 22 insertions(+), 24 deletions(-)

diff --git a/addons/respawn/functions/fnc_teleportToRallypoint.sqf b/addons/respawn/functions/fnc_teleportToRallypoint.sqf
index 82a1d68e05..dc3cc16b92 100644
--- a/addons/respawn/functions/fnc_teleportToRallypoint.sqf
+++ b/addons/respawn/functions/fnc_teleportToRallypoint.sqf
@@ -1,31 +1,29 @@
 /*
-  Name: ACE_Respawn_fnc_teleportToRallypoint
-  
-  Author(s):
-    commy2
-  
-  Description:
-    teleports a unit to a rallypoint
-  
-  Parameters:
-    0: OBJECT - unit
-    1: OBJECT - side
-    2: BOOLEAN - teleport to base
-  
-  Returns:
-    VOID
-*/
-
+ * Author: commy2
+ * teleports a unit to a rallypoint
+ *
+ * Arguments:
+ * 0: unit <OBJECT>
+ * 1: side? <OBJECT>
+ * 2: teleport to base <BOOLEAN>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * [,,] call ACE_Respawn_fnc_teleportToRallypoint;
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 
-private ["_unit", "_side", "_rallypoint", "_toBase"];
+PARAMS_3(_unit,_side,_rallypoint);
 
-_unit = _this select 0;
-_side = _this select 1;
-_rallypoint = _this select 2;
+private ["_toBase"];
 
 // rallypoint names are defined in CfgVehicles.hpp
 
+//IGNORE_PRIVATE_WARNING("_Base")
 _toBase = _rallypoint find "_Base" != -1;
 
 _rallypoint = missionNamespace getVariable [_rallypoint, objNull],
diff --git a/addons/switchunits/functions/fnc_switchBack.sqf b/addons/switchunits/functions/fnc_switchBack.sqf
index 9a5253cb3d..69be77dd8b 100644
--- a/addons/switchunits/functions/fnc_switchBack.sqf
+++ b/addons/switchunits/functions/fnc_switchBack.sqf
@@ -17,7 +17,7 @@
 
 #include "script_component.hpp"
 
-PARMAS_1(_originalPlayerUnit);
+PARAMS_1(_originalPlayerUnit);
 
 [_originalPlayerUnit] joinSilent GVAR(OriginalGroup);
 
diff --git a/tools/search_privates.py b/tools/search_privates.py
index 56626c5bfd..6e1430a8ca 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -73,8 +73,8 @@ def check_privates(filepath):
         
         missing = []
         for s in priv_use:
-            if s not in priv_declared:
-                if s not in missing:
+            if s.lower() not in map(str.lower,priv_declared):
+                if s.lower() not in map(str.lower,missing):
                     missing.append(s)
         
         if len(missing) > 0:

From 314b0d23d68803ab66e860d0ebfa0a3e22a7bd15 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 00:11:53 +0200
Subject: [PATCH 112/257] ATragMX Feature Expansion: *Added Gun and Ammo Data
 Screen *Added Atomospheric and Environmental Data Screen *Added Target Data
 Screen *Added support for coriolis- and spin drift *Added a second option
 (AT) to enter atmospheric data *Target data is now saved/restored in/from the
 profileNamespace *Atmosphere data is now saved/restored in/from the
 profileNamespace *Selected gun profile is now saved/restored in/from the
 profileNamespace *Fixed several bugs in the dual-/imperial unit systems
 *Minor bug fixes in the target range assist screen *Minor bug fix in the
 target speed assist screen

---
 addons/atragmx/RscTitles.hpp                  | 318 ++++++++++++++++--
 addons/atragmx/XEH_postInit.sqf               |  47 +--
 addons/atragmx/XEH_preInit.sqf                |  17 +
 .../functions/fnc_calculate_range_card.sqf    |  51 ++-
 .../fnc_calculate_scope_base_angle.sqf        |   2 +-
 .../functions/fnc_calculate_solution.sqf      |  66 +++-
 .../fnc_calculate_target_range_assist.sqf     |   2 +-
 .../fnc_calculate_target_solution.sqf         |  57 +++-
 .../fnc_calculate_target_speed_assist.sqf     |  21 +-
 addons/atragmx/functions/fnc_change_gun.sqf   |  19 +-
 .../functions/fnc_change_target_slot.sqf      |   2 +-
 .../atragmx/functions/fnc_create_dialog.sqf   |   3 +
 .../atragmx/functions/fnc_cycle_gun_list.sqf  |  18 +
 .../functions/fnc_cycle_image_size_units.sqf  |  19 ++
 .../functions/fnc_cycle_num_ticks_units.sqf   |  20 ++
 .../functions/fnc_cycle_target_size_units.sqf |  19 ++
 addons/atragmx/functions/fnc_init.sqf         |  15 +-
 addons/atragmx/functions/fnc_parse_input.sqf  |  80 +++--
 .../functions/fnc_restore_atmo_default.sqf    |  25 ++
 .../functions/fnc_restore_user_data.sqf       |  36 ++
 .../functions/fnc_show_atmo_env_data.sqf      |  25 ++
 .../functions/fnc_show_gun_ammo_data.sqf      |  24 ++
 .../atragmx/functions/fnc_show_main_page.sqf  |  10 +-
 .../functions/fnc_show_target_data.sqf        |  24 ++
 .../fnc_show_target_range_assist.sqf          |   6 +-
 .../fnc_show_target_speed_assist.sqf          |  12 +-
 .../atragmx/functions/fnc_store_user_data.sqf |  36 ++
 .../functions/fnc_toggle_atmo_env_data.sqf    |  28 ++
 .../functions/fnc_toggle_gun_ammo_data.sqf    |  29 ++
 .../atragmx/functions/fnc_toggle_gun_list.sqf |  12 +-
 .../functions/fnc_toggle_range_card.sqf       |   6 +-
 .../functions/fnc_toggle_range_card_setup.sqf |  13 +-
 .../functions/fnc_toggle_target_data.sqf      |  28 ++
 .../fnc_toggle_target_range_assist.sqf        |  16 +-
 .../fnc_toggle_target_speed_assist.sqf        |  15 +-
 .../functions/fnc_update_atmo_env_data.sqf    |  45 +++
 .../functions/fnc_update_atmo_selection.sqf   |  31 ++
 .../functions/fnc_update_atmosphere.sqf       |  15 +-
 addons/atragmx/functions/fnc_update_gun.sqf   |  36 +-
 .../functions/fnc_update_gun_ammo_data.sqf    |  74 ++++
 .../functions/fnc_update_range_card.sqf       |  46 +--
 .../atragmx/functions/fnc_update_result.sqf   |  14 +-
 .../atragmx/functions/fnc_update_target.sqf   |  25 +-
 .../functions/fnc_update_target_data.sqf      |  40 +++
 .../functions/fnc_update_unit_selection.sqf   |   4 +
 .../functions/fnc_update_zero_range.sqf       |  15 +-
 46 files changed, 1174 insertions(+), 292 deletions(-)
 create mode 100644 addons/atragmx/functions/fnc_cycle_gun_list.sqf
 create mode 100644 addons/atragmx/functions/fnc_cycle_image_size_units.sqf
 create mode 100644 addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf
 create mode 100644 addons/atragmx/functions/fnc_cycle_target_size_units.sqf
 create mode 100644 addons/atragmx/functions/fnc_restore_atmo_default.sqf
 create mode 100644 addons/atragmx/functions/fnc_restore_user_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_show_atmo_env_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_show_target_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_store_user_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_toggle_target_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_update_atmo_env_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_update_atmo_selection.sqf
 create mode 100644 addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
 create mode 100644 addons/atragmx/functions/fnc_update_target_data.sqf

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index b60ff03fdc..592374ddad 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -230,12 +230,12 @@ class ATragMX_Display {
             w=0.03;
             h=0.03;
             colorBackground[]={0,0,0,0.0};
-            action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) - 1) % (count GVAR(gunList)) call FUNC(change_gun));
+            action=QUOTE(-1 call FUNC(cycle_gun_list));
         };
         class BOTTOM: TOP {
             idc=-1;
             y=0.265*safezoneH+safezoneY+0.955;
-            action=QUOTE((GVAR(currentGun) + (count GVAR(gunList)) + 1) % (count GVAR(gunList)) call FUNC(change_gun));
+            action=QUOTE(+1 call FUNC(cycle_gun_list));
         };
         class LEFT: ATragMX_RscButton {
             idc=-1;
@@ -316,6 +316,7 @@ class ATragMX_Display {
             colorBackground[]={0.15,0.21,0.23,0.3};
             colorFocused[]={0.15,0.21,0.23,0.2};
             text="Gun";
+            action=QUOTE(call FUNC(toggle_gun_ammo_data));
         };
         class TEXT_BORE_HEIGHT: TEXT_GUN_PROFILE {
             idc=10;
@@ -323,12 +324,12 @@ class ATragMX_Display {
             y=0.265*safezoneH+safezoneY+0.285;
             text="BH";
         };
-        class TEXT_BORE_HEIGHT_INPUT: ATragMX_RscEdit {
+        class TEXT_BORE_HEIGHT_OUTPUT: TEXT_BORE_HEIGHT {
             idc=100;
+            style=ST_RIGHT;
             w=0.058;
             x=0.550*safezoneW+safezoneX+0.145;
             y=0.265*safezoneH+safezoneY+0.285;
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
         };
         class TEXT_BULLET_MASS: TEXT_BORE_HEIGHT {
             idc=11;
@@ -336,7 +337,7 @@ class ATragMX_Display {
             y=0.265*safezoneH+safezoneY+0.320;
             text="BW";
         };
-        class TEXT_BULLET_MASS_INPUT: TEXT_BORE_HEIGHT_INPUT {
+        class TEXT_BULLET_MASS_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
             idc=110;
             y=0.265*safezoneH+safezoneY+0.320;
         };
@@ -345,7 +346,7 @@ class ATragMX_Display {
             y=0.265*safezoneH+safezoneY+0.355;
             text="C1";
         };
-        class TEXT_AIR_FRICTION_INPUT: TEXT_BORE_HEIGHT_INPUT {
+        class TEXT_AIR_FRICTION_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
             idc=120;
             y=0.265*safezoneH+safezoneY+0.355;
         };
@@ -359,7 +360,7 @@ class ATragMX_Display {
             colorFocused[]={0.15,0.21,0.23,0.2};
             text="MV";
         };
-        class TEXT_MUZZLE_VELOCITY_INPUT: TEXT_BORE_HEIGHT_INPUT {
+        class TEXT_MUZZLE_VELOCITY_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
             idc=130;
             y=0.265*safezoneH+safezoneY+0.390;
         };
@@ -368,35 +369,35 @@ class ATragMX_Display {
             y=0.265*safezoneH+safezoneY+0.425;
             text="ZR";
         };
-        class TEXT_ZERO_RANGE_INPUT: TEXT_BORE_HEIGHT_INPUT {
+        class TEXT_ZERO_RANGE_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
             idc=140;
             y=0.265*safezoneH+safezoneY+0.425;
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(update_zero_range)});
         };
         class TEXT_ATMOSPHERE: TEXT_GUN {
             idc=4001;
             x=0.550*safezoneW+safezoneX+0.205;
             text="Atmsphr";
+            action=QUOTE(0 call FUNC(toggle_atmo_env_data));
         };
         class TEXT_TEMPERATURE: TEXT_BULLET_MASS {
             idc=20;
             x=0.550*safezoneW+safezoneX+0.20;
             text="Tmp";
         };
-        class TEXT_TEMPERATURE_INPUT: ATragMX_RscEdit {
+        class TEXT_TEMPERATURE_OUTPUT: TEXT_TEMPERATURE {
             idc=200;
+            style=ST_RIGHT;
             w=0.050;
             x=0.550*safezoneW+safezoneX+0.245;
             y=0.265*safezoneH+safezoneY+0.320;
             text="";
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
         };
         class TEXT_BAROMETRIC_PRESSURE: TEXT_AIR_FRICTION {
             idc=21;
             x=0.550*safezoneW+safezoneX+0.20;
             text="BP";
         };
-        class TEXT_BAROMETRIC_PRESSURE_INPUT: TEXT_TEMPERATURE_INPUT {
+        class TEXT_BAROMETRIC_PRESSURE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
             idc=210;
             y=0.265*safezoneH+safezoneY+0.355;
         };
@@ -406,10 +407,19 @@ class ATragMX_Display {
             y=0.265*safezoneH+safezoneY+0.390;
             text="RH";
         };
-        class TEXT_RELATIVE_HUMIDITY_INPUT: TEXT_TEMPERATURE_INPUT {
+        class TEXT_RELATIVE_HUMIDITY_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
             idc=220;
             y=0.265*safezoneH+safezoneY+0.390;
         };
+        class TEXT_ALTITUDE: TEXT_BORE_HEIGHT {
+            idc=23;
+            x=0.550*safezoneW+safezoneX+0.20;
+            text="Alt";
+        };
+        class TEXT_ALTITUDE_OUTPUT: TEXT_TEMPERATURE_OUTPUT {
+            idc=230;
+            y=0.265*safezoneH+safezoneY+0.285;
+        };
         class TEXT_TARGET_A: ATragMX_RscButton {
             idc=500;
             w=0.0231;
@@ -445,18 +455,18 @@ class ATragMX_Display {
             idc=4002;
             x=0.550*safezoneW+safezoneX+0.3;
             text="Target";
+            action=QUOTE(0 call FUNC(toggle_target_data));
         };
         class TEXT_WIND_SPEED: TEXT_BORE_HEIGHT {
             idc=30;
             x=0.550*safezoneW+safezoneX+0.3;
             text="WS";
         };
-        class TEXT_WIND_SPEED_INPUT: ATragMX_RscEdit {
+        class TEXT_WIND_SPEED_OUTPUT: TEXT_BORE_HEIGHT_OUTPUT {
             idc=300;
             w=0.058;
             x=0.550*safezoneW+safezoneX+0.335;
             y=0.265*safezoneH+safezoneY+0.285;
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(calculate_target_solution)});
             text="0";
         };
         class TEXT_WIND_DIRECTION: TEXT_BULLET_MASS {
@@ -464,7 +474,7 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.3;
             text="WD";
         };
-        class TEXT_WIND_DIRECTION_INPUT: TEXT_WIND_SPEED_INPUT {
+        class TEXT_WIND_DIRECTION_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
             idc=310;
             y=0.265*safezoneH+safezoneY+0.32;
         };
@@ -473,7 +483,7 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.3;
             text="IA";
         };
-        class TEXT_INCLINATION_ANGLE_INPUT: TEXT_WIND_SPEED_INPUT {
+        class TEXT_INCLINATION_ANGLE_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
             idc=320;
             y=0.265*safezoneH+safezoneY+0.355;
         };
@@ -481,9 +491,9 @@ class ATragMX_Display {
             idc=33;
             x=0.550*safezoneW+safezoneX+0.3;
             text="TS";
-            action=QUOTE(call FUNC(toggle_target_speed_assist));
+            action=QUOTE(0 call FUNC(toggle_target_speed_assist));
         };
-        class TEXT_TARGET_SPEED_INPUT: TEXT_WIND_SPEED_INPUT {
+        class TEXT_TARGET_SPEED_OUTPUT: TEXT_WIND_SPEED_OUTPUT {
             idc=330;
             y=0.265*safezoneH+safezoneY+0.39;
         };
@@ -493,7 +503,7 @@ class ATragMX_Display {
             text="TR";
             action=QUOTE(0 call FUNC(toggle_target_range_assist));
         };
-        class TEXT_TARGET_RANGE_INPUT: TEXT_WIND_SPEED_INPUT {
+        class TEXT_TARGET_RANGE_INPUT: TEXT_WIND_SPEED_OUTPUT {
             idc=340;
             y=0.265*safezoneH+safezoneY+0.425;
         };
@@ -563,6 +573,7 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.11;
             y=0.265*safezoneH+safezoneY+0.57;
             text="Lead";
+            action="";
         };
         class TEXT_LEAD_OUTPUT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
             idc=420;
@@ -814,13 +825,13 @@ class ATragMX_Display {
             w=0.07;
             x=0.550*safezoneW+safezoneX+0.32;
             text="cm";
-            action=QUOTE(GVAR(rangeAssistTargetSizeUnit)=(GVAR(rangeAssistTargetSizeUnit)+1) % (count GVAR(GVAR(rangeAssistTargetSizeUnit)s)); ctrlSetText [7014, GVAR(GVAR(rangeAssistTargetSizeUnit)s) select GVAR(rangeAssistTargetSizeUnit)]);
+            action=QUOTE(call FUNC(cycle_target_size_units));
         };
         class TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_UNIT {
             idc=7015;
             y=0.265*safezoneH+safezoneY+0.45;
             text="MIL";
-            action=QUOTE(GVAR(rangeAssistImageSizeUnit)=(GVAR(rangeAssistImageSizeUnit)+1) % (count GVAR(rangeAssistImageSizeUnits)); ctrlSetText [7015, GVAR(rangeAssistImageSizeUnits) select GVAR(rangeAssistImageSizeUnit)]);
+            action=QUOTE(call FUNC(cycle_image_size_units));
         };
         class TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE_UNIT: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
             idc=7016;
@@ -861,22 +872,22 @@ class ATragMX_Display {
 
         class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE {
             idc=8000;
-            x=0.550*safezoneW+safezoneX+0.12;
+            x=0.550*safezoneW+safezoneX+0.13;
             text="Target Range";
         };
         class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE {
             idc=8001;
-            x=0.550*safezoneW+safezoneX+0.12;
+            x=0.550*safezoneW+safezoneX+0.13;
             text="Num Ticks";
         };
         class TEXT_TARGET_SPEED_ASSIST_TIME: TEXT_TARGET_RANGE_ASSIST_ANGLE {
             idc=8002;
-            x=0.550*safezoneW+safezoneX+0.12;
+            x=0.550*safezoneW+safezoneX+0.13;
             text="Time (secs)";
         };
         class TEXT_TARGET_SPEED_ASSIST_TARGET_ESTIMATED_SPEED: TEXT_TARGET_RANGE_ASSIST_ESTIMATED_RANGE {
             idc=8003;
-            x=0.550*safezoneW+safezoneX+0.12;
+            x=0.550*safezoneW+safezoneX+0.13;
             text="Est Speed";
         };
         class TEXT_TARGET_SPEED_ASSIST_TARGET_RANGE_INPUT: TEXT_TARGET_RANGE_ASSIST_TARGET_SIZE_INPUT {
@@ -907,7 +918,7 @@ class ATragMX_Display {
         class TEXT_TARGET_SPEED_ASSIST_NUM_TICKS_UNIT: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
             idc=8009;
             text="MIL";
-            action=QUOTE(GVAR(speedAssistNumTicksUnit)=(GVAR(speedAssistNumTicksUnit)+1) % (count GVAR(speedAssistNumTicksUnits)); ctrlSetText [8009, GVAR(speedAssistNumTicksUnits) select GVAR(speedAssistNumTicksUnit)]; call FUNC(calculate_target_speed_assist));
+            action=QUOTE(call FUNC(cycle_num_ticks_units));
         };
         class TEXT_TARGET_SPEED_ASSIST_TIMER_START: TEXT_TARGET_RANGE_ASSIST_IMAGE_SIZE_UNIT {
             idc=8010;
@@ -1046,5 +1057,258 @@ class ATragMX_Display {
             text="Cancel";
             action=QUOTE(false call FUNC(show_add_new_gun); true call FUNC(show_gun_list));
         };
+        
+        class TEXT_GUN_AMMO_DATA_BORE_HEIGHT: TEXT_BORE_HEIGHT {
+            idc=12000;
+            w=0.22;
+            y=0.265*safezoneH+safezoneY+0.28;
+            text="Bore     (cm)";
+        };
+        class TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT: ATragMX_RscEdit {
+            idc=120000;
+            w=0.06;
+            x=0.550*safezoneW+safezoneX+0.335;
+            y=0.265*safezoneH+safezoneY+0.28;
+        };
+        class TEXT_GUN_AMMO_DATA_BULLET_MASS: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12001;
+            y=0.265*safezoneH+safezoneY+0.320;
+            text="Bullet Weight    (grams)";
+        };
+        class TEXT_GUN_AMMO_DATA_BULLET_MASS_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120010;
+            y=0.265*safezoneH+safezoneY+0.320;
+        };
+        class TEXT_GUN_AMMO_DATA_BULLET_DIAMETER: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12002;
+            y=0.265*safezoneH+safezoneY+0.360;
+            text="Bullet Diam  (cm)";
+        };
+        class TEXT_GUN_AMMO_DATA_BULLET_DIAMETER_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120020;
+            y=0.265*safezoneH+safezoneY+0.360;
+        };
+        class TEXT_GUN_AMMO_DATA_AIR_FRICTION: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12003;
+            y=0.265*safezoneH+safezoneY+0.400;
+            text="C1 Coefficient";
+        };
+        class TEXT_GUN_AMMO_DATA_AIR_FRICTION_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120030;
+            y=0.265*safezoneH+safezoneY+0.400;
+        };
+        class TEXT_GUN_AMMO_DATA_RIFLE_TWIST: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12004;
+            y=0.265*safezoneH+safezoneY+0.440;
+            text="Rifle Twist (cm/trn)";
+        };
+        class TEXT_GUN_AMMO_DATA_RIFLE_TWIST_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120040;
+            y=0.265*safezoneH+safezoneY+0.440;
+        };
+        class TEXT_GUN_AMMO_DATA_MUZZLE_VELOCITY: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12005;
+            y=0.265*safezoneH+safezoneY+0.480;
+            text="Muzzle Velocity (m/s)";
+        };
+        class TEXT_GUN_AMMO_DATA_MUZZLE_VELOCITY_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120050;
+            y=0.265*safezoneH+safezoneY+0.480;
+        };
+        class TEXT_GUN_AMMO_DATA_ZERO_RANGE: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=12006;
+            y=0.265*safezoneH+safezoneY+0.520;
+            text="Zero Range   (meters)";
+        };
+        class TEXT_GUN_AMMO_DATA_ZERO_RANGE_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=120060;
+            y=0.265*safezoneH+safezoneY+0.520;
+        };
+        class TEXT_GUN_AMMO_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
+            idc=12008;
+            action=QUOTE(1 call FUNC(toggle_gun_ammo_data));
+        };
+        class TEXT_GUN_AMMO_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
+            idc=12009;
+            action=QUOTE(0 call FUNC(toggle_gun_ammo_data));
+        };
+        class TEXT_GUN_AMMO_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
+            idc=12010;
+        };
+        class TEXT_GUN_AMMO_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
+            idc=12011;
+        };
+        
+        class TEXT_ATMO_ENV_DATA_DEFAULT: TEXT_LEAD {
+            idc=13000;
+            w=0.08;
+            x=0.550*safezoneW+safezoneX+0.15;
+            y=0.265*safezoneH+safezoneY+0.320;
+            text="Default";
+            action=QUOTE(call FUNC(restore_atmo_default));
+        };
+        class TEXT_ATMO_ENV_DATA_AT: TEXT_TARGET_A {
+            idc=13001;
+            w=0.04;
+            x=0.550*safezoneW+safezoneX+0.24;
+            y=0.265*safezoneH+safezoneY+0.320;
+            text="AT";
+            action=QUOTE(GVAR(atmosphereModeTBH) = false; call FUNC(update_atmo_selection));
+        };
+        class TEXT_ATMO_ENV_DATA_TBH: TEXT_ATMO_ENV_DATA_AT {
+            idc=13002;
+            x=0.550*safezoneW+safezoneX+0.28;
+            text="TBH";
+            action=QUOTE(GVAR(atmosphereModeTBH) = true; call FUNC(update_atmo_selection));
+        };
+        class TEXT_ATMO_ENV_DATA_ALTITUDE: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=13003;
+            x=0.550*safezoneW+safezoneX+0.115;
+            y=0.265*safezoneH+safezoneY+0.400;
+            text="Altitude (ft)";
+        };
+        class TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT: TEXT_GUN_AMMO_DATA_BORE_HEIGHT_INPUT {
+            idc=130030;
+            x=0.550*safezoneW+safezoneX+0.330;
+            y=0.265*safezoneH+safezoneY+0.400;
+        };
+        class TEXT_ATMO_ENV_DATA_TEMPERATURE: TEXT_ATMO_ENV_DATA_ALTITUDE {
+            idc=13004;
+            y=0.265*safezoneH+safezoneY+0.440;
+            text="temperature (F)";
+        };
+        class TEXT_ATMO_ENV_DATA_TEMPERATURE_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
+            idc=130040;
+            y=0.265*safezoneH+safezoneY+0.440;
+        };
+        class TEXT_ATMO_ENV_DATA_BAROMETRIC_PRESSURE: TEXT_ATMO_ENV_DATA_ALTITUDE {
+            idc=13005;
+            y=0.265*safezoneH+safezoneY+0.480;
+            text="Barom Pres (in.merc.)";
+        };
+        class TEXT_ATMO_ENV_DATA_BAROMETRIC_PRESSURE_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
+            idc=130050;
+            y=0.265*safezoneH+safezoneY+0.480;
+        };
+        class TEXT_ATMO_ENV_DATA_RELATIVE_HUMIDITY: TEXT_ATMO_ENV_DATA_ALTITUDE {
+            idc=13006;
+            y=0.265*safezoneH+safezoneY+0.520;
+            text="Relative Humidity (%)";
+        };
+        class TEXT_ATMO_ENV_DATA_RELATIVE_HUMIDITY_INPUT: TEXT_ATMO_ENV_DATA_ALTITUDE_INPUT {
+            idc=130060;
+            y=0.265*safezoneH+safezoneY+0.520;
+        };
+        class TEXT_ATMO_ENV_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
+            idc=13007;
+            action=QUOTE(1 call FUNC(toggle_atmo_env_data));
+        };
+        class TEXT_ATMO_ENV_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
+            idc=13008;
+            action=QUOTE(0 call FUNC(toggle_atmo_env_data));
+        };
+        class TEXT_ATMO_ENV_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
+            idc=13009;
+        };
+        class TEXT_ATMO_ENV_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
+            idc=13010;
+        };
+        
+        class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT {
+            idc=14000;
+            w=0.22;
+            y=0.265*safezoneH+safezoneY+0.28;
+            text="Latitude";
+        };
+        class TEXT_TARGET_DATA_LATITUDE_INPUT: ATragMX_RscEdit {
+            idc=140000;
+            w=0.06;
+            x=0.550*safezoneW+safezoneX+0.335;
+            y=0.265*safezoneH+safezoneY+0.28;
+        };
+        class TEXT_TARGET_DATA_DIR_OF_FIRE: TEXT_TARGET_DATA_LATITUDE {
+            idc=14001;
+            y=0.265*safezoneH+safezoneY+0.320;
+            text="Dir of Fire (deg from N)";
+        };
+        class TEXT_TARGET_DATA_DIR_OF_FIRE_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140010;
+            y=0.265*safezoneH+safezoneY+0.320;
+        };
+        class TEXT_TARGET_DATA_WIND_SPEED: TEXT_TARGET_DATA_LATITUDE {
+            idc=14002;
+            y=0.265*safezoneH+safezoneY+0.360;
+            text="Wind Speed (m/s)";
+        };
+        class TEXT_TARGET_DATA_WIND_SPEED_INPUT_1: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140020;
+            w=0.045;
+            x=0.550*safezoneW+safezoneX+0.300;
+            y=0.265*safezoneH+safezoneY+0.360;
+        };
+        class TEXT_TARGET_DATA_WIND_SPEED_INPUT_2: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140021;
+            w=0.045;
+            x=0.550*safezoneW+safezoneX+0.350;
+            y=0.265*safezoneH+safezoneY+0.360;
+        };
+        class TEXT_TARGET_DATA_WIND_DIRECTION: TEXT_TARGET_DATA_LATITUDE {
+            idc=14003;
+            y=0.265*safezoneH+safezoneY+0.400;
+            text="Wind Direction (clock)";
+        };
+        class TEXT_TARGET_DATA_WIND_DIRECTION_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140030;
+            y=0.265*safezoneH+safezoneY+0.400;
+        };
+        class TEXT_TARGET_DATA_INCLINATION_ANGLE: TEXT_TARGET_DATA_LATITUDE {
+            idc=14004;
+            y=0.265*safezoneH+safezoneY+0.440;
+            text="Inclination Angle";
+        };
+        class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_COSINE: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140041;
+            w=0.045;
+            x=0.550*safezoneW+safezoneX+0.300;
+            y=0.265*safezoneH+safezoneY+0.440;
+        };
+        class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_DEGREE: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140040;
+            w=0.045;
+            x=0.550*safezoneW+safezoneX+0.350;
+            y=0.265*safezoneH+safezoneY+0.440;
+        };
+        class TEXT_TARGET_DATA_TARGET_SPEED: TEXT_TARGET_DATA_LATITUDE {
+            idc=14005;
+            y=0.265*safezoneH+safezoneY+0.480;
+            text="Target Speed (m/s)";
+        };
+        class TEXT_TARGET_DATA_TARGET_SPEED_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140050;
+            y=0.265*safezoneH+safezoneY+0.480;
+        };
+        class TEXT_TARGET_DATA_TARGET_RANGE: TEXT_TARGET_DATA_LATITUDE {
+            idc=14006;
+            y=0.265*safezoneH+safezoneY+0.520;
+            text="Target Range (meters)";
+        };
+        class TEXT_TARGET_DATA_TARGET_RANGE_INPUT: TEXT_TARGET_DATA_LATITUDE_INPUT {
+            idc=140060;
+            y=0.265*safezoneH+safezoneY+0.520;
+        };
+        class TEXT_TARGET_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
+            idc=14008;
+            action=QUOTE(1 call FUNC(toggle_target_data));
+        };
+        class TEXT_TARGET_DATA_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
+            idc=14009;
+            action=QUOTE(0 call FUNC(toggle_target_data));
+        };
+        class TEXT_TARGET_DATA_PREV: TEXT_TARGET_SPEED_ASSIST_PREV {
+            idc=14010;
+        };
+        class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
+            idc=14011;
+        };
     };
 };
\ No newline at end of file
diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index 9d769d84a3..01b13fc85e 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -5,43 +5,44 @@
 if (count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
     GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
 } else {
-    // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Ammo Class Name, Magazine Class Name, BC, Drag Model, Atmosphere Model
-    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, "B_127x108_Ball"                   , "5Rnd_127x108_Mag"                      , 0.630, 1, "ASM" ],
+    // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
+    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
     
-                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x99_Ball"                    , "5Rnd_mas_127x99_Stanag"                , 1.050, 1, "ASM" ],
-                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, "B_127x99_Ball"                    , "5Rnd_mas_127x99_Stanag"                , 0.670, 1, "ASM" ],
+                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
+                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
                       
-                      ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, "B_127x54_Ball"                    , "10Rnd_127x54_Mag"                      , 1.050, 1, "ASM" ],
+                      ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
                       
-                      [".408 Chey Tac"     , 910, 100, 0.0569, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, "B_408_Ball"                       , "7Rnd_408_Mag"                          , 0.970, 1, "ASM" ],
+                      [".408 Chey Tac"     , 910, 100, 0.0569, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
                       
-                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "B_93x64_Ball"                     , "10Rnd_93x64_DMR_05_Mag"                , 0.368, 1, "ASM" ],
+                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
                       
-                      [".338LM 250gr"      , 880, 100, 0.0598, -0.0006060, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, "B_338_Ball"                       , "10Rnd_338_Mag"                         , 0.322, 7, "ICAO"],
-                      [".338LM 300gr"      , 800, 100, 0.0677, -0.0005350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 19.44, "ACE_338_Ball"                     , "ACE_10Rnd_338_300gr_HPBT_Mag"          , 0.381, 7, "ICAO"],
-                      [".338LM API526"     , 880, 100, 0.0601, -0.0006730, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.39, "ACE_338_Ball_API526"              , "ACE_10Rnd_338_API526_Mag"              , 0.290, 7, "ICAO"],
+                      [".338LM 250gr"      , 880, 100, 0.0598, -0.0006060, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
+                      [".338LM 300gr"      , 800, 100, 0.0677, -0.0005350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
+                      [".338LM API526"     , 880, 100, 0.0601, -0.0006730, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"],
                       
-                      [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 13.31, "ACE_762x67_Ball_Mk248_Mod_0"      , "ACE_20Rnd_762x67_Mk248_Mod_0_Mag"      , 0.268, 7, "ICAO"],
-                      [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.26, "ACE_762x67_Ball_Mk248_Mod_1"      , "ACE_20Rnd_762x67_Mk248_Mod_1_Mag"      , 0.310, 7, "ICAO"],
-                      [".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, "ACE_762x67_Ball_Berger_Hybrid_OTM", "ACE_20Rnd_762x67_Berger_Hybrid_OTM_Mag", 0.368, 7, "ICAO"],
+                      [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
+                      [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
+                      [".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
                       
-                      ["7.62x54mmR"        , 800, 100, 0.0692, -0.0010230, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.849, "B_762x54_Ball"                    , "10Rnd_762x54_Mag"                      , 0.400, 1, "ICAO"],
+                      ["7.62x54mmR"        , 800, 100, 0.0692, -0.0010230, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
                       
-                      ["7.62x51mm M80"     , 810, 100, 0.0679, -0.0010350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.525, "B_762x51_Ball"                    , "20Rnd_762x51_Mag"                      , 0.200, 7, "ICAO"],
-                      ["7.62x51mm M118LR"  , 820, 100, 0.0662, -0.0008525, 3.81, 0, 0.338, 0.338, 120, 0, 0, 11.34, "ACE_762x51_Ball_M118LR"           , "ACE_20Rnd_762x51_M118LR_Mag"           , 0.243, 7, "ICAO"],
-                      ["7.62x51mm Mk319"   , 820, 100, 0.0670, -0.0010300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 8.424, "ACE_762x51_Ball_Mk319_Mod_0"      , "ACE_20Rnd_762x51_Mk319_Mod_0_Mag"      , 0.377, 1, "ICAO"],
-                      ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 0.338, 0.338, 120, 0, 0, 12.96, "ACE_762x51_Ball_Subsonic"         , "ACE_20Rnd_762x51_Mag_SD"               , 0.235, 7, "ICAO"],
+                      ["7.62x51mm M80"     , 810, 100, 0.0679, -0.0010350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
+                      ["7.62x51mm M118LR"  , 820, 100, 0.0662, -0.0008525, 3.81, 0, 0.338, 0.338, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
+                      ["7.62x51mm Mk319"   , 820, 100, 0.0670, -0.0010300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
+                      ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 0.338, 0.338, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
                       
-                      ["6.5x39mm"          , 800, 100, 0.0683, -0.0007850, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.970, "B_65x39_Caseless"                 , "30Rnd_65x39_caseless_mag"              , 0.263, 7, "ICAO"],
-                      ["6.5x47mm Lapua"    , 800, 100, 0.0682, -0.0007710, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.007, "ACE_65x47_Ball_Scenar"            , "ACE_30Rnd_65x47_Scenar_mag"            , 0.290, 7, "ICAO"],
+                      ["6.5x39mm"          , 800, 100, 0.0683, -0.0007850, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
+                      ["6.5x47mm Lapua"    , 800, 100, 0.0682, -0.0007710, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
                       
-                      ["5.56x45mm M855"    , 870, 100, 0.0626, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "B_556x45_Ball"                    , "30Rnd_556x45_Stanag"                   , 0.151, 7, "ASM" ],
-                      ["5.56x45mm Mk262"   , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, "ACE_556x45_Ball_Mk262"            , "ACE_30Rnd_556x45_Stanag_Mk262_mag"     , 0.361, 1, "ASM" ],
-                      ["5.56x45mm Mk318"   , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, "ACE_556x45_Ball_Mk318"            , "ACE_30Rnd_556x45_Stanag_Mk318_mag"     , 0.307, 1, "ASM" ]];
+                      ["5.56x45mm M855"    , 870, 100, 0.0626, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
+                      ["5.56x45mm Mk262"   , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
+                      ["5.56x45mm Mk318"   , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]];
     
     profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
 };
 
 [] call FUNC(init);
+[] call FUNC(restore_user_data);
 
 ["RangerfinderData", {_this call FUNC(sord)}] call EFUNC(common,addEventHandler);
diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf
index 0224fc3e9c..10e0aff61c 100644
--- a/addons/atragmx/XEH_preInit.sqf
+++ b/addons/atragmx/XEH_preInit.sqf
@@ -13,35 +13,52 @@ PREP(can_show);
 PREP(change_gun);
 PREP(change_target_slot);
 PREP(create_dialog);
+PREP(cycle_gun_list);
+PREP(cycle_image_size_units);
+PREP(cycle_num_ticks_units);
 PREP(cycle_range_card_columns);
 PREP(cycle_scope_unit);
+PREP(cycle_target_size_units);
 PREP(delete_gun);
 PREP(init);
 PREP(parse_input);
 PREP(reset_relative_click_memory);
+PREP(restore_atmo_default);
+PREP(restore_user_data);
 PREP(save_gun);
 PREP(show_add_new_gun);
+PREP(show_atmo_env_data);
+PREP(show_gun_ammo_data);
 PREP(show_gun_list);
 PREP(show_main_page);
 PREP(show_range_card);
 PREP(show_range_card_setup);
+PREP(show_target_data);
 PREP(show_target_range_assist);
 PREP(show_target_speed_assist);
 PREP(show_target_speed_assist_timer);
 PREP(sord);
+PREP(store_user_data);
 PREP(target_speed_assist_timer);
+PREP(toggle_atmo_env_data);
+PREP(toggle_gun_ammo_data);
 PREP(toggle_gun_list);
 PREP(toggle_range_card);
 PREP(toggle_range_card_setup);
+PREP(toggle_target_data);
 PREP(toggle_target_range_assist);
 PREP(toggle_target_speed_assist);
 PREP(update_atmosphere);
+PREP(update_atmo_env_data);
+PREP(update_atmo_selection);
 PREP(update_gun);
+PREP(update_gun_ammo_data);
 PREP(update_range_card);
 PREP(update_relative_click_memory);
 PREP(update_result);
 PREP(update_scope_unit);
 PREP(update_target);
+PREP(update_target_data);
 PREP(update_target_selection);
 PREP(update_unit_selection);
 PREP(update_zero_range);
diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf
index aecd6496af..f506726be2 100644
--- a/addons/atragmx/functions/fnc_calculate_range_card.sqf
+++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf
@@ -20,43 +20,64 @@
 private ["_scopeBaseAngle"];
 _scopeBaseAngle = (GVAR(workingMemory) select 3);
 
-private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
+private ["_bulletMass", "_bulletDiameter", "_boreHeight", "_airFriction", "_barrelTwist", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel", "_twistDirection"];
 _bulletMass = GVAR(workingMemory) select 12;
+_bulletDiameter = GVAR(workingMemory) select 13;
 _boreHeight = GVAR(workingMemory) select 5;
 _airFriction = GVAR(workingMemory) select 4;
+_barrelTwist = GVAR(workingMemory) select 14;
 _muzzleVelocity = GVAR(workingMemory) select 1;
 _bc = GVAR(workingMemory) select 15;
 _dragModel = GVAR(workingMemory) select 16;
 _atmosphereModel = GVAR(workingMemory) select 17;
 
-private ["_temperature", "_barometricPressure", "_relativeHumidity"];
+_twistDirection = 0;
+if (_barrelTwist > 0) then {
+    _twistDirection = 1;
+} else {
+    if (_barrelTwist < 0) then {
+        _twistDirection = -1;
+    };
+};
+_barrelTwist = abs(_barrelTwist);
+
+private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
+_altitude = GVAR(altitude);
 _temperature = GVAR(temperature);
 _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
-if (GVAR(currentUnit) == 1) then
-{
-    _temperature = (_temperature - 32) / 1.8;
-    _barometricPressure = _barometricPressure * 33.8638866667;
+if (!GVAR(atmosphereModeTBH)) then {
+    _barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
+    _relativeHumidity = 50;
 };
 
-private ["_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
-_windSpeed = (GVAR(windSpeed) select GVAR(currentTarget));
+private ["_bulletLength", "_stabilityFactor"];
+_bulletLength = 1.8;
+_stabilityFactor = 1.5;
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
+    if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
+        _stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
+    };
+};
+
+private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+_latitude = GVAR(latitude) select GVAR(currentTarget);
+_directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
+_windSpeed = (GVAR(windSpeed1) select GVAR(currentTarget));
 _windDirection = (GVAR(windDirection) select GVAR(currentTarget));
 _inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
 _targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
 _targetRange = GVAR(rangeCardEndRange);
-if (GVAR(currentUnit) != 2) then
-{
-    _targetRange = _targetRange / 1.0936133;
-};
-if (GVAR(currentUnit) == 1) then
-{
+if (GVAR(currentUnit) != 2) then {
     _windSpeed = _windSpeed / 2.23693629;
     _targetSpeed = _targetSpeed / 2.23693629;
 };
+if (GVAR(currentUnit) == 1) then {
+    _targetRange = _targetRange / 1.0936133;
+};
 
 GVAR(rangeCardData) = [];
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true] call FUNC(calculate_solution);
+            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
diff --git a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
index 17370c82b2..4995c31a61 100644
--- a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
+++ b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
@@ -35,6 +35,6 @@ _barometricPressure = 1013.25;
 _relativeHumidity = 0;
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 _scopeBaseAngle + (_result select 0) / 60
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index 4e7f5981c1..f7f23044e3 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -21,6 +21,9 @@
  * 15: drag model <NUMBER>
  * 16: atmosphere model <STRING>
  * 17: Store range card data? <BOOL>
+ * 18: Stability factor <NUMBER>
+ * 19: Twist Direction <NUMBER>
+ * 20: Latitude <NUMBER>
  *
  * Return Value:
  * 0: Elevation <NUMBER>
@@ -28,7 +31,10 @@
  * 2: Lead <NUMBER>
  * 3: Time of fligth <NUMBER>
  * 4: Remaining velocity <NUMBER>
- * 4: Remaining kinetic energy <NUMBER>
+ * 5: Remaining kinetic energy <NUMBER>
+ * 6: Vertical coriolis drift <NUMBER>
+ * 7: Horizontal coriolis drift <NUMBER>
+ * 8: Spin drift <NUMBER>
  *
  * Example:
  * call ace_atragmx_calculate_target_range_assist
@@ -37,7 +43,7 @@
  */
 #include "script_component.hpp"
 
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
 _boreHeight         = _this select 2;
@@ -56,6 +62,9 @@ _bc                 = _this select 14;
 _dragModel          = _this select 15;
 _atmosphereModel    = _this select 16;
 _storeRangeCardData = _this select 17;
+_stabilityFactor    = _this select 18;
+_twistDirection     = _this select 19;
+_latitude           = _this select 20;
 
 private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
 _bulletPos = [0, 0, 0];
@@ -65,20 +74,26 @@ _bulletSpeed = 0;
 _gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665];
 _deltaT = 1 / _simSteps;
 
-private ["_elevation", "_windage", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy"];
+private ["_elevation", "_windage", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
 _elevation = 0;
 _windage = 0;
 _lead = 0;
 _TOF = 0;
 _trueVelocity = [0, 0, 0];
 _trueSpeed = 0;
+_verticalCoriolis = 0;
+_verticalDeflection = 0;
+_horizontalCoriolis = 0;
+_horizontalDeflection = 0;
+_spinDrift = 0;
+_spinDeflection = 0;
 
 private ["_n", "_range", "_rangeFactor"];
 _n = 0;
 _range = 0;
 _rangeFactor = 1;
 if (_storeRangeCardData) then {
-    if (GVAR(currentUnit) != 2) then {
+    if (GVAR(currentUnit) == 1) then {
         _rangeFactor = 1.0936133;
     };
     GVAR(rangeCardData) = [];
@@ -90,6 +105,11 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
     _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
 };
 
+private ["_speedTotal", "_stepsTotal", "_speedAverage"];
+_speedTotal = 0;
+_stepsTotal = 0;
+_speedAverage = 0;
+
 _TOF = 0;
 
 _bulletPos set [0, 0];
@@ -102,6 +122,10 @@ _bulletVelocity set [2, Sin(_scopeBaseAngle) * _muzzleVelocity];
 
 while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
     _bulletSpeed = vectorMagnitude _bulletVelocity;
+    
+    _speedTotal = _speedTotal + _bulletSpeed;
+    _stepsTotal = _stepsTotal + 1;
+    _speedAverage = (_speedTotal / _stepsTotal);
 
     _trueVelocity = _bulletVelocity vectorDiff _wind;
     _trueSpeed = vectorMagnitude _trueVelocity;
@@ -139,7 +163,22 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
             };
             _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
             _kineticEnergy = _kineticEnergy * 0.737562149;
-
+            
+            if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
+                if ((_bulletPos select 1) > 0) then {
+                    _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+                    _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
+                    _windage = _windage + _horizontalCoriolis;
+                };
+            };
+            if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
+                if ((_bulletPos select 1) > 0) then {
+                    _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
+                    _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
+                    _windage = _windage + _spinDrift;
+                };
+            };
+            
             GVAR(rangeCardData) set [_n, [_range, _elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]];
             _n = _n + 1;
         };
@@ -158,4 +197,19 @@ if (_targetRange != 0) then {
 _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
 _kineticEnergy = _kineticEnergy * 0.737562149;
 
-[_elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
+    if ((_bulletPos select 1) > 0) then {
+        _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+        _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
+        _windage = _windage + _horizontalCoriolis;
+    };
+};
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
+    if ((_bulletPos select 1) > 0) then {
+        _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
+        _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
+        _windage = _windage + _spinDrift;
+    };
+};
+
+[_elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis, _horizontalCoriolis, _spinDrift]
diff --git a/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf b/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf
index 6280f19339..91eb9ae20c 100644
--- a/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_range_assist.sqf
@@ -46,7 +46,7 @@ switch (GVAR(rangeAssistImageSizeUnit)) do {
     };
 };
 _estRange = parseNumber(ctrlText 7013);
-if (GVAR(currentUnit) != 2) then {
+if (GVAR(currentUnit) == 1) then {
     _estRange = _estRange / 1.0936133;
 };
 
diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
index 3f4c92c191..f6dd92bc7f 100644
--- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
@@ -20,44 +20,65 @@
 private ["_scopeBaseAngle"];
 _scopeBaseAngle = (GVAR(workingMemory) select 3);
 
-private ["_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel"];
+private ["_bulletMass", "_bulletDiameter", "_boreHeight", "_airFriction", "_barrelTwist", "_muzzleVelocity", "_bc", "_dragModel", "_atmosphereModel", "_twistDirection"];
 _bulletMass = GVAR(workingMemory) select 12;
+_bulletDiameter = GVAR(workingMemory) select 13;
 _boreHeight = GVAR(workingMemory) select 5;
 _airFriction = GVAR(workingMemory) select 4;
+_barrelTwist = GVAR(workingMemory) select 14;
 _muzzleVelocity = GVAR(workingMemory) select 1;
 _bc = GVAR(workingMemory) select 15;
 _dragModel = GVAR(workingMemory) select 16;
 _atmosphereModel = GVAR(workingMemory) select 17;
 
-private ["_temperature", "_barometricPressure", "_relativeHumidity"];
+_twistDirection = 0;
+if (_barrelTwist > 0) then {
+    _twistDirection = 1;
+} else {
+    if (_barrelTwist < 0) then {
+        _twistDirection = -1;
+    };
+};
+_barrelTwist = abs(_barrelTwist);
+
+private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
+_altitude = GVAR(altitude);
 _temperature = GVAR(temperature);
 _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
-if (GVAR(currentUnit) == 1) then
-{
-    _temperature = (_temperature - 32) / 1.8;
-    _barometricPressure = _barometricPressure * 33.8638866667;
+if (!GVAR(atmosphereModeTBH)) then {
+    _barometricPressure = 1013.25 * exp(-(_altitude) / 7990);
+    _relativeHumidity = 50;
 };
 
-private ["_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
-_windSpeed = (GVAR(windSpeed) select GVAR(currentTarget));
-_windDirection = (GVAR(windDirection) select GVAR(currentTarget));
-_inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
-_targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
-_targetRange = (GVAR(targetRange) select GVAR(currentTarget));
-if (GVAR(currentUnit) != 2) then
-{
-    _targetRange = _targetRange / 1.0936133;
+private ["_bulletLength", "_stabilityFactor"];
+_bulletLength = 1.8;
+_stabilityFactor = 1.5;
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
+    if (_bulletDiameter > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
+        _stabilityFactor = [_bulletDiameter / 10 / 2.54, _bulletLength, _bulletMass * 15.4323584, _barrelTwist / 2.54, _muzzleVelocity, _temperature, _barometricPressure] call EFUNC(advanced_ballistics,calculateStabilityFactor);
+    };
 };
-if (GVAR(currentUnit) == 1) then
-{
+
+private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+_latitude = GVAR(latitude) select GVAR(currentTarget);
+_directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
+_windSpeed = GVAR(windSpeed1) select GVAR(currentTarget);
+_windDirection = GVAR(windDirection) select GVAR(currentTarget);
+_inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
+_targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
+_targetRange = GVAR(targetRange) select GVAR(currentTarget);
+if (GVAR(currentUnit) != 2) then {
     _windSpeed = _windSpeed / 2.23693629;
     _targetSpeed = _targetSpeed / 2.23693629;
 };
+if (GVAR(currentUnit) == 1) then {
+    _targetRange = _targetRange / 1.0936133;
+};
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution);
+            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
 GVAR(windageOutput) set [GVAR(currentTarget), _result select 1];
diff --git a/addons/atragmx/functions/fnc_calculate_target_speed_assist.sqf b/addons/atragmx/functions/fnc_calculate_target_speed_assist.sqf
index 7ee7e9ff78..d055af5a71 100644
--- a/addons/atragmx/functions/fnc_calculate_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_speed_assist.sqf
@@ -22,34 +22,27 @@ _numTicks = parseNumber(ctrlText 8005);
 _timeSecs = parseNumber(ctrlText 8006);
 _estSpeed = 0;
 
-if (GVAR(currentUnit) != 2) then
-{
+if (GVAR(currentUnit) == 1) then {
     _targetRange = _targetRange / 1.0936133;
 };
 
-switch (GVAR(rangeAssistImageSizeUnit)) do
-{
-    case 0:
-    {
+switch (GVAR(rangeAssistImageSizeUnit)) do {
+    case 0: {
         _numTicks = _numTicks / 6400 * 360;
     };
-    case 1:
-    {
+    case 1: {
         _numTicks = _numTicks / 60;
     };
-    case 2:
-    {
+    case 2: {
         _numTicks = _numTicks / 60 / 1.047;
     };
 };
 
-if (_timeSecs > 0) then
-{
+if (_timeSecs > 0) then {
     _estSpeed = tan(_numTicks) * _targetRange / _timeSecs;
 };
 
-if (GVAR(currentUnit) == 1) then
-{
+if (GVAR(currentUnit) != 2) then {
     _estSpeed = _estSpeed * 2.23693629;
 };
 
diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index 520e4e85be..9b0f18c185 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -4,6 +4,7 @@
  *
  * Arguments:
  * gunID <number>
+ * update solution <BOOL>
  *
  * Return Value:
  * Nothing
@@ -15,19 +16,23 @@
  */
 #include "script_component.hpp"
 
-if (_this < 0 || _this > (count GVAR(gunList)) - 1) exitWith {};
+private ["_gunID", "_updateSolution"];
+_gunID          = _this select 0;
+_updateSolution = _this select 1;
 
-GVAR(workingMemory) = +(GVAR(gunList) select _this);
-GVAR(currentGun) = _this;
+if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
+
+GVAR(workingMemory) = +(GVAR(gunList) select _gunID);
+GVAR(currentGun) = _gunID;
 
 lbSetCurSel [6000, GVAR(currentGun)];
 
-if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then
-{
+if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then {
     GVAR(currentScopeUnit) = GVAR(workingMemory) select 6;
 };
 
 [] call FUNC(update_gun);
+[] call FUNC(update_gun_ammo_data);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), 0];
 GVAR(windageOutput) set [GVAR(currentTarget), 0];
@@ -35,4 +40,6 @@ GVAR(leadOutput) set [GVAR(currentTarget), 0];
 GVAR(tofOutput) set [GVAR(currentTarget), 0];
 GVAR(velocityOutput) set [GVAR(currentTarget), 0];
 
-[] call FUNC(calculate_target_solution);
+if (_updateSolution) then {
+    [] call FUNC(calculate_target_solution);
+};
diff --git a/addons/atragmx/functions/fnc_change_target_slot.sqf b/addons/atragmx/functions/fnc_change_target_slot.sqf
index 6e6951c6bf..ed8c622b8d 100644
--- a/addons/atragmx/functions/fnc_change_target_slot.sqf
+++ b/addons/atragmx/functions/fnc_change_target_slot.sqf
@@ -23,4 +23,4 @@ call FUNC(parse_input);
 GVAR(currentTarget) = _target;
 call FUNC(update_target_selection);
 
-call FUNC(calculate_target_solution);
+[] call FUNC(calculate_target_solution);
diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 59ec3528af..5be6e4ecb4 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -26,6 +26,8 @@ call FUNC(update_target_selection);
 GVAR(showMainPage) call FUNC(show_main_page);
 
 GVAR(showAddNewGun) call FUNC(show_add_new_gun);
+GVAR(showAtmoEnvData) call FUNC(show_atmo_env_data);
+GVAR(showGunAmmoData) call FUNC(show_gun_ammo_data);
 GVAR(showGunList) call FUNC(show_gun_list);
 GVAR(showRangeCard) call FUNC(show_range_card);
 if (GVAR(showRangeCard)) then {
@@ -33,6 +35,7 @@ if (GVAR(showRangeCard)) then {
     [] call FUNC(update_range_card);
 };
 GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
+GVAR(showTargetData)  call FUNC(show_target_data);
 GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
 GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
 GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
diff --git a/addons/atragmx/functions/fnc_cycle_gun_list.sqf b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
new file mode 100644
index 0000000000..3d4bef70c1
--- /dev/null
+++ b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
@@ -0,0 +1,18 @@
+/*
+ * Author: Ruthberg
+ * Cycles through the gun list
+ *
+ * Arguments:
+ * step <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_cycle_scope_unit
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+[(GVAR(currentGun) + (count GVAR(gunList)) + _this) % (count GVAR(gunList)), true] call FUNC(change_gun);
diff --git a/addons/atragmx/functions/fnc_cycle_image_size_units.sqf b/addons/atragmx/functions/fnc_cycle_image_size_units.sqf
new file mode 100644
index 0000000000..d78b13731c
--- /dev/null
+++ b/addons/atragmx/functions/fnc_cycle_image_size_units.sqf
@@ -0,0 +1,19 @@
+/*
+ * Author: Ruthberg
+ * Cycles through the image size units
+ *
+ * Arguments:
+ * step <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_cycle_image_size_units
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(rangeAssistImageSizeUnit) = (GVAR(rangeAssistImageSizeUnit) + 1) % (count GVAR(rangeAssistImageSizeUnits));
+ctrlSetText [7015, GVAR(rangeAssistImageSizeUnits) select GVAR(rangeAssistImageSizeUnit)];
diff --git a/addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf b/addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf
new file mode 100644
index 0000000000..6afc105f62
--- /dev/null
+++ b/addons/atragmx/functions/fnc_cycle_num_ticks_units.sqf
@@ -0,0 +1,20 @@
+/*
+ * Author: Ruthberg
+ * Cycles through the num ticks units
+ *
+ * Arguments:
+ * step <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_cycle_num_ticks_units
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(speedAssistNumTicksUnit) = (GVAR(speedAssistNumTicksUnit) + 1) % (count GVAR(speedAssistNumTicksUnits));
+ctrlSetText [8009, GVAR(speedAssistNumTicksUnits) select GVAR(speedAssistNumTicksUnit)];
+call FUNC(calculate_target_speed_assist);
diff --git a/addons/atragmx/functions/fnc_cycle_target_size_units.sqf b/addons/atragmx/functions/fnc_cycle_target_size_units.sqf
new file mode 100644
index 0000000000..e055c8282c
--- /dev/null
+++ b/addons/atragmx/functions/fnc_cycle_target_size_units.sqf
@@ -0,0 +1,19 @@
+/*
+ * Author: Ruthberg
+ * Cycles through the target size units
+ *
+ * Arguments:
+ * step <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_cycle_target_size_units
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(rangeAssistTargetSizeUnit) = (GVAR(rangeAssistTargetSizeUnit) + 1) % (count GVAR(rangeAssistTargetSizeUnits));
+ctrlSetText [7014, GVAR(rangeAssistTargetSizeUnits) select GVAR(rangeAssistTargetSizeUnit)];
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index 8fda3570fa..efbd39ef81 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -9,7 +9,7 @@
  * Nothing
  *
  * Example:
- * call ace_atragmx_init
+ * call ace_atragmx_fnc_init
  *
  * Public: No
  */
@@ -26,7 +26,7 @@ GVAR(rangeCardLastColumns) = ["Lead", "RemV", "RemE", "TmFlt"];
 GVAR(rangeCardCurrentColumn) = 3;
 GVAR(rangeCardData) = [];
 
-GVAR(GVAR(rangeAssistTargetSizeUnit)s) = ["in", "ft", "cm", "m"];
+GVAR(rangeAssistTargetSizeUnits) = ["in", "ft", "cm", "m"];
 GVAR(rangeAssistTargetSizeUnit) = 2;
 GVAR(rangeAssistImageSizeUnits) = ["MIL", "TMOA", "IOA"];
 GVAR(rangeAssistImageSizeUnit) = 0;
@@ -41,11 +41,16 @@ GVAR(currentGun) = 0;
 GVAR(currentTarget) = 0;
 GVAR(currentScopeUnit) = 0;
 
+GVAR(atmosphereModeTBH) = true;
+GVAR(altitude) = 0;
 GVAR(temperature) = 15;
 GVAR(barometricPressure) = 1013.25;
 GVAR(relativeHumidity) = 0.5;
 
-GVAR(windSpeed) = [0, 0, 0, 0];
+GVAR(latitude) = [38, 38, 38, 38];
+GVAR(directionOfFire) = [0, 0, 0, 0];
+GVAR(windSpeed1) = [0, 0, 0, 0];
+GVAR(windSpeed2) = [0, 0, 0, 0];
 GVAR(windDirection) = [12, 12, 12, 12];
 GVAR(inclinationAngle) = [0, 0, 0, 0];
 GVAR(targetSpeed) = [0, 0, 0, 0];
@@ -59,10 +64,12 @@ GVAR(velocityOutput) = [0, 0, 0, 0];
 
 GVAR(showMainPage) = true;
 GVAR(showAddNewGun) = false;
+GVAR(showAtmoEnvData) = false;
+GVAR(showGunAmmoData) = false;
 GVAR(showGunList) = false;
 GVAR(showRangeCard) = false;
 GVAR(showRangeCardSetup) = false;
+GVAR(showTargetData) = false;
 GVAR(showTargetRangeAssist) = false;
 GVAR(showTargetSpeedAssist) = false;
 GVAR(showTargetSpeedAssistTimer) = false;
-
diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index 7d364cbdfc..be91ecc593 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -15,64 +15,78 @@
  */
 #include "script_component.hpp"
 
-GVAR(temperature) = parseNumber(ctrlText 200);
-GVAR(barometricPressure) = 0 max parseNumber(ctrlText 210);
-GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 220) min 100) / 100;
-
-GVAR(windSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 300)) min 50];
-GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 310)) min 12];
-GVAR(inclinationAngle) set [GVAR(currentTarget), -60 max parseNumber(ctrlText 320) min 60];
-GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 330)) min 50];
-GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 340)) min 4000];
-
-private ["_boreHeight", "_bulletMass", "_airFriction", "_muzzleVelocity"];
-_boreHeight = parseNumber(ctrlText 100);
-_bulletMass = parseNumber(ctrlText 110);
-if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
-    _airFriction = 0.1 max parseNumber(ctrlText 120) min 2;
-} else {
-    _airFriction = parseNumber(ctrlText 120) / -1000;
+GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
+GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
+GVAR(barometricPressure) = 0 max parseNumber(ctrlText 130050) min 1350;
+GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 130060) min 100) / 100;
+if (GVAR(currentUnit) == 1) then {
+    GVAR(altitude) = GVAR(altitude) * 0.3048;
+    GVAR(temperature) = (GVAR(temperature) - 32) / 1.8;
+    GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
 };
-_muzzleVelocity = parseNumber(ctrlText 130);
-if (GVAR(currentUnit) == 1) then
-{
+
+GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90];
+GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359];
+GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020)) min 50];
+GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
+GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
+GVAR(inclinationAngle) set [GVAR(currentTarget), -60 max parseNumber(ctrlText 140040) min 60];
+GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140050)) min 50];
+GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
+
+private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
+_boreHeight = parseNumber(ctrlText 120000);
+_bulletMass = parseNumber(ctrlText 120010);
+_bulletDiameter = parseNumber(ctrlText 120020);
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
+    _airFriction = 0.1 max parseNumber(ctrlText 120030) min 2;
+} else {
+    _airFriction = parseNumber(ctrlText 120030) / -1000;
+};
+_rifleTwist = parseNumber(ctrlText 120040);
+_muzzleVelocity = parseNumber(ctrlText 120050);
+_zeroRange = parseNumber (ctrlText 120060);
+if (GVAR(currentUnit) != 2) then {
     _boreHeight = _boreHeight * 2.54;
     _bulletMass = _bulletMass * 0.06479891;
+    _bulletDiameter = _bulletDiameter * 10 * 2.54;
+    _rifleTwist = _rifleTwist * 2.54;
     _muzzleVelocity = _muzzleVelocity / 3.2808399;
 };
+if (GVAR(currentUnit) == 1) then {
+    _zeroRange = _zeroRange / 1.0936133;
+};
 _boreHeight = 0.1 max _boreHeight min 10;
 _bulletMass = 1 max _bulletMass min 100;
+_bulletDiameter = 1 max _bulletDiameter min 25;
 _muzzleVelocity = 100 max _muzzleVelocity min 1400;
-
+_zeroRange = 0 max _zeroRange min 1000;
 GVAR(workingMemory) set [5, _boreHeight];
 GVAR(workingMemory) set [12, _bulletMass];
+GVAR(workingMemory) set [13, _bulletDiameter];
+GVAR(workingMemory) set [14, _rifleTwist];
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
     GVAR(workingMemory) set [15, _airFriction];
 } else {
     GVAR(workingMemory) set [4, _airFriction];
 };
 GVAR(workingMemory) set [1, _muzzleVelocity];
+GVAR(workingMemory) set [2, _zeroRange];
 
 private ["_elevationCur", "_windageCur", "_elevationScopeStep", "_windageScopeStep"];
 _elevationCur = parseNumber(ctrlText 402);
 _windageCur = parseNumber(ctrlText 412);
 
-switch (GVAR(currentScopeUnit)) do
-{
-    case 0:
-    {		
+switch (GVAR(currentScopeUnit)) do {
+    case 0: {
         _elevationCur = _elevationCur * 3.38;
         _windageCur = _windageCur * 3.38;
     };
-    
-    case 2:
-    {		
+    case 2: {
         _elevationCur = _elevationCur / 1.047;
         _windageCur = _windageCur / 1.047;
     };
-    
-    case 3:
-    {
+    case 3: {
         _elevationScopeStep = (GVAR(workingMemory) select 7);
         _windageScopeStep = (GVAR(workingMemory) select 8);
         
@@ -85,5 +99,9 @@ GVAR(workingMemory) set [10, _elevationCur];
 GVAR(workingMemory) set [11, _windageCur];
 
 [] call FUNC(update_gun);
+[] call FUNC(update_gun_ammo_data);
 [] call FUNC(update_atmosphere);
+[] call FUNC(update_atmo_env_data);
 [] call FUNC(update_target);
+
+[] call FUNC(store_user_data);
diff --git a/addons/atragmx/functions/fnc_restore_atmo_default.sqf b/addons/atragmx/functions/fnc_restore_atmo_default.sqf
new file mode 100644
index 0000000000..08b7c56d86
--- /dev/null
+++ b/addons/atragmx/functions/fnc_restore_atmo_default.sqf
@@ -0,0 +1,25 @@
+/*
+ * Author: Ruthberg
+ * Restores the atmospheric data defaults
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_restore_atmo_default
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(atmosphereModeTBH) = true;
+GVAR(altitude) = 0;
+GVAR(temperature) = 15;
+GVAR(barometricPressure) = 1013.25;
+GVAR(relativeHumidity) = 0.5;
+
+[] call FUNC(update_atmo_selection);
+[] call FUNC(update_atmosphere);
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
new file mode 100644
index 0000000000..7c011198d6
--- /dev/null
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -0,0 +1,36 @@
+/*
+ * Author: Ruthberg
+ * Reads user data from profileNamespace
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_restore_user_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(currentUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentUnit", 2]) min 2;
+[profileNamespace getVariable ["ACE_ATragMX_currentGun", 0], false] call FUNC(change_gun);
+GVAR(currentTarget) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentTarget", 0]) min 3;
+GVAR(currentScopeUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentScopeUnit", 0]) min 3;
+
+GVAR(atmosphereModeTBH) = profileNamespace getVariable ["ACE_ATragMX_atmosphereModeTBH", true];
+GVAR(altitude) = -1000 max (profileNamespace getVariable ["ACE_ATragMX_altitude", 0]) min 20000;
+GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperature", 15]) min 160;
+GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_barometricPressure", 1013.25]) min 1350;
+GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
+
+GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
+GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
+GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];
+GVAR(windSpeed2) = profileNamespace getVariable ["ACE_ATragMX_windSpeed2", [0, 0, 0, 0]];
+GVAR(windDirection) = profileNamespace getVariable ["ACE_ATragMX_windDirection", [12, 12, 12, 12]];
+GVAR(inclinationAngle) = profileNamespace getVariable ["ACE_ATragMX_inclinationAngle", [0, 0, 0, 0]];
+GVAR(targetSpeed) = profileNamespace getVariable ["ACE_ATragMX_targetSpeed", [0, 0, 0, 0]];
+GVAR(targetRange) = profileNamespace getVariable ["ACE_ATragMX_targetRange", [0, 0, 0, 0]];
diff --git a/addons/atragmx/functions/fnc_show_atmo_env_data.sqf b/addons/atragmx/functions/fnc_show_atmo_env_data.sqf
new file mode 100644
index 0000000000..9386956067
--- /dev/null
+++ b/addons/atragmx/functions/fnc_show_atmo_env_data.sqf
@@ -0,0 +1,25 @@
+/*
+ * Author: Ruthberg
+ * Shows/Hides the atmosphere and environmental data controls
+ *
+ * Arguments:
+ * visible - <BOOL>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * false call ace_atragmx_fnc_show_atmo_env_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(showAtmoEnvData) = _this;
+
+{ctrlShow [_x, _this]} forEach [13000, 13001, 13002, 13003, 130030, 13004, 130040, 13005, 130050, 13006, 130060, 13007, 13008, 13009, 13010];
+
+if (_this) then {
+    [] call FUNC(update_atmo_selection);
+    [] call FUNC(update_atmo_env_data);
+};
diff --git a/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
new file mode 100644
index 0000000000..06ab20b3b7
--- /dev/null
+++ b/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
@@ -0,0 +1,24 @@
+/*
+ * Author: Ruthberg
+ * Shows/Hides the gun ammo data controls
+ *
+ * Arguments:
+ * visible - <BOOL>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * false call ace_atragmx_fnc_show_gun_ammo_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(showGunAmmoData) = _this;
+
+{ctrlShow [_x, _this]} forEach [12000, 120000, 12001, 120010, 12002, 120020, 12003, 120030, 12004, 120040, 12005, 120050, 12006, 120060, 12007, 12008, 12009, 12010, 12011];
+
+if (_this) then {
+    [] call FUNC(update_gun_ammo_data);
+};
diff --git a/addons/atragmx/functions/fnc_show_main_page.sqf b/addons/atragmx/functions/fnc_show_main_page.sqf
index 941c7559c8..607527a18e 100644
--- a/addons/atragmx/functions/fnc_show_main_page.sqf
+++ b/addons/atragmx/functions/fnc_show_main_page.sqf
@@ -17,5 +17,13 @@
 
 GVAR(showMainPage) = _this;
 
-{ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
+{ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 23, 230, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
                                 500, 501, 502, 503, 600, 601, 602, 603, 1000, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
+
+if (_this) then {
+    if (GVAR(atmosphereModeTBH)) then {
+        {ctrlShow [_x, false]} forEach [23, 230];
+    } else {
+        {ctrlShow [_x, false]} forEach [21, 210, 22, 220];
+    };
+};
diff --git a/addons/atragmx/functions/fnc_show_target_data.sqf b/addons/atragmx/functions/fnc_show_target_data.sqf
new file mode 100644
index 0000000000..8b206fee3a
--- /dev/null
+++ b/addons/atragmx/functions/fnc_show_target_data.sqf
@@ -0,0 +1,24 @@
+/*
+ * Author: Ruthberg
+ * Shows/Hides the target data controls
+ *
+ * Arguments:
+ * visible - <BOOL>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * false call ace_atragmx_fnc_show_target_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(showTargetData) = _this;
+
+{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 140020, 140021, 14003, 140030, 14004, 140040, 140041, 14005, 140050, 14006, 140060, 14007, 14008, 14009, 14010, 14011];
+
+if (_this) then {
+    [] call FUNC(update_target_data);
+};
diff --git a/addons/atragmx/functions/fnc_show_target_range_assist.sqf b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
index 60de30930f..4f46932a0b 100644
--- a/addons/atragmx/functions/fnc_show_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_range_assist.sqf
@@ -25,11 +25,9 @@ if (_this) then {
     ctrlSetText [7012, Str(parseNumber(ctrlText 320))];
     ctrlSetText [7013, Str(parseNumber(ctrlText 340))];
 
-    if (GVAR(currentUnit) != 2) then
-    {
+    if (GVAR(currentUnit) == 1) then {
         ctrlSetText [7016, "Yards"];
-    } else
-    {
+    } else {
         ctrlSetText [7016, "Meters"];
     };
 };
\ No newline at end of file
diff --git a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
index 3ac05f3f4f..2e66b5ea7b 100644
--- a/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_show_target_speed_assist.sqf
@@ -24,19 +24,15 @@ if (_this) then {
     
     ctrlSetText [8004, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
 
-    if (GVAR(currentUnit) != 2) then
-    {
+    if (GVAR(currentUnit) == 1) then {
         ctrlSetText [8008, "Yards"];
-    } else
-    {
+    } else {
         ctrlSetText [8008, "Meters"];
     };
     
-    if (GVAR(currentUnit) != 1) then
-    {
+    if (GVAR(currentUnit) == 2) then {
         ctrlSetText [8011, "m/s"];
-    } else
-    {
+    } else {
         ctrlSetText [8011, "mph"];
     };
 };
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
new file mode 100644
index 0000000000..81a4476d75
--- /dev/null
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -0,0 +1,36 @@
+/*
+ * Author: Ruthberg
+ * Saves user data into profileNamespace
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_store_user_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+profileNamespace setVariable ["ACE_ATragMX_currentUnit", GVAR(currentUnit)];
+profileNamespace setVariable ["ACE_ATragMX_currentGun", GVAR(currentGun)];
+profileNamespace setVariable ["ACE_ATragMX_currentTarget", GVAR(currentTarget)];
+profileNamespace setVariable ["ACE_ATragMX_currentScopeUnit", GVAR(currentScopeUnit)];
+
+profileNamespace setVariable ["ACE_ATragMX_atmosphereModeTBH", GVAR(atmosphereModeTBH)];
+profileNamespace setVariable ["ACE_ATragMX_altitude", GVAR(altitude)];
+profileNamespace setVariable ["ACE_ATragMX_temperature", GVAR(temperature)];
+profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricPressure)];
+profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
+
+profileNamespace setVariable ["latitude", GVAR(latitude)];
+profileNamespace setVariable ["directionOfFire", GVAR(directionOfFire)];
+profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
+profileNamespace setVariable ["ACE_ATragMX_windSpeed2", GVAR(windSpeed2)];
+profileNamespace setVariable ["ACE_ATragMX_windDirection", GVAR(windDirection)];
+profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", GVAR(inclinationAngle)];
+profileNamespace setVariable ["ACE_ATragMX_targetSpeed", GVAR(targetSpeed)];
+profileNamespace setVariable ["ACE_ATragMX_targetRange", GVAR(targetRange)];
diff --git a/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
new file mode 100644
index 0000000000..ce761c2216
--- /dev/null
+++ b/addons/atragmx/functions/fnc_toggle_atmo_env_data.sqf
@@ -0,0 +1,28 @@
+/*
+ * Author: Ruthberg
+ * Toggles the atmospheric data screen on/off
+ *
+ * Arguments:
+ * Apply new data? <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * 1 call ace_atragmx_fnc_toggle_atmo_env_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (ctrlVisible 13000) then {
+    false call FUNC(show_atmo_env_data);
+    true call FUNC(show_main_page);
+    
+    if (_this == 1) then {
+        call FUNC(calculate_target_solution);
+    };
+} else {
+    true call FUNC(show_atmo_env_data);
+    false call FUNC(show_main_page);
+};
diff --git a/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
new file mode 100644
index 0000000000..0fd4b913b8
--- /dev/null
+++ b/addons/atragmx/functions/fnc_toggle_gun_ammo_data.sqf
@@ -0,0 +1,29 @@
+/*
+ * Author: Ruthberg
+ * Toggles the gun ammo data screen on/off
+ *
+ * Arguments:
+ * Apply new data? <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * 1 call ace_atragmx_fnc_toggle_gun_ammo_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (ctrlVisible 12000) then {
+    false call FUNC(show_gun_ammo_data);
+    true call FUNC(show_main_page);
+    
+    if (_this == 1) then {
+        call FUNC(update_zero_range);
+        call FUNC(calculate_target_solution);
+    };
+} else {
+    true call FUNC(show_gun_ammo_data);
+    false call FUNC(show_main_page);
+};
diff --git a/addons/atragmx/functions/fnc_toggle_gun_list.sqf b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
index cd4acb1f76..714e6e848d 100644
--- a/addons/atragmx/functions/fnc_toggle_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
@@ -3,28 +3,26 @@
  * Toggles the gun list screen on/off
  *
  * Arguments:
- * Nothing
+ * change gun? <BOOL>
  *
  * Return Value:
  * Nothing
  *
  * Example:
- * call ace_atragmx_fnc_toggle_gun_list
+ * false call ace_atragmx_fnc_toggle_gun_list
  *
  * Public: No
  */
 #include "script_component.hpp"
 
-if (ctrlVisible 6000) then
-{
+if (ctrlVisible 6000) then {
     false call FUNC(show_gun_list);
     true call FUNC(show_main_page);
     
     if (_this) then {
-        (lbCurSel 6000) call FUNC(change_gun);
+        [lbCurSel 6000, true] call FUNC(change_gun);
     };
-} else
-{
+} else {
     false call FUNC(show_main_page);
     true call FUNC(show_gun_list);
 };
diff --git a/addons/atragmx/functions/fnc_toggle_range_card.sqf b/addons/atragmx/functions/fnc_toggle_range_card.sqf
index 572a4fe6ae..059bc7e40b 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card.sqf
@@ -15,12 +15,10 @@
  */
 #include "script_component.hpp"
 
-if (ctrlVisible 5006) then
-{
+if (ctrlVisible 5006) then {
     false call FUNC(show_range_card);
     true call FUNC(show_main_page);
-} else
-{
+} else {
     false call FUNC(show_main_page);
     true call FUNC(show_range_card);
     
diff --git a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
index 71da18349b..738a154d17 100644
--- a/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
+++ b/addons/atragmx/functions/fnc_toggle_range_card_setup.sqf
@@ -3,25 +3,23 @@
  * Toggles the range card setup screen on/off
  *
  * Arguments:
- * Apply new range card settings <BOOL>
+ * Apply new range card settings <NUMBER>
  *
  * Return Value:
  * Nothing
  *
  * Example:
- * call ace_atragmx_fnc_toggle_range_card_setup
+ * 1 call ace_atragmx_fnc_toggle_range_card_setup
  *
  * Public: No
  */
 #include "script_component.hpp"
 
-if (ctrlVisible 10000) then
-{
+if (ctrlVisible 10000) then {
     false call FUNC(show_range_card_setup);
     true call FUNC(show_range_card);
     
-    if (_this == 1) then
-    {
+    if (_this == 1) then {
         GVAR(rangeCardStartRange) = 0 max Round(parseNumber(ctrlText 10003)) min 3000;
         GVAR(rangeCardEndRange) = 0 max Round(parseNumber(ctrlText 10004)) min 3000;
         GVAR(rangeCardIncrement) = 1 max Round(parseNumber(ctrlText 10005)) min 3000;
@@ -29,8 +27,7 @@ if (ctrlVisible 10000) then
         [] call FUNC(calculate_range_card);
         [] call FUNC(update_range_card);
     };
-} else
-{
+} else {
     false call FUNC(show_range_card);
     true call FUNC(show_range_card_setup);
 };
diff --git a/addons/atragmx/functions/fnc_toggle_target_data.sqf b/addons/atragmx/functions/fnc_toggle_target_data.sqf
new file mode 100644
index 0000000000..90fefbf37e
--- /dev/null
+++ b/addons/atragmx/functions/fnc_toggle_target_data.sqf
@@ -0,0 +1,28 @@
+/*
+ * Author: Ruthberg
+ * Toggles the target data screen on/off
+ *
+ * Arguments:
+ * Apply new data? <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * 1 call ace_atragmx_fnc_toggle_target_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (ctrlVisible 14000) then {
+    false call FUNC(show_target_data);
+    true call FUNC(show_main_page);
+    
+    if (_this == 1) then {
+        call FUNC(calculate_target_solution);
+    };
+} else {
+    true call FUNC(show_target_data);
+    false call FUNC(show_main_page);
+};
diff --git a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
index 04e9307ded..d13ef4fb2e 100644
--- a/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_range_assist.sqf
@@ -3,30 +3,30 @@
  * Toggles the target range assist screen on/off
  *
  * Arguments:
- * Nothing
+ * update range? <NUMBER>
  *
  * Return Value:
  * Nothing
  *
  * Example:
- * call ace_atragmx_fnc_toggle_target_range_assist
+ * 1 call ace_atragmx_fnc_toggle_target_range_assist
  *
  * Public: No
  */
 #include "script_component.hpp"
 
-if (ctrlVisible 7000) then
-{
+if (ctrlVisible 7000) then {
     false call FUNC(show_target_range_assist);
     true call FUNC(show_main_page);
     
-    if (_this == 1) then
-    {
+    if (_this == 1) then {
         ctrlSetText [320, Str(parseNumber(ctrlText 7012))];
+        ctrlSetText [140040, Str(parseNumber(ctrlText 7012))];
         ctrlSetText [340, Str(parseNumber(ctrlText 7013))];
+        ctrlSetText [140060, Str(parseNumber(ctrlText 7013))];
+        [] call FUNC(calculate_target_solution);
     };
-} else
-{
+} else {
     false call FUNC(show_main_page);
     true call FUNC(show_target_range_assist);
 };
diff --git a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
index 66ffaa5d07..e227cf0716 100644
--- a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
@@ -3,30 +3,29 @@
  * Toggles the target speed assist screen on/off
  *
  * Arguments:
- * Nothing
+ * update speed? <NUMBER>
  *
  * Return Value:
  * Nothing
  *
  * Example:
- * call ace_atragmx_fnc_toggle_target_speed_assist
+ * 1 call ace_atragmx_fnc_toggle_target_speed_assist
  *
  * Public: No
  */
 #include "script_component.hpp"
 
-if (ctrlVisible 8000) then
-{
+if (ctrlVisible 8000) then {
     false call FUNC(show_target_speed_assist);
     true call FUNC(show_main_page);
     
-    if (_this == 1) then
-    {
+    if (_this == 1) then {
         [] call FUNC(calculate_target_speed_assist);
         ctrlSetText [330, Str(parseNumber(ctrlText 8007))];
+        ctrlSetText [140050, Str(parseNumber(ctrlText 8007))];
+        [] call FUNC(calculate_target_solution);
     };
-} else
-{
+} else {
     false call FUNC(show_main_page);
     true call FUNC(show_target_speed_assist);
 };
diff --git a/addons/atragmx/functions/fnc_update_atmo_env_data.sqf b/addons/atragmx/functions/fnc_update_atmo_env_data.sqf
new file mode 100644
index 0000000000..8dcbc89280
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_atmo_env_data.sqf
@@ -0,0 +1,45 @@
+/*
+ * Author: Ruthberg
+ * Updates the atmospheric data fields
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_update_atmo_env_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 13007);
+
+if (GVAR(currentUnit) != 1) then {
+    ctrlSetText [130040, Str(Round(GVAR(temperature) * 10) / 10)];
+} else {
+    ctrlSetText [130040, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
+};
+if (GVAR(currentUnit) != 1) then {
+    ctrlSetText [130050, Str(Round(GVAR(barometricPressure)))];
+} else {
+    ctrlSetText [130050, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
+};
+ctrlSetText [130060, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
+if (GVAR(currentUnit) != 1) then {
+    ctrlSetText [130030, Str(Round(GVAR(altitude)))];
+} else {
+    ctrlSetText [130030, Str(Round(GVAR(altitude) * 3.2808399))];
+};
+
+if (GVAR(currentUnit) == 2) then {
+    ctrlSetText [13003, "Altitude (m)"];
+    ctrlSetText [13004, "temperature (C)"];
+    ctrlSetText [13005, "Barom Pres (milibars)"];
+} else {
+    ctrlSetText [13003, "Altitude (ft)"];
+    ctrlSetText [13004, "temperature (F)"];
+    ctrlSetText [13005, "Barom Pres (in.merc.)"];
+};
diff --git a/addons/atragmx/functions/fnc_update_atmo_selection.sqf b/addons/atragmx/functions/fnc_update_atmo_selection.sqf
new file mode 100644
index 0000000000..18036178b4
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_atmo_selection.sqf
@@ -0,0 +1,31 @@
+/*
+ * Author: Ruthberg
+ * Updates the atmospheric data input method
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_update_atmo_selection
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 13001) ctrlEnable true;
+((uiNamespace getVariable "ATragMX_Display") displayCtrl 13002) ctrlEnable true;
+
+if (GVAR(atmosphereModeTBH)) then {
+    ((uiNamespace getVariable "ATragMX_Display") displayCtrl 13002) ctrlEnable false;
+    {ctrlShow [_x, false]} forEach [13003, 130030];
+    {ctrlShow [_x, true]} forEach [13005, 130050, 13006, 130060];
+} else {
+    ((uiNamespace getVariable "ATragMX_Display") displayCtrl 13001) ctrlEnable false;
+    {ctrlShow [_x, false]} forEach [13005, 130050, 13006, 130060];
+    {ctrlShow [_x, true]} forEach [13003, 130030];
+};
+
+[] call FUNC(update_atmo_env_data);
diff --git a/addons/atragmx/functions/fnc_update_atmosphere.sqf b/addons/atragmx/functions/fnc_update_atmosphere.sqf
index 68a60f72e9..fa555f50e7 100644
--- a/addons/atragmx/functions/fnc_update_atmosphere.sqf
+++ b/addons/atragmx/functions/fnc_update_atmosphere.sqf
@@ -15,10 +15,19 @@
  */
 #include "script_component.hpp"
 
-ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)];
-if (GVAR(currentUnit) == 1) then {
-    ctrlSetText [210, Str(Round(GVAR(barometricPressure) * 100) / 100)];
+if (GVAR(currentUnit) != 1) then {
+    ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)];
 } else {
+    ctrlSetText [200, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
+};
+if (GVAR(currentUnit) != 1) then {
     ctrlSetText [210, Str(Round(GVAR(barometricPressure)))];
+} else {
+    ctrlSetText [210, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
 };
 ctrlSetText [220, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
+if (GVAR(currentUnit) != 1) then {
+    ctrlSetText [230, Str(Round(GVAR(altitude)))];
+} else {
+    ctrlSetText [230, Str(Round(GVAR(altitude) * 3.2808399))];
+};
diff --git a/addons/atragmx/functions/fnc_update_gun.sqf b/addons/atragmx/functions/fnc_update_gun.sqf
index 1e12439878..f3d173ba11 100644
--- a/addons/atragmx/functions/fnc_update_gun.sqf
+++ b/addons/atragmx/functions/fnc_update_gun.sqf
@@ -16,37 +16,29 @@
 #include "script_component.hpp"
 
 ctrlSetText [1000, GVAR(workingMemory) select 0];
-if (GVAR(currentUnit) == 1) then
-{
-    ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
-} else
-{
-    ctrlSetText [ 100, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [100, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
+} else {
+    ctrlSetText [100, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
 };
-if (GVAR(currentUnit) == 1) then
-{
-    ctrlSetText [ 110, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
-} else
-{
-    ctrlSetText [ 110, Str(Round(GVAR(workingMemory) select 12))];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [110, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
+} else {
+    ctrlSetText [110, Str(Round(GVAR(workingMemory) select 12))];
 };
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
-    ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
+    ctrlSetText [120, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
 } else {
-    ctrlSetText [ 120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
+    ctrlSetText [120, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
 };
-if (GVAR(currentUnit) == 1) then
-{
+if (GVAR(currentUnit) != 2) then {
     ctrlSetText [130, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
-} else
-{
+} else {
     ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))];
 };
-if (GVAR(currentUnit) == 2) then
-{
+if (GVAR(currentUnit) != 1) then {
     ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
-} else
-{
+} else {
     ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
 };
 
diff --git a/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
new file mode 100644
index 0000000000..3627197185
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
@@ -0,0 +1,74 @@
+/*
+ * Author: Ruthberg
+ * Updates the gun ammo data fields
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_update_gun_ammo_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 12008);
+
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [120000, Str(Round((GVAR(workingMemory) select 5) / 2.54 * 100) / 100)];
+} else {
+    ctrlSetText [120000, Str(Round((GVAR(workingMemory) select 5) * 100) / 100)];
+};
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [120010, Str(Round((GVAR(workingMemory) select 12) * 15.4323584))];
+} else {
+    ctrlSetText [120010, Str(Round(GVAR(workingMemory) select 12))];
+};
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) / 10 / 2.54 * 1000) / 1000)];
+} else {
+    ctrlSetText [120020, Str(Round((GVAR(workingMemory) select 13) * 1000) / 1000)];
+};
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
+    ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 15) * 1000) / 1000)];
+} else {
+    ctrlSetText [120030, Str(Round((GVAR(workingMemory) select 4) * -1000 * 1000) / 1000)];
+};
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [120040, Str(Round((GVAR(workingMemory) select 14) / 2.54 * 10) / 10)];
+} else {
+    ctrlSetText [120040, Str(Round((GVAR(workingMemory) select 14) * 100) / 100)];
+};
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [120050, Str(Round((GVAR(workingMemory) select 1) * 3.2808399))];
+} else {
+    ctrlSetText [120050, Str(Round(GVAR(workingMemory) select 1))];
+};
+if (GVAR(currentUnit) == 2) then {
+    ctrlSetText [120060, Str(Round(GVAR(workingMemory) select 2))];
+} else {
+    ctrlSetText [120060, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
+};
+
+if (GVAR(currentUnit) == 2) then {
+    ctrlSetText [12000, "Bore       (cm)"];
+    ctrlSetText [12001, "Bullet Weight (grams)"];
+    ctrlSetText [12002, "Bullet Diam  (cm)"];
+    ctrlSetText [12004, "Rifle Twist (cm/trn)"];
+    ctrlSetText [12005, "Muzzle Velocity (m/s)"];
+} else {
+    ctrlSetText [12000, "Bore       (inches)"];
+    ctrlSetText [12001, "Bullet Weight (grains)"];
+    ctrlSetText [12002, "Bullet Diam  (inches)"];
+    ctrlSetText [12004, "Rifle Twist (inches/trn)"];
+    ctrlSetText [12005, "Muzzle Velocity (feet/sec)"];
+};
+
+if (GVAR(currentUnit) == 1) then {
+    ctrlSetText [12006, "Zero Range (yards)"];
+} else {
+    ctrlSetText [12006, "Zero Range (meters)"];
+};
diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf
index 358a74ce5d..871e5fa268 100644
--- a/addons/atragmx/functions/fnc_update_range_card.sqf
+++ b/addons/atragmx/functions/fnc_update_range_card.sqf
@@ -20,11 +20,9 @@ _lastColumnOutput = "";
 
 ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
 
-if (GVAR(currentUnit) != 2) then
-{
+if (GVAR(currentUnit) == 1) then {
     ctrlSetText [5003, "Yards"];
-} else
-{
+} else {
     ctrlSetText [5003, "Meters"];
 };
 
@@ -39,22 +37,16 @@ lnbClear 5007;
     _velocity = _x select 5;
     _kineticEnergy = _x select 6;
     
-    switch (GVAR(currentScopeUnit)) do
-    {
-        case 0:
-        {
+    switch (GVAR(currentScopeUnit)) do {
+        case 0: {
             _elevation = _elevation / 3.38;
             _windage = _windage / 3.38;
-        };
-        
-        case 2:
-        {
+        }; 
+        case 2: {
             _elevation = _elevation * 1.047;
             _windage = _windage * 1.047;
         };
-        
-        case 3:
-        {
+        case 3: {
             _elevationScopeStep = (GVAR(workingMemory) select 7);
             _windageScopeStep = (GVAR(workingMemory) select 8);
             
@@ -67,35 +59,25 @@ lnbClear 5007;
     _windageOutput = Str(Round(_windage * 100) / 100);
     
     _rangeOutput = Str(_range);
-    if (_velocity < 340.29) then
-    {
+    if (_velocity < 340.29) then {
         _rangeOutput = _rangeOutput + "*";
     };
     
-    if (GVAR(currentUnit) == 1) then
-    {
+    if (GVAR(currentUnit) == 1) then {
         _velocity = _velocity * 3.2808399;
     };
     
-    switch (GVAR(rangeCardCurrentColumn)) do
-    {
-        case 0:
-        {
+    switch (GVAR(rangeCardCurrentColumn)) do {
+        case 0: {
             _lastColumnOutput = Str(Round(_lead * 100) / 100);
         };
-        
-        case 1:
-        {
+        case 1: {
             _lastColumnOutput = Str(Round(_velocity));
         };
-        
-        case 2:
-        {
+        case 2: {
             _lastColumnOutput = Str(Round(_kineticEnergy));
         };
-        
-        case 3:
-        {
+        case 3: {
             _lastColumnOutput = Str(Round(_TOF * 100) / 100);
         }
     };
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index addd1034b2..6898920eac 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -27,10 +27,8 @@ _windageRel = _windageAbs - _windageCur;
 
 _lead = (GVAR(leadOutput) select GVAR(currentTarget));
 
-switch (GVAR(currentScopeUnit)) do
-{
-    case 0:
-    {
+switch (GVAR(currentScopeUnit)) do {
+    case 0: {
         _elevationAbs = _elevationAbs / 3.38;
         _windageAbs = _windageAbs / 3.38;
         
@@ -40,9 +38,7 @@ switch (GVAR(currentScopeUnit)) do
         _elevationCur = _elevationCur / 3.38;
         _windageCur = _windageCur / 3.38;
     };
-    
-    case 2:
-    {
+    case 2: {
         _elevationAbs = _elevationAbs * 1.047;
         _windageAbs = _windageAbs * 1.047;
         
@@ -52,9 +48,7 @@ switch (GVAR(currentScopeUnit)) do
         _elevationCur = _elevationCur * 1.047;
         _windageCur = _windageCur * 1.047;
     };
-    
-    case 3:
-    {
+    case 3: {
         _elevationScopeStep = (GVAR(workingMemory) select 7);
         _windageScopeStep = (GVAR(workingMemory) select 8);
         
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index 18d7a72cd2..30b33eb55f 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -15,23 +15,8 @@
  */
 #include "script_component.hpp"
 
-if (!isNil QGVAR(windSpeed)) then
-{
-    ctrlSetText [300, Str(Round((GVAR(windSpeed) select GVAR(currentTarget)) * 100) / 100)];
-};
-if (!isNil QGVAR(windDirection)) then
-{
-    ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
-};
-if (!isNil QGVAR(inclinationAngle)) then
-{
-    ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
-};
-if (!isNil QGVAR(targetSpeed)) then
-{
-    ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
-};
-if (!isNil QGVAR(targetRange)) then
-{
-    ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
-};
+ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
+ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
+ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
diff --git a/addons/atragmx/functions/fnc_update_target_data.sqf b/addons/atragmx/functions/fnc_update_target_data.sqf
new file mode 100644
index 0000000000..35711acd5b
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_target_data.sqf
@@ -0,0 +1,40 @@
+/*
+ * Author: Ruthberg
+ * Updates all target column input fields
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_update_target
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+ctrlSetText [140000, Str(Round((GVAR(latitude) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140010, Str(Round((GVAR(directionOfFire) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140030, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
+ctrlSetText [140040, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
+ctrlSetText [140041, Str(floor(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+
+if (GVAR(currentUnit) == 2) then {
+    ctrlSetText [14002, "Wind Speed (m/s)"];
+    ctrlSetText [14005, "Target Speed (m/s)"];
+} else {
+    ctrlSetText [14002, "Wind Speed (mph)"];
+    ctrlSetText [14005, "Target Speed (mph)"];
+};
+
+if (GVAR(currentUnit) == 1) then {
+    ctrlSetText [14006, "Target Range (yards)"];
+} else {
+    ctrlSetText [14006, "Target Range (meters)"];
+};
diff --git a/addons/atragmx/functions/fnc_update_unit_selection.sqf b/addons/atragmx/functions/fnc_update_unit_selection.sqf
index 2882954c5b..77d96bfdd6 100644
--- a/addons/atragmx/functions/fnc_update_unit_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_unit_selection.sqf
@@ -22,6 +22,10 @@
 ((uiNamespace getVariable "ATragMX_Display") displayCtrl 600 + GVAR(currentUnit)) ctrlEnable false;
 
 [] call FUNC(update_gun);
+[] call FUNC(update_gun_ammo_data);
 [] call FUNC(update_atmosphere);
+[] call FUNC(update_atmo_env_data);
 [] call FUNC(update_target);
+[] call FUNC(update_target_data);
+
 [] call FUNC(update_result);
diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf
index e7f0c2c301..6e2a9c566c 100644
--- a/addons/atragmx/functions/fnc_update_zero_range.sqf
+++ b/addons/atragmx/functions/fnc_update_zero_range.sqf
@@ -28,9 +28,8 @@ _dragModel = GVAR(workingMemory) select 16;
 _atmosphereModel = GVAR(workingMemory) select 17;
 
 private ["_zeroRange"];
-_zeroRange = Round(parseNumber(ctrlText 140));
-if (GVAR(currentUnit) != 2) then
-{
+_zeroRange = Round(parseNumber(ctrlText 120060));
+if (GVAR(currentUnit) == 1) then {
     _zeroRange = _zeroRange / 1.0936133;
 };
 if (_zeroRange < 10) exitWith {
@@ -38,18 +37,14 @@ if (_zeroRange < 10) exitWith {
     GVAR(workingMemory) set [3, 0];
 };
 
-private ["_temperature", "_barometricPressure", "_relativeHumidity"];
+private ["_altitude", "_temperature", "_barometricPressure", "_relativeHumidity"];
+_altitude = GVAR(altitude);
 _temperature = GVAR(temperature);
 _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
-if (GVAR(currentUnit) == 1) then
-{
-    _temperature = (_temperature - 32) / 1.8;
-    _barometricPressure = _barometricPressure * 33.8638866667;
-};
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 GVAR(workingMemory) set [2, _zeroRange];
 GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];

From 1e446fb0607929fd0ca4cf849ab09055eebd15c3 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 02:01:09 +0300
Subject: [PATCH 113/257] Update stringtable.xml

---
 addons/movement/stringtable.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/movement/stringtable.xml b/addons/movement/stringtable.xml
index eb91496de8..efed949036 100644
--- a/addons/movement/stringtable.xml
+++ b/addons/movement/stringtable.xml
@@ -11,7 +11,7 @@
             <Italian>Mostra peso in libbre</Italian>
             <Portuguese>Mostrar peso em libras</Portuguese>
             <Hungarian>Súly megjelenítése fontban.</Hungarian>
-            <Russian>Показать вес в фунтах</Russian>
+            <Russian>Показывать вес в фунтах</Russian>
         </Key>
         <Key ID="STR_ACE_Movement_Weight">
             <English>Weight:</English>
@@ -32,7 +32,7 @@
             <Polish>Wspinaczka</Polish>
             <Spanish>Trepar</Spanish>
             <Czech>Vylézt</Czech>
-            <Russian>Подняться</Russian>
+            <Russian>Взобраться</Russian>
             <Hungarian>Mászás</Hungarian>
             <Italian>Arrampicati</Italian>
         </Key>
@@ -43,7 +43,7 @@
             <Polish>Nie możesz wspiąć się tutaj</Polish>
             <Spanish>No se puede trepar aquí</Spanish>
             <Czech>Zde není možné vylézt</Czech>
-            <Russian>Не можете подняться здесь</Russian>
+            <Russian>Здесь невозможно взобраться</Russian>
             <Hungarian>Itt nem tudsz mászni</Hungarian>
             <Italian>Non puoi arrampicarti qui</Italian>
         </Key>

From 3ec5acbdb0a72f04ae89485fd442485d64196fe1 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 01:05:30 +0200
Subject: [PATCH 114/257] stuff

---
 addons/common/config.cpp                     | 8 ++++++++
 addons/common/functions/fnc_errorMessage.sqf | 4 ++--
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/addons/common/config.cpp b/addons/common/config.cpp
index 769ba37de1..21d6a6facb 100644
--- a/addons/common/config.cpp
+++ b/addons/common/config.cpp
@@ -152,3 +152,11 @@ class CfgUIGrids {
         };
     };
 };
+
+/*
+// check dll
+class RscStandardDisplay;
+class RscDisplayMain: RscStandardDisplay {
+    onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call  (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage));
+};
+*/
diff --git a/addons/common/functions/fnc_errorMessage.sqf b/addons/common/functions/fnc_errorMessage.sqf
index 46f2d2c9d4..e061772942 100644
--- a/addons/common/functions/fnc_errorMessage.sqf
+++ b/addons/common/functions/fnc_errorMessage.sqf
@@ -3,7 +3,7 @@
  * Stops simulation and opens a textbox with error message.
  *
  * Arguments:
- * 0: Error name <STRING>
+ * ?
  *
  * Return Value:
  * None
@@ -26,7 +26,7 @@ if (typeName _textMessage == "STRING") then {
     _textMessage = parseText _textMessage;
 };
 
-(call BIS_fnc_displayMission) createDisplay "RscDisplayCommonMessagePause";
+(ARR_SELECT(_this,4,call BIS_fnc_displayMission)) createDisplay "RscDisplayCommonMessagePause";
 
 private ["_display", "_ctrlRscMessageBox", "_ctrlBcgCommonTop", "_ctrlBcgCommon", "_ctrlText", "_ctrlBackgroundButtonOK", "_ctrlBackgroundButtonMiddle", "_ctrlBackgroundButtonCancel", "_ctrlButtonOK", "_ctrlButtonCancel"];
 

From bd3ef35c88e9d54f4bc0f51c84ed89b861109bcf Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 02:07:49 +0300
Subject: [PATCH 115/257] Update stringtable.xml

---
 addons/hearing/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index f57bc2545a..25eedec9b9 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -19,7 +19,7 @@
             <Spanish>Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición.</Spanish>
             <Polish>Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu.</Polish>
             <Czech>Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní.</Czech>
-            <Russian>Беруши позволяют избежать потери слуха при близкой громкой стрельбе.</Russian>
+            <Russian>Беруши позволяют носителю находиться возле громкого вооружения без потери слуха</Russian>
             <French>Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus.</French>
             <Hungarian>Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást.</Hungarian>
             <Portuguese>Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição.</Portuguese>

From 0bb3238db18050339f2bda1640a6fa6fb9ec5a9f Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 02:09:59 +0300
Subject: [PATCH 116/257] Update stringtable.xml

---
 addons/disposable/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml
index 214b3f228a..9b7121e3ca 100644
--- a/addons/disposable/stringtable.xml
+++ b/addons/disposable/stringtable.xml
@@ -31,7 +31,7 @@
             <Polish>Wstępnie załadowana atrapa pocisku</Polish>
             <Spanish>Preloaded Missile Dummy</Spanish>
             <Hungarian>Előtöltött műrakéta</Hungarian>
-            <Russian>Заряженная ракетная пустышка</Russian>
+            <Russian>Предзаряженная Рокетная Болванка</Russian>
             <Italian>Missile stupido precaricato</Italian>
         </Key>
     </Package>

From 7f942a06f8d4f8fe93471ad61bf3717ade6c0efb Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 02:11:16 +0300
Subject: [PATCH 117/257] Update stringtable.xml

---
 addons/logistics_uavbattery/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/logistics_uavbattery/stringtable.xml b/addons/logistics_uavbattery/stringtable.xml
index b60353e29c..23588586cf 100644
--- a/addons/logistics_uavbattery/stringtable.xml
+++ b/addons/logistics_uavbattery/stringtable.xml
@@ -11,7 +11,7 @@
             <Czech>Dron je nabitý</Czech>
             <Portuguese>O VANT está cheio</Portuguese>
             <Italian>Il drone è pieno</Italian>
-            <Russian>БПЛА заполнен</Russian>
+            <Russian>БПЛА полностью заряжен</Russian>
         </Key>
         <Key ID="STR_ACE_logistics_uavbattery_NoBattery">
             <English>You need a UAV Battery</English>
@@ -59,7 +59,7 @@
             <Czech>Používané k dobíjení UAV</Czech>
             <Portuguese>Usada para reabastecer VANT</Portuguese>
             <Italian>Usata per ricaricare la Batteria dell'UAV</Italian>
-            <Russian>Используется для зарядки БПЛА</Russian>
+            <Russian>Используется для зарядки переносных БПЛА</Russian>
         </Key>
         <Key ID="STR_ACE_logistics_uavbattery_Battery_Recharge">
             <English>Recharging ...</English>

From ed2e847247d4d91b30c2731975b416bf1713649c Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 18:13:09 -0500
Subject: [PATCH 118/257] More Privates

---
 addons/maptools/XEH_postInitClient.sqf          |  1 +
 addons/maptools/functions/fnc_addLineMarker.sqf |  9 +++++----
 .../functions/fnc_calculateMapScale.sqf         |  2 ++
 .../functions/fnc_copyMapReceiveMarkers.sqf     |  1 +
 addons/maptools/functions/fnc_handleKeyDown.sqf |  9 +++------
 .../functions/fnc_handleMouseButton.sqf         |  5 ++---
 .../maptools/functions/fnc_handleMouseMove.sqf  |  1 +
 .../maptools/functions/fnc_isInsideMapTool.sqf  |  1 +
 addons/maptools/functions/fnc_openMapGps.sqf    |  5 ++++-
 .../maptools/functions/fnc_openMapGpsUpdate.sqf |  2 ++
 .../maptools/functions/fnc_removeLineMarker.sqf |  2 +-
 .../maptools/functions/fnc_updateLineMarker.sqf |  9 +++++----
 .../functions/fnc_updateMapToolMarkers.sqf      |  2 ++
 .../functions/fnc_reloadLauncher.sqf            |  7 +------
 .../functions/fnc_handleInitPostServer.sqf      |  6 ++----
 addons/respawn/functions/fnc_initRallypoint.sqf | 17 ++++++-----------
 addons/respawn/functions/fnc_module.sqf         |  8 ++++----
 .../functions/fnc_moduleFriendlyFire.sqf        | 10 +++-------
 .../respawn/functions/fnc_moduleRallypoint.sqf  |  8 +++-----
 addons/respawn/functions/fnc_moveRallypoint.sqf |  7 ++++---
 .../functions/fnc_removeDisconnectedPlayer.sqf  |  2 +-
 addons/respawn/functions/fnc_restoreGear.sqf    |  5 ++---
 addons/safemode/XEH_postInit.sqf                |  1 +
 addons/scopes/functions/fnc_adjustScope.sqf     |  6 +++---
 addons/scopes/functions/fnc_adjustZero.sqf      |  7 ++++---
 .../functions/fnc_applyScopeAdjustment.sqf      |  4 ++--
 addons/scopes/functions/fnc_canAdjustZero.sqf   |  7 ++++---
 tools/search_privates.py                        |  2 ++
 28 files changed, 72 insertions(+), 74 deletions(-)

diff --git a/addons/maptools/XEH_postInitClient.sqf b/addons/maptools/XEH_postInitClient.sqf
index 26fb005e9f..8129a75b15 100644
--- a/addons/maptools/XEH_postInitClient.sqf
+++ b/addons/maptools/XEH_postInitClient.sqf
@@ -24,6 +24,7 @@ GVAR(drawing_controls) = [36732, 36733, 36734, 36735, 36736, 36737];
 // The thread dies as soon as the mission start, so it's not really compiting for scheduler space.
 [] spawn {
     _fnc_installMapEvents = {
+        private "_d";
         _d = _this;
         ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseMoving", {_this call FUNC(handleMouseMove);}];
         ((finddisplay _d) displayctrl 51) ctrlAddEventHandler ["MouseButtonDown", {[1, _this] call FUNC(handleMouseButton);}];
diff --git a/addons/maptools/functions/fnc_addLineMarker.sqf b/addons/maptools/functions/fnc_addLineMarker.sqf
index 83e983d0e3..157891a262 100644
--- a/addons/maptools/functions/fnc_addLineMarker.sqf
+++ b/addons/maptools/functions/fnc_addLineMarker.sqf
@@ -15,10 +15,11 @@
  */
 #include "script_component.hpp"
 
-_name     = _this select 0;
-_startPos = _this select 1;
-_difPos   = (_this select 2) vectorDiff _startPos ;
-_color    = _this select 3;
+PARAMS_4(_name,_startPos,_endPos,_color);
+
+private ["_marker", "_difPos", "_mag"];
+
+_difPos = _endPos vectorDiff _startPos;
 
 _marker = createMarkerLocal [_name, _startPos];
 _name setMarkerShapeLocal "RECTANGLE";
diff --git a/addons/maptools/functions/fnc_calculateMapScale.sqf b/addons/maptools/functions/fnc_calculateMapScale.sqf
index 700e089a88..4723a4f5e1 100644
--- a/addons/maptools/functions/fnc_calculateMapScale.sqf
+++ b/addons/maptools/functions/fnc_calculateMapScale.sqf
@@ -12,6 +12,8 @@
  */
 #include "script_component.hpp"
 
+private ["_screenOffset", "_pos"];
+
 _pos          = ((finddisplay 12) displayctrl 51) ctrlMapScreenToWorld [0.5, 0.5];
 _screenOffset = ((finddisplay 12) displayctrl 51) posWorldToScreen [(_pos select 0) + 100, (_pos select 1)];
 
diff --git a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf
index e3de77316a..44f6ed6203 100644
--- a/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf
+++ b/addons/maptools/functions/fnc_copyMapReceiveMarkers.sqf
@@ -15,6 +15,7 @@
 PARAMS_1(_lineMarkers);
 
 {
+    private "_marker";
     _marker = _x;
     //Add marker if we don't already have it
     if (({(_x select 0) == (_marker select 0)} count GVAR(drawing_lineMarkers)) == 0) then {
diff --git a/addons/maptools/functions/fnc_handleKeyDown.sqf b/addons/maptools/functions/fnc_handleKeyDown.sqf
index d2b3a060b8..d1f9e199c9 100644
--- a/addons/maptools/functions/fnc_handleKeyDown.sqf
+++ b/addons/maptools/functions/fnc_handleKeyDown.sqf
@@ -15,13 +15,10 @@
 
 #include "script_component.hpp"
 
-private ["_dir", "_params", "_control", "_button", "_screenPos", "_shiftKey", "_ctrlKey", "_handled", "_pos"];
+PARAMS_5(_display,_code,_shiftKey,_ctrlKey,_altKey);
+
+private ["_handled", "_relPos", "_diffVector", "_magDiffVector", "_lambdaLong", "_lambdaTrasAbs"];
 
-_display  = _this select 0;
-_code     = _this select 1;
-_shiftKey = _this select 2;
-_ctrlKey  = _this select 3;
-_altKey   = _this select 4;
 _handled   = false;
 
 #define DIK_ESCAPE          0x01
diff --git a/addons/maptools/functions/fnc_handleMouseButton.sqf b/addons/maptools/functions/fnc_handleMouseButton.sqf
index 8db6b8b0f1..16cabe9719 100644
--- a/addons/maptools/functions/fnc_handleMouseButton.sqf
+++ b/addons/maptools/functions/fnc_handleMouseButton.sqf
@@ -13,10 +13,9 @@
 
 #include "script_component.hpp"
 
-private ["_dir", "_params", "_control", "_button", "_screenPos", "_shiftKey", "_ctrlKey", "_handled", "_pos"];
+private ["_control", "_button", "_screenPos", "_shiftKey", "_ctrlKey", "_handled", "_pos", "_altKey", "_gui", "_marker"];
 
-_dir       = _this select 0;
-_params    = _this select 1;
+PARAMS_2(_dir,_params);
 _control   = _params select 0;
 _button    = _params select 1;
 _screenPos = [_params select 2, _params select 3];
diff --git a/addons/maptools/functions/fnc_handleMouseMove.sqf b/addons/maptools/functions/fnc_handleMouseMove.sqf
index 4111c8fad4..2148c5a162 100644
--- a/addons/maptools/functions/fnc_handleMouseMove.sqf
+++ b/addons/maptools/functions/fnc_handleMouseMove.sqf
@@ -51,6 +51,7 @@ if (GVAR(mapTool_isDragging)) exitWith {
 
 // Rotation
 if (GVAR(mapTool_isRotating)) exitWith {
+    private "_angle";
     // Get new angle
     _angle =  (180 + ((GVAR(mousePosition) select 0) - (GVAR(mapTool_startPos) select 0)) atan2 ((GVAR(mousePosition) select 1) - (GVAR(mapTool_startPos) select 1)) mod 360);
     GVAR(mapTool_angle) = GVAR(mapTool_startAngle) + _angle - GVAR(mapTool_startDragAngle);
diff --git a/addons/maptools/functions/fnc_isInsideMapTool.sqf b/addons/maptools/functions/fnc_isInsideMapTool.sqf
index 4dd66e2b9a..eeaf8f346a 100644
--- a/addons/maptools/functions/fnc_isInsideMapTool.sqf
+++ b/addons/maptools/functions/fnc_isInsideMapTool.sqf
@@ -16,6 +16,7 @@
 #define DIST_TOP_TO_CENTER_PERC      0.65
 #define DIST_LEFT_TO_CENTER_PERC     0.30
 
+private ["_textureWidth", "_relPos", "_dirVector", "_lambdaLong", "_lambdaTrasAbs", "_pos"];
 
 if (GVAR(mapTool_Shown) == 0) exitWith {false};
 _textureWidth = [TEXTURE_WIDTH_IN_M, TEXTURE_WIDTH_IN_M / 2] select (GVAR(mapTool_Shown) - 1);
diff --git a/addons/maptools/functions/fnc_openMapGps.sqf b/addons/maptools/functions/fnc_openMapGps.sqf
index c4e2436b3b..7d29d9e169 100644
--- a/addons/maptools/functions/fnc_openMapGps.sqf
+++ b/addons/maptools/functions/fnc_openMapGps.sqf
@@ -12,7 +12,10 @@
  */
 #include "script_component.hpp"
 
-_shouldOpenGps = _this select 0;
+PARAMS_1(_shouldOpenGps);
+
+private ["_isOpen"];
+
 _isOpen = !(isNull (uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull]));
 
 if (_shouldOpenGps && {"ItemGPS" in assignedItems ACE_player} && {!_isOpen}) then {
diff --git a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
index ddc177f182..092f0720c2 100644
--- a/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
+++ b/addons/maptools/functions/fnc_openMapGpsUpdate.sqf
@@ -3,6 +3,8 @@
 
 #include "script_component.hpp"
 
+private ["_mapGpsDisplay", "_ctrl"];
+
 if ((!("ItemGPS" in assigneditems ACE_player)) || {isNull (uiNamespace getVariable [QGVAR(ui_mapGpsDisplay), displayNull])}) exitWith {
     ("RscACE_MapGps" call BIS_fnc_rscLayer) cutText ["","PLAIN"];  //close GPS RSC
     [(_this select 1)] call CBA_fnc_removePerFrameHandler;  //remove frameHandler
diff --git a/addons/maptools/functions/fnc_removeLineMarker.sqf b/addons/maptools/functions/fnc_removeLineMarker.sqf
index 45c39611db..be82970524 100644
--- a/addons/maptools/functions/fnc_removeLineMarker.sqf
+++ b/addons/maptools/functions/fnc_removeLineMarker.sqf
@@ -11,7 +11,7 @@
 
 #include "script_component.hpp"
 
-_name     = _this select 0;
+PARAMS_1(_name);
 
 deleteMarkerLocal _name;
 {
diff --git a/addons/maptools/functions/fnc_updateLineMarker.sqf b/addons/maptools/functions/fnc_updateLineMarker.sqf
index cf80c1ac26..a745bfa123 100644
--- a/addons/maptools/functions/fnc_updateLineMarker.sqf
+++ b/addons/maptools/functions/fnc_updateLineMarker.sqf
@@ -13,10 +13,11 @@
  */
 #include "script_component.hpp"
 
-_name     = _this select 0;
-_startPos = _this select 1;
-_difPos   = (_this select 2) vectorDiff _startPos ;
-_color    = _this select 3;
+PARAMS_4(_name,_startPos,_endPos,_color);
+
+private ["_difPos", "_mag"];
+
+_difPos = _endPos vectorDiff _startPos;
 
 _name setMarkerShapeLocal "RECTANGLE";
 _name setMarkerAlphaLocal 1;
diff --git a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
index 3a7b919b8b..fa6db8872a 100644
--- a/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
+++ b/addons/maptools/functions/fnc_updateMapToolMarkers.sqf
@@ -18,6 +18,8 @@
 
 PARAMS_1(_theMap);
 
+private ["_rotatingTexture", "_textureWidth", "_scale", "_xPos", "_yPos"];
+
 if (!("ACE_MapTools" in items ACE_player)|| {GVAR(mapTool_Shown) == 0}) exitWith {};
 
 _rotatingTexture = "";
diff --git a/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf b/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf
index 36772f9dfd..fc802a025c 100644
--- a/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf
+++ b/addons/reloadlaunchers/functions/fnc_reloadLauncher.sqf
@@ -14,12 +14,7 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_weapon", "_magazine"];
-
-_unit = _this select 0;
-_target = _this select 1;
-_weapon = _this select 2;
-_magazine = _this select 3;
+PARAMS_4(_unit,_target,_weapon,_magazine);
 
 _target selectWeapon _weapon;
 
diff --git a/addons/respawn/functions/fnc_handleInitPostServer.sqf b/addons/respawn/functions/fnc_handleInitPostServer.sqf
index f8a0479717..914334cc25 100644
--- a/addons/respawn/functions/fnc_handleInitPostServer.sqf
+++ b/addons/respawn/functions/fnc_handleInitPostServer.sqf
@@ -2,13 +2,11 @@
 // execute on server only!
 #include "script_component.hpp"
 
-private "_unit";
-
-_unit = _this select 0;
+PARAMS_1(_unit);
 
 private ["_group0", "_rallypoint"];
 
-_group0 = group _unit;  // _group is a reserved veriable and shouldn't be used
+_group0 = group _unit;  // _group-is a reserved veriable and shouldn't be used
 
 _rallypoint = [
     objNull,
diff --git a/addons/respawn/functions/fnc_initRallypoint.sqf b/addons/respawn/functions/fnc_initRallypoint.sqf
index 44671b7c45..2ef158a419 100644
--- a/addons/respawn/functions/fnc_initRallypoint.sqf
+++ b/addons/respawn/functions/fnc_initRallypoint.sqf
@@ -16,11 +16,7 @@
 
 #include "script_component.hpp"
 
-private ["_rallypoint", "_respawnMarker", "_side"];
-
-_rallypoint = _this select 0;
-_respawnMarker = _this select 1;
-_side = _this select 2;
+PARAMS_3(_rallypoint,_respawnMarker,_side);
 
 private "_name";
 _name = typeOf _rallypoint;
@@ -29,12 +25,11 @@ _name = typeOf _rallypoint;
 if (hasInterface) then {
     // fix init having wrong position, vars etc.
     [_rallypoint, _respawnMarker, _side, _name] spawn {
-        _rallypoint = _this select 0;
-        _respawnMarker = _this select 1;
-        _side = _this select 2;
-        _name = _this select 3;
-
-        _marker = format ["ACE_Marker_%1", _name];
+        PARAMS_4(_rallypoint,_respawnMarker,_side,_name);
+        
+        private ["_marker", "_type"];
+       
+       _marker = format ["ACE_Marker_%1", _name];
 
         // exit if it already exist
         if (_marker in allMapMarkers) exitWith {};
diff --git a/addons/respawn/functions/fnc_module.sqf b/addons/respawn/functions/fnc_module.sqf
index 6d03c1eda3..4f22bdfcd4 100644
--- a/addons/respawn/functions/fnc_module.sqf
+++ b/addons/respawn/functions/fnc_module.sqf
@@ -18,10 +18,9 @@
 
 #include "script_component.hpp"
 
-if !(isServer) exitWith {};
+PARAMS_3(_logic,_units,_activated); 
 
-_logic = _this select 0;
-_activated = _this select 2;
+if !(isServer) exitWith {};
 
 if !(_activated) exitWith {};
 
@@ -32,9 +31,10 @@ GVAR(Module) = true;
 
 if (isServer) then {
     if (GVAR(RemoveDeadBodiesDisconnected)) then {
+        private "_fnc_deleteDisconnected";
         _fnc_deleteDisconnected = {
             _this spawn {
-                _unit = _this select 0;
+                PARAMS_1(_unit);
 
                 sleep 4;
 
diff --git a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf
index 35857b43e4..7641db806d 100644
--- a/addons/respawn/functions/fnc_moduleFriendlyFire.sqf
+++ b/addons/respawn/functions/fnc_moduleFriendlyFire.sqf
@@ -19,17 +19,13 @@
 #include "script_component.hpp"
 
 _this spawn {
-    _logic = _this select 0;
-    _units = _this select 1;
-    _activated = _this select 2;
+    PARAMS_3(_logic,_units,_activated); 
 
     if !(_activated) exitWith {};
 
     if (isServer) then {
-        _varName = QGVAR(showFriendlyFireMessage);
-
-        missionNamespace setVariable [_varName, true];
-        publicVariable _varName;
+        missionNamespace setVariable [QGVAR(showFriendlyFireMessage), true];
+        publicVariable QGVAR(showFriendlyFireMessage);
     };
 
     diag_log text "[ACE]: Friendly Fire Messages Module Initialized.";
diff --git a/addons/respawn/functions/fnc_moduleRallypoint.sqf b/addons/respawn/functions/fnc_moduleRallypoint.sqf
index 1646fa72da..15c415027d 100644
--- a/addons/respawn/functions/fnc_moduleRallypoint.sqf
+++ b/addons/respawn/functions/fnc_moduleRallypoint.sqf
@@ -16,11 +16,9 @@
     VOID
 */
 
- #include "script_component.hpp"
- 
-_logic = _this select 0;
-_units = _this select 1;
-_activated = _this select 2;
+#include "script_component.hpp"
+
+PARAMS_3(_logic,_units,_activated);
 
 if !(_activated) exitWith {};
 
diff --git a/addons/respawn/functions/fnc_moveRallypoint.sqf b/addons/respawn/functions/fnc_moveRallypoint.sqf
index 62d2742ef9..2453c68344 100644
--- a/addons/respawn/functions/fnc_moveRallypoint.sqf
+++ b/addons/respawn/functions/fnc_moveRallypoint.sqf
@@ -18,9 +18,10 @@
 #include "script_component.hpp"
 
 _this spawn {
-    _unit = _this select 0;
-    _side = _this select 1;
-
+    PARAMS_2(_unit,_side); 
+    
+    private ["_rallypoint", "_position"];
+    
     // rallypoint names are defined in CfgVehicles.hpp
 
     _rallypoint = [
diff --git a/addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf b/addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf
index 492cd990a4..7bd0a6707f 100644
--- a/addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf
+++ b/addons/respawn/functions/fnc_removeDisconnectedPlayer.sqf
@@ -16,7 +16,7 @@
 
 #include "script_component.hpp"
 
-private ["_forceRemove", "_body"];
+private ["_forceRemove", "_body", "_uid"];
 
 _forceRemove = _this select 0;
 
diff --git a/addons/respawn/functions/fnc_restoreGear.sqf b/addons/respawn/functions/fnc_restoreGear.sqf
index 5a00e3425c..85863bb6c2 100644
--- a/addons/respawn/functions/fnc_restoreGear.sqf
+++ b/addons/respawn/functions/fnc_restoreGear.sqf
@@ -17,11 +17,10 @@
 
 #include "script_component.hpp"
 
-private ["_unit", "_allGear", "_headgear", "_goggles", "_uniform", "_uniformitems", "_vest", "_vestitems", "_backpack", "_backpackitems", "_primaryweapon", "_primaryweaponitems", "_primaryweaponmagazine", "_handgunweapon", "_handgunweaponitems", "_handgunweaponmagazine", "_assigneditems", "_binocular"];
+PARAMS_2(_unit,_allGear);
 
+private ["_unit", "_allGear", "_headgear", "_goggles", "_uniform", "_uniformitems", "_vest", "_vestitems", "_backpack", "_backpackitems", "_primaryweapon", "_primaryweaponitems", "_primaryweaponmagazine", "_handgunweapon", "_handgunweaponitems", "_handgunweaponmagazine", "_assigneditems", "_binocular", "_backpa", "_secondaryweapon", "_secondaryweaponitems", "_secondaryweaponmagazine"];
 
-_unit = _this select 0;
-_allGear = _this select 1;
 
 // remove all starting gear of a player
 removeAllWeapons _unit;
diff --git a/addons/safemode/XEH_postInit.sqf b/addons/safemode/XEH_postInit.sqf
index aa13029547..be6b79d82a 100644
--- a/addons/safemode/XEH_postInit.sqf
+++ b/addons/safemode/XEH_postInit.sqf
@@ -3,6 +3,7 @@
 
 if (!hasInterface) exitWith {};
 
+// IGNORE_PRIVATE_WARNING(_player)
 //["Soldier", {_player = ACE_player; if (currentWeapon _player in (_player getVariable [QGVAR(safedWeapons), []])) then {[false] call FUNC(setSafeModeVisual)}] call EFUNC(common,addInfoDisplayEventHandler);
 //@todo addEventHandler infoDisplayChanged with select 1 == "Soldier"
 
diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf
index 76c62a4688..a59095d127 100644
--- a/addons/scopes/functions/fnc_adjustScope.sqf
+++ b/addons/scopes/functions/fnc_adjustScope.sqf
@@ -14,11 +14,11 @@
  */
 #include "script_component.hpp"
 
-if !(vehicle _unit == _unit) exitWith {false};
+PARAMS_3(_unit,_turretAndDirection,_majorStep);
 
-private ["_unit", "_turretAndDirection", "_majorStep", "_weaponIndex", "_zeroing", "_optic", "_increment", "_maxVertical", "_maxHorizontal", "_elevation", "_windage", "_zero"];
+if (vehicle _unit != _unit) exitWith {false};
 
-EXPLODE_3_PVT(_this,_unit,_turretAndDirection,_majorStep);
+private ["_weaponIndex", "_zeroing", "_optic", "_increment", "_maxVertical", "_maxHorizontal", "_elevation", "_windage", "_zero", "_adjustment"];
 
 _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex);
 if (_weaponIndex < 0) exitWith {false};
diff --git a/addons/scopes/functions/fnc_adjustZero.sqf b/addons/scopes/functions/fnc_adjustZero.sqf
index 4dbab48f49..12e911b537 100644
--- a/addons/scopes/functions/fnc_adjustZero.sqf
+++ b/addons/scopes/functions/fnc_adjustZero.sqf
@@ -12,10 +12,11 @@
  */
 #include "script_component.hpp"
 
-if !(vehicle _unit == _unit) exitWith {false};
+PARAMS_1(_unit);
 
-private ["_unit", "_adjustment", "_zeroing", "_elevation", "_windage", "_zero"];
-_unit = _this select 0;
+if (vehicle _unit != _unit) exitWith {false};
+
+private ["_weaponIndex", "_adjustment", "_zeroing", "_elevation", "_windage", "_zero"];
 
 _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex);
 if (_weaponIndex < 0) exitWith {false};
diff --git a/addons/scopes/functions/fnc_applyScopeAdjustment.sqf b/addons/scopes/functions/fnc_applyScopeAdjustment.sqf
index 6bb72558b1..4950fe9ece 100644
--- a/addons/scopes/functions/fnc_applyScopeAdjustment.sqf
+++ b/addons/scopes/functions/fnc_applyScopeAdjustment.sqf
@@ -15,10 +15,10 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_elevation", "_windage", "_zero", "_adjustmentDifference", "_pitchbankyaw", "_pitch", "_bank", "_yaw"];
-
 EXPLODE_4_PVT(_this,_unit,_elevation,_windage,_zero);
 
+private ["_adjustmentDifference", "_pitchbankyaw", "_pitch", "_bank", "_yaw", "_adjustment", "_weaponIndex"];
+
 _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex);
 
 _adjustment = _unit getVariable QGVAR(Adjustment);
diff --git a/addons/scopes/functions/fnc_canAdjustZero.sqf b/addons/scopes/functions/fnc_canAdjustZero.sqf
index c9663ea711..619d82cf6e 100644
--- a/addons/scopes/functions/fnc_canAdjustZero.sqf
+++ b/addons/scopes/functions/fnc_canAdjustZero.sqf
@@ -12,13 +12,14 @@
  */
 #include "script_component.hpp"
 
+PARAMS_1(_unit);
+
+private ["_weaponIndex", "_adjustment", "_elevation"];
+
 if (cameraView == "GUNNER") exitWith {false};
 if !(vehicle _unit == _unit) exitWith {false};
 if !(missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) exitWith {false};
 
-private ["_unit", "_adjustment", "_elevation"];
-_unit = _this select 0;
-
 _weaponIndex = [_unit, currentWeapon _unit] call EFUNC(common,getWeaponIndex);
 if (_weaponIndex < 0) exitWith {false};
 
diff --git a/tools/search_privates.py b/tools/search_privates.py
index 6e1430a8ca..4b418de8d6 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -70,6 +70,8 @@ def check_privates(filepath):
         if '_forEachIndex' in priv_use: priv_use.remove('_forEachIndex')
         if '_foreachIndex' in priv_declared: priv_declared.remove('_foreachIndex')
         if '_foreachIndex' in priv_use: priv_use.remove('_foreachIndex')
+        if '_foreachindex' in priv_declared: priv_declared.remove('_foreachindex')
+        if '_foreachindex' in priv_use: priv_use.remove('_foreachindex')
         
         missing = []
         for s in priv_use:

From 04858bb6733f0a941e205fdaaa0085328cc6acf8 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 02:19:09 +0300
Subject: [PATCH 119/257] Update stringtable.xml

---
 addons/microdagr/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml
index d7d550fc32..2acb0ec574 100644
--- a/addons/microdagr/stringtable.xml
+++ b/addons/microdagr/stringtable.xml
@@ -95,7 +95,7 @@
         <Key ID="STR_ACE_microdagr_wpEnterCords">
             <English>Enter Grid Cords:</English>
             <Spanish>Introducir coordenadas de cuadrícula:</Spanish>
-            <Russian>Введите координаты:</Russian>
+            <Russian>Введите Сеточные Координаты:</Russian>
             <Polish>Wprowadź współrzędne:</Polish>
             <French>Entrer coordonnées</French>
             <German>Koordinaten eingeben:</German>
@@ -183,7 +183,7 @@
         <Key ID="STR_ACE_microdagr_menuConnectTo">
             <English>Connect To</English>
             <Spanish>Conectar a</Spanish>
-            <Russian>Соединиться с </Russian>
+            <Russian>Подключиться к</Russian>
             <German>Verbinde zu</German>
             <Czech>Připojit k</Czech>
             <Polish>Podłącz do</Polish>

From 708a2aa374567e84ab500eead2d5320a0ab7513f Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 01:44:53 +0200
Subject: [PATCH 120/257] check if ddls are present on mission start

---
 addons/common/XEH_postInit.sqf | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index e470e91c95..eda61c66ad 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -188,3 +188,14 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
     // Players can always interact with passengers of the same vehicle
     {!((_this select 0) isEqualTo (_this select 1)) && {vehicle (_this select 0) == vehicle (_this select 1)}}
 }] call FUNC(addCanInteractWithCondition);
+
+// check dlls
+{
+    if (_x callExtension "version" == "") then {
+        private "_errorMsg";
+        _errorMsg = format ["Extension %1.dll not installed.", _x];
+
+        diag_log text format ["[ACE] ERROR: %1", _errorMsg];
+        ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
+    };
+} forEach ["ace_breakLine", "ace_advanced_ballistics", "ace_fcs"];

From b7c7d2ff152c9c59020b17adb98fcae4ed1af4d3 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 03:04:14 +0300
Subject: [PATCH 121/257] Update stringtable.xml

---
 addons/hearing/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index 25eedec9b9..3fa947ead9 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -19,7 +19,7 @@
             <Spanish>Los tapones para los oídos permiten al usuario operar armamento ruidoso sin sufrir pérdida de audición.</Spanish>
             <Polish>Stopery do uszu umożliwiają użytkownikowi przebywać w pobliżu głośnej broni bez poniesienia konsekwencji jaką jest utrata słuchu.</Polish>
             <Czech>Ochranné špunty umožňují uživateli, aby neutrpěl zranění jeho sluchu v blízkosti hlasitých zbraní.</Czech>
-            <Russian>Беруши позволяют носителю находиться возле громкого вооружения без потери слуха</Russian>
+            <Russian>Беруши позволяют носителю находиться возле громкого вооружения без потери слуха.</Russian>
             <French>Bouchons Anti-Bruits pour la prévention des traumatismes sonores aigus.</French>
             <Hungarian>Erősebb hanghatásoktól védő füldugó, megakadályozza a nagy hanggal járó fegyverzettől való halláskárosodást.</Hungarian>
             <Portuguese>Protetor para ouvidos permitem que o usuário esteja próximo a ruídos sem danificar sua audição.</Portuguese>

From 711be038fcc49c06cf0b2e806865a0f54f9d2d02 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 03:09:51 +0300
Subject: [PATCH 122/257] Update stringtable.xml

---
 addons/disposable/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/disposable/stringtable.xml b/addons/disposable/stringtable.xml
index 9b7121e3ca..7f57998157 100644
--- a/addons/disposable/stringtable.xml
+++ b/addons/disposable/stringtable.xml
@@ -31,7 +31,7 @@
             <Polish>Wstępnie załadowana atrapa pocisku</Polish>
             <Spanish>Preloaded Missile Dummy</Spanish>
             <Hungarian>Előtöltött műrakéta</Hungarian>
-            <Russian>Предзаряженная Рокетная Болванка</Russian>
+            <Russian>Предзаряженная ракетная болванка</Russian>
             <Italian>Missile stupido precaricato</Italian>
         </Key>
     </Package>

From ad6155755779787b53ebff7fb3909f7527fb6c31 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sat, 18 Apr 2015 03:10:28 +0300
Subject: [PATCH 123/257] Update stringtable.xml

---
 addons/microdagr/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml
index 2acb0ec574..f98c7f438c 100644
--- a/addons/microdagr/stringtable.xml
+++ b/addons/microdagr/stringtable.xml
@@ -95,7 +95,7 @@
         <Key ID="STR_ACE_microdagr_wpEnterCords">
             <English>Enter Grid Cords:</English>
             <Spanish>Introducir coordenadas de cuadrícula:</Spanish>
-            <Russian>Введите Сеточные Координаты:</Russian>
+            <Russian>Введите сеточные координаты:</Russian>
             <Polish>Wprowadź współrzędne:</Polish>
             <French>Entrer coordonnées</French>
             <German>Koordinaten eingeben:</German>

From 8fa0c91632289fbae1138da693f038e5fe234884 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 18:23:26 -0700
Subject: [PATCH 124/257] Added PlayerJIP event, handled full requests on JIP.

---
 addons/common/XEH_postInit.sqf                | 27 ++++++++++++++++++-
 .../fnc__handleRequestAllSyncedEvents.sqf     | 23 ++++++++++++++++
 .../fnc__handleRequestSyncedEvent.sqf         |  2 +-
 3 files changed, 50 insertions(+), 2 deletions(-)
 create mode 100644 addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 96b0f34356..d228d77d7b 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -107,7 +107,6 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
 
 // PFH to raise varios events
 [{
-
     // "playerInventoryChanged" event
     _newPlayerInventory = [ACE_player] call FUNC(getAllGear);
     if !(_newPlayerInventory isEqualTo GVAR(OldPlayerInventory)) then {
@@ -190,6 +189,32 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
 }] call FUNC(addCanInteractWithCondition);
 
 // Synced ACE events
+// Handle JIP scenario
+if(!isServer) then{
+    ["PlayerJip", { 
+        diag_log text format["[ACE] - JIP event synchronization initialized"];
+        ["SEH_all", [player]] call FUNC(serverEvent);
+    }] call FUNC(addEventHandler);
+} else {
+    ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call FUNC(addEventHandler);
+};
 ["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
 ["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler);
 [FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler;
+
+
+// JIP Detection and event trigger. Run this at the very end, just in case anything uses it
+if(isNull player) then {
+    // We are jipping! Get ready and wait, and throw the event
+    [{
+        PARAMS_2(_args,_handle);
+        
+        if(!isNull player) then {   
+            ["PlayerJip", [player] ] call FUNC(localEvent);
+            [_handle] call cba_fnc_removePerFrameHandler;
+        }; 
+    }, 0, []] call cba_fnc_addPerFrameHandler;
+};
+
+
+
diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf
new file mode 100644
index 0000000000..62981092fb
--- /dev/null
+++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf
@@ -0,0 +1,23 @@
+/*
+ * Author: jaynus
+ *
+ *
+ * Argument:
+ * 
+ * Return value:
+ * Boolean of success
+ */
+#define DEBUG_MODE_FULL
+#include "script_component.hpp"
+PARAMS_1(_client);
+
+{
+    private["_eventName", "_eventEntry", "_eventLog"];
+    _eventName = _x;
+    _eventEntry = HASH_GET(GVAR(syncedEvents),_eventName);
+    _eventLog = _eventEntry select 1;
+
+    ["SEH_s", _client, [_eventName, _eventLog] ] call FUNC(targetEvent);
+} forEach (GVAR(syncedEvents) select 0);
+
+true
\ No newline at end of file
diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
index 643ce40916..c9b81f8ef7 100644
--- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
+++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
@@ -7,7 +7,7 @@
  * Return value:
  * Boolean of success
  */
- #define DEBUG_MODE_FULL
+#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 
 //SEH_s

From da09b74fe4bfcdc663f5c977e451f9c5c8b5b90e Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 18:27:35 -0700
Subject: [PATCH 125/257] Don't JIP check server side, but still have it fire
 for HC.

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

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index d228d77d7b..34ada15480 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -204,7 +204,7 @@ if(!isServer) then{
 
 
 // JIP Detection and event trigger. Run this at the very end, just in case anything uses it
-if(isNull player) then {
+if(!isServer && {isNull player}) then {
     // We are jipping! Get ready and wait, and throw the event
     [{
         PARAMS_2(_args,_handle);

From 93d03b404fdef3153a6d689cf8c87e2e713340db Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 19:26:27 -0700
Subject: [PATCH 126/257] JIP Sync events complete.

---
 addons/common/XEH_postInit.sqf                | 49 +++++++++++--------
 addons/common/XEH_preInit.sqf                 |  5 +-
 .../fnc__handleRequestAllSyncedEvents.sqf     |  4 +-
 .../fnc__handleRequestSyncedEvent.sqf         | 14 ++++--
 .../functions/fnc__handleSyncedEvent.sqf      | 14 +++---
 .../functions/fnc_addSyncedEventHandler.sqf   |  2 +-
 .../functions/fnc_requestSyncedEvent.sqf      |  4 +-
 addons/common/functions/fnc_syncedEvent.sqf   |  2 +-
 8 files changed, 58 insertions(+), 36 deletions(-)

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 34ada15480..2a20c0204d 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -65,9 +65,31 @@ if (_currentVersion != _previousVersion) then {
 
 0 spawn COMPILE_FILE(scripts\Version\checkVersionNumber);
 
+// ACE events
 "ACEg" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
 "ACEc" addPublicVariableEventHandler { _this call FUNC(_handleNetEvent); };
 
+// Synced ACE events
+// Handle JIP scenario
+if(!isServer) then {
+    ["PlayerJip", { 
+        diag_log text format["[ACE] * JIP event synchronization initialized"];
+        ["SEH_all", [player]] call FUNC(serverEvent);
+    }] call FUNC(addEventHandler);
+} else {
+    ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call FUNC(addEventHandler);
+};
+["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
+["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler);
+[FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler;
+
+
+/***************************************************************/
+/***************************************************************/
+/***************************************************************/
+/***************************************************************/
+/***************************************************************/
+
 // everything that only player controlled machines need, goes below this
 if (!hasInterface) exitWith {};
 
@@ -87,7 +109,7 @@ enableCamShake true;
 // Set the name for the current player
 ["playerChanged", {
     EXPLODE_2_PVT(_this,_newPlayer,_oldPlayer);
-    diag_log text format["PLAYER CHANGED!", _this];
+    
     if (alive _newPlayer) then {
         [_newPlayer] call FUNC(setName)
     };
@@ -188,30 +210,15 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
     {!((_this select 0) isEqualTo (_this select 1)) && {vehicle (_this select 0) == vehicle (_this select 1)}}
 }] call FUNC(addCanInteractWithCondition);
 
-// Synced ACE events
-// Handle JIP scenario
-if(!isServer) then{
-    ["PlayerJip", { 
-        diag_log text format["[ACE] - JIP event synchronization initialized"];
-        ["SEH_all", [player]] call FUNC(serverEvent);
-    }] call FUNC(addEventHandler);
-} else {
-    ["SEH_all", FUNC(_handleRequestAllSyncedEvents)] call FUNC(addEventHandler);
-};
-["SEH", FUNC(_handleSyncedEvent)] call FUNC(addEventHandler);
-["SEH_s", FUNC(_handleRequestSyncedEvent)] call FUNC(addEventHandler);
-[FUNC(syncedEventPFH), 0.5, []] call cba_fnc_addPerFrameHandler;
-
-
+// Lastly, do JIP events
 // JIP Detection and event trigger. Run this at the very end, just in case anything uses it
-if(!isServer && {isNull player}) then {
+if(isMultiplayer && { time > 0 || isNull player } ) then {
     // We are jipping! Get ready and wait, and throw the event
     [{
-        PARAMS_2(_args,_handle);
-        
-        if(!isNull player) then {   
+        diag_log text format["JIP Detected, waiting"];
+        if(!(isNull player)) then {   
             ["PlayerJip", [player] ] call FUNC(localEvent);
-            [_handle] call cba_fnc_removePerFrameHandler;
+            [(_this select 1)] call cba_fnc_removePerFrameHandler;
         }; 
     }, 0, []] call cba_fnc_addPerFrameHandler;
 };
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index 5bacea7505..077d69578b 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -273,10 +273,13 @@ PREP(hashListPush);
 PREP(syncedEventPFH);
 PREP(addSyncedEventHandler);
 PREP(removeSyncedEventHandler);
+PREP(requestSyncedEvent);
 PREP(syncedEvent);
+
 PREP(_handleSyncedEvent);
 PREP(_handleRequestSyncedEvent);
-PREP(requestSyncedEvent);
+PREP(_handleRequestAllSyncedEvents);
+
 GVAR(syncedEvents) = HASH_CREATE;
 
 // @TODO: Generic local-managed global-synced objects (createVehicleLocal)
diff --git a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf
index 62981092fb..7c566ce4d1 100644
--- a/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf
+++ b/addons/common/functions/fnc__handleRequestAllSyncedEvents.sqf
@@ -1,13 +1,15 @@
 /*
  * Author: jaynus
  *
+ * Handles a server-side request for synchronization ALL events on JIP to a client.
  *
  * Argument:
+ * 0: client (object)
  * 
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 PARAMS_1(_client);
 
diff --git a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
index c9b81f8ef7..2d58aae869 100644
--- a/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
+++ b/addons/common/functions/fnc__handleRequestSyncedEvent.sqf
@@ -1,13 +1,20 @@
 /*
  * Author: jaynus
+ * 
+ * Receives either requests for synchronization from clients, or the synchronization data from the server.
  *
- *
- * Argument:
+ * Arguments [Client] :
+ * 0: eventName (String)
+ * 1: eventLog (Array)
+ * 
+ * Arguments [Server] :
+ * 0: eventName (String)
+ * 1: client (Object)
  * 
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 
 //SEH_s
@@ -32,6 +39,7 @@ if(isServer) then {
         _eventArgs = _x select 1;
         [_eventName, _eventArgs, (_x select 2)] call FUNC(_handleSyncedEvent);
     } forEach _eventLog;
+    diag_log text format["[ACE] + [%1] synchronized", _eventName];
 };
 
 true
\ No newline at end of file
diff --git a/addons/common/functions/fnc__handleSyncedEvent.sqf b/addons/common/functions/fnc__handleSyncedEvent.sqf
index 14dfc32bae..9807896358 100644
--- a/addons/common/functions/fnc__handleSyncedEvent.sqf
+++ b/addons/common/functions/fnc__handleSyncedEvent.sqf
@@ -1,17 +1,17 @@
 /*
  * Author: jaynus
+ * 
+ * Handles synced events being received. Server will log them, and server/client will execute them.
  *
- * Call and propegate a synced event
- *
- * Argument:
- * 0: Name (String)
- * 1: Arguments (Array)
- * 2: TTL (Number or Code) [Optional]
+ * Arguments [Client] :
+ * 0: eventName (String)
+ * 1: arguments (Array)
+ * 2: ttl (Scalar)
  * 
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 PARAMS_3(_name,_args,_ttl);
 private["_internalData", "_eventLog", "_eventCode"];
diff --git a/addons/common/functions/fnc_addSyncedEventHandler.sqf b/addons/common/functions/fnc_addSyncedEventHandler.sqf
index ab9d8bb829..5d2b221178 100644
--- a/addons/common/functions/fnc_addSyncedEventHandler.sqf
+++ b/addons/common/functions/fnc_addSyncedEventHandler.sqf
@@ -11,7 +11,7 @@
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 PARAMS_2(_name,_handler);
 
diff --git a/addons/common/functions/fnc_requestSyncedEvent.sqf b/addons/common/functions/fnc_requestSyncedEvent.sqf
index f18c3542b5..dea0c7adef 100644
--- a/addons/common/functions/fnc_requestSyncedEvent.sqf
+++ b/addons/common/functions/fnc_requestSyncedEvent.sqf
@@ -1,13 +1,15 @@
 /*
  * Author: jaynus
  *
+ * Send a request to synchronize an event name from the client->server. Execute on client only.
  *
  * Argument:
+ * 0: eventName (String)
  * 
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 PARAMS_1(_eventName);
 
diff --git a/addons/common/functions/fnc_syncedEvent.sqf b/addons/common/functions/fnc_syncedEvent.sqf
index 43f4feb5bd..70c30a19da 100644
--- a/addons/common/functions/fnc_syncedEvent.sqf
+++ b/addons/common/functions/fnc_syncedEvent.sqf
@@ -11,7 +11,7 @@
  * Return value:
  * Boolean of success
  */
-#define DEBUG_MODE_FULL
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 PARAMS_2(_name,_args);
 private["_ttl", "_eventData", "_internalData", "_eventLog"];

From 32df4a2adcd827eff4b0cf3cff08f2b240571c9f Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 19:33:07 -0700
Subject: [PATCH 127/257] synced events implemented into litter.

---
 addons/medical/XEH_postInit.sqf               |   4 +
 addons/medical/XEH_preInit.sqf                |   5 +-
 .../functions/fnc__handleCreateLitter.sqf     | 115 ++++++++++++++++++
 addons/medical/functions/fnc_createLitter.sqf | 103 +---------------
 4 files changed, 127 insertions(+), 100 deletions(-)
 create mode 100644 addons/medical/functions/fnc__handleCreateLitter.sqf

diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 309bb2a888..68e3b7965b 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -265,3 +265,7 @@ if (USE_WOUND_EVENT_SYNC) then {
 ["playerInventoryChanged", {
     [ACE_player] call FUNC(itemCheck);
 }] call EFUNC(common,addEventHandler);
+
+
+// Synchronized litter creation
+[QGVAR(createLitter), FUNC(_handleCreateLitter)] call EFUNC(common,addEventHandler);
\ No newline at end of file
diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index f15b4ec109..bdfbedb429 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -21,7 +21,6 @@ PREP(adjustPainLevel);
 PREP(canAccessMedicalEquipment);
 PREP(canTreat);
 PREP(canTreatCached);
-PREP(createLitter);
 PREP(determineIfFatal);
 PREP(getBloodLoss);
 PREP(getBloodPressure);
@@ -98,6 +97,10 @@ PREP(moduleTreatmentConfiguration);
 PREP(copyDeadBody);
 PREP(requestWoundSync);
 
+// Litter handling functionality test
+PREP(createLitter);
+PREP(_handleCreateLitter);
+
 GVAR(injuredUnitCollection) = [];
 GVAR(IVBags) = [];
 
diff --git a/addons/medical/functions/fnc__handleCreateLitter.sqf b/addons/medical/functions/fnc__handleCreateLitter.sqf
new file mode 100644
index 0000000000..e7751e153b
--- /dev/null
+++ b/addons/medical/functions/fnc__handleCreateLitter.sqf
@@ -0,0 +1,115 @@
+/*
+ * Author: Glowbal
+ * Spawns litter for the treatment action on the ground around the target
+ *
+ * Arguments:
+ * 0: The target <OBJECT>
+ * 1: The treatment classname <STRING>
+ *
+ * Return Value:
+ *
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+#define MIN_ENTRIES_LITTER_CONFIG 3
+
+if(hasInterface) then {
+    private ["_config", "_litter", "_createLitter", "_litterObject", "_position", "_createdLitter"];
+    PARAMS_6(_caller,_target,_selectionName,_className,_usersOfItems);
+    
+    _caller = _this select 0;
+    _target = _this select 1;
+    _selectionName = _this select 2;
+    _className = _this select 3;
+    _usersOfItems = _this select 5;
+
+    if !(GVAR(allowLitterCreation)) exitwith {};
+    if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
+
+    _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className);
+    if (GVAR(level) >= 2) then {
+        _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className);
+    };
+    if !(isClass _config) exitwith {false};
+
+
+    if !(isArray (_config >> "litter")) exitwith {};
+    _litter = getArray (_config >> "litter");
+
+    _createLitter = {
+        _position = getPos (_this select 0);
+        _litterClass = _this select 1;
+        _litterObject = createVehicle [_litterClass, _position, [], 0, "NONE"];
+        if (random(1) >= 0.5) then {
+            _litterObject setPos [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
+        } else {
+            _litterObject setPos [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
+        };
+        _litterObject setDir (random 360);
+        _litterObject;
+    };
+
+    if (isnil QGVAR(allCreatedLitter)) then {
+        GVAR(allCreatedLitter) = [];
+        GVAR(litterPFHRunning) = false;
+    };
+
+    _createdLitter = [];
+    {
+        if (typeName _x == "ARRAY") then {
+            if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {};
+            private ["_selection", "_litterCondition", "_litterOptions"];
+            _selection = _x select 0;
+            if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower.
+                _litterCondition = _x select 1;
+                _litterOptions = _x select 2;
+
+                if (isnil _litterCondition) then {
+                    _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}};
+                } else {
+                    _litterCondition = missionNamespace getvariable _litterCondition;
+                };
+                if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {};
+
+                if (typeName _litterOptions == "ARRAY") then {
+                    // Loop through through the litter options and place the litter
+                    {
+                        if (typeName _x == "ARRAY" && {(count _x > 0)}) then {
+                            _createdLitter pushback ([_target, _x select (floor(random(count _x)))] call _createLitter);
+                        };
+                        if (typeName _x == "STRING") then {
+                            _createdLitter pushback ([_target, _x] call _createLitter);
+                        };
+                    }foreach _litterOptions;
+                };
+            };
+        };
+    }foreach _litter;
+
+    if (GVAR(litterCleanUpDelay) >= 0) then {
+        GVAR(allCreatedLitter) pushback [time, GVAR(litterCleanUpDelay), _createdLitter];
+    };
+
+    if !(GVAR(litterPFHRunning)) then {
+        GVAR(litterPFHRunning) = true;
+        [{
+            {
+                if (time - (_x select 0) >= (_x select 1)) then {
+                    {
+                        deleteVehicle _x;
+                    }foreach (_this select 2);
+                    GVAR(allCreatedLitter) set[_foreachIndex, objNull];
+                };
+            }foreach GVAR(allCreatedLitter);
+            GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+
+            if (count GVAR(allCreatedLitter) == 0) exitwith {
+                GVAR(litterPFHRunning) = false;
+                [_this select 1] call CBA_fnc_removePerFrameHandler;
+            };
+        }, 30, []] call CBA_fnc_addPerFrameHandler;
+    };
+};
\ No newline at end of file
diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf
index 570c6d63d3..edc16c186e 100644
--- a/addons/medical/functions/fnc_createLitter.sqf
+++ b/addons/medical/functions/fnc_createLitter.sqf
@@ -1,10 +1,8 @@
 /*
- * Author: Glowbal
- * Spawns litter for the treatment action on the ground around the target
+ * Author: jaynus
  *
  * Arguments:
- * 0: The target <OBJECT>
- * 1: The treatment classname <STRING>
+ * 
  *
  * Return Value:
  *
@@ -14,98 +12,5 @@
 
 #include "script_component.hpp"
 
-#define MIN_ENTRIES_LITTER_CONFIG 3
-
-private ["_target", "_className", "_config", "_litter", "_createLitter", "_litterObject", "_position", "_createdLitter"];
-_caller = _this select 0;
-_target = _this select 1;
-_selectionName = _this select 2;
-_className = _this select 3;
-_usersOfItems = _this select 5;
-
-if !(GVAR(allowLitterCreation)) exitwith {};
-if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
-
-_config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className);
-if (GVAR(level) >= 2) then {
-    _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className);
-};
-if !(isClass _config) exitwith {false};
-
-
-if !(isArray (_config >> "litter")) exitwith {};
-_litter = getArray (_config >> "litter");
-
-_createLitter = {
-    _position = getPos (_this select 0);
-    _litterClass = _this select 1;
-    _litterObject = createVehicle [_litterClass, _position, [], 0, "NONE"];
-    if (random(1) >= 0.5) then {
-        _litterObject setPos [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
-    } else {
-        _litterObject setPos [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
-    };
-    _litterObject setDir (random 360);
-    _litterObject;
-};
-
-if (isnil QGVAR(allCreatedLitter)) then {
-    GVAR(allCreatedLitter) = [];
-    GVAR(litterPFHRunning) = false;
-};
-
-_createdLitter = [];
-{
-    if (typeName _x == "ARRAY") then {
-        if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {};
-        private ["_selection", "_litterCondition", "_litterOptions"];
-        _selection = _x select 0;
-        if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower.
-            _litterCondition = _x select 1;
-            _litterOptions = _x select 2;
-
-            if (isnil _litterCondition) then {
-                _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}};
-            } else {
-                _litterCondition = missionNamespace getvariable _litterCondition;
-            };
-            if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {};
-
-            if (typeName _litterOptions == "ARRAY") then {
-                // Loop through through the litter options and place the litter
-                {
-                    if (typeName _x == "ARRAY" && {(count _x > 0)}) then {
-                        _createdLitter pushback ([_target, _x select (floor(random(count _x)))] call _createLitter);
-                    };
-                    if (typeName _x == "STRING") then {
-                        _createdLitter pushback ([_target, _x] call _createLitter);
-                    };
-                }foreach _litterOptions;
-            };
-        };
-    };
-}foreach _litter;
-
-if (GVAR(litterCleanUpDelay) >= 0) then {
-    GVAR(allCreatedLitter) pushback [time, GVAR(litterCleanUpDelay), _createdLitter];
-};
-
-if !(GVAR(litterPFHRunning)) then {
-    GVAR(litterPFHRunning) = true;
-    [{
-        {
-            if (time - (_x select 0) >= (_x select 1)) then {
-                {
-                    deleteVehicle _x;
-                }foreach (_this select 2);
-                GVAR(allCreatedLitter) set[_foreachIndex, objNull];
-            };
-        }foreach GVAR(allCreatedLitter);
-        GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
-
-        if (count GVAR(allCreatedLitter) == 0) exitwith {
-            GVAR(litterPFHRunning) = false;
-            [_this select 1] call CBA_fnc_removePerFrameHandler;
-        };
-    }, 30, []] call CBA_fnc_addPerFrameHandler;
-};
+// Create a synchronized, 30 second TTL event for litter
+[QGVAR(createLitter), _this, 30] call EFUNC(common,syncedEvent);
\ No newline at end of file

From c952a97de83ba462ffcb76630af1addfe6e2ba40 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Fri, 17 Apr 2015 19:38:05 -0700
Subject: [PATCH 128/257] Revert "synced events implemented into litter."

This reverts commit 32df4a2adcd827eff4b0cf3cff08f2b240571c9f.
---
 addons/medical/XEH_postInit.sqf               |   4 -
 addons/medical/XEH_preInit.sqf                |   5 +-
 .../functions/fnc__handleCreateLitter.sqf     | 115 ------------------
 addons/medical/functions/fnc_createLitter.sqf | 103 +++++++++++++++-
 4 files changed, 100 insertions(+), 127 deletions(-)
 delete mode 100644 addons/medical/functions/fnc__handleCreateLitter.sqf

diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 68e3b7965b..309bb2a888 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -265,7 +265,3 @@ if (USE_WOUND_EVENT_SYNC) then {
 ["playerInventoryChanged", {
     [ACE_player] call FUNC(itemCheck);
 }] call EFUNC(common,addEventHandler);
-
-
-// Synchronized litter creation
-[QGVAR(createLitter), FUNC(_handleCreateLitter)] call EFUNC(common,addEventHandler);
\ No newline at end of file
diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index bdfbedb429..f15b4ec109 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -21,6 +21,7 @@ PREP(adjustPainLevel);
 PREP(canAccessMedicalEquipment);
 PREP(canTreat);
 PREP(canTreatCached);
+PREP(createLitter);
 PREP(determineIfFatal);
 PREP(getBloodLoss);
 PREP(getBloodPressure);
@@ -97,10 +98,6 @@ PREP(moduleTreatmentConfiguration);
 PREP(copyDeadBody);
 PREP(requestWoundSync);
 
-// Litter handling functionality test
-PREP(createLitter);
-PREP(_handleCreateLitter);
-
 GVAR(injuredUnitCollection) = [];
 GVAR(IVBags) = [];
 
diff --git a/addons/medical/functions/fnc__handleCreateLitter.sqf b/addons/medical/functions/fnc__handleCreateLitter.sqf
deleted file mode 100644
index e7751e153b..0000000000
--- a/addons/medical/functions/fnc__handleCreateLitter.sqf
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Author: Glowbal
- * Spawns litter for the treatment action on the ground around the target
- *
- * Arguments:
- * 0: The target <OBJECT>
- * 1: The treatment classname <STRING>
- *
- * Return Value:
- *
- *
- * Public: No
- */
-
-#include "script_component.hpp"
-
-#define MIN_ENTRIES_LITTER_CONFIG 3
-
-if(hasInterface) then {
-    private ["_config", "_litter", "_createLitter", "_litterObject", "_position", "_createdLitter"];
-    PARAMS_6(_caller,_target,_selectionName,_className,_usersOfItems);
-    
-    _caller = _this select 0;
-    _target = _this select 1;
-    _selectionName = _this select 2;
-    _className = _this select 3;
-    _usersOfItems = _this select 5;
-
-    if !(GVAR(allowLitterCreation)) exitwith {};
-    if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
-
-    _config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className);
-    if (GVAR(level) >= 2) then {
-        _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className);
-    };
-    if !(isClass _config) exitwith {false};
-
-
-    if !(isArray (_config >> "litter")) exitwith {};
-    _litter = getArray (_config >> "litter");
-
-    _createLitter = {
-        _position = getPos (_this select 0);
-        _litterClass = _this select 1;
-        _litterObject = createVehicle [_litterClass, _position, [], 0, "NONE"];
-        if (random(1) >= 0.5) then {
-            _litterObject setPos [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
-        } else {
-            _litterObject setPos [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
-        };
-        _litterObject setDir (random 360);
-        _litterObject;
-    };
-
-    if (isnil QGVAR(allCreatedLitter)) then {
-        GVAR(allCreatedLitter) = [];
-        GVAR(litterPFHRunning) = false;
-    };
-
-    _createdLitter = [];
-    {
-        if (typeName _x == "ARRAY") then {
-            if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {};
-            private ["_selection", "_litterCondition", "_litterOptions"];
-            _selection = _x select 0;
-            if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower.
-                _litterCondition = _x select 1;
-                _litterOptions = _x select 2;
-
-                if (isnil _litterCondition) then {
-                    _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}};
-                } else {
-                    _litterCondition = missionNamespace getvariable _litterCondition;
-                };
-                if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {};
-
-                if (typeName _litterOptions == "ARRAY") then {
-                    // Loop through through the litter options and place the litter
-                    {
-                        if (typeName _x == "ARRAY" && {(count _x > 0)}) then {
-                            _createdLitter pushback ([_target, _x select (floor(random(count _x)))] call _createLitter);
-                        };
-                        if (typeName _x == "STRING") then {
-                            _createdLitter pushback ([_target, _x] call _createLitter);
-                        };
-                    }foreach _litterOptions;
-                };
-            };
-        };
-    }foreach _litter;
-
-    if (GVAR(litterCleanUpDelay) >= 0) then {
-        GVAR(allCreatedLitter) pushback [time, GVAR(litterCleanUpDelay), _createdLitter];
-    };
-
-    if !(GVAR(litterPFHRunning)) then {
-        GVAR(litterPFHRunning) = true;
-        [{
-            {
-                if (time - (_x select 0) >= (_x select 1)) then {
-                    {
-                        deleteVehicle _x;
-                    }foreach (_this select 2);
-                    GVAR(allCreatedLitter) set[_foreachIndex, objNull];
-                };
-            }foreach GVAR(allCreatedLitter);
-            GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
-
-            if (count GVAR(allCreatedLitter) == 0) exitwith {
-                GVAR(litterPFHRunning) = false;
-                [_this select 1] call CBA_fnc_removePerFrameHandler;
-            };
-        }, 30, []] call CBA_fnc_addPerFrameHandler;
-    };
-};
\ No newline at end of file
diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf
index edc16c186e..570c6d63d3 100644
--- a/addons/medical/functions/fnc_createLitter.sqf
+++ b/addons/medical/functions/fnc_createLitter.sqf
@@ -1,8 +1,10 @@
 /*
- * Author: jaynus
+ * Author: Glowbal
+ * Spawns litter for the treatment action on the ground around the target
  *
  * Arguments:
- * 
+ * 0: The target <OBJECT>
+ * 1: The treatment classname <STRING>
  *
  * Return Value:
  *
@@ -12,5 +14,98 @@
 
 #include "script_component.hpp"
 
-// Create a synchronized, 30 second TTL event for litter
-[QGVAR(createLitter), _this, 30] call EFUNC(common,syncedEvent);
\ No newline at end of file
+#define MIN_ENTRIES_LITTER_CONFIG 3
+
+private ["_target", "_className", "_config", "_litter", "_createLitter", "_litterObject", "_position", "_createdLitter"];
+_caller = _this select 0;
+_target = _this select 1;
+_selectionName = _this select 2;
+_className = _this select 3;
+_usersOfItems = _this select 5;
+
+if !(GVAR(allowLitterCreation)) exitwith {};
+if (vehicle _caller != _caller || vehicle _target != _target) exitwith {};
+
+_config = (configFile >> "ACE_Medical_Actions" >> "Basic" >> _className);
+if (GVAR(level) >= 2) then {
+    _config = (configFile >> "ACE_Medical_Actions" >> "Advanced" >> _className);
+};
+if !(isClass _config) exitwith {false};
+
+
+if !(isArray (_config >> "litter")) exitwith {};
+_litter = getArray (_config >> "litter");
+
+_createLitter = {
+    _position = getPos (_this select 0);
+    _litterClass = _this select 1;
+    _litterObject = createVehicle [_litterClass, _position, [], 0, "NONE"];
+    if (random(1) >= 0.5) then {
+        _litterObject setPos [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
+    } else {
+        _litterObject setPos [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
+    };
+    _litterObject setDir (random 360);
+    _litterObject;
+};
+
+if (isnil QGVAR(allCreatedLitter)) then {
+    GVAR(allCreatedLitter) = [];
+    GVAR(litterPFHRunning) = false;
+};
+
+_createdLitter = [];
+{
+    if (typeName _x == "ARRAY") then {
+        if (count _x < MIN_ENTRIES_LITTER_CONFIG) exitwith {};
+        private ["_selection", "_litterCondition", "_litterOptions"];
+        _selection = _x select 0;
+        if (toLower _selection in [toLower _selectionName, "all"]) then { // in is case sensitve. We can be forgiving here, so lets use toLower.
+            _litterCondition = _x select 1;
+            _litterOptions = _x select 2;
+
+            if (isnil _litterCondition) then {
+                _litterCondition = if (_litterCondition != "") then {compile _litterCondition} else {{true}};
+            } else {
+                _litterCondition = missionNamespace getvariable _litterCondition;
+            };
+            if !([_caller, _target, _selectionName, _className, _usersOfItems] call _litterCondition) exitwith {};
+
+            if (typeName _litterOptions == "ARRAY") then {
+                // Loop through through the litter options and place the litter
+                {
+                    if (typeName _x == "ARRAY" && {(count _x > 0)}) then {
+                        _createdLitter pushback ([_target, _x select (floor(random(count _x)))] call _createLitter);
+                    };
+                    if (typeName _x == "STRING") then {
+                        _createdLitter pushback ([_target, _x] call _createLitter);
+                    };
+                }foreach _litterOptions;
+            };
+        };
+    };
+}foreach _litter;
+
+if (GVAR(litterCleanUpDelay) >= 0) then {
+    GVAR(allCreatedLitter) pushback [time, GVAR(litterCleanUpDelay), _createdLitter];
+};
+
+if !(GVAR(litterPFHRunning)) then {
+    GVAR(litterPFHRunning) = true;
+    [{
+        {
+            if (time - (_x select 0) >= (_x select 1)) then {
+                {
+                    deleteVehicle _x;
+                }foreach (_this select 2);
+                GVAR(allCreatedLitter) set[_foreachIndex, objNull];
+            };
+        }foreach GVAR(allCreatedLitter);
+        GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+
+        if (count GVAR(allCreatedLitter) == 0) exitwith {
+            GVAR(litterPFHRunning) = false;
+            [_this select 1] call CBA_fnc_removePerFrameHandler;
+        };
+    }, 30, []] call CBA_fnc_addPerFrameHandler;
+};

From 71e62711c6cbdf149a180508254906f06dfd73a8 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 22:02:23 -0500
Subject: [PATCH 129/257] #731 - stop error if target offscreen

---
 addons/common/functions/fnc_worldToScreenBounds.sqf | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/addons/common/functions/fnc_worldToScreenBounds.sqf b/addons/common/functions/fnc_worldToScreenBounds.sqf
index 7b88350c6a..afb5817d81 100644
--- a/addons/common/functions/fnc_worldToScreenBounds.sqf
+++ b/addons/common/functions/fnc_worldToScreenBounds.sqf
@@ -40,12 +40,13 @@ if (true) then {
 
 	{
 		_ppos = worldToScreen (_object modelToWorld _x);
-		_pposX = _ppos select 0;
-		_pposY = _ppos select 1;
-		if (_pposX < _minX) then {_minX = _pposX};
-		if (_pposX > _maxX) then {_maxX = _pposX};
-		if (_pposY < _minY) then {_minY = _pposY};
-		if (_pposY > _maxY) then {_maxY = _pposY};
+        if (count _ppos >= 2) then {
+            EXPLODE_2_PVT(_ppos,_pposX,_pposY);
+            if (_pposX < _minX) then {_minX = _pposX};
+            if (_pposX > _maxX) then {_maxX = _pposX};
+            if (_pposY < _minY) then {_minY = _pposY};
+            if (_pposY > _maxY) then {_maxY = _pposY};
+        }; //else - what to do if it is offscreen?
 	} forEach _boundsCorners;
 };
 

From db4de5100d63d2c76d4753d483113efed30877a2 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Fri, 17 Apr 2015 20:23:39 -0700
Subject: [PATCH 130/257] #552 - Copy important files and extensions

---
 tools/make.py | 62 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 57 insertions(+), 5 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index 166d21c49d..380c29faa7 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -284,6 +284,50 @@ def print_yellow(msg):
 	print(msg)
 	color("reset")
 
+	
+def copy_important_files(source_dir,destination_dir):
+	
+	originalDir = os.getcwd()
+	importantFiles = ["mod.cpp",
+	"README.md",
+	"AUTHORS.txt",
+	"LICENSE",
+	"logo_ace3_ca.paa"
+	]
+	
+	print_yellow ("source_dir: " + source_dir)
+	print_yellow("destination_dir: " + destination_dir)
+	
+	#copy importantFiles
+	try:
+		print_blue("Searching for important files in " + source_dir)
+		for file in importantFiles:
+			print_green("Copying file => " + os.path.join(source_dir,file))
+			shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file))
+	except:
+		print_error("COPYING IMPORTANT FILES.")
+		raise
+	
+	print("")
+	
+	#copy all extension dlls
+	try:
+		os.chdir(os.path.join(source_dir))
+		print_blue("Searching for DLLs in " + os.getcwd())
+		filenames = glob.glob("*.dll")
+		
+		if not filenames:
+			print ("Empty SET")
+			
+		for dll in filenames:
+			print_green("Copying dll => " + os.path.join(source_dir,dll))
+			if os.path.isfile(dll):
+				shutil.copyfile(os.path.join(source_dir,dll),os.path.join(destination_dir,dll))
+	except:
+		print_error("COPYING DLL FILES.")
+		raise
+	finally:
+		os.chdir(originalDir)
 ###############################################################################
 
 def main(argv):
@@ -436,27 +480,36 @@ See the make.cfg file for additional build options.
 
 		# Release/build directory, relative to script dir
 		release_dir = cfg.get(make_target, "release_dir", fallback="release")
-
+		
 		# Project PBO file prefix (files are renamed to prefix_name.pbo)
 		pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None)
 
 		# Project module Root
 		module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
 		module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
+		ace_optionals_root = os.path.join(module_root_parent, "optionals")
 		print_green ("module_root: " + module_root)
+		
 		if (os.path.isdir(module_root)):
 			os.chdir(module_root)
 		else:
 			print_error ("Directory " + module_root + " does not exist.")
 			sys.exit()
 
+		if (os.path.isdir(ace_optionals_root)):
+			print_green ("ace_optionals_root: " + ace_optionals_root)
+		else:
+			print_error ("Directory " + ace_optionals_root + " does not exist.")
+			sys.exit()
+		
+		print_green ("release_dir: " + release_dir)
+		copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
+		
 	except:
 		raise
 		print_error("Could not parse make.cfg.")
 		sys.exit(1)
 
-
-
 	# See if we have been given specific modules to build from command line.
 	if len(argv) > 1 and not make_release:
 		arg_modules = True
@@ -501,7 +554,7 @@ See the make.cfg file for additional build options.
 
 	# Get list of subdirs in make root.
 	dirs = next(os.walk(module_root))[1]
-
+	
 	# Autodetect what directories to build.
 	if module_autodetect and not arg_modules:
 		modules = []
@@ -670,7 +723,6 @@ See the make.cfg file for additional build options.
 					else:
 						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
 
-				print_yellow(cmd)
 				color("grey")
 				if quiet:
 					devnull = open(os.devnull, 'w')

From caef5c105f9cd290bc1cc34d552d55a2d09c0a70 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Fri, 17 Apr 2015 22:40:37 -0500
Subject: [PATCH 131/257] More Privates

---
 addons/goggles/XEH_postInit.sqf                             | 1 +
 addons/goggles/functions/fnc_applyDirtEffect.sqf            | 2 +-
 addons/goggles/functions/fnc_clearGlasses.sqf               | 3 ++-
 addons/goggles/functions/fnc_getExplosionIndex.sqf          | 2 +-
 addons/goggles/functions/fnc_isGogglesVisible.sqf           | 6 ++++--
 addons/hearing/functions/fnc_firedNear.sqf                  | 2 +-
 addons/hearing/functions/fnc_moduleHearing.sqf              | 3 +--
 addons/hearing/functions/fnc_updateVolume.sqf               | 2 ++
 addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf     | 2 ++
 addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf  | 2 +-
 addons/logistics_wirecutter/functions/fnc_interactEH.sqf    | 2 +-
 addons/magazinerepack/functions/fnc_getMagazineChildren.sqf | 2 +-
 .../magazinerepack/functions/fnc_simulateRepackEvents.sqf   | 2 +-
 addons/map/functions/fnc_blueForceTrackingModule.sqf        | 4 +---
 addons/map/functions/fnc_blueForceTrackingUpdate.sqf        | 2 ++
 addons/map/functions/fnc_determineMapLight.sqf              | 2 +-
 addons/map/functions/fnc_determineZoom.sqf                  | 2 +-
 addons/map/functions/fnc_moduleMap.sqf                      | 3 +--
 addons/overheating/functions/fnc_checkTemperature.sqf       | 2 ++
 addons/overheating/functions/fnc_displayTemperature.sqf     | 2 +-
 addons/overheating/functions/fnc_overheat.sqf               | 5 ++---
 addons/reload/functions/fnc_canCheckAmmo.sqf                | 2 ++
 addons/reload/functions/fnc_displayAmmo.sqf                 | 2 +-
 addons/reload/functions/fnc_startLinkingBelt.sqf            | 4 ++--
 24 files changed, 35 insertions(+), 26 deletions(-)

diff --git a/addons/goggles/XEH_postInit.sqf b/addons/goggles/XEH_postInit.sqf
index ee62dfdd66..4fcf4fc055 100644
--- a/addons/goggles/XEH_postInit.sqf
+++ b/addons/goggles/XEH_postInit.sqf
@@ -56,6 +56,7 @@ FUNC(CheckGlasses) = {
 };
 
 player addEventHandler ["Explosion", {
+    private "_effects";
     if (alive ace_player) then {
         call FUNC(ApplyDirtEffect);
         if (GETBROKEN) exitWith {};
diff --git a/addons/goggles/functions/fnc_applyDirtEffect.sqf b/addons/goggles/functions/fnc_applyDirtEffect.sqf
index 182ffac910..068f7639d2 100644
--- a/addons/goggles/functions/fnc_applyDirtEffect.sqf
+++ b/addons/goggles/functions/fnc_applyDirtEffect.sqf
@@ -16,7 +16,7 @@
 #include "script_component.hpp"
 
 if (cameraOn != ace_player || {call FUNC(externalCamera)}) exitWith{false};
-private "_dirtImage";
+private ["_dirtImage", "_applied", "_effects"];
 _effects = GETGLASSES(ace_player);
 _effects set [DIRT, true];
 SETGLASSES(ace_player,_effects);
diff --git a/addons/goggles/functions/fnc_clearGlasses.sqf b/addons/goggles/functions/fnc_clearGlasses.sqf
index b70b962940..7fcb05a511 100644
--- a/addons/goggles/functions/fnc_clearGlasses.sqf
+++ b/addons/goggles/functions/fnc_clearGlasses.sqf
@@ -16,7 +16,8 @@
  */
 #include "script_component.hpp"
 
-private "_broken";
+private ["_broken", "_effects"];
+
 _broken = GETBROKEN;
 _effects = GLASSESDEFAULT;
 _effects set [BROKEN, _broken];
diff --git a/addons/goggles/functions/fnc_getExplosionIndex.sqf b/addons/goggles/functions/fnc_getExplosionIndex.sqf
index 5519bf397c..6e16085b2c 100644
--- a/addons/goggles/functions/fnc_getExplosionIndex.sqf
+++ b/addons/goggles/functions/fnc_getExplosionIndex.sqf
@@ -9,7 +9,7 @@
  * The rating [0-3] <NUMBER>
  *
  * Example:
- * _rating = 0.05 call ace_goggles_fnc_getExplosionIndex;
+ * 0.05 call ace_goggles_fnc_getExplosionIndex;
  *
  * Public: No
  */
diff --git a/addons/goggles/functions/fnc_isGogglesVisible.sqf b/addons/goggles/functions/fnc_isGogglesVisible.sqf
index 9206965995..253a82f0a3 100644
--- a/addons/goggles/functions/fnc_isGogglesVisible.sqf
+++ b/addons/goggles/functions/fnc_isGogglesVisible.sqf
@@ -14,8 +14,10 @@
  * Public: Yes
  */
 #include "script_component.hpp"
-private ["_currentGlasses", "_result", "_unit"];
-_unit = _this select 0;
+
+PARAMS_1(_unit);
+
+private ["_currentGlasses", "_result", "_position", "_visible"];
 
 _currentGlasses = goggles _unit;
 _result = false;
diff --git a/addons/hearing/functions/fnc_firedNear.sqf b/addons/hearing/functions/fnc_firedNear.sqf
index 72776b68c6..7e9472e72a 100644
--- a/addons/hearing/functions/fnc_firedNear.sqf
+++ b/addons/hearing/functions/fnc_firedNear.sqf
@@ -21,7 +21,7 @@
  */
 #include "script_component.hpp"
 
-private ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_silencer", "_audibleFireCoef", "_loudness", "_strength"];
+private ["_unit", "_firer", "_distance", "_weapon", "_muzzle", "_mode", "_ammo", "_silencer", "_audibleFireCoef", "_loudness", "_strength", "_audibleFire", "_audibleFireTime", "_audibleFireTimeCoef"];
 
 _unit = _this select 0;
 _firer = _this select 1;
diff --git a/addons/hearing/functions/fnc_moduleHearing.sqf b/addons/hearing/functions/fnc_moduleHearing.sqf
index d7b43e0092..a560a712a6 100644
--- a/addons/hearing/functions/fnc_moduleHearing.sqf
+++ b/addons/hearing/functions/fnc_moduleHearing.sqf
@@ -10,8 +10,7 @@
  */
 #include "script_component.hpp"
 
-_logic = _this select 0;
-_activated = _this select 2;
+PARAMS_3(_logic,_units,_activated);
 
 if !(_activated) exitWith {};
 
diff --git a/addons/hearing/functions/fnc_updateVolume.sqf b/addons/hearing/functions/fnc_updateVolume.sqf
index dd51f30e19..a0ca6af457 100644
--- a/addons/hearing/functions/fnc_updateVolume.sqf
+++ b/addons/hearing/functions/fnc_updateVolume.sqf
@@ -18,6 +18,8 @@
 #define STRENGHTODEAFNESS 3
 #define MAXDEAFNESS 1.1
 
+private ["_recoverRate", "_volume"];
+
 // Exit if combat deafness is disabled
 if !(GVAR(enableCombatDeafness)) exitWith {};
 
diff --git a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf
index b5c6664657..6fda0fed10 100644
--- a/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf
+++ b/addons/logistics_uavbattery/functions/fnc_refuelUAV.sqf
@@ -18,6 +18,8 @@
 
 PARAMS_2(_caller,_target);
 
+private ["_onFinish", "_onFailure"];
+
 if (!(_this call FUNC(canRefuelUAV))) exitWith {};
 
 _onFinish = {
diff --git a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
index 5153176de2..0cab7ab461 100644
--- a/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_cutDownFence.sqf
@@ -17,7 +17,7 @@
 #include "script_component.hpp"
 
 #define SOUND_CLIP_TIME_SPACEING    1.5
-private ["_timeToCut"];
+private ["_timeToCut", "_progressCheck"];
 
 PARAMS_2(_unit,_fenceObject);
 if (_unit != ACE_player) exitWith {};
diff --git a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
index ddd180047c..efb8f292c9 100644
--- a/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
+++ b/addons/logistics_wirecutter/functions/fnc_interactEH.sqf
@@ -25,7 +25,7 @@ if (_interactionType != 0) exitWith {};
 if (!("ACE_wirecutter" in (items ace_player))) exitWith {};
 
 [{
-    private ["_fncStatement", "_attachedFence", "_fncCondition", "_helper"];
+    private ["_fncStatement", "_attachedFence", "_fncCondition", "_helper", "_action"];
     PARAMS_2(_args,_pfID);
     EXPLODE_3_PVT(_args,_setPosition,_addedHelpers,_fencesHelped);
 
diff --git a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
index 7a2b81371c..fbd07cf31a 100644
--- a/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
+++ b/addons/magazinerepack/functions/fnc_getMagazineChildren.sqf
@@ -28,7 +28,7 @@ _unitMagCounts = [];
     _xFullMagazineCount = getNumber (configfile >> "CfgMagazines" >> _xClassname >> "count");
 
     //for every partial magazine, that is either in inventory or can be moved there
-    if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {_player canAdd _magazineClassname}}) then {
+    if ((_xCount < _xFullMagazineCount) && {_xCount > 0} && {(!_xLoaded) || {_player canAdd _xClassname}}) then {
         _index = _unitMagazines find _xClassname;
         if (_index == -1) then {
             _unitMagazines pushBack _xClassname;
diff --git a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
index fb37a0dd4e..4ef69044da 100644
--- a/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
+++ b/addons/magazinerepack/functions/fnc_simulateRepackEvents.sqf
@@ -19,7 +19,7 @@
  */
 #include "script_component.hpp"
 
-private ["_newMagFnc", "_time", "_events", "_swapAmmoFnc", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded"];
+private ["_newMagFnc", "_time", "_events", "_swapAmmoFnc", "_ammoSwaped", "_lowIndex", "_highIndex", "_ammoToTransfer", "_ammoAvailable", "_ammoNeeded", "_swapProgress"];
 
 PARAMS_3(_fullMagazineCount,_arrayOfAmmoCounts,_isBelt);
 
diff --git a/addons/map/functions/fnc_blueForceTrackingModule.sqf b/addons/map/functions/fnc_blueForceTrackingModule.sqf
index cecfd348d2..c156c9527d 100644
--- a/addons/map/functions/fnc_blueForceTrackingModule.sqf
+++ b/addons/map/functions/fnc_blueForceTrackingModule.sqf
@@ -14,9 +14,7 @@
 
 if !(hasInterface) exitWith {};
 
-_logic = _this select 0;
-_units = _this select 1;
-_activated = _this select 2;
+PARAMS_3(_logic,_units,_activated);
 
 if !(_activated) exitWith {};
 
diff --git a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf
index 030daeaa36..edbe484f04 100644
--- a/addons/map/functions/fnc_blueForceTrackingUpdate.sqf
+++ b/addons/map/functions/fnc_blueForceTrackingUpdate.sqf
@@ -1,5 +1,7 @@
 #include "script_component.hpp"
 
+private ["_groupsToDrawMarkers", "_playerSide", "_anyPlayers", "_markerType", "_colour", "_marker"];
+
 // Delete last set of markers (always)
 {
     deleteMarkerLocal _x;
diff --git a/addons/map/functions/fnc_determineMapLight.sqf b/addons/map/functions/fnc_determineMapLight.sqf
index fbc847c313..a5168bd8a1 100644
--- a/addons/map/functions/fnc_determineMapLight.sqf
+++ b/addons/map/functions/fnc_determineMapLight.sqf
@@ -15,7 +15,7 @@
 
 EXPLODE_1_PVT(_this,_unit);
 
-private ["_isEnclosed","_nearObjects","_light","_ll","_flashlight"];
+private ["_isEnclosed","_nearObjects","_light","_ll","_flashlight", "_flareTint", "_lightTint", "_l"];
 
 // Blend two colors
 _fnc_blendColor = {
diff --git a/addons/map/functions/fnc_determineZoom.sqf b/addons/map/functions/fnc_determineZoom.sqf
index fdc620b417..345fc68583 100644
--- a/addons/map/functions/fnc_determineZoom.sqf
+++ b/addons/map/functions/fnc_determineZoom.sqf
@@ -12,7 +12,7 @@
 */
 #include "script_component.hpp"
 
-private ["_grids", "_fourSize", "_sixSize", "_continue", "_size"];
+private ["_grids", "_fourSize", "_sixSize", "_continue", "_size", "_i"];
 _grids = configFile >> "CfgWorlds" >> worldName >> "Grid";
 _fourSize = -1;
 _sixSize = -1;
diff --git a/addons/map/functions/fnc_moduleMap.sqf b/addons/map/functions/fnc_moduleMap.sqf
index a22bbbb385..4bcdb69269 100644
--- a/addons/map/functions/fnc_moduleMap.sqf
+++ b/addons/map/functions/fnc_moduleMap.sqf
@@ -10,8 +10,7 @@
  */
 #include "script_component.hpp"
 
-_logic = _this select 0;
-_activated = _this select 2;
+PARAMS_3(_logic,_units,_activated);
 
 if !(_activated) exitWith {};
 
diff --git a/addons/overheating/functions/fnc_checkTemperature.sqf b/addons/overheating/functions/fnc_checkTemperature.sqf
index 6c15068815..0b811f9792 100644
--- a/addons/overheating/functions/fnc_checkTemperature.sqf
+++ b/addons/overheating/functions/fnc_checkTemperature.sqf
@@ -18,6 +18,8 @@
 
 EXPLODE_2_PVT(_this,_player,_weapon);
 
+private ["_action"];
+
 // Play animation and report temperature
 _action = getText (configFile >> "CfgWeapons" >> _weapon >> "ACE_checkTemperatureAction");
 
diff --git a/addons/overheating/functions/fnc_displayTemperature.sqf b/addons/overheating/functions/fnc_displayTemperature.sqf
index 6112bea178..3012e480e3 100644
--- a/addons/overheating/functions/fnc_displayTemperature.sqf
+++ b/addons/overheating/functions/fnc_displayTemperature.sqf
@@ -16,7 +16,7 @@
 EXPLODE_2_PVT(_this,_player,_weapon);
 
 // Calculate cool down of weapon since last shot
-private ["_string", "_overheat", "_temperature", "_time", "_barrelMass"];
+private ["_string", "_overheat", "_temperature", "_time", "_barrelMass", "_a"];
 _string = format [QGVAR(%1), _weapon];
 _overheat = _player getVariable [_string, [0, 0]];
 _temperature = _overheat select 0;
diff --git a/addons/overheating/functions/fnc_overheat.sqf b/addons/overheating/functions/fnc_overheat.sqf
index 2468265f8f..05e5bbba9c 100644
--- a/addons/overheating/functions/fnc_overheat.sqf
+++ b/addons/overheating/functions/fnc_overheat.sqf
@@ -17,7 +17,8 @@
  */
 #include "\z\ace\addons\overheating\script_component.hpp"
 
-private ["_unit", "_weapon", "_ammo", "_projectile"];
+private ["_unit", "_weapon", "_ammo", "_projectile", "_velocity", "_variableName", "_overheat", "_temperature", "_time", "_bulletMass", "_energyIncrement", "_barrelMass", "_scaledTemperature", "_intensity", "_position", "_direction", "_dispersion", "_count", "_slowdownFactor", "_jamChance", "_surface"];
+
 _unit = _this select 0;
 _weapon = _this select 1;
 _ammo = _this select 4;
@@ -25,8 +26,6 @@ _projectile = _this select 6;
 
 _velocity = velocity _projectile;
 
-private ["_variableName", "_overheat", "_temperature", "_time", "_energyIncrement", "_barrelMass", "_scaledTemperature"];
-
 // each weapon has it's own variable. Can't store the temperature in the weapon since they are not objects unfortunately.
 _variableName = format [QGVAR(%1), _weapon];
 
diff --git a/addons/reload/functions/fnc_canCheckAmmo.sqf b/addons/reload/functions/fnc_canCheckAmmo.sqf
index 63c302bf07..4075e7a151 100644
--- a/addons/reload/functions/fnc_canCheckAmmo.sqf
+++ b/addons/reload/functions/fnc_canCheckAmmo.sqf
@@ -13,6 +13,8 @@
 
 EXPLODE_2_PVT(_this,_player,_target);
 
+private ["_magazineType", "_magazineCfg"];
+
 // Return true for static weapons if they have been fired once, @todo 1.40 this work-around doesn't work anymore
 if (_target isKindOf "StaticWeapon") exitWith {
     if (currentMagazine _target != "") exitWith {true};
diff --git a/addons/reload/functions/fnc_displayAmmo.sqf b/addons/reload/functions/fnc_displayAmmo.sqf
index 77578caa68..06f3a39da3 100644
--- a/addons/reload/functions/fnc_displayAmmo.sqf
+++ b/addons/reload/functions/fnc_displayAmmo.sqf
@@ -14,7 +14,7 @@
 
 EXPLODE_1_PVT(_this,_target);
 
-private ["_weapon","_muzzle","_magazine","_showNumber","_ammo","_maxRounds","_count","_text","_color","_picture"];
+private ["_weapon","_muzzle","_magazine","_showNumber","_ammo","_maxRounds","_count","_text","_color","_picture", "_a", "_string"];
 
 _weapon = currentWeapon _target;
 _muzzle = currentMuzzle _target;
diff --git a/addons/reload/functions/fnc_startLinkingBelt.sqf b/addons/reload/functions/fnc_startLinkingBelt.sqf
index 412fcabb97..8b9145c237 100644
--- a/addons/reload/functions/fnc_startLinkingBelt.sqf
+++ b/addons/reload/functions/fnc_startLinkingBelt.sqf
@@ -15,7 +15,7 @@ EXPLODE_2_PVT(_this,_player,_target);
 
 if (vehicle _target != _target) exitWith {false};
 
-private ["_magazineCfg","_magazineType"];
+private ["_magazineCfg","_magazineType", "_condition", "_onFailure", "_onFinish"];
 _magazineType = currentMagazine _target;
 _magazineCfg = configFile >> "CfgMagazines" >> _magazineType;
 if (getNumber (_magazineCfg >> "ACE_isBelt") == 0) exitWith {false};
@@ -54,7 +54,7 @@ _onFinish = {
 
 _onFailure = {
     EXPLODE_3_PVT((_this select 0),_player,_target,_magazine);
-    [_caller, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
+    [_player, "AmovPknlMstpSrasWrflDnon", 1] call EFUNC(common,doAnimation);
 
     // Add back the magazine with the former ammo count
     _player addMagazine _magazine;

From 9633547d6bf1e6e538baf50cc7b74a763065e0a4 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 09:26:47 +0200
Subject: [PATCH 132/257] tweak ability to climb

---
 addons/movement/functions/fnc_canClimb.sqf | 33 ++++++++++++++++++----
 1 file changed, 27 insertions(+), 6 deletions(-)

diff --git a/addons/movement/functions/fnc_canClimb.sqf b/addons/movement/functions/fnc_canClimb.sqf
index 27753d8a12..1bc0d43bd8 100644
--- a/addons/movement/functions/fnc_canClimb.sqf
+++ b/addons/movement/functions/fnc_canClimb.sqf
@@ -25,15 +25,36 @@ _dir = [sin _dir, cos _dir, 0];
 
 private ["_checkPos0beg", "_checkPos0end", "_checkPos1beg", "_checkPos1end"];
 
-_checkPos0beg = _pos vectorAdd [0, 0, 1.0];
+_checkPos0beg = _pos vectorAdd [0, 0, 0.9];
 _checkPos0end = _checkPos0beg vectorAdd (_dir vectorMultiply 1.3);
 
-_checkPos1beg = _pos vectorAdd [0, 0, 1.5];
-_checkPos1end = _checkPos1beg vectorAdd _dir;
+_checkPos1beg = _pos vectorAdd [0, 0, 1.75];
+_checkPos1end = _checkPos1beg vectorAdd (_dir vectorMultiply 1.3);
+
+_checkPos2beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 2.0];
+_checkPos2end = _checkPos2beg vectorAdd (_dir vectorMultiply 1.3);
+
+_checkPos3beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 2.0];
+_checkPos3end = _checkPos3beg vectorAdd (_dir vectorMultiply 1.3);
+
+_checkPos4beg = _pos vectorAdd [0.3 * (_dir select 1), 0.3 * -(_dir select 0), 1.5];
+_checkPos4end = _checkPos4beg vectorAdd (_dir vectorMultiply 1.3);
+
+_checkPos5beg = _pos vectorAdd [-0.2 * (_dir select 1), -0.2 * -(_dir select 0), 1.5];
+_checkPos5end = _checkPos5beg vectorAdd (_dir vectorMultiply 1.3);
 
 /*
-drawLine3D [ASLToATL _checkPos0beg, ASLToATL _checkPos0end, [1,0,0,1]];
+drawLine3D [ASLToATL _checkPos0beg, ASLToATL _checkPos0end, [0,1,0,1]];
 drawLine3D [ASLToATL _checkPos1beg, ASLToATL _checkPos1end, [1,0,0,1]];
- */
+drawLine3D [ASLToATL _checkPos2beg, ASLToATL _checkPos2end, [1,0.5,0.5,1]];
+drawLine3D [ASLToATL _checkPos3beg, ASLToATL _checkPos3end, [1,0.5,0.5,1]];
+drawLine3D [ASLToATL _checkPos4beg, ASLToATL _checkPos4end, [1,0.5,0.5,1]];
+drawLine3D [ASLToATL _checkPos5beg, ASLToATL _checkPos5end, [1,0.5,0.5,1]];
+*/
 
-lineIntersects [_checkPos0beg, _checkPos0end] && {!(lineIntersects [_checkPos1beg, _checkPos1end])}
+      lineIntersects [_checkPos0beg, _checkPos0end]
+&& {!(lineIntersects [_checkPos1beg, _checkPos1end])}
+&& {!(lineIntersects [_checkPos2beg, _checkPos2end])}
+&& {!(lineIntersects [_checkPos3beg, _checkPos3end])}
+&& {!(lineIntersects [_checkPos4beg, _checkPos4end])}
+&& {!(lineIntersects [_checkPos5beg, _checkPos5end])}

From 4264f78128dcc6ef2aa9eba7ced0b11019241d6d Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 10:16:10 +0200
Subject: [PATCH 133/257] player has to put weapon on back before climbing,
 check if still can climb

---
 addons/movement/functions/fnc_climb.sqf | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/addons/movement/functions/fnc_climb.sqf b/addons/movement/functions/fnc_climb.sqf
index aff27ffe9d..f88884195e 100644
--- a/addons/movement/functions/fnc_climb.sqf
+++ b/addons/movement/functions/fnc_climb.sqf
@@ -24,6 +24,15 @@ if !([_unit] call FUNC(canClimb)) exitWith {
 };
 
 if !(_unit getVariable [QGVAR(isClimbInit), false]) then {
+    _unit addEventHandler ["AnimChanged", {
+        if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then {
+        	// abort climb animation
+        	if !(_this call FUNC(canClimb)) then {
+        		[_this select 0, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
+        	};
+        };
+    }];
+
     _unit addEventHandler ["AnimDone", {
         if (local (_this select 0) && {_this select 1 == "ACE_Climb"}) then {_this call FUNC(handleClimb)};
     }];
@@ -32,5 +41,5 @@ if !(_unit getVariable [QGVAR(isClimbInit), false]) then {
 };
 
 [_unit] call EFUNC(common,fixLoweredRifleAnimation);
-[_unit, "AmovPercMstpSnonWnonDnon", 2] call EFUNC(common,doAnimation);
+[_unit, "AmovPercMstpSnonWnonDnon", 0] call EFUNC(common,doAnimation);
 [_unit, "ACE_Climb", 0] call EFUNC(common,doAnimation);

From 9057edb1e24d22b6e5622b6b6dfffdfaf214343c Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 11:10:05 +0200
Subject: [PATCH 134/257] Added a new module option for wind deflection:
 *enabled - true/false

---
 addons/winddeflection/ACE_Settings.hpp              | 6 ++++++
 addons/winddeflection/CfgVehicles.hpp               | 6 ++++++
 addons/winddeflection/functions/fnc_handleFired.sqf | 1 +
 3 files changed, 13 insertions(+)

diff --git a/addons/winddeflection/ACE_Settings.hpp b/addons/winddeflection/ACE_Settings.hpp
index 89235fe5af..f84bdeace3 100644
--- a/addons/winddeflection/ACE_Settings.hpp
+++ b/addons/winddeflection/ACE_Settings.hpp
@@ -1,4 +1,10 @@
 class ACE_Settings {
+    class GVAR(enabled) {
+        displayName = "Wind Deflection";
+        description = "Enables wind deflection";
+        typeName = "BOOL";
+        value = 1;
+    };
     class GVAR(simulationInterval) {
         displayName = "Simulation Interval";
         description = "Defines the interval between every calculation step";
diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp
index f9362a2711..09dc1b69be 100644
--- a/addons/winddeflection/CfgVehicles.hpp
+++ b/addons/winddeflection/CfgVehicles.hpp
@@ -11,6 +11,12 @@ class CfgVehicles {
         isTriggerActivated = 0;
         author = "$STR_ACE_Common_ACETeam";
         class Arguments {
+            class enabled {
+                displayName = "Wind Deflection";
+                description = "Enables wind deflection";
+                typeName = "BOOL";
+                defaultValue = 1;
+            };
             class simulationInterval {
                 displayName = "Simulation Interval";
                 description = "Defines the interval between every calculation step";
diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf
index 5ee22ecf4f..241fbcf839 100644
--- a/addons/winddeflection/functions/fnc_handleFired.sqf
+++ b/addons/winddeflection/functions/fnc_handleFired.sqf
@@ -28,6 +28,7 @@ _unit = _this select 0;
 _bullet = _this select 6;
 
 if (!hasInterface) exitWith {false};
+if (!(GVAR(enabled))) exitWith {false};
 if (!(_bullet isKindOf "BulletBase")) exitWith {false};
 if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {false};
 if (!([_unit] call EFUNC(common,isPlayer))) exitWith {false};

From 2a6dcbfbcb276b43935b2c8725b57f0513a9c972 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 12:12:19 +0200
Subject: [PATCH 135/257] Added automatic unit conversion for the target data

---
 .../functions/fnc_calculate_range_card.sqf    |  4 ----
 .../functions/fnc_calculate_solution.sqf      |  2 ++
 .../fnc_calculate_target_solution.sqf         |  7 -------
 addons/atragmx/functions/fnc_parse_input.sqf  | 10 ++++++++-
 .../atragmx/functions/fnc_update_target.sqf   | 18 +++++++++++++---
 .../functions/fnc_update_target_data.sqf      | 21 +++++++++++++++----
 6 files changed, 43 insertions(+), 19 deletions(-)

diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf
index f506726be2..359f7ab4ee 100644
--- a/addons/atragmx/functions/fnc_calculate_range_card.sqf
+++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf
@@ -68,10 +68,6 @@ _windDirection = (GVAR(windDirection) select GVAR(currentTarget));
 _inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
 _targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
 _targetRange = GVAR(rangeCardEndRange);
-if (GVAR(currentUnit) != 2) then {
-    _windSpeed = _windSpeed / 2.23693629;
-    _targetSpeed = _targetSpeed / 2.23693629;
-};
 if (GVAR(currentUnit) == 1) then {
     _targetRange = _targetRange / 1.0936133;
 };
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index f7f23044e3..db8a475b93 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -43,6 +43,8 @@
  */
 #include "script_component.hpp"
 
+systemChat format["%1", _this];
+
 private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
index f6dd92bc7f..764f21cfc9 100644
--- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
@@ -68,13 +68,6 @@ _windDirection = GVAR(windDirection) select GVAR(currentTarget);
 _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
 _targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
 _targetRange = GVAR(targetRange) select GVAR(currentTarget);
-if (GVAR(currentUnit) != 2) then {
-    _windSpeed = _windSpeed / 2.23693629;
-    _targetSpeed = _targetSpeed / 2.23693629;
-};
-if (GVAR(currentUnit) == 1) then {
-    _targetRange = _targetRange / 1.0936133;
-};
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index be91ecc593..172df7bd58 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -31,8 +31,16 @@ GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020
 GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
 GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
 GVAR(inclinationAngle) set [GVAR(currentTarget), -60 max parseNumber(ctrlText 140040) min 60];
-GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140050)) min 50];
+GVAR(targetSpeed) set [GVAR(currentTarget), -50 max abs(parseNumber(ctrlText 140050)) min 50];
 GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
+if (GVAR(currentUnit) != 2) then {
+    GVAR(windSpeed1) set [GVAR(currentTarget), (GVAR(windSpeed1) select GVAR(currentTarget)) * 0.44704];
+    GVAR(windSpeed2) set [GVAR(currentTarget), (GVAR(windSpeed2) select GVAR(currentTarget))  * 0.44704];
+    GVAR(targetSpeed) set [GVAR(currentTarget), (GVAR(targetSpeed) select GVAR(currentTarget))  * 0.44704];
+};
+if (GVAR(currentUnit) == 1) then {
+    GVAR(targetRange) set [GVAR(currentTarget), (GVAR(targetRange) select GVAR(currentTarget))  * 0.9144];
+};
 
 private ["_boreHeight", "_bulletMass", "_bulletDiameter", "_airFriction", "_rifleTwist", "_muzzleVelocity", "_zeroRange"];
 _boreHeight = parseNumber(ctrlText 120000);
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index 30b33eb55f..c5a02c0164 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -15,8 +15,20 @@
  */
 #include "script_component.hpp"
 
-ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+} else {
+    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+};
 ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
 ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
-ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
-ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+} else {
+    ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
+};
+if (GVAR(currentUnit) == 1) then {
+    ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
+} else {
+    ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+};
diff --git a/addons/atragmx/functions/fnc_update_target_data.sqf b/addons/atragmx/functions/fnc_update_target_data.sqf
index 35711acd5b..bfd7fced05 100644
--- a/addons/atragmx/functions/fnc_update_target_data.sqf
+++ b/addons/atragmx/functions/fnc_update_target_data.sqf
@@ -17,13 +17,26 @@
 
 ctrlSetText [140000, Str(Round((GVAR(latitude) select GVAR(currentTarget)) * 100) / 100)];
 ctrlSetText [140010, Str(Round((GVAR(directionOfFire) select GVAR(currentTarget)) * 100) / 100)];
-ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
-ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 100) / 100)];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+    ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+} else {
+    ctrlSetText [140020, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+    ctrlSetText [140021, Str(Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 100) / 100)];
+};
 ctrlSetText [140030, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
 ctrlSetText [140040, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
 ctrlSetText [140041, Str(floor(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100)];
-ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
-ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+if (GVAR(currentUnit) != 2) then {
+    ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+} else {
+    ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
+};
+if (GVAR(currentUnit) == 1) then {
+    ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
+} else {
+    ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+};
 
 if (GVAR(currentUnit) == 2) then {
     ctrlSetText [14002, "Wind Speed (m/s)"];

From 4449c99ebaaaa7a62e299438e49b361365a94824 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 12:13:27 +0200
Subject: [PATCH 136/257] Removed debug output

---
 addons/atragmx/functions/fnc_calculate_solution.sqf | 2 --
 1 file changed, 2 deletions(-)

diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index db8a475b93..f7f23044e3 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -43,8 +43,6 @@
  */
 #include "script_component.hpp"
 
-systemChat format["%1", _this];
-
 private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;

From 0f7bcf8d622882f62b7425c60ce8f45ff6fb8bde Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Sat, 18 Apr 2015 13:56:34 +0200
Subject: [PATCH 137/257] PL translation

---
 addons/optionsmenu/stringtable.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 2bc66b8b52..5c292ea16f 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="OptionsMenu">
         <Key ID="STR_ACE_OptionsMenu_OpenConfigMenu">
@@ -215,6 +216,7 @@
         </Key>
         <Key ID="STR_ACE_optionsMenu_uiScaing">
             <English>Option Menu UI Scaling</English>
+            <Polish>Skalowanie UI menu ustawień</Polish>
         </Key>
     </Package>
 </Project>
\ No newline at end of file

From 422e175f09229fc7c80b8a1ff5903eae33cea1b9 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 15:08:54 +0200
Subject: [PATCH 138/257] Implemented the dual wind speed feature

---
 addons/atragmx/RscTitles.hpp                  |  2 +-
 .../functions/fnc_calculate_range_card.sqf    |  7 +-
 .../fnc_calculate_scope_base_angle.sqf        |  2 +-
 .../functions/fnc_calculate_solution.sqf      | 66 +++++++++++--------
 .../fnc_calculate_target_solution.sqf         | 10 +--
 addons/atragmx/functions/fnc_change_gun.sqf   |  3 +-
 addons/atragmx/functions/fnc_init.sqf         |  4 +-
 .../functions/fnc_restore_user_data.sqf       |  1 +
 .../atragmx/functions/fnc_store_user_data.sqf |  1 +
 .../functions/fnc_update_range_card.sqf       | 30 ++++++---
 .../fnc_update_relative_click_memory.sqf      |  2 +-
 .../atragmx/functions/fnc_update_result.sqf   | 28 ++++++--
 .../atragmx/functions/fnc_update_target.sqf   | 14 +++-
 .../functions/fnc_update_zero_range.sqf       |  2 +-
 14 files changed, 115 insertions(+), 57 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 592374ddad..0752f8beb7 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -573,7 +573,7 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.11;
             y=0.265*safezoneH+safezoneY+0.57;
             text="Lead";
-            action="";
+            action=QUOTE(GVAR(showWind2) = !GVAR(showWind2); call FUNC(update_result); call FUNC(update_target));
         };
         class TEXT_LEAD_OUTPUT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
             idc=420;
diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf
index 359f7ab4ee..c11cf90550 100644
--- a/addons/atragmx/functions/fnc_calculate_range_card.sqf
+++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf
@@ -60,10 +60,11 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
     };
 };
 
-private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
 _latitude = GVAR(latitude) select GVAR(currentTarget);
 _directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
-_windSpeed = (GVAR(windSpeed1) select GVAR(currentTarget));
+_windSpeed1 = (GVAR(windSpeed1) select GVAR(currentTarget));
+_windSpeed2 = (GVAR(windSpeed2) select GVAR(currentTarget));
 _windDirection = (GVAR(windDirection) select GVAR(currentTarget));
 _inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
 _targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
@@ -76,4 +77,4 @@ GVAR(rangeCardData) = [];
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
diff --git a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
index 4995c31a61..76c54f63a9 100644
--- a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
+++ b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
@@ -35,6 +35,6 @@ _barometricPressure = 1013.25;
 _relativeHumidity = 0;
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 _scopeBaseAngle + (_result select 0) / 60
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index f7f23044e3..242e2e9c48 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -12,7 +12,7 @@
  * 6: barometric pressure <NUMBER>
  * 7: relative humidity <NUMBER>
  * 8: simulation steps <NUMBER>
- * 9: wind speed <NUMBER>
+ * 9: wind speed <ARRAY>
  * 10: wind direction <NUMBER>
  * 11: inclination angle <NUMBER>
  * 12: target speed <NUMBER>
@@ -26,15 +26,15 @@
  * 20: Latitude <NUMBER>
  *
  * Return Value:
- * 0: Elevation <NUMBER>
- * 1: Windage <NUMBER>
- * 2: Lead <NUMBER>
- * 3: Time of fligth <NUMBER>
- * 4: Remaining velocity <NUMBER>
- * 5: Remaining kinetic energy <NUMBER>
- * 6: Vertical coriolis drift <NUMBER>
- * 7: Horizontal coriolis drift <NUMBER>
- * 8: Spin drift <NUMBER>
+ * 0: Elevation (MOA) <NUMBER>
+ * 1: Windage (MOA) <ARRAY>
+ * 2: Lead (MOA) <NUMBER>
+ * 3: Time of fligth (SECONDS) <NUMBER>
+ * 4: Remaining velocity (m/s) <NUMBER>
+ * 5: Remaining kinetic energy (ft·lb) <NUMBER>
+ * 6: Vertical coriolis drift (MOA) <NUMBER>
+ * 7: Horizontal coriolis drift (MOA) <NUMBER>
+ * 8: Spin drift (MOA) <NUMBER>
  *
  * Example:
  * call ace_atragmx_calculate_target_range_assist
@@ -43,7 +43,7 @@
  */
 #include "script_component.hpp"
 
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
 _boreHeight         = _this select 2;
@@ -53,7 +53,8 @@ _temperature        = _this select 5;
 _barometricPressure = _this select 6;
 _relativeHumidity   = _this select 7;
 _simSteps           = _this select 8;
-_windSpeed          = _this select 9;
+_windSpeed1          = (_this select 9) select 0;
+_windSpeed2          = (_this select 9) select 1;
 _windDirection      = _this select 10;
 _inclinationAngle   = _this select 11;
 _targetSpeed        = _this select 12;
@@ -74,9 +75,10 @@ _bulletSpeed = 0;
 _gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665];
 _deltaT = 1 / _simSteps;
 
-private ["_elevation", "_windage", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
+private ["_elevation", "_windage1", "_windage2", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
 _elevation = 0;
-_windage = 0;
+_windage1 = 0;
+_windage2 = 0;
 _lead = 0;
 _TOF = 0;
 _trueVelocity = [0, 0, 0];
@@ -99,8 +101,10 @@ if (_storeRangeCardData) then {
     GVAR(rangeCardData) = [];
 };
 
-private ["_wind"];
-_wind = [cos(270 - _windDirection * 30) * _windSpeed, sin(270 - _windDirection * 30) * _windSpeed, 0];
+private ["_wind1", "_wind2", "_windDrift"];
+_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0];
+_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
+_windDrift = 0;
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
     _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
 };
@@ -127,7 +131,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
     _stepsTotal = _stepsTotal + 1;
     _speedAverage = (_speedTotal / _stepsTotal);
 
-    _trueVelocity = _bulletVelocity vectorDiff _wind;
+    _trueVelocity = _bulletVelocity vectorDiff _wind1;
     _trueSpeed = vectorMagnitude _trueVelocity;
 
     if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
@@ -156,7 +160,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
         if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
             if ((_bulletPos select 1) > 0) then {
                 _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
-                _windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
+                _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
+                _windDrift = (_wind2 select 0) * (_TOF - (_range / _rangeFactor) / _muzzleVelocity);
+                _windage2 = - atan(_windDrift / (_bulletPos select 1));
             };
             if (_range != 0) then {
                 _lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range);
@@ -166,20 +172,22 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
             
             if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
                 if ((_bulletPos select 1) > 0) then {
-                    _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+                    _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
                     _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
-                    _windage = _windage + _horizontalCoriolis;
+                    _windage1 = _windage1 + _horizontalCoriolis;
+                    _windage2 = _windage2 + _horizontalCoriolis;
                 };
             };
             if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
                 if ((_bulletPos select 1) > 0) then {
                     _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
                     _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
-                    _windage = _windage + _spinDrift;
+                    _windage1 = _windage1 + _spinDrift;
+                    _windage2 = _windage2 + _spinDrift;
                 };
             };
             
-            GVAR(rangeCardData) set [_n, [_range, _elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]];
+            GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
             _n = _n + 1;
         };
     };
@@ -187,7 +195,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
 
 if ((_bulletPos select 1) > 0) then {
     _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
-    _windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
+    _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
+    _windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity);
+    _windage2 = - atan(_windDrift / (_bulletPos select 1));
 };
 
 if (_targetRange != 0) then {
@@ -199,17 +209,19 @@ _kineticEnergy = _kineticEnergy * 0.737562149;
 
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
     if ((_bulletPos select 1) > 0) then {
-        _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+        _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
         _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
-        _windage = _windage + _horizontalCoriolis;
+        _windage1 = _windage1 + _horizontalCoriolis;
+        _windage2 = _windage2 + _horizontalCoriolis;
     };
 };
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
     if ((_bulletPos select 1) > 0) then {
         _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
         _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
-        _windage = _windage + _spinDrift;
+        _windage1 = _windage1 + _spinDrift;
+        _windage2 = _windage2 + _spinDrift;
     };
 };
 
-[_elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis, _horizontalCoriolis, _spinDrift]
+[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60]
diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
index 764f21cfc9..c8a3683498 100644
--- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
@@ -60,10 +60,11 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
     };
 };
 
-private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
 _latitude = GVAR(latitude) select GVAR(currentTarget);
 _directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
-_windSpeed = GVAR(windSpeed1) select GVAR(currentTarget);
+_windSpeed1 = GVAR(windSpeed1) select GVAR(currentTarget);
+_windSpeed2 = GVAR(windSpeed2) select GVAR(currentTarget);
 _windDirection = GVAR(windDirection) select GVAR(currentTarget);
 _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
 _targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
@@ -71,10 +72,11 @@ _targetRange = GVAR(targetRange) select GVAR(currentTarget);
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
-GVAR(windageOutput) set [GVAR(currentTarget), _result select 1];
+GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
+GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1];
 GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
 GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
 GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index 9b0f18c185..c753f644a4 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -35,7 +35,8 @@ if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then {
 [] call FUNC(update_gun_ammo_data);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), 0];
-GVAR(windageOutput) set [GVAR(currentTarget), 0];
+GVAR(windage1Output) set [GVAR(currentTarget), 0];
+GVAR(windage2Output) set [GVAR(currentTarget), 0];
 GVAR(leadOutput) set [GVAR(currentTarget), 0];
 GVAR(tofOutput) set [GVAR(currentTarget), 0];
 GVAR(velocityOutput) set [GVAR(currentTarget), 0];
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index efbd39ef81..881f65a6b0 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -56,8 +56,10 @@ GVAR(inclinationAngle) = [0, 0, 0, 0];
 GVAR(targetSpeed) = [0, 0, 0, 0];
 GVAR(targetRange) = [0, 0, 0, 0];
 
+GVAR(showWind2) = false;
 GVAR(elevationOutput) = [0, 0, 0, 0];
-GVAR(windageOutput) = [0, 0, 0, 0];
+GVAR(windage1Output) = [0, 0, 0, 0];
+GVAR(windage2Output) = [0, 0, 0, 0];
 GVAR(leadOutput) = [0, 0, 0, 0];
 GVAR(tofOutput) = [0, 0, 0, 0];
 GVAR(velocityOutput) = [0, 0, 0, 0];
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 7c011198d6..6fddc4bed5 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -26,6 +26,7 @@ GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperat
 GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_barometricPressure", 1013.25]) min 1350;
 GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
 
+GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
 GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
 GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
 GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 81a4476d75..6a66b96ea3 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -26,6 +26,7 @@ profileNamespace setVariable ["ACE_ATragMX_temperature", GVAR(temperature)];
 profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricPressure)];
 profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
 
+profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
 profileNamespace setVariable ["latitude", GVAR(latitude)];
 profileNamespace setVariable ["directionOfFire", GVAR(directionOfFire)];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf
index 871e5fa268..0c49b6f794 100644
--- a/addons/atragmx/functions/fnc_update_range_card.sqf
+++ b/addons/atragmx/functions/fnc_update_range_card.sqf
@@ -15,10 +15,14 @@
  */
 #include "script_component.hpp"
 
-private ["_range", "_elevation", "_windage", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
+private ["_range", "_elevation", "_windage1", "_windage2", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
 _lastColumnOutput = "";
 
-ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
+if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
+    ctrlSetText [5006, "Wind2"];
+} else {
+    ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
+};
 
 if (GVAR(currentUnit) == 1) then {
     ctrlSetText [5003, "Yards"];
@@ -31,7 +35,8 @@ lnbClear 5007;
 {
     _range = _x select 0;
     _elevation = _x select 1;
-    _windage = _x select 2;
+    _windage1 = (_x select 2) select 0;
+    _windage2 = (_x select 2) select 1;
     _lead = _x select 3;
     _TOF =  _x select 4;
     _velocity = _x select 5;
@@ -40,23 +45,26 @@ lnbClear 5007;
     switch (GVAR(currentScopeUnit)) do {
         case 0: {
             _elevation = _elevation / 3.38;
-            _windage = _windage / 3.38;
-        }; 
+            _windage1 = _windage1 / 3.38;
+            _windage2 = _windage2 / 3.38;
+        };
         case 2: {
             _elevation = _elevation * 1.047;
-            _windage = _windage * 1.047;
+            _windage1 = _windage1 * 1.047;
+            _windage2 = _windage2 * 1.047;
         };
         case 3: {
             _elevationScopeStep = (GVAR(workingMemory) select 7);
             _windageScopeStep = (GVAR(workingMemory) select 8);
             
             _elevation = Round(_elevation / _elevationScopeStep);
-            _windage = Round(_windage / _windageScopeStep);
+            _windage1 = Round(_windage1 / _windageScopeStep);
+            _windage2 = Round(_windage2 / _windageScopeStep);
         };
     };
     
     _elevationOutput = Str(Round(_elevation * 100) / 100);
-    _windageOutput = Str(Round(_windage * 100) / 100);
+    _windageOutput = Str(Round(_windage1 * 100) / 100);
     
     _rangeOutput = Str(_range);
     if (_velocity < 340.29) then {
@@ -69,7 +77,11 @@ lnbClear 5007;
     
     switch (GVAR(rangeCardCurrentColumn)) do {
         case 0: {
-            _lastColumnOutput = Str(Round(_lead * 100) / 100);
+            if (GVAR(showWind2)) then {
+                _lastColumnOutput = Str(Round(_windage2 * 100) / 100);
+            } else {
+                _lastColumnOutput = Str(Round(_lead * 100) / 100);
+            };
         };
         case 1: {
             _lastColumnOutput = Str(Round(_velocity));
diff --git a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
index 1d5add83db..1dc534ce4b 100644
--- a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
+++ b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
@@ -16,6 +16,6 @@
 #include "script_component.hpp"
 
 GVAR(workingMemory) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))];
-GVAR(workingMemory) set [11, (GVAR(windageOutput) select GVAR(currentTarget))];
+GVAR(workingMemory) set [11, (GVAR(windage1Output) select GVAR(currentTarget))];
 
 [] call FUNC(update_result);
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index 6898920eac..a86170fd45 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -15,9 +15,11 @@
  */
 #include "script_component.hpp"
 
-private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
-_elevationAbs = (GVAR(elevationOutput) select GVAR(currentTarget));
-_windageAbs = (GVAR(windageOutput) select GVAR(currentTarget));
+private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
+_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
+_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
+
+_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
 
 _elevationCur = GVAR(workingMemory) select 10;
 _windageCur = GVAR(workingMemory) select 11;
@@ -25,13 +27,15 @@ _windageCur = GVAR(workingMemory) select 11;
 _elevationRel = _elevationAbs - _elevationCur;
 _windageRel = _windageAbs - _windageCur;
 
-_lead = (GVAR(leadOutput) select GVAR(currentTarget));
+_lead = GVAR(leadOutput) select GVAR(currentTarget);
 
 switch (GVAR(currentScopeUnit)) do {
     case 0: {
         _elevationAbs = _elevationAbs / 3.38;
         _windageAbs = _windageAbs / 3.38;
         
+        _wind2 = _wind2 / 3.38;
+        
         _elevationRel = _elevationRel / 3.38;
         _windageRel = _windageRel / 3.38;
         
@@ -42,6 +46,8 @@ switch (GVAR(currentScopeUnit)) do {
         _elevationAbs = _elevationAbs * 1.047;
         _windageAbs = _windageAbs * 1.047;
         
+        _wind2 = _wind2 / 1.047;
+        
         _elevationRel = _elevationRel * 1.047;
         _windageRel = _windageRel * 1.047;
         
@@ -55,6 +61,8 @@ switch (GVAR(currentScopeUnit)) do {
         _elevationAbs = Round(_elevationAbs / _elevationScopeStep);
         _windageAbs = Round(_windageAbs / _windageScopeStep);
         
+        _wind2 = Round(_wind2 / _windageScopeStep);
+        
         _elevationRel = Round(_elevationRel / _elevationScopeStep);
         _windageRel = Round(_windageRel / _windageScopeStep);
         
@@ -63,6 +71,12 @@ switch (GVAR(currentScopeUnit)) do {
     };
 };
 
+if (GVAR(showWind2)) then {
+    ctrlSetText [42, "Wind2"];
+} else {
+    ctrlSetText [42, "Lead"];
+};
+
 ctrlSetText [400, Str(Round(_elevationAbs * 100) / 100)];
 ctrlSetText [401, Str(Round(_elevationRel * 100) / 100)];
 ctrlSetText [402, Str(Round(_elevationCur * 100) / 100)];
@@ -71,4 +85,8 @@ ctrlSetText [410, Str(Round(_windageAbs * 100) / 100)];
 ctrlSetText [411, Str(Round(_windageRel * 100) / 100)];
 ctrlSetText [412, Str(Round(_windageCur * 100) / 100)];
 
-ctrlSetText [420, Str(Round(_lead * 100) / 100)];
+if (GVAR(showWind2)) then {
+    ctrlSetText [420, Str(Round(_wind2 * 100) / 100)];
+} else {
+    ctrlSetText [420, Str(Round(_lead * 100) / 100)];
+};
\ No newline at end of file
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index c5a02c0164..dab62e099d 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -15,10 +15,18 @@
  */
 #include "script_component.hpp"
 
-if (GVAR(currentUnit) != 2) then {
-    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+if (GVAR(showWind2)) then {
+    if (GVAR(currentUnit) != 2) then {
+        ctrlSetText [300, format["%1/%2", Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629), Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 2.23693629)]];
+    } else {
+        ctrlSetText [300, format["%1/%2", Round(GVAR(windSpeed1) select GVAR(currentTarget)), Round(GVAR(windSpeed2) select GVAR(currentTarget))]];
+    };
 } else {
-    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+    if (GVAR(currentUnit) != 2) then {
+        ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+    } else {
+        ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+    };
 };
 ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
 ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf
index 6e2a9c566c..a5cab3755e 100644
--- a/addons/atragmx/functions/fnc_update_zero_range.sqf
+++ b/addons/atragmx/functions/fnc_update_zero_range.sqf
@@ -44,7 +44,7 @@ _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 GVAR(workingMemory) set [2, _zeroRange];
 GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];

From 5319fe5b98037544f63bb9af65f083b86dfa3fad Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 15:08:54 +0200
Subject: [PATCH 139/257] Implemented the dual wind speed feature

---
 addons/atragmx/RscTitles.hpp                  |  2 +-
 .../functions/fnc_calculate_range_card.sqf    |  7 +-
 .../fnc_calculate_scope_base_angle.sqf        |  2 +-
 .../functions/fnc_calculate_solution.sqf      | 66 +++++++++++--------
 .../fnc_calculate_target_solution.sqf         | 10 +--
 addons/atragmx/functions/fnc_change_gun.sqf   |  3 +-
 addons/atragmx/functions/fnc_init.sqf         |  4 +-
 .../functions/fnc_restore_user_data.sqf       |  1 +
 .../atragmx/functions/fnc_store_user_data.sqf |  1 +
 .../functions/fnc_update_range_card.sqf       | 30 ++++++---
 .../fnc_update_relative_click_memory.sqf      |  2 +-
 .../atragmx/functions/fnc_update_result.sqf   | 28 ++++++--
 .../atragmx/functions/fnc_update_target.sqf   | 14 +++-
 .../functions/fnc_update_zero_range.sqf       |  2 +-
 14 files changed, 115 insertions(+), 57 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 592374ddad..0752f8beb7 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -573,7 +573,7 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.11;
             y=0.265*safezoneH+safezoneY+0.57;
             text="Lead";
-            action="";
+            action=QUOTE(GVAR(showWind2) = !GVAR(showWind2); call FUNC(update_result); call FUNC(update_target));
         };
         class TEXT_LEAD_OUTPUT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
             idc=420;
diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf
index 359f7ab4ee..c11cf90550 100644
--- a/addons/atragmx/functions/fnc_calculate_range_card.sqf
+++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf
@@ -60,10 +60,11 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
     };
 };
 
-private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
 _latitude = GVAR(latitude) select GVAR(currentTarget);
 _directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
-_windSpeed = (GVAR(windSpeed1) select GVAR(currentTarget));
+_windSpeed1 = (GVAR(windSpeed1) select GVAR(currentTarget));
+_windSpeed2 = (GVAR(windSpeed2) select GVAR(currentTarget));
 _windDirection = (GVAR(windDirection) select GVAR(currentTarget));
 _inclinationAngle = (GVAR(inclinationAngle) select GVAR(currentTarget));
 _targetSpeed = (GVAR(targetSpeed) select GVAR(currentTarget));
@@ -76,4 +77,4 @@ GVAR(rangeCardData) = [];
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
diff --git a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
index 4995c31a61..76c54f63a9 100644
--- a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
+++ b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
@@ -35,6 +35,6 @@ _barometricPressure = 1013.25;
 _relativeHumidity = 0;
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 _scopeBaseAngle + (_result select 0) / 60
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index f7f23044e3..242e2e9c48 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -12,7 +12,7 @@
  * 6: barometric pressure <NUMBER>
  * 7: relative humidity <NUMBER>
  * 8: simulation steps <NUMBER>
- * 9: wind speed <NUMBER>
+ * 9: wind speed <ARRAY>
  * 10: wind direction <NUMBER>
  * 11: inclination angle <NUMBER>
  * 12: target speed <NUMBER>
@@ -26,15 +26,15 @@
  * 20: Latitude <NUMBER>
  *
  * Return Value:
- * 0: Elevation <NUMBER>
- * 1: Windage <NUMBER>
- * 2: Lead <NUMBER>
- * 3: Time of fligth <NUMBER>
- * 4: Remaining velocity <NUMBER>
- * 5: Remaining kinetic energy <NUMBER>
- * 6: Vertical coriolis drift <NUMBER>
- * 7: Horizontal coriolis drift <NUMBER>
- * 8: Spin drift <NUMBER>
+ * 0: Elevation (MOA) <NUMBER>
+ * 1: Windage (MOA) <ARRAY>
+ * 2: Lead (MOA) <NUMBER>
+ * 3: Time of fligth (SECONDS) <NUMBER>
+ * 4: Remaining velocity (m/s) <NUMBER>
+ * 5: Remaining kinetic energy (ft·lb) <NUMBER>
+ * 6: Vertical coriolis drift (MOA) <NUMBER>
+ * 7: Horizontal coriolis drift (MOA) <NUMBER>
+ * 8: Spin drift (MOA) <NUMBER>
  *
  * Example:
  * call ace_atragmx_calculate_target_range_assist
@@ -43,7 +43,7 @@
  */
 #include "script_component.hpp"
 
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
 _boreHeight         = _this select 2;
@@ -53,7 +53,8 @@ _temperature        = _this select 5;
 _barometricPressure = _this select 6;
 _relativeHumidity   = _this select 7;
 _simSteps           = _this select 8;
-_windSpeed          = _this select 9;
+_windSpeed1          = (_this select 9) select 0;
+_windSpeed2          = (_this select 9) select 1;
 _windDirection      = _this select 10;
 _inclinationAngle   = _this select 11;
 _targetSpeed        = _this select 12;
@@ -74,9 +75,10 @@ _bulletSpeed = 0;
 _gravity = [0, sin(_scopeBaseAngle + _inclinationAngle) * -9.80665, cos(_scopeBaseAngle + _inclinationAngle) * -9.80665];
 _deltaT = 1 / _simSteps;
 
-private ["_elevation", "_windage", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
+private ["_elevation", "_windage1", "_windage2", "_lead", "_TOF", "_trueVelocity", "_trueSpeed", "_kineticEnergy", "_verticalCoriolis", "_verticalDeflection", "_horizontalCoriolis", "_horizontalDeflection", "_spinDrift", "_spinDeflection"];
 _elevation = 0;
-_windage = 0;
+_windage1 = 0;
+_windage2 = 0;
 _lead = 0;
 _TOF = 0;
 _trueVelocity = [0, 0, 0];
@@ -99,8 +101,10 @@ if (_storeRangeCardData) then {
     GVAR(rangeCardData) = [];
 };
 
-private ["_wind"];
-_wind = [cos(270 - _windDirection * 30) * _windSpeed, sin(270 - _windDirection * 30) * _windSpeed, 0];
+private ["_wind1", "_wind2", "_windDrift"];
+_wind1 = [cos(270 - _windDirection * 30) * _windSpeed1, sin(270 - _windDirection * 30) * _windSpeed1, 0];
+_wind2 = [cos(270 - _windDirection * 30) * _windSpeed2, sin(270 - _windDirection * 30) * _windSpeed2, 0];
+_windDrift = 0;
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false])) then {
     _bc = [_bc, _temperature, _barometricPressure, _relativeHumidity, _atmosphereModel] call EFUNC(advanced_ballistics,calculateAtmosphericCorrection);
 };
@@ -127,7 +131,7 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
     _stepsTotal = _stepsTotal + 1;
     _speedAverage = (_speedTotal / _stepsTotal);
 
-    _trueVelocity = _bulletVelocity vectorDiff _wind;
+    _trueVelocity = _bulletVelocity vectorDiff _wind1;
     _trueSpeed = vectorMagnitude _trueVelocity;
 
     if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
@@ -156,7 +160,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
         if ((_bulletPos select 1) * _rangeFactor >= _range && _range <= GVAR(rangeCardEndRange)) then {
             if ((_bulletPos select 1) > 0) then {
                 _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
-                _windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
+                _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
+                _windDrift = (_wind2 select 0) * (_TOF - (_range / _rangeFactor) / _muzzleVelocity);
+                _windage2 = - atan(_windDrift / (_bulletPos select 1));
             };
             if (_range != 0) then {
                 _lead = (_targetSpeed * _TOF) / (Tan(3.38 / 60) * _range);
@@ -166,20 +172,22 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
             
             if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
                 if ((_bulletPos select 1) > 0) then {
-                    _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+                    _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
                     _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
-                    _windage = _windage + _horizontalCoriolis;
+                    _windage1 = _windage1 + _horizontalCoriolis;
+                    _windage2 = _windage2 + _horizontalCoriolis;
                 };
             };
             if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
                 if ((_bulletPos select 1) > 0) then {
                     _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
                     _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
-                    _windage = _windage + _spinDrift;
+                    _windage1 = _windage1 + _spinDrift;
+                    _windage2 = _windage2 + _spinDrift;
                 };
             };
             
-            GVAR(rangeCardData) set [_n, [_range, _elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy]];
+            GVAR(rangeCardData) set [_n, [_range, _elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy]];
             _n = _n + 1;
         };
     };
@@ -187,7 +195,9 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
 
 if ((_bulletPos select 1) > 0) then {
     _elevation = - atan((_bulletPos select 2) / (_bulletPos select 1));
-    _windage = - atan((_bulletPos select 0) / (_bulletPos select 1));
+    _windage1 = - atan((_bulletPos select 0) / (_bulletPos select 1));
+    _windDrift = (_wind2 select 0) * (_TOF - _targetRange / _muzzleVelocity);
+    _windage2 = - atan(_windDrift / (_bulletPos select 1));
 };
 
 if (_targetRange != 0) then {
@@ -199,17 +209,19 @@ _kineticEnergy = _kineticEnergy * 0.737562149;
 
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
     if ((_bulletPos select 1) > 0) then {
-        _horizontalDeflection = 0.0000729 * ((_bulletPos select 0) ^ 2) * sin(_latitude) / _speedAverage;
+        _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
         _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
-        _windage = _windage + _horizontalCoriolis;
+        _windage1 = _windage1 + _horizontalCoriolis;
+        _windage2 = _windage2 + _horizontalCoriolis;
     };
 };
 if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
     if ((_bulletPos select 1) > 0) then {
         _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
         _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
-        _windage = _windage + _spinDrift;
+        _windage1 = _windage1 + _spinDrift;
+        _windage2 = _windage2 + _spinDrift;
     };
 };
 
-[_elevation * 60, _windage * 60, _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis, _horizontalCoriolis, _spinDrift]
+[_elevation * 60, [_windage1 * 60, _windage2 * 60], _lead, _TOF, _bulletSpeed, _kineticEnergy, _verticalCoriolis * 60, _horizontalCoriolis * 60, _spinDrift * 60]
diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
index 764f21cfc9..c8a3683498 100644
--- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
@@ -60,10 +60,11 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
     };
 };
 
-private ["_latitude", "_directionOfFire", "_windSpeed", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
+private ["_latitude", "_directionOfFire", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange"];
 _latitude = GVAR(latitude) select GVAR(currentTarget);
 _directionOfFire = GVAR(directionOfFire) select GVAR(currentTarget);
-_windSpeed = GVAR(windSpeed1) select GVAR(currentTarget);
+_windSpeed1 = GVAR(windSpeed1) select GVAR(currentTarget);
+_windSpeed2 = GVAR(windSpeed2) select GVAR(currentTarget);
 _windDirection = GVAR(windDirection) select GVAR(currentTarget);
 _inclinationAngle = GVAR(inclinationAngle) select GVAR(currentTarget);
 _targetSpeed = GVAR(targetSpeed) select GVAR(currentTarget);
@@ -71,10 +72,11 @@ _targetRange = GVAR(targetRange) select GVAR(currentTarget);
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            _windSpeed, _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
-GVAR(windageOutput) set [GVAR(currentTarget), _result select 1];
+GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
+GVAR(windage2Output) set [GVAR(currentTarget), (_result select 1) select 1];
 GVAR(leadOutput) set [GVAR(currentTarget), _result select 2];
 GVAR(tofOutput) set [GVAR(currentTarget), _result select 3];
 GVAR(velocityOutput) set [GVAR(currentTarget), _result select 4];
diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index 9b0f18c185..c753f644a4 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -35,7 +35,8 @@ if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then {
 [] call FUNC(update_gun_ammo_data);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), 0];
-GVAR(windageOutput) set [GVAR(currentTarget), 0];
+GVAR(windage1Output) set [GVAR(currentTarget), 0];
+GVAR(windage2Output) set [GVAR(currentTarget), 0];
 GVAR(leadOutput) set [GVAR(currentTarget), 0];
 GVAR(tofOutput) set [GVAR(currentTarget), 0];
 GVAR(velocityOutput) set [GVAR(currentTarget), 0];
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index efbd39ef81..881f65a6b0 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -56,8 +56,10 @@ GVAR(inclinationAngle) = [0, 0, 0, 0];
 GVAR(targetSpeed) = [0, 0, 0, 0];
 GVAR(targetRange) = [0, 0, 0, 0];
 
+GVAR(showWind2) = false;
 GVAR(elevationOutput) = [0, 0, 0, 0];
-GVAR(windageOutput) = [0, 0, 0, 0];
+GVAR(windage1Output) = [0, 0, 0, 0];
+GVAR(windage2Output) = [0, 0, 0, 0];
 GVAR(leadOutput) = [0, 0, 0, 0];
 GVAR(tofOutput) = [0, 0, 0, 0];
 GVAR(velocityOutput) = [0, 0, 0, 0];
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 7c011198d6..6fddc4bed5 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -26,6 +26,7 @@ GVAR(temperature) = -50 max (profileNamespace getVariable ["ACE_ATragMX_temperat
 GVAR(barometricPressure) = 340 max (profileNamespace getVariable ["ACE_ATragMX_barometricPressure", 1013.25]) min 1350;
 GVAR(relativeHumidity) = 0 max (profileNamespace getVariable ["ACE_ATragMX_relativeHumidity", 0.5]) min 1;
 
+GVAR(showWind2) = profileNamespace getVariable ["ACE_ATragMX_showWind2", false];
 GVAR(latitude) = profileNamespace getVariable ["ACE_ATragMX_latitude", [38, 38, 38, 38]];
 GVAR(directionOfFire) = profileNamespace getVariable ["ACE_ATragMX_directionOfFire", [0, 0, 0, 0]];
 GVAR(windSpeed1) = profileNamespace getVariable ["ACE_ATragMX_windSpeed1", [0, 0, 0, 0]];
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 81a4476d75..6a66b96ea3 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -26,6 +26,7 @@ profileNamespace setVariable ["ACE_ATragMX_temperature", GVAR(temperature)];
 profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricPressure)];
 profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
 
+profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
 profileNamespace setVariable ["latitude", GVAR(latitude)];
 profileNamespace setVariable ["directionOfFire", GVAR(directionOfFire)];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf
index 871e5fa268..0c49b6f794 100644
--- a/addons/atragmx/functions/fnc_update_range_card.sqf
+++ b/addons/atragmx/functions/fnc_update_range_card.sqf
@@ -15,10 +15,14 @@
  */
 #include "script_component.hpp"
 
-private ["_range", "_elevation", "_windage", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
+private ["_range", "_elevation", "_windage1", "_windage2", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
 _lastColumnOutput = "";
 
-ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
+if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
+    ctrlSetText [5006, "Wind2"];
+} else {
+    ctrlSetText [5006, (GVAR(rangeCardLastColumns) select GVAR(rangeCardCurrentColumn))];
+};
 
 if (GVAR(currentUnit) == 1) then {
     ctrlSetText [5003, "Yards"];
@@ -31,7 +35,8 @@ lnbClear 5007;
 {
     _range = _x select 0;
     _elevation = _x select 1;
-    _windage = _x select 2;
+    _windage1 = (_x select 2) select 0;
+    _windage2 = (_x select 2) select 1;
     _lead = _x select 3;
     _TOF =  _x select 4;
     _velocity = _x select 5;
@@ -40,23 +45,26 @@ lnbClear 5007;
     switch (GVAR(currentScopeUnit)) do {
         case 0: {
             _elevation = _elevation / 3.38;
-            _windage = _windage / 3.38;
-        }; 
+            _windage1 = _windage1 / 3.38;
+            _windage2 = _windage2 / 3.38;
+        };
         case 2: {
             _elevation = _elevation * 1.047;
-            _windage = _windage * 1.047;
+            _windage1 = _windage1 * 1.047;
+            _windage2 = _windage2 * 1.047;
         };
         case 3: {
             _elevationScopeStep = (GVAR(workingMemory) select 7);
             _windageScopeStep = (GVAR(workingMemory) select 8);
             
             _elevation = Round(_elevation / _elevationScopeStep);
-            _windage = Round(_windage / _windageScopeStep);
+            _windage1 = Round(_windage1 / _windageScopeStep);
+            _windage2 = Round(_windage2 / _windageScopeStep);
         };
     };
     
     _elevationOutput = Str(Round(_elevation * 100) / 100);
-    _windageOutput = Str(Round(_windage * 100) / 100);
+    _windageOutput = Str(Round(_windage1 * 100) / 100);
     
     _rangeOutput = Str(_range);
     if (_velocity < 340.29) then {
@@ -69,7 +77,11 @@ lnbClear 5007;
     
     switch (GVAR(rangeCardCurrentColumn)) do {
         case 0: {
-            _lastColumnOutput = Str(Round(_lead * 100) / 100);
+            if (GVAR(showWind2)) then {
+                _lastColumnOutput = Str(Round(_windage2 * 100) / 100);
+            } else {
+                _lastColumnOutput = Str(Round(_lead * 100) / 100);
+            };
         };
         case 1: {
             _lastColumnOutput = Str(Round(_velocity));
diff --git a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
index 1d5add83db..1dc534ce4b 100644
--- a/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
+++ b/addons/atragmx/functions/fnc_update_relative_click_memory.sqf
@@ -16,6 +16,6 @@
 #include "script_component.hpp"
 
 GVAR(workingMemory) set [10, (GVAR(elevationOutput) select GVAR(currentTarget))];
-GVAR(workingMemory) set [11, (GVAR(windageOutput) select GVAR(currentTarget))];
+GVAR(workingMemory) set [11, (GVAR(windage1Output) select GVAR(currentTarget))];
 
 [] call FUNC(update_result);
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index 6898920eac..a86170fd45 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -15,9 +15,11 @@
  */
 #include "script_component.hpp"
 
-private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
-_elevationAbs = (GVAR(elevationOutput) select GVAR(currentTarget));
-_windageAbs = (GVAR(windageOutput) select GVAR(currentTarget));
+private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
+_elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
+_windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
+
+_wind2 = GVAR(windage2Output) select GVAR(currentTarget);
 
 _elevationCur = GVAR(workingMemory) select 10;
 _windageCur = GVAR(workingMemory) select 11;
@@ -25,13 +27,15 @@ _windageCur = GVAR(workingMemory) select 11;
 _elevationRel = _elevationAbs - _elevationCur;
 _windageRel = _windageAbs - _windageCur;
 
-_lead = (GVAR(leadOutput) select GVAR(currentTarget));
+_lead = GVAR(leadOutput) select GVAR(currentTarget);
 
 switch (GVAR(currentScopeUnit)) do {
     case 0: {
         _elevationAbs = _elevationAbs / 3.38;
         _windageAbs = _windageAbs / 3.38;
         
+        _wind2 = _wind2 / 3.38;
+        
         _elevationRel = _elevationRel / 3.38;
         _windageRel = _windageRel / 3.38;
         
@@ -42,6 +46,8 @@ switch (GVAR(currentScopeUnit)) do {
         _elevationAbs = _elevationAbs * 1.047;
         _windageAbs = _windageAbs * 1.047;
         
+        _wind2 = _wind2 / 1.047;
+        
         _elevationRel = _elevationRel * 1.047;
         _windageRel = _windageRel * 1.047;
         
@@ -55,6 +61,8 @@ switch (GVAR(currentScopeUnit)) do {
         _elevationAbs = Round(_elevationAbs / _elevationScopeStep);
         _windageAbs = Round(_windageAbs / _windageScopeStep);
         
+        _wind2 = Round(_wind2 / _windageScopeStep);
+        
         _elevationRel = Round(_elevationRel / _elevationScopeStep);
         _windageRel = Round(_windageRel / _windageScopeStep);
         
@@ -63,6 +71,12 @@ switch (GVAR(currentScopeUnit)) do {
     };
 };
 
+if (GVAR(showWind2)) then {
+    ctrlSetText [42, "Wind2"];
+} else {
+    ctrlSetText [42, "Lead"];
+};
+
 ctrlSetText [400, Str(Round(_elevationAbs * 100) / 100)];
 ctrlSetText [401, Str(Round(_elevationRel * 100) / 100)];
 ctrlSetText [402, Str(Round(_elevationCur * 100) / 100)];
@@ -71,4 +85,8 @@ ctrlSetText [410, Str(Round(_windageAbs * 100) / 100)];
 ctrlSetText [411, Str(Round(_windageRel * 100) / 100)];
 ctrlSetText [412, Str(Round(_windageCur * 100) / 100)];
 
-ctrlSetText [420, Str(Round(_lead * 100) / 100)];
+if (GVAR(showWind2)) then {
+    ctrlSetText [420, Str(Round(_wind2 * 100) / 100)];
+} else {
+    ctrlSetText [420, Str(Round(_lead * 100) / 100)];
+};
\ No newline at end of file
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index c5a02c0164..dab62e099d 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -15,10 +15,18 @@
  */
 #include "script_component.hpp"
 
-if (GVAR(currentUnit) != 2) then {
-    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+if (GVAR(showWind2)) then {
+    if (GVAR(currentUnit) != 2) then {
+        ctrlSetText [300, format["%1/%2", Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629), Round((GVAR(windSpeed2) select GVAR(currentTarget)) * 2.23693629)]];
+    } else {
+        ctrlSetText [300, format["%1/%2", Round(GVAR(windSpeed1) select GVAR(currentTarget)), Round(GVAR(windSpeed2) select GVAR(currentTarget))]];
+    };
 } else {
-    ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+    if (GVAR(currentUnit) != 2) then {
+        ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
+    } else {
+        ctrlSetText [300, Str(Round((GVAR(windSpeed1) select GVAR(currentTarget)) * 100) / 100)];
+    };
 };
 ctrlSetText [310, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
 ctrlSetText [320, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf
index 6e2a9c566c..a5cab3755e 100644
--- a/addons/atragmx/functions/fnc_update_zero_range.sqf
+++ b/addons/atragmx/functions/fnc_update_zero_range.sqf
@@ -44,7 +44,7 @@ _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, 0, 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
 
 GVAR(workingMemory) set [2, _zeroRange];
 GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];

From 5e45734cf401f46d53e87fcfec0768852fe66269 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 15:52:06 +0200
Subject: [PATCH 140/257] Implemented the dual inclination angle input method

---
 addons/atragmx/RscTitles.hpp                  |  2 ++
 addons/atragmx/XEH_preInit.sqf                |  1 +
 addons/atragmx/functions/fnc_parse_input.sqf  | 11 +++++++-
 .../fnc_update_inclination_angle.sqf          | 26 +++++++++++++++++++
 4 files changed, 39 insertions(+), 1 deletion(-)
 create mode 100644 addons/atragmx/functions/fnc_update_inclination_angle.sqf

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 0752f8beb7..6497606683 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -1271,12 +1271,14 @@ class ATragMX_Display {
             w=0.045;
             x=0.550*safezoneW+safezoneX+0.300;
             y=0.265*safezoneH+safezoneY+0.440;
+            onKeyUp=QUOTE(if (_this select 1 == 28) then {0 call FUNC(update_inclination_angle)});
         };
         class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_DEGREE: TEXT_TARGET_DATA_LATITUDE_INPUT {
             idc=140040;
             w=0.045;
             x=0.550*safezoneW+safezoneX+0.350;
             y=0.265*safezoneH+safezoneY+0.440;
+            onKeyUp=QUOTE(if (_this select 1 == 28) then {1 call FUNC(update_inclination_angle)});
         };
         class TEXT_TARGET_DATA_TARGET_SPEED: TEXT_TARGET_DATA_LATITUDE {
             idc=14005;
diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf
index 10e0aff61c..6a640f162e 100644
--- a/addons/atragmx/XEH_preInit.sqf
+++ b/addons/atragmx/XEH_preInit.sqf
@@ -53,6 +53,7 @@ PREP(update_atmo_env_data);
 PREP(update_atmo_selection);
 PREP(update_gun);
 PREP(update_gun_ammo_data);
+PREP(update_inclination_angle);
 PREP(update_range_card);
 PREP(update_relative_click_memory);
 PREP(update_result);
diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index 172df7bd58..ca22c62663 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -25,12 +25,21 @@ if (GVAR(currentUnit) == 1) then {
     GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
 };
 
+private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
 GVAR(latitude) set [GVAR(currentTarget), -90 max Round(parseNumber(ctrlText 140000)) min 90];
 GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrlText 140010))) min 359];
 GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020)) min 50];
 GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
 GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
-GVAR(inclinationAngle) set [GVAR(currentTarget), -60 max parseNumber(ctrlText 140040) min 60];
+_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) max 1;
+_inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
+if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
+    GVAR(inclinationAngle) set [GVAR(currentTarget), _inclinationAngleDegree];
+} else {
+    if (_inclinationAngleCosine != cos(GVAR(inclinationAngle) select GVAR(currentTarget))) then {
+        GVAR(inclinationAngle) set [GVAR(currentTarget), acos(_inclinationAngleCosine)];
+    };
+};
 GVAR(targetSpeed) set [GVAR(currentTarget), -50 max abs(parseNumber(ctrlText 140050)) min 50];
 GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
 if (GVAR(currentUnit) != 2) then {
diff --git a/addons/atragmx/functions/fnc_update_inclination_angle.sqf b/addons/atragmx/functions/fnc_update_inclination_angle.sqf
new file mode 100644
index 0000000000..b47936b2c0
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_inclination_angle.sqf
@@ -0,0 +1,26 @@
+/*
+ * Author: Ruthberg
+ * Updates the inclination angle input fields
+ *
+ * Arguments:
+ * Reference input field ID <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * 0 call ace_atragmx_fnc_update_inclination_angle
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
+_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) max 1;
+_inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
+
+if (_this == 0) then {
+    ctrlSetText [140040, Str(round(acos(_inclinationAngleCosine)))];
+} else {
+    ctrlSetText [140041, Str(floor(cos(_inclinationAngleDegree) * 100) / 100)];
+};

From 170a8d064120cded61757ba92dd050eb07d8d90a Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Sat, 18 Apr 2015 13:56:34 +0200
Subject: [PATCH 141/257] PL translation

---
 addons/optionsmenu/stringtable.xml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 2bc66b8b52..5c292ea16f 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="OptionsMenu">
         <Key ID="STR_ACE_OptionsMenu_OpenConfigMenu">
@@ -215,6 +216,7 @@
         </Key>
         <Key ID="STR_ACE_optionsMenu_uiScaing">
             <English>Option Menu UI Scaling</English>
+            <Polish>Skalowanie UI menu ustawień</Polish>
         </Key>
     </Package>
 </Project>
\ No newline at end of file

From f31e3c1fd4b335c6a2785af15c8edc1d999da7b3 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 08:31:03 -0700
Subject: [PATCH 142/257] litter simulation createVehicleLocal /w temporal
 network sync.

---
 addons/medical/ACE_Settings.hpp               |  6 +++
 addons/medical/XEH_postInit.sqf               |  4 ++
 addons/medical/XEH_preInit.sqf                |  5 +-
 addons/medical/functions/fnc_createLitter.sqf | 48 +++++--------------
 .../functions/fnc_handleCreateLitter.sqf      | 23 +++++++++
 5 files changed, 48 insertions(+), 38 deletions(-)
 create mode 100644 addons/medical/functions/fnc_handleCreateLitter.sqf

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 56e5a531ec..81dd34a01a 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -124,4 +124,10 @@ class ACE_Settings {
         values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"};
         isClientSettable = 1;
     };
+    
+    class GVAR(litterSimulationDetail) {
+        typeName = "SCALAR";
+        value = 2;
+        values[] = {"None", "500", "All"};
+    };
 };
diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index 309bb2a888..c7390c18be 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -265,3 +265,7 @@ if (USE_WOUND_EVENT_SYNC) then {
 ["playerInventoryChanged", {
     [ACE_player] call FUNC(itemCheck);
 }] call EFUNC(common,addEventHandler);
+
+
+// Networked litter
+[QGVAR(createLitter), FUNC(handleCreateLitter)] call EFUNC(common,addSyncedEventHandler);
\ No newline at end of file
diff --git a/addons/medical/XEH_preInit.sqf b/addons/medical/XEH_preInit.sqf
index f15b4ec109..78a2e7f71b 100644
--- a/addons/medical/XEH_preInit.sqf
+++ b/addons/medical/XEH_preInit.sqf
@@ -21,7 +21,6 @@ PREP(adjustPainLevel);
 PREP(canAccessMedicalEquipment);
 PREP(canTreat);
 PREP(canTreatCached);
-PREP(createLitter);
 PREP(determineIfFatal);
 PREP(getBloodLoss);
 PREP(getBloodPressure);
@@ -98,6 +97,10 @@ PREP(moduleTreatmentConfiguration);
 PREP(copyDeadBody);
 PREP(requestWoundSync);
 
+// Networked litter
+PREP(createLitter);
+PREP(handleCreateLitter);
+
 GVAR(injuredUnitCollection) = [];
 GVAR(IVBags) = [];
 
diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf
index 570c6d63d3..cc3e32eb5e 100644
--- a/addons/medical/functions/fnc_createLitter.sqf
+++ b/addons/medical/functions/fnc_createLitter.sqf
@@ -37,21 +37,19 @@ if !(isArray (_config >> "litter")) exitwith {};
 _litter = getArray (_config >> "litter");
 
 _createLitter = {
+    private["_position", "_litterClass", "_direction"];
     _position = getPos (_this select 0);
     _litterClass = _this select 1;
-    _litterObject = createVehicle [_litterClass, _position, [], 0, "NONE"];
     if (random(1) >= 0.5) then {
-        _litterObject setPos [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
+        _position = [(_position select 0) + random 2, (_position select 1) + random 2, _position select 2];
     } else {
-        _litterObject setPos [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
+       _position =  [(_position select 0) - random 2, (_position select 1) - random 2, _position select 2];
     };
-    _litterObject setDir (random 360);
-    _litterObject;
-};
-
-if (isnil QGVAR(allCreatedLitter)) then {
-    GVAR(allCreatedLitter) = [];
-    GVAR(litterPFHRunning) = false;
+    _direction = (random 360);
+    
+    [QGVAR(createLitter), [_litterClass,_position,_direction], 0] call EFUNC(common,syncedEvent);
+    
+    true
 };
 
 _createdLitter = [];
@@ -75,37 +73,13 @@ _createdLitter = [];
                 // Loop through through the litter options and place the litter
                 {
                     if (typeName _x == "ARRAY" && {(count _x > 0)}) then {
-                        _createdLitter pushback ([_target, _x select (floor(random(count _x)))] call _createLitter);
+                        [_target, _x select (floor(random(count _x)))] call _createLitter;
                     };
                     if (typeName _x == "STRING") then {
-                        _createdLitter pushback ([_target, _x] call _createLitter);
+                        [_target, _x] call _createLitter;
                     };
                 }foreach _litterOptions;
             };
         };
     };
-}foreach _litter;
-
-if (GVAR(litterCleanUpDelay) >= 0) then {
-    GVAR(allCreatedLitter) pushback [time, GVAR(litterCleanUpDelay), _createdLitter];
-};
-
-if !(GVAR(litterPFHRunning)) then {
-    GVAR(litterPFHRunning) = true;
-    [{
-        {
-            if (time - (_x select 0) >= (_x select 1)) then {
-                {
-                    deleteVehicle _x;
-                }foreach (_this select 2);
-                GVAR(allCreatedLitter) set[_foreachIndex, objNull];
-            };
-        }foreach GVAR(allCreatedLitter);
-        GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
-
-        if (count GVAR(allCreatedLitter) == 0) exitwith {
-            GVAR(litterPFHRunning) = false;
-            [_this select 1] call CBA_fnc_removePerFrameHandler;
-        };
-    }, 30, []] call CBA_fnc_addPerFrameHandler;
-};
+}foreach _litter;
\ No newline at end of file
diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
new file mode 100644
index 0000000000..f6bd821831
--- /dev/null
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -0,0 +1,23 @@
+#include "script_component.hpp"
+PARAMS_3(_litterClass,_position,_direction);
+private["_litterObject"];
+
+
+
+if (isnil QGVAR(allCreatedLitter)) then {
+    GVAR(allCreatedLitter) = [];
+    GVAR(litterPFHRunning) = false;
+};
+
+if((count GVAR(allCreatedLitter)) <= GVAR(litterSimulationDetail) )then {
+    _litterObject = createVehicleLocal [_litterClass, _position, [], 0, "NONE"];
+    _litterObject setDir _direction;
+} else {
+    // @TODO: We hit max litter items, remove a few of them to work with what we have.
+    // Basically, we should just start FIFO'ing these
+};
+
+GVAR(allCreatedLitter) pushBack _litterObject;
+//GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+
+true
\ No newline at end of file

From c5f5b11d31e4c1a9820eae60b3fc08b0ced480b6 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 08:37:21 -0700
Subject: [PATCH 143/257] strings.

---
 addons/medical/ACE_Settings.hpp | 6 ++++--
 addons/medical/stringtable.xml  | 6 ++++++
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 81dd34a01a..51ff72f465 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -126,8 +126,10 @@ class ACE_Settings {
     };
     
     class GVAR(litterSimulationDetail) {
+        displayName = "$STR_ACE_Medical_litterSimulationDetail";
+        description = "$STR_ACE_Medical_litterSimulationDetail_Desc";
         typeName = "SCALAR";
-        value = 2;
-        values[] = {"None", "500", "All"};
+        value = 500;
+        isClientSettable = 1;
     };
 };
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9f651e90b7..b77649a072 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1,6 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project name="ACE">
     <Package name="Medical">
+        <Key ID="TR_ACE_Medical_litterSimulationDetail">
+            <English>Litter Simulation Detail</English>
+        </Key>
+        <Key ID="TR_ACE_Medical_litterSimulationDetail_Desc">
+            <English>Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting.</English>
+        </Key>
         <Key ID="STR_ACE_Medical_Inject_Atropine">
             <English>Inject Atropine</English>
             <German>Atropin injizieren</German>

From d1993836aef8d2509f25381cd33ef42f5f22a4f0 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 08:40:28 -0700
Subject: [PATCH 144/257] Cleanup. missing string.

---
 addons/missileguidance/CfgAmmo.hpp            |  6 --
 addons/missileguidance/CfgVehicles.hpp        |  3 +-
 .../Example_ACE_MissileGuidance.hpp           | 65 -------------------
 addons/missileguidance/stringtable.xml        |  3 +
 4 files changed, 5 insertions(+), 72 deletions(-)
 delete mode 100644 addons/missileguidance/Example_ACE_MissileGuidance.hpp

diff --git a/addons/missileguidance/CfgAmmo.hpp b/addons/missileguidance/CfgAmmo.hpp
index a4a4f7e25d..680a410506 100644
--- a/addons/missileguidance/CfgAmmo.hpp
+++ b/addons/missileguidance/CfgAmmo.hpp
@@ -46,9 +46,6 @@ class CfgAmmo {
             minDeflection = 0.00025;      // Minium flap deflection for guidance
             maxDeflection = 0.001;       // Maximum flap deflection for guidance
             incDeflection = 0.0005;      // The incrmeent in which deflection adjusts.
-            //minDeflection = 0.005; 
-            //maxDeflection = 0.5;
-            //incDeflection = 0.005;
             
             canVanillaLock = 0;          // Can this default vanilla lock? Only applicable to non-cadet mode
             
@@ -119,9 +116,6 @@ class CfgAmmo {
             minDeflection = 0.00005;      // Minium flap deflection for guidance
             maxDeflection = 0.025;       // Maximum flap deflection for guidance
             incDeflection = 0.00005;      // The incrmeent in which deflection adjusts.
-            //minDeflection = 0.005; 
-            //maxDeflection = 0.5;
-            //incDeflection = 0.005;
             
             canVanillaLock = 0;
             
diff --git a/addons/missileguidance/CfgVehicles.hpp b/addons/missileguidance/CfgVehicles.hpp
index 7707717c9e..301795b8d7 100644
--- a/addons/missileguidance/CfgVehicles.hpp
+++ b/addons/missileguidance/CfgVehicles.hpp
@@ -17,7 +17,7 @@ class CfgVehicles {
             class MainTurret;
         };
     };
-
+    
     class ACE_Comanche_Test : B_Heli_Attack_01_F {
         displayName = "ACE_Comanche_Test";
         author = "ACE Team";
@@ -30,4 +30,5 @@ class CfgVehicles {
             };
         };
     };
+    
 };
diff --git a/addons/missileguidance/Example_ACE_MissileGuidance.hpp b/addons/missileguidance/Example_ACE_MissileGuidance.hpp
deleted file mode 100644
index d9c1ea8a2c..0000000000
--- a/addons/missileguidance/Example_ACE_MissileGuidance.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-THIS IS A WIP FUNCTIONALITY, DUE TO CHANGE
-
-
-    class M_PG_AT : MissileBase {
-        model = "\A3\Weapons_F\Ammo\Rocket_01_fly_F";
-        proxyShape = "\A3\Weapons_F\Ammo\Rocket_01_F";
-
-        irLock = 0;
-        laserLock = 0;
-        airLock = 0;
-        weaponLockSystem = "2 + 16";
-
-        maxSpeed = 720;
-        maxControlRange = 5000;
-        maneuvrability = 8;
-        timeToLive = 60;
-        simulationStep = 0.01;
-        airFriction = 0.1;
-        sideAirFriction = 0.16;
-        initTime = 0.002;
-        thrustTime = 1.07;
-        thrust = 530;
-        fuseDistance = 2;
-        
-        effectsMissileInit = "MissileDAR1";
-        effectsMissile = "missile2";
-        whistleDist = 4;
-        muzzleEffect = "";
-
-        // Turn off arma crosshair-guidance
-        manualControl = 0;
-        
-        // ACE uses these values
-        trackOversteer = 1;
-        trackLead = 0;
-       
-        // Begin ACE guidance Configs
-        class ACE_MissileGuidance {
-            enabled = 1;
-            
-            minDeflection = 0.005;      // Minium flap deflection for guidance
-            maxDeflection = 0.025;       // Maximum flap deflection for guidance
-            incDeflection = 0.005;      // The incrmeent in which deflection adjusts.
-            //minDeflection = 0.005; 
-            //maxDeflection = 0.5;
-            //incDeflection = 0.005;
-            
-            // Guidance type for munitions
-            defaultSeekerType = "SALH";
-            seekerTypes[] = { "SALH", "LIDAR", "SARH", "Optic", "Thermal", "GPS", "SACLOS", "MCLOS" };  
-           
-            defaultSeekerLockMode = "LOAL";
-            seekerLockModes[] = { "LOAL", "LOBL" }; 
-            
-            seekerAngle = 90;           // Angle in front of the missile which can be searched
-            seekerAccuracy = 1;         // seeker accuracy multiplier
-            
-            seekerMinRange = 1;
-            seekerMaxRange = 2500;      // Range from the missile which the seeker can visually search
-            
-            // Attack profile type selection
-            defaultAttackProfile = "LIN";
-            attackProfiles[] = { "LIN", "DIR", "MID", "HI", "TOP", "PYM" };
-        };
-    };
\ No newline at end of file
diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml
index c9cb4c4c6b..ab3a449aa6 100644
--- a/addons/missileguidance/stringtable.xml
+++ b/addons/missileguidance/stringtable.xml
@@ -13,6 +13,9 @@
             <Hungarian>Fejlett rakétairányító</Hungarian>
             <Russian>Расширенный ракетой</Russian>
         </Key>
+        <Key ID="STR_ACE_MissileGuidance_Desc">
+            <English>Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types.</English>
+        </Key>
         <Key ID="STR_ACE_Hydra70_DAGR">
             <English>Hydra-70 DAGR Missile</English>
             <Spanish></Spanish>

From 370e6bd9a7c7b43f7fa19a1e1896f23258b00953 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 17:42:13 +0200
Subject: [PATCH 145/257] maybe fix for #741, Speedlimiter locking vehicle
 controls

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

diff --git a/addons/vehicles/functions/fnc_speedLimiter.sqf b/addons/vehicles/functions/fnc_speedLimiter.sqf
index 2332336e0a..053d96d470 100644
--- a/addons/vehicles/functions/fnc_speedLimiter.sqf
+++ b/addons/vehicles/functions/fnc_speedLimiter.sqf
@@ -35,7 +35,7 @@ _maxSpeed = speed _vehicle max 10;
     _speed = speed _vehicle;
 
     if (_speed > _maxSpeed) then {
-        _vehicle setVelocity ((velocity _vehicle) vectorMultiply (_maxSpeed / _speed));
+        _vehicle setVelocity ((velocity _vehicle) vectorMultiply ((_maxSpeed / _speed) - 0.00001));  // fix 1.42-hotfix PhysX libraries applying force in previous direction when turning
     };
 
 } , 0, [_driver, _vehicle, _maxSpeed]] call CBA_fnc_addPerFrameHandler;

From fc39b81c958284193b78afbee69d72025b774569 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 17:45:32 +0200
Subject: [PATCH 146/257] *Fixed a minor bug in the dual inclination
 calculation *Added a profile namespace format version *The profileNamespace
 data is now automatically reset on version mismatch

---
 addons/atragmx/XEH_postInit.sqf               |  3 +-
 addons/atragmx/XEH_preInit.sqf                |  1 +
 .../atragmx/functions/fnc_clear_user_data.sqf | 39 +++++++++++++++++++
 addons/atragmx/functions/fnc_parse_input.sqf  |  5 ++-
 .../atragmx/functions/fnc_store_user_data.sqf |  2 +
 .../fnc_toggle_target_speed_assist.sqf        | 10 +++--
 .../fnc_update_inclination_angle.sqf          |  4 +-
 .../functions/fnc_update_target_data.sqf      |  2 +-
 addons/atragmx/script_component.hpp           |  2 +
 9 files changed, 59 insertions(+), 9 deletions(-)
 create mode 100644 addons/atragmx/functions/fnc_clear_user_data.sqf

diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index 01b13fc85e..e5f7dd42d3 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -2,7 +2,7 @@
 
 #include "initKeybinds.sqf"
 
-if (count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
+if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
     GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
 } else {
     // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
@@ -39,6 +39,7 @@ if (count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
                       ["5.56x45mm Mk262"   , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
                       ["5.56x45mm Mk318"   , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]];
     
+    [] call FUNC(clear_user_data);
     profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
 };
 
diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf
index 6a640f162e..b85e325494 100644
--- a/addons/atragmx/XEH_preInit.sqf
+++ b/addons/atragmx/XEH_preInit.sqf
@@ -12,6 +12,7 @@ PREP(calculate_target_speed_assist);
 PREP(can_show);
 PREP(change_gun);
 PREP(change_target_slot);
+PREP(clear_user_data);
 PREP(create_dialog);
 PREP(cycle_gun_list);
 PREP(cycle_image_size_units);
diff --git a/addons/atragmx/functions/fnc_clear_user_data.sqf b/addons/atragmx/functions/fnc_clear_user_data.sqf
new file mode 100644
index 0000000000..10f31741f2
--- /dev/null
+++ b/addons/atragmx/functions/fnc_clear_user_data.sqf
@@ -0,0 +1,39 @@
+/*
+ * Author: Ruthberg
+ * Removes all user data from the profileNamespace
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_clear_user_data
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+profileNamespace setVariable ["ACE_ATragMX_gunList", nil];
+
+profileNamespace setVariable ["ACE_ATragMX_currentUnit", nil];
+profileNamespace setVariable ["ACE_ATragMX_currentGun", nil];
+profileNamespace setVariable ["ACE_ATragMX_currentTarget", nil];
+profileNamespace setVariable ["ACE_ATragMX_currentScopeUnit", nil];
+
+profileNamespace setVariable ["ACE_ATragMX_atmosphereModeTBH", nil];
+profileNamespace setVariable ["ACE_ATragMX_altitude", nil];
+profileNamespace setVariable ["ACE_ATragMX_temperature", nil];
+profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
+profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
+
+profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
+profileNamespace setVariable ["latitude", nil];
+profileNamespace setVariable ["directionOfFire", nil];
+profileNamespace setVariable ["ACE_ATragMX_windSpeed1", nil];
+profileNamespace setVariable ["ACE_ATragMX_windSpeed2", nil];
+profileNamespace setVariable ["ACE_ATragMX_windDirection", nil];
+profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", nil];
+profileNamespace setVariable ["ACE_ATragMX_targetSpeed", nil];
+profileNamespace setVariable ["ACE_ATragMX_targetRange", nil];
diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index ca22c62663..aa77fc8111 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -31,12 +31,12 @@ GVAR(directionOfFire) set [GVAR(currentTarget), 0 max abs(Round(parseNumber(ctrl
 GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020)) min 50];
 GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
 GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
-_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) max 1;
+_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
 _inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
 if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
     GVAR(inclinationAngle) set [GVAR(currentTarget), _inclinationAngleDegree];
 } else {
-    if (_inclinationAngleCosine != cos(GVAR(inclinationAngle) select GVAR(currentTarget))) then {
+    if (_inclinationAngleCosine != Round(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100) then {
         GVAR(inclinationAngle) set [GVAR(currentTarget), acos(_inclinationAngleCosine)];
     };
 };
@@ -120,5 +120,6 @@ GVAR(workingMemory) set [11, _windageCur];
 [] call FUNC(update_atmosphere);
 [] call FUNC(update_atmo_env_data);
 [] call FUNC(update_target);
+[] call FUNC(update_target_data);
 
 [] call FUNC(store_user_data);
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 6a66b96ea3..66207444d2 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -15,6 +15,8 @@
  */
 #include "script_component.hpp"
 
+profileNamespace setVariable ["ACE_ATragMX_profileNamespaceVersion", ATRAGMX_PROFILE_NAMESPACE_VERSION];
+
 profileNamespace setVariable ["ACE_ATragMX_currentUnit", GVAR(currentUnit)];
 profileNamespace setVariable ["ACE_ATragMX_currentGun", GVAR(currentGun)];
 profileNamespace setVariable ["ACE_ATragMX_currentTarget", GVAR(currentTarget)];
diff --git a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
index e227cf0716..5b88a6cfce 100644
--- a/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
+++ b/addons/atragmx/functions/fnc_toggle_target_speed_assist.sqf
@@ -21,9 +21,13 @@ if (ctrlVisible 8000) then {
     
     if (_this == 1) then {
         [] call FUNC(calculate_target_speed_assist);
-        ctrlSetText [330, Str(parseNumber(ctrlText 8007))];
-        ctrlSetText [140050, Str(parseNumber(ctrlText 8007))];
-        [] call FUNC(calculate_target_solution);
+        private ["_targetSpeed"];
+        _targetSpeed = parseNumber(ctrlText 8007);
+        if (_targetSpeed != 0) then {
+            ctrlSetText [330, Str(_targetSpeed)];
+            ctrlSetText [140050, Str(_targetSpeed)];
+            [] call FUNC(calculate_target_solution);
+        };
     };
 } else {
     false call FUNC(show_main_page);
diff --git a/addons/atragmx/functions/fnc_update_inclination_angle.sqf b/addons/atragmx/functions/fnc_update_inclination_angle.sqf
index b47936b2c0..ea5599bf2d 100644
--- a/addons/atragmx/functions/fnc_update_inclination_angle.sqf
+++ b/addons/atragmx/functions/fnc_update_inclination_angle.sqf
@@ -16,11 +16,11 @@
 #include "script_component.hpp"
 
 private ["_inclinationAngleCosine", "_inclinationAngleDegree"];
-_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) max 1;
+_inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
 _inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
 
 if (_this == 0) then {
     ctrlSetText [140040, Str(round(acos(_inclinationAngleCosine)))];
 } else {
-    ctrlSetText [140041, Str(floor(cos(_inclinationAngleDegree) * 100) / 100)];
+    ctrlSetText [140041, Str(round(cos(_inclinationAngleDegree) * 100) / 100)];
 };
diff --git a/addons/atragmx/functions/fnc_update_target_data.sqf b/addons/atragmx/functions/fnc_update_target_data.sqf
index bfd7fced05..733118d583 100644
--- a/addons/atragmx/functions/fnc_update_target_data.sqf
+++ b/addons/atragmx/functions/fnc_update_target_data.sqf
@@ -26,7 +26,7 @@ if (GVAR(currentUnit) != 2) then {
 };
 ctrlSetText [140030, Str(Round((GVAR(windDirection) select GVAR(currentTarget))))];
 ctrlSetText [140040, Str(Round((GVAR(inclinationAngle) select GVAR(currentTarget))))];
-ctrlSetText [140041, Str(floor(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100)];
+ctrlSetText [140041, Str(Round(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100)];
 if (GVAR(currentUnit) != 2) then {
     ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 2.23693629 * 100) / 100)];
 } else {
diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp
index f7ec6e68e8..5290ba6a1f 100644
--- a/addons/atragmx/script_component.hpp
+++ b/addons/atragmx/script_component.hpp
@@ -10,3 +10,5 @@
 #endif
 
 #include "\z\ace\addons\main\script_macros.hpp"
+
+#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.0

From e14ee452497f1d9ecbf3b9cd7eb80173d40f6d89 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 09:29:58 -0700
Subject: [PATCH 147/257] debug checking.

---
 addons/missileguidance/functions/fnc_guidancePFH.sqf | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/addons/missileguidance/functions/fnc_guidancePFH.sqf b/addons/missileguidance/functions/fnc_guidancePFH.sqf
index f7fd56c164..2487e3b28f 100644
--- a/addons/missileguidance/functions/fnc_guidancePFH.sqf
+++ b/addons/missileguidance/functions/fnc_guidancePFH.sqf
@@ -92,6 +92,10 @@ if(accTime > 0) then {
 drawIcon3D ["\a3\ui_f\data\IGUI\Cfg\Cursors\selectover_ca.paa", [1,1,1,1], ASLtoATL _projectilePos, 0.75, 0.75, 0, str _vectorTo, 1, 0.025, "TahomaB"];
 drawLine3D [ASLtoATL _projectilePos, ASLtoATL _profileAdjustedTargetPos, [1,0,0,1]];
 
+_ps = "#particlesource" createVehicleLocal (ASLtoATL _projectilePos);
+_PS setParticleParams [["\A3\Data_f\cl_basic", 8, 3, 1], "", "Billboard", 1, 3.0141, [0, 0, 2], [0, 0, 0], 1, 1.275, 1, 0, [1, 1], [[1, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1]], [1], 1, 0, "", "", nil];
+_PS setDropInterval 3.0;
+
 hintSilent format["d: %1", _distanceToTarget];
 #endif
 

From d1e03d8e7aa027290008e571914f5344ad5cc064 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 09:40:46 -0700
Subject: [PATCH 148/257] Slight tweaks.

---
 addons/javelin/functions/fnc_onOpticDraw.sqf                   | 2 +-
 addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf | 2 +-
 addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf | 2 +-
 addons/missileguidance/functions/fnc_seekerType_Optic.sqf      | 1 +
 4 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf
index bc17865480..73f07d3e90 100644
--- a/addons/javelin/functions/fnc_onOpticDraw.sqf
+++ b/addons/javelin/functions/fnc_onOpticDraw.sqf
@@ -72,7 +72,7 @@ _range = parseNumber (ctrlText __JavelinIGUIRangefinder);
 TRACE_1("Viewing range", _range);
 if (_range > 50 && {_range < 2500}) then {
     _pos = positionCameraToWorld [0,0,_range];
-    _targetArray = _pos nearEntities ["AllVehicles", _range/25];
+    _targetArray = _pos nearEntities ["AllVehicles", _range/100];
     TRACE_1("Searching at range", _targetArray);
     if (count (_targetArray) > 0) then {
         _newTarget = _targetArray select 0;
diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
index ecb469527a..1e13c57ccc 100644
--- a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
+++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
@@ -53,7 +53,7 @@ switch( (_state select 0) ) do {
     };
     case STAGE_TERMINAL: {
         TRACE_1("STAGE_TERMINAL","");
-        _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.002];
+        _returnTargetPos = _seekerTargetPos;
     };
 };
 
diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
index c5933e6df9..e9064da404 100644
--- a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
+++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
@@ -70,7 +70,7 @@ switch( (_state select 0) ) do {
     case STAGE_TERMINAL: {
         TRACE_1("STAGE_TERMINAL","");
         //_returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.02];
-        _returnTargetPos = _seekerTargetPos vectorAdd [0,0,_distanceToTarget * 0.002];
+        _returnTargetPos = _seekerTargetPos;
     };
 };
 
diff --git a/addons/missileguidance/functions/fnc_seekerType_Optic.sqf b/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
index 74d3b0fc71..45e378c975 100644
--- a/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
+++ b/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
@@ -17,6 +17,7 @@ TRACE_1("", _launchParams);
 _foundTargetPos = [0,0,0];
 if(!isNil "_target") then {
     _foundTargetPos = getPosASL _target;
+    //_foundTargetPos = (_target modelToWorldVisual (getCenterOfMass _target));
 };
 
 // @TODO: This is seeker LOS and angle checks for LOAL only; LOBL does not need visual

From 34cf11e02223d12186d29ab611f1290ca28f024c Mon Sep 17 00:00:00 2001
From: Grzegorz <gienkov.grzegorz@gmail.com>
Date: Sat, 18 Apr 2015 18:48:56 +0200
Subject: [PATCH 149/257] PL translation fix

Did not saw that one
---
 addons/realisticnames/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml
index 2b02d7f5b7..7f2cf20e96 100644
--- a/addons/realisticnames/stringtable.xml
+++ b/addons/realisticnames/stringtable.xml
@@ -1135,7 +1135,7 @@
             <English>Mini-Spike (AT)</English>
             <German>Mini-Spike (PALR)</German>
             <Czech>Mini-Spike (PT)</Czech>
-            <Polish>Mini-Spike (AA)</Polish>
+            <Polish>Mini-Spike (AT)</Polish>
             <French>Mini-Spike (AT)</French>
             <Hungarian>Mini-Spike (Tankelhárító)</Hungarian>
             <Spanish>Mini-Spike (AT)</Spanish>

From f55bd5a6295680b1719b24823e6b4ff71b63fae6 Mon Sep 17 00:00:00 2001
From: FreeZbe <FreeZbe@users.noreply.github.com>
Date: Sat, 18 Apr 2015 18:49:46 +0200
Subject: [PATCH 150/257] French: updates / fixes stringtable

---
 addons/advanced_ballistics/stringtable.xml |   4 +-
 addons/atragmx/stringtable.xml             |   4 +-
 addons/attach/stringtable.xml              |  10 +-
 addons/captives/stringtable.xml            |  10 +-
 addons/common/stringtable.xml              |  14 +--
 addons/disarming/stringtable.xml           |   3 +-
 addons/explosives/stringtable.xml          |   8 +-
 addons/grenades/stringtable.xml            |  12 +--
 addons/hearing/stringtable.xml             |   4 +-
 addons/interact_menu/stringtable.xml       |   4 +-
 addons/javelin/stringtable.xml             |   6 +-
 addons/laser_selfdesignate/stringtable.xml |   6 +-
 addons/magazinerepack/stringtable.xml      |   4 +-
 addons/medical/stringtable.xml             | 102 ++++++++++++---------
 addons/missileguidance/stringtable.xml     |  16 ++--
 addons/nametags/stringtable.xml            |   4 +-
 addons/optionsmenu/stringtable.xml         |   1 +
 addons/realisticnames/stringtable.xml      |   4 +-
 addons/respawn/stringtable.xml             |   6 ++
 addons/scopes/stringtable.xml              |  11 ++-
 addons/weather/stringtable.xml             |   4 +-
 21 files changed, 135 insertions(+), 102 deletions(-)

diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index 6890937a45..4d09dac3ef 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -7,7 +7,7 @@
             <Polish>Pokaż inf. o wietrze</Polish>
             <Italian>Mostra indicazioni del vento</Italian>
             <Russian>Показать информацию о ветре</Russian>
-            <French>Afficher les info du vent</French>
+            <French>Afficher les info sur le vent</French>
             <Spanish>Mostrar información del viento</Spanish>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_ProtractorKey">
@@ -19,4 +19,4 @@
             <Spanish>Mostrar transportador</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/atragmx/stringtable.xml b/addons/atragmx/stringtable.xml
index 1baa4fb38c..f1cfa25e9a 100644
--- a/addons/atragmx/stringtable.xml
+++ b/addons/atragmx/stringtable.xml
@@ -19,6 +19,7 @@
             <Polish>Otwórz ATragMX</Polish>
             <Russian>Открыть ATragMX</Russian>
             <Spanish>Abrir ATragMX</Spanish>
+            <French>Ouvrir ATragMX</French>
         </Key>
         <Key ID="STR_ACE_ATragMX_Description">
             <English>Rugged PDA with ATragMX</English>
@@ -31,6 +32,7 @@
             <Polish>Otwórz ATragMX</Polish>
             <Russian>Открыть ATragMX</Russian>
             <Spanish>Abrir ATragMX</Spanish>
+            <French>Ouvrir ATragMX</French>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml
index db98c4fffc..4d3b57e944 100644
--- a/addons/attach/stringtable.xml
+++ b/addons/attach/stringtable.xml
@@ -42,7 +42,7 @@
             <German>IR-Stroboskop befestigt</German>
             <Spanish>Marcador IR acoplado</Spanish>
             <Polish>Przyczepiono stroboskop IR</Polish>
-            <French>Strobe IR attaché</French>
+            <French>Balise IR attachée</French>
             <Czech>IR Značkovač připnutý</Czech>
             <Portuguese>Marcador IV Acoplado</Portuguese>
             <Italian>Strobo IR attaccata</Italian>
@@ -54,7 +54,7 @@
             <German>IR-Stroboskop entfernt</German>
             <Spanish>Marcador IR quitado</Spanish>
             <Polish>Odczepiono stroboskop IR</Polish>
-            <French>Strobe IR détaché</French>
+            <French>Balise IR détachée</French>
             <Czech>IR Značkovač odepnutý</Czech>
             <Portuguese>Marcador IV Separado</Portuguese>
             <Italian>Strobo IR staccata</Italian>
@@ -126,7 +126,7 @@
             <German>IR-Stroboskop</German>
             <Spanish>Marcador IR</Spanish>
             <Polish>Stroboskop IR</Polish>
-            <French>Strobe IR</French>
+            <French>Balise IR</French>
             <Czech>IR Značkovač</Czech>
             <Portuguese>Marcador IV</Portuguese>
             <Italian>Strobo IR</Italian>
@@ -138,7 +138,7 @@
             <German>Das IR-Stroboskop erlaubt es dir deine Position mit einem blinkenden Leuchtfeuer zu signalisieren, welches nur mit Nachtsichtgerät zu erkennen ist.</German>
             <Polish>Stroboskop światła podczerwieni umożliwia oznaczenie swojej pozycji pulsacyjnym światłem widocznym tylko przez optykę noktowizyjną i gogle noktowizyjne.</Polish>
             <Spanish>El Marcador IR permite señalizar su posisición a través de una baliza visible solo a través de dispositivos de visión nocturna. </Spanish>
-            <French>Le Strobe IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
+            <French>La balise IR permet de signaler votre position grace à un clignotement visible par des JVN.</French>
             <Czech>IR Značkovač je Infračerveně zářící stroboskop umožňující signalizaci vaší pozice díky blikajícímu světlu, které je vidět pouze při užití noktovizoru.</Czech>
             <Portuguese>O Marcador IV permite que você sinalize sua posição através de um pulso visível somente com equipamento de visão noturna.</Portuguese>
             <Italian>La Strobo IR è una luce stroboscopica che ti permette di segnalare la tua posizione grazie all'emissione di impulsi ad infrarossi visibili solo con i visori notturni.</Italian>
@@ -204,4 +204,4 @@
             <Russian>%1&lt;br/&gt;отсоединена</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index f609aabd93..0a88c5d7d8 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -134,7 +134,7 @@
         </Key>
         <Key ID="STR_ACE_Captives_StartSurrendering">
             <English>Surrender</English>
-            <French>Capituler</French>
+            <French>Se rendre</French>
             <German>Kapitulieren</German>
             <Spanish>Rendirse</Spanish>
             <Czech>Vzdát se</Czech>
@@ -156,7 +156,7 @@
         </Key>
         <Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
             <English>Only use on alive units</English>
-            <French>Utiliser uniquement sur unité vivante</French>
+            <French>Utiliser uniquement sur une unité vivante</French>
             <German>Nur bei lebenden Einheiten verwendbar</German>
             <Spanish>Utilizar solo en unidades vivas</Spanish>
             <Czech>Použitelné jen na živé jednotky</Czech>
@@ -167,7 +167,7 @@
         </Key>
         <Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
             <English>Only use on dismounted inf</English>
-            <French>Utiliser uniquement sur personnel à pied</French>
+            <French>Utiliser uniquement sur du personnel à pied</French>
             <German>Nur bei abgesessener Infanterie verwendbar</German>
             <Spanish>Utilizar solo en infanteria desmontada</Spanish>
             <Czech>Použitelné jen na pěsích jednotkách</Czech>
@@ -178,7 +178,7 @@
         </Key>
         <Key ID="STR_ACE_Captives_Zeus_NothingSelected">
             <English>Nothing under mouse</English>
-            <French>Rien sous la souris</French>
+            <French>Rien sous le curseur</French>
             <German>Es wurde nichts ausgewählt</German>
             <Spanish>Nada bajo el ratón</Spanish>
             <Czech>Nic není vybráno</Czech>
@@ -188,4 +188,4 @@
             <Italian>Niente selezionato</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index d9ee389166..de10a60893 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -272,7 +272,7 @@
             <Spanish>Desactivar menú de mando</Spanish>
             <Polish>Wyłącz menu dowodzenia</Polish>
             <Czech>Vypnout velící menu</Czech>
-            <French>Désactiver Menu Commande</French>
+            <French>Désactiver menu commande</French>
             <Russian>Выключить командное меню</Russian>
             <Hungarian>Parancsnoki menü kikapcsolása</Hungarian>
             <Italian>Disabilita Menù di comando</Italian>
@@ -329,7 +329,7 @@
             <Italian>Accetta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
             <Czech>Přijimutí žádosti poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
             <Russian>Принять запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
-            <French>Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalistion d'actions.</French>
+            <French>Accepter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions.</French>
             <Hungarian>Más játékosok általi kérések elfogadása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
         </Key>
         <Key ID="STR_ACE_ACTION_DECLINE_REQUEST_KEY_TOOLTIP">
@@ -340,7 +340,7 @@
             <Italian>Rifiuta le richieste degli altri giocatori. Queste possono riguardare l'uso o la condivisione dell'equipaggiamento, o di determinate azioni.</Italian>
             <Czech>Zamítnutí žádostii poslané jinými hráči. Mohou to být žádosti k použítí/sdílení vybavení nebo k vykonání určité činnosti.</Czech>
             <Russian>Отклонить запросы, отправленные другими игроками. Например, запросы на использование/совместное использование снаряжения, выполнение определенных действий</Russian>
-            <French>Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalistion d'actions.</French>
+            <French>Rejeter les requêtes d'autres joueurs. Comme l'utilisation / l'échange d'équipement, la réalisation d'actions.</French>
             <Hungarian>Más játékosok általi kérések elutasítása. Ezek a kérések vonatkozhatnak a felszerelés használatára/megosztására, valamint különböző cselekményekre.</Hungarian>
         </Key>
         <Key ID="STR_ACE_Common_SettingFeedbackIconsName">
@@ -383,7 +383,7 @@
             <Italian>Modifica la posizione su schermo della barra di avanzamento.</Italian>
             <Russian>Установите желаемое положение строки состояния на экране.</Russian>
             <Polish>Ustaw pożądaną lokalizację paska postępu na ekranie</Polish>
-            <French>Appliquer la postion de la barre de progression sur l'écran</French>
+            <French>Appliquer la position de la barre de progression sur l'écran</French>
             <Czech>Nastavuje pozici ukazetele průběhu činnosti na vaší obrazovce.</Czech>
             <Hungarian>Itt beállítható az állapotjelző sáv képernyődön lévő helyzete.</Hungarian>
         </Key>
@@ -405,7 +405,7 @@
             <Italian>Il colore di sfondo dei suggerimenti dell'ACE.</Italian>
             <Russian>Цвет фона всплывающих подсказок АСЕ.</Russian>
             <Polish>Kolor tła dla powiadomień ACE</Polish>
-            <French>Notifications ACE: couleur de l'arrière plan</French>
+            <French>Notification ACE: couleur de l'arrière plan</French>
             <Czech>Barva pozadí ACE nápověd.</Czech>
             <Hungarian>Az ACE-súgók hátterének színe.</Hungarian>
         </Key>
@@ -427,7 +427,7 @@
             <Italian>Il colore del testo dei suggerimenti dell'ACE. Questo è il colore standard per tutti i caratteri mostrati dal sistema di suggerimenti dell'ACE, se questo non è altrimenti specificato.</Italian>
             <Russian>Цвет шрифта текста всплывающих подсказок АСЕ. Этот цвет является стандартным для всего текста, транслирующегося через систему подсказок АСЕ, если не установлено другого цвета для текста подсказок.</Russian>
             <Polish>Kolor tekstu dla powiadomień ACE. Ten kolor jest domyślnym dla wszystkich tekstów wyświetlanych poprzez System Powiadomień ACE, jeżeli dla powiadomienia nie określono innego koloru.</Polish>
-            <French>Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte afficher dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications</French>
+            <French>Notification ACE: couleur du texte. C'est la couleur par défaut de tout texte affiché dans les notifications ACE, si aucune couleur n'est spécifiée pour les notifications</French>
             <Czech>Barva fontu ACE nápověd. Toto je standardní barva pro všechen text zobrazovaný ACE nápovědami, pokud nemá nápověda žádnou specifikanou barvu.</Czech>
             <Hungarian>Az ACE-súgók betűkészletének színek. Ez a szín alapértelmezett az összes szövegre az ACE-súgórendszerben, ha a súgószöveg maga nem ad meg más színt.</Hungarian>
         </Key>
@@ -454,4 +454,4 @@
             <French>Une banane est un fruit qui, d'un point de vue botanique, fait partie du groupe des baies. Produite par plusieurs sortes de grandes plantes à fleurs herbacées du type Musa.</French>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/disarming/stringtable.xml b/addons/disarming/stringtable.xml
index 625f156b95..583080ff08 100644
--- a/addons/disarming/stringtable.xml
+++ b/addons/disarming/stringtable.xml
@@ -9,6 +9,7 @@
             <Spanish>Abrir inventario</Spanish>
             <Russian>Открыть инвентарь</Russian>
             <Italian>Apri l'inventario</Italian>
+            <French>Ouvrir l'inventaire</French>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index d0b61d0814..9d4937ed65 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -114,7 +114,7 @@
             <German>Mobiltelefon</German>
             <Spanish>Télefono móvil</Spanish>
             <Polish>Telefon komórkowy</Polish>
-            <French>Téléphone Portable</French>
+            <French>Téléphone portable</French>
             <Czech>Telefon</Czech>
             <Italian>Cellulare</Italian>
             <Hungarian>Mobiltelefon</Hungarian>
@@ -294,7 +294,7 @@
             <German>"Platzieren"-Menü</German>
             <Spanish>Menú de colocación</Spanish>
             <Polish>Menu umieszczania</Polish>
-            <French>Menu Placement</French>
+            <French>Menu placement</French>
             <Czech>Menu Umístění</Czech>
             <Italian>Menù di collocamento</Italian>
             <Hungarian>Elhelyezési menü</Hungarian>
@@ -450,7 +450,7 @@
             <Polish>Czujnik magnetyczny (wybuch w górę)</Polish>
             <Spanish>Sensor IM (ataque inferior)</Spanish>
             <German>Magnetfeldsensor (Bodenangriff)</German>
-            <French>Capteur Magnétique (par le bas)</French>
+            <French>Capteur magnétique (par le bas)</French>
             <Czech>Magnetický Senzor (Výbuch ze spoda)</Czech>
             <Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
             <Hungarian>Mágneses mező érzékelő (Bottom Attack)</Hungarian>
@@ -502,4 +502,4 @@
             <Italian>Raccogli</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/grenades/stringtable.xml b/addons/grenades/stringtable.xml
index 758e6eb9a0..7f8321d6c6 100644
--- a/addons/grenades/stringtable.xml
+++ b/addons/grenades/stringtable.xml
@@ -20,7 +20,7 @@
             <Spanish>Lanzamiento normal</Spanish>
             <Polish>Normalny rzut</Polish>
             <Czech>Normální hod</Czech>
-            <French>Lancer Normal</French>
+            <French>Lancer normal</French>
             <Russian>Нормальный бросок</Russian>
             <Hungarian>Normál dobás</Hungarian>
             <Italian>Lancio normale</Italian>
@@ -32,7 +32,7 @@
             <Spanish>Lanzamiento alto</Spanish>
             <Polish>Wysoki rzut</Polish>
             <Czech>Vysoký hod</Czech>
-            <French>Lancer Haut</French>
+            <French>Lancer haut</French>
             <Russian>Высокий бросок</Russian>
             <Hungarian>Magas dobás</Hungarian>
             <Italian>Lancio verso l'alto</Italian>
@@ -44,7 +44,7 @@
             <Spanish>Lanzamiento preciso</Spanish>
             <Polish>Precyzyjny rzut</Polish>
             <Czech>Přesný hod</Czech>
-            <French>Lancer Précis</French>
+            <French>Lancer précis</French>
             <Russian>Точный бросок</Russian>
             <Hungarian>Pontos dobás</Hungarian>
             <Italian>Lancio preciso</Italian>
@@ -56,7 +56,7 @@
             <Spanish>Rodar granada</Spanish>
             <Polish>Po ziemi</Polish>
             <Czech>Po zemi</Czech>
-            <French>Lancer Roulé</French>
+            <French>Lancer roulé</French>
             <Russian>Катить гранату</Russian>
             <Hungarian>Gránát gurítása</Hungarian>
             <Italian>Fai rotolare la granata</Italian>
@@ -78,7 +78,7 @@
             <English>M84 Stun Grenade</English>
             <German>M84 Blendgranate</German>
             <Spanish>Granada aturdidora M84</Spanish>
-            <French>M84 Grenade Incapacitante</French>
+            <French>M84 Grenade incapacitante</French>
             <Polish>Granat hukowy M84</Polish>
             <Czech>Omračující granát M84</Czech>
             <Russian>M84 светозвуковая граната</Russian>
@@ -243,4 +243,4 @@
             <Spanish>M127A1 (Amarilla)</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index 3fa947ead9..7ae1120b17 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -80,7 +80,7 @@
             <Polish>Nie masz stoperów</Polish>
             <Czech>Nemáš žádné špunty</Czech>
             <Russian>У вас нет беруш</Russian>
-            <French>Vous n'avez pas de Bouchons Anti-Bruits</French>
+            <French>Vous n'avez pas de bouchons anti-bruits</French>
             <Hungarian>Nincsen füldugód</Hungarian>
             <Portuguese>Você não possui protetores auriculares</Portuguese>
             <Italian>Non hai i tappi auricolari</Italian>
@@ -109,4 +109,4 @@
             <Italian>Disabilita il ronzio</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml
index 98cac6116a..c1999b424b 100644
--- a/addons/interact_menu/stringtable.xml
+++ b/addons/interact_menu/stringtable.xml
@@ -16,7 +16,7 @@
             <English>Display interaction menus as lists</English>
             <Spanish>Mostrar los menus de interacción como listas</Spanish>
             <Russian>Показывать меню взаимодействия в виде списка</Russian>
-            <French>Afficher le menu d'interaction au format liste</French>
+            <French>Afficher le menu d'interaction sous forme de liste</French>
             <Italian>Mostra il menù di interazione come lista</Italian>
             <Polish>Wyświetlaj menu interakcji jako listę</Polish>
         </Key>
@@ -65,4 +65,4 @@
             <Italian>Interazioni con veicoli</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/javelin/stringtable.xml b/addons/javelin/stringtable.xml
index 32aed563a1..33abcc1e49 100644
--- a/addons/javelin/stringtable.xml
+++ b/addons/javelin/stringtable.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
 <Project name="ACE">
     <Package name="WEP_JAVELIN">
         <Key ID="STR_ACE_JAVELIN_LockTarget">
@@ -7,7 +7,7 @@
             <Russian>Захватить цель (удерживать)</Russian>
             <Czech>Zamknout cíl(držet)</Czech>
             <Polish>Namierz cel (przytrzymaj)</Polish>
-            <French>Verrouiller cible (maintenir)</French>
+            <French>Verrouiller la cible (maintenir)</French>
             <Hungarian>Célpontra állás (Lenyomva tartott)</Hungarian>
             <Italian>Aggangia il bersagio</Italian>
             <Spanish>Fijar objetivo (Mantener)</Spanish>
@@ -24,4 +24,4 @@
             <Spanish>Cambiar modo de disparo</Spanish>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/laser_selfdesignate/stringtable.xml b/addons/laser_selfdesignate/stringtable.xml
index f38c015c44..f587763bce 100644
--- a/addons/laser_selfdesignate/stringtable.xml
+++ b/addons/laser_selfdesignate/stringtable.xml
@@ -8,7 +8,7 @@
             <Russian>ЛЦУ ВКЛ</Russian>
             <Czech>Laserový značkovač zapnut</Czech>
             <Polish>Desygnator laserowy wł.</Polish>
-            <French>Désignateur Laser Allumé</French>
+            <French>Désignateur laser allumé</French>
             <Hungarian>Lézeres Megjelölő Be</Hungarian>
             <Italian>Designatore laser acceso</Italian>
         </Key>
@@ -19,9 +19,9 @@
             <Russian>ЛЦУ ВЫКЛ</Russian>
             <Czech>Laserový značkovat vypnut</Czech>
             <Polish>Desygnator laserowy wył.</Polish>
-            <French>Désignateur Laser Éteint</French>
+            <French>Désignateur laser éteint</French>
             <Hungarian>Lézeres Megjelölő Ki</Hungarian>
             <Italian>Designatore laser spento</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml
index 1e02260d1b..3c84a9109e 100644
--- a/addons/magazinerepack/stringtable.xml
+++ b/addons/magazinerepack/stringtable.xml
@@ -5,7 +5,7 @@
             <English>Repack Magazines</English>
             <German>Magazine umpacken</German>
             <Spanish>Reorganizar cargadores</Spanish>
-            <French>Réorganiser chargeurs</French>
+            <French>Réorganiser les chargeurs</French>
             <Polish>Przepakuj magazynki</Polish>
             <Czech>Přepáskovat Zásobníky</Czech>
             <Italian>Ricarica Caricatori</Italian>
@@ -107,4 +107,4 @@
             <Italian>%1 pieno e %2 parziale</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index a8a8017160..d14e532c26 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -66,7 +66,7 @@
             <Spanish>Transfundir salino</Spanish>
             <Czech>Transfúze fyziologický roztoku</Czech>
             <Polish>Przetocz sól fizjologiczną</Polish>
-            <French>Transfuser de la Saline</French>
+            <French>Transfuser de la solution saline</French>
             <Russian>Перелить физраствор</Russian>
             <Hungarian>Infúzió (sós víz)</Hungarian>
             <Italian>Effettua trasfusione di soluzione salina</Italian>
@@ -288,6 +288,7 @@
             <Polish>Bandaż uciskowy</Polish>
             <Hungarian>Nyomókötszer</Hungarian>
             <Italian>Bendaggio compressivo</Italian>
+            <French>Bandage gauze</French>
         </Key>
         <Key ID="STR_ACE_MEDICAL_ACTIONS_ElasticBandage">
             <English>Elastic Bandage</English>
@@ -329,7 +330,7 @@
             <Russian>Проверить давление</Russian>
             <Czech>Zkontrolovat krevní tlak</Czech>
             <Polish>Sprawdź ciśnienie krwi</Polish>
-            <French>Vérification de la Tension</French>
+            <French>Vérification de la tension</French>
             <Hungarian>Vérnyomás megmérése</Hungarian>
             <Italian>Controlla pressionsa sanguigna</Italian>
         </Key>
@@ -340,7 +341,7 @@
             <Russian>Медкарта</Russian>
             <Polish>Karta segregacyjna</Polish>
             <Czech>Karta Triage</Czech>
-            <French>Carte de Triage</French>
+            <French>Carte de triage</French>
             <Hungarian>Orvosi lap</Hungarian>
             <Italian>Triage Card</Italian>
         </Key>
@@ -362,7 +363,7 @@
             <Russian>Снять жгут</Russian>
             <Czech>Sundat škrtidlo</Czech>
             <Polish>Zdejmij stazę</Polish>
-            <French>Enlever le Garrot</French>
+            <French>Enlever le garrot</French>
             <Hungarian>Érszorító leszedése</Hungarian>
             <Italian>Rimuovi laccio emostatico</Italian>
         </Key>
@@ -372,7 +373,7 @@
             <Spanish>Dar Sangre IV (1000ml)</Spanish>
             <Russian>Дать кровь для в/в вливания (1000 мл)</Russian>
             <Polish>Podaj krew IV (1000ml)</Polish>
-            <French>Administrer du Sang en IV (1000ml)</French>
+            <French>Administrer du sang en IV (1000ml)</French>
             <Czech>Podat krev. transfúzi (1000ml)</Czech>
             <Hungarian>Vér adása intravénásan (1000ml)</Hungarian>
             <Italian>Effettua trasfusione sangue IV (1000ml)</Italian>
@@ -383,7 +384,7 @@
             <Spanish>Dar Sangre IV (500ml)</Spanish>
             <Russian>Дать кровь для в/в вливания (500 мл)</Russian>
             <Polish>Podaj krew IV (500ml)</Polish>
-            <French>Administrer du Sang en IV (500ml)</French>
+            <French>Administrer du sang en IV (500ml)</French>
             <Czech>Podat krev. transfúzi (500ml) </Czech>
             <Hungarian>Vér adása intravénásan (500ml)</Hungarian>
             <Italian>Effettua trasfusione sangue IV (500ml)</Italian>
@@ -394,7 +395,7 @@
             <Spanish>Dar Sangre IV (250ml)</Spanish>
             <Russian>Дать кровь для в/в вливания (250 мл)</Russian>
             <Polish>Podaj krew IV (250ml)</Polish>
-            <French>Administrer du Sang en IV (250ml)</French>
+            <French>Administrer du sang en IV (250ml)</French>
             <Czech>Podat krev. transfúzi (250ml)</Czech>
             <Hungarian>Vér adása intravénásan (250ml)</Hungarian>
             <Italian>Effettua trasfusione sangue IV (250ml)</Italian>
@@ -405,7 +406,7 @@
             <Spanish>Dar Plasma IV (1000ml)</Spanish>
             <Russian>Дать плазму для в/в вливания (1000 мл)</Russian>
             <Polish>Podaj osocze IV (1000ml)</Polish>
-            <French>Administrer du Plasma en IV (1000ml)</French>
+            <French>Administrer du plasma en IV (1000ml)</French>
             <Czech>Podat plazmu (1000ml)</Czech>
             <Hungarian>Vérplazma adása intravénásan (1000ml)</Hungarian>
             <Italian>Effettua trasfusione plasma IV (1000ml)</Italian>
@@ -416,7 +417,7 @@
             <Spanish>Dar Plasma IV (500ml)</Spanish>
             <Russian>Дать плазму для в/в вливания (500 мл)</Russian>
             <Polish>Podaj osocze IV (500ml)</Polish>
-            <French>Administrer du Plasma en IV (500ml)</French>
+            <French>Administrer du plasma en IV (500ml)</French>
             <Czech>Podat plazmu (500ml)</Czech>
             <Hungarian>Vérplazma adása intravénásan (500ml)</Hungarian>
             <Italian>Effettua trasfusione plasma IV (500ml)</Italian>
@@ -427,7 +428,7 @@
             <Spanish>Dar Plasma IV (250ml)</Spanish>
             <Russian>Дать плазму для в/в вливания (250 мл)</Russian>
             <Polish>Podaj osocze IV (250ml)</Polish>
-            <French>Administrer du Plasma en IV (250ml)</French>
+            <French>Administrer du plasma en IV (250ml)</French>
             <Czech>Podat plazmu (250ml)</Czech>
             <Hungarian>Vérplazma adása intravénásan (250ml)</Hungarian>
             <Italian>Effettua trasfusione plasma IV (250ml)</Italian>
@@ -438,7 +439,7 @@
             <Spanish>Dar Salino IV (1000ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (1000 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (1000ml)</Polish>
-            <French>Administrer de la Solution Saline en IV (1000ml)</French>
+            <French>Administrer de la solution saline en IV (1000ml)</French>
             <Czech>Podaz fyz. roztok (1000ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (1000ml)</Hungarian>
             <Italian>Effettua trasfusione salina IV (1000ml)</Italian>
@@ -449,7 +450,7 @@
             <Spanish>Dar Salino IV (500ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (500 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (500ml)</Polish>
-            <French>Administrer de la Solution Saline en IV (500ml)</French>
+            <French>Administrer de la solution saline en IV (500ml)</French>
             <Czech>Podaz fyz. roztok (500ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (500ml)</Hungarian>
             <Italian>Effettua trasfusione salina IV (500ml)</Italian>
@@ -460,7 +461,7 @@
             <Spanish>Dar Salino IV (250ml)</Spanish>
             <Russian>Дать физраствор для в/в вливания (250 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (250ml)</Polish>
-            <French>Administrer de la Solution Saline en IV (250ml)</French>
+            <French>Administrer de la solution saline en IV (250ml)</French>
             <Czech>Podaz fyz. roztok (250ml)</Czech>
             <Hungarian>Sós víz adása intravénásan (250ml)</Hungarian>
             <Italian>Effettua trasfusione salina IV (250ml)</Italian>
@@ -471,7 +472,7 @@
             <Spanish>Menor</Spanish>
             <Russian>Незначительная</Russian>
             <Polish>Normalny</Polish>
-            <French>Mineur</French>
+            <French>Léger</French>
             <Czech>Minimální</Czech>
             <Hungarian>Enyhe</Hungarian>
             <Italian>Minore</Italian>
@@ -524,7 +525,7 @@
             <English>Normal breathing</English>
             <Russian>Дыхание в норме</Russian>
             <Spanish>Respiración normal</Spanish>
-            <French>Respiration Normale</French>
+            <French>Respiration normale</French>
             <Polish>Normalny oddech</Polish>
             <German>Normale Atmung</German>
             <Czech>Dýchá normálně</Czech>
@@ -536,7 +537,7 @@
             <German>Keine Atmung</German>
             <Russian>Дыхание отсутствует</Russian>
             <Spanish>No respira</Spanish>
-            <French>Aucune Respiration</French>
+            <French>Aucune respiration</French>
             <Polish>Brak oddechu</Polish>
             <Czech>Nedýchá</Czech>
             <Hungarian>Nincs légzés</Hungarian>
@@ -546,7 +547,7 @@
             <English>Difficult breathing</English>
             <Russian>Дыхание затруднено</Russian>
             <Spanish>Dificultad para respirar</Spanish>
-            <French>Difficultée Respiratoire</French>
+            <French>Difficultée respiratoire</French>
             <Polish>Trudności z oddychaniem</Polish>
             <German>Schwere Atmung</German>
             <Czech>Dýchá s obtížemi</Czech>
@@ -558,7 +559,7 @@
             <German>Fast keine Atmung</German>
             <Russian>Дыхание очень слабое</Russian>
             <Spanish>Casi sin respiración</Spanish>
-            <French>Respiration Faible</French>
+            <French>Respiration faible</French>
             <Polish>Prawie brak oddechu</Polish>
             <Czech>Skoro nedýchá</Czech>
             <Hungarian>Alig van légzés</Hungarian>
@@ -580,7 +581,7 @@
             <German>Hat Schmerzen</German>
             <Russian>Испытывает боль</Russian>
             <Spanish>Con dolor</Spanish>
-            <French>Ressent de la Douleur</French>
+            <French>Ressent de la douleur</French>
             <Polish>W bólu</Polish>
             <Czech>V bolestech</Czech>
             <Hungarian>Fájdalom alatt</Hungarian>
@@ -591,7 +592,7 @@
             <German>Hat eine große Menge Blut verloren</German>
             <Russian>Большая кровопотеря</Russian>
             <Spanish>Mucha sangre perdida</Spanish>
-            <French>A Perdu Bcp de Sang</French>
+            <French>A perdu beaucoup de sang</French>
             <Polish>Stracił dużo krwi</Polish>
             <Czech>Ztratil hodně krve</Czech>
             <Hungarian>Sok vért vesztett</Hungarian>
@@ -634,7 +635,7 @@
             <English>Used to cover a wound</English>
             <Russian>Для перевязки ран</Russian>
             <Spanish>Utilizado para cubrir una herida</Spanish>
-            <French>Utilisé Pour Couvrir Une Blessure</French>
+            <French>Utilisé pour couvrir une blessure</French>
             <Polish>Używany w celu przykrycia i ochrony miejsca zranienia</Polish>
             <German>Verwendet, um Wunden abzudecken</German>
             <Hungarian>Sebesülések befedésére alkalmas</Hungarian>
@@ -655,7 +656,7 @@
             <German>Mullbinde</German>
             <Russian>Тампонирующая повязка</Russian>
             <Spanish>Vendaje compresivo</Spanish>
-            <French>Bandage Mèche</French>
+            <French>Bandage gauze</French>
             <Polish>Bandaż (uciskowy)</Polish>
             <Hungarian>Nyomókötszer</Hungarian>
             <Italian>Bendaggio compressivo</Italian>
@@ -665,7 +666,7 @@
             <German>Verwendet, um mittlere bis große Wunden abzudecken und Blutungen zu stoppen</German>
             <Russian>Для тампонирования ран среднего и большого размера и остановки кровотечения.</Russian>
             <Spanish>Se utiliza para vendar heridas medianas o grandes y detener el sangrado</Spanish>
-            <French>Utilisé pour remplir la cavité créée dans une blessure de taille moyenne à grande.</French>
+            <French>Utilisé pour couvrir des blessures de taille moyenne à grande. Arrête l'hémorragies</French>
             <Polish>Używany w celu opatrywania średnich i dużych ran oraz tamowania krwawienia.</Polish>
             <Hungarian>Közepestől nagyig terjedő sebek betakarására és vérzés elállítására használt kötszer</Hungarian>
             <Italian>Usato su medie o larghe ferite per fermare emorragie.</Italian>
@@ -674,7 +675,7 @@
             <English>A bandage used to pack the wound to stem bleeding and facilitate wound healing. Packing a wound is an option in large polytrauma injuries.</English>
             <Russian>Повязка для тампонирования раны, остановки кровотечения и лучшего заживления. При тяжелых сочетанных ранениях возможно тампонирование раны.</Russian>
             <Spanish>Se utiliza para detener la hemorragia de una herida y favorecer su cicatrización. Se usa en grandes lesiones o politraumatismos.</Spanish>
-            <French>Bandage pouvant être inseré dans les blessures pour éponger le saignement et faciliter la guerrison. Ce bandage est optionnel pour soigner les lésions polytraumatique.</French>
+            <French>Bandage servant à recouvrir les blessures pour arrêter les hémmoragies et faciliter la guérisson. Recouvrir une blessure est optionnel dans le cas de blessures polytraumatiques</French>
             <Polish>Opatrunek stosowany w celu zatrzymania krwawienia i osłony większych ran.</Polish>
             <Hungarian>Egy kötszerfajta, melyet a sebek nyomására használnak a vérzés elállítása és sebgyógyulás érdekében. A nyomókötés egy lehetőség nagyobb polytraumatikus sérülések esetén.</Hungarian>
             <Italian>Un bendaggio usato per bendare ferite con emorragie e facilitare la guarigione. Bendare una ferita è una opzione su ferite di vario tipo.</Italian>
@@ -695,7 +696,7 @@
             <German>Elastische Binde (Kompressionsbinde)</German>
             <Russian>Давящая повязка</Russian>
             <Spanish>Kit de vendaje (Elástico)</Spanish>
-            <French>Bandage Compressif Élastique</French>
+            <French>Bandage compressif élastique</French>
             <Polish>Zestaw bandaży elastycznych.</Polish>
             <Hungarian>Rugalmas kötszercsomag, "rögzítő"</Hungarian>
             <Italian>Kit bendaggio, elastico</Italian>
@@ -766,7 +767,7 @@
             <English>An analgesic used to combat moderate to severe pain experiences.</English>
             <Russian>Обезболивающее для снятия средних и сильных болевых ощущений.</Russian>
             <Spanish>Analgésico usado para combatir los estados dolorosos de moderados a severos.</Spanish>
-            <French>Un Analgésique puissant servant à réduire les douleurs modérées à sévères.</French>
+            <French>Un analgésique puissant servant à réduire les douleurs modérées à sévères.</French>
             <Polish>Organiczny związek chemiczny z grupy alkaloidów. Ma silne działanie przeciwbólowe.</Polish>
             <German>Ein Schmerzmittel um mäßige bis starke Schmerzen zu behandeln</German>
             <Hungarian>Egy fájdalomcsillapító anyag, jellemzően mérsékelt vagy erős fájdalom esetén alkalmazandó.</Hungarian>
@@ -864,7 +865,7 @@
             <English>Plasma IV (500ml)</English>
             <Russian>Плазма для в/в вливания (500 мл)</Russian>
             <Spanish>Plasma IV (500ml)</Spanish>
-            <French>Plasma Sanguin IV (500ml)</French>
+            <French>Plasma sanguin IV (500ml)</French>
             <Polish>Osocze IV (500ml)</Polish>
             <German>Plasma IV (500ml)</German>
             <Hungarian>Vérplazma-infúzió (500ml)</Hungarian>
@@ -874,7 +875,7 @@
             <English>Plasma IV (250ml)</English>
             <Russian>Плазма для в/в вливания (250 мл)</Russian>
             <Spanish>Plasma IV (250ml)</Spanish>
-            <French>Plasma Sanguin (250ml)</French>
+            <French>Plasma sanguin (250ml)</French>
             <Polish>Osocze IV (250ml)</Polish>
             <German>Plasma IV (250ml)</German>
             <Hungarian>Vérplazma-infúzió (250ml)</Hungarian>
@@ -884,7 +885,7 @@
             <English>Blood IV (1000ml)</English>
             <Russian>Кровь для переливания (1000 мл)</Russian>
             <Spanish>Sangre IV (1000ml)</Spanish>
-            <French>Cullot Sanguin IV (1000ml)</French>
+            <French>Cullot sanguin IV (1000ml)</French>
             <Polish>Krew IV (1000ml)</Polish>
             <German>Blut IV (1000ml)</German>
             <Hungarian>Vér-infúzió (1000ml)</Hungarian>
@@ -894,7 +895,7 @@
             <English>Blood IV, for restoring a patients blood (keep cold)</English>
             <Russian>Пакет крови для возмещения объема потерянной крови (хранить в холодильнике)</Russian>
             <Spanish>Sangre intravenosa, para restarurar el volumen sanguíneo (mantener frío)</Spanish>
-            <French>Cullot Sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. </French>
+            <French>Cullot sanguin O- ,utiliser seulement lors de perte sanguine majeur afin de remplacer le volume sanguin perdu. Habituelment utiliser lors du transport ou dans un etablisement de soin. </French>
             <Polish>Krew IV, używana do uzupełnienia krwi u pacjenta, trzymać w warunkach chłodniczych</Polish>
             <Hungarian>Vér-infúzió, intravénás bejuttatásra egy páciensnek (hidegen tárolandó)</Hungarian>
             <Italian>Sangue usato per ripristinare pazienti in cui si è verificata una perdita di sangue (conservare al fresco)</Italian>
@@ -905,12 +906,13 @@
             <Polish>Krew 0 Rh-, używana w rzadkich i szczególnych przypadkach do uzupełnienia krwi u pacjenta, zazwyczaj w trakcie fazie transportu rannej osoby do szpitala.</Polish>
             <Spanish>Utilice sólo durante gran pérdida de sangre para reemplazar el volumen de sangre perdida. Uso habitual durante el transporte de heridos.</Spanish>
             <Italian>Sangue 0 negativo usato per ripristinare sangue in pazienti in cui si è verificata una perdita di sangue.</Italian>
+            <French>Cullot sanguin O- utilisé dans de rares et stricts cas pour compléter une perte de sang importante. Administré normalement lors d'un MEDEVAC</French>
         </Key>
         <Key ID="STR_ACE_MEDICAL_BLOOD_IV_500">
             <English>Blood IV (500ml)</English>
             <Russian>Кровь для переливания (500 мл)</Russian>
             <Spanish>Sangre IV (500ml)</Spanish>
-            <French>Cullot Sanguin IV (500ml)</French>
+            <French>Cullot sanguin IV (500ml)</French>
             <Polish>Krew IV (500ml)</Polish>
             <German>Blut IV (500ml)</German>
             <Hungarian>Vér-infúzió (500ml)</Hungarian>
@@ -920,7 +922,7 @@
             <English>Blood IV (250ml)</English>
             <Russian>Кровь для переливания (250 мл)</Russian>
             <Spanish>Sangre IV (250ml)</Spanish>
-            <French>Cullot Sanguin IV (250ml)</French>
+            <French>Cullot sanguin IV (250ml)</French>
             <Polish>Krew IV (250ml)</Polish>
             <German>Blut IV (250ml)</German>
             <Hungarian>Vér-infúzió (250ml)</Hungarian>
@@ -930,7 +932,7 @@
             <English>Saline IV (1000ml)</English>
             <Russian>Физраствор для в/в вливания (1000 мл)</Russian>
             <Spanish>Solución Salina IV (1000ml)</Spanish>
-            <French>Solution Saline 0.9% IV (1000ml)</French>
+            <French>Solution saline 0.9% IV (1000ml)</French>
             <Polish>Sól fizjologiczna IV (1000ml)</Polish>
             <German>Kochsalzlösung (1000ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (1000ml)</Hungarian>
@@ -940,7 +942,7 @@
             <English>Saline IV, for restoring a patients blood</English>
             <Russian>Пакет физраствора для возмещения объема потерянной крови</Russian>
             <Spanish>Solución salina intravenosa, para restaurar el volumen sanguíneo</Spanish>
-            <French>Solution Saline 0.9% IV, pour rétablir temporairement la tension artérielle</French>
+            <French>Solution saline 0.9% IV, pour rétablir temporairement la tension artérielle</French>
             <Polish>Sól fizjologiczna, podawana dożylnie (IV), używana w celu uzupełnienia krwi u pacjenta</Polish>
             <Hungarian>0,9%-os sósvíz-infúzió, a páciens vérmennyiségének helyreállítására</Hungarian>
             <Italian>Soluzione salina, usata per ripristinare sangue nei pazienti.</Italian>
@@ -949,7 +951,7 @@
             <English>A medical volume-replenishing agent introduced into the blood system through an IV infusion.</English>
             <Russian>Пакет физиологического раствора для возмещения объема потерянной крови путем внутривенного вливания</Russian>
             <Spanish>Suero fisiológico inoculado al torrente sanguíneo de forma intravenosa.</Spanish>
-            <French>Un remplacement temporaire pour rétablir la tension artérielle lors de perte sanguine, administré par intra-veineuse</French>
+            <French>Un remplacant temporaire pour rétablir la tension artérielle lors de perte sanguine, administré par intra-veineuse</French>
             <Polish>Używany w medycynie w formie płynu infuzyjnego jako środek nawadniający i uzupełniający niedobór elektrolitów, podawany dożylnie (IV).</Polish>
             <Hungarian>Egy orvosi térfogat-helyreállító készítmény, melyet intravénás módon lehet a szervezetbe juttatni.</Hungarian>
             <Italian>Una soluzione medica per ripristinare il volume del sangue introdotta tramite trasfusione IV.</Italian>
@@ -958,7 +960,7 @@
             <English>Saline IV (500ml)</English>
             <Russian>Физраствор для в/в вливания (500 мл)</Russian>
             <Spanish>Salino IV (500ml)</Spanish>
-            <French>Solution Saline 0.9% IV (500ml)</French>
+            <French>Solution saline 0.9% IV (500ml)</French>
             <Polish>Sól fizjologiczna IV (500ml)</Polish>
             <German>Kochsalzlösung (500ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (500ml)</Hungarian>
@@ -968,7 +970,7 @@
             <English>Saline IV (250ml)</English>
             <Russian>Физраствор для в/в вливания (250 мл)</Russian>
             <Spanish>Salino IV (250ml)</Spanish>
-            <French>Solution Saline 0.9% IV (250ml)</French>
+            <French>Solution saline 0.9% IV (250ml)</French>
             <Polish>Sól fizjologiczna IV (250ml)</Polish>
             <German>Kochsalzlösung (250ml)</German>
             <Hungarian>0,9%-os sósvíz-infúzió (250ml)</Hungarian>
@@ -978,7 +980,7 @@
             <English>Basic Field Dressing (QuikClot)</English>
             <Russian>Первичный перевязочный пакет (QuikClot)</Russian>
             <Spanish>Vendaje básico (QuickClot)</Spanish>
-            <French>Bandage Regulier (Coagulant)</French>
+            <French>Bandage basique (Hémostatique)</French>
             <Polish>Podstawowy pakiet opatrunkowy (QuikClot)</Polish>
             <German>Verbandpäckchen(Gerinnungsmittel)</German>
             <Hungarian>Általános zárókötszer (QuikClot)</Hungarian>
@@ -988,7 +990,7 @@
             <English>QuikClot bandage</English>
             <Russian>Гемостатический пакет QuikClot</Russian>
             <Spanish>Vendaje QuikClot</Spanish>
-            <French>Bandage coagulant</French>
+            <French>Bandage hémostatique</French>
             <Polish>Hemostatyczny pakiet QuikClot. Podstawowy opatrunek stosowany na rany.</Polish>
             <German>Bandage mit Gerinnungsmittel</German>
             <Hungarian>QuikClot kötszer</Hungarian>
@@ -1064,7 +1066,7 @@
         </Key>
         <Key ID="STR_ACE_MEDICAL_BODYBAG_DISPLAY">
             <English>Bodybag</English>
-            <French>Sac à corps</French>
+            <French>Housse mortuaire</French>
             <Russian>Мешок для трупов</Russian>
             <Spanish>Bolsa para cadáveres</Spanish>
             <Polish>Worek na zwłoki</Polish>
@@ -1427,7 +1429,7 @@
             <Polish>Załaduj pacjenta</Polish>
             <Czech>Naložit pacianta do</Czech>
             <Russian>Погрузить пациента в</Russian>
-            <French>Embarquer le Patient</French>
+            <French>Embarquer le patient</French>
             <Hungarian>Sebesült berakása</Hungarian>
             <Portuguese>Carregar Paciente Em</Portuguese>
             <Italian>Carica paziente nel</Italian>
@@ -1439,7 +1441,7 @@
             <Polish>Wyładuj pacjenta</Polish>
             <Czech>Vyložit pacienta</Czech>
             <Russian>Выгрузить пациента</Russian>
-            <French>Débarquer le Patient</French>
+            <French>Débarquer le patient</French>
             <Hungarian>Sebesült kihúzása</Hungarian>
             <Portuguese>Descarregar Paciente</Portuguese>
             <Italian>Scarica il paziente</Italian>
@@ -1449,7 +1451,7 @@
             <Spanish>Descargar el paciente</Spanish>
             <Russian>Выгрузить пациента</Russian>
             <Polish>Wyładuj pacjenta</Polish>
-            <French>Débarquer le Patient</French>
+            <French>Débarquer le patient</French>
             <Hungarian>Sebesült kihúzása</Hungarian>
             <Italian>Scarica il paziente</Italian>
         </Key>
@@ -1458,7 +1460,7 @@
             <Spanish>Cargar el paciente en</Spanish>
             <Russian>Погрузить пациента</Russian>
             <Polish>Załaduj pacjenta</Polish>
-            <French>Embarquer le Patient</French>
+            <French>Embarquer le patient</French>
             <Hungarian>Sebesült berakása</Hungarian>
             <Italian>Carica il paziente</Italian>
         </Key>
@@ -1523,6 +1525,7 @@
             <Russian>Сильно ранен</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
+            <French>Lourdement blessé</French>
         </Key>
         <Key ID="STR_ACE_Medical_LightlyWounded">
             <English>Lightly wounded</English>
@@ -1531,6 +1534,7 @@
             <Russian>Легко ранен</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
+            <French>Légèrement blessé</French>
         </Key>
         <Key ID="STR_ACE_Medical_VeryLightlyWounded">
             <English>Very lightly wounded</English>
@@ -1539,6 +1543,7 @@
             <Russian>Очень легко ранен</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
+            <French>Très légèrement blessé</French>
         </Key>
         <Key ID="STR_ACE_Medical_Head">
             <English>Head</English>
@@ -1547,6 +1552,7 @@
             <Russian>Голова</Russian>
             <Italian>Testa</Italian>
             <Spanish>Cabeza</Spanish>
+            <French>Tête</French>
         </Key>
         <Key ID="STR_ACE_Medical_Torso">
             <English>Torso</English>
@@ -1555,6 +1561,7 @@
             <Russian>Торс</Russian>
             <Italian>Torso</Italian>
             <Spanish>Torso</Spanish>
+            <French>Torse</French>
         </Key>
         <Key ID="STR_ACE_Medical_LeftArm">
             <English>Left Arm</English>
@@ -1563,6 +1570,7 @@
             <Russian>Левая рука</Russian>
             <Italian>Braccio sinistro</Italian>
             <Spanish>Brazo izquierdo</Spanish>
+            <French>Bras gouche</French>
         </Key>
         <Key ID="STR_ACE_Medical_RightArm">
             <English>Right Arm</English>
@@ -1571,6 +1579,7 @@
             <Russian>Правая рука</Russian>
             <Italian>Braccio destro</Italian>
             <Spanish>Brazo derecho</Spanish>
+            <French>Bras droit</French>
         </Key>
         <Key ID="STR_ACE_Medical_LeftLeg">
             <English>Left Leg</English>
@@ -1579,6 +1588,7 @@
             <Russian>Левая нога</Russian>
             <Italian>Gamba sinistra</Italian>
             <Spanish>Pierna izquierda</Spanish>
+            <French>Jambe gauche</French>
         </Key>
         <Key ID="STR_ACE_Medical_RightLeg">
             <English>Right Leg</English>
@@ -1587,6 +1597,7 @@
             <Russian>Правая нога</Russian>
             <Italian>Gamba destra</Italian>
             <Spanish>Pierna derecha</Spanish>
+            <French>Jambe droite</French>
         </Key>
         <Key ID="STR_ACE_Medical_painEffectType">
             <English>Pain Effect Type</English>
@@ -1595,6 +1606,7 @@
             <Russian>Вид боли</Russian>
             <Italian>Pain Effect Type</Italian>
             <Spanish>Tipo de efecto de dolor</Spanish>
+            <French>Type d'effet de douleur</French>
         </Key>
         <Key ID="STR_ACE_Medical_painEffect_Flash">
             <English>Colour Flashing</English>
@@ -1603,6 +1615,7 @@
             <Russian>Разноцветные вспышки</Russian>
             <Italian>Colore lampeggiante</Italian>
             <Spanish>Parpadeo de color</Spanish>
+            <French>Flash de couleur</French>
         </Key>
         <Key ID="STR_ACE_Medical_painEffect_Chroma">
             <English>Chromatic Aberration</English>
@@ -1611,6 +1624,7 @@
             <Russian>Хроматическая аберрация</Russian>
             <Italian>Aberrazione cromatica</Italian>
             <Spanish>Aberración cromática</Spanish>
+            <French>Aberration chromatique</French>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml
index c9cb4c4c6b..fdd7e5ee42 100644
--- a/addons/missileguidance/stringtable.xml
+++ b/addons/missileguidance/stringtable.xml
@@ -4,7 +4,7 @@
         <Key ID="STR_ACE_MissileGuidance">
             <English>Advanced Missile Guidance</English>
             <Spanish>Avanzada Misiles Orientación</Spanish>
-            <French>Avancée Missile orientation</French>
+            <French>Guidage avancé de missile</French>
             <Polish>Zaawansowane naprowadzanie rakiet</Polish>
             <German>Erweitertes Raketenlenksystem</German>
             <Czech>Pokročilé řízení střel</Czech>
@@ -16,7 +16,7 @@
         <Key ID="STR_ACE_Hydra70_DAGR">
             <English>Hydra-70 DAGR Missile</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>Hydra-70 DAGR</French>
             <Polish>Hydra-70 DAGR</Polish>
             <German>Hydra-70 DAGR Rackete</German>
             <Czech>Hydra-70 DAGR</Czech>
@@ -28,7 +28,7 @@
         <Key ID="STR_ACE_Hydra70_DAGR_Short">
             <English>DAGR</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>DAGR</French>
             <Polish>DAGR</Polish>
             <German>DAGR</German>
             <Czech>DAGR</Czech>
@@ -40,7 +40,7 @@
         <Key ID="STR_ACE_Hydra70_DAGR_Desc">
             <English>Hydra-70 DAGR Laser Guided Missile</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>Missile à guidage Hydra-70 DAGR</French>
             <Polish>Laserowo naprowadzana rakieta Hydra-70 DAGR</Polish>
             <German>Hydra-70 DAGR lasergelenkte Rakete</German>
             <Czech>Hydra-70 DAGR laserem naváděná střela</Czech>
@@ -52,7 +52,7 @@
         <Key ID="STR_ACE_Hellfire_AGM114K">
             <English>Hellfire II AGM-114K Missile</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>Hellfire II AGM-114K</French>
             <Polish>Hellfire II AGM-114K</Polish>
             <German>Hellfire II AGM-114K</German>
             <Czech>Hellfire II AGM-114K</Czech>
@@ -64,7 +64,7 @@
         <Key ID="STR_ACE_Hellfire_AGM114K_Short">
             <English>AGM-114K</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>AGM-114K</French>
             <Polish>AGM-114K</Polish>
             <German>AGM-114K</German>
             <Czech>AGM-114K</Czech>
@@ -76,7 +76,7 @@
         <Key ID="STR_ACE_Hellfire_AGM114K_desc">
             <English>Hellfire II AGM-114K Laser Guided Missile</English>
             <Spanish></Spanish>
-            <French></French>
+            <French>Missile à guidage laser Hellfire II AGM-114K</French>
             <Polish>Laserowo naprowadzana rakieta Hellfire II AGM-114K</Polish>
             <German>Hellfire II AGM-114K Lasergelenkte Rakete</German>
             <Czech>Hellfire II AGM-114K laserem naváděná střela</Czech>
@@ -86,4 +86,4 @@
             <Russian></Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 4f6e2cfb93..39a87f2ff4 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -17,7 +17,7 @@
             <German>Spielernamen anzeigen</German>
             <Spanish>Mostrar nombres de jugadores</Spanish>
             <Polish>Pokaż imiona graczy</Polish>
-            <French>Afficher nom des joueurs</French>
+            <French>Afficher les nom des joueurs</French>
             <Hungarian>Játékosnevek mutatása</Hungarian>
             <Czech>Zobrazit jména hráčů</Czech>
             <Portuguese>Mostrar nomes de jogadores</Portuguese>
@@ -104,4 +104,4 @@
             <Italian>Colore nametag di default (membri non del gruppo)</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 2bc66b8b52..660cfdb4e1 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -215,6 +215,7 @@
         </Key>
         <Key ID="STR_ACE_optionsMenu_uiScaing">
             <English>Option Menu UI Scaling</English>
+            <French>Menu option: taille de l'UI</French>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/realisticnames/stringtable.xml b/addons/realisticnames/stringtable.xml
index 2b02d7f5b7..04dd81e02e 100644
--- a/addons/realisticnames/stringtable.xml
+++ b/addons/realisticnames/stringtable.xml
@@ -1554,7 +1554,7 @@
         <Key ID="STR_ACE_RealisticNames_srifle_DMR_03_spotter">
             <English>TODO: NATO DMR (provisional) spotter</English>
             <Czech>TODO: NATO DMR (provisional) spotter</Czech>
-            <French>NATO DMR (provisoire) Observateur</French>
+            <French>NATO DMR (provisoire) observateur</French>
             <Spanish>TODO: NATO DMR (provisional) observador</Spanish>
             <Russian>TODO: NATO DMR (provisional) корректировщик</Russian>
         </Key>
@@ -1678,4 +1678,4 @@
             <Russian>TODO: SPMG .338 (песочный)</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index 5874b095ae..8b06099c3a 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -52,6 +52,7 @@
             <Spanish>Punto de reunión Oeste (Base)</Spanish>
             <Russian>Точка сбора Синих (База)</Russian>
             <Polish>Punkt zbiórki Zachodu (Baza)</Polish>
+            <French>Point de ralliement OUEST (Base)</French>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEastBase">
             <English>Rallypoint East (Base)</English>
@@ -59,6 +60,7 @@
             <Spanish>Punto de reunión Este (Base)</Spanish>
             <Russian>Точка сбора Красных (База)</Russian>
             <Polish>Punkt zbiórki Wschodu (Baza)</Polish>
+            <French>Point de ralliement EST (Base)</French>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependentBase">
             <English>Rallypoint Independent (Base)</English>
@@ -66,6 +68,7 @@
             <Spanish>Punto de reunión Independiente (Base)</Spanish>
             <Russian>Точка сбора Независимых (База</Russian>
             <Polish>Punkt zbiórki Ruchu oporu (Baza)</Polish>
+            <French>Point de ralliement Indépendant (Base)</French>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointWest">
             <English>Rallypoint West</English>
@@ -73,6 +76,7 @@
             <Spanish>Punto de reunión Oeste</Spanish>
             <Russian>Точка сбора Синих</Russian>
             <Polish>Punkt zbiórki Zachodu</Polish>
+            <French>Point de ralliement OUEST</French>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointEast">
             <English>Rallypoint East</English>
@@ -80,6 +84,7 @@
             <Spanish>Punto de reunión Este</Spanish>
             <Russian>Точка сбора Красных</Russian>
             <Polish>Punkt zbiórki Wschodu</Polish>
+            <French>Point de ralliement EST</French>
         </Key>
         <Key ID="STR_ACE_Respawn_RallypointIndependent">
             <English>Rallypoint Independent</English>
@@ -87,6 +92,7 @@
             <Spanish>Punto de reunión Independiente</Spanish>
             <Russian>Точка сбора Независимых</Russian>
             <Polish>Punkt zbiórki Ruchu oporu</Polish>
+            <French>Point de ralliement Indépendant</French>
         </Key>
     </Package>
 </Project>
\ No newline at end of file
diff --git a/addons/scopes/stringtable.xml b/addons/scopes/stringtable.xml
index dd5abdef55..caaff182f3 100644
--- a/addons/scopes/stringtable.xml
+++ b/addons/scopes/stringtable.xml
@@ -7,6 +7,7 @@
             <Russian>Малая корректировка ВВЕРХ</Russian>
             <Spanish>Ajuste menor arriba</Spanish>
             <Italian>Regola leggermente alzata in alto</Italian>
+            <French>Hausse +</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMinor">
             <English>Minor adjustment down</English>
@@ -14,6 +15,7 @@
             <Russian>Малая корректировка ВНИЗ</Russian>
             <Spanish>Ajuste menor abajo</Spanish>
             <Italian>Regola leggermente alzata in basso</Italian>
+            <French>Hausse -</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMinor">
             <English>Minor adjustment right</English>
@@ -21,6 +23,7 @@
             <Russian>Малая корректировка ВПРАВО</Russian>
             <Spanish>Ajuste menor derecha</Spanish>
             <Italian>Regola leggermente il tiro a destra</Italian>
+            <French>Dérive +</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMinor">
             <English>Minor adjustment left</English>
@@ -28,6 +31,7 @@
             <Russian>Малая корректировка ВЛЕВО</Russian>
             <Spanish>Ajuste menor izquierda</Spanish>
             <Italian>Regola leggermete il tiro a sinistra</Italian>
+            <French>Dérive -</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustUpMajor">
             <English>Major adjustment up</English>
@@ -35,6 +39,7 @@
             <Russian>Большая корректировка ВВЕРХ</Russian>
             <Spanish>Ajuste mayor arriba</Spanish>
             <Italian>Regola l'alzata in alto</Italian>
+            <French>Hausse +++</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustDownMajor">
             <English>Major adjustment down</English>
@@ -42,6 +47,7 @@
             <Russian>Большая корректировка ВНИЗ</Russian>
             <Spanish>Ajuste mayor abajo</Spanish>
             <Italian>Regola l'alzata in basso</Italian>
+            <French>Hausse ---</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustRightMajor">
             <English>Major adjustment right</English>
@@ -49,6 +55,7 @@
             <Russian>Большая корректировка ВПРАВО</Russian>
             <Spanish>Ajuste mayor derecha</Spanish>
             <Italian>Regola il tiro a destra</Italian>
+            <French>Dérive +++</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustLeftMajor">
             <English>Major adjustment left</English>
@@ -56,6 +63,7 @@
             <Russian>Большая корректировка ВЛЕВО</Russian>
             <Spanish>Ajuste mayor izquierda</Spanish>
             <Italian>Regola il tiro a sinistra</Italian>
+            <French>Dérive ---</French>
         </Key>
         <Key ID="STR_ACE_Scopes_AdjustZero">
             <English>Set zero adjustment</English>
@@ -63,6 +71,7 @@
             <Russian>Сбросить корректировку</Russian>
             <Spanish>Establecer ajuste a cero</Spanish>
             <Italian>Resetta i valori del tiro</Italian>
+            <French>RAZ corrections</French>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml
index 2278bf350d..7d1e1a1a2c 100644
--- a/addons/weather/stringtable.xml
+++ b/addons/weather/stringtable.xml
@@ -5,9 +5,9 @@
             <English>Show Wind Info</English>
             <Polish>Pokaż inf. o wietrze</Polish>
             <Russian>Показать информацию о погоде</Russian>
-            <French>Afficher information du vent</French>
+            <French>Afficher information sur le vent</French>
             <Spanish>Mostrar información del viento</Spanish>
             <Italian>Mostra informazioni sul vento</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From 9c076364ec79b44f18e6f4882f24693b2881d3a0 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:18:33 -0700
Subject: [PATCH 151/257] Titan AA asset functionality is now vanilla, locking
 doesn't override AA/AP stuff.

---
 addons/javelin/CfgVehicles.hpp               |  3 +++
 addons/javelin/CfgWeapons.hpp                | 15 ++++++++++++---
 addons/javelin/functions/fnc_onFired.sqf     |  4 ++--
 addons/javelin/functions/fnc_onOpticDraw.sqf |  8 +++++---
 4 files changed, 22 insertions(+), 8 deletions(-)

diff --git a/addons/javelin/CfgVehicles.hpp b/addons/javelin/CfgVehicles.hpp
index 02b8789e1a..5ea7e3327c 100644
--- a/addons/javelin/CfgVehicles.hpp
+++ b/addons/javelin/CfgVehicles.hpp
@@ -14,6 +14,9 @@ class CfgVehicles {
     class AT_01_base_F: StaticMGWeapon {
         class Turrets : Turrets {
             class MainTurret : MainTurret {
+                weapons[] = { "missiles_titan_static_at" };
+                magazines[] = {"1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles","1Rnd_GAT_missiles"};
+				
                 turretInfoType = "ACE_RscOptics_javelin";
                 gunnerOpticsModel = PATHTOF(data\reticle_titan.p3d);
                 opticsZoomMin = 0.08333;
diff --git a/addons/javelin/CfgWeapons.hpp b/addons/javelin/CfgWeapons.hpp
index 79e7c7358c..1392cd1a56 100644
--- a/addons/javelin/CfgWeapons.hpp
+++ b/addons/javelin/CfgWeapons.hpp
@@ -5,18 +5,27 @@ class CfgWeapons {
     class Launcher_Base_F : Launcher {
         class WeaponSlotsInfo; 
     };
-    
+
+    // @TODO: AA by default, motherfuckers
     class missiles_titan : MissileLauncher {
+        
+    };
+    
+    class missiles_titan_at : missiles_titan {
         weaponInfoType = "ACE_RscOptics_javelin";
         modelOptics = PATHTOF(data\reticle_titan.p3d);
          
         canLock = 0;
-
+        magazines[] = {"1Rnd_GAT_missiles"};
         lockingTargetSound[] = {"",0,1};
         lockedTargetSound[] = {"",0,1};
     };
+    class missiles_titan_static_at : missiles_titan_at { };
     
-    class launch_Titan_base : Launcher_Base_F {
+    // @TODO: AA by default, motherfuckers
+    class launch_Titan_base : Launcher_Base_F {};
+    
+    class launch_Titan_short_base : launch_Titan_base {
         weaponInfoType = "ACE_RscOptics_javelin";
         modelOptics = PATHTOF(data\reticle_titan.p3d);
          
diff --git a/addons/javelin/functions/fnc_onFired.sqf b/addons/javelin/functions/fnc_onFired.sqf
index a4e351cd92..8c6590f5df 100644
--- a/addons/javelin/functions/fnc_onFired.sqf
+++ b/addons/javelin/functions/fnc_onFired.sqf
@@ -6,9 +6,9 @@ PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 // Bail on not missile
 if( _shooter != ACE_player) exitWith { false }; 
 
-if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) 
+if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_short_base"] call EFUNC(common,inheritsFrom)) 
     &&  
-    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan"] call EFUNC(common,inheritsFrom)) }
+    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan_at"] call EFUNC(common,inheritsFrom)) }
 ) exitWith { };
 
 _pfh_handle = uiNamespace getVariable ["ACE_RscOptics_javelin_PFH", nil];
diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf
index 73f07d3e90..adbd2fde1c 100644
--- a/addons/javelin/functions/fnc_onOpticDraw.sqf
+++ b/addons/javelin/functions/fnc_onOpticDraw.sqf
@@ -30,16 +30,18 @@ _soundTime = _args select 4;
 _randomLockInterval = _args select 5;
 _fireDisabledEH = _args select 6;
 
-if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_base"] call EFUNC(common,inheritsFrom)) 
+if( ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "launch_Titan_short_base"] call EFUNC(common,inheritsFrom)) 
     &&
-    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan"] call EFUNC(common,inheritsFrom)) }
+    { ! ([ (configFile >> "CfgWeapons" >> (currentWeapon (vehicle ACE_player)) ), "missiles_titan_at"] call EFUNC(common,inheritsFrom)) }
     ) exitWith {
     __JavelinIGUITargeting ctrlShow false;
     __JavelinIGUITargetingGate ctrlShow false;
     __JavelinIGUITargetingLines ctrlShow false;
     __JavelinIGUITargetingConstraints ctrlShow false;
     
-    _fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire);
+    if(!isNil "_fireDisabledEH") then {
+        _fireDisabledEH = [_fireDisabledEH] call FUNC(enableFire);
+    };
     
     [(_this select 1)] call cba_fnc_removePerFrameHandler;
     uiNamespace setVariable["ACE_RscOptics_javelin_PFH", nil];

From c1ee623808b197ae2694dee08c8e30cf86762d85 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 19:22:24 +0200
Subject: [PATCH 152/257] Added a few static gui elements

---
 addons/atragmx/RscTitles.hpp                  | 42 ++++++++++++++++++-
 .../functions/fnc_show_atmo_env_data.sqf      |  2 +-
 .../functions/fnc_show_target_data.sqf        |  2 +-
 3 files changed, 42 insertions(+), 4 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 6497606683..c421f5df70 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -1213,6 +1213,12 @@ class ATragMX_Display {
         class TEXT_ATMO_ENV_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
             idc=13010;
         };
+        class TEXT_ATMO_ENV_DATA_CALC_METHOD: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=13011;
+            x=0.550*safezoneW+safezoneX+0.24;
+            y=0.265*safezoneH+safezoneY+0.29;
+            text="Calc Method";
+        };
         
         class TEXT_TARGET_DATA_LATITUDE: TEXT_BORE_HEIGHT {
             idc=14000;
@@ -1237,15 +1243,31 @@ class ATragMX_Display {
         };
         class TEXT_TARGET_DATA_WIND_SPEED: TEXT_TARGET_DATA_LATITUDE {
             idc=14002;
+            w=1.2;
             y=0.265*safezoneH+safezoneY+0.360;
             text="Wind Speed (m/s)";
         };
+        class TEXT_TARGET_DATA_WIND_SPEED_1: TEXT_TARGET_DATA_LATITUDE {
+            idc=141020;
+            colorText[]={0,0,0,0.6};
+            w=0.05;
+            h=0.03;
+            sizeEx=0.025;
+            x=0.550*safezoneW+safezoneX+0.270;
+            y=0.265*safezoneH+safezoneY+0.357;
+            text="1";
+        };
         class TEXT_TARGET_DATA_WIND_SPEED_INPUT_1: TEXT_TARGET_DATA_LATITUDE_INPUT {
             idc=140020;
             w=0.045;
-            x=0.550*safezoneW+safezoneX+0.300;
+            x=0.550*safezoneW+safezoneX+0.290;
             y=0.265*safezoneH+safezoneY+0.360;
         };
+        class TEXT_TARGET_DATA_WIND_SPEED_2: TEXT_TARGET_DATA_WIND_SPEED_1 {
+            idc=141021;
+            x=0.550*safezoneW+safezoneX+0.330;
+            text="2";
+        };
         class TEXT_TARGET_DATA_WIND_SPEED_INPUT_2: TEXT_TARGET_DATA_LATITUDE_INPUT {
             idc=140021;
             w=0.045;
@@ -1263,16 +1285,32 @@ class ATragMX_Display {
         };
         class TEXT_TARGET_DATA_INCLINATION_ANGLE: TEXT_TARGET_DATA_LATITUDE {
             idc=14004;
+            w=1.2;
             y=0.265*safezoneH+safezoneY+0.440;
             text="Inclination Angle";
         };
+        class TEXT_TARGET_DATA_INCLINATION_ANGLE_COSINE: TEXT_TARGET_DATA_LATITUDE {
+            idc=141041;
+            colorText[]={0,0,0,0.6};
+            w=0.05;
+            h=0.03;
+            sizeEx=0.025;
+            x=0.550*safezoneW+safezoneX+0.270;
+            y=0.265*safezoneH+safezoneY+0.437;
+            text="c";
+        };
         class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_COSINE: TEXT_TARGET_DATA_LATITUDE_INPUT {
             idc=140041;
             w=0.045;
-            x=0.550*safezoneW+safezoneX+0.300;
+            x=0.550*safezoneW+safezoneX+0.290;
             y=0.265*safezoneH+safezoneY+0.440;
             onKeyUp=QUOTE(if (_this select 1 == 28) then {0 call FUNC(update_inclination_angle)});
         };
+        class TEXT_TARGET_DATA_INCLINATION_ANGLE_DEGREE: TEXT_TARGET_DATA_INCLINATION_ANGLE_COSINE {
+            idc=141040;
+            x=0.550*safezoneW+safezoneX+0.330;
+            text="d";
+        };
         class TEXT_TARGET_DATA_INCLINATION_ANGLE_INPUT_DEGREE: TEXT_TARGET_DATA_LATITUDE_INPUT {
             idc=140040;
             w=0.045;
diff --git a/addons/atragmx/functions/fnc_show_atmo_env_data.sqf b/addons/atragmx/functions/fnc_show_atmo_env_data.sqf
index 9386956067..56f75f7844 100644
--- a/addons/atragmx/functions/fnc_show_atmo_env_data.sqf
+++ b/addons/atragmx/functions/fnc_show_atmo_env_data.sqf
@@ -17,7 +17,7 @@
 
 GVAR(showAtmoEnvData) = _this;
 
-{ctrlShow [_x, _this]} forEach [13000, 13001, 13002, 13003, 130030, 13004, 130040, 13005, 130050, 13006, 130060, 13007, 13008, 13009, 13010];
+{ctrlShow [_x, _this]} forEach [13000, 13001, 13002, 13003, 130030, 13004, 130040, 13005, 130050, 13006, 130060, 13007, 13008, 13009, 13010, 13011];
 
 if (_this) then {
     [] call FUNC(update_atmo_selection);
diff --git a/addons/atragmx/functions/fnc_show_target_data.sqf b/addons/atragmx/functions/fnc_show_target_data.sqf
index 8b206fee3a..4e696ae331 100644
--- a/addons/atragmx/functions/fnc_show_target_data.sqf
+++ b/addons/atragmx/functions/fnc_show_target_data.sqf
@@ -17,7 +17,7 @@
 
 GVAR(showTargetData) = _this;
 
-{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 140020, 140021, 14003, 140030, 14004, 140040, 140041, 14005, 140050, 14006, 140060, 14007, 14008, 14009, 14010, 14011];
+{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 14006, 140060, 14007, 14008, 14009, 14010, 14011];
 
 if (_this) then {
     [] call FUNC(update_target_data);

From 22456a4301f89e45f1c4734f45922b3bd0ecd1e0 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sat, 18 Apr 2015 19:49:29 +0200
Subject: [PATCH 153/257] use pain instead

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

diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf
index 0147b99204..a9e3625c2b 100644
--- a/addons/medical/functions/fnc_init.sqf
+++ b/addons/medical/functions/fnc_init.sqf
@@ -18,7 +18,7 @@ private ["_unit", "_allUsedMedication", "_logs", "_forceNew"];
 _unit = _this select 0;
 _forceNew = if (count _this > 1) then {_this select 1} else {false};
 
-if (!(isnil {_unit getvariable QGVAR(triageLevel)}) && !_forceNew) exitwith {};
+if (!(isnil {_unit getvariable QGVAR(pain)}) && !_forceNew) exitwith {};
 
 _unit setVariable [QGVAR(pain), 0];
 _unit setVariable [QGVAR(morphine), 0];

From 34b62a0a86237b62c5ba85c9356f3653f8f86cfc Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:50:16 -0700
Subject: [PATCH 154/257] Print privates declaration for file.

---
 tools/search_privates.py | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/tools/search_privates.py b/tools/search_privates.py
index 4b418de8d6..f3fbf60c10 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -81,10 +81,25 @@ def check_privates(filepath):
         
         if len(missing) > 0:
             print (filepath)
+            
+            private_output = 'private[';
+            first = True
+            for bad_priv in missing:
+                if first:
+                    first = False
+                    private_output = private_output + '"' + bad_priv
+                else: 
+                    private_output = private_output + '", "' + bad_priv
+                
+            private_output = private_output + '"];';
+            print private_output
+            
             for bad_priv in missing:
                 print ('\t' + bad_priv)
                 bad_count_file = bad_count_file + 1
-                
+           
+           
+            
     return bad_count_file
             
 def main():

From 87337bcb7a51a4e4be2728be25cdb3edb9b8eec3 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:50:22 -0700
Subject: [PATCH 155/257] ace_javelin privates

---
 addons/javelin/functions/fnc_onOpticDraw.sqf   | 7 +++++--
 addons/javelin/functions/fnc_onOpticUnload.sqf | 1 +
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/addons/javelin/functions/fnc_onOpticDraw.sqf b/addons/javelin/functions/fnc_onOpticDraw.sqf
index adbd2fde1c..74f7c49746 100644
--- a/addons/javelin/functions/fnc_onOpticDraw.sqf
+++ b/addons/javelin/functions/fnc_onOpticDraw.sqf
@@ -5,12 +5,15 @@ TRACE_1("enter", _this);
 #define __TRACKINTERVAL 0    // how frequent the check should be.
 #define __LOCKONTIME 3    // Lock on won't occur sooner
 
+private["_apos", "_aposX", "_aposY", "_args", "_boundsInput", "_bpos", "_canFire", "_constraintBottom"];
+private["_constraintLeft", "_constraintRight", "_constraintTop", "_currentTarget", "_fireDisabledEH"];
+private["_firedEH", "_fov", "_lastTick", "_lockTime", "_maxX", "_maxY", "_minX", "_minY", "_newTarget"]; 
+private["_offsetX", "_offsetY", "_pos", "_randomLockInterval", "_randomPosWithinBounds", "_range"];
+private["_runTime", "_soundTime", "_targetArray", "_zamerny"];
 
 #define __OffsetX ((ctrlPosition __JavelinIGUITargetingLineV) select 0) - 0.5
 #define __OffsetY ((ctrlPosition __JavelinIGUITargetingLineH) select 1) - 0.5
 
-private["_isJavelin", "_args", "_lastTick", "_runTime", "_soundTime", "_lockTime", "_newTarget", "_currentTarget", "_range", "_pos", "_targetArray"];
-
 // Reset arguments if we havnt rendered in over a second
 _args = uiNamespace getVariable[QGVAR(arguments), [] ];
 if( (count _args) > 0) then {
diff --git a/addons/javelin/functions/fnc_onOpticUnload.sqf b/addons/javelin/functions/fnc_onOpticUnload.sqf
index 4086c02766..187b6cf589 100644
--- a/addons/javelin/functions/fnc_onOpticUnload.sqf
+++ b/addons/javelin/functions/fnc_onOpticUnload.sqf
@@ -1,6 +1,7 @@
 //#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 TRACE_1("enter", _this);
+private["_args", "_disableFireEH", "_pfh"];
 
 uiNameSpace setVariable ['ACE_RscOptics_javelin',nil];
 

From 953faf3d4b1a4125ff75f1210da905c498bbf5e8 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:53:21 -0700
Subject: [PATCH 156/257] ace_missileguidance privates.

---
 addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf | 1 +
 addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf | 2 ++
 addons/missileguidance/functions/fnc_attackProfile_LIN.sqf     | 2 +-
 addons/missileguidance/functions/fnc_doAttackProfile.sqf       | 3 +--
 addons/missileguidance/functions/fnc_doSeekerSearch.sqf        | 2 +-
 addons/missileguidance/functions/fnc_guidancePFH.sqf           | 1 +
 addons/missileguidance/functions/fnc_onFired.sqf               | 2 ++
 addons/missileguidance/functions/fnc_rotateVectLine.sqf        | 1 +
 addons/missileguidance/functions/fnc_seekerType_Optic.sqf      | 1 +
 addons/missileguidance/functions/fnc_seekerType_SALH.sqf       | 2 +-
 10 files changed, 12 insertions(+), 5 deletions(-)

diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
index 1e13c57ccc..d84b3b126b 100644
--- a/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
+++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_DIR.sqf
@@ -9,6 +9,7 @@
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 private["_targetPos", "_projectilePos", "_target", "_seekerTargetPos", "_launchParams", "_targetLaunchParams"];
 private["_distanceToTarget", "_distanceToShooter", "_addHeight", "_returnTargetPos", "_state"];
+private["_cruisAlt", "_distanceShooterToTarget", "_shooterPos"];
 _seekerTargetPos = _this select 0;
 _launchParams = _this select 1;
 
diff --git a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
index e9064da404..393abebc19 100644
--- a/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
+++ b/addons/missileguidance/functions/fnc_attackProfile_JAV_TOP.sqf
@@ -9,6 +9,8 @@
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 private["_targetPos", "_projectilePos", "_target", "_seekerTargetPos", "_launchParams", "_targetLaunchParams"];
 private["_distanceToTarget", "_distanceToShooter", "_addHeight", "_returnTargetPos", "_state"];
+private["_cruisAlt", "_distanceShooterToTarget", "_shooterPos"];
+
 _seekerTargetPos = _this select 0;
 _launchParams = _this select 1;
 
diff --git a/addons/missileguidance/functions/fnc_attackProfile_LIN.sqf b/addons/missileguidance/functions/fnc_attackProfile_LIN.sqf
index 032ae51791..8c67e68402 100644
--- a/addons/missileguidance/functions/fnc_attackProfile_LIN.sqf
+++ b/addons/missileguidance/functions/fnc_attackProfile_LIN.sqf
@@ -3,7 +3,7 @@
 
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 private["_targetPos", "_projectilePos", "_target", "_seekerTargetPos", "_launchParams", "_targetLaunchParams"];
-private["_distanceToTarget", "_distanceToShooter", "_addHeight", "_returnTargetPos"];
+private["_distanceToTarget", "_distanceToShooter", "_addHeight", "_returnTargetPos", "_shooterPos"];
 _seekerTargetPos = _this select 0;
 _launchParams = _this select 1;
 
diff --git a/addons/missileguidance/functions/fnc_doAttackProfile.sqf b/addons/missileguidance/functions/fnc_doAttackProfile.sqf
index fa7c6f4f8b..b9a3502035 100644
--- a/addons/missileguidance/functions/fnc_doAttackProfile.sqf
+++ b/addons/missileguidance/functions/fnc_doAttackProfile.sqf
@@ -2,8 +2,7 @@
 #include "script_component.hpp"
 
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
-private["_attackProfilePos"];
-
+private["_testName", "_attackProfilePos", "_attackProfile", "_attackProfileName", "_attackProfilesCfg", "_i", "_launchParams", "_testame", "_testProfile"];
 _launchParams = ((_this select 1) select 1);
 _attackProfileName = _launchParams select 3;
 
diff --git a/addons/missileguidance/functions/fnc_doSeekerSearch.sqf b/addons/missileguidance/functions/fnc_doSeekerSearch.sqf
index 1e43d83218..081ab16353 100644
--- a/addons/missileguidance/functions/fnc_doSeekerSearch.sqf
+++ b/addons/missileguidance/functions/fnc_doSeekerSearch.sqf
@@ -2,7 +2,7 @@
 #include "script_component.hpp"
 
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
-private["_seekerProfilePos"];
+private["_seekerProfilePos", "_i", "_launchParams", "_seekerType", "_seekerTypeName", "_seekerTypesCfg", "_testName", "_testProfile"];
 
 _launchParams = ((_this select 1) select 1);
 _seekerTypeName = _launchParams select 2;
diff --git a/addons/missileguidance/functions/fnc_guidancePFH.sqf b/addons/missileguidance/functions/fnc_guidancePFH.sqf
index 2487e3b28f..614323d63f 100644
--- a/addons/missileguidance/functions/fnc_guidancePFH.sqf
+++ b/addons/missileguidance/functions/fnc_guidancePFH.sqf
@@ -7,6 +7,7 @@ private["_launchParams", "_targetLaunchParams", "_flightParams", "_seekerParams"
 private["_lastRunTime", "_runtimeDelta", "_adjustTime", "_args", "_seekerTargetPos", "_projectilePos"];
 private["_profileAdjustedTargetPos", "_incDeflection", "_minDeflection", "_maxDeflection"];
 private["_targetVector", "_adjustVector", "_finalAdjustVector", "_changeVector", "_pitch", "_yaw", "_roll"];
+private["_PS", "_distanceToTarget", "_targetRelativeVector", "_vectorTo"];
 
 _args = _this select 0;
 EXPLODE_7_PVT((_args select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf
index e36742bce5..071b2bbf99 100644
--- a/addons/missileguidance/functions/fnc_onFired.sqf
+++ b/addons/missileguidance/functions/fnc_onFired.sqf
@@ -8,6 +8,8 @@ if(GVAR(enabled) < 1 || {!local _projectile} ) exitWith { false };
 if( !isPlayer _shooter && { GVAR(enabled) < 2 } ) exitWith { false };
 
 private["_config", "_enabled", "_target", "_seekerType", "_attackProfile"];
+private["_args", "_canUseLock", "_guidingUnit", "_launchPos", "_lockMode", "_targetPos", "_vanillaTarget"];
+
 PARAMS_7(_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 
 // Bail on not missile
diff --git a/addons/missileguidance/functions/fnc_rotateVectLine.sqf b/addons/missileguidance/functions/fnc_rotateVectLine.sqf
index b0360cc330..b9904f0e5a 100644
--- a/addons/missileguidance/functions/fnc_rotateVectLine.sqf
+++ b/addons/missileguidance/functions/fnc_rotateVectLine.sqf
@@ -1,4 +1,5 @@
 #include "script_component.hpp"
+private["_d", "_map", "_p", "_theta", "_u"];
 
 _map = _this select 0;
 _theta = _this select 1;
diff --git a/addons/missileguidance/functions/fnc_seekerType_Optic.sqf b/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
index 45e378c975..872f33a917 100644
--- a/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
+++ b/addons/missileguidance/functions/fnc_seekerType_Optic.sqf
@@ -3,6 +3,7 @@
 
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
 private["_targets", "_foundTargetPos", "_launchParams", "_seekerParams", "_targetLaunchParams"];
+private["_angleFov", "_angleOkay", "_losOkay", "_seekerTargetPos", "_sensorPos", "_target"];
 
 _seekerTargetPos = _this select 0;
 
diff --git a/addons/missileguidance/functions/fnc_seekerType_SALH.sqf b/addons/missileguidance/functions/fnc_seekerType_SALH.sqf
index 07f997a041..7aafad1114 100644
--- a/addons/missileguidance/functions/fnc_seekerType_SALH.sqf
+++ b/addons/missileguidance/functions/fnc_seekerType_SALH.sqf
@@ -2,8 +2,8 @@
 #include "script_component.hpp"
 
 EXPLODE_7_PVT(((_this select 1) select 0),_shooter,_weapon,_muzzle,_mode,_ammo,_magazine,_projectile);
+private["_angleFov", "_canSeeTarget", "_foundTargetPos", "_laserResult", "_launchParams", "_seekerParams", "_seekerTargetPos", "_sensorPos", "_target"];
 _seekerTargetPos = _this select 0;
-
 _launchParams = _this select 1;
 _seekerParams = _launchParams select 3;
 _angleFov = _seekerParams select 0;

From 8361ec3812d099edf34dd49519faffcea3e639ef Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:57:11 -0700
Subject: [PATCH 157/257] ace_lasers

---
 addons/laser/XEH_pre_init.sqf                 |  3 ---
 .../laser/functions/fnc_findStrongestRay.sqf  |  2 +-
 addons/laser/functions/fnc_laserTargetPFH.sqf |  2 +-
 addons/laser/functions/fnc_laser_init.sqf     |  1 +
 addons/laser/functions/fnc_rotateVectLine.sqf |  2 +-
 .../functions/fnc_seekerFindLaserSpot.sqf     |  9 ++++----
 addons/laser/functions/fnc_shootCone.sqf      |  3 +--
 .../functions/fnc_translateToModelSpace.sqf   | 16 --------------
 .../functions/fnc_translateToWeaponSpace.sqf  | 22 -------------------
 .../fnc_vanillaLaserSeekerHandler.sqf         |  2 +-
 10 files changed, 11 insertions(+), 51 deletions(-)
 delete mode 100644 addons/laser/functions/fnc_translateToModelSpace.sqf
 delete mode 100644 addons/laser/functions/fnc_translateToWeaponSpace.sqf

diff --git a/addons/laser/XEH_pre_init.sqf b/addons/laser/XEH_pre_init.sqf
index de56274759..2dd6e666eb 100644
--- a/addons/laser/XEH_pre_init.sqf
+++ b/addons/laser/XEH_pre_init.sqf
@@ -8,9 +8,6 @@ PREP(checkLos);
 
 PREP(findStrongestRay);
 
-PREP(translateToModelSpace);
-PREP(translateToWeaponSpace);
-
 PREP(onLaserDesignatorDraw);
 
 PREP(seekerFindLaserSpot);
diff --git a/addons/laser/functions/fnc_findStrongestRay.sqf b/addons/laser/functions/fnc_findStrongestRay.sqf
index e4238361cb..811b75d351 100644
--- a/addons/laser/functions/fnc_findStrongestRay.sqf
+++ b/addons/laser/functions/fnc_findStrongestRay.sqf
@@ -1,5 +1,5 @@
 #include "script_component.hpp"
-
+private["_checkPos", "_i", "_largest", "_largestSpot", "_list", "_outliers", "_remainingSpots", "_samplePos", "_spot", "_spots", "_testPos"];
 _list = _this select 0;
 _checkPos = _this select 1;
 _spots = [];
diff --git a/addons/laser/functions/fnc_laserTargetPFH.sqf b/addons/laser/functions/fnc_laserTargetPFH.sqf
index d73d9f070a..4c4f242482 100644
--- a/addons/laser/functions/fnc_laserTargetPFH.sqf
+++ b/addons/laser/functions/fnc_laserTargetPFH.sqf
@@ -2,7 +2,7 @@
 #include "script_component.hpp"
 TRACE_1("enter", _this);
 
-private["_args", "_laserTarget"];
+private["_args", "_laserTarget", "_pos", "_shooter", "_uuid"];
 //TRACE_1("enter", _this);
 _args = _this select 0;
 _laserTarget = _args select 0;
diff --git a/addons/laser/functions/fnc_laser_init.sqf b/addons/laser/functions/fnc_laser_init.sqf
index 378ee38407..2be349c294 100644
--- a/addons/laser/functions/fnc_laser_init.sqf
+++ b/addons/laser/functions/fnc_laser_init.sqf
@@ -3,6 +3,7 @@
 TRACE_1("enter", _this);
 
 PARAMS_1(_laserTarget);
+private["_uuid"];
 
 // Add the target to the global targets array
 // Everyone tracks them
diff --git a/addons/laser/functions/fnc_rotateVectLine.sqf b/addons/laser/functions/fnc_rotateVectLine.sqf
index ec85a83cb7..8bae491c4e 100644
--- a/addons/laser/functions/fnc_rotateVectLine.sqf
+++ b/addons/laser/functions/fnc_rotateVectLine.sqf
@@ -1,5 +1,5 @@
 #include "script_component.hpp"
-
+private["_d", "_map", "_p", "_theta", "_u"];
 _map = _this select 0;
 _theta = _this select 1;
 
diff --git a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
index 41ea877739..77713eb591 100644
--- a/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
+++ b/addons/laser/functions/fnc_seekerFindLaserSpot.sqf
@@ -15,10 +15,11 @@
  
 #include "script_component.hpp"
 
-private ["_pos", "_seekerWavelengths", "_seekerCode", "_spots", "_buckets", "_excludes", "_bucketIndex", "_finalPos", "_owner", "_obj", "_x", "_method", 
-    "_emitterWavelength", "_laserCode", "_divergence", "_laser", "_laserPos", "_laserDir", "_res", "_bucketPos", "_bucketList", "_c", "_forEachIndex", "_index", 
-    "_testPos", "_finalBuckets", "_largest", "_largestIndex", "_finalBucket", "_owners", "_avgX", "_avgY", "_avgZ", "_count", "_maxOwner", "_maxOwnerIndex", "_finalOwner"];
-    
+private ["_pos", "_seekerWavelengths", "_seekerCode", "_spots", "_buckets", "_excludes", "_bucketIndex", "_finalPos", "_owner", "_obj", "_x", "_method"]; 
+private ["_emitterWavelength", "_laserCode", "_divergence", "_laser", "_laserPos", "_laserDir", "_res", "_bucketPos", "_bucketList", "_c", "_forEachIndex", "_index"]; 
+private ["_testPos", "_finalBuckets", "_largest", "_largestIndex", "_finalBucket", "_owners", "_avgX", "_avgY", "_avgZ", "_count", "_maxOwner", "_maxOwnerIndex", "_finalOwner"];
+private["_dir", "_seekerCos", "_seekerFov", "_testDotProduct", "_testPoint", "_testPointVector"]; 
+
 _pos = _this select 0;
 _dir = vectorNormalized (_this select 1);
 _seekerFov = _this select 2;
diff --git a/addons/laser/functions/fnc_shootCone.sqf b/addons/laser/functions/fnc_shootCone.sqf
index 801353d4f7..a7187aa0e4 100644
--- a/addons/laser/functions/fnc_shootCone.sqf
+++ b/addons/laser/functions/fnc_shootCone.sqf
@@ -1,7 +1,6 @@
 #include "script_component.hpp"
 //#define DEBUG_MODE_FULL
-private ["_divergence","_pos","_vec","_longestReturn","_shortestReturn","_resultPositions","_p1","_p2","_p","_v","_cp","_vecRotateMap","_result",
-            "_resultPos","_distance","_count","_pos2","_radOffset","_offset","_offsetPos","_offsetVector"];
+private ["_i", "_divergence","_pos","_vec","_longestReturn","_shortestReturn","_resultPositions","_p1","_p2","_p","_v","_cp","_vecRotateMap","_result", "_resultPos","_distance","_count","_pos2","_radOffset","_offset","_offsetPos","_offsetVector"];
 _divergence = 0.3;
 _pos = _this select 0;
 _vec = _this select 1;
diff --git a/addons/laser/functions/fnc_translateToModelSpace.sqf b/addons/laser/functions/fnc_translateToModelSpace.sqf
deleted file mode 100644
index 1e2e930ac7..0000000000
--- a/addons/laser/functions/fnc_translateToModelSpace.sqf
+++ /dev/null
@@ -1,16 +0,0 @@
-_object = _this select 0;
-_origin = getPosASL _object;
-_matrix = _this select 1;
-_xVec = _matrix select 0;
-_yVec = _matrix select 1;
-_zVec = _matrix select 2;
-
-_offset = _this select 2;
-
-_x = _offset select 0;
-_y = _offset select 1;
-_z = _offset select 2;
-
-_out = (((_xVec vectorMultiply _x) vectorAdd (_yVec vectorMultiply _y)) vectorAdd (_zVec vectorMultiply _z)) vectorAdd _origin;
-
-_out;
\ No newline at end of file
diff --git a/addons/laser/functions/fnc_translateToWeaponSpace.sqf b/addons/laser/functions/fnc_translateToWeaponSpace.sqf
deleted file mode 100644
index 2c7dc5e6da..0000000000
--- a/addons/laser/functions/fnc_translateToWeaponSpace.sqf
+++ /dev/null
@@ -1,22 +0,0 @@
-_object = _this select 0;
-_origin = getPosASL _object;
-_matrix = _this select 1;
-_xVec = _matrix select 0;
-_yVec = _matrix select 1;
-_zVec = _matrix select 2;
-
-_offset = _this select 2;
-
-_offset = _offset vectorDiff _origin;
-
-_x = _offset select 0;
-_y = _offset select 1;
-_z = _offset select 2;
-
-_out = [
-            ((_xVec select 0)*_x) + ((_xVec select 1)*_y) + ((_xVec select 2)*_z),
-            ((_yVec select 0)*_x) + ((_yVec select 1)*_y) + ((_yVec select 2)*_z),
-            ((_zVec select 0)*_x) + ((_zVec select 1)*_y) + ((_zVec select 2)*_z)
-        ];
-
-_out;
\ No newline at end of file
diff --git a/addons/laser/functions/fnc_vanillaLaserSeekerHandler.sqf b/addons/laser/functions/fnc_vanillaLaserSeekerHandler.sqf
index 38cd1839f9..091c4f7acf 100644
--- a/addons/laser/functions/fnc_vanillaLaserSeekerHandler.sqf
+++ b/addons/laser/functions/fnc_vanillaLaserSeekerHandler.sqf
@@ -12,7 +12,7 @@
 //#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 
-private["_emitter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
+private["_emmiter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
 
 _emmiter = _this select 0;
 _owner = _this select 1;

From dea95f7947ad0b1b15e938f4363a685a5ef5f2d8 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 10:57:35 -0700
Subject: [PATCH 158/257] ace_laser_selfdesignate

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

diff --git a/addons/laser_selfdesignate/functions/fnc_findLaserSource.sqf b/addons/laser_selfdesignate/functions/fnc_findLaserSource.sqf
index ac1ae7e438..27beed3c6a 100644
--- a/addons/laser_selfdesignate/functions/fnc_findLaserSource.sqf
+++ b/addons/laser_selfdesignate/functions/fnc_findLaserSource.sqf
@@ -13,7 +13,7 @@
 //#define DEBUG_MODE_FULL
 #include "script_component.hpp"
 
-private["_emitter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
+private["_emmiter", "_owner", "_gunnerInfo", "_turretInfo", "_povPos", "_povDir"];
 
 _emmiter = _this select 0;
 _owner = _this select 1;

From 85e5293c37ac85fc864667efbc7e9f25d390c0a7 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sat, 18 Apr 2015 19:59:41 +0200
Subject: [PATCH 159/257] Fix settings localization is done by the server
 instead of client #744

---
 .../functions/fnc_loadSettingsFromProfile.sqf | 30 +++++++++++++++++++
 .../functions/fnc_setSettingFromConfig.sqf    |  8 ++---
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf
index 69d86eac98..1817e2f40e 100644
--- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf
+++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf
@@ -13,6 +13,29 @@
  */
 #include "script_component.hpp"
 
+private ["_parseConfigForDisplayNames", "_name", "_isClientSetable", "_isForced", "_profileValue"];
+
+_parseConfigForDisplayNames = {
+    private "_optionEntry";
+    _optionEntry = _this select 0;
+    if !(isClass _optionEntry) exitwith {false};
+    _x set [3, getText (_optionEntry >> "displayName")];
+    _x set [4, getText (_optionEntry >> "description")];
+
+    private "_values";
+    _values = _x select 5;
+    {
+        private "_text";
+        _text = _x;
+        if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
+            _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
+            _values set [_forEachIndex, _text];
+        };
+    } forEach _values;
+    true;
+};
+
+
 // Iterate through settings
 {
     _name = _x select 0;
@@ -34,4 +57,11 @@
             };
         };
     };
+
+    if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
+        if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
+            [missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames;
+        };
+    };
+
 } forEach GVAR(settings);
diff --git a/addons/common/functions/fnc_setSettingFromConfig.sqf b/addons/common/functions/fnc_setSettingFromConfig.sqf
index 347320edec..3a1b6fd055 100644
--- a/addons/common/functions/fnc_setSettingFromConfig.sqf
+++ b/addons/common/functions/fnc_setSettingFromConfig.sqf
@@ -75,9 +75,9 @@ if (isNil _name) then {
         getNumber (_optionEntry >> "force") > 0,
         _value
     ];
-    
+
     //Strings in the values array won't be localized from the config, so just do that now:
-    private "_values";
+    /*private "_values";
     _values = _settingData select 5;
     {
         _text = _x;
@@ -85,8 +85,8 @@ if (isNil _name) then {
             _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
             _values set [_forEachIndex, _text];
         };
-    } forEach _values;
-    
+    } forEach _values;*/
+
 
     GVAR(settings) pushBack _settingData;
 

From 54a70f26b1e37d5d4ba553aab4153d7377dee6d7 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sat, 18 Apr 2015 20:06:01 +0200
Subject: [PATCH 160/257] Moved to own function.

---
 addons/common/XEH_postInit.sqf                |  1 +
 addons/common/XEH_preInit.sqf                 |  1 +
 .../functions/fnc_loadSettingsFromProfile.sqf | 29 +----------
 .../fnc_loadSettingsLocalizedText.sqf         | 48 +++++++++++++++++++
 4 files changed, 51 insertions(+), 28 deletions(-)
 create mode 100644 addons/common/functions/fnc_loadSettingsLocalizedText.sqf

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index e470e91c95..a5fdb5bd76 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -4,6 +4,7 @@
 // Load settings from profile
 if (hasInterface) then {
     call FUNC(loadSettingsFromProfile);
+    call FUNC(loadSettingsLocalizedText);
 };
 
 // Listens for global "SettingChanged" events, to update the force status locally
diff --git a/addons/common/XEH_preInit.sqf b/addons/common/XEH_preInit.sqf
index b5382d0b5e..5cb3aedc44 100644
--- a/addons/common/XEH_preInit.sqf
+++ b/addons/common/XEH_preInit.sqf
@@ -119,6 +119,7 @@ PREP(loadPerson);
 PREP(loadPersonLocal);
 PREP(loadSettingsFromProfile);
 PREP(loadSettingsOnServer);
+PREP(loadSettingsLocalizedText);
 PREP(map);
 PREP(moduleCheckPBOs);
 PREP(moduleLSDVehicles);
diff --git a/addons/common/functions/fnc_loadSettingsFromProfile.sqf b/addons/common/functions/fnc_loadSettingsFromProfile.sqf
index 1817e2f40e..7cb99e3400 100644
--- a/addons/common/functions/fnc_loadSettingsFromProfile.sqf
+++ b/addons/common/functions/fnc_loadSettingsFromProfile.sqf
@@ -13,28 +13,7 @@
  */
 #include "script_component.hpp"
 
-private ["_parseConfigForDisplayNames", "_name", "_isClientSetable", "_isForced", "_profileValue"];
-
-_parseConfigForDisplayNames = {
-    private "_optionEntry";
-    _optionEntry = _this select 0;
-    if !(isClass _optionEntry) exitwith {false};
-    _x set [3, getText (_optionEntry >> "displayName")];
-    _x set [4, getText (_optionEntry >> "description")];
-
-    private "_values";
-    _values = _x select 5;
-    {
-        private "_text";
-        _text = _x;
-        if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
-            _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
-            _values set [_forEachIndex, _text];
-        };
-    } forEach _values;
-    true;
-};
-
+private ["_name", "_isClientSetable", "_isForced", "_profileValue"];
 
 // Iterate through settings
 {
@@ -58,10 +37,4 @@ _parseConfigForDisplayNames = {
         };
     };
 
-    if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
-        if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
-            [missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames;
-        };
-    };
-
 } forEach GVAR(settings);
diff --git a/addons/common/functions/fnc_loadSettingsLocalizedText.sqf b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf
new file mode 100644
index 0000000000..280a1e9907
--- /dev/null
+++ b/addons/common/functions/fnc_loadSettingsLocalizedText.sqf
@@ -0,0 +1,48 @@
+/*
+ * Author: Glowbal
+ * Parse all settings and load the localized displayName and description for all text
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+private ["_parseConfigForDisplayNames", "_name"];
+
+_parseConfigForDisplayNames = {
+    private "_optionEntry";
+    _optionEntry = _this select 0;
+    if !(isClass _optionEntry) exitwith {false};
+    _x set [3, getText (_optionEntry >> "displayName")];
+    _x set [4, getText (_optionEntry >> "description")];
+
+    private "_values";
+    _values = _x select 5;
+    {
+        private "_text";
+        _text = _x;
+        if (((typeName _text) == "STRING") && {(count _text) > 1} && {(_text select [0,1]) == "$"}) then {
+            _text = localize (_text select [1, ((count _text) - 1)]); //chop off the leading $
+            _values set [_forEachIndex, _text];
+        };
+    } forEach _values;
+    true;
+};
+
+
+// Iterate through settings
+{
+    _name = _x select 0;
+
+    if !([configFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames) then {
+        if !([configFile >> "ACE_ServerSettings" >> _name] call _parseConfigForDisplayNames) then {
+            [missionConfigFile >> "ACE_Settings" >> _name] call _parseConfigForDisplayNames;
+        };
+    };
+
+} forEach GVAR(settings);

From 852b4df61df411717f4fbfe057f90af7a31b2398 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 11:16:18 -0700
Subject: [PATCH 161/257] Settings changes. createVehicleLocal derp.

---
 addons/medical/ACE_Settings.hpp               | 19 +++++++++----------
 .../functions/fnc_handleCreateLitter.sqf      |  8 +++-----
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 51ff72f465..a4c4e8dd04 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -73,11 +73,18 @@ class ACE_Settings {
     };
     class GVAR(allowLitterCreation) {
         typeName = "BOOL";
-        value = true;
+        value = 1;
+    };
+    class GVAR(litterSimulationDetail) {
+        displayName = "$STR_ACE_Medical_litterSimulationDetail";
+        description = "$STR_ACE_Medical_litterSimulationDetail_Desc";
+        typeName = "SCALAR";
+        value = 500;
+        isClientSettable = 1;
     };
     class GVAR(litterCleanUpDelay) {
         typeName = "SCALAR";
-        value = 1800;
+        value = -1;
     };
     class GVAR(medicSetting_PAK) {
         typeName = "SCALAR";
@@ -124,12 +131,4 @@ class ACE_Settings {
         values[] = {"$STR_ACE_Medical_painEffect_Flash", "$STR_ACE_Medical_painEffect_Chroma"};
         isClientSettable = 1;
     };
-    
-    class GVAR(litterSimulationDetail) {
-        displayName = "$STR_ACE_Medical_litterSimulationDetail";
-        description = "$STR_ACE_Medical_litterSimulationDetail_Desc";
-        typeName = "SCALAR";
-        value = 500;
-        isClientSettable = 1;
-    };
 };
diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
index f6bd821831..ac3ce5da5c 100644
--- a/addons/medical/functions/fnc_handleCreateLitter.sqf
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -2,15 +2,13 @@
 PARAMS_3(_litterClass,_position,_direction);
 private["_litterObject"];
 
-
-
-if (isnil QGVAR(allCreatedLitter)) then {
+if (isNil QGVAR(allCreatedLitter)) then {
     GVAR(allCreatedLitter) = [];
     GVAR(litterPFHRunning) = false;
 };
 
-if((count GVAR(allCreatedLitter)) <= GVAR(litterSimulationDetail) )then {
-    _litterObject = createVehicleLocal [_litterClass, _position, [], 0, "NONE"];
+if((count GVAR(allCreatedLitter)) <= GVAR(litterSimulationDetail) ) then {
+    _litterObject = _litterClass createVehicleLocal _position;
     _litterObject setDir _direction;
 } else {
     // @TODO: We hit max litter items, remove a few of them to work with what we have.

From 43dee5643fb47b170577889a7eecbac90d851506 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Sat, 18 Apr 2015 13:20:10 -0500
Subject: [PATCH 162/257] Python3 compatibility: parentheses for print

---
 tools/search_privates.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/search_privates.py b/tools/search_privates.py
index f3fbf60c10..6445a24dd7 100644
--- a/tools/search_privates.py
+++ b/tools/search_privates.py
@@ -92,7 +92,7 @@ def check_privates(filepath):
                     private_output = private_output + '", "' + bad_priv
                 
             private_output = private_output + '"];';
-            print private_output
+            print (private_output)
             
             for bad_priv in missing:
                 print ('\t' + bad_priv)

From e54c68f7f905c490f8f23d1c07750970aba85467 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 11:37:06 -0700
Subject: [PATCH 163/257] handle cleanup

---
 .../functions/fnc_handleCreateLitter.sqf      | 42 +++++++++++++++----
 1 file changed, 34 insertions(+), 8 deletions(-)

diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
index ac3ce5da5c..b46f4397cf 100644
--- a/addons/medical/functions/fnc_handleCreateLitter.sqf
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -1,4 +1,8 @@
+//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
+
+if(!hasInterface) exitWith { false };
+
 PARAMS_3(_litterClass,_position,_direction);
 private["_litterObject"];
 
@@ -7,15 +11,37 @@ if (isNil QGVAR(allCreatedLitter)) then {
     GVAR(litterPFHRunning) = false;
 };
 
-if((count GVAR(allCreatedLitter)) <= GVAR(litterSimulationDetail) ) then {
-    _litterObject = _litterClass createVehicleLocal _position;
-    _litterObject setDir _direction;
-} else {
-    // @TODO: We hit max litter items, remove a few of them to work with what we have.
-    // Basically, we should just start FIFO'ing these
+_litterObject = _litterClass createVehicleLocal _position;
+_litterObject setDir _direction;
+
+if((count GVAR(allCreatedLitter)) > GVAR(litterSimulationDetail) ) then {
+    // gank the first litter object, and spawn ours.
+    private["_oldLitter"];
+    _oldLitter = GVAR(allCreatedLitter) deleteAt 0;
+    {
+        deleteVehicle _x;
+    } forEach (_oldLitter select 1);
 };
 
-GVAR(allCreatedLitter) pushBack _litterObject;
-//GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+GVAR(allCreatedLitter) pushBack [time, [_litterObject]];
+
+if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then {
+    [{
+        {
+            if (time - (_x select 0) >= GVAR(litterCleanUpDelay)) then {
+                {
+                    deleteVehicle _x;
+                } foreach (_this select 1);
+                GVAR(allCreatedLitter) set[_foreachIndex, objNull];
+            };
+        }foreach GVAR(allCreatedLitter);
+        GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
+
+        if ( (count GVAR(allCreatedLitter)) == 0) exitwith {
+            [(_this select 1)] call CBA_fnc_removePerFrameHandler;
+            GVAR(litterPFHRunning) = false;
+        }; 
+    }, 30, []] call cba_fnc_addPerFrameHandler;
+};
 
 true
\ No newline at end of file

From ca74ce721d8eb61aa7278bb69df78a1f8a3ffe11 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 11:48:44 -0700
Subject: [PATCH 164/257] Use cleanup settings, and force server TTL on the
 events.

---
 addons/medical/ACE_Settings.hpp                     | 2 +-
 addons/medical/XEH_postInit.sqf                     | 2 +-
 addons/medical/functions/fnc_createLitter.sqf       | 2 ++
 addons/medical/functions/fnc_handleCreateLitter.sqf | 4 ++--
 4 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index a4c4e8dd04..b42d5bc5a6 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -84,7 +84,7 @@ class ACE_Settings {
     };
     class GVAR(litterCleanUpDelay) {
         typeName = "SCALAR";
-        value = -1;
+        value = 0;  
     };
     class GVAR(medicSetting_PAK) {
         typeName = "SCALAR";
diff --git a/addons/medical/XEH_postInit.sqf b/addons/medical/XEH_postInit.sqf
index b4d7d30d7a..9b384c67b7 100644
--- a/addons/medical/XEH_postInit.sqf
+++ b/addons/medical/XEH_postInit.sqf
@@ -268,4 +268,4 @@ if (USE_WOUND_EVENT_SYNC) then {
 
 
 // Networked litter
-[QGVAR(createLitter), FUNC(handleCreateLitter)] call EFUNC(common,addSyncedEventHandler);
+[QGVAR(createLitter), FUNC(handleCreateLitter), GVAR(litterCleanUpDelay)] call EFUNC(common,addSyncedEventHandler);
diff --git a/addons/medical/functions/fnc_createLitter.sqf b/addons/medical/functions/fnc_createLitter.sqf
index cc3e32eb5e..5299fbb244 100644
--- a/addons/medical/functions/fnc_createLitter.sqf
+++ b/addons/medical/functions/fnc_createLitter.sqf
@@ -47,6 +47,8 @@ _createLitter = {
     };
     _direction = (random 360);
     
+    // Create the litter, and timeout the event based on the cleanup delay
+    // The cleanup delay for events in MP is handled by the server side 
     [QGVAR(createLitter), [_litterClass,_position,_direction], 0] call EFUNC(common,syncedEvent);
     
     true
diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
index b46f4397cf..aca47250cd 100644
--- a/addons/medical/functions/fnc_handleCreateLitter.sqf
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -31,10 +31,10 @@ if(!GVAR(litterPFHRunning) && {GVAR(litterCleanUpDelay) > 0}) then {
             if (time - (_x select 0) >= GVAR(litterCleanUpDelay)) then {
                 {
                     deleteVehicle _x;
-                } foreach (_this select 1);
+                } forEach (_x select 1);
                 GVAR(allCreatedLitter) set[_foreachIndex, objNull];
             };
-        }foreach GVAR(allCreatedLitter);
+        } forEach GVAR(allCreatedLitter);
         GVAR(allCreatedLitter) = GVAR(allCreatedLitter) - [objNull];
 
         if ( (count GVAR(allCreatedLitter)) == 0) exitwith {

From f5705a91e637148a45160ff4a3559c10e03056de Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 12:04:48 -0700
Subject: [PATCH 165/257] oops.

---
 addons/common/XEH_postInit.sqf | 1 -
 1 file changed, 1 deletion(-)

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 2a20c0204d..27f234970e 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -215,7 +215,6 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
 if(isMultiplayer && { time > 0 || isNull player } ) then {
     // We are jipping! Get ready and wait, and throw the event
     [{
-        diag_log text format["JIP Detected, waiting"];
         if(!(isNull player)) then {   
             ["PlayerJip", [player] ] call FUNC(localEvent);
             [(_this select 1)] call cba_fnc_removePerFrameHandler;

From d8b461db913a3ef596f5ce22a07374a0a766da8b Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 21:17:37 +0200
Subject: [PATCH 166/257] Enabled wind deflection for grenades and vehicle
 gunners: *Added a new module option to disable WD for vehicle gunners *Fixed
 enabled setting not being initialized

---
 addons/winddeflection/ACE_Settings.hpp                     | 6 ++++++
 addons/winddeflection/CfgEventHandlers.hpp                 | 2 +-
 addons/winddeflection/CfgVehicles.hpp                      | 6 ++++++
 addons/winddeflection/functions/fnc_handleFired.sqf        | 7 ++++---
 addons/winddeflection/functions/fnc_initModuleSettings.sqf | 2 ++
 .../winddeflection/functions/fnc_updateTrajectoryPFH.sqf   | 2 +-
 6 files changed, 20 insertions(+), 5 deletions(-)

diff --git a/addons/winddeflection/ACE_Settings.hpp b/addons/winddeflection/ACE_Settings.hpp
index f84bdeace3..b10b78db0c 100644
--- a/addons/winddeflection/ACE_Settings.hpp
+++ b/addons/winddeflection/ACE_Settings.hpp
@@ -5,6 +5,12 @@ class ACE_Settings {
         typeName = "BOOL";
         value = 1;
     };
+    class GVAR(vehicleEnabled) {
+        displayName = "Vehicle Enabled";
+        description = "Enables wind deflection for static/vehicle gunners";
+        typeName = "BOOL";
+        value = 1;
+    };
     class GVAR(simulationInterval) {
         displayName = "Simulation Interval";
         description = "Defines the interval between every calculation step";
diff --git a/addons/winddeflection/CfgEventHandlers.hpp b/addons/winddeflection/CfgEventHandlers.hpp
index 4f54a73c84..d856993322 100644
--- a/addons/winddeflection/CfgEventHandlers.hpp
+++ b/addons/winddeflection/CfgEventHandlers.hpp
@@ -5,7 +5,7 @@ class Extended_PreInit_EventHandlers {
 };
 
 class Extended_FiredBIS_EventHandlers {
-    class CAManBase {
+    class AllVehicles {
         class ADDON {
             firedBIS = QUOTE(_this call FUNC(handleFired));
         };
diff --git a/addons/winddeflection/CfgVehicles.hpp b/addons/winddeflection/CfgVehicles.hpp
index 09dc1b69be..76ac0c13d3 100644
--- a/addons/winddeflection/CfgVehicles.hpp
+++ b/addons/winddeflection/CfgVehicles.hpp
@@ -17,6 +17,12 @@ class CfgVehicles {
                 typeName = "BOOL";
                 defaultValue = 1;
             };
+            class vehicleEnabled {
+                displayName = "Vehicle Enabled";
+                description = "Enables wind deflection for static/vehicle gunners";
+                typeName = "BOOL";
+                defaultValue = 1;
+            };
             class simulationInterval {
                 displayName = "Simulation Interval";
                 description = "Defines the interval between every calculation step";
diff --git a/addons/winddeflection/functions/fnc_handleFired.sqf b/addons/winddeflection/functions/fnc_handleFired.sqf
index 241fbcf839..f7090cfc2a 100644
--- a/addons/winddeflection/functions/fnc_handleFired.sqf
+++ b/addons/winddeflection/functions/fnc_handleFired.sqf
@@ -21,15 +21,16 @@
  */
 #include "script_component.hpp"
 
-if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) exitWith {false};
-
 private ["_unit", "_bullet"];
 _unit = _this select 0;
 _bullet = _this select 6;
 
+if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false] && (_bullet isKindOf "BulletBase") && (_unit isKindOf "Man")) exitWith {false};
+
 if (!hasInterface) exitWith {false};
 if (!(GVAR(enabled))) exitWith {false};
-if (!(_bullet isKindOf "BulletBase")) exitWith {false};
+if (!(GVAR(vehicleEnabled)) && !(_unit isKindOf "Man")) exitWith {false};
+if (!((_bullet isKindOf "BulletBase") || (_bullet isKindOf "GrenadeBase"))) exitWith {false};
 if (_unit distance ACE_player > GVAR(simulationRadius)) exitWith {false};
 if (!([_unit] call EFUNC(common,isPlayer))) exitWith {false};
 
diff --git a/addons/winddeflection/functions/fnc_initModuleSettings.sqf b/addons/winddeflection/functions/fnc_initModuleSettings.sqf
index 4cf75c885a..40be14a2b2 100644
--- a/addons/winddeflection/functions/fnc_initModuleSettings.sqf
+++ b/addons/winddeflection/functions/fnc_initModuleSettings.sqf
@@ -22,6 +22,8 @@ _activated = _this select 2;
 
 if !(_activated) exitWith {};
 
+[_logic, QGVAR(enabled), "enabled"] call EFUNC(common,readSettingFromModule);
+[_logic, QGVAR(vehicleEnabled), "vehicleEnabled"] call EFUNC(common,readSettingFromModule);
 [_logic, QGVAR(simulationInterval), "simulationInterval"] call EFUNC(common,readSettingFromModule);
 [_logic, QGVAR(simulationRadius), "simulationRadius"] call EFUNC(common,readSettingFromModule);
 
diff --git a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
index f5f1d3861e..4c2859f9b6 100644
--- a/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
+++ b/addons/winddeflection/functions/fnc_updateTrajectoryPFH.sqf
@@ -26,7 +26,7 @@
     _bulletVelocity = velocity _bullet;
     _bulletSpeed = vectorMagnitude _bulletVelocity;
     
-    if (!alive _bullet || _bulletSpeed < 100) exitwith {
+    if (!alive _bullet || ((_bullet isKindOf "BulletBase") && _bulletSpeed < 100)) exitwith {
         [_this select 1] call cba_fnc_removePerFrameHandler;
     };
     

From c08125e0f3c1ec3c282312cb996c4b1fbbcb0a40 Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Sat, 18 Apr 2015 22:00:37 +0200
Subject: [PATCH 167/257] PL translation

---
 addons/medical/stringtable.xml         | 6 ++++--
 addons/missileguidance/stringtable.xml | 2 ++
 addons/optionsmenu/stringtable.xml     | 4 +++-
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 6039d9e5b2..66d84c321d 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -4,9 +4,11 @@
     <Package name="Medical">
         <Key ID="TR_ACE_Medical_litterSimulationDetail">
             <English>Litter Simulation Detail</English>
+            <Polish>Detale zużytych medykamentów</Polish>
         </Key>
         <Key ID="TR_ACE_Medical_litterSimulationDetail_Desc">
             <English>Litter simulation detail level sets the number of litter items which will be locally spawned in the client. Excessive amounts in local areas could cause FPS lag, so this is a client only setting.</English>
+            <Polish>Opcja ta ustawia liczbę zużytych medykamentów, jakie pojawiają się lokalnie wokół gracza. Ich zbyt duża ilość może spowodować spadki FPS, dlatego jest to ustawienie tylko po stronie klienta.</Polish>
         </Key>
         <Key ID="STR_ACE_Medical_Inject_Atropine">
             <English>Inject Atropine</English>
@@ -91,7 +93,7 @@
             <English>Bandage</English>
             <German>Verbinden</German>
             <Spanish>Venda</Spanish>
-            <Polish>Bandaż</Polish>
+            <Polish>Bandażuj</Polish>
             <Czech>Obvázat</Czech>
             <French>Pansement</French>
             <Italian>Benda</Italian>
@@ -1633,4 +1635,4 @@
             <French>Aberration chromatique</French>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml
index 4cc5278031..50c25a7a96 100644
--- a/addons/missileguidance/stringtable.xml
+++ b/addons/missileguidance/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="missileguidance">
         <Key ID="STR_ACE_MissileGuidance">
@@ -15,6 +16,7 @@
         </Key>
         <Key ID="STR_ACE_MissileGuidance_Desc">
             <English>Advanced missile guidance, or AMG, provides multiple enhancements to missile locking and firing. It is also a framework required for missile weapon types.</English>
+            <Polish>Zaawansowane namierzanie rakiet, lub ZNR, dostarcza wiele poprawek do systemu namierzania rakiet oraz dodaje nowe tryby strzału. Jest to wymagana opcja dla broni rakietowych.</Polish>
         </Key>
         <Key ID="STR_ACE_Hydra70_DAGR">
             <English>Hydra-70 DAGR Missile</English>
diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 660cfdb4e1..63717719b4 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="OptionsMenu">
         <Key ID="STR_ACE_OptionsMenu_OpenConfigMenu">
@@ -99,7 +100,7 @@
             <German>Einstellung:</German>
             <Russian>Установки:</Russian>
             <Spanish>Ajuste:</Spanish>
-            <Polish>Ustawienie:</Polish>
+            <Polish>Ustaw:</Polish>
             <French>Paramètres</French>
             <Hungarian>Opció:</Hungarian>
             <Italian>Parametri:</Italian>
@@ -216,6 +217,7 @@
         <Key ID="STR_ACE_optionsMenu_uiScaing">
             <English>Option Menu UI Scaling</English>
             <French>Menu option: taille de l'UI</French>
+            <Polish>Skalowanie UI menu ustawień</Polish>
         </Key>
     </Package>
 </Project>
\ No newline at end of file

From 8dac6d3f3dbdd8b3d53b2de7be9b56eab87a8280 Mon Sep 17 00:00:00 2001
From: Grzegorz <gienkov.grzegorz@gmail.com>
Date: Sat, 18 Apr 2015 22:03:36 +0200
Subject: [PATCH 168/257] Update stringtable.xml

---
 addons/optionsmenu/stringtable.xml | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 946148fa79..e65087936e 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -216,11 +216,8 @@
         </Key>
         <Key ID="STR_ACE_optionsMenu_uiScaing">
             <English>Option Menu UI Scaling</English>
-<<<<<<< HEAD
             <French>Menu option: taille de l'UI</French>
-=======
->>>>>>> b2edeb01e48ce6e618b18f38f295cb5d6f0efb1d
             <Polish>Skalowanie UI menu ustawień</Polish>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 7ac7bc3f294e8ba47d6805a7bc2c8cd70858c9d2 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sat, 18 Apr 2015 22:06:42 +0200
Subject: [PATCH 169/257] eventhandler for creating and deleting cameras

---
 addons/common/XEH_postInit.sqf | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index e470e91c95..cff64e75c6 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -174,6 +174,31 @@ GVAR(OldPlayerWeapon) = currentWeapon ACE_player;
 
 }, 0, []] call cba_fnc_addPerFrameHandler;
 
+
+// PFH to raise camera created event. Only works on these cams by BI.
+#define ALL_CAMERAS [ \
+    missionNamespace getVariable ["BIS_DEBUG_CAM", objNull], \
+    missionNamespace getVariable ["BIS_fnc_camera_cam", objNull], \
+    uiNamespace getVariable ["BIS_fnc_arsenal_cam", objNull], \
+    uiNamespace getVariable ["BIS_fnc_animViewer_cam", objNull], \
+    missionNamespace getVariable ["BIS_fnc_establishingShot_fakeUAV", objNull] \
+]
+
+GVAR(OldIsCamera) = false;
+
+[{
+
+    // "activeCameraChanged" event
+    _isCamera = {!isNull _x} count ALL_CAMERAS > 0;
+    if !(_isCamera isEqualTo GVAR(OldIsCamera)) then {
+        // Raise ACE event locally
+        GVAR(OldIsCamera) = _isCamera;
+        ["activeCameraChanged", [ACE_player, _isCamera]] call FUNC(localEvent);
+    };
+
+}, 1, []] call cba_fnc_addPerFrameHandler; // feel free to decrease the sleep time if you need it.
+
+
 [QGVAR(StateArrested),false,true,QUOTE(ADDON)] call FUNC(defineVariable);
 
 ["displayTextStructured", FUNC(displayTextStructured)] call FUNC(addEventhandler);

From 283388eb7c2963cbef63cfb0a87749f0da50b3b8 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 22:12:37 +0200
Subject: [PATCH 170/257] Fixed a small calculation error in the wind speed
 output

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

diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
index e7679df53f..3e392bd55b 100644
--- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf
+++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
@@ -88,7 +88,7 @@ switch (GVAR(Menu)) do {
         if (!GVAR(MinAvgMax)) then {
             if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
                 _textCenterBig = Str(round(abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10);
-                _textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)];
+                _textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)];
             } else {
                 _textCenterBig = Str(round(abs(sin(GVAR(RefHeading)) * _windSpeed) * 10) / 10);
                 _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)];
@@ -120,7 +120,7 @@ switch (GVAR(Menu)) do {
         if (!GVAR(MinAvgMax)) then {
             if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
                 _textCenterBig = Str(round(abs(cos(GVAR(RefHeading) - _playerDir) * _windSpeed) * 10) / 10);
-                _textInfoLine1 = format["%1 m/s @ %2", round((cos(_playerDir - _windDir) * _windSpeed) * 10) / 10, round(_playerDir)];
+                _textInfoLine1 = format["%1 m/s @ %2", round((abs(cos(_playerDir - _windDir)) * _windSpeed) * 10) / 10, round(_playerDir)];
             } else {
                 _textCenterBig = Str(round(abs(cos(GVAR(RefHeading)) * _windSpeed) * 10) / 10);
                 _textInfoLine1 = format["%1 m/s @ %2", round(_windSpeed * 10) / 10, round(_windDir)];

From 454c6dfbfec05d29ec41a947a596fcd1557ffab8 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 22:58:23 +0200
Subject: [PATCH 171/257] Added more GUI elements to structure the ATragMX main
 page

---
 addons/atragmx/RscTitles.hpp                  | 35 ++++++++++++++++---
 .../atragmx/functions/fnc_show_main_page.sqf  |  2 +-
 2 files changed, 31 insertions(+), 6 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index c421f5df70..6562e694d1 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -263,7 +263,31 @@ class ATragMX_Display {
             idc=-1;
             x=0.55*safezoneW+safezoneX+0.315;
         };
-
+        
+        class TEXT_GUN_FRAME: ATragMX_RscText {
+            idc=1001;
+            style=64;
+            x=0.550*safezoneW+safezoneX+0.11;
+            y=0.265*safezoneH+safezoneY+0.25;
+            w=0.0925;
+            h=0.205;
+            text="";
+        };
+        class TEXT_ATMOSPHERE_FRAME: TEXT_GUN_FRAME {
+            idc=1002;
+            x=0.550*safezoneW+safezoneX+0.205;
+        };
+        class TEXT_TARGET_FRAME: TEXT_GUN_FRAME {
+            idc=1003;
+            x=0.550*safezoneW+safezoneX+0.3;
+        };
+        class TEXT_RESULT_FRAME: TEXT_GUN_FRAME {
+            idc=1004;
+            x=0.550*safezoneW+safezoneX+0.11;
+            y=0.265*safezoneH+safezoneY+0.46;
+            w=0.2825;
+            h=0.15;
+        };
         class TEXT_GUN_PROFILE: ATragMX_RscText {
             idc=1000;
             x=0.550*safezoneW+safezoneX+0.11;
@@ -438,13 +462,13 @@ class ATragMX_Display {
             text="B";
             action=QUOTE(1 call FUNC(change_target_slot));
         };
-        class TEXT_TARGET_C: TEXT_TARGET_B {
+        class TEXT_TARGET_C: TEXT_TARGET_A {
             idc=502;
             x=0.550*safezoneW+safezoneX+0.2512;
             text="C";
             action=QUOTE(2 call FUNC(change_target_slot));
         };
-        class TEXT_TARGET_D: TEXT_TARGET_B {
+        class TEXT_TARGET_D: TEXT_TARGET_A {
             idc=503;
             x=0.550*safezoneW+safezoneX+0.2743;
             text="D";
@@ -511,7 +535,7 @@ class ATragMX_Display {
         class TEXT_ELEVATION: TEXT_GUN_PROFILE {
             idc=40;
             w=0.05;
-            x=0.550*safezoneW+safezoneX+0.11;
+            x=0.550*safezoneW+safezoneX+0.115;
             y=0.265*safezoneH+safezoneY+0.50;
             text="Elev";
         };
@@ -570,7 +594,7 @@ class ATragMX_Display {
         class TEXT_LEAD: TEXT_GUN {
             idc=42;
             w=0.05;
-            x=0.550*safezoneW+safezoneX+0.11;
+            x=0.550*safezoneW+safezoneX+0.115;
             y=0.265*safezoneH+safezoneY+0.57;
             text="Lead";
             action=QUOTE(GVAR(showWind2) = !GVAR(showWind2); call FUNC(update_result); call FUNC(update_target));
@@ -679,6 +703,7 @@ class ATragMX_Display {
             h=0.45;
             x=0.550*safezoneW+safezoneX+0.11;
             y=0.265*safezoneH+safezoneY+0.24;
+            sizeEx=0.025;
             colorSelectBackground[]={0.15,0.21,0.23,0.3};
             colorSelectBackground2[]={0.15,0.21,0.23,0.3};
             onMouseButtonDblClick=QUOTE(true call FUNC(toggle_gun_list));
diff --git a/addons/atragmx/functions/fnc_show_main_page.sqf b/addons/atragmx/functions/fnc_show_main_page.sqf
index 607527a18e..ed999948b0 100644
--- a/addons/atragmx/functions/fnc_show_main_page.sqf
+++ b/addons/atragmx/functions/fnc_show_main_page.sqf
@@ -18,7 +18,7 @@
 GVAR(showMainPage) = _this;
 
 {ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 23, 230, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
-                                500, 501, 502, 503, 600, 601, 602, 603, 1000, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
+                                500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
 
 if (_this) then {
     if (GVAR(atmosphereModeTBH)) then {

From 21c772aa8d36512ef84ecd9e9bf9ea808ca2125a Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sat, 18 Apr 2015 23:14:40 +0200
Subject: [PATCH 172/257] Fixed scope adjustment conflicting with vehicle
 weapon zeroing

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

diff --git a/addons/scopes/functions/fnc_adjustScope.sqf b/addons/scopes/functions/fnc_adjustScope.sqf
index a59095d127..d13ff57ffc 100644
--- a/addons/scopes/functions/fnc_adjustScope.sqf
+++ b/addons/scopes/functions/fnc_adjustScope.sqf
@@ -16,7 +16,7 @@
 
 PARAMS_3(_unit,_turretAndDirection,_majorStep);
 
-if (vehicle _unit != _unit) exitWith {false};
+if (!(_unit isKindOf "Man")) exitWith {false};
 
 private ["_weaponIndex", "_zeroing", "_optic", "_increment", "_maxVertical", "_maxHorizontal", "_elevation", "_windage", "_zero", "_adjustment"];
 

From 365d6c81c4a0f49866505fa990bef465ca486135 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 14:39:51 -0700
Subject: [PATCH 173/257] Update javelin.md

Small description update just so something is here.
---
 documentation/feature/javelin.md | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/documentation/feature/javelin.md b/documentation/feature/javelin.md
index eecfa8844a..b253a25fc9 100644
--- a/documentation/feature/javelin.md
+++ b/documentation/feature/javelin.md
@@ -7,4 +7,15 @@ parent: wiki
 ---
 
 ## 1. Overview
-Blah blah blah
\ No newline at end of file
+Blah blah blah
+
+Steps to lock titan/Javelin:
+
+1. You must be zoomed ALL THE WAY IN
+2. You must be in thermal view
+3. You must have a missile loaded
+4. Hold TAB over a target, it will start beeping and the constraint boxes will appear
+5. Once the beeping changes to LOCK tone, and the lock crosshairs appear, click fire without releasing tab
+
+
+CTRL+TAB is default key to change firemode (configurable as a key)

From 43e287dc0f75373b1ca50fcdac3c020ca76f5c3d Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 14:41:17 -0700
Subject: [PATCH 174/257] Added PlayerJIP event.

---
 documentation/development/ace3-events-system.md | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/documentation/development/ace3-events-system.md b/documentation/development/ace3-events-system.md
index d7c99e558e..17bd431c12 100644
--- a/documentation/development/ace3-events-system.md
+++ b/documentation/development/ace3-events-system.md
@@ -52,6 +52,13 @@ PREP(onTapShoulder);
             <td>[_newPlayer, _oldPlayer]</td>
             <td>local</td>
         </tr>
+        <tr>
+            <td>"PlayerJIP"</td>
+            <td>Player was a JIP player, and `player` object is now created.</td>
+            <td>common</td>
+            <td>[_player]</td>
+            <td>local</td>
+        </tr>
         </tr>    
          <tr>
             <td>"playerInventoryChanged"</td>

From bce0d8498920e244df9371a5b0f5dd638fd95fc0 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Sat, 18 Apr 2015 18:41:36 -0300
Subject: [PATCH 175/257] Fix interact menu object ordering

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

diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
index 8d4734c8f8..6ed4b41de4 100644
--- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf
+++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
@@ -25,7 +25,7 @@ _fnc_renderNearbyActions = {
     _cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos;
 
     _numInteractObjects = 0;
-    _nearestObjects = nearestObjects [((getPosASL ACE_player) vectorAdd (_cameraDir vectorMultiply 5)) call EFUNC(common,ASLToPosition), ["All"], 8];
+    _nearestObjects = nearestObjects [ACE_player, ["All"], 13];
     {
         _target = _x;
 

From 41bd3cb6f506f8775db4210573f791397190a21d Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 14:43:22 -0700
Subject: [PATCH 176/257] documented synchronized events.

---
 documentation/development/ace3-events-system.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/documentation/development/ace3-events-system.md b/documentation/development/ace3-events-system.md
index 17bd431c12..33412aa8fa 100644
--- a/documentation/development/ace3-events-system.md
+++ b/documentation/development/ace3-events-system.md
@@ -23,6 +23,11 @@ Events can be removed or cleared with the following commands.
 * `[eventName, eventHandlerId] call ace_common_fnc_removeEventHandler` <br/> will remove a specific event handler of the event name, using the ID returned from `ace_common_fnc_addEventHandler`.
 * `[eventName] call ace_common_fnc_removeAllEventHandlers` <br/> will remove all event handlers for that type of event.
 
+### Synchronized Events
+* `[eventName, eventCodeBlock, ttlNumberOrCodeBlock] call ace_common_fnc_addSyncedEventHandler` <br/> adds a globally synchronized event handler which will expire events after the provided TTL, or the code returns true.
+* `[eventName] call ace_common_fnc_removeSyncedEventHandler` <br/> will remove a specific event handler of the event name, using the ID returned from `ace_common_fnc_addSyncedEventHandler`.
+* * `[eventName, args, ttlNumberOrCodeBlock] call ace_common_fnc_syncedEvent` <br/> calls a global synchronized event, which will also be run on JIP players unless it has expired; event will expire after the provided TTL, or the code returns true.
+
 ### Pattern:
 ```c++
 // tapper machine

From b3b172e13b3f18668e969df34540728f04a47948 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 14:46:01 -0700
Subject: [PATCH 177/257] drop bad docs.

---
 documentation/features/feature-list.md        | 20 -------------------
 documentation/features/titan-javelin-usage.md | 10 ----------
 2 files changed, 30 deletions(-)
 delete mode 100644 documentation/features/feature-list.md
 delete mode 100644 documentation/features/titan-javelin-usage.md

diff --git a/documentation/features/feature-list.md b/documentation/features/feature-list.md
deleted file mode 100644
index 9edc405ba2..0000000000
--- a/documentation/features/feature-list.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: wiki
-title: Features Documentation
-group: features
-order: 0
-parent: wiki
----
-
-
-**This page will get updated soon.**
-
-
-## Table of Contents
-
-  1. [][[Advanced Missile Guidanced Framework|WikiLink]]
-  2. [yy](#yy)
-  3. [zz](#zz)
-
-
-## What ACE3 has to offer
diff --git a/documentation/features/titan-javelin-usage.md b/documentation/features/titan-javelin-usage.md
deleted file mode 100644
index 8115e6812b..0000000000
--- a/documentation/features/titan-javelin-usage.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: wiki
-title: ACE Titan and Javelin
-group: features
-order: 0
-parent: wiki
----
-
-
-**This page will get updated soon.**

From 0bfd0840246955f958c15c04613022b9fa661fcc Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 14:54:32 -0700
Subject: [PATCH 178/257] extensions recompiled

---
 ace_advanced_ballistics.dll | Bin 613888 -> 613888 bytes
 ace_breakLine.dll           | Bin 208384 -> 712192 bytes
 ace_fcs.dll                 | Bin 779264 -> 787968 bytes
 3 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/ace_advanced_ballistics.dll b/ace_advanced_ballistics.dll
index 568e7c16db7de74c45b5a9a0b78735a3db594a49..3349bb5b38df8a69b01736e1346a576c8ef4fcb4 100644
GIT binary patch
delta 121
zcmZqJquQ`Xbpa!D(Ium1X2y1AMi6EKVrC#_0b*7lX4}rp$ew5^4^$M&00c}xoC?Hq
zUUM+axyb<%VgSmuH(Rl9Z?@u)oiBL4HC-*D`LSPr{wL=C)ef7Owr{-2u~-pg&Gzu$
H94nImPeCLu

delta 121
zcmZqJquQ`Xbpa!@&pNecX2y1AMi6EKVrC#_0b*7lX4}rp$ew5^zi6#mC<72M0dXo2
z&w0(kFy|%*NQeO_*WPT!zP;IsLw3I4t(%{pEK%O%yVLW~b=|rC)y&&B-sD)U$P84q
KJ^VMv$|L|-t0hSQ

diff --git a/ace_breakLine.dll b/ace_breakLine.dll
index edd00c78eb0218bb0d24ec14735be5de37c859d9..428df80092994ec765c2ee73530a7c9e4c7a216f 100644
GIT binary patch
literal 712192
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

literal 208384
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%0DW-oa!0L`}7h%jO-I(cf{G3Uut^
zJ~Vl76yIS|a2TDydOt$3kUy|;ftNf78URYnxK-Iiee>y+nA{HdmcaOj9*>dVmul&O
zgEW^_s$Gl#Y;NTDJ+>aILbX(zK_E03#{VV@jCyUpC4D#*FL=cY8NS&X+?c>VfM}%^
zj8uCHd9VQdupjU>HNm_DT*u_|<qkYQa%z0xogWZtGwFOmWY$hp@|d?j+aE+Zwf%r+
z0SIo?5*M<?xcLW5!r8w?s(XkEq8q6S=*JcXo=Y!E@T9SuwY<uYK#;6Q?m!`wN_>?)
zh%PL~vXEWG*hYbYbav6JjqhuaFI3N$NcD`M7``KQM_AmZrI?2?1n~waO9mHfeNPJH
zu^5|t#I<1rKx6!OlQgkO&3^|XXnE1RN*K(GuwBg~7gPS_Be=sP49-HVS#4<DB9@EO
zA}m((l!<ws8L&plwK|CuQuYGj=<EXaJFGwh2|DJLL6|yP#%fEDNkoKB*!3VxTYbPt
z{}?T?L-w{{hXtoADSSy0RKlyPtR@dc0AE*1wbWmHr76`mA=urLCDp!#fEc1uT?fK6
zOr^SiBGf-ruMjdOn#&leu92t0`eQu14_xBiL35Kys{I}QvSL8QibP1E8v16nZ}S;7
z%~#UpUuuDFerRw5tkvM&4H~!X7dU^_MDt>A3rVA|0xQ`SC`MbPZjLi4CD>L_YDkDe
z?gS9+8ORgM<eNETrSwyKDPtw@mC_Zg88T0!)I+Ouyub}e|5`-5>F0OL3EbBlUT(%m
znN@V2cXJY5;d??01EElpW__(#>)s;tqzhRM>VT<6Q?N?Jm0KK68>#;n;HVL$yv*mH
zX&87BxCq#U%-W6^lN_xZYi47Y2u?kQ#wud*oYrcDP0BnLftY^>#h4U>4OoPds&%Mx
zt=Kk9)^)cBCfGvu8#v~G`5PTFKaITV<^*q*&4hWyfi0QpNhAv;vbzF(Nk!}^?TYgI
zAb92cGwbi=wxKwU-*iU4rDC33-dmNeTARPNgyM|Ybq3er;nhFI$hyv7+|?bL<(Ucs
zAYM=sX|eQEVP$_n>)~6NVnIp}CI$FJ6J&cYzOrsB-m>X8@0x)%GzM>iI>%C2L{oew
z)tKb^e3I+)t+-b6o(oo3<UQD>Y#u>%u=2HG`fRC=g@}QxtrM>?1C1BOTa+O~*A4^?
z2&pa{A@&;Dvw!%0i!#_R0TII&_I+#%#j0s4gDV_NRqUlIAz9Fj=P^Rz{^lw^`jW)g
zE**N&eCUO-eMre1{8LY%C~%4of7uOGIA2__DF|Yiq;~sWrxdJ@3`wv?Se|+)eIk|*
zxUuSAK1_aBEFW@d`EX0cw`?kk7kcaCPLo8T{jWd&!?qmji?q4@#oIV4{R_kvS#-AL
ze8_ja)Amxo47A^GdAktf|7y6Vdx#KX5J?Xo29^GtcFw`v)E7hOWsGX*Ztx-0E_vUk
zB%5Fz)d8yk|GX|N6w<BIV+{byi_b`p)gS;T*;uU6s)E%uRjv~f12O_vEjh;k!8u_f
z9w&fB1J)hve%J*HNii1hV?$P?=Nzm0S1_M>bI#bIE@`T23|vnmaq~fpM70Fw6NmX4
zPal!sG#eX@GdomW-Q2;4WEb6<w#9)=Ij3EEi0=7N%j(UEI37l)vo;+36&F`;#>HdZ
zA34c%n>LY4MCqaD2vU_;hm8xJ8yB+dv%KfTjK&s5qci8xpKScmmO-~5=-oVJU@27S
z34^F0xiW>lw2P=qaKp@tY%px>Dqd+A4kxl7p=@x7_d%O!!&O9~R2Rf{L}&h9T0hY}
zoyP`c7A(ney~5s)q7lxA9TtbVu_k!O)9-CbGQq!0<&Gf-C43zU9R}v-nZ;@=Cjo0n
z&ToxW|G)ALOOiSQPpOZsIgdqqH4K^TlRuX~T^H4zm1LIceuf6=c34W4$z*FPtiZgW
z+OyeB=Q+G~c{pw+QSSC`f^6ai)SRb1+PbB*V^nTWPxsv9eZU^NZhCrg9K7wj64l$S
zkU!(4?Vc$ly0CN<g;Bj-!2_stV4{GdVFsbt&qR}8{^SQ$ELcI>3X0V|iWLxBcZW4$
zc^-lbQgay=16l4+7R*BH?Y1G5524w=*WXGBp&K-LiLGb<<UP^v`(g;9iF6<ei$G!o
zZR>-ck&ImXiKDGe*%&UZ0c=$GiCBF|;2ZT+au@l?4$rFHtAsB0oJN)rtsy2higI09
zjBB-%fmX3T$MUa>)*qi?jqi?S$#X$9-|(Ry7g=zgal_VQIG%lnk&+^r-YFx}t)A&v
zA^L8!I9c0Hj7>UuZ=?YCw4^O8(9b5;f>K-5eSyEB=&wL1UvAn@<9n-VPqEnwVYCu!
zwH72UGfl&vf5NXq*_J&fdx3vmBy9N__EU3_Q98~9Nz3I|Na|!~q2~&fpFqqatgNat
zQj(z8l9(c&-gsgWK6TF=d<v?6DBDwr8w}D|#bG?Xi4KQ5g{+0*!pl|)G+Qx!{+v(A
zw$#0Hvu7k^qYv&=U}kRdEwK2oz8K-6f9yr{T><+PqZRtT9qfGy=nE+u=t4%e54-CY
z)C^=CcW5<Ep&G9P0>Hi04F5k`_#XZ>wD58YT-L%r;-3>OyqSNGvs$SaOB@d@hvTSK
z!5IS$E7+M<5ZCYHZOf1OoJ8U$I19i{ATEklpi};Z8iC*hBA6PJVDACOJF39j8VL)^
z$H2H?HnO_wfYset_eE}aRZW}H<}dh2N1y#1xr&&B_W~|W+SS%Y_=~X=<G0MNPD}EH
zwc=)>6FqeeLnYye_JVSoe?>?E8^hyWIK)ati(~119HJKN!#ipemg~N9i|-b#ukbX&
zrvAP<Gn>A7^?O=hO`rg3c1d@^Onwroj6-4SuGv|<yR2p9)D|t^R{+OSoAU0$(EyGF
zx?w(93FR&J5#~&Ya{R>&MNi;}UNBh9#6Cdg7UT}xN<|KKsRREWn0TjHdv;-UX7XgH
zA+yY$>!X^Kt7iSk?3o(Xp^R^4_F0Y)&lmtl%=%F%w8fe&-d&cc4iAj!apw5=xTgK>
z-X?QP59!!rZ`Tmw-DO5G-{Cp{nGW~t3L*GQr793q{>Ol}Qu%*F`R_qxJy2hywtCwo
zTFEsdt-9a)byf4x2<4tYxOjJ|RQgFc{x7oQPhk@NtVk)9sv_`zF+f#C09CC7=qIIF
z`14~Y{%lx<Kb7S`+zVLMPXMdh2v}8Bxqo{#zT)3We{b__gIJlb?r%OyUQR|2{$5pt
ze}mm$WxvgH!uz$POi`Q3Ye|ec$~W4-!Q!v7%=esD_mH=fNOCZhJ8!<HXDQs`wY-A`
ziz#_u^7}5l4yYv<RX>_1Xl9obk>@#G+!>8=>y8S>GrDUbPhn`+Qt3n!yqGlecJWlH
zyS(32HM0oi7VSm_H8JDA!%lya=uZm$p}IP#t`4fJqulSKTIPB7p>nsVyPBCrk@(Z4
zz?%K@?RhYD{YFv})m^EFnvaGkR^J%^e9LW~Ubq`m!t2L4@;v94Ep1T`_8h`;Ecw&a
zrrXs|;lBkqv*R|;`Q`xSK}nVcp58k<m!Kw`<-rW#3d=|Pz<bI_hxgod>rVRfj(g9I
z*cj`MS&Es&^3i8}N(q}wwT~^9_l#?r+|2EdSp|j+wtL|_(xCa-0$2<CFCCO2K)PZ(
zgBA`}WmcEZ%3TUV4l}Sp(3e8@D|7<Qt`}Lu+%|ldy&%&2U;(Zrp#2F>p`zG3xFmFs
zS{jIEKcz$_UpTa#^-{=J0%+1o;rH<5Z2t06l>SoaN$dVn+z?f?kcHj;G15#UH*-%n
zZ=>r*oZjnqiCsW>r}8_<maX(d7H<3!t|b_M21xQkN40{;49=WOw)OG700;Mxf0nIe
zIFDN6B5wetLST8u1!wl6G+|CpD&AUxKIFw^kZ36^FnF<p4e!ZgBrg^!{ZLB`&NL<H
z#lQt+47b$ZN*^P9EEIQ5Hz6FuKi_#JH3jrUNraiOqbYkG3-(~V1xZNy<u0H0e2Co(
zeI;Dr(i@eP<*nR0V@~VCq$D?|Ew_wxf1$;il%Yw!;D)kGwO=7w={7rvPx0Gqc=5<x
zgO0ND+hl};8`iM1<ABwLBE+GIZAV|U;IkxcW7xh~BpOjn8xNobi-cz(;fp}+WiMYu
zXYS)|xk&e1FbOAlLKi`qg%&mRT95$$III_$b+-lNw7?f0fMP<zTY#o^<4aaF$V$--
zg{+E34fUDTZD&WVAdE0*#vRm*Z)3B}$E#G^i+ZTJQ)tiaWFKs&DJ6Hhh`lFbGeqo9
zB9<XyTSY8O#C|4Xb49F9#PURJqlhifq;8^*lo9~V^(3_tpNA^Tpm{hJRS>G29;qfM
zw6%*^IwjWIyh!v?F=YgdrV6!k4f0MdV&9DgP|oBA)^RmKuB>hI-ij4N5nDaD<0c?i
zA^ZAGl*_uY(kEWv-8Ui~CGd&U#==CHctm$Tv4GU+Jy&akUY*Gq2Ilh0NWIheaQ&Q|
zJXlxI#s1}8NlO$`-s&Igk#1a}#S{PFo_#7gqzF#6(ZI%AAcKZEUFAozcd$^v61N4G
zA$FuGI|e=|3VvSJPQTmE5NCc~_8E_GHvPQpLmuIr__;TeQoydCzP61RP#NXTq=Y6V
z#+ylrObYIAJyW())wU64EAe4l7-c-(VS+0dO2zXEIkHXTS>Y2vNC&6zA@DkynN?s#
z5S&Tb)tTIW<a3cmBQ_|?6T}LkuuTxlzrnt|neRRBRx@{iqO!mdIBesk1-}UH+eXbx
z@?x&eNnhYnTH~aYOF0S2(NW`wi~fghVKnC-f{U=#fj&eD;1JX+iAUOrN1n#=m%V`|
zSF<)D^C%jr!F>TN*!hvCJ|+)A%ZL3DX<Jw=Ph5e-(2?l;3pfyEna-fB`M?KfTKa|F
ze<*J=vVB-49Ys}z+63jgWW7aW@|dN-MSfnmb23bmORxkcw;cEPG2bT`-$lWFD_5xh
zDgkVX8mKu(mUEu4w`mdOV)r6NNim#>X|6kJj!i>9ZL^Odqb(c#jknU@@fP|!(?owW
z`#?tNmiTFilx~Sh<UiwkIWX)D|C!pwf37=*pXVM6OF|Mg$Fwbu|5~;s;1`E3+on*w
zt{rXF7PbmW&7f^7A-BaL))r>P-$;w8sV&ULv6^C^ukIkSY^}v~@2fkEU@(3P2Isb=
zNQBGB#*e|gG|MFsXY^v+2jdeF^kz~56Byjgeo1M{sO(^T0&w8GIQ;Z`ow9D54*xXz
zd=87(u9?UXoJmm4g$%ZkU7}yy7M_|Nnt?Q=34uA5;aCFqbc1tfbK;;f(D&q(DY%ag
z*y#<1L2jzb?2wUSY6CL9%!DYYByOj~Jex)zi4vSf(zXr$q^BXphuCb)CW<kH*<2!v
zCUIuQ$v@_5HX4Zw+1wjR`rV#Lf1mt_{$96+{%Q)t+8kbpeP}elX&@KTtrpp1UDu^A
zVrZp<qhYMHG3H{i@C^y>=V@%~j_GNzmV(=qc($<{-7Iv?esdFF7s2%C4zwq#^9}iK
z(`uuqpEr<xU4MG#<>|ed8Cc<(lrd%W%Y4+cC=#zKpfLzk%>InpmE}DWVlSIf2NrZt
zTOp0-j>4icZ@0<L-ookL4pViAy)mU0O0M))$a+bQKrvM5Hj8|5-AM?4`p(J~%D6HL
zv5DH3;C0O%LgS5~R1J4hSrW1O3e2@=|2I=X5s3_RaC+D()Ih2|2=3dq9KnVh`)`)w
zmu~K*x)%W!Mt;KL57vE9vfGEPeVMTN6E0w2#C_Pe`JnfN#kcu0`NFyd>}oU?&bf~x
zG8?Dt$j0IT@<jwc)r|(#gL)C^C5Js>={X0LSSqIklhi@l;(n%<><hfwmeaAYKEz(L
zxx?uTvE%u8ILyO3l{Z9AhlRF+?RPX#g7&4VNYFlzpq(cWuA7oj8L~R?Tm$Y#6={y9
z=D@I{k;<}g6i0X*C|TJH1Z`pE5wu~Yxt4B+Db=4aM`BB?4GuuL!;xooC@G$S+k7J4
zf+*=q|5S^L_4=VQIwY{NDP;5{bnpIzAs|ktU?*P)Gk3671{lYk<xW~r$ezJf8+mTV
zd5INPIh_)urT=j<q1=`<l?35#sL{#0*53@ZcyHc?U};-c&=lp%3q@d}DXKMV5+bSf
zc{ivtDLssa{LTwCt=tCl^K~B;6qTmuACYQf(Ijy9CO1p9<bFj>AZ7NPzR;FNN=b+Q
zUsi;uU#5?z&uzYM=M<Dh6tZ62+;R0Omp6=XNwB-791(K!`WrQxysJV@)vG2}dsn5J
z1bz6M6b0gLFsTwq3jG*F$@|wGzyKGYsQ3+Zk@?3`gHR7xhg%5MMDyx$Z|_B=2zL<;
zk=@N^CBM7b>WM~^r3q=2srGn}OjO&Nd&8QKgon<kqe}D4xC71UYcSR4;wqnRW$;*L
zFn$KlC2`x0V6N4h(`%WBs}A`>#iKZ%IZZ|IW>fKQ7|c-U+u_xVEY*Rvc%i7K?hy7&
z-FVB*KZo0UdYjIo%oLOf8(>&vWMdIH8w*H{w$!OXj62_K@)Jg-WCbF<aO!12(0Un7
z%5=~Zh@xa|;TS`~Io=DQ(v~uWg1paz@ze1kti0%j0*s76H!baV^7@jvxLI@rx?z&P
z+~%z$A3!jFC7=Fkgts*-jJnCc=#0E)-8aEoSm~=6+*d<7v{|rDh4`p=8|IbX%rufT
zxH2h6n_-E!5345V{b328K%?;qR45};G0(#bbf04&_?2*TLpW|fj=C-Lir67K5$}bf
zL1q@X4z2NlD4`&bTF8Eh4ArwUi}BQyawR!6_-~{}S|a||LfF>0xsAOI(s3TB3Ox<e
z8PA>|CxN~72ar3Js4;=+wlJcYxH`3|7&lXx?C68+37(3A+|UybD{^x-mNmWqL>O~F
zNpg*;U09kFq&5}eDbZ875^f`h5pW=7RU%3IHOFf4jRaRz&%Tl@SkiO){(L1~M9Kvy
zkP(c)IfNCbB_Y|qCANkM()Jc-F3bM_jE)M83`TGT<0xE}HH5?RuHKxB58!h!+q;R}
zb9#PXeIZGK1z)7+1(alI%?@(C2Gm-r?F1PO;TcJaB_q-ko*Ov5DDW*u>;r;Z)WVCW
zAkZE(Lq8yOZy+SsQ9XOPa*n9I3cTW($i0BtV76GDb|rK=ajKizgoELnK2!pA*x!k1
z^NRWW;~~qlQK7w_lT;UUsIr99XaxxiG9s0Em<KYY#wI5cPiAHBi%P~cK+nJ?Di?&q
zDZQqF7?z_Y3C#^g0JX%H+gXT_jO-COFsBxy4ED}g08x__%g|<I;1x9Y-!j^`L$mbp
zG$Jt|zryOZjGh2%EJObl7SxYl!xe(Fz!h7`bD(b~bu8`?aZ%Nmmf#7cr?-~$`Ez=m
z1qJ@iXIK>2ir;S9GV#@0*WU(<W?WOQ&sKYzzYFnOB)NIr%}%y|CoNTq<<sygCbEZK
zEGnb|_F~!)1>|j;fp7U{rr|GEA>=7w;I0Pu#JG=+&m*~TFtuC$l3!wPEKN^UAdf>z
z(^GIJC4TW<apq^>P*^S`w-oO0&2knL;_~tgOxz)YTNON|lnrvAxzmT(wS~Av>BT+C
z8KmNNfH>snW50TtQh53bg7I_dn;4yuTA1!4_!Uy&j(5Mr8spusut_sqV{qH*!X3NY
zk!ttX{~?uj=vtQ511J61F5w^ff5g+Ec0c|nx8pX7n~&WH$H0Gc`tD(%88m5I71RqS
z*~0rMnUAm5-g8|ELb*w~Rz74Fgl`O<<qiEf)t18UhrCi3+wjC6k9U?Je#!YS-z6VQ
zz`ZnX>DOCRXI6(pbgAKVKMhBp#Mu4^u~nl&7g<6-NwuZ11S)iq4QfUrZl!n*-1S*X
zHG8dmyMGDu!8z_S^4#mgRpy0@%1Zd&_FM2Q>%(#Wxew#|25$kPUf`xU^$Ql)jHh{_
zt_B63tg3l57ahb`Js;D(Bu-v2vkWHTX^1Q$p^%d>i`7v)2M@JSYqXGuQv3_-#nM#M
zf4#<=`8YNfCMBtie%Z*~bQ^#zGd#sE!3N{@U_8OSyU7b8AnY$qG}YVEm)evo%0#1l
ziucpD3otHxeR;N_R0V&3DOD#Zj%q@2<_mTka=t@TRC<98I!p*?#eTqk1XSl3K-A{K
zbZGlyYv_ODaTBhQTi2baX{OK$%up8K;Ict1w_ts892sy-1ZO(vCUwzrkgYZs=>@#a
z3uw~|7|4%0N2pF*G4cznvnbqqJ`As*t->iB{4sM4ne%3eFL}`z1?q}bzD28W`$TUH
z)NMz4_mpC_a=CYPx|LphuQ^9wsyGh)tIE}xkD5#{x@pT@?FBGUnF*YT*HHY&nV1Vj
zyq4lCGI570;&l{Xl<C*w4^ez}=3{#NVTxa$`J^6ip!kH$H$$}i$Y=`0X8wiZ5%@j`
zfy(e|w>5a6*jKq4hIFVPu1|}7D^@Mzl1H1(c98llW-kxaNnvL8YxEKM(xZ(5+C$%H
zL;r~Lr|x#TplIi!BUyj_D?S3VStX{fMTzX$w~h9=fqSq(g}{klN^-^1mkLke@pmAc
z+9e#9(yx=pxyDcYLN0&Kq~>&`!U?J;qH!@w4%q8XL%pUoX2d*`34YU~yL_BEdp`Hg
zq_4m(e{aimFJbquT<OKB{%9|YQEYiiC`QN*iv`Q_9rSJ%!dSty>=;2|TKlM7+`&^S
zjJ^}`T;<r`(AkOf)*iLlS84H8T78wa=CAG1&HhUJtFONLHXY_+IgiB2AMd1zz9G(B
zZ_irn>G3~29??cRo@j`(0=CH0qx+huIhF|Pj{$qwf+Bw%gND$66Da<kFlpoUp`Y+t
zWo;O3LbBwxb!QstzDLs5IsznNQcdwce*yq$`yOd~sJv(6sO07>r~j!K!n>1hXGL52
zj-z3Y+1nC=Rn_O%h-|R=>-vxhm%&bao07uyA$A&9LpK2~3jhZcGgDDNx(JyHSmS?F
zVRN+vII9>)ARfe`M9=a>Q>fjx<j`kmksVvTFnqkdVM`bl8yEo>8%jKZk_d!?>bHbb
zg9Re$pW^|l>(0RKq8Z!jI#A3DAUJjJH9V|7O%Q)=EM*Ga=f5+_dtuDRsOp8W<L!P|
zQXs~Ae#}N2MU(ul_Ii6D6t|WR`IB|6WJ*Ui!{xsvOFFl$EQ>a`HBf0}&*Rcl?cK^<
zSk5a~#(S&Qz~i~Pv5cQKC$S2gh~Y$pJ&VLGIOqMt6s%eJIq$|YSUJcuxyx3l>?&h1
zSN9+JUKB^Zg)H|)<ljn(eDlh%C8hvwv@bodC%d4)qhzKP!<J6Q2ZTfehhgnfK<+c2
zgW&XyFULy7d-0-YLR%OG(G1wLuL7^6mGmh&ny1b{hWFwRo+}0?S&k%uL*9#hP`7~e
z&9V$21G_0No{H%um$7QAt|;O?mNaOv^2rd^{cJVKWEg7t@F46(Pb{qD#5r!~RuF@V
zVRgHs33U{@F+nKwHl<{CfzEZ`)dblOqzI)TWlgY?hszL_-fDwnSPc?s@D~C?zR|G#
z(LJNx0ubj=|C~gq0{ryX7!n7v!GgXAExz@(^d(Gsn0Tgo^Y<wJQ-u7U6AiJoaI%d7
zfCu4n$zfXO?-3qUOe%^Y|6sdq_w7x=ZMXl8eWGsy$#`!COm>a5eYUi{2~J6K+8e6h
z1=2cKh7L-ud7j+6;V4uHpsPT8i+$)gs0n*p;U*8N=$?*sop?_DK}*{lD=0Uy|H5Ic
zJKQ(N=AUEt`*x$CJ4@9YOMNN0=*9Z&HoR?lntg#poqqvSRxb=4Z^@FIH*{0+m864|
zf=2hxneg^SlvZuEX3h7UgUTEmfh;K1R{&)>Sk-7UONgomNmK=1PM=BRM5?<31w+CU
zA8_|w_d>??FOcox72$L&|FB~4Zo&%_SCETAj1vVKK$`nk&FP>RC#g+fqqwqF#747l
zO5@FM53<{#K2N7GhuJT|-0I3Q9Idfbus*I3<T)0pwum~Co1DIh^JK2@A=Tyr_;x*N
z2A)$dz)jC&xPeB-4ai8U=IwL`PTi||poWf{E{(_F2B)mw4Nm)WNbFltR-k4+g=KK?
z3o@#d>W(6tW>~4IOT@6wB%OihShiK8b<{c5ZMFQ@wyhq&a7~V3+Z(poUaBsfV=wjD
zauk5G0*qraN#t*iX;_$$SYQ8o6d^hVg5>^Yh`R)mPxbXXq6v2-$a%h>?2%j+^b>wH
zCwx4Kg@WK0`Y}A6YzI;x3>HizVGx*#Qv^>^%>^M;3fReCp}LI01A;h?48Y+?I~Hf{
z>=d+8`*+`0xPM@U==tKdFxvcpD$FZFw2(tCYAG^w!>x<@$m>AT-U$~T>LWV_NB%N6
z(lik9uY_u$mDDL}9_;0o@sVn%R)qIK92-Pokm~UkdobVXLD8QfeHayq4`FettvHAb
zQmCUP5|KuI{QrzBEScM&vcON?xKk7L;den->Y*ZR3V)J04UU_XGWB6<F#uM;;pCm_
z!_;JmjYe!F{QvzDEW4d@v0I_Q0u7Xhsm=olZWu`L^hin&+)m}O(F1TBf|RjIWSonV
zFZDYZcotlCso%ka9JCKP$P3~7h-rQYcOpo7Ko3*<XYL?B2IJD7A)1KX?_)8MY$p`^
zITAvjw6ec%t3=<9P$NKnG>E{Z=UPgXzOoPMfAcH@;5!Knt9I(@wnDamqL=hBbmJ5m
z8zYR08PHgldz5KKzBJ}0R>urFu8@6?AY51#<JR<|a8Xsr*3%GH+g5PzY&e^?l~t46
z*##|4_9b{g?Gn>>ZaLO{m6*O0SsQ`N*JyM2j-ymSEBiZg(2e$yL`?+X{tl+r-qtmR
ztQbv2;-=qG8|T4Bq;8}8R)~0UZRPSqIVc$#EK+FmxV_QM#hrJ)gKH=q8lgky0?J2_
z7kf$EXW>;1_63$@I1lpAF>@!N8zr2as@z*P{8ujxczh++=FL_py)!2oiJ$s8*;Ocr
zACz9vkYja+)aUfpmz-<OId3WsM5XSnFX?T~IcIX9BpfT3$HC;D6ue!u+(tQWvy;sO
z-$O%^E;!P1&d^lfMN>VF8{*()v~O~bts3r!0EZqg9DVmM05m7tnEnPi*+y!*8xm>}
zY#bVG;AGq78nj{{C-U4weBxja@reT-;*-cjd>r=>Zy)dwpGemOP*fvz{i@20njlnR
zt2WLU>=&L+#)tZaf3g|9hk-cY7oKYqzT>yt3PbV&miu!~DEUq&by+%r$Coe+@rY-F
z6Hr?)z6>i6?7j<_9ZNQ>hu}#47;T@qBlVjhaR(+$%ulo^i$FpsoMOu|#4VkZ1!%(E
zooM8#x8~U6V6=gz!ucNF!Lf1&VhKL(=0d7Ffh2J6g7Qse)d>5auRvJ+0I#f21)S_f
z?6crha(5iY_+3IV!`u5)&n7zB;TpkjZbAn30Fseq6?ZU!`Yz4I3aSE&b>ZYg$qT+&
zj&!~^=~G(k1Vz@_17A?al3H{QviTxX!6tYRV^aEiltqasV0S-_#vi=8h=k<Y+u~mo
zgx^OeTLoPPh#ri;kpp>dpgic~4}>ZAcMy_jhY(MmI&%&Bfeu_z4_y90w;5MKI5wQ%
zhPvUd*EpBbQEzMkrQmoJ{TCcXA9@OHj-%*Ksu7)<N_C|a`Yp8tF1U1$9650@Xwf8O
zw+G|tYqajnK$-^L`1KK;cO$}?7yZI5{k7SEU+m%LoxfOc5>Ldhm)KqZq*)k;ikMqV
zTBJYa<JjmVI>nrer%o=mZyX5)S6!8f+#-P3o4lFi!~lY-kp1Bs)CjNxTt8R|*NY0o
z;8+tULE&v?DqFvb<Z2tR53{is8j-OC>Ju>W>ZYB#mHqQ)qEYjU0x6sV()I?kY7d2#
zqpIAGg6>2itB@s&&tu<nv3<h_g=`$f*`xm$s1q3pvdsX{UGcl9fRkN^7<`EYzG3%V
z0*@DPxFCC9v>wh%;7;I!4FfG^M~kH(S${PhXfZqX;3v~dtYr9RWjCO@SQ`@U%t{@B
zivY|Uaq^ez?a8NM!Wa5g0rNab{AD9o5BeH{H%&Y{a8O?ru^-|vs`kL_=8|Sm&<t9C
z(g~~d*3xYBnDkcOTwi`4nvGwV9mFjj9c;iM^cgsncDipYfbk58)3iP!iOja#H|ek`
zfJFmlbGlP?m|cU}o$eVrtPd-8?`|h0jdQwZ>fnC^Ot1u}`(_=sAFx9AEd_v!?>1?P
zlAP{q^+c}?lsCocPA;Hlk6`)ww3c+5(>+~JTBE_HJKfjmu=_Pwiqn0)4l5oga)#4=
zgAUHtk|sLcDLU+W4VLC~&(&dLHCTqzouk9T2a1GSk6ay0Cm2-gxlZ>y9d<~A<vHDX
zI;>5DEp)o)>##oqrZuF~>Ap<|Kc^+V!|7h2!|FBIQm1>N4pTJPa;H0AhpieYa+TA)
zNC(f?lCE~T7wfQ@8m!FePSatNG}s!aJ6(sx3=~=JbkEYk-RDHb6{lO)Vc%%5O-^@)
z4*OVxRXE+5I_w?5M8zMj2A??HvvtgiBK5<y9DJ(|_Gw_+VL9DdI(VH1-on8S9lUIy
zc$%b~?ra@H)~M*Mho9o$IXd`S4g3rTPt(C8HSlvBe2ot7gZ73-{fis}s|{SNaK35>
zjy~`bM<fj(+BC!~geZg9#Og!O^s0t?o#P@0a3&{vjN@=)fG-Nq*?zu`*LgX_$<}Du
zoA@^cI|IB#1MlWw!O;NE*1&r>STHrfR|Bk7>O+nZd<{&DmSG<U3)Tj>8>XIAQ`#~(
z!Q#{a0Dq-{4|1^Jae(&#tQCKlW0Lg@f7CLxbFkoaWcY;!?%-g->;PA5V8+3M-vR!w
zf#Q#Gj9__S7Hb)3TcC42z-bz|i-QH@13XCspW$G^`v6A`6yM7+g8hN%!m$ChLLUbU
z2>|dvG%#(Zbs+%oE)7f<ce)$^_*H<l#-XzoT@(QGgqFd^!9p4U{8J4~n_*ob0DQLw
zj^kh<698T~P<#T%2(bXnO<D$Wo<@=Zs|%96<1}y*2MghV)D{g)k00vt0pR0j`>CJC
zF+xND^C>XYIMX>;NC|-7)xaqnECdC>ztzAqI9SLEfFB(wo?cATWd$&bmVu1Koo*p3
z04~wMSsW~61;Du)crFJESpo131I6cYjF1(;#A_KAa<GsU0AD;KD&^#0Au9m>P6OY;
z!PlTEm!U0jkN+_cTIZ6byVI>n3!wh2<yp?*ny>);SAf^Ft^%}BmlSA5URpITEhCy%
z4BARwXt_(ZcjL-{Y@~kKfaS&pD|?dv+E@eswX=u#Zyft6|4m@)==WxJACD%nyZP@F
zwv7KyV+H(oI$OYhQ`j8-JA=vmH<6|C-!zuYe>2!*{Can11vg}|1P+?Z?EE*6S^4im
zX5zn2*6Sk*?_gd0cPV51cR6e4zpL0m{=1s(<G*EW5C2`mn)q)y+rfVo_B#LF#9raQ
z73@X)5((R@!Hw)mf^MgYggwH8G<mQJ9;69_t>wYTDOk#bG%K)WJV-MEbMhcbf0o08
zFH&$850ZdqH}D{dbT)+t-=*Lf9&DmuEDw?dW}!StQkV7C6J;c3*>MCp$s}FbR~$hS
zm3_v8Bt_X?9wf2J8hNmtf`8^g5|8W^9wd>-p65Z5f$T{hB)P{P;X#shtbzwgzOl7D
zNCJ(O@*oK@wu}c!a4{zjlCWYqJV?@s%|eiqOhSoG=Lix+Y!VNW@L{8PkfaTZ=0TD$
z%*2BvRoK}_s0m1tu%kRkqJw?KgCs84XFNzEg6-u&5(})62T2aFKl32*K6`}+iQn1t
zJV-pwp5#GdYW4_%oMhr<_5eo^|FR$RAn`1_n+J(S*-{=Pu4MT<NUX@R5rmDPzK7vw
zYTn8uQ_)}fK~#3xYNUcnYsatk)xL*RNdxoYl<E_9I~W)HJvgU?^NnB;JM%DhAH{($
z+aCD~S{*q}fe`hAIN8DxfK5AH<mbe`M(Rbby-?C}(}A=R%IJc^26IMAg*_v^$~HX(
zCOc^(JjYioYsrv3XVm6~rRMsCtTel)JMbOf!w4Cnz<0VF#!vom{I!lKfPWV`Y&x9<
z0<ua#ta4b223aH^DRS6S4U)kj8)nEemvcxVyOtn&tI%Z+eGFPsc!m_t6VfXaJ@M(4
z2_AZF(zm(yuk`uOd#I^!amU_z9*qT0o$^<tz?#+h8z5AE<miqoRxh|Mr+>>9Ar1EH
zIMu+8J+gqkU55___TwwQG!!q@{sXN8)!?g;j_ZcBdB&!8=N7QXkr3(@te!I9=&X~*
zg)dEdYs2gUcPuV*yJ#zP-3h)GnuG0;q{GGl29Y}l+atRU3)5iOXNbIz`X}LlQ3&@r
z*k_3B0RNMN<D%OXsenC*LzH4X$I*EosKGIP;ED!o^|_RaE2__>SH)C!rqo-r@T#Gw
zGcddQoD9peu7*YC`q*5$lsOyt_f~2!U+7lqB;Op%R_Yqx9P3u<5Z|1Xt<(+Fv~%Ex
zpqHxwXTj|&_JB|VMu4B#3ZK~+emEHaLY(;`GEsQXPS6f*@2Vx1<Pxk1K{QxSpHF1Z
z>Gko0V&AU`t*O!cUkpU4mhLpvT$>y=1LV`#>wwB2Mx$L0OVc0+1SC!l%g`WA0+Jwy
zWoeK<3P_?HHdli@Cm>03Se^!H5RfTy*g_4mNkG!%uvHqQR6sK1u+<vm4gtxM!^$*B
zwt&o)!`5h!6amST!^$<t1P<A-P@bu9NFlQk#E3i4Wg3Gd5Q8LM${_o2aLXCw=fAv^
zK_txb80)hD9^i<VA3`k9PVA5%)y|;27Jdk?vBQW0R*NLW3l%)+0nP<!{yEs|$Lj-p
z$}zzRcBeZ|huHxmMu>B|N9nM>fPi76KU#+|z%)j{<~l(K@7IzhIo(bj_MQgAUf-p|
zey_o>*B{Ga*!es?P~<gE_ZS?RkX8k&)RJE7bl;&Tb!)I>r+bMGE7V{(Dk#)p*#kvh
z=X67j4H5ufO4gEI?{wd;!$xbc8=UR}9Tuv=a8w`~4Xl3RXn)0VS|HjD;DZ2DyJhL^
z2H0*5hNA+}Zh*b6!EjU{8VIoG28zUKfoLOu>o}N%%9H~3Crl#vTP-^EW&Yd8UcfI7
zDLX&K{ewCuad=6SWF%=IaT`h4(ETMHm-ClD)JR{n7MgD%k-Na6M-kQ&%}?<yNKvav
zI;dGBh#-z2&M^s?(>M3Q(NKOL$s$_WK&eK5y-B-$YEvfT>Rh`Jg*4(K=(8%4Mz13S
z+l!zkji>+|Y8yx+{YsF|Iv>YHr*<|b>}Up#smYIPk@o^W@tyD-U7-Ay%wA0Hh5ot@
z1ZX&XRY~5L2`mg;{B<d4Pr9k+MlQa(c0_&t!}Ry*gY@_L&*<-)`{?g`AL4K6mZy99
zkN+6|d43Q7soTwee%r)<{`+10Joi{#7k<<ni$CAu^PfSujen19aC~))aP#|o{tgP@
zAzweyg+o<9IDyCTSD4+n;d@%x+W5I$4%(EgZEz|J-DBv1iArDdD>|3dG)b<4aME`X
z!I{)-m)X?t#^km%gA<U(k=xuj8g@H{?hy6_rZ}_@^g#yM@bufB_IuSKBUEmWBQ*X8
z7f5qcNw9s83m%^MX;kh*U2nM!5!?bmd#g|=GH(Z95Eap!ilj@a5T7dPY(QGJp%rbH
zw?=!u*go()aTr_E0ZS%$=;T(mc+_g=i)amR#@Skc%%1Un%h_s#d}&-&9WP?ECFuI|
ziY?cBaY_X&sNtTY#XE&3#3UIw2}gSBcv3kpY^2OZ>TH|<kMver%t}mA@Y5o8q5?I#
z3WKoKT66Km5l}ln%u}x9c0Q4m(t|1c(*gVutnu_S{osthQL(}J*YOD)4=YpP7%UjS
z37syCEAIUOj6*k#FVaop(!bL(Y93rDK<jxtnIOX%a^5YND<-ffp}8vZq*5MoVc?&^
zE0R6|&Wzgv_q!8VD;>=9do79Gv}@4mx6>WPmVz_6|Aq;kWZp(leG&Erp3y}t92G5Q
zKj3~#9GSx{Um)5yI{-t_z=J^PDg%+6zdP8;&*+Xbij6?8X=+4Z>_We&F|JnWzIQSq
zF}$tr5$snVA&kdv;$K5s=+iAOI^fS_FD?Z&e<l?mK=?Cxh1jVz;82&?p)eWNYBmMF
zR!?HdrC4&I1BZS(mVBxqq~0<r8%i|&-c8IVmPTc0-c5GUQm6!1s<4wO)P^aBCb?6a
zZ)ymEKZHp5Opso+Ou=Blk^J5u;BcSN5YADpW@(#c%KGo&3}APX?obN#6sq1OaUSSz
zd+g~YHqRB>;vYK$s*HRAFH8TaNv{lll^8yX(~-qepAa~JTFIaC;6LD@BdG3yw~;Q?
zC#v2yDjUx)UI}k4@McC1T;gKuM>y~{p>;8A+4AE&-%}wW^<!{*sZw5#1gYb8)-SgP
zmv(MKi`OTxne=6?2_E93F|`RaXMxg+T(o$TG8-zkp)JoQ?^3%^pZyp88C^m6&#>cp
znf4bkP^jBr3}A<4gD*W0{XjT8b-<61e}!2tu~jxgy@#ympK4yFHkY*2EV5d#a1X{;
zU}XDp6MeY}f(Kl<ZFf?iEhy`K1#b(nu=g+u$lzdB*%=Nv^R57R#?#SOpR){Ff=R)R
ziTaHhJ(b<Jx22FhK~zDnJa9rwXt7_CkgjrJXhN0>9|hw{6HSwwsZFIAW~Fj{J3dG%
zz9HV;xOD*t1KozO5I*6P{Eip0Gr~58RX6_w1~ZPG2!~cTpOYG!L%aP-*S?0R+P!%7
z687M!O$|}m)#n@)Vb$mEth82l{;2xgn2n)O+!2-b9;+Cb&d38VY_>2Y)i2;5;W6|N
zo~zpA&#85a$(5d*m>P!b=P)Qqn@At6TFeQNllU2RR=`1tgWFMm6Px>j);AN1*aX2{
zkXMh=S%<~fNRzLxk+!QU&kK(iJ^S!nw3tm+u!CUoy}BC%7wi>9Q>v{~gIKhdp$n5@
zOcqd~w?4lgzee`-DU-Mr$2jt^l2W98&Uzrq3t^nEY(xLay(^W^(V#kqT+#yk!r986
z!;n<J@V|~J-NfpVTOCgo?Qe|SxXW6CUM8|}9|hQV-VN$_L*M{y_OC@NNOff3qqSzP
zofi;7O=%WQi2{_JJk!lAO3UN1(P%|=eU%A;+q-kEA)dw9=OE>DXfmLoZ)O!}WK5R$
zIvyVIF0zLBDifLd8>(oo%`=HICPD$edzYD<iv9wEibiy#_kFXk5L&#6aH_k*gfC3q
zBkz%FQP_VbQL0TqPio)3`*~CiZztj7DInB@odVST(^uG)s2DngfbYLRUiu1~k^w?{
zwrVupfVn;}9;rMt2zP^4*eEKDikeVZpti9vv^r-#iAqLc=_|<Wq%r|t7(7(C>fUQV
z9W+)h=}<AGKWrS-pF8>n4Qqpr(8qN6q+DxOV7W%#Mq1txc~R-PcF&Dehly}`XY!<Y
zD{Us_S}mDVPd28|iCWxB?M)3Hg|30#bON>br4>m1Xazg=fS{iaTt9gcvp5UwIaoZd
z$!*Rm8#UDoF%=h#uf+(&5U_YGG|XDiq%R>UvhdX7;J`B%R$6-QaZTRR1XC7~2o;{(
zI3>&-vNRBZhblU8^$6Eq30G0M(D9&hLDTQ4k(KD*Q!gr(S0V;JlQ~dk7K*YD6!mLS
zROi)$iW)>B7v^9owh)rkzk|35@*8bvt69v2aAylZz6dg;TnYD8(1cEd&&dM!sIqC0
zf9wQq%;-Wp!h5fk6!Df3x{xc>#ZoX*?O|szPEf5LR)Dtf!p*1fj$P!=Dogqu%6L_j
zf!w9)IH*j-R?8yeyOi;EWE_i(I94NM3L%pV*n$@f`e2^k2lLPeV~C`{$To!0Y}#Z3
z=dkk<ISsV|sw-^CTk&#S&zIx6CwH-5fD(FsgTH79Q#Mo0MWOt=lZS=!@1GHt-fD$V
z)0Ka>0s`HfjaVVpb73phlF<T$8|pN&R9&1<>a*e}vDBA`N4?4|@O+A@K(Cra*4uGb
zyeI_kXGvv!Xi{8uvX%eCTNSy->ucc(947)*MxuzmL|Q=8-C4BZEF(!za~#1E+)-}3
zH&6|w7%P*|pV%Hklxk0emb4&AG@ol<X!g&I47Nzyp=lhM+<YmtR1Ghc&B~3^_7Tt}
zPTr+RsRuAWzp%?c_X?b9dd8AIF&;NIBV+8~;%HYEj-2-nm(wY7y3CgsIuoc6X}c@r
zauj_p6yFOq`X1Rr^mZ=7M5CJJ5M_h3y-V62lH8??Ol^Wy%?nNbxh4=T)t!NMgtUDv
z2+uYfp#Lt=AR*f*_jZ8>8QG!89jzCxm}p@Mdmj446G)^wEONF**~sb0witZrK2cN{
ziV8D8FBIr-pu-K&*9mk4&=JEDV&#Nb<!q}?h}EE|Z=eT@7Kubrkp}1%fsO(?$^iY6
zKt}@|JuD$rNTfP!a<)w;#AZ-bu_!7AMa3APX9;vH(6I*SaRMy?Ee%UZH_R1Ohh5IL
z>x9@1irR-%Xb}wi>=6d&Hw5|$psz4MKPk{7fgU+5A@_4a;^gc&osc+#qUMRB;!#w*
z0eYH1j{<s>0XkBkM*}^2SVB68WgH1|c7jewf<aM@NQD*|gQCV5pkEMZaA@{e19Y`O
zj{|z#u!Jn*ge1z@i8>*P21U&jMZuOKd%OX9lt9B0IeUTux(6#LRAVC06Ne?_01|nd
zlf1i<yeE>paA4&9J?78QPeQ-&1}937ya9A@%6p+%X1nU>kh43KO(+iUwy*6l_+p*-
z;=hsP-v;PXfj$EC5d-u*f&LEY?}nxKN+ePpOwML{!!d)R=m{s#*omS#4bcA*=%YX%
zH9$8CbO7kUu!KB|M5^PMoPA6u<d{KG>qSw=QPgn*^c@2IJ<#79pl1s737}65ONgBl
z(j{ki>4bC{6m=9U0<_3U6m`-7{eeKA0vcQ9%jS{S1o|}4r-vov5hPL_XXNZNIw5Ba
ziu#c#>MV*nYk<xc=x(694bYPXx(Dc<VF@Ag8`aS(XZPxa^coa(kXAL@*PcUB=M2!~
zA{prOK%X~2|5BhY0DWN?LOc)PZ74arPx&t~FZLmwq|c#zg7y^Q3qPQUA1+5_0Cf?l
zi<hG&N!uN;l)5d5wShEfEh4654<=?ZW^{ZjXMd~QC%*md<)s|L2f)bL#K=R)Y641U
z;vuNt0;Mys(SpEJt2(}uv%lkV0<652Sb6BOqy(#5pcuYx#J#fxdN}T#D9}3h8c`wD
zoySUAbp+(>fIbF@m4_1Y8B&3eV<5zcd*2l3;kcK4-6FTny~c#B<%FD&vrp)R5GxNQ
zWPvCO%eZVK?wu~s!*OqnK<nIVOb9<`cbt~9PwRvbD-R`P7dD5e(-{zA#J$@DdN}T_
z6=<D%jR{$aM5?1l&hF6(AyytrNV+Jh7lasb?^uBzj(aa)KaFbW+-pq8=d|f|T#&Ob
z=!6g}4<+PvQB)rYAr2mjenOyiE*^?rC(t@48xw-(YCx^d(|G+F@j-muc^%@a;~P2q
z8=cT^3@C{ZpZXSr61xwjgkfGsljtlz6unoVb+$Jq^d%%x9Y^HsBb>h>2-X_S<eNoV
z`b<9bQ!4~|IQG9)pmp{)riApDRmV{|`>5U|Ml<=D^SsXbOg@y5zYFwm?7v;0b@n$V
z<Ow8F9pB5@-|K`J&E)rqqV$=3C?N|4dN}sKPM~%6Hzvf&2{|QapVA32n#oCj8NH^@
z<U<K*5$NIA|0RLe+25FuDmqhebj#V@Iw3|gd9f%;pUH<3GE1O`WB+jit+T%|A>B~x
zRUPN$?DIMyMl<<7q(Y16Gx<<L-Vo^F*#Aj^*4f{fko%FSRCQb|m9sBOwIzske#O_Z
zU(4BFb58mi6nt&Kw5g)_Z@|+=EFUM(!?FBXDD|RXo#l;*+lNG|<KJ@jzx7r!TD$*2
z6s1r7Lt9A|=;1hijX>)hZ%oKMPDrPm-Ki5|w00-`Wz<QZ{f80~BGAKe{I^i>MQ)wr
zjR|Q)BGqwR&OWXaVzhRDMiiyb{zD0QK%j@?_&Wt!=Xhg6W^zJK%GoD%LX6h#k|;`_
z{f83L1tnipc{q;WFVH&28x!&x5~+@}a`suB5TmvG!=fmC_8&^fy#hTP$L9&O&hf^C
zOy-1~le5q1gcz;ef56cps;tlcLkam(poio5odT_MyfGoa6p3`cANq+01zMZ-rP>K#
z)Im%C&TzyZUpB*Rx2KuyU9#EUa;w?ik!rR-a*Nr1FXFQhUy1m|o6YtwXPND9%r@IU
zzsYR(Aif0gX^7_|er%@M{$aY={z9hNzWYYA{cgnPAU+Cl8S#JM8*k$q{tT3nVz#eB
zJO%Mk#D(4@?$_*Uo0q{Q!&`Ciw~h-J@v}z!OcFoO!upvU4B_t9opfjCO>}^fBHySe
z()JW-`<Ud@Sa2Mo!^alCG7kRZq`G8&JW-Cr$6~Vq+9uFAd@K$zKp*F)0p&P+EDi-)
z8dNy;Io<Su_eqA9TjaGCIsz@XAgRTmq-~<4FrdQ>(6s^`4s^Hy`W}If06JnAI<h$(
zR(Y+J(_uwYt3gTQL`jiAM;f5TnMFB{9*d(4(BjOZJR0ceVd!{=P6Enp@>(0G!-k|b
zgOYy6PZi2>@>m>WfK~(=Cy&Lk2IwUMjg!Y>X&5?g;&j;MwRWPT*p9w|LEvTMBU+S%
zgU8|#2Iymat6z?T$Kopt&>smj4jzj~4nxNukVGwylh?-a_J~8$ID?YBq9mL<7RMW)
zN#_|g7zOkw19Xl+j|O`5FmznW=}3^*CU80ukTk)dqzn8=p&ZAK#YXIOSfFw2SUlDs
z_j>|84(M^i&_QPwYI&l(Hc@e-Mu|w8I3y{|DmMZ(9;oq`qm~1O)5hWnm!lj&O$2J<
z5R~9m&y}IOLf=n5FQ1pZtysB-wuOGe&lg_;PvCs9XbGfIYv(h>NX`z~)j?+_n9y7u
z$)~{j2S~2$@+-KB>GphqFJYJB`uF9icY(qR#dYLz)K;LdI&pnB1f|jUkm_Wzizy!Q
zS%y?2FZrxgx11k4lw(`s>NG%S3N+RwuA>I%2?C9Ei7Q}8f>d__yLi=kOm-d9$$)~+
zWn}!F@Ab>EDRCV)KyMdltV&$p8=!w7&{&nYP7Fha!pZ28U0pgE(5tzOj76d#Y)M=v
z4bV3TG<D%A1GHVBu_key9)^tLbV}enBfHKJ)3~rcDL-RSQY$|PD94V(b=Cm=vOsqO
z-EDxb7icU=Ts_0kaSx}XS9bO4&CzR65Z$SRLhMIe=M2zE0*wWU>%0NlEYMhxxGoGs
z#+P&i;OvuKeaih}jP?yqc?VeIfahkAfE9`Bhs#lr3*}gixGoO<JkJH?w_O3CvrvKg
z!yhRw>-?3Cxbs`t^{w6#-wrN}bEi}{lb=GAW6!~vcPJN)5@?-)hoXD<-rtak^;!Qj
z+W9-blU?8GWDrjeE$EM;AnZ6?M$G(}Ko7^v<pQlU^I!?2labHK2*|F0P6qMyP%^F-
z1!2G8GGb<{Ko7^voqXS4t~0X{8LhPIcb<@4Cv-B1uZNQHq9_Qv4VMu!*9i1*%zT$X
z>&$FK#;u%;)3WQdP6qMyP%_4dg22lzBVInwH}&Pi@$w;o)_K{8j2%d#I(uYS4;LEX
z>vH1jp>#YUO2SsdWyH*6bNwHfxj>+GW;UWDh0}3Cc3se$gZO$V8BwAjY&2ZN%tO%u
zzPayb=%MHj1zKlnBQk!^lgvkDvcT9<ExAM(e6Bc+3zctV*Ec$u-x$zwxA+ha8C*sT
zKUbiKWB928tuwq4nITA`I*-V%BRUy0fe)?kVZO8PpTviv-xKKJ82;A+tuwq484n_f
z>O3mDj_PC>P2@{NLHa~Kl#H7NdN_t3Ezml{8<BB_HvP`;W!LvQ8AcQN$9&UYu21Ac
z$@r5%56AG23$)JgMr7R2$v7puPU&PAP2}`)0$4?#$cK_KO`wNk_(*})8QzGDBedan
zcFV4A&e350a-)fSCqF!J4ae{=3N#qL+=$_81RAq<InCZibgbZXoR?ka_2w{|$kTX1
z<@!WEv^mBI^l%J+o*x?YGrSQQUm!`T>cmN+3nz)CoVO6d+@5?&swGz@`l^-B?NZ$#
zEU7zt`CRq2?E0EFA`TnNzc%2opNj9}u+e2C2bKx+aB?6+pmjN5MEw{fQJw#mUH{e_
zkrweoTj}&^KBn}A{802~0<ACRhoavUXk88%k?|ywsLoE=)v1$Vw4h%j3ewjAL%)+R
z(8I}r>jheu14d*-b25(0uH!lxMhp6X!>=j&OJ4&FC8JfKhm!*@3$!i=jL4`(64iN9
zcAeyd12Uo9XhmNlO41hrL+O|;(8CFWi2|()0wX&5;Pg#(o|Ro^_2w{I(0`6ppio}~
z3?<_&fz}uFL($I&v_A10k>TNFoReMWbTW(<^ovD7`Wj&9cTxm;I5{vvpmjN5M8@~f
z!bUx{)x1<2e;I4nhS2Q2tMhJRs(dTlOG(>t);0>dghbAO?xIxpH9s4009!~}h(po4
z1R5uCg`|l%6unKLaT2!(+K5u^&k!HHitr*ngaE4100ExWxZKn~J_I!%D13NPNZ_Ua
zTt<>8W09GgXy6zUhmk^+v-4i;t%aG28vJ9P*<Q8~=ci7yeexY<dn)2zFEHExyx44i
zuE1=6ZJya)jCeBQ@rX}B{J?Ey`%8;(MtZy1{(P?4z5wy@h=(IS3h~|Z&Gw(?o9$ID
zv;DCgvpo}W3GrThBLVU4_(naxS&leAQ+1KwVc6k8=aqXZr-PS5?*+>`kAFQpS1CUh
z2dNEs9l(M&Nox-%x6g9*dGZ^aKOmej%k_ijmImiVgs+<Ay6BnI;0z*cp9QCK(cYXs
zOS-3T-LAm(`kpP2ix4J(`4<Bj2w}|3{~>S_LKtB4`vTL%*Wk`O5Yu2sK_h03@Wf>0
zI^@&qPT=t|c-hc(Vgsl8UF`qw?0wWAH}tW2HAA11{#<BB_gng;Hlb5x+ut641C}FE
zS>E1J>%J%NYpUgMPXW|#!PtirvH_D1VP0Rz-bTN|hw-6e-+LAu7|0i-+BHZ>Z$B$g
zeE0U6rP>Gq_?`ez)5Vi=hhg>w#P?|Pnu~q-E7jhNL}efT4<2QT!*sZ_YdkE~*ivNS
zMha3LnSF?-Ca#=7Pfe6=yEcie&K`%d@?S6Dm=YyVEPD<G;NjdPJ)dIJRh9R{Zm*CX
zTW>ODfvSuR*A}v`5b;}bUc;x<J;@)tL-(I6dkO_4{{!An&aR_R$D!2s%C-R5NMu1J
zy^O=jZsNDWH>t{i-O&$wqRgITHkD-|LlN6w&Z!TqD4>6x51^^sXSBCzy6}_*4EBPG
z1C}<ndG%YutSGBAJ#n65&B{E3##qM+{B`sJr@xMH&iaxI>}Wac0(1aO47ZRDzV3+l
z%lTwSiKeeb#i;3(ctkc*gc?U{cF(9XYH>CdWeQ`vaR?O`x9o6U0lUK;WB@2^e4wGt
z{lGz4NgD<K8wl8bTOvI2ZA+p*Q|Qk${DG%Sds!1%02V$EQ2^f)ukFES;WHq8v(+=c
zk+KA5^1tyrU_HmZhqj|%O@VQZR8(*#|2qg74<zh(ZB)|;ma4++HC#90gN2nTeRGE=
z78a0W>1+Au|6-U<bs%lf(;i&X0hftcEEdG*#zG{pVs_(UwZe2K-mz6r-q&plg}q#p
z4KF1eyKk>8G~Y@uC4>>0H%f3O)lXQfwy<Asfr5O~>K67i53HgZw^NN*KL^A;?NIEu
z(GxZo;lB9<df0n0RH{8f%n`Cu{z|HC1I^wG@ltIg4~&v(-{gUCsrEG<kfd4?^xg|r
zB^IIz);JfUrMj0;0{cB`FP>|78quBfqGo#Ka?jPlnN0|?C+?)S&Rq_P&wYjqFdXzh
zD|4m(;D+Vur>vU>0wr;w47@Ah%kO|(@}3KkYOe<bk}xpdhnE_fY-&8U(|reQp@qx+
zoBHU?*oGA83CdTU^mY|o;eP}xSMJ<h{z?f$wLG)EnbXl)CeKV*kt`}Uqurju@J-$8
zpm()=F@y|^;r?KB_lVS=?I@17TuXAB@&LU>Fv80sl|^0_u1w35>K+1ma6i!N={?F%
zz#R0hBp-l*9}O8iNU%sxK%**<6`V<fRP>}M;W|A5Ap#SJj7^k4hQ|C8G-&m42j{<V
zzS(Z_&`W87G;}wbV*hSF_AZ!}DR@9indrR`qm1=lkSftGBP#9ezDN4qEdIO&{jmo&
z!oMWb)1)%fS@hl%L}0|exdX4f(Ez#-U9~`oS6kd6#ZWK26929EkFaMB_dZ09!w<sR
zIu0dul3N+hU0aFHz>?rb>gs45XBPX*t!j9{rM7sPga?q&pp){HE7)PUQqi8~ivT%+
zw;O4cZ>2whQJfdI@<xklq^8+QfACBkb(2$Xz;^iS+}sWk|2d%PIqjYZNTT^q;(3ys
z4)U|{I<*LS`tGB_9EBRu7_oT9sf$<n@;~#<TLrjhwz_z=FMnU#ywzK%Spk`@#_Yhr
z^W`5_W8Os|lt<I^4{si$<{t)&szu9vb4OT%Ifn!PVo7M%0g*uBg36c}+_<_RxTL)}
zFb0jO;^Dl_9rWs)iCu%*7PoNRrDUNqb(-*k**@RA)u~PF(`V2{Fq%!GmoG3CLwvxy
z0Nw|7z)I8Su=^ZVpTkBE9K%dqJqa^vlQJ$K!46NQ7bIZh7A&;D*@zX^RFKc#K_4{6
ziMDJQQG38c?`%|`PpKGLeLlS^R%+bkWj8o{91q*fKoXV+|EfOksJOQJyt8Vm)OaAY
z$>E>7Yo|!kFrxZ=mgi8z2rUa@c*$uG$mJyz6ux81!i({#-PP$UJ&_Lel$On$;i#}?
z+$lZ!Fxo0(id1(aCcT>uX{AVwW^Zq{^w@E9wN!f;e@RyC#jm#)X=$KUKVWux%#Ohs
zZmWVbkRMYby1rh<1G!3KUS437w|8O11K!^J%2;pjV(HQOyd;;WRLkDEoGxVWQRaBZ
zRE_5+qBS~SF)P-Zk4;IK8^UXj1iu2y^d?CDe}LG(244sUcha+Jb*GdlAjw@$PatG6
ze@Z<;$-y%-%4F|3EOmCk;ex62cgTdK)|w-?;%k8nWcd!iGXRVB9@$y*F+OYxOa&On
zLii}GngXK<S#zWc8N4571&~*K#@imwE9pd;d3nmU_#dB_=lMDC*asjpuG2eHfdl~O
ziU6R-oun?00!ILdvsVB^0E_`}^6AcS{CInBkRDx3-|C$yJ^Cuh@%B2Tx=cWj1v?95
zc^p|DKw&#BQk@Q<1g#CZf2N7>&omA%h56^2_iv*i#>l|~9QT@0f23{XEs>7=jg)_W
zCrNvh`V7h<ZEi1{Bh|(s0L25~>4!Y$;7J&~*n>Hv|66~CHz;Y#yTE14lpgyFe$jor
z@1jq6S<2=8Lf!X5Fo^fpVi7`7_$th10ye}zB4RKZG3ajI&`Ks67y}8z6gdZV;yUD}
zPIO<|iOT>U=*0X>J8?FUVyw(a-CIjm-~Jljn03?^M}jy812s>Awm8IaNQ4*+b1?uv
zHdXXDcjpqMrZ$(hOh+gqO?qq!e$n<0Z__?xtb#=1Jm~GUN{>8%ItHiIJ$bj;&RYp2
zQ9JYx13tXbJ_3%sG~PN-qFs>+)Z*J1>7DHW{D0=}AIzO^i2VIc(fQ*4BEQZc8}Vgo
z+n?a~EAZB-z&!|k%V}AK_9#MZCyyl|HXpG7kCh=NBZdPNP>q#w;5x)`=!MuO#4tuZ
zvD!dt`~jm3593ikJl*VngZe>jg|ESuHFsfqi2uj%e>_@kCjMWI|8wx)h5sw@f9ooY
zaBdRb!h`$Sphz<taY;<rj*EoNu%0DLay@1l6!W&PO5K~W3goEGIzD0$zL{AsiQ%=T
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
K)WCr>@V@{>WK5v|

diff --git a/ace_fcs.dll b/ace_fcs.dll
index 3385e53463fc10130194216fee9e317fea4aea3d..9cef4549c76b8eb75bd9ad1e417e62ca58cb4bcc 100644
GIT binary patch
delta 256546
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%0A;;Uw;ANk?W_QYiH~j@0L~#I*^KqIJJ-
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%0DIw=?~p51&R+8Q
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
Rw7z_cp8EOVefsL>e*ttb$KU_}

delta 248597
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


From ae80da74928c8e13e8547aa0444e9bbc62bab79d Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sun, 19 Apr 2015 00:05:54 +0200
Subject: [PATCH 179/257] fix cameras breaking pip scope camera r2t texture,
 reenable PIP scopes in arsenal

---
 addons/optics/CfgWeapons.hpp   | 10 +++++-----
 addons/optics/XEH_postInit.sqf | 16 ++++++++++++++++
 2 files changed, 21 insertions(+), 5 deletions(-)

diff --git a/addons/optics/CfgWeapons.hpp b/addons/optics/CfgWeapons.hpp
index 6d61ff98a2..5aa06f41a0 100644
--- a/addons/optics/CfgWeapons.hpp
+++ b/addons/optics/CfgWeapons.hpp
@@ -98,7 +98,7 @@ class CfgWeapons {
     class ACE_optic_Hamr_PIP: ACE_optic_Hamr_2D {
         author = "$STR_ACE_Common_ACETeam";
         _generalMacro = "ACE_optic_Hamr_PIP";
-        scopeArsenal = 1;
+        //scopeArsenal = 1;
         displayName = "$STR_ACE_optic_hamr_pip";
 
         class ItemInfo: ItemInfo {
@@ -147,7 +147,7 @@ class CfgWeapons {
     class ACE_optic_Arco_PIP: ACE_optic_Arco_2D {
         author = "$STR_ACE_Common_ACETeam";
         _generalMacro = "ACE_optic_Arco_PIP";
-        scopeArsenal = 1;
+        //scopeArsenal = 1;
         displayName = "$STR_ACE_optic_arco_pip";
 
         class ItemInfo: ItemInfo {
@@ -197,7 +197,7 @@ class CfgWeapons {
         author = "$STR_ACE_Common_ACETeam";
         _generalMacro = "ACE_optic_MRCO_PIP";
         scope = 1;
-        scopeArsenal = 1;
+        //scopeArsenal = 1;
         displayName = "$STR_ACE_optic_valdada_pip";
 
         class ItemInfo: ItemInfo {
@@ -239,7 +239,7 @@ class CfgWeapons {
     class ACE_optic_SOS_PIP: ACE_optic_SOS_2D {
         author = "$STR_ACE_Common_ACETeam";
         _generalMacro = "ACE_optic_SOS_PIP";
-        scopeArsenal = 1;
+        //scopeArsenal = 1;
         displayName = "$STR_ACE_optic_sos_pip";
 
         class ItemInfo: ItemInfo {
@@ -290,7 +290,7 @@ class CfgWeapons {
     class ACE_optic_LRPS_PIP: ACE_optic_LRPS_2D {
         author = "$STR_ACE_Common_ACETeam";
         _generalMacro = "ACE_optic_LRPS_PIP";
-        scopeArsenal = 1;
+        //scopeArsenal = 1;
         displayName = "$STR_ACE_optic_lrps_pip";
 
         class ItemInfo: ItemInfo {
diff --git a/addons/optics/XEH_postInit.sqf b/addons/optics/XEH_postInit.sqf
index cb3918cbc3..7f68aece74 100644
--- a/addons/optics/XEH_postInit.sqf
+++ b/addons/optics/XEH_postInit.sqf
@@ -22,3 +22,19 @@ if (!hasInterface) exitWith {};
         uiNamespace setVariable [QGVAR(RscWeaponInfo2D), _this select 0];
     };
 }] call EFUNC(common,addEventHandler);
+
+// camera has to be re-created every time another camera is created. Otherwise r2t is either black or transparent. @todo Add popular custom cameras to the event in ACE_common.
+["activeCameraChanged", {
+    if !(_this select 1) then {
+        deleteVehicle GVAR(camera);
+
+        // PiP technique by BadBenson
+        GVAR(camera) = "camera" camCreate positioncameratoworld [0,0,0];
+        GVAR(camera) camSetFov 0.7;
+        GVAR(camera) camSetTarget ACE_player;
+        GVAR(camera) camCommit 1;
+
+        "ace_optics_rendertarget0" setPiPEffect [2, 1.0, 1.0, 1.0, 0.0, [0.0, 1.0, 0.0, 0.25], [1.0, 0.0, 1.0, 1.0], [0.199, 0.587, 0.114, 0.0]];
+        GVAR(camera) cameraEffect ["INTERNAL", "BACK", "ace_optics_rendertarget0"];
+    };
+}] call EFUNC(common,addEventHandler);

From 560646e1e197ff1ccfb8e9b794d334cc3e8d23fa Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 01:18:53 +0300
Subject: [PATCH 180/257] Update stringtable.xml

---
 addons/winddeflection/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml
index 8e2e00d96e..2acef3581a 100644
--- a/addons/winddeflection/stringtable.xml
+++ b/addons/winddeflection/stringtable.xml
@@ -6,7 +6,7 @@
                 <English>Wind Information</English>
                 <Polish>Informacje o wietrze</Polish>
                 <Spanish>Información del viento</Spanish>
-                <Russian>Ветер</Russian>
+                <Russian>Информация о ветре</Russian>
                 <Czech>Informace o větru</Czech>
                 <French>Vent</French>
                 <German>Windinformationen</German>
@@ -39,7 +39,7 @@
                 <English>Weather Information</English>
                 <Polish>Informacje o pogodzie</Polish>
                 <Spanish>Información Meteorológica</Spanish>
-                <Russian>Погода</Russian>
+                <Russian>Информация о погоде</Russian>
                 <Czech>Informace o počasí</Czech>
                 <French>Météo</French>
                 <German>Wetterinformationen</German>

From a9d38f5970f423795f90cc5e6f34d49d73a2b3e8 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 01:19:32 +0300
Subject: [PATCH 181/257] Update stringtable.xml

---
 addons/weather/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml
index 7d1e1a1a2c..2ee6618756 100644
--- a/addons/weather/stringtable.xml
+++ b/addons/weather/stringtable.xml
@@ -4,10 +4,10 @@
         <Key ID="STR_ACE_Weather_WindInfoKey">
             <English>Show Wind Info</English>
             <Polish>Pokaż inf. o wietrze</Polish>
-            <Russian>Показать информацию о погоде</Russian>
+            <Russian>Показать информацию о ветре</Russian>
             <French>Afficher information sur le vent</French>
             <Spanish>Mostrar información del viento</Spanish>
             <Italian>Mostra informazioni sul vento</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 8f9796f4886702bc8ffbc74ca2a03ca9fe7ab984 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 01:23:37 +0300
Subject: [PATCH 182/257] Update stringtable.xml

---
 addons/weaponselect/stringtable.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/weaponselect/stringtable.xml b/addons/weaponselect/stringtable.xml
index 08bb510f6c..823ce97745 100644
--- a/addons/weaponselect/stringtable.xml
+++ b/addons/weaponselect/stringtable.xml
@@ -41,7 +41,7 @@
             <Spanish>Seleccionar fusil</Spanish>
             <Polish>Wybierz karabin</Polish>
             <Czech>Zvolit hlavní zbraň</Czech>
-            <Russian>Выбрать автомат</Russian>
+            <Russian>Выбрать винтовку</Russian>
             <French>Sélectionner Fusil</French>
             <Hungarian>Puska Kiválasztása</Hungarian>
             <Portuguese>Selecionar Rifle</Portuguese>
@@ -246,7 +246,7 @@
             <Czech>Už nejsou žádné ostatní granáty</Czech>
             <Portuguese>Não há outras granadas restantes</Portuguese>
             <Italian>Nessun'altra granata rimanente.</Italian>
-            <Russian>Летальные гранаты закончились</Russian>
+            <Russian>Нелетальные гранаты закончились</Russian>
         </Key>
         <Key ID="STR_ACE_WeaponSelect_NoGrenadeSelected">
             <English>No grenade selected</English>
@@ -272,4 +272,4 @@
             <Italian>Lancia fumogeno</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From dc2c3e246e9662b10de6845aec3e68d21df7b8a9 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 01:25:30 +0300
Subject: [PATCH 183/257] Update stringtable.xml

---
 addons/dragging/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml
index 1c704796f8..b02979e279 100644
--- a/addons/dragging/stringtable.xml
+++ b/addons/dragging/stringtable.xml
@@ -26,14 +26,14 @@
             <Hungarian>Elengedés</Hungarian>
         </Key>
         <Key ID="STR_ACE_Dragging_UnableToDrag">
-            <English>Item to heavy</English>
+            <English>Item too heavy</English>
             <German>Gegenstand ist zu schwer</German>
             <Spanish>Articulo demasiado pesado</Spanish>
             <Polish>Przedmiot zbyt ciężki</Polish>
             <French>Objet trop lourd</French>
             <Portuguese>Não é possível carregar o item devido a seu peso</Portuguese>
             <Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
-            <Russian>Слишком тяжело</Russian>
+            <Russian>Предмет слишком тяжёлый</Russian>
             <Czech>Moc težké</Czech>
             <Hungarian>Az objektum túl nehéz</Hungarian>
         </Key>

From e62a476a9098f5c134e6d845cfa66e42567453bb Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 01:37:08 +0300
Subject: [PATCH 184/257] Update stringtable.xml

---
 addons/explosives/stringtable.xml | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index 9d4937ed65..6898274307 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -203,7 +203,7 @@
             <Italian>Consente la disattivazione degli ordigni esplosivi</Italian>
             <Hungarian>Robbanóanyagok hatástalanítását teszi lehetővé</Hungarian>
             <Portuguese>Permite o desarme de explosivos</Portuguese>
-            <Russian>Позволяет обезвреживать ВУ</Russian>
+            <Russian>Позволяет обезвреживать взрывчатку</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_Phone_AddToSpeedDial">
             <English>Add to Speed Dial</English>
@@ -215,7 +215,7 @@
             <Italian>Aggiungi alla selezione rapida</Italian>
             <Hungarian>Hozzáadás a gyorstárcsázóhoz</Hungarian>
             <Portuguese>Adicionar à ligação rápida</Portuguese>
-            <Russian>Добавить в ускоренный набор</Russian>
+            <Russian>Добавить в быстрый вызов</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_Clear">
             <English>Clear</English>
@@ -299,7 +299,7 @@
             <Italian>Menù di collocamento</Italian>
             <Hungarian>Elhelyezési menü</Hungarian>
             <Portuguese>Menu de posicionamento</Portuguese>
-            <Russian>Меню детонации</Russian>
+            <Russian>Меню установки</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_Defuse">
             <English>Defuse</English>
@@ -395,7 +395,7 @@
             <Italian>Piastra a Pressione</Italian>
             <Hungarian>Nyomólap</Hungarian>
             <Portuguese>Placa de pressão</Portuguese>
-            <Russian>Давление</Russian>
+            <Russian>Нажимная плита</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_TripWire">
             <English>Tripwire</English>
@@ -443,7 +443,7 @@
             <Italian>Sensore IR (Attacco laterale)</Italian>
             <Hungarian>Infravörös szenzor (Side Attack)</Hungarian>
             <Portuguese>Sensor infravermelho (ataque lateral)</Portuguese>
-            <Russian>ИК (детонация вбок)</Russian>
+            <Russian>ИК сенсор (детонация вбок)</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_SLAME_Magnetic">
             <English>Magnetic Influence Sensor (Bottom Attack)</English>
@@ -455,7 +455,7 @@
             <Italian>Sensore Magnetico di Prossimità (Attacco inferiore)</Italian>
             <Hungarian>Mágneses mező érzékelő (Bottom Attack)</Hungarian>
             <Portuguese>Influência magnética (ataque inferior)</Portuguese>
-            <Russian>Магнитный (детонация вверх)</Russian>
+            <Russian>Магнитный сенсор (детонация вверх)</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_NoExplosivesAvailable">
             <English>No explosives on trigger.</English>
@@ -467,7 +467,7 @@
             <Hungarian>Nincs robbanóanyag a gyújtóeszközhöz kötve.</Hungarian>
             <Polish>Brak ładunków na zapalnik.</Polish>
             <Portuguese>Nenhum explosivo no gatilho.</Portuguese>
-            <Russian>Нет доступных ВУ для взрывателя.</Russian>
+            <Russian>Взрыватель не подсоединён к взрывчатке</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_DeadManSwitch_displayName">
             <English>Dead Man's Switch</English>
@@ -477,7 +477,7 @@
             <Polish>Czuwak</Polish>
             <Spanish>Detonador de hombre muerto</Spanish>
             <Hungarian>Dead Man's Switch</Hungarian>
-            <Russian>Ловушка мертвеца</Russian>
+            <Russian>Кнопка мертвеца</Russian>
         </Key>
         <Key ID="STR_ACE_Explosives_DeadManSwitch_description">
             <English>Used to remotely trigger explosives when released.</English>
@@ -502,4 +502,4 @@
             <Italian>Raccogli</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 5558a6491d1ff25c644d3357c302d0598d1c08e0 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sun, 19 Apr 2015 00:40:29 +0200
Subject: [PATCH 185/257] remove weapon select in favor of the new controls
 from bi

---
 addons/weaponselect/XEH_postInit.sqf | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf
index 6dc648d54c..ae6cfafb9d 100644
--- a/addons/weaponselect/XEH_postInit.sqf
+++ b/addons/weaponselect/XEH_postInit.sqf
@@ -4,7 +4,7 @@
 if !(hasInterface) exitWith {};
 
 // Add keybinds
-["ACE3", QGVAR(SelectPistol), localize "STR_ACE_WeaponSelect_SelectPistol",
+/*["ACE3", QGVAR(SelectPistol), localize "STR_ACE_WeaponSelect_SelectPistol",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -72,7 +72,7 @@ if !(hasInterface) exitWith {};
     true
 },
 {false},
-[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key
+[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key*/
 
 ["ACE3", QGVAR(SelectGrenadeFrag), localize "STR_ACE_WeaponSelect_SelectGrenadeFrag",
 {
@@ -144,7 +144,7 @@ if !(hasInterface) exitWith {};
 {false},
 [2, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key
 
-["ACE3", QGVAR(SelectMainGun), localize "STR_ACE_WeaponSelect_SelectMainGun",
+/*["ACE3", QGVAR(SelectMainGun), localize "STR_ACE_WeaponSelect_SelectMainGun",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -184,7 +184,7 @@ if !(hasInterface) exitWith {};
     true
 },
 {false},
-[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key
+[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key*/
 
 ["ACE3", QGVAR(FireSmokeLauncher), localize "STR_ACE_WeaponSelect_FireSmokeLauncher",
 {

From 2fe7122b3e4d58c4de479b83e65b214b810fe8d2 Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sat, 18 Apr 2015 15:44:07 -0700
Subject: [PATCH 186/257] Disable handoff until completed.

---
 .../functions/fnc_handleHandoff.sqf             |  2 +-
 .../missileguidance/functions/fnc_onFired.sqf   | 17 ++++++++++++-----
 2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/addons/missileguidance/functions/fnc_handleHandoff.sqf b/addons/missileguidance/functions/fnc_handleHandoff.sqf
index 2f1dfac8e7..07a0e116b3 100644
--- a/addons/missileguidance/functions/fnc_handleHandoff.sqf
+++ b/addons/missileguidance/functions/fnc_handleHandoff.sqf
@@ -1,6 +1,6 @@
 #include "script_component.hpp"
 PARAMS_2(_target,_args);
 
-if(!local _target) exitWith {};
+if(isNil "_target" || { objNull _target} || {!local _target} ) exitWith { false };
 
 [FUNC(guidancePFH), 0, _args] call cba_fnc_addPerFrameHandler;
\ No newline at end of file
diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf
index 071b2bbf99..7ada1d4442 100644
--- a/addons/missileguidance/functions/fnc_onFired.sqf
+++ b/addons/missileguidance/functions/fnc_onFired.sqf
@@ -86,13 +86,20 @@ _args = [_this,
 // Laser code needs to give us a shooter for LOBL, or the seeker unit needs to be able to shift locality
 // Based on its homing laser
 // Lasers need to be handled in a special LOAL/LOBL case
-_guidingUnit = ACE_player;
 
-if(local _guidingUnit) then {
+//if(isPlayer _shooter) then {
+//    _guidingUnit = ACE_player;
+//
+//    if(local _guidingUnit) then {
+//        [FUNC(guidancePFH), 0, _args ] call cba_fnc_addPerFrameHandler;
+//    } else {
+//        [QGVAR(handoff), [_guidingUnit, _args] ] call FUNC(doHandoff);
+//    };
+//} else {
     [FUNC(guidancePFH), 0, _args ] call cba_fnc_addPerFrameHandler;
-} else {
-    [QGVAR(handoff), [_guidingUnit, _args] ] call FUNC(doHandoff);
-};
+//};
+
+
 /* Clears locking settings
 (vehicle _shooter) setVariable [QGVAR(target), nil];
 (vehicle _shooter) setVariable [QGVAR(seekerType), nil];

From fe92110b4d7be5559f2f48a35076247e5a8cae53 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Sat, 18 Apr 2015 19:16:12 -0700
Subject: [PATCH 187/257] Make sure you build missing files.

Even if cache says the source files has not changed.
#735
---
 tools/make.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index 380c29faa7..ce5b770383 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -597,7 +597,8 @@ See the make.cfg file for additional build options.
 	# For each module, prep files and then build.
 	for module in modules:
 		print_green("\nMaking " + module + "-"*max(1, (60-len(module))))
-
+		missing = False
+		
 		# Cache check
 		if module in cache:
 			old_sha = cache[module]
@@ -610,10 +611,15 @@ See the make.cfg file for additional build options.
 
 		# Hash the module
 		new_sha = get_directory_hash(os.path.join(module_root, module))
+		
+		# Is the pbo file missing?
+		missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module)))
+		if missing:
+			print("ace_{}.pbo".format(module) + " is missing. Building...")
 
 		# Check if it needs rebuilt
 		# print ("Hash:", new_sha)
-		if old_sha == new_sha:
+		if old_sha == new_sha and not missing:
 			if not force_build:
 				print("Module has not changed.")
 				# Skip everything else

From 54c5070569fe3d49b5f87b66be04f7badcbc6797 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Sat, 18 Apr 2015 22:23:19 -0500
Subject: [PATCH 188/257] isNull

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

diff --git a/addons/missileguidance/functions/fnc_handleHandoff.sqf b/addons/missileguidance/functions/fnc_handleHandoff.sqf
index 07a0e116b3..017a9c0160 100644
--- a/addons/missileguidance/functions/fnc_handleHandoff.sqf
+++ b/addons/missileguidance/functions/fnc_handleHandoff.sqf
@@ -1,6 +1,6 @@
 #include "script_component.hpp"
 PARAMS_2(_target,_args);
 
-if(isNil "_target" || { objNull _target} || {!local _target} ) exitWith { false };
+if(isNil "_target" || {isNull _target} || {!local _target} ) exitWith { false };
 
 [FUNC(guidancePFH), 0, _args] call cba_fnc_addPerFrameHandler;
\ No newline at end of file

From 9cb27c8fb2f9aab2ca57b0b9e4757d9d3c68a488 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Sun, 19 Apr 2015 07:08:57 +0200
Subject: [PATCH 189/257] fix: error when getting killed with FF-messages
 module, fix #745

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

diff --git a/addons/respawn/functions/fnc_handleKilled.sqf b/addons/respawn/functions/fnc_handleKilled.sqf
index c3ab0aebf3..199495d75d 100644
--- a/addons/respawn/functions/fnc_handleKilled.sqf
+++ b/addons/respawn/functions/fnc_handleKilled.sqf
@@ -29,5 +29,5 @@ if (GVAR(SavePreDeathGear)) then {
 };
 
 if (missionNamespace getVariable [QGVAR(showFriendlyFireMessage), false]) then {
-    [_this, FUNC(showFriendlyFireMessage), 2] call EFUNC(common,execRemoteFnc);
+    [_this, QUOTE(DFUNC(showFriendlyFireMessage)), 2] call EFUNC(common,execRemoteFnc);
 };

From 45fd90c6e05fc9a9d54a28683c0ace8b6c2c1e39 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Sun, 19 Apr 2015 10:49:06 +0300
Subject: [PATCH 190/257] Rus translation (medical)

---
 addons/medical/stringtable.xml | 52 +++++++++++++++++-----------------
 1 file changed, 26 insertions(+), 26 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 3259fd5af7..9645aa2289 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -378,7 +378,7 @@
             <English>Give Blood IV (1000ml)</English>
             <German>Bluttransfusion IV (1000ml)</German>
             <Spanish>Dar Sangre IV (1000ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет крови (1000 мл)</Russian>
             <Polish>Podaj krew IV (1000ml)</Polish>
             <French>Administrer du sang en IV (1000ml)</French>
             <Czech>Podat krev. transfúzi (1000ml)</Czech>
@@ -389,7 +389,7 @@
             <English>Give Blood IV (500ml)</English>
             <German>Bluttransfusion IV (500ml)</German>
             <Spanish>Dar Sangre IV (500ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет крови (500 мл)</Russian>
             <Polish>Podaj krew IV (500ml)</Polish>
             <French>Administrer du sang en IV (500ml)</French>
             <Czech>Podat krev. transfúzi (500ml) </Czech>
@@ -400,7 +400,7 @@
             <English>Give Blood IV (250ml)</English>
             <German>Bluttransfusion IV (250ml)</German>
             <Spanish>Dar Sangre IV (250ml)</Spanish>
-            <Russian>Дать кровь для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет крови (250 мл)</Russian>
             <Polish>Podaj krew IV (250ml)</Polish>
             <French>Administrer du sang en IV (250ml)</French>
             <Czech>Podat krev. transfúzi (250ml)</Czech>
@@ -411,7 +411,7 @@
             <English>Give Plasma IV (1000ml)</English>
             <German>Plasmatransfusion IV (1000ml)</German>
             <Spanish>Dar Plasma IV (1000ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет плазмы (1000 мл)</Russian>
             <Polish>Podaj osocze IV (1000ml)</Polish>
             <French>Administrer du plasma en IV (1000ml)</French>
             <Czech>Podat plazmu (1000ml)</Czech>
@@ -422,7 +422,7 @@
             <English>Give Plasma IV (500ml)</English>
             <German>Plasmatransfusion IV (500ml)</German>
             <Spanish>Dar Plasma IV (500ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет плазмы (500 мл)</Russian>
             <Polish>Podaj osocze IV (500ml)</Polish>
             <French>Administrer du plasma en IV (500ml)</French>
             <Czech>Podat plazmu (500ml)</Czech>
@@ -433,7 +433,7 @@
             <English>Give Plasma IV (250ml)</English>
             <German>Plasmatransfusion IV (250ml)</German>
             <Spanish>Dar Plasma IV (250ml)</Spanish>
-            <Russian>Дать плазму для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет плазмы (250 мл)</Russian>
             <Polish>Podaj osocze IV (250ml)</Polish>
             <French>Administrer du plasma en IV (250ml)</French>
             <Czech>Podat plazmu (250ml)</Czech>
@@ -444,7 +444,7 @@
             <English>Give Saline IV (1000ml)</English>
             <German>Kochsaltzlösung IV (1000ml)</German>
             <Spanish>Dar Salino IV (1000ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (1000 мл)</Russian>
+            <Russian>Перелить пакет физраствора (1000 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (1000ml)</Polish>
             <French>Administrer de la solution saline en IV (1000ml)</French>
             <Czech>Podaz fyz. roztok (1000ml)</Czech>
@@ -455,7 +455,7 @@
             <English>Give Saline IV (500ml)</English>
             <German>Kochsaltzlösung IV (500ml)</German>
             <Spanish>Dar Salino IV (500ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (500 мл)</Russian>
+            <Russian>Перелить пакет физраствора (500 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (500ml)</Polish>
             <French>Administrer de la solution saline en IV (500ml)</French>
             <Czech>Podaz fyz. roztok (500ml)</Czech>
@@ -466,7 +466,7 @@
             <English>Give Saline IV (250ml)</English>
             <German>Kochsaltzlösung IV (250ml)</German>
             <Spanish>Dar Salino IV (250ml)</Spanish>
-            <Russian>Дать физраствор для в/в вливания (250 мл)</Russian>
+            <Russian>Перелить пакет физраствора (250 мл)</Russian>
             <Polish>Podaj sól fizjologiczną IV (250ml)</Polish>
             <French>Administrer de la solution saline en IV (250ml)</French>
             <Czech>Podaz fyz. roztok (250ml)</Czech>
@@ -477,7 +477,7 @@
             <English>Minor</English>
             <German>Gering</German>
             <Spanish>Menor</Spanish>
-            <Russian>Незначительные травмы</Russian>
+            <Russian>Легкие ранения</Russian>
             <Polish>Normalny</Polish>
             <French>Léger</French>
             <Czech>Minimální</Czech>
@@ -487,7 +487,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DELAYED">
             <English>Delayed</English>
             <Spanish>Retrasado</Spanish>
-            <Russian>Груз 300</Russian>
+            <Russian>Средние ранения</Russian>
             <Polish>Opóźniony</Polish>
             <French>Différé</French>
             <German>Verzögert</German>
@@ -498,7 +498,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_IMMEDIATE">
             <English>Immediate</English>
             <Spanish>Inmediato</Spanish>
-            <Russian>Помощь отложена</Russian>
+            <Russian>Тяжелые ранения</Russian>
             <Polish>Natychmiastowy</Polish>
             <French>Urgence Immédiate</French>
             <German>Sofort</German>
@@ -509,7 +509,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DECEASED">
             <English>Deceased</English>
             <Spanish>Fallecido</Spanish>
-            <Russian>Груз 200</Russian>
+            <Russian>Труп</Russian>
             <Polish>Nie żyje</Polish>
             <French>Décédé</French>
             <German>Verstorben</German>
@@ -520,7 +520,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_NONE">
             <English>None</English>
             <Spanish>Ninguno</Spanish>
-            <Russian>Нет</Russian>
+            <Russian>Отсутствует</Russian>
             <Polish>Brak</Polish>
             <French>Aucun</French>
             <German>Keine</German>
@@ -1529,7 +1529,7 @@
             <English>Heavily wounded</English>
             <German>Schwer verwundet:</German>
             <Polish>Ciężko ranny</Polish>
-            <Russian>Сильно ранен</Russian>
+            <Russian>Сильные ранения</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
             <French>Lourdement blessé</French>
@@ -1538,7 +1538,7 @@
             <English>Lightly wounded</English>
             <German>Leicht verwundet:</German>
             <Polish>Lekko ranny</Polish>
-            <Russian>Легко ранен</Russian>
+            <Russian>Легкие ранения</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
             <French>Légèrement blessé</French>
@@ -1547,7 +1547,7 @@
             <English>Very lightly wounded</English>
             <German>Sehr leicht verwundet:</German>
             <Polish>B. lekko ranny</Polish>
-            <Russian>Очень легко ранен</Russian>
+            <Russian>Царапины</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
             <French>Très légèrement blessé</French>
@@ -1556,7 +1556,7 @@
             <English>Head</English>
             <German>Kopf</German>
             <Polish>Głowa</Polish>
-            <Russian>Голова</Russian>
+            <Russian>Головы</Russian>
             <Italian>Testa</Italian>
             <Spanish>Cabeza</Spanish>
             <French>Tête</French>
@@ -1565,7 +1565,7 @@
             <English>Torso</English>
             <German>Torso</German>
             <Polish>Tors</Polish>
-            <Russian>Торс</Russian>
+            <Russian>Торса</Russian>
             <Italian>Torso</Italian>
             <Spanish>Torso</Spanish>
             <French>Torse</French>
@@ -1574,7 +1574,7 @@
             <English>Left Arm</English>
             <German>Linker Arm</German>
             <Polish>Lewe ramię</Polish>
-            <Russian>Левая рука</Russian>
+            <Russian>Левой руки</Russian>
             <Italian>Braccio sinistro</Italian>
             <Spanish>Brazo izquierdo</Spanish>
             <French>Bras gouche</French>
@@ -1583,7 +1583,7 @@
             <English>Right Arm</English>
             <German>Rechter Arm</German>
             <Polish>Prawe ramię</Polish>
-            <Russian>Правая рука</Russian>
+            <Russian>Правой руки</Russian>
             <Italian>Braccio destro</Italian>
             <Spanish>Brazo derecho</Spanish>
             <French>Bras droit</French>
@@ -1592,7 +1592,7 @@
             <English>Left Leg</English>
             <German>Linkes Bein</German>
             <Polish>Lewa noga</Polish>
-            <Russian>Левая нога</Russian>
+            <Russian>Левой ноги</Russian>
             <Italian>Gamba sinistra</Italian>
             <Spanish>Pierna izquierda</Spanish>
             <French>Jambe gauche</French>
@@ -1601,7 +1601,7 @@
             <English>Right Leg</English>
             <German>Rechtes Bein</German>
             <Polish>Prawa noga</Polish>
-            <Russian>Правая нога</Russian>
+            <Russian>Правой ноги</Russian>
             <Italian>Gamba destra</Italian>
             <Spanish>Pierna derecha</Spanish>
             <French>Jambe droite</French>
@@ -1610,7 +1610,7 @@
             <English>Pain Effect Type</English>
             <German>Schmerzeffekt-Typ</German>
             <Polish>Rodzaj efektu bólu</Polish>
-            <Russian>Вид боли</Russian>
+            <Russian>Эффект боли</Russian>
             <Italian>Pain Effect Type</Italian>
             <Spanish>Tipo de efecto de dolor</Spanish>
             <French>Type d'effet de douleur</French>
@@ -1619,7 +1619,7 @@
             <English>Colour Flashing</English>
             <German>Farbblinken</German>
             <Polish>Pulsujące kolory</Polish>
-            <Russian>Разноцветные вспышки</Russian>
+            <Russian>Пульсирующий свет</Russian>
             <Italian>Colore lampeggiante</Italian>
             <Spanish>Parpadeo de color</Spanish>
             <French>Flash de couleur</French>
@@ -1634,4 +1634,4 @@
             <French>Aberration chromatique</French>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From d8b96066e60b660d61fe7df3881d08dd442d6542 Mon Sep 17 00:00:00 2001
From: ruPaladin <happyworm24@rambler.ru>
Date: Sun, 19 Apr 2015 11:01:41 +0300
Subject: [PATCH 191/257] Rus translation (nametags)

---
 addons/nametags/stringtable.xml | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 77e10b6ee9..e224ce61e4 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -22,7 +22,7 @@
             <Czech>Zobrazit jména hráčů</Czech>
             <Portuguese>Mostrar nomes de jogadores</Portuguese>
             <Italian>Mostra i nomi dei giocatori</Italian>
-            <Russian>Показать имена игроков</Russian>
+            <Russian>Показывать имена игроков (включить имена)</Russian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerNamesOnlyOnCursor">
             <English>Show player name only on cursor (requires player names)</English>
@@ -34,7 +34,7 @@
             <Italian>Mostra i nomi solo se puntati (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar nome de jogador somente no cursor (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok nevének mutatása csak a kurzoron (a nevek mutatása szükséges)</Hungarian>
-            <Russian>Показать имена игроков только под курсором (требует имен игроков)</Russian>
+            <Russian>Показать имена игроков только под курсором (при включенных именах)</Russian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerNamesOnlyOnKeyPress">
             <English>Show player name only on keypress (requires player names)</English>
@@ -44,7 +44,7 @@
             <Czech>Zobrazit jména hráčů jen na klávesu (vyžaduje jména hráčů)</Czech>
             <Polish>Pokaż imiona graczy tylko po przytrzymaniu klawisza (wymagana opcja Pokaż imiona graczy)</Polish>
             <Hungarian>Játékosnevek mutatása csak gombnyomásra (a nevek mutatása szükséges)</Hungarian>
-            <Russian>Показать имена игроков только по нажатию клавиши (требует имен игроков)</Russian>
+            <Russian>Показать имена игроков только по нажатию клавиши (при включенных именах)</Russian>
             <Italian>Mostra i nomi solo se si preme il tasto (richiede mostra nomi abilitato)</Italian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerRanks">
@@ -57,7 +57,7 @@
             <Italian>Mostra i gradi (richiede mostra nomi abilitato)</Italian>
             <Portuguese>Mostrar patente de jogadores (requer nome de jogadores)</Portuguese>
             <Hungarian>Játékosok rendfokozatának mutatása (a nevek mutatása szükséges)</Hungarian>
-            <Russian>Показывать звания игроков (требует имен игроков)</Russian>
+            <Russian>Показывать звания игроков (при вкл. именах)</Russian>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowVehicleCrewInfo">
             <English>Show vehicle crew info</English>
@@ -74,7 +74,7 @@
             <English>Show name tags for AI units</English>
             <German>Zeige Namen für KI Einheiten</German>
             <Spanish>Mostrar etiquetas de nombre para unidades IA </Spanish>
-            <Russian>Показывать именые метки ИИ</Russian>
+            <Russian>Показывать имена ботов</Russian>
             <Czech>Zobrazit jména AI</Czech>
             <Polish>Wyświetl imiona jednostek AI</Polish>
             <French>Afficher les noms des IA</French>
@@ -85,7 +85,7 @@
             <English>Show SoundWaves (requires player names)</English>
             <German>Zeigen Schallwellen  (benötigt Spielernamen)</German>
             <Spanish>Mostrar onda sonora  (requiere Mostrar nombres de jugadores)</Spanish>
-            <Russian>Показывать звуковые волны (требует имен игроков)</Russian>
+            <Russian>Индикатор разговора (при вкл. именах)</Russian>
             <Czech>Zobrazit SoundWaves (vyžaduje jména hráčů)</Czech>
             <Polish>Pokaż fale dźwiękowe (wymagana opcja Pokaż imiona graczy)</Polish>
             <French>Afficher "qui parle" (si noms affichés)</French>

From 51590d39adcdbaff81ff392832331b2be54e7670 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 10:47:43 +0200
Subject: [PATCH 192/257] Cleaned up the ATragMX postInit routine

---
 addons/atragmx/functions/fnc_create_dialog.sqf     | 2 ++
 addons/atragmx/functions/fnc_restore_user_data.sqf | 2 +-
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 5be6e4ecb4..1646b0ec25 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -40,6 +40,8 @@ GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
 GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
 GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
 
+[GVAR(currentGun), false] call FUNC(change_gun);
+
 {
     lbAdd [6000, _x select 0];
 } forEach GVAR(gunList);
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 6fddc4bed5..e21d66acd8 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -16,7 +16,7 @@
 #include "script_component.hpp"
 
 GVAR(currentUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentUnit", 2]) min 2;
-[profileNamespace getVariable ["ACE_ATragMX_currentGun", 0], false] call FUNC(change_gun);
+GVAR(currentGun) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentGun", 0]);
 GVAR(currentTarget) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentTarget", 0]) min 3;
 GVAR(currentScopeUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentScopeUnit", 0]) min 3;
 

From 336a192302a387aaab3c44a511143f0e79a32761 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 10:57:55 +0200
Subject: [PATCH 193/257] The range card setup data is now also restored on
 mission start

---
 addons/atragmx/functions/fnc_clear_user_data.sqf   | 9 +++++++--
 addons/atragmx/functions/fnc_restore_user_data.sqf | 5 +++++
 addons/atragmx/functions/fnc_store_user_data.sqf   | 9 +++++++--
 3 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/addons/atragmx/functions/fnc_clear_user_data.sqf b/addons/atragmx/functions/fnc_clear_user_data.sqf
index 10f31741f2..f805ce66b1 100644
--- a/addons/atragmx/functions/fnc_clear_user_data.sqf
+++ b/addons/atragmx/functions/fnc_clear_user_data.sqf
@@ -29,11 +29,16 @@ profileNamespace setVariable ["ACE_ATragMX_barometricPressure", nil];
 profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", nil];
 
 profileNamespace setVariable ["ACE_ATragMX_showWind2", nil];
-profileNamespace setVariable ["latitude", nil];
-profileNamespace setVariable ["directionOfFire", nil];
+profileNamespace setVariable ["ACE_ATragMX_latitude", nil];
+profileNamespace setVariable ["ACE_ATragMX_directionOfFire", nil];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed1", nil];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed2", nil];
 profileNamespace setVariable ["ACE_ATragMX_windDirection", nil];
 profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", nil];
 profileNamespace setVariable ["ACE_ATragMX_targetSpeed", nil];
 profileNamespace setVariable ["ACE_ATragMX_targetRange", nil];
+
+profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", nil];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardEndRange", nil];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardIncrement", nil];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardCurrentColumn", nil];
\ No newline at end of file
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index e21d66acd8..54d1f3cd2b 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -35,3 +35,8 @@ GVAR(windDirection) = profileNamespace getVariable ["ACE_ATragMX_windDirection",
 GVAR(inclinationAngle) = profileNamespace getVariable ["ACE_ATragMX_inclinationAngle", [0, 0, 0, 0]];
 GVAR(targetSpeed) = profileNamespace getVariable ["ACE_ATragMX_targetSpeed", [0, 0, 0, 0]];
 GVAR(targetRange) = profileNamespace getVariable ["ACE_ATragMX_targetRange", [0, 0, 0, 0]];
+
+GVAR(rangeCardStartRange) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardStartRange", 200]) min 3000;
+GVAR(rangeCardEndRange) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardEndRange", 2000]) min 3000;
+GVAR(rangeCardIncrement) = 1 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardIncrement", 50]) min 3000;
+GVAR(rangeCardCurrentColumn) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardCurrentColumn", 3]) min 3;
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 66207444d2..2045276426 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -29,11 +29,16 @@ profileNamespace setVariable ["ACE_ATragMX_barometricPressure", GVAR(barometricP
 profileNamespace setVariable ["ACE_ATragMX_relativeHumidity", GVAR(relativeHumidity)];
 
 profileNamespace setVariable ["ACE_ATragMX_showWind2", GVAR(showWind2)];
-profileNamespace setVariable ["latitude", GVAR(latitude)];
-profileNamespace setVariable ["directionOfFire", GVAR(directionOfFire)];
+profileNamespace setVariable ["ACE_ATragMX_latitude", GVAR(latitude)];
+profileNamespace setVariable ["ACE_ATragMX_directionOfFire", GVAR(directionOfFire)];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed1", GVAR(windSpeed1)];
 profileNamespace setVariable ["ACE_ATragMX_windSpeed2", GVAR(windSpeed2)];
 profileNamespace setVariable ["ACE_ATragMX_windDirection", GVAR(windDirection)];
 profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", GVAR(inclinationAngle)];
 profileNamespace setVariable ["ACE_ATragMX_targetSpeed", GVAR(targetSpeed)];
 profileNamespace setVariable ["ACE_ATragMX_targetRange", GVAR(targetRange)];
+
+profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", GVAR(rangeCardStartRange)];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardEndRange", GVAR(rangeCardEndRange)];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardIncrement", GVAR(rangeCardIncrement)];
+profileNamespace setVariable ["ACE_ATragMX_rangeCardCurrentColumn", GVAR(rangeCardCurrentColumn)];
\ No newline at end of file

From 8f20303a084bb76bde87b6e1f3c0298f292fba65 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:02:06 +0200
Subject: [PATCH 194/257] Fixed a bug in the atmosphere unit conversion

---
 addons/atragmx/functions/fnc_parse_input.sqf          | 2 +-
 addons/atragmx/functions/fnc_update_atmo_env_data.sqf | 6 +++---
 addons/atragmx/functions/fnc_update_atmosphere.sqf    | 6 +++---
 3 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index aa77fc8111..cda1bb3419 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -19,7 +19,7 @@ GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
 GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
 GVAR(barometricPressure) = 0 max parseNumber(ctrlText 130050) min 1350;
 GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 130060) min 100) / 100;
-if (GVAR(currentUnit) == 1) then {
+if (GVAR(currentUnit) != 2) then {
     GVAR(altitude) = GVAR(altitude) * 0.3048;
     GVAR(temperature) = (GVAR(temperature) - 32) / 1.8;
     GVAR(barometricPressure) = GVAR(barometricPressure) * 33.86389;
diff --git a/addons/atragmx/functions/fnc_update_atmo_env_data.sqf b/addons/atragmx/functions/fnc_update_atmo_env_data.sqf
index 8dcbc89280..7cd34754da 100644
--- a/addons/atragmx/functions/fnc_update_atmo_env_data.sqf
+++ b/addons/atragmx/functions/fnc_update_atmo_env_data.sqf
@@ -17,18 +17,18 @@
 
 ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 13007);
 
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [130040, Str(Round(GVAR(temperature) * 10) / 10)];
 } else {
     ctrlSetText [130040, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
 };
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [130050, Str(Round(GVAR(barometricPressure)))];
 } else {
     ctrlSetText [130050, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
 };
 ctrlSetText [130060, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [130030, Str(Round(GVAR(altitude)))];
 } else {
     ctrlSetText [130030, Str(Round(GVAR(altitude) * 3.2808399))];
diff --git a/addons/atragmx/functions/fnc_update_atmosphere.sqf b/addons/atragmx/functions/fnc_update_atmosphere.sqf
index fa555f50e7..be7565bda7 100644
--- a/addons/atragmx/functions/fnc_update_atmosphere.sqf
+++ b/addons/atragmx/functions/fnc_update_atmosphere.sqf
@@ -15,18 +15,18 @@
  */
 #include "script_component.hpp"
 
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [200, Str(Round(GVAR(temperature) * 10) / 10)];
 } else {
     ctrlSetText [200, Str(Round((GVAR(temperature) * 1.8 + 32) * 10) / 10)];
 };
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [210, Str(Round(GVAR(barometricPressure)))];
 } else {
     ctrlSetText [210, Str(Round(GVAR(barometricPressure) / 33.8638866667 * 100) / 100)];
 };
 ctrlSetText [220, Str(Round(GVAR(relativeHumidity) * 100 * 10) / 10)];
-if (GVAR(currentUnit) != 1) then {
+if (GVAR(currentUnit) == 2) then {
     ctrlSetText [230, Str(Round(GVAR(altitude)))];
 } else {
     ctrlSetText [230, Str(Round(GVAR(altitude) * 3.2808399))];

From de5c5139c0f6721bc15fc02015edb8f5c0fd420d Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:02:25 +0200
Subject: [PATCH 195/257] Moved a private declaration out of the hot path

---
 addons/atragmx/functions/fnc_calculate_solution.sqf | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index 242e2e9c48..2d70e8dca1 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -43,7 +43,7 @@
  */
 #include "script_component.hpp"
 
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
 _boreHeight         = _this select 2;
@@ -136,7 +136,6 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
 
     if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
         if (missionNamespace getVariable [QEGVAR(advanced_ballistics,AdvancedAirDragEnabled), false]) then {
-            private ["_drag"];
             _drag = if (missionNamespace getVariable [QEGVAR(advanced_ballistics,extensionAvailable), false]) then {
                 parseNumber(("ace_advanced_ballistics" callExtension format["retard:%1:%2:%3", _dragModel, _bc, _trueSpeed]))
             } else {

From 4235163801945f4a1f959ad3c34ce7f875e08fbb Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:14:18 +0200
Subject: [PATCH 196/257] Added asterix (*) prefix to distances in yards on the
 main page

---
 addons/atragmx/functions/fnc_update_gun.sqf    | 6 +++---
 addons/atragmx/functions/fnc_update_target.sqf | 2 +-
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/addons/atragmx/functions/fnc_update_gun.sqf b/addons/atragmx/functions/fnc_update_gun.sqf
index f3d173ba11..67e5e651d1 100644
--- a/addons/atragmx/functions/fnc_update_gun.sqf
+++ b/addons/atragmx/functions/fnc_update_gun.sqf
@@ -36,10 +36,10 @@ if (GVAR(currentUnit) != 2) then {
 } else {
     ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))];
 };
-if (GVAR(currentUnit) != 1) then {
-    ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
+if (GVAR(currentUnit) == 1) then {
+    ctrlSetText [140, format["*%1", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
 } else {
-    ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
+    ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
 };
 
 [] call FUNC(update_scope_unit);
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index dab62e099d..a888e6fdd8 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -36,7 +36,7 @@ if (GVAR(currentUnit) != 2) then {
     ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
 };
 if (GVAR(currentUnit) == 1) then {
-    ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
+    ctrlSetText [340, format["*%1", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
 } else {
     ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
 };

From 4430e8a0ee61faaeac26f37f4b26ec3c415c5d35 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:18:37 +0200
Subject: [PATCH 197/257] Increased the minimum barometric pressure value that
 is accepted

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

diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index cda1bb3419..ab2539ec1c 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -17,7 +17,7 @@
 
 GVAR(altitude) = -1000 max parseNumber(ctrlText 130030) min 20000;
 GVAR(temperature) = -50 max parseNumber(ctrlText 130040) min 160;
-GVAR(barometricPressure) = 0 max parseNumber(ctrlText 130050) min 1350;
+GVAR(barometricPressure) = 10 max parseNumber(ctrlText 130050) min 1350;
 GVAR(relativeHumidity) = (0 max parseNumber(ctrlText 130060) min 100) / 100;
 if (GVAR(currentUnit) != 2) then {
     GVAR(altitude) = GVAR(altitude) * 0.3048;

From 5195271894755ac6782c4b60b11862e45530027c Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:32:02 +0200
Subject: [PATCH 198/257] Fixes: https://github.com/acemod/ACE3/commit/4235163
 *The asterix needs to be shown on distances shown in meters not yards

---
 addons/atragmx/functions/fnc_update_gun.sqf    | 15 ++++++++++-----
 addons/atragmx/functions/fnc_update_target.sqf | 14 ++++++++++----
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/addons/atragmx/functions/fnc_update_gun.sqf b/addons/atragmx/functions/fnc_update_gun.sqf
index 67e5e651d1..4ca7338e57 100644
--- a/addons/atragmx/functions/fnc_update_gun.sqf
+++ b/addons/atragmx/functions/fnc_update_gun.sqf
@@ -36,10 +36,15 @@ if (GVAR(currentUnit) != 2) then {
 } else {
     ctrlSetText [130, Str(Round(GVAR(workingMemory) select 1))];
 };
-if (GVAR(currentUnit) == 1) then {
-    ctrlSetText [140, format["*%1", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
-} else {
-    ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
+switch (GVAR(currentUnit)) do {
+    case 0: {
+        ctrlSetText [140, format["*%1", Round(GVAR(workingMemory) select 2)]];
+    };
+    case 1: {
+        ctrlSetText [140, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
+    };
+    case 2: {
+        ctrlSetText [140, Str(Round(GVAR(workingMemory) select 2))];
+    };
 };
-
 [] call FUNC(update_scope_unit);
diff --git a/addons/atragmx/functions/fnc_update_target.sqf b/addons/atragmx/functions/fnc_update_target.sqf
index a888e6fdd8..ef2ef1de5c 100644
--- a/addons/atragmx/functions/fnc_update_target.sqf
+++ b/addons/atragmx/functions/fnc_update_target.sqf
@@ -35,8 +35,14 @@ if (GVAR(currentUnit) != 2) then {
 } else {
     ctrlSetText [330, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
 };
-if (GVAR(currentUnit) == 1) then {
-    ctrlSetText [340, format["*%1", Round((GVAR(workingMemory) select 2) * 1.0936133)]];
-} else {
-    ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+switch (GVAR(currentUnit)) do {
+    case 0: {
+        ctrlSetText [340, format["*%1", Round((GVAR(targetRange) select GVAR(currentTarget)))]];
+    };
+    case 1: {
+        ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
+    };
+    case 2: {
+        ctrlSetText [340, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
+    };
 };

From 874858ebb4ab8d770dc530478884433442146961 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 11:43:20 +0200
Subject: [PATCH 199/257] Added a sanity check to the cycle gun list function
 *Top/Down buttons only cycle the gun list in the main/gun list menu

---
 addons/atragmx/functions/fnc_cycle_gun_list.sqf | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/addons/atragmx/functions/fnc_cycle_gun_list.sqf b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
index 3d4bef70c1..75f54c79fb 100644
--- a/addons/atragmx/functions/fnc_cycle_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
@@ -15,4 +15,6 @@
  */
 #include "script_component.hpp"
 
+if (!(GVAR(showMainPage) || GVAR(showGunList))) exitWith {};
+
 [(GVAR(currentGun) + (count GVAR(gunList)) + _this) % (count GVAR(gunList)), true] call FUNC(change_gun);

From f6263e9e8b9b59a005b2aa1aa692cc0914f20c74 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 12:07:27 +0200
Subject: [PATCH 200/257] Overworked the scope click feature: *TODO: Add the
 "Setting Up a Solution for Your Scope" screen

---
 addons/atragmx/XEH_postInit.sqf               | 46 +++++++++----------
 addons/atragmx/functions/fnc_change_gun.sqf   |  6 +--
 addons/atragmx/functions/fnc_init.sqf         |  3 ++
 .../functions/fnc_update_scope_unit.sqf       |  9 +++-
 addons/atragmx/script_component.hpp           |  2 +-
 5 files changed, 37 insertions(+), 29 deletions(-)

diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index e5f7dd42d3..574b5a8991 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -5,39 +5,39 @@
 if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) == ATRAGMX_PROFILE_NAMESPACE_VERSION && count (profileNamespace getVariable ["ACE_ATragMX_gunList", []]) > 0) then {
     GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
 } else {
-    // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Elevation Scope Step, Windage Scope Step, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
-    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0659, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
+    // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
+    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0659, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
     
-                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
-                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0008600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
+                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
+                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
                       
-                      ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
+                      ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
                       
-                      [".408 Chey Tac"     , 910, 100, 0.0569, -0.0004800, 3.81, 0, 0.338, 0.338, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
+                      [".408 Chey Tac"     , 910, 100, 0.0569, -0.0004800, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
                       
-                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
+                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
                       
-                      [".338LM 250gr"      , 880, 100, 0.0598, -0.0006060, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
-                      [".338LM 300gr"      , 800, 100, 0.0677, -0.0005350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
-                      [".338LM API526"     , 880, 100, 0.0601, -0.0006730, 3.81, 0, 0.338, 0.338, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"],
+                      [".338LM 250gr"      , 880, 100, 0.0598, -0.0006060, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
+                      [".338LM 300gr"      , 800, 100, 0.0677, -0.0005350, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],
+                      [".338LM API526"     , 880, 100, 0.0601, -0.0006730, 3.81, 0, 2, 10, 120, 0, 0, 16.39, 8.58, 25.40, 0.290, 7, "ICAO"],
                       
-                      [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
-                      [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
-                      [".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 0.338, 0.338, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
+                      [".300WM Mk248 Mod 0", 900, 100, 0.0584, -0.0008300, 3.81, 0, 2, 10, 120, 0, 0, 13.31, 7.80, 25.40, 0.268, 7, "ICAO"],
+                      [".300WM Mk248 Mod 1", 867, 100, 0.0611, -0.0008150, 3.81, 0, 2, 10, 120, 0, 0, 14.26, 7.80, 25.40, 0.310, 7, "ICAO"],
+                      [".300WM Berger OTM" , 853, 100, 0.0622, -0.0007600, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 7.80, 25.40, 0.368, 7, "ICAO"],
                       
-                      ["7.62x54mmR"        , 800, 100, 0.0692, -0.0010230, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
+                      ["7.62x54mmR"        , 800, 100, 0.0692, -0.0010230, 3.81, 0, 2, 10, 120, 0, 0, 9.849, 7.92, 24.13, 0.400, 1, "ICAO"],
                       
-                      ["7.62x51mm M80"     , 810, 100, 0.0679, -0.0010350, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
-                      ["7.62x51mm M118LR"  , 820, 100, 0.0662, -0.0008525, 3.81, 0, 0.338, 0.338, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
-                      ["7.62x51mm Mk319"   , 820, 100, 0.0670, -0.0010300, 3.81, 0, 0.338, 0.338, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
-                      ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 0.338, 0.338, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
+                      ["7.62x51mm M80"     , 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.200, 7, "ICAO"],
+                      ["7.62x51mm M118LR"  , 820, 100, 0.0662, -0.0008525, 3.81, 0, 2, 10, 120, 0, 0, 11.34, 7.82, 25.40, 0.243, 7, "ICAO"],
+                      ["7.62x51mm Mk319"   , 820, 100, 0.0670, -0.0010300, 3.81, 0, 2, 10, 120, 0, 0, 8.424, 7.82, 25.40, 0.377, 1, "ICAO"],
+                      ["7.62x51mm Subsonic", 320, 100, 0.3060, -0.0004910, 3.81, 0, 2, 10, 120, 0, 0, 12.96, 7.82, 25.40, 0.235, 7, "ICAO"],
                       
-                      ["6.5x39mm"          , 800, 100, 0.0683, -0.0007850, 3.81, 0, 0.338, 0.338, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
-                      ["6.5x47mm Lapua"    , 800, 100, 0.0682, -0.0007710, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
+                      ["6.5x39mm"          , 800, 100, 0.0683, -0.0007850, 3.81, 0, 2, 10, 120, 0, 0, 7.970, 6.71, 22.86, 0.263, 7, "ICAO"],
+                      ["6.5x47mm Lapua"    , 800, 100, 0.0682, -0.0007710, 3.81, 0, 2, 10, 120, 0, 0, 9.007, 6.71, 22.86, 0.290, 7, "ICAO"],
                       
-                      ["5.56x45mm M855"    , 870, 100, 0.0626, -0.0012650, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
-                      ["5.56x45mm Mk262"   , 820, 100, 0.0671, -0.0011250, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
-                      ["5.56x45mm Mk318"   , 880, 100, 0.0616, -0.0011200, 3.81, 0, 0.338, 0.338, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]];
+                      ["5.56x45mm M855"    , 870, 100, 0.0626, -0.0012650, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.151, 7, "ASM" ],
+                      ["5.56x45mm Mk262"   , 820, 100, 0.0671, -0.0011250, 3.81, 0, 2, 10, 120, 0, 0, 4.990, 5.70, 17.78, 0.361, 1, "ASM" ],
+                      ["5.56x45mm Mk318"   , 880, 100, 0.0616, -0.0011200, 3.81, 0, 2, 10, 120, 0, 0, 4.018, 5.70, 17.78, 0.307, 1, "ASM" ]];
     
     [] call FUNC(clear_user_data);
     profileNamespace setVariable ["ACE_ATragMX_gunList", GVAR(gunList)];
diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index c753f644a4..a401a849e3 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -27,9 +27,9 @@ GVAR(currentGun) = _gunID;
 
 lbSetCurSel [6000, GVAR(currentGun)];
 
-if ((GVAR(scopeUnits) select GVAR(currentScopeUnit)) != "Clicks") then {
-    GVAR(currentScopeUnit) = GVAR(workingMemory) select 6;
-};
+GVAR(currentScopeUnit) = 0 max (GVAR(workingMemory) select 6) min 3;
+GVAR(currentScopeClickUnit) = 0 max (GVAR(workingMemory) select 7) min 2;
+GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10;
 
 [] call FUNC(update_gun);
 [] call FUNC(update_gun_ammo_data);
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index 881f65a6b0..2e613ca9e6 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -18,6 +18,7 @@
 GVAR(workingMemory) = +(GVAR(gunList) select 0);
 
 GVAR(scopeUnits) = ["MILs", "TMOA", "SMOA", "Clicks"];
+GVAR(scopeClickUnits) = ["TMOA", "SMOA", "MILs"];
 
 GVAR(rangeCardStartRange) = 200;
 GVAR(rangeCardEndRange) = 2000;
@@ -40,6 +41,8 @@ GVAR(currentUnit) = 2;
 GVAR(currentGun) = 0;
 GVAR(currentTarget) = 0;
 GVAR(currentScopeUnit) = 0;
+GVAR(currentScopeClickUnit) = 2;
+GVAR(currentScopeClickNumber) = 10;
 
 GVAR(atmosphereModeTBH) = true;
 GVAR(altitude) = 0;
diff --git a/addons/atragmx/functions/fnc_update_scope_unit.sqf b/addons/atragmx/functions/fnc_update_scope_unit.sqf
index 55bb703eee..72efeb772e 100644
--- a/addons/atragmx/functions/fnc_update_scope_unit.sqf
+++ b/addons/atragmx/functions/fnc_update_scope_unit.sqf
@@ -15,5 +15,10 @@
  */
 #include "script_component.hpp"
 
-ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
-ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
+if (GVAR(currentScopeUnit) == 3) then {
+    ctrlSetText [2000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
+    ctrlSetText [5000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
+} else {
+    ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
+    ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
+};
diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp
index 5290ba6a1f..7cd5b44911 100644
--- a/addons/atragmx/script_component.hpp
+++ b/addons/atragmx/script_component.hpp
@@ -11,4 +11,4 @@
 
 #include "\z\ace\addons\main\script_macros.hpp"
 
-#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.0
+#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.1

From 2b5b89604e308d45e1c701eac4ec35510544f60b Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 12:29:26 +0200
Subject: [PATCH 201/257] Removed unused RscControlsGroup

---
 addons/atragmx/RscTitles.hpp | 34 ----------------------------------
 1 file changed, 34 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 6562e694d1..905212d5c9 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -133,40 +133,6 @@ class ATragMX_RscListNBox: ATragMX_RscListBox {
     idcLeft=-1;
     idcRight=-1;
 };
-class ATragMX_RscControlsGroup {
-    type=15;
-    idc=-1;
-    style=16;
-    x=0;
-    y=0;
-    w=1;
-    h=1;
-    shadow=0;
-    class VScrollbar {
-        color[]={1,1,1,0.6};
-        width=0.021;
-        autoScrollSpeed=-1;
-        autoScrollDelay=5;
-        autoScrollRewind=0;
-        shadow=0;
-    };
-    class HScrollbar {
-        color[]={1,1,1,0.6};
-        height=0.028;
-        shadow=0;
-    };
-    class ScrollBar {
-        color[]={1,1,1,0.6};
-        colorActive[]={1,1,1,1};
-        colorDisabled[]={1,1,1,0.3};
-        thumb="#(argb,8,8,3)color(1,1,1,1)";
-        arrowEmpty="#(argb,8,8,3)color(1,1,1,1)";
-        arrowFull="#(argb,8,8,3)color(1,1,1,1)";
-        border="#(argb,8,8,3)color(1,1,1,1)";
-    };
-    class Controls {
-    };
-};
 class ATragMX_RscLineBreak {
     idc=-1;
     type=98;

From a73c0bc429694bd21d9195f83da977a745fa95c3 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 12:40:13 +0200
Subject: [PATCH 202/257] Sord is now able to transmit the direction of fire

---
 addons/atragmx/functions/fnc_parse_input.sqf | 4 ++--
 addons/atragmx/functions/fnc_sord.sqf        | 6 +++---
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index ab2539ec1c..ca289302c9 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -32,12 +32,12 @@ GVAR(windSpeed1) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140020
 GVAR(windSpeed2) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140021)) min 50];
 GVAR(windDirection) set [GVAR(currentTarget), 1 max Round(parseNumber(ctrlText 140030)) min 12];
 _inclinationAngleCosine = 0.5 max parseNumber(ctrlText 140041) min 1;
-_inclinationAngleDegree = -60 max parseNumber(ctrlText 140040) min 60;
+_inclinationAngleDegree = -60 max round(parseNumber(ctrlText 140040)) min 60;
 if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)) then {
     GVAR(inclinationAngle) set [GVAR(currentTarget), _inclinationAngleDegree];
 } else {
     if (_inclinationAngleCosine != Round(cos(GVAR(inclinationAngle) select GVAR(currentTarget)) * 100) / 100) then {
-        GVAR(inclinationAngle) set [GVAR(currentTarget), acos(_inclinationAngleCosine)];
+        GVAR(inclinationAngle) set [GVAR(currentTarget), round(acos(_inclinationAngleCosine))];
     };
 };
 GVAR(targetSpeed) set [GVAR(currentTarget), -50 max abs(parseNumber(ctrlText 140050)) min 50];
diff --git a/addons/atragmx/functions/fnc_sord.sqf b/addons/atragmx/functions/fnc_sord.sqf
index 650993cff3..a433153c0e 100644
--- a/addons/atragmx/functions/fnc_sord.sqf
+++ b/addons/atragmx/functions/fnc_sord.sqf
@@ -22,6 +22,6 @@ _slopeDistance = _this select 0;
 _azimuth       = _this select 1;
 _inclination   = _this select 2;
 
-//_inclination = asin((ACE_player weaponDirection currentWeapon ACE_player) select 2);
-GVAR(inclinationAngle) set [GVAR(currentTarget), _inclination];
-GVAR(targetRange) set [GVAR(currentTarget), _slopeDistance];
+GVAR(inclinationAngle) set [GVAR(currentTarget), round(_inclination)];
+GVAR(directionOfFire) set [GVAR(currentTarget), round(_azimuth)];
+GVAR(targetRange) set [GVAR(currentTarget), round(_slopeDistance)];

From 8a7b3a1b334de2ee6108d63865c47ff6ec7e44e9 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sun, 19 Apr 2015 13:08:28 +0200
Subject: [PATCH 203/257] Removed damage thresholds from basic medical

---
 addons/medical/functions/fnc_handleDamage_basic.sqf | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/addons/medical/functions/fnc_handleDamage_basic.sqf b/addons/medical/functions/fnc_handleDamage_basic.sqf
index 6e343b127a..aa9c2f61df 100644
--- a/addons/medical/functions/fnc_handleDamage_basic.sqf
+++ b/addons/medical/functions/fnc_handleDamage_basic.sqf
@@ -63,12 +63,6 @@ if (_selectionName in GVAR(SELECTIONS)) then {
     _newDamage = _damage - (_unit getHitPointDamage (GVAR(HITPOINTS) select (GVAR(SELECTIONS) find _selectionName)));
 };
 
-if ([_unit] call EFUNC(common,isPlayer)) then {
-   _newDamage = _newDamage / (GVAR(playerDamageThreshold) max 0.01);
-} else {
-    _newDamage = _newDamage / (GVAR(AIDamageThreshold) max 0.01);
-};
-
 _damage = _damage - _newDamage;
 
 

From 4283e07942f6189af66c295f17d68a63c0cceb2b Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Sun, 19 Apr 2015 13:50:08 +0200
Subject: [PATCH 204/257] PL fix

---
 addons/microdagr/stringtable.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml
index f98c7f438c..017ac9f0d5 100644
--- a/addons/microdagr/stringtable.xml
+++ b/addons/microdagr/stringtable.xml
@@ -252,7 +252,7 @@
             <Spanish>Mostrar MicroDAGR</Spanish>
             <Russian>Показать MicroDAGR</Russian>
             <Czech>Ukázat MicroDAGR GPS</Czech>
-            <Polish>Pokaż&lt;br /&gt;MicroDAGR</Polish>
+            <Polish>Pokaż MicroDAGR</Polish>
             <French>Afficher MicroDAGR</French>
             <Hungarian>MicroDAGR mutatása</Hungarian>
             <Italian>Mostra MicroDAGR</Italian>
@@ -263,7 +263,7 @@
             <Spanish>Configurar MicroDAGR</Spanish>
             <Russian>Настроить MicroDAGR</Russian>
             <Czech>Konfigurovat MicroDAGR GPS</Czech>
-            <Polish>Konfiguruj&lt;br /&gt;MicroDAGR</Polish>
+            <Polish>Konfiguruj MicroDAGR</Polish>
             <French>Configurer MicroDAGR</French>
             <Hungarian>MicroDAGR konfigurálása</Hungarian>
             <Italian>ConfiguraMicroDAGR</Italian>
@@ -274,10 +274,10 @@
             <Spanish>Cerrar MicroDAGR</Spanish>
             <Russian>Закрыть MicroDAGR</Russian>
             <Czech>Zavřít MicroDAGR GPS</Czech>
-            <Polish>Zamknij&lt;br /&gt;MicroDAGR</Polish>
+            <Polish>Zamknij MicroDAGR</Polish>
             <French>Fermer MicroDAGR</French>
             <Hungarian>MicroDAGR elrejtése</Hungarian>
             <Italian>Chiudi MicroDAGR</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From f6bbeb6bd6778977aa66983845b096e84c390f76 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sun, 19 Apr 2015 17:28:47 +0200
Subject: [PATCH 205/257] switched back to old init method

---
 addons/medical/XEH_init.sqf           |  5 ++-
 addons/medical/XEH_respawn.sqf        |  2 +-
 addons/medical/functions/fnc_init.sqf | 51 +++++++++++++--------------
 3 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/addons/medical/XEH_init.sqf b/addons/medical/XEH_init.sqf
index f3fb2b1e93..0ded7d471f 100644
--- a/addons/medical/XEH_init.sqf
+++ b/addons/medical/XEH_init.sqf
@@ -4,4 +4,7 @@ private ["_unit"];
 _unit = _this select 0;
 
 _unit addEventHandler ["HandleDamage", {_this call FUNC(handleDamage)}];
-[_unit] call FUNC(init);
+
+if (local _unit) then {
+	[_unit] call FUNC(init);
+};
diff --git a/addons/medical/XEH_respawn.sqf b/addons/medical/XEH_respawn.sqf
index 5047f0026c..ac6cc2d6ef 100644
--- a/addons/medical/XEH_respawn.sqf
+++ b/addons/medical/XEH_respawn.sqf
@@ -6,7 +6,7 @@ _unit = _this select 0;
 
 if !(local _unit) exitWith {};
 
-[_unit, true] call FUNC(init);
+[_unit] call FUNC(init);
 
 //Reset captive status for respawning unit
 if (!(_unit getVariable ["ACE_isUnconscious", false])) then {
diff --git a/addons/medical/functions/fnc_init.sqf b/addons/medical/functions/fnc_init.sqf
index a9e3625c2b..d01a63b3a5 100644
--- a/addons/medical/functions/fnc_init.sqf
+++ b/addons/medical/functions/fnc_init.sqf
@@ -16,22 +16,19 @@
 private ["_unit", "_allUsedMedication", "_logs", "_forceNew"];
 
 _unit = _this select 0;
-_forceNew = if (count _this > 1) then {_this select 1} else {false};
 
-if (!(isnil {_unit getvariable QGVAR(pain)}) && !_forceNew) exitwith {};
-
-_unit setVariable [QGVAR(pain), 0];
-_unit setVariable [QGVAR(morphine), 0];
-_unit setVariable [QGVAR(bloodVolume), 100];
+_unit setVariable [QGVAR(pain), 0, true];
+_unit setVariable [QGVAR(morphine), 0, true];
+_unit setVariable [QGVAR(bloodVolume), 100, true];
 
 // tourniquets
-_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0]];
+_unit setvariable [QGVAR(tourniquets), [0,0,0,0,0,0], true];
 
 // wounds and injuries
-_unit setvariable [QGVAR(openWounds), []];
-_unit setvariable [QGVAR(bandagedWounds), []];
-_unit setVariable [QGVAR(internalWounds), []];
-_unit setvariable [QGVAR(lastUniqueWoundID), 1];
+_unit setvariable [QGVAR(openWounds), [], true];
+_unit setvariable [QGVAR(bandagedWounds), [], true];
+_unit setVariable [QGVAR(internalWounds), [], true];
+_unit setvariable [QGVAR(lastUniqueWoundID), 1, true];
 
 // vitals
 _unit setVariable [QGVAR(heartRate), 80];
@@ -40,19 +37,19 @@ _unit setvariable [QGVAR(bloodPressure), [80, 120]];
 _unit setVariable [QGVAR(peripheralResistance), 100];
 
 // fractures
-_unit setVariable [QGVAR(fractures), []];
+_unit setVariable [QGVAR(fractures), [], true];
 
 // triage card and logs
-_unit setvariable [QGVAR(triageLevel), 0];
-_unit setvariable [QGVAR(triageCard), []];
+_unit setvariable [QGVAR(triageLevel), 0, true];
+_unit setvariable [QGVAR(triageCard), [], true];
 
 // IVs
-_unit setVariable [QGVAR(salineIVVolume), 0];
-_unit setVariable [QGVAR(plasmaIVVolume), 0];
-_unit setVariable [QGVAR(bloodIVVolume), 0];
+_unit setVariable [QGVAR(salineIVVolume), 0, true];
+_unit setVariable [QGVAR(plasmaIVVolume), 0, true];
+_unit setVariable [QGVAR(bloodIVVolume), 0, true];
 
 // damage storage
-_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0]];
+_unit setvariable [QGVAR(bodyPartStatus), [0,0,0,0,0,0], true];
 
 // airway
 _unit setvariable [QGVAR(airwayStatus), 100];
@@ -60,26 +57,26 @@ _unit setVariable [QGVAR(airwayOccluded), false];
 _unit setvariable [QGVAR(airwayCollapsed), false];
 
 // generic medical admin
-_unit setvariable [QGVAR(addedToUnitLoop), false];
-_unit setvariable [QGVAR(inCardiacArrest), false];
-_unit setVariable ["ACE_isUnconscious", false];
-_unit setvariable [QGVAR(hasLostBlood), false];
-_unit setvariable [QGVAR(isBleeding), false];
-_unit setvariable [QGVAR(hasPain), false];
-_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives)];
+_unit setvariable [QGVAR(addedToUnitLoop), false, true];
+_unit setvariable [QGVAR(inCardiacArrest), false, true];
+_unit setVariable ["ACE_isUnconscious", false, true];
+_unit setvariable [QGVAR(hasLostBlood), false, true];
+_unit setvariable [QGVAR(isBleeding), false, true];
+_unit setvariable [QGVAR(hasPain), false, true];
+_unit setvariable [QGVAR(amountOfReviveLives), GVAR(amountOfReviveLives), true];
 
 // medication
 _allUsedMedication = _unit getVariable [QGVAR(allUsedMedication), []];
 {
    _unit setvariable [_x select 0, nil];
 } foreach _allUsedMedication;
-_unit setVariable [QGVAR(allUsedMedication), []];
+_unit setVariable [QGVAR(allUsedMedication), [], true];
 
 _logs = _unit getvariable [QGVAR(allLogs), []];
 {
     _unit setvariable [_x, nil];
 } foreach _logs;
-_unit setvariable [QGVAR(allLogs), []];
+_unit setvariable [QGVAR(allLogs), [], true];
 
 // items
 [{

From 20740679cca12701f22aea15cae0b5ce7ccec91f Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 17:40:49 +0200
Subject: [PATCH 206/257] Fixed inconsistent 'workingMemory' initialization

---
 addons/atragmx/functions/fnc_change_gun.sqf   | 26 ++++++++++++-------
 .../atragmx/functions/fnc_create_dialog.sqf   |  2 +-
 .../atragmx/functions/fnc_cycle_gun_list.sqf  |  2 +-
 .../functions/fnc_restore_user_data.sqf       |  2 +-
 .../atragmx/functions/fnc_toggle_gun_list.sqf |  2 +-
 5 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/addons/atragmx/functions/fnc_change_gun.sqf b/addons/atragmx/functions/fnc_change_gun.sqf
index a401a849e3..7c5abac47e 100644
--- a/addons/atragmx/functions/fnc_change_gun.sqf
+++ b/addons/atragmx/functions/fnc_change_gun.sqf
@@ -4,7 +4,8 @@
  *
  * Arguments:
  * gunID <number>
- * update solution <BOOL>
+ * restore workingMemory from gunList <BOOL>
+ * update display <BOOL>
  *
  * Return Value:
  * Nothing
@@ -16,23 +17,30 @@
  */
 #include "script_component.hpp"
 
-private ["_gunID", "_updateSolution"];
-_gunID          = _this select 0;
-_updateSolution = _this select 1;
+private ["_gunID", "_restoreMemory", "_updateDisplay"];
+_gunID         = _this select 0;
+_restoreMemory = _this select 1;
+_updateDisplay = _this select 2;
 
 if (_gunID < 0 || _gunID > (count GVAR(gunList)) - 1) exitWith {};
 
-GVAR(workingMemory) = +(GVAR(gunList) select _gunID);
+if (_restoreMemory) then {
+    GVAR(workingMemory) = +(GVAR(gunList) select _gunID);
+};
 GVAR(currentGun) = _gunID;
 
-lbSetCurSel [6000, GVAR(currentGun)];
+if (_updateDisplay) then {
+    lbSetCurSel [6000, GVAR(currentGun)];
+};
 
 GVAR(currentScopeUnit) = 0 max (GVAR(workingMemory) select 6) min 3;
 GVAR(currentScopeClickUnit) = 0 max (GVAR(workingMemory) select 7) min 2;
 GVAR(currentScopeClickNumber) = 1 max (GVAR(workingMemory) select 8) min 10;
 
-[] call FUNC(update_gun);
-[] call FUNC(update_gun_ammo_data);
+if (_updateDisplay) then {
+    [] call FUNC(update_gun);
+    [] call FUNC(update_gun_ammo_data);
+};
 
 GVAR(elevationOutput) set [GVAR(currentTarget), 0];
 GVAR(windage1Output) set [GVAR(currentTarget), 0];
@@ -41,6 +49,6 @@ GVAR(leadOutput) set [GVAR(currentTarget), 0];
 GVAR(tofOutput) set [GVAR(currentTarget), 0];
 GVAR(velocityOutput) set [GVAR(currentTarget), 0];
 
-if (_updateSolution) then {
+if (_updateDisplay) then {
     [] call FUNC(calculate_target_solution);
 };
diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index 1646b0ec25..b4d51bd894 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -40,7 +40,7 @@ GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
 GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
 GVAR(showTargetSpeedAssistTimer) call FUNC(show_target_speed_assist_timer);
 
-[GVAR(currentGun), false] call FUNC(change_gun);
+[GVAR(currentGun), false, true] call FUNC(change_gun);
 
 {
     lbAdd [6000, _x select 0];
diff --git a/addons/atragmx/functions/fnc_cycle_gun_list.sqf b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
index 75f54c79fb..3796bb78e6 100644
--- a/addons/atragmx/functions/fnc_cycle_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_cycle_gun_list.sqf
@@ -17,4 +17,4 @@
 
 if (!(GVAR(showMainPage) || GVAR(showGunList))) exitWith {};
 
-[(GVAR(currentGun) + (count GVAR(gunList)) + _this) % (count GVAR(gunList)), true] call FUNC(change_gun);
+[(GVAR(currentGun) + (count GVAR(gunList)) + _this) % (count GVAR(gunList)), true, true] call FUNC(change_gun);
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 54d1f3cd2b..55b73cc5b5 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -16,7 +16,7 @@
 #include "script_component.hpp"
 
 GVAR(currentUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentUnit", 2]) min 2;
-GVAR(currentGun) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentGun", 0]);
+[(profileNamespace getVariable ["ACE_ATragMX_currentGun", 0]), true, false] call FUNC(change_gun);
 GVAR(currentTarget) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentTarget", 0]) min 3;
 GVAR(currentScopeUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentScopeUnit", 0]) min 3;
 
diff --git a/addons/atragmx/functions/fnc_toggle_gun_list.sqf b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
index 714e6e848d..1cc1f9338b 100644
--- a/addons/atragmx/functions/fnc_toggle_gun_list.sqf
+++ b/addons/atragmx/functions/fnc_toggle_gun_list.sqf
@@ -20,7 +20,7 @@ if (ctrlVisible 6000) then {
     true call FUNC(show_main_page);
     
     if (_this) then {
-        [lbCurSel 6000, true] call FUNC(change_gun);
+        [lbCurSel 6000, true, true] call FUNC(change_gun);
     };
 } else {
     false call FUNC(show_main_page);

From a83925dd2dd12215539d6e7cc7cbde0b67268aa0 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 18:43:05 +0300
Subject: [PATCH 207/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9645aa2289..9f862b9b3b 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -477,7 +477,7 @@
             <English>Minor</English>
             <German>Gering</German>
             <Spanish>Menor</Spanish>
-            <Russian>Легкие ранения</Russian>
+            <Russian>Несрочная помощь</Russian>
             <Polish>Normalny</Polish>
             <French>Léger</French>
             <Czech>Minimální</Czech>
@@ -487,7 +487,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_DELAYED">
             <English>Delayed</English>
             <Spanish>Retrasado</Spanish>
-            <Russian>Средние ранения</Russian>
+            <Russian>Срочная помощь</Russian>
             <Polish>Opóźniony</Polish>
             <French>Différé</French>
             <German>Verzögert</German>
@@ -498,7 +498,7 @@
         <Key ID="STR_ACE_MEDICAL_TRIAGE_STATUS_IMMEDIATE">
             <English>Immediate</English>
             <Spanish>Inmediato</Spanish>
-            <Russian>Тяжелые ранения</Russian>
+            <Russian>Неотложная помощь</Russian>
             <Polish>Natychmiastowy</Polish>
             <French>Urgence Immédiate</French>
             <German>Sofort</German>
@@ -1610,7 +1610,7 @@
             <English>Pain Effect Type</English>
             <German>Schmerzeffekt-Typ</German>
             <Polish>Rodzaj efektu bólu</Polish>
-            <Russian>Эффект боли</Russian>
+            <Russian>Тип эффекта боли</Russian>
             <Italian>Pain Effect Type</Italian>
             <Spanish>Tipo de efecto de dolor</Spanish>
             <French>Type d'effet de douleur</French>

From 596fadcba07b41cd95df71280dcd0444e3fc625d Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 18:51:35 +0300
Subject: [PATCH 208/257] ru translations fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Не стоит додумывать правильные значения или то, как вы думаете это должно интерпертироваться. Нужно переводить то, что написано. Как пример Very Light Wounds - это не царапины, это очень лёгкие ранения. Царапины - это scratches
---
 addons/medical/stringtable.xml | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 9f862b9b3b..053115f5d7 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1529,7 +1529,7 @@
             <English>Heavily wounded</English>
             <German>Schwer verwundet:</German>
             <Polish>Ciężko ranny</Polish>
-            <Russian>Сильные ранения</Russian>
+            <Russian>Сильно ранен</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
             <French>Lourdement blessé</French>
@@ -1538,7 +1538,7 @@
             <English>Lightly wounded</English>
             <German>Leicht verwundet:</German>
             <Polish>Lekko ranny</Polish>
-            <Russian>Легкие ранения</Russian>
+            <Russian>Легко ранен</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
             <French>Légèrement blessé</French>
@@ -1547,7 +1547,7 @@
             <English>Very lightly wounded</English>
             <German>Sehr leicht verwundet:</German>
             <Polish>B. lekko ranny</Polish>
-            <Russian>Царапины</Russian>
+            <Russian>Очень легко ранен</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
             <French>Très légèrement blessé</French>

From a7d913b80e1d81b9a4714d82aad283f717b8be35 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 18:54:47 +0300
Subject: [PATCH 209/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 053115f5d7..0287478bc5 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1529,7 +1529,7 @@
             <English>Heavily wounded</English>
             <German>Schwer verwundet:</German>
             <Polish>Ciężko ranny</Polish>
-            <Russian>Сильно ранен</Russian>
+            <Russian>Тяжело ранен</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
             <French>Lourdement blessé</French>

From aad8d6b7850eab3c3f5ebe1f11e7eb19c465f40e Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Sun, 19 Apr 2015 09:04:42 -0700
Subject: [PATCH 210/257] Fixed: max litter scalar array, have internal values.

---
 addons/medical/ACE_Settings.hpp                     | 6 +++++-
 addons/medical/functions/fnc_handleCreateLitter.sqf | 5 +++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index b42d5bc5a6..6ab24379c5 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -79,7 +79,11 @@ class ACE_Settings {
         displayName = "$STR_ACE_Medical_litterSimulationDetail";
         description = "$STR_ACE_Medical_litterSimulationDetail_Desc";
         typeName = "SCALAR";
-        value = 500;
+      
+        value = 3;
+        values[] = {"Off", "Low", "Medium", "High", "Ultra"};
+        _values[] = { 0, 50, 100, 1000, 5000 };
+        
         isClientSettable = 1;
     };
     class GVAR(litterCleanUpDelay) {
diff --git a/addons/medical/functions/fnc_handleCreateLitter.sqf b/addons/medical/functions/fnc_handleCreateLitter.sqf
index aca47250cd..ee7e591cd1 100644
--- a/addons/medical/functions/fnc_handleCreateLitter.sqf
+++ b/addons/medical/functions/fnc_handleCreateLitter.sqf
@@ -4,7 +4,7 @@
 if(!hasInterface) exitWith { false };
 
 PARAMS_3(_litterClass,_position,_direction);
-private["_litterObject"];
+private["_litterObject", "_maxLitterCount"];
 
 if (isNil QGVAR(allCreatedLitter)) then {
     GVAR(allCreatedLitter) = [];
@@ -14,7 +14,8 @@ if (isNil QGVAR(allCreatedLitter)) then {
 _litterObject = _litterClass createVehicleLocal _position;
 _litterObject setDir _direction;
 
-if((count GVAR(allCreatedLitter)) > GVAR(litterSimulationDetail) ) then {
+_maxLitterCount = getArray (configFile >> "ACE_Settings" >> QGVAR(litterSimulationDetail) >> "_values") select GVAR(litterSimulationDetail); 
+if((count GVAR(allCreatedLitter)) > _maxLitterCount ) then {
     // gank the first litter object, and spawn ours.
     private["_oldLitter"];
     _oldLitter = GVAR(allCreatedLitter) deleteAt 0;

From 17899db086726ce830e79abd4f3a363e512f53c1 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Sun, 19 Apr 2015 19:49:56 +0200
Subject: [PATCH 211/257] added some missing privates

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

diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
index 02626ff1fe..29bc6dc4d3 100644
--- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
+++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
@@ -15,7 +15,7 @@
 
 #include "script_component.hpp"
 
-private ["_target", "_bandage", "_part", "_selectionName", "_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectivenss", "_mostEffectiveInjury", "_impact", "_exit"];
+private ["_target", "_bandage", "_part", "_selectionName", "_openWounds", "_config", "_effectiveness","_mostEffectiveInjury", "_mostEffectiveSpot", "_woundEffectivenss", "_mostEffectiveInjury", "_impact", "_exit", "_specificClass", "_classID", "_effectivenessFound"];
 _target = _this select 0;
 _bandage = _this select 1;
 _selectionName = _this select 2;

From 60cab963bfdee0e020c5c1adb3d77178aa2279b6 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 23:00:51 +0300
Subject: [PATCH 212/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 0287478bc5..bf0bde22f6 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1529,7 +1529,7 @@
             <English>Heavily wounded</English>
             <German>Schwer verwundet:</German>
             <Polish>Ciężko ranny</Polish>
-            <Russian>Тяжело ранен</Russian>
+            <Russian>Тяжелые ранения</Russian>
             <Italian>Gravemente ferito</Italian>
             <Spanish>Gravemente herido</Spanish>
             <French>Lourdement blessé</French>
@@ -1538,7 +1538,7 @@
             <English>Lightly wounded</English>
             <German>Leicht verwundet:</German>
             <Polish>Lekko ranny</Polish>
-            <Russian>Легко ранен</Russian>
+            <Russian>Легкие раненя</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
             <French>Légèrement blessé</French>

From 5038674aefb212f72ea3d566ab9d253e31732e1a Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Sun, 19 Apr 2015 23:01:38 +0300
Subject: [PATCH 213/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index bf0bde22f6..cf6e4515b3 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1538,7 +1538,7 @@
             <English>Lightly wounded</English>
             <German>Leicht verwundet:</German>
             <Polish>Lekko ranny</Polish>
-            <Russian>Легкие раненя</Russian>
+            <Russian>Легкие ранения</Russian>
             <Italian>Leggermente ferito</Italian>
             <Spanish>Levemente herido</Spanish>
             <French>Légèrement blessé</French>
@@ -1547,7 +1547,7 @@
             <English>Very lightly wounded</English>
             <German>Sehr leicht verwundet:</German>
             <Polish>B. lekko ranny</Polish>
-            <Russian>Очень легко ранен</Russian>
+            <Russian>Незначительные ранения</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
             <French>Très légèrement blessé</French>

From f7d35d5593c1bc728c359e3e2a2c0e79ccaba815 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Sun, 19 Apr 2015 22:30:13 +0200
Subject: [PATCH 214/257] =?UTF-8?q?The=20ATragMX=20now=20also=20accounts?=
 =?UTF-8?q?=20for=20vertical=20coriolis=20drift=20(E=C3=B6tv=C3=B6s=20effe?=
 =?UTF-8?q?ct)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../functions/fnc_calculate_range_card.sqf    |  2 +-
 .../fnc_calculate_scope_base_angle.sqf        |  2 +-
 .../functions/fnc_calculate_solution.sqf      | 35 +++++++++++++------
 .../fnc_calculate_target_solution.sqf         |  2 +-
 .../functions/fnc_update_zero_range.sqf       |  2 +-
 5 files changed, 28 insertions(+), 15 deletions(-)

diff --git a/addons/atragmx/functions/fnc_calculate_range_card.sqf b/addons/atragmx/functions/fnc_calculate_range_card.sqf
index c11cf90550..f3f27f7d3e 100644
--- a/addons/atragmx/functions/fnc_calculate_range_card.sqf
+++ b/addons/atragmx/functions/fnc_calculate_range_card.sqf
@@ -77,4 +77,4 @@ GVAR(rangeCardData) = [];
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, true, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
diff --git a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
index 76c54f63a9..fbd191bb79 100644
--- a/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
+++ b/addons/atragmx/functions/fnc_calculate_scope_base_angle.sqf
@@ -35,6 +35,6 @@ _barometricPressure = 1013.25;
 _relativeHumidity = 0;
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _airFriction, 1, "ICAO", false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
 
 _scopeBaseAngle + (_result select 0) / 60
diff --git a/addons/atragmx/functions/fnc_calculate_solution.sqf b/addons/atragmx/functions/fnc_calculate_solution.sqf
index 2d70e8dca1..f90b299ce9 100644
--- a/addons/atragmx/functions/fnc_calculate_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_solution.sqf
@@ -43,7 +43,7 @@
  */
 #include "script_component.hpp"
 
-private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude"];
+private ["_scopeBaseAngle", "_bulletMass", "_boreHeight", "_airFriction", "_muzzleVelocity", "_temperature", "_barometricPressure", "_relativeHumidity", "_simSteps", "_windSpeed1", "_windSpeed2", "_windDirection", "_inclinationAngle", "_targetSpeed", "_targetRange", "_drag", "_bc", "_dragModel", "_atmosphereModel", "_storeRangeCardData", "_stabilityFactor", "_twistDirection", "_latitude", "_directionOfFire"];
 _scopeBaseAngle     = _this select 0;
 _bulletMass         = _this select 1;
 _boreHeight         = _this select 2;
@@ -66,6 +66,7 @@ _storeRangeCardData = _this select 17;
 _stabilityFactor    = _this select 18;
 _twistDirection     = _this select 19;
 _latitude           = _this select 20;
+_directionOfFire    = _this select 21;
 
 private ["_bulletPos", "_bulletVelocity", "_bulletAccel", "_bulletSpeed", "_gravity", "_deltaT"];
 _bulletPos = [0, 0, 0];
@@ -114,6 +115,12 @@ _speedTotal = 0;
 _stepsTotal = 0;
 _speedAverage = 0;
 
+private ["_eoetvoesMultiplier"];
+_eoetvoesMultiplier = 0;
+if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
+    _eoetvoesMultiplier = 2 * (0.0000729 * _muzzleVelocity / -9.80665) * cos(_latitude) * sin(_directionOfFire);
+};
+
 _TOF = 0;
 
 _bulletPos set [0, 0];
@@ -169,16 +176,19 @@ while {_TOF < 15 && (_bulletPos select 1) < _targetRange} do {
             _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
             _kineticEnergy = _kineticEnergy * 0.737562149;
             
-            if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
-                if ((_bulletPos select 1) > 0) then {
+            if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
+                if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
                     _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
                     _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
                     _windage1 = _windage1 + _horizontalCoriolis;
                     _windage2 = _windage2 + _horizontalCoriolis;
                 };
-            };
-            if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
-                if ((_bulletPos select 1) > 0) then {
+                if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
+                    _verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
+                    _verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
+                    _elevation = _elevation + _verticalCoriolis;
+                };
+                if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
                     _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
                     _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
                     _windage1 = _windage1 + _spinDrift;
@@ -206,16 +216,19 @@ if (_targetRange != 0) then {
 _kineticEnergy = 0.5 * (_bulletMass / 1000 * (_bulletSpeed ^ 2));
 _kineticEnergy = _kineticEnergy * 0.737562149;
 
-if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false])) then {
-    if ((_bulletPos select 1) > 0) then {
+if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bulletPos select 1) > 0) then {
+    if (missionNamespace getVariable [QEGVAR(advanced_ballistics,CoriolisEnabled), false]) then {
         _horizontalDeflection = 0.0000729 * ((_bulletPos select 1) ^ 2) * sin(_latitude) / _speedAverage;
         _horizontalCoriolis = - atan(_horizontalDeflection / (_bulletPos select 1));
         _windage1 = _windage1 + _horizontalCoriolis;
         _windage2 = _windage2 + _horizontalCoriolis;
     };
-};
-if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false])) then {
-    if ((_bulletPos select 1) > 0) then {
+    if (missionNamespace getVariable [QEGVAR(advanced_ballistics,EoetvoesEnabled), false]) then {
+        _verticalDeflection = (_bulletPos select 2) * _eoetvoesMultiplier;
+        _verticalCoriolis = - atan(_verticalDeflection / (_bulletPos select 1));
+        _elevation = _elevation + _verticalCoriolis;
+    };
+    if (missionNamespace getVariable [QEGVAR(advanced_ballistics,SpinDriftEnabled), false]) then {
         _spinDeflection = _twistDirection * 0.0254 * 1.25 * (_stabilityFactor + 1.2) * _TOF ^ 1.83;
         _spinDrift = - atan(_spinDeflection / (_bulletPos select 1));
         _windage1 = _windage1 + _spinDrift;
diff --git a/addons/atragmx/functions/fnc_calculate_target_solution.sqf b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
index c8a3683498..641551fca1 100644
--- a/addons/atragmx/functions/fnc_calculate_target_solution.sqf
+++ b/addons/atragmx/functions/fnc_calculate_target_solution.sqf
@@ -72,7 +72,7 @@ _targetRange = GVAR(targetRange) select GVAR(currentTarget);
 
 private ["_result"];
 _result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000,
-            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude] call FUNC(calculate_solution);
+            [_windSpeed1, _windSpeed2], _windDirection, _inclinationAngle, _targetSpeed, _targetRange, _bc, _dragModel, _atmosphereModel, false, _stabilityFactor, _twistDirection, _latitude, _directionOfFire] call FUNC(calculate_solution);
 
 GVAR(elevationOutput) set [GVAR(currentTarget), _result select 0];
 GVAR(windage1Output) set [GVAR(currentTarget), (_result select 1) select 0];
diff --git a/addons/atragmx/functions/fnc_update_zero_range.sqf b/addons/atragmx/functions/fnc_update_zero_range.sqf
index a5cab3755e..299c321d33 100644
--- a/addons/atragmx/functions/fnc_update_zero_range.sqf
+++ b/addons/atragmx/functions/fnc_update_zero_range.sqf
@@ -44,7 +44,7 @@ _barometricPressure = GVAR(barometricPressure);
 _relativeHumidity = GVAR(relativeHumidity);
 
 private ["_result"];
-_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0] call FUNC(calculate_solution);
+_result = [_scopeBaseAngle, _bulletMass, _boreHeight, _airFriction, _muzzleVelocity, _temperature, _barometricPressure, _relativeHumidity, 1000, [0, 0], 0, 0, 0, _zeroRange, _bc, _dragModel, _atmosphereModel, false, 1.5, 0, 0, 0] call FUNC(calculate_solution);
 
 GVAR(workingMemory) set [2, _zeroRange];
 GVAR(workingMemory) set [3, _scopeBaseAngle + (_result select 0) / 60];

From 6c8b58789024df653d90e4502cb895c48114f2a0 Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Mon, 20 Apr 2015 00:02:01 +0300
Subject: [PATCH 215/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index cf6e4515b3..06361528e3 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1547,7 +1547,7 @@
             <English>Very lightly wounded</English>
             <German>Sehr leicht verwundet:</German>
             <Polish>B. lekko ranny</Polish>
-            <Russian>Незначительные ранения</Russian>
+            <Russian>Царапины</Russian>
             <Italian>Ferito lievemente</Italian>
             <Spanish>Muy levemente herido</Spanish>
             <French>Très légèrement blessé</French>

From 8530684fa6ff86d697f7a1a03fc0d735822de1ec Mon Sep 17 00:00:00 2001
From: Grzegorz Sikora <gienkov.grzegorz@gmail.com>
Date: Sun, 19 Apr 2015 23:09:11 +0200
Subject: [PATCH 216/257] PL fix #2

---
 addons/attach/stringtable.xml      | 7 ++++---
 addons/captives/stringtable.xml    | 5 +++--
 addons/dragging/stringtable.xml    | 5 +++--
 addons/explosives/stringtable.xml  | 9 +++++----
 addons/interaction/stringtable.xml | 7 ++++---
 5 files changed, 19 insertions(+), 14 deletions(-)

diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml
index 33eb0d9cac..df8fc26c3c 100644
--- a/addons/attach/stringtable.xml
+++ b/addons/attach/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Attach">
         <Key ID="STR_ACE_Attach_AttachDetach">
@@ -183,7 +184,7 @@
             <English>%1&lt;br/&gt;Attached</English>
             <German>%1&lt;br/&gt;befestigt</German>
             <Spanish>%1&lt;br/&gt;acoplada</Spanish>
-            <Polish>%1&lt;br/&gt;Przyczepiono</Polish>
+            <Polish>%1&lt;br/&gt;przyczepiono</Polish>
             <French>%1&lt;br/&gt;attachée</French>
             <Czech>%1&lt;br/&gt;Připnutý</Czech>
             <Portuguese>%1&lt;br/&gt;Acoplada</Portuguese>
@@ -195,7 +196,7 @@
             <English>%1&lt;br/&gt;Detached</English>
             <German>%1&lt;br/&gt;entfernt</German>
             <Spanish>%1&lt;br/&gt;quitada</Spanish>
-            <Polish>%1&lt;br/&gt;Odczepiono</Polish>
+            <Polish>%1&lt;br/&gt;odczepiono</Polish>
             <French>%1&lt;br/&gt;détachée</French>
             <Czech>%1&lt;br/&gt;Odepnutý</Czech>
             <Portuguese>%1&lt;br/&gt;Separada</Portuguese>
@@ -204,4 +205,4 @@
             <Russian>%1&lt;br/&gt;отсоединен(-а)</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 0a88c5d7d8..6e02114351 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Captives">
         <Key ID="STR_ACE_Captives_SetCaptive">
@@ -6,7 +7,7 @@
             <German>Gefangen nehmen</German>
             <Spanish>Tomar prisionero</Spanish>
             <French>Capturer le prisonnier</French>
-            <Polish>Weź więźnia</Polish>
+            <Polish>Aresztuj</Polish>
             <Czech>Zajmout Osobu</Czech>
             <Italian>Arresta il Prigioniero</Italian>
             <Portuguese>Tomar Prisioneiro</Portuguese>
@@ -53,7 +54,7 @@
             <English>You need to take him as prisoner first!</English>
             <German>Du musst ihn zuerst gefangen nehmen.</German>
             <Spanish>Necesitas hacerle prisionero primero!</Spanish>
-            <Polish>Najpierw musisz wziąć go jako więźnia!</Polish>
+            <Polish>Najpierw musisz go aresztować!</Polish>
             <French>Vous devez d'abord le capturer!</French>
             <Czech>Musíš ho nejdříve zajmout!</Czech>
             <Italian>Prima devi arrestarlo!</Italian>
diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml
index b02979e279..378ce353bd 100644
--- a/addons/dragging/stringtable.xml
+++ b/addons/dragging/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Dragging">
         <Key ID="STR_ACE_Dragging_Drag">
@@ -29,7 +30,7 @@
             <English>Item too heavy</English>
             <German>Gegenstand ist zu schwer</German>
             <Spanish>Articulo demasiado pesado</Spanish>
-            <Polish>Przedmiot zbyt ciężki</Polish>
+            <Polish>Przedmiot jest zbyt ciężki</Polish>
             <French>Objet trop lourd</French>
             <Portuguese>Não é possível carregar o item devido a seu peso</Portuguese>
             <Italian>Non è possibile trascinare l'oggetto a causa del suo peso</Italian>
@@ -50,4 +51,4 @@
             <Russian>Нести</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index 6898274307..3299cb980c 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Explosives">
         <Key ID="STR_ACE_Explosives_Menu">
@@ -233,7 +234,7 @@
             <English>Dial</English>
             <German>Wählen</German>
             <Spanish>Marcar</Spanish>
-            <Polish>Wybierz mumer</Polish>
+            <Polish>Wybierz numer</Polish>
             <French>Composer</French>
             <Czech>Vytočit</Czech>
             <Italian>Composizione numero</Italian>
@@ -281,7 +282,7 @@
             <English>Detonate Menu</English>
             <German>"Zünden"-Menü</German>
             <Spanish>Menú de detonación</Spanish>
-            <Polish>Menu detonowania</Polish>
+            <Polish>Menu detonacji</Polish>
             <French>Menu de mise à feu</French>
             <Czech>Menu Detonace</Czech>
             <Italian>Menù di detonazione</Italian>
@@ -484,7 +485,7 @@
             <German>Zündet Sprengladungen wenn losgelassen.</German>
             <French>Déclenche la mise à feu d'un explosif lorsqu'il est libéré.</French>
             <Czech>Používaný k vzdálenému odpálení, při uvolnění odpálí výbušniny</Czech>
-            <Polish>Używany w celu zdalnej detonacji ładunków kiedy jego operator zostanie zabity.</Polish>
+            <Polish>Używany w celu zdalnej detonacji ładunków, kiedy jego operator zostanie zabity.</Polish>
             <Spanish>Utilizado para detonar explosivos remotamente al soltarlo.</Spanish>
             <Hungarian>Robbanóanyagok távoli robbantásához való, elengedéskor gyújt.</Hungarian>
             <Russian>Используется для дистанционного подрыва, после смерти оператора.</Russian>
@@ -502,4 +503,4 @@
             <Italian>Raccogli</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index 9064e5c2d0..41068c9e2d 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -1,4 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
+<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Interaction">
         <Key ID="STR_ACE_Interaction_MainAction">
@@ -430,7 +431,7 @@
             <Spanish>Te tocaron el hombro DERECHO</Spanish>
             <German>Dir wurde auf die rechte Schulter geklopft</German>
             <French>On te tape sur l'épaule droite</French>
-            <Polish>Zostałeś klepnięty po ramieniu</Polish>
+            <Polish>Zostałeś klepnięty w prawe ramię</Polish>
             <Hungarian>Megveregették a JOBB válladat.</Hungarian>
             <Czech>Někdo tě poklepal na PRAVÉ rameno</Czech>
             <Russian>Вас похлопали по ПРАВОМУ плечу</Russian>
@@ -442,7 +443,7 @@
             <Spanish>Te tocaron el hombro IZQUIERDO.</Spanish>
             <German>Dir wurde auf die linke Schulter geklopft</German>
             <French>On te tape sur l'épaule gauche</French>
-            <Polish>Zostałeś klepnięty po ramieniu</Polish>
+            <Polish>Zostałeś klepnięty w lewe ramię</Polish>
             <Hungarian>Megveregették a BAL válladat.</Hungarian>
             <Czech>Někdo tě poklepal na LEVÉ rameno</Czech>
             <Russian>Вас похлопали по ЛЕВОМУ плечу</Russian>
@@ -734,4 +735,4 @@
             <Italian>Passeggeri</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From 20293bd11b4b36c8e6c3ebc51429935f60d1644b Mon Sep 17 00:00:00 2001
From: Tachii <zaveruha007@gmail.com>
Date: Mon, 20 Apr 2015 00:26:20 +0300
Subject: [PATCH 217/257] Update stringtable.xml

---
 addons/medical/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 06361528e3..e85283c471 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -1610,7 +1610,7 @@
             <English>Pain Effect Type</English>
             <German>Schmerzeffekt-Typ</German>
             <Polish>Rodzaj efektu bólu</Polish>
-            <Russian>Тип эффекта боли</Russian>
+            <Russian>Визуальный эффект боли</Russian>
             <Italian>Pain Effect Type</Italian>
             <Spanish>Tipo de efecto de dolor</Spanish>
             <French>Type d'effet de douleur</French>

From ac201d334c70bb6a5201776dd4ce63dd9129ea52 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Sun, 19 Apr 2015 14:51:51 -0700
Subject: [PATCH 218/257] Added support for building server.pbo

Added new optionals_root to make.cfg
Updated version
Added global variables. #552
---
 tools/make.cfg |  5 ++++
 tools/make.py  | 67 ++++++++++++++++++++++++++++++++++++++++++--------
 2 files changed, 62 insertions(+), 10 deletions(-)

diff --git a/tools/make.cfg b/tools/make.cfg
index 1eb02b826f..e89568d60e 100644
--- a/tools/make.cfg
+++ b/tools/make.cfg
@@ -39,6 +39,11 @@ prefix = z\ace\addons
 # Default: <work_drive>\<prefix>\addons
 module_root = P:\z\ace\addons
 
+# Set the location where the optional addon source folders (i.e. P:\z\ace\optionals)
+# Default: <work_drive>\<prefix>\optionals
+optionals_root = P:\z\ace\optionals
+
+
 # Directory where the built addon will be saved.
 # Default: release
 release_dir = P:\z\ace\release
diff --git a/tools/make.py b/tools/make.py
index ce5b770383..ffa5f75e25 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -30,7 +30,7 @@
 
 ###############################################################################
 
-__version__ = "0.3dev"
+__version__ = "0.4"
 
 import sys
 
@@ -54,6 +54,13 @@ import re
 if sys.platform == "win32":
 	import winreg
 
+######## GLOBALS #########
+work_drive = ""
+module_root = ""
+release_dir = ""
+module_root_parent = ""
+optionals_root = ""
+
 ###############################################################################
 # http://akiscode.com/articles/sha-1directoryhash.shtml
 # Copyright (c) 2009 Stephen Akiki
@@ -300,7 +307,7 @@ def copy_important_files(source_dir,destination_dir):
 	
 	#copy importantFiles
 	try:
-		print_blue("Searching for important files in " + source_dir)
+		print_blue("\nSearching for important files in " + source_dir)
 		for file in importantFiles:
 			print_green("Copying file => " + os.path.join(source_dir,file))
 			shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file))
@@ -308,12 +315,10 @@ def copy_important_files(source_dir,destination_dir):
 		print_error("COPYING IMPORTANT FILES.")
 		raise
 	
-	print("")
-	
 	#copy all extension dlls
 	try:
 		os.chdir(os.path.join(source_dir))
-		print_blue("Searching for DLLs in " + os.getcwd())
+		print_blue("\nSearching for DLLs in " + os.getcwd())
 		filenames = glob.glob("*.dll")
 		
 		if not filenames:
@@ -328,11 +333,42 @@ def copy_important_files(source_dir,destination_dir):
 		raise
 	finally:
 		os.chdir(originalDir)
+
+def copy_optionals_for_building(mod):
+	src_directories = os.listdir(optionals_root)
+	print("")
+	try:
+		for dir_name in src_directories:
+			mod.append(dir_name)
+			if (dir_name == "userconfig"):
+				destination = os.path.join(work_drive,dir_name)
+			else:
+				destination = os.path.join(module_root,dir_name)
+				
+			print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.")
+			shutil.rmtree(destination, True)
+			shutil.copytree(os.path.join(optionals_root,dir_name), destination)
+	except:
+		print_error("Copy Optionals Failed")
+		raise
+		
+def cleanup_optionals(mod):
+	try:
+		for dir_name in mod:
+			if (dir_name == "userconfig"):
+				destination = os.path.join(work_drive,dir_name)
+			else:
+				destination = os.path.join(module_root,dir_name)
+			print("Cleaning " + destination)
+			shutil.rmtree(destination)
+	except:
+		print_error("Cleaning Optionals Failed")
+		raise
 ###############################################################################
 
 def main(argv):
 	"""Build an Arma addon suite in a directory from rules in a make.cfg file."""
-	print_blue(("\nmake.py for Arma, v" + __version__))
+	print_blue(("\nmake.py for Arma, modified for Advanced Combat Environment v" + __version__))
 
 	if sys.platform != "win32":
 		print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.")
@@ -447,6 +483,12 @@ See the make.cfg file for additional build options.
 
 	cfg = configparser.ConfigParser();
 	try:
+		global work_drive
+		global module_root
+		global release_dir
+		global module_root_parent
+		global optionals_root
+		
 		cfg.read(os.path.join(make_root, "make.cfg"))
 
 		# Project name (with @ symbol)
@@ -487,7 +529,7 @@ See the make.cfg file for additional build options.
 		# Project module Root
 		module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
 		module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
-		ace_optionals_root = os.path.join(module_root_parent, "optionals")
+		optionals_root = os.path.join(module_root_parent, "optionals")
 		print_green ("module_root: " + module_root)
 		
 		if (os.path.isdir(module_root)):
@@ -496,10 +538,10 @@ See the make.cfg file for additional build options.
 			print_error ("Directory " + module_root + " does not exist.")
 			sys.exit()
 
-		if (os.path.isdir(ace_optionals_root)):
-			print_green ("ace_optionals_root: " + ace_optionals_root)
+		if (os.path.isdir(optionals_root)):
+			print_green ("optionals_root: " + optionals_root)
 		else:
-			print_error ("Directory " + ace_optionals_root + " does not exist.")
+			print_error ("Directory " + optionals_root + " does not exist.")
 			sys.exit()
 		
 		print_green ("release_dir: " + release_dir)
@@ -552,6 +594,10 @@ See the make.cfg file for additional build options.
 		print ("No cache found.")
 		cache = {}
 
+	#Temporarily copy optionals_root for building. They will be removed later. 
+	optionals_modules = []
+	copy_optionals_for_building(optionals_modules)	
+	
 	# Get list of subdirs in make root.
 	dirs = next(os.walk(module_root))[1]
 	
@@ -910,6 +956,7 @@ See the make.cfg file for additional build options.
 			except:
 				print_error("Could not copy files. Is Arma 3 running?")
 
+	cleanup_optionals(optionals_modules)
 if __name__ == "__main__":
 	main(sys.argv)
 input("Press Enter to continue...")

From 9c11e47ef45ca29ffa3ef096120ebb8f87492491 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Sun, 19 Apr 2015 15:28:54 -0700
Subject: [PATCH 219/257] Missing changes that Git Extensions client left out
 #552

---
 tools/make.py | 53 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 file changed, 46 insertions(+), 7 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index ffa5f75e25..f036bd0c83 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -334,8 +334,30 @@ def copy_important_files(source_dir,destination_dir):
 	finally:
 		os.chdir(originalDir)
 
-def copy_optionals_for_building(mod):
+def copy_optionals_for_building(mod,pbos):
 	src_directories = os.listdir(optionals_root)
+	current_dir = os.getcwd()
+	
+	print("")
+	try:
+		
+		#special server.pbo processing
+		files = glob.glob(os.path.join(release_dir, "@ace","optionals","*.pbo"))
+		for file in files:
+			file_name = os.path.basename(file)
+			print ("Adding the following file: " + file_name)
+			pbos.append(file_name)
+			pbo_path = os.path.join(release_dir, "@ace","optionals",file_name)
+			if (os.path.isfile(pbo_path)):
+				print("Moving " + pbo_path + " for processing.")
+				shutil.move(pbo_path, os.path.join(release_dir,"@ace","addons",file_name))
+
+	except:
+		print_error("Error in moving")
+		raise
+	finally:
+		os.chdir(current_dir)
+
 	print("")
 	try:
 		for dir_name in src_directories:
@@ -344,23 +366,39 @@ def copy_optionals_for_building(mod):
 				destination = os.path.join(work_drive,dir_name)
 			else:
 				destination = os.path.join(module_root,dir_name)
-				
+
 			print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.")
 			shutil.rmtree(destination, True)
 			shutil.copytree(os.path.join(optionals_root,dir_name), destination)
 	except:
 		print_error("Copy Optionals Failed")
 		raise
+	finally:
+		os.chdir(current_dir)
 		
-def cleanup_optionals(mod):
-	try:
+def cleanup_optionals(mod,pbos):
+	print("")
+	try:			
 		for dir_name in mod:
 			if (dir_name == "userconfig"):
 				destination = os.path.join(work_drive,dir_name)
 			else:
 				destination = os.path.join(module_root,dir_name)
+			
 			print("Cleaning " + destination)
+			
+			try:
+				file_name = "ace_{}.pbo".format(dir_name)
+				src_file_path = os.path.join(release_dir, "@ace","addons",file_name)
+				dst_file_path = os.path.join(release_dir, "@ace","optionals",file_name)
+				if (os.path.isfile(src_file_path)):
+					#print("Preserving " + file_name)
+					os.renames(src_file_path,dst_file_path)
+			except FileExistsError:
+				print_error(file_name + " already exists")
+				continue
 			shutil.rmtree(destination)
+			
 	except:
 		print_error("Cleaning Optionals Failed")
 		raise
@@ -596,7 +634,8 @@ See the make.cfg file for additional build options.
 
 	#Temporarily copy optionals_root for building. They will be removed later. 
 	optionals_modules = []
-	copy_optionals_for_building(optionals_modules)	
+	optional_files = []
+	copy_optionals_for_building(optionals_modules,optional_files)	
 	
 	# Get list of subdirs in make root.
 	dirs = next(os.walk(module_root))[1]
@@ -955,8 +994,8 @@ See the make.cfg file for additional build options.
 				shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project))
 			except:
 				print_error("Could not copy files. Is Arma 3 running?")
-
-	cleanup_optionals(optionals_modules)
+				
+	cleanup_optionals(optionals_modules,optional_files)
 if __name__ == "__main__":
 	main(sys.argv)
 input("Press Enter to continue...")

From 5793175c1fe75cec868816c1b93c8d4fcbf0b8eb Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Sun, 19 Apr 2015 16:00:34 -0700
Subject: [PATCH 220/257] Fixing issue when release directory is missing

#552
---
 tools/make.py | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index f036bd0c83..5146a666bb 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -583,7 +583,6 @@ See the make.cfg file for additional build options.
 			sys.exit()
 		
 		print_green ("release_dir: " + release_dir)
-		copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
 		
 	except:
 		raise
@@ -635,7 +634,7 @@ See the make.cfg file for additional build options.
 	#Temporarily copy optionals_root for building. They will be removed later. 
 	optionals_modules = []
 	optional_files = []
-	copy_optionals_for_building(optionals_modules,optional_files)	
+	copy_optionals_for_building(optionals_modules,optional_files)
 	
 	# Get list of subdirs in make root.
 	dirs = next(os.walk(module_root))[1]
@@ -994,7 +993,8 @@ See the make.cfg file for additional build options.
 				shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project))
 			except:
 				print_error("Could not copy files. Is Arma 3 running?")
-				
+
+	copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
 	cleanup_optionals(optionals_modules,optional_files)
 if __name__ == "__main__":
 	main(sys.argv)

From f928f37e264bdbb7b476e1c4a5d9f8d958a0d7b3 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Mon, 20 Apr 2015 01:16:51 -0300
Subject: [PATCH 221/257] Eliminate interact_menu fps drops due to high nearby
 object counts. Instead of reanalizing every frame which actions points should
 be rendered based on distance, that job is now done only 5 times per second.
 The rest of the frames the action points from the last frame are rerendered..
 Close #434

---
 addons/interact_menu/XEH_preInit.sqf          |  3 +++
 .../interact_menu/functions/fnc_keyDown.sqf   |  1 +
 .../functions/fnc_renderActionPoints.sqf      | 19 +++++++++++++++++--
 3 files changed, 21 insertions(+), 2 deletions(-)

diff --git a/addons/interact_menu/XEH_preInit.sqf b/addons/interact_menu/XEH_preInit.sqf
index b4a3504cdd..747da7083e 100644
--- a/addons/interact_menu/XEH_preInit.sqf
+++ b/addons/interact_menu/XEH_preInit.sqf
@@ -49,4 +49,7 @@ GVAR(expandedTime) = diag_tickTime;
 GVAR(iconCtrls) = [];
 GVAR(iconCount) = 0;
 
+GVAR(foundActions) = [];
+GVAR(lastTimeSearchedActions) = -1000;
+
 ADDON = true;
diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf
index 47fdfb1951..123c1d45e2 100644
--- a/addons/interact_menu/functions/fnc_keyDown.sqf
+++ b/addons/interact_menu/functions/fnc_keyDown.sqf
@@ -29,6 +29,7 @@ if (_menuType == 0) then {
 };
 GVAR(keyDownTime) = diag_tickTime;
 GVAR(openedMenuType) = _menuType;
+GVAR(lastTimeSearchedActions) = -1000;
 
 GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
                       visibleMap ||
diff --git a/addons/interact_menu/functions/fnc_renderActionPoints.sqf b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
index 6ed4b41de4..78d5418e5a 100644
--- a/addons/interact_menu/functions/fnc_renderActionPoints.sqf
+++ b/addons/interact_menu/functions/fnc_renderActionPoints.sqf
@@ -24,6 +24,9 @@ _fnc_renderNearbyActions = {
     _cameraPos = (positionCameraToWorld [0, 0, 0]) call EFUNC(common,positionToASL);
     _cameraDir = ((positionCameraToWorld [0, 0, 1]) call EFUNC(common,positionToASL)) vectorDiff _cameraPos;
 
+    GVAR(foundActions) = [];
+    GVAR(lastTimeSearchedActions) = diag_tickTime;
+
     _numInteractObjects = 0;
     _nearestObjects = nearestObjects [ACE_player, ["All"], 13];
     {
@@ -46,6 +49,7 @@ _fnc_renderNearbyActions = {
                         _action = _x;
                         if ([_target, _action] call FUNC(renderBaseMenu)) then {
                             _numInteractions = _numInteractions + 1;
+                            GVAR(foundActions) pushBack [_target, _action];
                         };
                     };
                 } forEach GVAR(objectActionList);
@@ -57,6 +61,7 @@ _fnc_renderNearbyActions = {
                     // Try to render the menu
                     if ([_target, _action] call FUNC(renderBaseMenu)) then {
                         _numInteractions = _numInteractions + 1;
+                        GVAR(foundActions) pushBack [_target, _action];
                     };
                 } forEach _classActions;
 
@@ -71,7 +76,11 @@ _fnc_renderNearbyActions = {
     } forEach _nearestObjects;
 };
 
-
+_fnc_renderLastFrameActions = {
+    {
+        _x call FUNC(renderBaseMenu);
+    } forEach GVAR(foundActions);
+};
 
 _fnc_renderSelfActions = {
     _target = _this;
@@ -109,7 +118,13 @@ _fnc_renderSelfActions = {
 if (GVAR(openedMenuType) == 0) then {
 
     if (vehicle ACE_player == ACE_player) then {
-        call _fnc_renderNearbyActions;
+        if (diag_tickTime > GVAR(lastTimeSearchedActions) + 0.20) then {
+            // Once every 0.2 secs, collect nearby objects active and visible action points and render them
+            call _fnc_renderNearbyActions;
+        } else {
+            // The rest of the frames just draw the same action points rendered the last frame
+            call _fnc_renderLastFrameActions;
+        };
     } else {
         (vehicle ACE_player) call _fnc_renderSelfActions;
     };

From 8ff72e7fc8e17ec740bc74e9341a8e4c7a1bcdc8 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 10:35:29 +0200
Subject: [PATCH 222/257] Fixed another bug in the unit conversion code

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

diff --git a/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
index 3627197185..94801cad39 100644
--- a/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
+++ b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
@@ -47,10 +47,10 @@ if (GVAR(currentUnit) != 2) then {
 } else {
     ctrlSetText [120050, Str(Round(GVAR(workingMemory) select 1))];
 };
-if (GVAR(currentUnit) == 2) then {
-    ctrlSetText [120060, Str(Round(GVAR(workingMemory) select 2))];
-} else {
+if (GVAR(currentUnit) == 1) then {
     ctrlSetText [120060, Str(Round((GVAR(workingMemory) select 2) * 1.0936133))];
+} else {
+    ctrlSetText [120060, Str(Round(GVAR(workingMemory) select 2))];
 };
 
 if (GVAR(currentUnit) == 2) then {

From 2bf47ca0c4777d8282be3f1b7ff4c782ca20d3f1 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 10:36:20 +0200
Subject: [PATCH 223/257] Added two more asterix (*) meter indicator GUI
 elements

---
 addons/atragmx/RscTitles.hpp                       | 14 ++++++++++++++
 .../atragmx/functions/fnc_show_gun_ammo_data.sqf   |  2 +-
 addons/atragmx/functions/fnc_show_target_data.sqf  |  2 +-
 .../atragmx/functions/fnc_update_gun_ammo_data.sqf |  5 +++++
 .../atragmx/functions/fnc_update_target_data.sqf   |  5 +++++
 5 files changed, 26 insertions(+), 2 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 905212d5c9..fe45ef67f5 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -1115,6 +1115,13 @@ class ATragMX_Display {
             idc=120060;
             y=0.265*safezoneH+safezoneY+0.520;
         };
+        class TEXT_GUN_AMMO_DATA_ZERO_RANGE_METER_INDICATOR: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=120061;
+            w=0.05;
+            x=0.550*safezoneW+safezoneX+0.315;
+            y=0.265*safezoneH+safezoneY+0.520;
+            text="";
+        };
         class TEXT_GUN_AMMO_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
             idc=12008;
             action=QUOTE(1 call FUNC(toggle_gun_ammo_data));
@@ -1327,6 +1334,13 @@ class ATragMX_Display {
             idc=140060;
             y=0.265*safezoneH+safezoneY+0.520;
         };
+        class TEXT_TARGET_DATA_TARGET_RANGE_METER_INDICATOR: TEXT_TARGET_DATA_LATITUDE {
+            idc=140061;
+            w=0.05;
+            x=0.550*safezoneW+safezoneX+0.315;
+            y=0.265*safezoneH+safezoneY+0.520;
+            text="";
+        };
         class TEXT_TARGET_DATA_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
             idc=14008;
             action=QUOTE(1 call FUNC(toggle_target_data));
diff --git a/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
index 06ab20b3b7..dfab6da238 100644
--- a/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
+++ b/addons/atragmx/functions/fnc_show_gun_ammo_data.sqf
@@ -17,7 +17,7 @@
 
 GVAR(showGunAmmoData) = _this;
 
-{ctrlShow [_x, _this]} forEach [12000, 120000, 12001, 120010, 12002, 120020, 12003, 120030, 12004, 120040, 12005, 120050, 12006, 120060, 12007, 12008, 12009, 12010, 12011];
+{ctrlShow [_x, _this]} forEach [12000, 120000, 12001, 120010, 12002, 120020, 12003, 120030, 12004, 120040, 12005, 120050, 12006, 120060, 120061, 12007, 12008, 12009, 12010, 12011];
 
 if (_this) then {
     [] call FUNC(update_gun_ammo_data);
diff --git a/addons/atragmx/functions/fnc_show_target_data.sqf b/addons/atragmx/functions/fnc_show_target_data.sqf
index 4e696ae331..48e419f65f 100644
--- a/addons/atragmx/functions/fnc_show_target_data.sqf
+++ b/addons/atragmx/functions/fnc_show_target_data.sqf
@@ -17,7 +17,7 @@
 
 GVAR(showTargetData) = _this;
 
-{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 14006, 140060, 14007, 14008, 14009, 14010, 14011];
+{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 14006, 140060, 140061, 14007, 14008, 14009, 14010, 14011];
 
 if (_this) then {
     [] call FUNC(update_target_data);
diff --git a/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
index 94801cad39..4ccae287e7 100644
--- a/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
+++ b/addons/atragmx/functions/fnc_update_gun_ammo_data.sqf
@@ -52,6 +52,11 @@ if (GVAR(currentUnit) == 1) then {
 } else {
     ctrlSetText [120060, Str(Round(GVAR(workingMemory) select 2))];
 };
+if (GVAR(currentUnit) == 0) then {
+    ctrlSetText [120061, "*"];
+} else {
+    ctrlSetText [120061, ""];
+};
 
 if (GVAR(currentUnit) == 2) then {
     ctrlSetText [12000, "Bore       (cm)"];
diff --git a/addons/atragmx/functions/fnc_update_target_data.sqf b/addons/atragmx/functions/fnc_update_target_data.sqf
index 733118d583..b5e6dcf85a 100644
--- a/addons/atragmx/functions/fnc_update_target_data.sqf
+++ b/addons/atragmx/functions/fnc_update_target_data.sqf
@@ -37,6 +37,11 @@ if (GVAR(currentUnit) == 1) then {
 } else {
     ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget))))];
 };
+if (GVAR(currentUnit) == 0) then {
+    ctrlSetText [140061, "*"];
+} else {
+    ctrlSetText [140061, ""];
+};
 
 if (GVAR(currentUnit) == 2) then {
     ctrlSetText [14002, "Wind Speed (m/s)"];

From c049ee5c08308f6355db086ab91a16619bf75487 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 11:02:28 +0200
Subject: [PATCH 224/257] Fixed incorrect .408 Chey Tac airFriction value

---
 addons/atragmx/XEH_postInit.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index 574b5a8991..242b9dcbe8 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -13,7 +13,7 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
                       
                       ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
                       
-                      [".408 Chey Tac"     , 910, 100, 0.0569, -0.0004800, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
+                      [".408 Chey Tac"     , 910, 100, 0.0571, -0.0003950, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
                       
                       ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
                       

From de0414803ec7649d18aed45e481c05b14f8d6d3b Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 11:08:28 +0200
Subject: [PATCH 225/257] Fixed some more airFriction values in the ATragMX gun
 list

---
 addons/atragmx/XEH_postInit.sqf | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/addons/atragmx/XEH_postInit.sqf b/addons/atragmx/XEH_postInit.sqf
index 242b9dcbe8..7f047834e2 100644
--- a/addons/atragmx/XEH_postInit.sqf
+++ b/addons/atragmx/XEH_postInit.sqf
@@ -6,16 +6,16 @@ if ((profileNamespace getVariable ["ACE_ATragMX_profileNamespaceVersion", 0]) ==
     GVAR(gunList) = profileNamespace getVariable "ACE_ATragMX_gunList";
 } else {
     // Profile Name, Muzzle Velocity, Zero Range, Scope Base Angle, AirFriction, Bore Height, Scope Unit, Scope Click Unit, Scope Click Number, Maximum Elevation, Dialed Elevation, Dialed Windage, Mass, Bullet Diameter, Rifle Twist, BC, Drag Model, Atmosphere Model
-    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0659, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
+    GVAR(gunList) =  [["12.7x108mm"        , 820, 100, 0.0657, -0.0006400, 3.81, 0, 2, 10, 120, 0, 0, 48.28, 12.7, 38.10, 0.630, 1, "ASM" ],
     
-                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
-                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0008600, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
+                      ["12.7x99mm AMAX"    , 860, 100, 0.0612, -0.0003740, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 38.10, 1.050, 1, "ASM" ],
+                      ["12.7x99mm"         , 853, 100, 0.0623, -0.0006000, 3.81, 0, 2, 10, 120, 0, 0, 41.92, 12.7, 38.10, 0.670, 1, "ASM" ],
                       
-                      ["12.7x54mm"         , 300, 100, 0.3394, -0.0014000, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
+                      ["12.7x54mm"         , 300, 100, 0.3395, -0.0001400, 3.81, 0, 2, 10, 120, 0, 0, 48.60, 12.7, 24.13, 1.050, 1, "ASM" ],
                       
                       [".408 Chey Tac"     , 910, 100, 0.0571, -0.0003950, 3.81, 0, 2, 10, 120, 0, 0, 27.15, 10.4, 33.02, 0.970, 1, "ASM" ],
                       
-                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0007500, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
+                      ["9.3×64mm"          , 870, 100, 0.0619, -0.0010600, 3.81, 0, 2, 10, 120, 0, 0, 14.90, 9.30, 35.56, 0.368, 1, "ASM" ],
                       
                       [".338LM 250gr"      , 880, 100, 0.0598, -0.0006060, 3.81, 0, 2, 10, 120, 0, 0, 16.20, 8.58, 25.40, 0.322, 7, "ICAO"],
                       [".338LM 300gr"      , 800, 100, 0.0677, -0.0005350, 3.81, 0, 2, 10, 120, 0, 0, 19.44, 8.58, 25.40, 0.381, 7, "ICAO"],

From 0e08fd4457d1cc5fb2a79235a5ff0637998e7287 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 11:09:12 +0200
Subject: [PATCH 226/257] Incremented the ATragMX profile namespace version

---
 addons/atragmx/script_component.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/atragmx/script_component.hpp b/addons/atragmx/script_component.hpp
index 7cd5b44911..6e81f79493 100644
--- a/addons/atragmx/script_component.hpp
+++ b/addons/atragmx/script_component.hpp
@@ -11,4 +11,4 @@
 
 #include "\z\ace\addons\main\script_macros.hpp"
 
-#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.1
+#define ATRAGMX_PROFILE_NAMESPACE_VERSION 1.2

From 6c2982548fe70a0dcd8b47be50fff89a0e30b8f4 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 12:35:08 +0200
Subject: [PATCH 227/257] Fixed incorrect function header

---
 .../advanced_ballistics/functions/fnc_calculateAirDensity.sqf   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/advanced_ballistics/functions/fnc_calculateAirDensity.sqf b/addons/advanced_ballistics/functions/fnc_calculateAirDensity.sqf
index ea7a77e837..298049e51d 100644
--- a/addons/advanced_ballistics/functions/fnc_calculateAirDensity.sqf
+++ b/addons/advanced_ballistics/functions/fnc_calculateAirDensity.sqf
@@ -1,7 +1,7 @@
 /*
  * Author: Ruthberg
  *
- * Displays a wind info (colored arrow) in the top left corner of the screen
+ * Calculates the air density
  *
  * Arguments:
  * 0: temperature - degrees celcius <NUMBER>

From 89e33dc177dd43fe2e8c66ade92aec786f39548f Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 13:54:22 +0200
Subject: [PATCH 228/257] Refactored the weather module: * No changes in
 functionality

---
 addons/advanced_ballistics/XEH_preInit.sqf    |  1 -
 .../fnc_calculateAtmosphericCorrection.sqf    |  2 +-
 .../functions/fnc_handleFired.sqf             |  6 +-
 .../kestrel4500/functions/fnc_collectData.sqf |  4 +-
 .../functions/fnc_generateOutputData.sqf      |  2 +-
 addons/weather/XEH_postInit.sqf               | 99 +++++++------------
 addons/weather/XEH_preInit.sqf                | 40 ++------
 .../functions/fnc_calculateAirDensity.sqf     | 36 +++++++
 .../fnc_calculateBarometricPressure.sqf       | 20 ++++
 .../weather/functions/fnc_displayWindInfo.sqf |  1 +
 addons/weather/functions/fnc_getMapData.sqf   |  4 +
 addons/weather/functions/fnc_getWind.sqf      |  1 +
 .../functions/fnc_serverController.sqf        |  1 +
 .../weather/functions/fnc_updateHumidity.sqf  | 28 ++++++
 addons/weather/functions/fnc_updateRain.sqf   | 26 +++++
 .../functions/fnc_updateTemperature.sqf       | 22 +++++
 addons/weather/functions/fnc_updateWind.sqf   | 21 ++++
 addons/weather/script_component.hpp           |  8 ++
 18 files changed, 217 insertions(+), 105 deletions(-)
 create mode 100644 addons/weather/functions/fnc_calculateAirDensity.sqf
 create mode 100644 addons/weather/functions/fnc_calculateBarometricPressure.sqf
 create mode 100644 addons/weather/functions/fnc_updateHumidity.sqf
 create mode 100644 addons/weather/functions/fnc_updateRain.sqf
 create mode 100644 addons/weather/functions/fnc_updateTemperature.sqf
 create mode 100644 addons/weather/functions/fnc_updateWind.sqf

diff --git a/addons/advanced_ballistics/XEH_preInit.sqf b/addons/advanced_ballistics/XEH_preInit.sqf
index b58a2b88e8..1d19a9c492 100644
--- a/addons/advanced_ballistics/XEH_preInit.sqf
+++ b/addons/advanced_ballistics/XEH_preInit.sqf
@@ -2,7 +2,6 @@
 
 ADDON = false;
 
-PREP(calculateAirDensity);
 PREP(calculateAmmoTemperatureVelocityShift);
 PREP(calculateAtmosphericCorrection);
 PREP(calculateBarrelLengthVelocityShift);
diff --git a/addons/advanced_ballistics/functions/fnc_calculateAtmosphericCorrection.sqf b/addons/advanced_ballistics/functions/fnc_calculateAtmosphericCorrection.sqf
index 02e849399e..b0166109f5 100644
--- a/addons/advanced_ballistics/functions/fnc_calculateAtmosphericCorrection.sqf
+++ b/addons/advanced_ballistics/functions/fnc_calculateAtmosphericCorrection.sqf
@@ -24,7 +24,7 @@ _pressure             = _this select 2; // in hPa
 _relativeHumidity     = _this select 3; // as ratio 0-1
 _atmosphereModel      = _this select 4; // "ICAO" or "ASM"
 
-_airDensity = [_temperature, _pressure, _relativeHumidity] call FUNC(calculateAirDensity);
+_airDensity = [_temperature, _pressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity);
 
 if (_atmosphereModel == "ICAO") then {
     (STD_AIR_DENSITY_ICAO / _airDensity) * _ballisticCoefficient
diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
index baa3a871fa..54a7f2d5b0 100644
--- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf
+++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
@@ -110,7 +110,7 @@ _stabilityFactor = 1.5;
 
 if (_caliber > 0 && _bulletLength > 0 && _bulletMass > 0 && _barrelTwist > 0) then {
     _temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL _unit) select 2);
-    _barometricPressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL _bullet) select 2)) / 7990) - 10 * overcast;
+    _barometricPressure = ((getPosASL _bullet) select 2) call EFUNC(weather,calculateBarometricPressure);
     _stabilityFactor = [_caliber, _bulletLength, _bulletMass, _barrelTwist, _muzzleVelocity, _temperature, _barometricPressure] call FUNC(calculateStabilityFactor);
 };
 
@@ -288,7 +288,7 @@ if (GVAR(AdvancedAirDragEnabled)) then {
                         };
 
                         if (GVAR(AtmosphericDensitySimulationEnabled)) then {
-                            _pressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + (_bulletPosition select 2)) / 7990) - 10 * overcast;
+                            _pressure = (_bulletPosition select 2) call EFUNC(weather,calculateBarometricPressure);
                             _temperature = GET_TEMPERATURE_AT_HEIGHT(_bulletPosition select 2);
                             _humidity = EGVAR(weather,currentHumidity);
                             _airDensity = STD_AIR_DENSITY_ICAO;
@@ -315,7 +315,7 @@ if (GVAR(AdvancedAirDragEnabled)) then {
                         _bulletVelocity = _bulletVelocity vectorDiff _accel;
                     } else {
                         if (GVAR(AtmosphericDensitySimulationEnabled)) then {
-                            _pressureDeviation = 1013.25 * exp(-(EGVAR(weather,Altitude) + (_bulletPosition select 2)) / 7990) - 1013.25 - 10 * overcast;
+                            _pressureDeviation = (_bulletPosition select 2) call EFUNC(weather,calculateBarometricPressure) - 1013.25;
                             _temperature = GET_TEMPERATURE_AT_HEIGHT(_bulletPosition select 2);
                             _humidity = EGVAR(weather,currentHumidity);
                             _airFriction = _airFriction + ((_temperature - 15) * 0.0000015 + _humidity * 0.0000040 + _pressureDeviation * -0.0000009);
diff --git a/addons/kestrel4500/functions/fnc_collectData.sqf b/addons/kestrel4500/functions/fnc_collectData.sqf
index 8ebd4e01d2..bbad8619bc 100644
--- a/addons/kestrel4500/functions/fnc_collectData.sqf
+++ b/addons/kestrel4500/functions/fnc_collectData.sqf
@@ -19,7 +19,7 @@ private ["_playerDir", "_windSpeed", "_windDir", "_crosswind", "_headwind", "_hu
 if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then {
     _temperature = GET_TEMPERATURE_AT_HEIGHT((getPosASL ACE_player) select 2);
     _humidity = EGVAR(weather,currentHumidity);
-    _barometricPressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast;
+    _barometricPressure = ((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure);
     _altitude = EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2);
     GVAR(MIN) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
     GVAR(MAX) = [0, 0, 0, 0, _temperature, _humidity, _barometricPressure, _altitude];
@@ -82,7 +82,7 @@ GVAR(MAX) set [5, _humidity max (GVAR(MAX) select 5)];
 GVAR(TOTAL) set [5, (GVAR(TOTAL) select 5) + _humidity];
 
 // BARO
-_barometricPressure = 1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast;
+_barometricPressure = ((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure);
 GVAR(MIN) set [6, (GVAR(MIN) select 6) min _barometricPressure];
 GVAR(MAX) set [6, _barometricPressure max (GVAR(MAX) select 6)];
 GVAR(TOTAL) set [6, (GVAR(TOTAL) select 6) + _barometricPressure];
diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
index 3e392bd55b..3f5e77b748 100644
--- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf
+++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
@@ -174,7 +174,7 @@ switch (GVAR(Menu)) do {
     };
     case 6: { // BARO
         if (!GVAR(MinAvgMax)) then {
-            _textCenterBig = Str(round((1013.25 * exp(-(EGVAR(weather,Altitude) + ((getPosASL ACE_player) select 2)) / 7990) - 10 * overcast) * 10) / 10);
+            _textCenterBig = Str(round((((getPosASL ACE_player) select 2) call EFUNC(weather,calculateBarometricPressure)) * 10) / 10);
         } else {
             _textCenterLine1Left = "Min";
             _textCenterLine2Left = "Avg";
diff --git a/addons/weather/XEH_postInit.sqf b/addons/weather/XEH_postInit.sqf
index 9276e710da..e40a061aaf 100644
--- a/addons/weather/XEH_postInit.sqf
+++ b/addons/weather/XEH_postInit.sqf
@@ -1,6 +1,36 @@
-//XEH_postInit.sqf
-//#define DEBUG_MODE_FULL
 #include "script_component.hpp"
+
+// Rain variables
+GVAR(enableRain) = true;
+GVAR(rain_next_period) = -1;
+GVAR(rain_period_count) = 0;
+GVAR(rain_initial_rain) = 0;
+if(overcast >= 0.7) then {
+    GVAR(rain_initial_rain) = (random ((overcast-0.7)/0.3));
+};
+GVAR(current_rain) = GVAR(rain_initial_rain);
+GVAR(rain_current_range) = -1+(random 2);
+GVAR(overcast_multiplier) = 1;
+
+// Wind Variables
+ACE_wind = [0, 0, 0];
+GVAR(wind_initial_dir) = (random 360);
+GVAR(wind_initial_speed) = (overcast*5)+(random (overcast*5)) max 1;
+GVAR(wind_mean_speed) = GVAR(wind_initial_speed);
+GVAR(wind_mean_dir) = GVAR(wind_initial_dir);
+GVAR(wind_current_speed) = GVAR(wind_initial_speed);
+GVAR(wind_current_dir) = GVAR(wind_initial_dir);
+GVAR(wind_current_range_speed) = -1+(random 2);
+GVAR(wind_current_range_dir) = -1+(random 2);
+GVAR(wind_next_period) = -1; //ceil((2+random(5))/(GVAR(overcast_multiplier)/10));
+GVAR(wind_next_major_period) = -1;
+GVAR(wind_period_count) = 0;
+GVAR(wind_major_period_count) = 0;
+GVAR(wind_total_time) = 0;
+GVAR(wind_period_start_time) = time;
+
+call FUNC(getMapData);
+
 "ACE_WIND_PARAMS" addPublicVariableEventHandler { GVAR(wind_period_start_time) = time; };
 "ACE_RAIN_PARAMS" addPublicVariableEventHandler { GVAR(rain_period_start_time) = time; };
 "ACE_MISC_PARAMS" addPublicVariableEventHandler {
@@ -22,66 +52,9 @@
 {false},
 [37, [true, false, false]], false, 0] call CBA_fnc_addKeybind; // (SHIFT + K)
 
-// Update Wind
 simulWeatherSync;
-_fnc_updateWind = {
-    ACE_wind = [] call FUNC(getWind);
-    setWind [ACE_wind select 0, ACE_wind select 1, true];
-    2 setGusts 0;
 
-    // Set waves: 0 when no wind, 1 when wind >= 16 m/s
-    1 setWaves (((vectorMagnitude ACE_wind) / 16.0) min 1.0);
-
-    //systemChat format ["w:%1 %2,ACE_w:%1 %2, w", [wind select 0, wind select 1, ACE_wind select 0, ACE_wind select 1]];
-};
-[_fnc_updateWind, 1, []] call CBA_fnc_addPerFrameHandler;
-
-
-// Update Rain
-_fnc_updateRain = {
-    private ["_oldStrength","_rainStrength","_transitionTime","_periodPosition","_periodPercent"];
-    if(GVAR(enableRain)) then {
-        if(!isNil "ACE_RAIN_PARAMS" && {!isNil QGVAR(rain_period_start_time)}) then {
-            _oldStrength = ACE_RAIN_PARAMS select 0;
-            _rainStrength = ACE_RAIN_PARAMS select 1;
-            _transitionTime = ACE_RAIN_PARAMS select 2;
-            _periodPosition = (time - GVAR(rain_period_start_time)) min _transitionTime;
-            _periodPercent = (_periodPosition/_transitionTime) min 1;
-
-            0 setRain ((_periodPercent*(_rainStrength-_oldStrength))+_oldStrength);
-        };
-    };
-};
-[_fnc_updateRain, 2, []] call CBA_fnc_addPerFrameHandler;
-
-
-// Update Temperature
-_fnc_updateTemperature = {
-    private ["_time","_month","_hourlyCoef","_avgTemperature","_pS1","_pS2"];
-    _time = daytime;
-    _month = date select 1;
-
-    // Temperature
-    _hourlyCoef = -0.5 * sin(360 * ((3 + (date select 3))/24 + (date select 4)/1440));
-
-    GVAR(currentTemperature) = (GVAR(TempDay) select (_month - 1)) * (1 - _hourlyCoef) + (GVAR(TempNight) select (_month - 1)) * _hourlyCoef;
-    GVAR(currentTemperature) = GVAR(currentTemperature) - 2 * humidity - 4 * overcast;
-    GVAR(currentTemperature) = round(GVAR(currentTemperature) * 10) / 10;
-
-    // Humidity
-    GVAR(currentHumidity) = (GVAR(Humidity) select _month) / 100;
-
-    if (rain > 0 && overcast > 0.7) then {
-        GVAR(currentHumidity) = 1;
-    } else {
-        _avgTemperature = ((GVAR(TempDay) select (_month - 1)) + (GVAR(TempNight) select (_month - 1))) / 2;
-        _pS1 = 6.112 * exp((17.62 * _avgTemperature) / (243.12 + _avgTemperature));
-        _PS2 = 6.112 * exp((17.62 * GVAR(currentTemperature)) / (243.12 + GVAR(currentTemperature)));
-        GVAR(currentHumidity) = GVAR(currentHumidity) * _PS1 / _PS2;
-    };
-    GVAR(currentHumidity) = 0 max GVAR(currentHumidity) min 1;
-
-    // @todo: take altitude and humidity into account
-    GVAR(currentRelativeDensity) = (273.15 + 20) / (273.15 + GVAR(currentTemperature));
-};
-[_fnc_updateTemperature, 20, []] call CBA_fnc_addPerFrameHandler;
+[FUNC(updateTemperature), 20, []] call CBA_fnc_addPerFrameHandler;
+[FUNC(updateHumidity), 20, []] call CBA_fnc_addPerFrameHandler;
+[FUNC(updateWind), 1, []] call CBA_fnc_addPerFrameHandler;
+[FUNC(updateRain), 2, []] call CBA_fnc_addPerFrameHandler;
\ No newline at end of file
diff --git a/addons/weather/XEH_preInit.sqf b/addons/weather/XEH_preInit.sqf
index 2751e77226..ee05983a69 100644
--- a/addons/weather/XEH_preInit.sqf
+++ b/addons/weather/XEH_preInit.sqf
@@ -2,44 +2,16 @@
 #include "script_component.hpp"
 
 ADDON = false;
-LOG(MSG_INIT);
 
+PREP(calculateAirDensity);
+PREP(calculateBarometricPressure);
 PREP(displayWindInfo);
 PREP(getMapData);
 PREP(getWind);
 PREP(serverController);
-
-
-// Rain variables
-GVAR(enableRain) = true;
-GVAR(rain_next_period) = -1;
-GVAR(rain_period_count) = 0;
-GVAR(rain_initial_rain) = 0;
-if(overcast >= 0.7) then {
-    GVAR(rain_initial_rain) = (random ((overcast-0.7)/0.3));
-};
-GVAR(current_rain) = GVAR(rain_initial_rain);
-GVAR(rain_current_range) = -1+(random 2);
-GVAR(overcast_multiplier) = 1;
-
-// Wind Variables
-ACE_wind = [0, 0, 0];
-GVAR(wind_initial_dir) = (random 360);
-GVAR(wind_initial_speed) = (overcast*5)+(random (overcast*5)) max 1;
-GVAR(wind_mean_speed) = GVAR(wind_initial_speed);
-GVAR(wind_mean_dir) = GVAR(wind_initial_dir);
-GVAR(wind_current_speed) = GVAR(wind_initial_speed);
-GVAR(wind_current_dir) = GVAR(wind_initial_dir);
-GVAR(wind_current_range_speed) = -1+(random 2);
-GVAR(wind_current_range_dir) = -1+(random 2);
-GVAR(wind_next_period) = -1; //ceil((2+random(5))/(GVAR(overcast_multiplier)/10));
-GVAR(wind_next_major_period) = -1;
-GVAR(wind_period_count) = 0;
-GVAR(wind_major_period_count) = 0;
-GVAR(wind_total_time) = 0;
-GVAR(wind_period_start_time) = time;
-
-// Init weather variables, in case they are needed before postInit
-call FUNC(getMapData);
+PREP(updateHumidity);
+PREP(updateRain);
+PREP(updateTemperature);
+PREP(updateWind);
 
 ADDON = true;
diff --git a/addons/weather/functions/fnc_calculateAirDensity.sqf b/addons/weather/functions/fnc_calculateAirDensity.sqf
new file mode 100644
index 0000000000..298049e51d
--- /dev/null
+++ b/addons/weather/functions/fnc_calculateAirDensity.sqf
@@ -0,0 +1,36 @@
+/*
+ * Author: Ruthberg
+ *
+ * Calculates the air density
+ *
+ * Arguments:
+ * 0: temperature - degrees celcius <NUMBER>
+ * 1: pressure - hPa <NUMBER>
+ * 2: relativeHumidity - value between 0.0 and 1.0 <NUMBER>
+ *
+ * Return Value:
+ * 0: density of air - kg * m^(-3) <NUMBER>
+ *
+ * Return value:
+ * None
+ */
+#include "script_component.hpp"
+
+private ["_temperature", "_pressure", "_relativeHumidity"];
+_temperature      = _this select 0; // in C
+_pressure         = _this select 1; // in hPa
+_relativeHumidity = _this select 2; // as ratio 0-1
+
+_pressure = _pressure * 100;
+
+if (_relativeHumidity > 0) then {
+    private ["_pSat", "_vaporPressure", "_partialPressure"];
+    // Saturation vapor pressure calculated according to: http://wahiduddin.net/calc/density_algorithms.htm
+    _pSat = 6.1078 * 10 ^ ((7.5 * _temperature) / (_temperature + 237.3));
+    _vaporPressure = _relativeHumidity * _pSat;
+    _partialPressure = _pressure - _vaporPressure;
+
+    (_partialPressure * DRY_AIR_MOLAR_MASS + _vaporPressure * WATER_VAPOR_MOLAR_MASS) / (UNIVERSAL_GAS_CONSTANT * KELVIN(_temperature))
+} else {
+    _pressure / (SPECIFIC_GAS_CONSTANT_DRY_AIR * KELVIN(_temperature))
+};
diff --git a/addons/weather/functions/fnc_calculateBarometricPressure.sqf b/addons/weather/functions/fnc_calculateBarometricPressure.sqf
new file mode 100644
index 0000000000..c65d343c93
--- /dev/null
+++ b/addons/weather/functions/fnc_calculateBarometricPressure.sqf
@@ -0,0 +1,20 @@
+/*
+ * Author: Ruthberg
+ *
+ * Calculates the barometric pressure based on altitude and weather
+ *
+ * Arguments:
+ * 0: altitude - meters <NUMBER>
+ *
+ * Return Value:
+ * 0: barometric pressure - hPA <NUMBER>
+ *
+ * Return value:
+ * None
+ */
+#include "script_component.hpp"
+
+private ["_altitude"];
+_altitude = _this;
+
+(1013.25 * exp(-(GVAR(Altitude) + _altitude) / 7990) - 10 * overcast)
diff --git a/addons/weather/functions/fnc_displayWindInfo.sqf b/addons/weather/functions/fnc_displayWindInfo.sqf
index d84cddd106..58d728bf67 100644
--- a/addons/weather/functions/fnc_displayWindInfo.sqf
+++ b/addons/weather/functions/fnc_displayWindInfo.sqf
@@ -1,5 +1,6 @@
 /*
  * Author: Ruthberg
+ *
  * Displays a wind info (colored arrow) in the top left corner of the screen
  *
  * Argument:
diff --git a/addons/weather/functions/fnc_getMapData.sqf b/addons/weather/functions/fnc_getMapData.sqf
index fecf9f34f7..cb0a961c21 100644
--- a/addons/weather/functions/fnc_getMapData.sqf
+++ b/addons/weather/functions/fnc_getMapData.sqf
@@ -1,5 +1,6 @@
 /*
  * Author: Ruthberg, esteldunedain
+ *
  * Get the weather data for the current map
  *
  * Argument:
@@ -109,3 +110,6 @@ if (worldName in ["Imrali"]) exitWith {
 GVAR(TempDay) = [1, 3, 9, 14, 19, 23, 25, 24, 21, 13, 7, 2];
 GVAR(TempNight) = [-4, -3, 0, 4, 9, 12, 14, 14, 10, 6, 2, -2];
 GVAR(Humidity) = [82, 80, 78, 70, 71, 72, 70, 73, 78, 80, 83, 82];
+
+GVAR(currentTemperature) = 20;
+GVAR(currentHumidity) = 0.5;
diff --git a/addons/weather/functions/fnc_getWind.sqf b/addons/weather/functions/fnc_getWind.sqf
index b0fbf5e8fa..54ec6efad3 100644
--- a/addons/weather/functions/fnc_getWind.sqf
+++ b/addons/weather/functions/fnc_getWind.sqf
@@ -1,5 +1,6 @@
 /*
  * Author: ACE2 Team
+ *
  * Calculate current wind locally from the data broadcasted by the server
  *
  * Argument:
diff --git a/addons/weather/functions/fnc_serverController.sqf b/addons/weather/functions/fnc_serverController.sqf
index e29836fc18..d7dff0eb70 100644
--- a/addons/weather/functions/fnc_serverController.sqf
+++ b/addons/weather/functions/fnc_serverController.sqf
@@ -1,5 +1,6 @@
 /*
  * Author: ACE2 Team, esteldunedain
+ *
  * Calculate the wind and rain evolution on the server. Broadcast the current and next values to the clients
  *
  * Argument:
diff --git a/addons/weather/functions/fnc_updateHumidity.sqf b/addons/weather/functions/fnc_updateHumidity.sqf
new file mode 100644
index 0000000000..e3ba7a0224
--- /dev/null
+++ b/addons/weather/functions/fnc_updateHumidity.sqf
@@ -0,0 +1,28 @@
+/*
+ * Author: ACE2 Team
+ *
+ * Updates GVAR(currentHumidity) based on
+ *
+ * Argument:
+ * Nothing
+ *
+ * Return value:
+ * Nothing
+ */
+#include "script_component.hpp"
+
+private ["_month", "_avgTemperature", "_pS1", "_pS2"];
+_month = date select 1;
+
+GVAR(currentHumidity) = (GVAR(Humidity) select _month) / 100;
+
+if (rain > 0 && overcast > 0.7) then {
+    GVAR(currentHumidity) = 1;
+} else {
+    _avgTemperature = ((GVAR(TempDay) select (_month - 1)) + (GVAR(TempNight) select (_month - 1))) / 2;
+    _pS1 = 6.112 * exp((17.62 * _avgTemperature) / (243.12 + _avgTemperature));
+    _PS2 = 6.112 * exp((17.62 * GVAR(currentTemperature)) / (243.12 + GVAR(currentTemperature)));
+    GVAR(currentHumidity) = GVAR(currentHumidity) * _PS1 / _PS2;
+};
+
+GVAR(currentHumidity) = 0 max GVAR(currentHumidity) min 1;
diff --git a/addons/weather/functions/fnc_updateRain.sqf b/addons/weather/functions/fnc_updateRain.sqf
new file mode 100644
index 0000000000..01e32e1734
--- /dev/null
+++ b/addons/weather/functions/fnc_updateRain.sqf
@@ -0,0 +1,26 @@
+/*
+ * Author: ACE2 Team
+ *
+ * Updates rain based on ACE_RAIN_PARAMS
+ *
+ * Argument:
+ * Nothing
+ *
+ * Return value:
+ * Nothing
+ */
+#include "script_component.hpp"
+
+private ["_oldStrength", "_rainStrength", "_transitionTime", "_periodPosition", "_periodPercent"];
+
+if (!GVAR(enableRain)) exitWith {};
+
+if (!isNil "ACE_RAIN_PARAMS" && {!isNil QGVAR(rain_period_start_time)}) then {
+    _oldStrength = ACE_RAIN_PARAMS select 0;
+    _rainStrength = ACE_RAIN_PARAMS select 1;
+    _transitionTime = ACE_RAIN_PARAMS select 2;
+    _periodPosition = (time - GVAR(rain_period_start_time)) min _transitionTime;
+    _periodPercent = (_periodPosition/_transitionTime) min 1;
+
+    0 setRain ((_periodPercent*(_rainStrength-_oldStrength))+_oldStrength);
+};
diff --git a/addons/weather/functions/fnc_updateTemperature.sqf b/addons/weather/functions/fnc_updateTemperature.sqf
new file mode 100644
index 0000000000..5e342ad83d
--- /dev/null
+++ b/addons/weather/functions/fnc_updateTemperature.sqf
@@ -0,0 +1,22 @@
+/*
+ * Author: ACE2 Team
+ *
+ * Updates GVAR(currentTemperature) based on the map data
+ *
+ * Argument:
+ * Nothing
+ *
+ * Return value:
+ * Nothing
+ */
+#include "script_component.hpp"
+
+private ["_time", "_month", "_hourlyCoef"];
+_time = daytime;
+_month = date select 1;
+
+_hourlyCoef = -0.5 * sin(360 * ((3 + (date select 3))/24 + (date select 4)/1440));
+
+GVAR(currentTemperature) = (GVAR(TempDay) select (_month - 1)) * (1 - _hourlyCoef) + (GVAR(TempNight) select (_month - 1)) * _hourlyCoef;
+GVAR(currentTemperature) = GVAR(currentTemperature) - 2 * humidity - 4 * overcast;
+GVAR(currentTemperature) = round(GVAR(currentTemperature) * 10) / 10;
diff --git a/addons/weather/functions/fnc_updateWind.sqf b/addons/weather/functions/fnc_updateWind.sqf
new file mode 100644
index 0000000000..e5a52348a8
--- /dev/null
+++ b/addons/weather/functions/fnc_updateWind.sqf
@@ -0,0 +1,21 @@
+/*
+ * Author: ACE2 Team
+ *
+ * Updates wind, gusts and waves based on ACE_wind
+ *
+ * Argument:
+ * Nothing
+ *
+ * Return value:
+ * Nothing
+ */
+#include "script_component.hpp"
+
+ACE_wind = [] call FUNC(getWind);
+setWind [ACE_wind select 0, ACE_wind select 1, true];
+2 setGusts 0;
+
+// Set waves: 0 when no wind, 1 when wind >= 16 m/s
+1 setWaves (((vectorMagnitude ACE_wind) / 16.0) min 1.0);
+
+//hintSilent format["Wind: %1\nACE_wind: %2\nDeviation: %3 (m/s)", wind, ACE_wind, Round((vectorMagnitude (ACE_wind vectorDiff wind)) * 1000) / 1000];
diff --git a/addons/weather/script_component.hpp b/addons/weather/script_component.hpp
index a21d8245fd..edc1ac64d0 100644
--- a/addons/weather/script_component.hpp
+++ b/addons/weather/script_component.hpp
@@ -10,3 +10,11 @@
 #endif
 
 #include "\z\ace\addons\main\script_macros.hpp"
+
+#define ABSOLUTE_ZERO_IN_CELSIUS -273.15
+#define KELVIN(t) (t - ABSOLUTE_ZERO_IN_CELSIUS)
+#define CELSIUS(t) (t + ABSOLUTE_ZERO_IN_CELSIUS)
+#define UNIVERSAL_GAS_CONSTANT 8.314
+#define WATER_VAPOR_MOLAR_MASS 0.018016
+#define DRY_AIR_MOLAR_MASS 0.028964
+#define SPECIFIC_GAS_CONSTANT_DRY_AIR 287.058

From 06a4f3d10e216924d281d7491656128f06633be8 Mon Sep 17 00:00:00 2001
From: KoffeinFlummi <koffeinflummi@gmail.com>
Date: Mon, 20 Apr 2015 15:48:50 +0200
Subject: [PATCH 229/257] Remove tabler comments.

---
 addons/attach/stringtable.xml      | 3 +--
 addons/captives/stringtable.xml    | 3 +--
 addons/dragging/stringtable.xml    | 3 +--
 addons/explosives/stringtable.xml  | 3 +--
 addons/interaction/stringtable.xml | 3 +--
 addons/microdagr/stringtable.xml   | 3 +--
 6 files changed, 6 insertions(+), 12 deletions(-)

diff --git a/addons/attach/stringtable.xml b/addons/attach/stringtable.xml
index df8fc26c3c..70ed9666b4 100644
--- a/addons/attach/stringtable.xml
+++ b/addons/attach/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Attach">
         <Key ID="STR_ACE_Attach_AttachDetach">
@@ -205,4 +204,4 @@
             <Russian>%1&lt;br/&gt;отсоединен(-а)</Russian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 6e02114351..55a9f6211a 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Captives">
         <Key ID="STR_ACE_Captives_SetCaptive">
@@ -189,4 +188,4 @@
             <Italian>Niente selezionato</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/dragging/stringtable.xml b/addons/dragging/stringtable.xml
index 378ce353bd..521ab87006 100644
--- a/addons/dragging/stringtable.xml
+++ b/addons/dragging/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Dragging">
         <Key ID="STR_ACE_Dragging_Drag">
@@ -51,4 +50,4 @@
             <Russian>Нести</Russian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index 3299cb980c..8e941b1f2a 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Explosives">
         <Key ID="STR_ACE_Explosives_Menu">
@@ -503,4 +502,4 @@
             <Italian>Raccogli</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index 41068c9e2d..38902f80cf 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="Interaction">
         <Key ID="STR_ACE_Interaction_MainAction">
@@ -735,4 +734,4 @@
             <Italian>Passeggeri</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml
index 017ac9f0d5..91d83646b4 100644
--- a/addons/microdagr/stringtable.xml
+++ b/addons/microdagr/stringtable.xml
@@ -1,5 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Edited with tabler. -->
 <Project name="ACE">
     <Package name="microdagr">
         <Key ID="STR_ACE_microdagr_itemName">
@@ -280,4 +279,4 @@
             <Italian>Chiudi MicroDAGR</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 6c00aef6e89972c4d89954aa0f067f6b315f58d9 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Mon, 20 Apr 2015 16:02:36 +0200
Subject: [PATCH 230/257] coeficients for recoil configs

---
 addons/recoil/CfgRecoils.hpp | 255 ++++++++++++++++++-----------------
 1 file changed, 135 insertions(+), 120 deletions(-)

diff --git a/addons/recoil/CfgRecoils.hpp b/addons/recoil/CfgRecoils.hpp
index 27283e71f1..eac31babe8 100644
--- a/addons/recoil/CfgRecoils.hpp
+++ b/addons/recoil/CfgRecoils.hpp
@@ -1,240 +1,255 @@
 
+#define KICKBACK 1
+
+#define MUZZLETEMP 1
+#define MUZZLEPERM 1
+
+#define MUZZLECLIMB_POS 1
+#define MUZZLERIGHT_POS 1
+
+#define MUZZLECLIMB_MAG 1
+#define MUZZLERIGHT_MAG 1
+
 class CfgRecoils {
     class Default {
-        muzzleOuter[] = {0,"0.4f","0.5f","0.6f"};
-        muzzleInner[] = {0,"0.05f","0.2f","0.2f"};
-        kickBack[] = {"0.05f",0.1};
-        permanent = 0.1;
-        temporary = 0.01;
+        // doc: http://forums.bistudio.com/showthread.php?188999-Recoil-Overhaul-Feedback&s=dba8590ec07adb5ffa87f72d38dde6fc&p=2886744&viewfull=1#post2886744
+        // {horizontal axis position, vertical axis position, horizontal magnitude, vertical magnitude}
+        muzzleOuter[] = {0*MUZZLERIGHT_POS,0.4*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.6*MUZZLECLIMB_MAG};
+        // restricted area inside the outer ellipse where the recoil cannot end
+        muzzleInner[] = {0,0.05,0.2,0.2};
+        // minimum and maximum interval for backward force
+        kickBack[] = {0.05*KICKBACK,0.1*KICKBACK};
+        permanent = 0.1*MUZZLEPERM;
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_default: Default {
-        muzzleOuter[] = {0.3,1,0.3,0.2};
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
         muzzleInner[] = {0,0,0.1,0.1};
-        kickBack[] = {0.03,0.06};
-        permanent = 0.1;
-        temporary = 0.01;
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        permanent = 0.1*MUZZLEPERM;
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_mk20: recoil_default {
-        muzzleOuter[] = {0.2,0.6,0.2,0.2};
-        kickBack[] = {0.01,0.03};
-        temporary = 0.01;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,0.6*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.01*KICKBACK,0.03*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_mk20c: recoil_default {
-        muzzleOuter[] = {0.2,0.8,0.3,0.2};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.015;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,0.8*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_trg20: recoil_default {
-        muzzleOuter[] = {0.2,1,0.3,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.015;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_trg21: recoil_default {
-        muzzleOuter[] = {0.2,0.8,0.3,0.2};
-        kickBack[] = {0.01,0.03};
-        temporary = 0.01;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,0.8*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.01*KICKBACK,0.03*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_mx: recoil_default {
-        muzzleOuter[] = {0.3,1,0.4,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.01;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.4*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_mxc: recoil_default {
-        muzzleOuter[] = {0.3,1.2,0.4,0.3};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.015;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1.2*MUZZLECLIMB_POS,0.4*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_sw: recoil_default {
-        muzzleOuter[] = {0.3,0.8,0.5,0.2};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.005;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,0.8*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 
     class recoil_mxm: recoil_default {
-        muzzleOuter[] = {0.3,0.8,0.4,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.01;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,0.8*MUZZLECLIMB_POS,0.4*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_ktb: recoil_default {
-        muzzleOuter[] = {0.3,1,0.3,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.01;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_ktbc: recoil_default {
-        muzzleOuter[] = {0.3,1.2,0.3,0.3};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.015;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1.2*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_smg_01: recoil_default {
-        muzzleOuter[] = {0.1,0.8,0.3,0.2};
-        kickBack[] = {0.01,0.03};
-        temporary = 0.015;
+        muzzleOuter[] = {0.1*MUZZLERIGHT_POS,0.8*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.01*KICKBACK,0.03*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_smg_02: recoil_default {
-        muzzleOuter[] = {0.1,0.6,0.2,0.2};
-        kickBack[] = {0.01,0.02};
-        temporary = 0.01;
+        muzzleOuter[] = {0.1*MUZZLERIGHT_POS,0.6*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.01*KICKBACK,0.02*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_pdw: recoil_default {
-        muzzleOuter[] = {0.2,1,0.3,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.02;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.02*MUZZLETEMP;
     };
 
     class recoil_sdar: recoil_default {
-        muzzleOuter[] = {0.2,1,0.3,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.01;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.3*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_pistol_p07: recoil_default {
-        muzzleOuter[] = {0.2,1,0.2,0.3};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.03;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.03*MUZZLETEMP;
     };
 
     class recoil_pistol_rook40: recoil_default {
-        muzzleOuter[] = {0.2,1,0.2,0.3};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.02;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.02*MUZZLETEMP;
     };
 
     class recoil_pistol_acpc2: recoil_default {
-        muzzleOuter[] = {0.2,1.5,0.2,0.3};
-        kickBack[] = {0.04,0.08};
-        temporary = 0.04;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.04*KICKBACK,0.08*KICKBACK};
+        temporary = 0.04*MUZZLETEMP;
     };
 
     class recoil_pistol_4five: recoil_default {
-        muzzleOuter[] = {0.2,1.5,0.2,0.3};
-        kickBack[] = {0.04,0.08};
-        temporary = 0.06;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.04*KICKBACK,0.08*KICKBACK};
+        temporary = 0.06*MUZZLETEMP;
     };
 
     class recoil_pistol_zubr: recoil_default {
-        muzzleOuter[] = {0.2,1.5,0.2,0.3};
-        kickBack[] = {0.04,0.08};
-        temporary = 0.08;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.04*KICKBACK,0.08*KICKBACK};
+        temporary = 0.08*MUZZLETEMP;
     };
 
     class recoil_pistol_signal: recoil_default {
-        muzzleOuter[] = {0.2,1.5,0.2,0.3};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.02;
+        muzzleOuter[] = {0.2*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.2*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.02*MUZZLETEMP;
     };
 
     class recoil_rpg: recoil_default {
-        muzzleOuter[] = {2,3,1,0.5};
-        kickBack[] = {0.08,0.1};
-        temporary = 0.1;
+        muzzleOuter[] = {2*MUZZLERIGHT_POS,3*MUZZLECLIMB_POS,1*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.08*KICKBACK,0.1*KICKBACK};
+        temporary = 0.1*MUZZLETEMP;
     };
 
     class recoil_nlaw: recoil_default {
-        muzzleOuter[] = {2,3,1,0.5};
-        kickBack[] = {0.06,0.08};
-        temporary = 0.08;
+        muzzleOuter[] = {2*MUZZLERIGHT_POS,3*MUZZLECLIMB_POS,1*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.06*KICKBACK,0.08*KICKBACK};
+        temporary = 0.08*MUZZLETEMP;
     };
 
     class recoil_titan_long: recoil_default {
-        muzzleOuter[] = {2,3,1,0.5};
-        kickBack[] = {0.1,0.12};
-        temporary = 0.15;
+        muzzleOuter[] = {2*MUZZLERIGHT_POS,3*MUZZLECLIMB_POS,1*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.1*KICKBACK,0.12*KICKBACK};
+        temporary = 0.15*MUZZLETEMP;
     };
 
     class recoil_titan_short: recoil_default {
-        muzzleOuter[] = {2,3,1,0.5};
-        kickBack[] = {0.1,0.12};
-        temporary = 0.12;
+        muzzleOuter[] = {2*MUZZLERIGHT_POS,3*MUZZLECLIMB_POS,1*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.1*KICKBACK,0.12*KICKBACK};
+        temporary = 0.12*MUZZLETEMP;
     };
 
     class recoil_mk200: recoil_default {
-        muzzleOuter[] = {0.4,0.6,0.6,0.2};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.005;
+        muzzleOuter[] = {0.4*MUZZLERIGHT_POS,0.6*MUZZLECLIMB_POS,0.6*MUZZLERIGHT_MAG,0.2*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 
     class recoil_zafir: recoil_default {
-        muzzleOuter[] = {0.5,1,0.7,0.3};
-        kickBack[] = {0.02,0.08};
-        temporary = 0.005;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,1*MUZZLECLIMB_POS,0.7*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.08*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 
     class recoil_m320: recoil_default {
-        muzzleOuter[] = {1,3,0.5,0.6};
-        kickBack[] = {0.08,0.1};
-        temporary = 0.02;
+        muzzleOuter[] = {1*MUZZLERIGHT_POS,3*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.6*MUZZLECLIMB_MAG};
+        kickBack[] = {0.08*KICKBACK,0.1*KICKBACK};
+        temporary = 0.02*MUZZLETEMP;
     };
 
     class recoil_gm6: recoil_default {
-        muzzleOuter[] = {1.4,3.5,0.7,0.8};
-        kickBack[] = {0.1,0.12};
-        temporary = 0.025;
+        muzzleOuter[] = {1.4*MUZZLERIGHT_POS,3.5*MUZZLECLIMB_POS,0.7*MUZZLERIGHT_MAG,0.8*MUZZLECLIMB_MAG};
+        kickBack[] = {0.1*KICKBACK,0.12*KICKBACK};
+        temporary = 0.025*MUZZLETEMP;
     };
 
     class recoil_ebr: recoil_default {
-        muzzleOuter[] = {0.4,1.5,0.6,0.4};
-        kickBack[] = {0.04,0.07};
-        temporary = 0.01;
+        muzzleOuter[] = {0.4*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.6*MUZZLERIGHT_MAG,0.4*MUZZLECLIMB_MAG};
+        kickBack[] = {0.04*KICKBACK,0.07*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_dmr_01: recoil_default {
-        muzzleOuter[] = {0.5,2,0.5,0.5};
-        kickBack[] = {0.03,0.08};
-        temporary = 0.015;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,2*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.08*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_dmr_02: recoil_default {
-        muzzleOuter[] = {0.5,2.5,0.6,0.5};
-        kickBack[] = {0.06,0.08};
-        temporary = 0.01;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,2.5*MUZZLECLIMB_POS,0.6*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.06*KICKBACK,0.08*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_dmr_03: recoil_default {
-        muzzleOuter[] = {0.3,1.5,0.5,0.4};
-        kickBack[] = {0.03,0.06};
-        temporary = 0.005;
+        muzzleOuter[] = {0.3*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.4*MUZZLECLIMB_MAG};
+        kickBack[] = {0.03*KICKBACK,0.06*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 
     class recoil_dmr_04: recoil_default {
-        muzzleOuter[] = {0.4,1.5,0.5,0.4};
-        kickBack[] = {0.02,0.04};
-        temporary = 0.015;
+        muzzleOuter[] = {0.4*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.5*MUZZLERIGHT_MAG,0.4*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.04*KICKBACK};
+        temporary = 0.015*MUZZLETEMP;
     };
 
     class recoil_dmr_05: recoil_default {
-        muzzleOuter[] = {0.5,2.5,0.8,0.6};
-        kickBack[] = {0.08,0.1};
-        temporary = 0.01;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,2.5*MUZZLECLIMB_POS,0.8*MUZZLERIGHT_MAG,0.6*MUZZLECLIMB_MAG};
+        kickBack[] = {0.08*KICKBACK,0.1*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_dmr_06: recoil_default {
-        muzzleOuter[] = {0.5,2,0.7,0.5};
-        kickBack[] = {0.05,0.1};
-        temporary = 0.01;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,2*MUZZLECLIMB_POS,0.7*MUZZLERIGHT_MAG,0.5*MUZZLECLIMB_MAG};
+        kickBack[] = {0.05*KICKBACK,0.1*KICKBACK};
+        temporary = 0.01*MUZZLETEMP;
     };
 
     class recoil_mmg_01: recoil_default {
-        muzzleOuter[] = {0.6,1.5,0.8,0.3};
-        kickBack[] = {0.02,0.08};
-        temporary = 0.005;
+        muzzleOuter[] = {0.6*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.8*MUZZLERIGHT_MAG,0.3*MUZZLECLIMB_MAG};
+        kickBack[] = {0.02*KICKBACK,0.08*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 
     class recoil_mmg_02: recoil_default {
-        muzzleOuter[] = {0.5,1.5,0.6,0.4};
-        kickBack[] = {0.04,0.08};
-        temporary = 0.005;
+        muzzleOuter[] = {0.5*MUZZLERIGHT_POS,1.5*MUZZLECLIMB_POS,0.6*MUZZLERIGHT_MAG,0.4*MUZZLECLIMB_MAG};
+        kickBack[] = {0.04*KICKBACK,0.08*KICKBACK};
+        temporary = 0.005*MUZZLETEMP;
     };
 };

From 16c6a3ee78670aff369eed85ab769c93bba3966a Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Mon, 20 Apr 2015 17:38:45 +0200
Subject: [PATCH 231/257] tweaking recoil

---
 addons/recoil/CfgRecoils.hpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/addons/recoil/CfgRecoils.hpp b/addons/recoil/CfgRecoils.hpp
index eac31babe8..56a28f1dc1 100644
--- a/addons/recoil/CfgRecoils.hpp
+++ b/addons/recoil/CfgRecoils.hpp
@@ -1,11 +1,11 @@
 
-#define KICKBACK 1
+#define KICKBACK 1.6
 
 #define MUZZLETEMP 1
-#define MUZZLEPERM 1
+#define MUZZLEPERM 0.1
 
 #define MUZZLECLIMB_POS 1
-#define MUZZLERIGHT_POS 1
+#define MUZZLERIGHT_POS 0.4
 
 #define MUZZLECLIMB_MAG 1
 #define MUZZLERIGHT_MAG 1

From ea368511b7ed013dcd72dbefa8791c404de4f341 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Mon, 20 Apr 2015 18:48:58 +0200
Subject: [PATCH 232/257] ace extensions class for modularity

---
 addons/advanced_ballistics/config.cpp | 6 +++++-
 addons/common/XEH_postInit.sqf        | 2 +-
 addons/common/config.cpp              | 4 ++++
 addons/common/script_component.hpp    | 4 +---
 addons/fcs/config.cpp                 | 4 ++++
 addons/interact_menu/config.cpp       | 4 ++++
 6 files changed, 19 insertions(+), 5 deletions(-)

diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp
index 32f1406a07..1a2187783b 100644
--- a/addons/advanced_ballistics/config.cpp
+++ b/addons/advanced_ballistics/config.cpp
@@ -15,4 +15,8 @@ class CfgPatches {
 #include "CfgEventHandlers.hpp"
 #include "CfgVehicles.hpp"
 #include "RscTitles.hpp"
-#include "ACE_Settings.hpp"
\ No newline at end of file
+#include "ACE_Settings.hpp"
+
+class ACE_Extensions {
+    extensions[] += {"ace_advanced_ballistics"};
+};
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index 55a7cfde40..3a16ac9d43 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -257,4 +257,4 @@ if(isMultiplayer && { time > 0 || isNull player } ) then {
         diag_log text format ["[ACE] ERROR: %1", _errorMsg];
         ["[ACE] ERROR", _errorMsg, {findDisplay 46 closeDisplay 0}] call FUNC(errorMessage);
     };
-} forEach ACE_DLLS;
+} forEach getArray (configFile >> "ACE_Extensions" >> "extensions");
diff --git a/addons/common/config.cpp b/addons/common/config.cpp
index 21d6a6facb..16bd13fc0c 100644
--- a/addons/common/config.cpp
+++ b/addons/common/config.cpp
@@ -160,3 +160,7 @@ class RscDisplayMain: RscStandardDisplay {
     onLoad = QUOTE([ARR_4(""onLoad"",_this,""RscDisplayMain"",'GUI')] call  (uinamespace getvariable 'BIS_fnc_initDisplay'); [ARR_5('header','tail',{0},{},_this select 0)] call COMPILE_FILE(functions\fnc_errorMessage));
 };
 */
+
+class ACE_Extensions {
+    extensions[] = {};
+};
diff --git a/addons/common/script_component.hpp b/addons/common/script_component.hpp
index 398080f7ec..7c266c169d 100644
--- a/addons/common/script_component.hpp
+++ b/addons/common/script_component.hpp
@@ -11,6 +11,4 @@
     #define DEBUG_SETTINGS DEBUG_SETTINGS_COMMON
 #endif
 
-#include "\z\ace\addons\main\script_macros.hpp"
-
-#define ACE_DLLS ["ace_breakLine","ace_advanced_ballistics","ace_fcs"]
+#include "\z\ace\addons\main\script_macros.hpp"
\ No newline at end of file
diff --git a/addons/fcs/config.cpp b/addons/fcs/config.cpp
index 711cbbbd25..12edf02ba3 100644
--- a/addons/fcs/config.cpp
+++ b/addons/fcs/config.cpp
@@ -20,3 +20,7 @@ class CfgPatches {
 #include "CfgWeapons.hpp"
 
 #include "CfgOptics.hpp"
+
+class ACE_Extensions {
+    extensions[] += {"ace_fcs"};
+};
diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp
index f87062bf6f..26579ba05b 100644
--- a/addons/interact_menu/config.cpp
+++ b/addons/interact_menu/config.cpp
@@ -30,3 +30,7 @@ class ACE_Settings {
         displayName = "$STR_ACE_Interact_Menu_UseListMenu";
     };
 };
+
+class ACE_Extensions {
+    extensions[] += {"ace_breakLine"};
+};

From 9295393dd6d5c443b7ac4c3edf9f2756f86dc521 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Mon, 20 Apr 2015 13:54:20 -0300
Subject: [PATCH 233/257] Allow cursor for interactions

---
 addons/interact_menu/config.cpp                | 6 ++++++
 addons/interact_menu/functions/fnc_keyDown.sqf | 4 +++-
 addons/interact_menu/stringtable.xml           | 6 ++++++
 3 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp
index f87062bf6f..139ff2db97 100644
--- a/addons/interact_menu/config.cpp
+++ b/addons/interact_menu/config.cpp
@@ -23,6 +23,12 @@ class ACE_Settings {
         isClientSettable = 1;
         displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorSelfInteraction";
     };
+    class GVAR(AlwaysUseCursorInteraction) {
+        value = 0;
+        typeName = "BOOL";
+        isClientSettable = 1;
+        displayName = "$STR_ACE_Interact_Menu_AlwaysUseCursorInteraction";
+    };
     class GVAR(UseListMenu) {
         value = 0;
         typeName = "BOOL";
diff --git a/addons/interact_menu/functions/fnc_keyDown.sqf b/addons/interact_menu/functions/fnc_keyDown.sqf
index 123c1d45e2..1bd4d04474 100644
--- a/addons/interact_menu/functions/fnc_keyDown.sqf
+++ b/addons/interact_menu/functions/fnc_keyDown.sqf
@@ -33,7 +33,9 @@ GVAR(lastTimeSearchedActions) = -1000;
 
 GVAR(useCursorMenu) = (vehicle ACE_player != ACE_player) ||
                       visibleMap ||
-                      {(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}};
+                      {(_menuType == 1) && {(isWeaponDeployed ACE_player) || GVAR(AlwaysUseCursorSelfInteraction) || {cameraView == "GUNNER"}}} ||
+                      {(_menuType == 0) && GVAR(AlwaysUseCursorInteraction)};
+
 if (GVAR(useCursorMenu)) then {
     createDialog QGVAR(cursorMenu);
     // The dialog sets:
diff --git a/addons/interact_menu/stringtable.xml b/addons/interact_menu/stringtable.xml
index 083a02d0f6..0b37f40f5e 100644
--- a/addons/interact_menu/stringtable.xml
+++ b/addons/interact_menu/stringtable.xml
@@ -12,6 +12,12 @@
             <Hungarian>Mindig legyen a saját cselekvés kurzorja látható</Hungarian>
             <Italian>Mostra sempre il cursore per le auto interazioni</Italian>
         </Key>
+        <Key ID="STR_ACE_Interact_Menu_AlwaysUseCursorInteraction">
+            <English>Always display cursor for interaction</English>
+            <Spanish>Mostrar siempre el cursor para la interacción</Spanish>
+            <French>Toujours afficher le curseur pour les interactions</French>
+            <Italian>Mostra sempre il cursore per le interazioni</Italian>
+        </Key>
         <Key ID="STR_ACE_Interact_Menu_UseListMenu">
             <English>Display interaction menus as lists</English>
             <Spanish>Mostrar los menus de interacción como listas</Spanish>

From a1afd873427bc924966e640bf6f2f3e4ab02f598 Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Mon, 20 Apr 2015 19:56:10 +0200
Subject: [PATCH 234/257] Update config.cpp

---
 optionals/asdg_comp/config.cpp | 54 +++++++++++++++-------------------
 1 file changed, 24 insertions(+), 30 deletions(-)

diff --git a/optionals/asdg_comp/config.cpp b/optionals/asdg_comp/config.cpp
index 18ef70cb1c..b485685c55 100644
--- a/optionals/asdg_comp/config.cpp
+++ b/optionals/asdg_comp/config.cpp
@@ -1,42 +1,36 @@
 #include "script_component.hpp"
 
-class CfgPatches
-{
-    class ADDON
-    {
-    	units[] = {};
-	weapons[] = {};
-	requiredVersion = REQUIRED_VERSION;
-	requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};
-	author[]={"OnkelDisMaster"};
-	authorUrl = "http://2.xn--gebirgsjgerkompanie-nwb.de/";
-	VERSION_CONFIG;
+class CfgPatches {
+    class ADDON {
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
+        requiredAddons[] = {"asdg_jointrails","ace_laserpointer","ace_optics"};
+        author[]={"OnkelDisMaster"};
+        authorUrl = "http://2.xn--gebirgsjgerkompanie-nwb.de/";
+        VERSION_CONFIG;
     };
 };
 
 class asdg_SlotInfo;
-class asdg_FrontSideRail: asdg_SlotInfo
-{
-    class compatibleItems 
-    {
-    	ACE_acc_pointer_red = 1;
-    	ACE_acc_pointer_green = 1;
+class asdg_FrontSideRail: asdg_SlotInfo {
+    class compatibleItems {
+        ACE_acc_pointer_red = 1;
+        ACE_acc_pointer_green = 1;
     };
 };
 
 class asdg_OpticRail;
-class asdg_OpticRail1913: asdg_OpticRail
-{
-    class compatibleItems
-    {
-	ACE_optic_Hamr_2D = 1;
-	ACE_optic_Hamr_PIP = 1;
-	ACE_optic_Arco_2D = 1;
-	ACE_optic_Arco_PIP = 1;
-	ACE_optic_MRCO_2D = 1;
-	ACE_optic_SOS_2D = 1;
-	ACE_optic_SOS_PIP = 1;
-	ACE_optic_LRPS_2D = 1;
-	ACE_optic_LRPS_PIP = 1;
+class asdg_OpticRail1913: asdg_OpticRail {
+    class compatibleItems {
+        ACE_optic_Hamr_2D = 1;
+        ACE_optic_Hamr_PIP = 1;
+        ACE_optic_Arco_2D = 1;
+        ACE_optic_Arco_PIP = 1;
+        ACE_optic_MRCO_2D = 1;
+        ACE_optic_SOS_2D = 1;
+        ACE_optic_SOS_PIP = 1;
+        ACE_optic_LRPS_2D = 1;
+        ACE_optic_LRPS_PIP = 1;
     };
 };

From 51abafd09938ef6bc99bbe9235b021f335e9ad7d Mon Sep 17 00:00:00 2001
From: OnkelDisMaster <arrows96@gmx.de>
Date: Mon, 20 Apr 2015 20:28:34 +0200
Subject: [PATCH 235/257] Added my name to AUTHORS.txt

Added myself to the contirbutors, after #485
---
 AUTHORS.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/AUTHORS.txt b/AUTHORS.txt
index 2f16aea49c..05049978e6 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -82,3 +82,4 @@ BlackPixxel
 Asgar Serran <piechottaf@web.de>
 Kavinsky <nmunozfernandez@gmail.com>
 Coren <coren4@gmail.com>
+OnkelDisMaster <onkeldismaster@gmail.com>

From ae3c8e3d88e073cdb02bf1db771a7703d57844e1 Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Mon, 20 Apr 2015 21:10:56 +0200
Subject: [PATCH 236/257] weapon select keys are optional

---
 addons/weaponselect/XEH_postInit.sqf | 48 ++++++++++++++--------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/addons/weaponselect/XEH_postInit.sqf b/addons/weaponselect/XEH_postInit.sqf
index ae6cfafb9d..93813b4ed0 100644
--- a/addons/weaponselect/XEH_postInit.sqf
+++ b/addons/weaponselect/XEH_postInit.sqf
@@ -4,7 +4,7 @@
 if !(hasInterface) exitWith {};
 
 // Add keybinds
-/*["ACE3", QGVAR(SelectPistol), localize "STR_ACE_WeaponSelect_SelectPistol",
+["ACE3", QGVAR(SelectPistolNew), localize "STR_ACE_WeaponSelect_SelectPistol",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -13,12 +13,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, handgunWeapon ACE_player] call FUNC(selectWeaponMode);
-    true
+    false
 },
 {false},
-[2, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key
 
-["ACE3", QGVAR(SelectRifle), localize "STR_ACE_WeaponSelect_SelectRifle",
+["ACE3", QGVAR(SelectRifleNew), localize "STR_ACE_WeaponSelect_SelectRifle",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -27,12 +27,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, primaryWeapon ACE_player] call FUNC(selectWeaponMode);
-    true
+    false
 },
 {false},
-[3, [false, false, false]], false] call cba_fnc_addKeybind; //2 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //2 Key
 
-["ACE3", QGVAR(SelectRifleMuzzle), localize "STR_ACE_WeaponSelect_SelectRifleMuzzle",
+["ACE3", QGVAR(SelectRifleMuzzleNew), localize "STR_ACE_WeaponSelect_SelectRifleMuzzle",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -41,12 +41,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, primaryWeapon ACE_player] call FUNC(selectWeaponMuzzle);
-    true
+    false
 },
 {false},
-[4, [false, false, false]], false] call cba_fnc_addKeybind; //3 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //3 Key
 
-["ACE3", QGVAR(SelectLauncher), localize "STR_ACE_WeaponSelect_SelectLauncher",
+["ACE3", QGVAR(SelectLauncherNew), localize "STR_ACE_WeaponSelect_SelectLauncher",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -55,12 +55,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, secondaryWeapon ACE_player] call FUNC(selectWeaponMode);
-    true
+    false
 },
 {false},
-[5, [false, false, false]], false] call cba_fnc_addKeybind; //4 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //4 Key
 
-["ACE3", QGVAR(SelectBinocular), localize "STR_ACE_WeaponSelect_SelectBinocular",
+["ACE3", QGVAR(SelectBinocularNew), localize "STR_ACE_WeaponSelect_SelectBinocular",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, ["isNotEscorting"]] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -69,10 +69,10 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, binocular ACE_player] call FUNC(selectWeaponMode);
-    true
+    false
 },
 {false},
-[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key*/
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key
 
 ["ACE3", QGVAR(SelectGrenadeFrag), localize "STR_ACE_WeaponSelect_SelectGrenadeFrag",
 {
@@ -144,7 +144,7 @@ if !(hasInterface) exitWith {};
 {false},
 [2, [false, false, false]], false] call cba_fnc_addKeybind; //1 Key
 
-/*["ACE3", QGVAR(SelectMainGun), localize "STR_ACE_WeaponSelect_SelectMainGun",
+["ACE3", QGVAR(SelectMainGunNew), localize "STR_ACE_WeaponSelect_SelectMainGun",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -153,12 +153,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, vehicle ACE_player, 0] call FUNC(selectWeaponVehicle);
-    true
+    false
 },
 {false},
-[4, [false, false, false]], false] call cba_fnc_addKeybind; //3 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //3 Key
 
-["ACE3", QGVAR(SelectMachineGun), localize "STR_ACE_WeaponSelect_SelectMachineGun",
+["ACE3", QGVAR(SelectMachineGunNew), localize "STR_ACE_WeaponSelect_SelectMachineGun",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -167,12 +167,12 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, vehicle ACE_player, 1] call FUNC(selectWeaponVehicle);
-    true
+    false
 },
 {false},
-[5, [false, false, false]], false] call cba_fnc_addKeybind; //4 Key
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //4 Key
 
-["ACE3", QGVAR(SelectMissiles), localize "STR_ACE_WeaponSelect_SelectMissiles",
+["ACE3", QGVAR(SelectMissilesNew), localize "STR_ACE_WeaponSelect_SelectMissiles",
 {
     // Conditions: canInteract
     if !([ACE_player, ACE_player, []] call EFUNC(common,canInteractWith)) exitWith {false};
@@ -181,10 +181,10 @@ if !(hasInterface) exitWith {};
 
     // Statement
     [ACE_player, vehicle ACE_player, 2] call FUNC(selectWeaponVehicle);
-    true
+    false
 },
 {false},
-[6, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key*/
+[0, [false, false, false]], false] call cba_fnc_addKeybind; //5 Key
 
 ["ACE3", QGVAR(FireSmokeLauncher), localize "STR_ACE_WeaponSelect_FireSmokeLauncher",
 {

From 8be7ccaab7989b717b6559f87816d59c71428a0e Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Mon, 20 Apr 2015 21:37:30 +0200
Subject: [PATCH 237/257] setting for moving unit from group on unconscious

---
 addons/medical/ACE_Settings.hpp                 | 10 +++++++---
 addons/medical/functions/fnc_setUnconscious.sqf |  4 +++-
 addons/medical/functions/fnc_unconsciousPFH.sqf |  8 ++++++--
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/addons/medical/ACE_Settings.hpp b/addons/medical/ACE_Settings.hpp
index 0270bee89b..e7f60a14e8 100644
--- a/addons/medical/ACE_Settings.hpp
+++ b/addons/medical/ACE_Settings.hpp
@@ -79,16 +79,16 @@ class ACE_Settings {
         displayName = "$STR_ACE_Medical_litterSimulationDetail";
         description = "$STR_ACE_Medical_litterSimulationDetail_Desc";
         typeName = "SCALAR";
-      
+
         value = 3;
         values[] = {"Off", "Low", "Medium", "High", "Ultra"};
         _values[] = { 0, 50, 100, 1000, 5000 };
-        
+
         isClientSettable = 1;
     };
     class GVAR(litterCleanUpDelay) {
         typeName = "SCALAR";
-        value = 0;  
+        value = 0;
     };
     class GVAR(medicSetting_PAK) {
         typeName = "SCALAR";
@@ -139,4 +139,8 @@ class ACE_Settings {
         typeName = "BOOL";
         value = 0;
     };
+    class GVAR(moveUnitsFromGroupOnUnconscious) {
+        typeName = "BOOL";
+        value = 0;
+    };
 };
diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index ef9ccb246d..e527215c51 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -73,7 +73,9 @@ _unit setUnitPos "DOWN";
 
 // So the AI does not get stuck, we are moving the unit to a temp group on its own.
 //Unconscious units shouldn't be put in another group #527:
-// [_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
+if (GVAR(moveUnitsFromGroupOnUnconscious)) then {
+    [_unit, true, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
+};
 
 [_unit, QGVAR(unconscious), true] call EFUNC(common,setCaptivityStatus);
 [_unit, [_unit] call EFUNC(common,getDeathAnim), 1, true] call EFUNC(common,doAnimation);
diff --git a/addons/medical/functions/fnc_unconsciousPFH.sqf b/addons/medical/functions/fnc_unconsciousPFH.sqf
index 406d0278c1..1d7558e5fc 100644
--- a/addons/medical/functions/fnc_unconsciousPFH.sqf
+++ b/addons/medical/functions/fnc_unconsciousPFH.sqf
@@ -24,6 +24,9 @@ _hasMovedOut = _args select 5;
 _parachuteCheck = _args select 6;
 
 if (!alive _unit) exitwith {
+    if (GVAR(moveUnitsFromGroupOnUnconscious)) then {
+        [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
+    };
     [_unit, QGVAR(unconscious), false] call EFUNC(common,setCaptivityStatus);
     [_unit, false] call EFUNC(common,disableAI);
     //_unit setUnitPos _originalPos;
@@ -60,8 +63,9 @@ if !(_unit getvariable ["ACE_isUnconscious",false]) exitwith {
 
         // Swhich the unit back to its original group
         //Unconscious units shouldn't be put in another group #527:
-        // [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
-
+        if (GVAR(moveUnitsFromGroupOnUnconscious)) then {
+            [_unit, false, "ACE_isUnconscious", side group _unit] call EFUNC(common,switchToGroupSide);
+        };
         [_unit, false] call EFUNC(common,disableAI);
         _unit setUnitPos _originalPos; // This is not position but stance (DOWN, MIDDLE, UP)
 

From 90cf882e026fd310000b9598963c15dcf23ab8d1 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Mon, 20 Apr 2015 21:58:27 +0200
Subject: [PATCH 238/257] Using setvar instead of event sync again

---
 addons/medical/script_component.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/medical/script_component.hpp b/addons/medical/script_component.hpp
index bac6744bc1..939a811a41 100644
--- a/addons/medical/script_component.hpp
+++ b/addons/medical/script_component.hpp
@@ -11,4 +11,4 @@
 
 #include "\z\ace\addons\main\script_macros.hpp"
 
-#define USE_WOUND_EVENT_SYNC true
+#define USE_WOUND_EVENT_SYNC false

From 842bfe0b98360874e1c78354f469045549b19789 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Mon, 20 Apr 2015 22:00:11 +0200
Subject: [PATCH 239/257] enabled advanced wounds setting

---
 .../medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf   | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
index 29bc6dc4d3..2884503599 100644
--- a/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
+++ b/addons/medical/functions/fnc_treatmentAdvanced_bandageLocal.sqf
@@ -92,8 +92,7 @@ if (USE_WOUND_EVENT_SYNC) then {
 };
 // Handle the reopening of bandaged wounds
 if (_impact > 0 && {GVAR(enableAdvancedWounds)}) then {
-// TODO temp disabled until bandaged wounds are supported by event sync.
-//    [_target, _impact, _part, _mostEffectiveSpot, _mostEffectiveInjury, _bandage] call FUNC(handleBandageOpening);
+    [_target, _impact, _part, _mostEffectiveSpot, _mostEffectiveInjury, _bandage] call FUNC(handleBandageOpening);
 };
 
 // If all wounds have been bandaged, we will reset all damage to 0, so the unit is not showing any blood on the model anymore.

From afc8abce851bc66e3bce6b5fb911e08d386964dc Mon Sep 17 00:00:00 2001
From: commy2 <commy-2@gmx.de>
Date: Mon, 20 Apr 2015 22:00:13 +0200
Subject: [PATCH 240/257] hide open bag option when it's not selected via
 scroll wheel

---
 addons/interact_menu/CfgActions.hpp | 7 +++++++
 addons/interact_menu/config.cpp     | 2 ++
 2 files changed, 9 insertions(+)
 create mode 100644 addons/interact_menu/CfgActions.hpp

diff --git a/addons/interact_menu/CfgActions.hpp b/addons/interact_menu/CfgActions.hpp
new file mode 100644
index 0000000000..79af4f09b2
--- /dev/null
+++ b/addons/interact_menu/CfgActions.hpp
@@ -0,0 +1,7 @@
+
+class CfgActions {
+    class None;
+    class OpenBag: None {
+        showWindow = 0;
+    };
+};
diff --git a/addons/interact_menu/config.cpp b/addons/interact_menu/config.cpp
index 81d2dc3f75..eeff688a1a 100644
--- a/addons/interact_menu/config.cpp
+++ b/addons/interact_menu/config.cpp
@@ -14,6 +14,8 @@ class CfgPatches {
 
 #include "CfgEventHandlers.hpp"
 
+#include "CfgActions.hpp"
+
 #include "CursorMenus.hpp"
 
 class ACE_Settings {

From f7719f0e0ae7a8564881dba89ae7022a5cc4520c Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Mon, 20 Apr 2015 22:08:31 +0200
Subject: [PATCH 241/257] tab

---
 addons/medical/functions/fnc_actionLoadUnit.sqf    |  4 ++--
 addons/medical/functions/fnc_handleLocal.sqf       | 10 +++++-----
 addons/medical/functions/fnc_treatment_failure.sqf |  4 ++--
 addons/medical/functions/fnc_treatment_success.sqf |  4 ++--
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/addons/medical/functions/fnc_actionLoadUnit.sqf b/addons/medical/functions/fnc_actionLoadUnit.sqf
index 5606f15d19..990467521a 100644
--- a/addons/medical/functions/fnc_actionLoadUnit.sqf
+++ b/addons/medical/functions/fnc_actionLoadUnit.sqf
@@ -23,10 +23,10 @@ if ([_target] call EFUNC(common,isAwake)) exitwith {
     ["displayTextStructured", [_caller], [["This person (%1) is awake and cannot be loaded", [_target] call EFUNC(common,getName)], 1.5, _caller]] call EFUNC(common,targetEvent);
 };
 if ([_target] call FUNC(isBeingCarried)) then {
-	[_caller, _target] call FUNC(dropObject_carry);
+    [_caller, _target] call FUNC(dropObject_carry);
 };
 if ([_target] call FUNC(isBeingDragged)) then {
-	[_caller, _target] call FUNC(dropObject);
+    [_caller, _target] call FUNC(dropObject);
 };
 
 _vehicle = [_caller, _target] call EFUNC(common,loadPerson);
diff --git a/addons/medical/functions/fnc_handleLocal.sqf b/addons/medical/functions/fnc_handleLocal.sqf
index 98b390b51a..f79c1c3a6d 100644
--- a/addons/medical/functions/fnc_handleLocal.sqf
+++ b/addons/medical/functions/fnc_handleLocal.sqf
@@ -24,12 +24,12 @@ if (_local) then {
     };
 
     if ((_unit getvariable ["ACE_isUnconscious",false]) && {count (_unit getvariable [QGVAR(unconsciousArguments), []]) >= 7}) then {
-    	private "_arguments";
-    	_arguments = (_unit getvariable [QGVAR(unconsciousArguments), []]);
-    	_arguments set [ 3, time];
+        private "_arguments";
+        _arguments = (_unit getvariable [QGVAR(unconsciousArguments), []]);
+        _arguments set [ 3, time];
 
-    	[DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler;
+        [DFUNC(unconsciousPFH), 0.1, _arguments ] call CBA_fnc_addPerFrameHandler;
 
-    	_unit setvariable [QGVAR(unconsciousArguments), nil, true];
+        _unit setvariable [QGVAR(unconsciousArguments), nil, true];
     };
 };
diff --git a/addons/medical/functions/fnc_treatment_failure.sqf b/addons/medical/functions/fnc_treatment_failure.sqf
index fe8bafb0c7..33712956a0 100644
--- a/addons/medical/functions/fnc_treatment_failure.sqf
+++ b/addons/medical/functions/fnc_treatment_failure.sqf
@@ -36,9 +36,9 @@ _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
 
 _weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
 if (_weaponSelect != "") then {
-	_caller selectWeapon _weaponSelect;
+    _caller selectWeapon _weaponSelect;
 } else {
-	_caller action ["SwitchWeapon", _caller, _caller, 99];
+    _caller action ["SwitchWeapon", _caller, _caller, 99];
 };
 
 {
diff --git a/addons/medical/functions/fnc_treatment_success.sqf b/addons/medical/functions/fnc_treatment_success.sqf
index 6822f674c7..66406a180a 100644
--- a/addons/medical/functions/fnc_treatment_success.sqf
+++ b/addons/medical/functions/fnc_treatment_success.sqf
@@ -34,9 +34,9 @@ _caller setvariable [QGVAR(treatmentPrevAnimCaller), nil];
 
 _weaponSelect = (_caller getvariable [QGVAR(selectedWeaponOnTreatment), ""]);
 if (_weaponSelect != "") then {
-	_caller selectWeapon _weaponSelect;
+    _caller selectWeapon _weaponSelect;
 } else {
-	_caller action ["SwitchWeapon", _caller, _caller, 99];
+    _caller action ["SwitchWeapon", _caller, _caller, 99];
 };
 
 // Record specific callback

From 1df42b17c201521bbf3a15529809a1c206093087 Mon Sep 17 00:00:00 2001
From: Glowbal <thomasskooi@live.nl>
Date: Mon, 20 Apr 2015 22:22:09 +0200
Subject: [PATCH 242/257] close all dialogs

---
 addons/medical/functions/fnc_setUnconscious.sqf | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/addons/medical/functions/fnc_setUnconscious.sqf b/addons/medical/functions/fnc_setUnconscious.sqf
index e527215c51..c5809f8c8e 100644
--- a/addons/medical/functions/fnc_setUnconscious.sqf
+++ b/addons/medical/functions/fnc_setUnconscious.sqf
@@ -37,7 +37,9 @@ _unit setUnconscious true;
 
 if (_unit == ACE_player) then {
     if (visibleMap) then {openMap false};
-    closeDialog 0;
+    while {dialog} do {
+        closeDialog 0;
+    };
 };
 
 // if we have unconsciousness for AI disabled, we will kill the unit instead

From 404eb876312659b0e75eb7b4220c9f3416f0f903 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 22:24:37 +0200
Subject: [PATCH 243/257] Added some ammo class reference data

---
 extras/CfgAmmoReference.hpp | 2801 +++++++++++++++++++++++++++++++++++
 1 file changed, 2801 insertions(+)
 create mode 100644 extras/CfgAmmoReference.hpp

diff --git a/extras/CfgAmmoReference.hpp b/extras/CfgAmmoReference.hpp
new file mode 100644
index 0000000000..85201b92cc
--- /dev/null
+++ b/extras/CfgAmmoReference.hpp
@@ -0,0 +1,2801 @@
+class CfgAmmo
+{
+    class BulletBase;
+    class B_556x45_Ball : BulletBase {
+        airFriction=-0.001265;
+        hit=8;
+        typicalSpeed=750;
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class ACE_556x45_Ball_Mk262 : B_556x45_Ball {
+        airFriction=-0.001125;
+        caliber=0.6;
+        deflecting=18;
+        hit=11;
+        typicalSpeed=836;
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class ACE_556x45_Ball_Mk318 : B_556x45_Ball {
+        airFriction=-0.001120;
+        caliber=0.6;
+        deflecting=18;
+        hit=9;
+        typicalSpeed=886;
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.307};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={780, 886, 950};
+        ACE_barrelLengths[]={10, 15.5, 20};
+    };
+    class B_556x45_Ball_Tracer_Red;
+    class ACE_B_556x45_Ball_Tracer_Dim: B_556x45_Ball_Tracer_Red {
+        nvgOnly = 1;
+    };
+    class ACE_545x39_Ball_7N6M : B_556x45_Ball {
+        airFriction=-0.001162;
+        caliber=0.5;
+        deflecting=18;
+        hit=7;
+        typicalSpeed=880;
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_556x45_Ball_Tracer_Yellow;
+    class ACE_545x39_Ball_7T3M : B_556x45_Ball_Tracer_Yellow {
+        airFriction=-0.001162;
+        caliber=0.5;
+        deflecting=18;
+        hit=7;
+        typicalSpeed=883;
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_65x39_Caseless : BulletBase {
+        airFriction=-0.000785;
+        typicalSpeed=800;
+        ACE_caliber=0.264;
+        ACE_bulletLength=1.295;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.263};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={730, 760, 788, 800, 810, 830};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26, 30};
+    };
+    class B_65x39_Case_yellow;
+    class ACE_65x39_Caseless_Tracer_Dim : B_65x39_Case_yellow {
+        nvgOnly = 1;
+    };
+    class B_65x39_Caseless_green;
+    class ACE_65x39_Caseless_green_Tracer_Dim : B_65x39_Caseless_green {
+        nvgOnly = 1;
+    };
+    class ACE_65x47_Ball_Scenar: B_65x39_Caseless
+    {
+        airFriction=-0.00078;
+        typicalSpeed=820 ;
+        ACE_caliber=0.264;
+        ACE_bulletLength=1.364;
+        ACE_bulletMass=139;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.290};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={730, 760, 790, 820, 830};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class B_762x51_Ball : BulletBase {
+        airFriction=-0.001035;
+        typicalSpeed=833;
+        hit=9;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class B_762x51_Tracer_Yellow;
+    class ACE_B_762x51_Tracer_Dim: B_762x51_Tracer_Yellow {
+        nvgOnly = 1;
+    };
+    class ACE_762x51_Ball_M118LR : B_762x51_Ball {
+        airFriction=-0.0008525;
+        caliber=1.05;
+        hit=16;
+        typicalSpeed=790;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.243};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class ACE_762x51_Ball_Mk319_Mod_0 : B_762x51_Ball {
+        airFriction=-0.00103;
+        caliber=0.85;
+        hit=14;
+        typicalSpeed=890;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=130;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.377};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={838, 892, 910};
+        ACE_barrelLengths[]={13, 16, 20};
+    };
+    class ACE_762x51_Ball_Subsonic : B_762x51_Ball {
+        airFriction=-0.000535;
+        caliber=0.5;
+        hit=6;
+        typicalSpeed=790;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.340;
+        ACE_bulletMass=200;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.235};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={305, 325, 335, 340};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class ACE_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball {
+        airFriction=-0.000830;
+        caliber=1.08;
+        hit=17;
+        typicalSpeed=900;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.353;
+        ACE_bulletMass=190;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.268};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={865, 900, 924};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class ACE_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball {
+        airFriction=-0.000815;
+        caliber=1.12;
+        hit=18;
+        typicalSpeed=867;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.489;
+        ACE_bulletMass=220;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.310};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={847, 867, 877};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class ACE_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball {
+        airFriction=-0.00076;
+        caliber=1.15;
+        hit=19;
+        typicalSpeed=853;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.602;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.368};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={800, 853, 884};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class B_762x54_Ball: B_762x51_Ball {
+        airFriction=-0.001023;
+        typicalSpeed=820;
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class ACE_762x54_Ball_7N14 : B_762x51_Ball {
+        airFriction=-0.001023;
+        caliber=0.95;
+        hit=15;
+        typicalSpeed=820;
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class B_762x54_Tracer_Green;
+    class ACE_762x54_Ball_7T2 : B_762x54_Tracer_Green {
+        airFriction=-0.001023;
+        caliber=0.9;
+        hit=15;
+        typicalSpeed=800;
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class ACE_762x35_Ball : B_762x51_Ball {
+        airFriction=-0.000821;
+        caliber=0.9;
+        hit=11;
+        typicalSpeed=790;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.153;
+        ACE_bulletMass=125;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.349, 0.338, 0.330, 0.310};
+        ACE_velocityBoundaries[]={792, 610, 488};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={620, 655, 675};
+        ACE_barrelLengths[]={9, 16, 20};
+    };
+    class ACE_762x39_Ball : B_762x51_Ball {
+        airFriction=-0.0015168;
+        hit=12;
+        typicalSpeed=716;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class ACE_762x39_Ball_57N231P : B_762x51_Tracer_Yellow {
+        airFriction=-0.0015168;
+        hit=12;
+        typicalSpeed=716;
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=117;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_9x21_Ball : BulletBase {
+        airFriction=-0.00125;
+        typicalSpeed=390;
+        hit=6;
+        ACE_caliber=0.356;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=115;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.17};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={440, 460, 480};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class ACE_9x18_Ball_57N181S : B_9x21_Ball {
+        hit=5;
+        airFriction=-0.001234;
+        typicalSpeed=298;
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class ACE_9x19_Ball : B_9x21_Ball {
+        airFriction=-0.001234;
+        typicalSpeed=370;
+        hit=6;
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class ACE_10x25_Ball : B_9x21_Ball {
+        airFriction=-0.00168;
+        typicalSpeed=425;
+        hit=7;
+        ACE_caliber=0.5;
+        ACE_bulletLength=0.764;
+        ACE_bulletMass=165;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.189};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 400, 430};
+        ACE_barrelLengths[]={4, 4.61, 9};
+    };
+    class ACE_765x17_Ball: B_9x21_Ball {
+        airFriction=-0.001213;
+        typicalSpeed=282;
+        hit=7;
+        ACE_caliber=0.3125;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=65;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.118};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={282, 300, 320};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class ACE_303_Ball : ACE_762x51_Ball_M118LR {
+        airFriction=-0.00083;
+        typicalSpeed=761;
+        ACE_caliber=0.311;
+        ACE_bulletLength=1.227;
+        ACE_bulletMass=174;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
+        ACE_velocityBoundaries[]={671, 549};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={748, 761, 765};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class B_93x64_Ball : BulletBase {
+        airFriction=-0.00106;
+        typicalSpeed=880;
+        ACE_caliber=0.366;
+        ACE_bulletLength=1.350;
+        ACE_bulletMass=230;
+        ACE_transonicStabilityCoef=1;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.368};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={850, 870, 880};
+        ACE_barrelLengths[]={20, 24.41, 26};
+    };
+    class B_408_Ball : BulletBase {
+        timeToLive=10;
+        airFriction=-0.000395;
+        typicalSpeed=910;
+        ACE_caliber=0.408;
+        ACE_bulletLength=2.126;
+        ACE_bulletMass=410;
+        ACE_transonicStabilityCoef=1;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.97};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={910};
+        ACE_barrelLengths[]={29};
+    };
+    class ACE_106x83mm_Ball : B_408_Ball {
+        timeToLive=10;
+        ACE_caliber=0.416;
+        ACE_bulletLength=2.089;
+        ACE_bulletMass=398;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.72};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={960};
+        ACE_barrelLengths[]={29};
+    };
+    class B_338_Ball : BulletBase {
+        timeToLive=10;
+        airFriction=-0.000606;
+        typicalSpeed=915;
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.558;
+        ACE_bulletMass=250;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.322};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={880, 915, 925};
+        ACE_barrelLengths[]={20, 26, 28};
+    };
+    class B_338_NM_Ball : BulletBase {
+        airFriction=-0.000537;
+        typicalSpeed=820;
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.70;
+        ACE_bulletMass=300;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.381};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={790, 807, 820};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class ACE_338_Ball : B_338_Ball {
+        timeToLive=10;
+        airFriction=-0.000535;
+        caliber=1.55;
+        typicalSpeed=826;
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.70;
+        ACE_bulletMass=300;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.381};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={800, 820, 826, 830};
+        ACE_barrelLengths[]={20, 24, 26.5, 28};
+    };
+    class ACE_338_Ball_API526 : B_338_Ball {
+        timeToLive=10;
+        airFriction=-0.000673;
+        caliber=2.4;
+        typicalSpeed=826;
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.535;
+        ACE_bulletMass=253;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.290};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={880, 915, 925};
+        ACE_barrelLengths[]={20, 26, 28};
+    };
+    class B_127x54_Ball : BulletBase {
+        airFriction=-0.00014;
+        typicalSpeed=300;
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.540;
+        ACE_bulletMass=750;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={1.050};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={300};
+        ACE_barrelLengths[]={17.2};
+    };
+    class B_127x99_Ball : BulletBase {
+        timeToLive=10;
+        airFriction=-0.0006;
+        typicalSpeed=853;
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.310;
+        ACE_bulletMass=647;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.670};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={853};
+        ACE_barrelLengths[]={29};
+    };
+    class ACE_127x99_Ball_AMAX : B_127x99_Ball {
+        timeToLive=10;
+        airFriction=-0.000374;
+        typicalSpeed=860;
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.540;
+        ACE_bulletMass=750;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={1.050};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={860};
+        ACE_barrelLengths[]={29};
+    };
+    class B_127x108_Ball : BulletBase {
+        timeToLive=10;
+        airFriction=-0.00064;
+        typicalSpeed=820;
+        ACE_caliber=0.511;
+        ACE_bulletLength=2.520;
+        ACE_bulletMass=745;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.63};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={820};
+        ACE_barrelLengths[]={28.7};
+    };
+    class B_45ACP_Ball : BulletBase {
+        airFriction=-0.0007182;
+        typicalSpeed=250;
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.68;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.195};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={230, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    
+    class TMR_B_762x51_M118LR : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.505, 0.496, 0.485, 0.485, 0.485};
+        ACE_velocityBoundaries[]={853, 549, 549, 549};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    
+    class RH_50_AE_Ball: BulletBase
+    {
+        ACE_caliber=0.5;
+        ACE_bulletLength=1.110;
+        ACE_bulletMass=325;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.228};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 398, 420};
+        ACE_barrelLengths[]={4, 6, 9};
+    };
+    class RH_454_Casull: BulletBase
+    {
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.895;
+        ACE_bulletMass=325;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.171};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={450, 490, 500};
+        ACE_barrelLengths[]={4, 7.5, 9};
+    };
+    class RH_32ACP: BulletBase
+    {
+        ACE_caliber=0.3125;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=65;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.118};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={282, 300, 320};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_45ACP: BulletBase
+    {
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.68;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.195};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={230, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_B_40SW: BulletBase
+    {
+        ACE_caliber=0.4;
+        ACE_bulletLength=0.447;
+        ACE_bulletMass=135;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.105, 0.115, 0.120, 0.105};
+        ACE_velocityBoundaries[]={365, 305, 259};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 380, 400};
+        ACE_barrelLengths[]={4, 6, 9};
+    };
+    class RH_44mag_ball: BulletBase
+    {
+        ACE_caliber=0.429;
+        ACE_bulletLength=0.804;
+        ACE_bulletMass=200;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.172};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 390, 420};
+        ACE_barrelLengths[]={4, 7.5, 9};
+    };
+    class RH_357mag_ball: BulletBase
+    {
+        ACE_caliber=0.357;
+        ACE_bulletLength=0.541;
+        ACE_bulletMass=125;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.148};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={490, 510, 535};
+        ACE_barrelLengths[]={4, 6, 9};
+    };
+    class RH_762x25: BulletBase
+    {
+        ACE_caliber=0.310;
+        ACE_bulletLength=0.5455;
+        ACE_bulletMass=86;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.17};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 380, 400};
+        ACE_barrelLengths[]={4, 6, 9};
+    };
+    class RH_9x18_Ball: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class RH_B_9x19_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_B_22LR_SD: BulletBase
+    {
+        ACE_caliber=0.223;
+        ACE_bulletLength=0.45;
+        ACE_bulletMass=38;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.111};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={330, 340, 360};
+        ACE_barrelLengths[]={4, 6, 9};
+    };
+    class RH_57x28mm: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.495;
+        ACE_bulletMass=28;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.144};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={550, 625, 720};
+        ACE_barrelLengths[]={4, 6, 10.35};
+    };
+    
+    class RH_9x19_B_M822: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_9x19_B_HP: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_9x19_B_HPSB: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.603;
+        ACE_bulletMass=147;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.212};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={295, 310, 330};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class RH_B_6x35: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.445;
+        ACE_bulletMass=65;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.26};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={730, 750, 760};
+        ACE_barrelLengths[]={8, 10, 12};
+    };
+    class RH_556x45_B_M855A1 : B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.152};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class RH_556x45_B_Mk262 : B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class RH_556x45_B_Mk318 : B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.307};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={780, 886, 950};
+        ACE_barrelLengths[]={10, 15.5, 20};
+    };
+    class RH_68x43_B_FMJ: B_65x39_Caseless
+    {
+        ACE_caliber=0.277;
+        ACE_bulletLength=0.959;
+        ACE_bulletMass=115;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.162};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={713, 785, 810, 850};
+        ACE_barrelLengths[]={12, 16, 20, 24};
+    };
+    class RH_68x43_B_Match: B_65x39_Caseless
+    {
+        ACE_caliber=0.277;
+        ACE_bulletLength=1.250;
+        ACE_bulletMass=135;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.253};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 732, 750, 780};
+        ACE_barrelLengths[]={12, 16, 20, 24};
+    };	
+    class RH_762x35_B_FMJ: B_65x39_Caseless
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.118;
+        ACE_bulletMass=147;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.398};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={559, 609, 625};
+        ACE_barrelLengths[]={6, 16, 20};
+    };
+    class RH_762x35_B_Match: B_65x39_Caseless
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.153;
+        ACE_bulletMass=125;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.349, 0.338, 0.330, 0.310};
+        ACE_velocityBoundaries[]={792, 610, 488};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={590, 650, 665};
+        ACE_barrelLengths[]={6, 16, 20};
+    };
+    class RH_762x35_B_MSB: B_65x39_Caseless
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.489;
+        ACE_bulletMass=220;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.608};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={300, 320, 340};
+        ACE_barrelLengths[]={9, 16, 20};
+    };
+    class RH_762x51_B_M80A1 : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class RH_762x51_B_Mk316LR : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.243};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class RH_762x51_B_Mk319 : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.074;
+        ACE_bulletMass=130;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.277};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={838, 892, 920};
+        ACE_barrelLengths[]={13, 16, 20};
+    };
+    class RH_762x51_B_LFMJSB: B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.340;
+        ACE_bulletMass=200;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.252};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={305, 325, 335, 340};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    
+    class HLC_556NATO_SOST: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.307};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={780, 886, 950};
+        ACE_barrelLengths[]={10, 15.5, 20};
+    };
+    class HLC_556NATO_SPR: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class HLC_556NATO_EPR: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.152};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class HLC_300Blackout_Ball: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.118;
+        ACE_bulletMass=147;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.398};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={559, 609, 625};
+        ACE_barrelLengths[]={6, 16, 20};
+    };
+    class HLC_300Blackout_SMK: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.489;
+        ACE_bulletMass=220;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.608};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={300, 320, 340};
+        ACE_barrelLengths[]={9, 16, 20};
+    };
+    class HLC_762x51_BTSub: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.340;
+        ACE_bulletMass=200;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.235};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={305, 325, 335, 340};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class HLC_762x54_ball: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class HLC_762x54_tracer: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class HLC_303Brit_B: BulletBase
+    {
+        ACE_caliber=0.311;
+        ACE_bulletLength=1.227;
+        ACE_bulletMass=174;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
+        ACE_velocityBoundaries[]={671, 549};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={748, 761, 765};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class HLC_792x57_Ball: BulletBase
+    {
+        ACE_caliber=0.318;
+        ACE_bulletLength=1.128;
+        ACE_bulletMass=196;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.315};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={785, 800, 815};
+        ACE_barrelLengths[]={20, 23.62, 26};
+    };
+    class FH_545x39_Ball: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class FH_545x39_7u1: FH_545x39_Ball
+    {
+        ACE_bulletMass=80;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_muzzleVelocities[]={260, 303, 320};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class HLC_9x19_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class HLC_9x19_GoldDot: HLC_9x19_Ball
+    {
+        ACE_muzzleVelocities[]={350, 380, 420};
+    };
+    class HLC_9x19_Subsonic: HLC_9x19_Ball
+    {
+        ACE_muzzleVelocities[]={300, 320, 340};
+    };
+    class HLC_10mm_FMJ: HLC_9x19_Ball
+    {
+        ACE_caliber=0.5;
+        ACE_bulletLength=0.764;
+        ACE_bulletMass=165;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.189};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={360, 400, 430};
+        ACE_barrelLengths[]={4, 4.61, 9};
+    };
+    class HLC_9x19_M882_SMG: HLC_9x19_Ball
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    
+    class M_mas_545x39_Ball_7N6M : BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class M_mas_545x39_Ball_7T3M : BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_mas_556x45_Ball_Mk262 : B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class B_mas_9x18_Ball_57N181S : BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class B_mas_9x21p_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class B_mas_9x21_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class B_mas_9x21d_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={210, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class B_mas_765x17_Ball: BulletBase
+    {
+        ACE_caliber=0.3125;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=65;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.118};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={282, 300, 320};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class B_mas_762x39_Ball: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_mas_762x39_Ball_T: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=117;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_mas_762x51_Ball_M118LR : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.505, 0.496, 0.485, 0.485, 0.485};
+        ACE_velocityBoundaries[]={853, 549, 549, 549};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class B_mas_762x67_Ball_Mk248_Mod_0 : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.353;
+        ACE_bulletMass=190;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.268};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={865, 900, 924};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class B_mas_762x67_Ball_Mk248_Mod_1 : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.489;
+        ACE_bulletMass=220;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.310};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={820, 867, 900};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class B_mas_762x67_Ball_Berger_Hybrid_OTM : B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.602;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.368};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={800, 853, 884};
+        ACE_barrelLengths[]={20, 24, 26};
+    };	
+    class B_mas_762x54_Ball : BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class B_mas_762x54_Ball_T : BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class BWA3_B_762x51_Ball_LR : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.505, 0.496, 0.485, 0.485, 0.485};
+        ACE_velocityBoundaries[]={853, 549, 549, 549};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class BWA3_B_762x51_Ball_SD : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={300, 340};
+        ACE_barrelLengths[]={16, 24};
+    };
+    
+    class BWA3_B_46x30_Ball : BulletBase
+    {
+        ACE_caliber=0.193;
+        ACE_bulletLength=0.512;
+        ACE_bulletMass=31;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.1455};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 720, 730, 740};
+        ACE_barrelLengths[]={4, 7, 9, 12};
+    };
+    
+    class Trixie_338_Ball : BulletBase
+    {
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.70;
+        ACE_bulletMass=300;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.381};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={820, 826, 830};
+        ACE_barrelLengths[]={24, 26.5, 28};
+    };
+    class Trixie_303_Ball : BulletBase
+    {
+        ACE_caliber=0.311;
+        ACE_bulletLength=1.227;
+        ACE_bulletMass=174;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
+        ACE_velocityBoundaries[]={671, 549};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={748, 761, 765};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    
+    class rhs_ammo_556x45_Mk318_Ball : BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.307};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={780, 886, 950};
+        ACE_barrelLengths[]={10, 15.5, 20};
+    };
+    class rhs_ammo_556x45_Mk262_Ball : BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class rhsammo_762x51_Ball : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class rhs_B_545x39_Ball : BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class rhs_B_545x39_Ball_Tracer_Green : BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class rhs_ammo_762x51_M118_Special_Ball : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.243};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class rhs_B_762x54_Ball : BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class rhs_B_762x54_Ball_Tracer_Green : BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class rhs_B_762x39_Ball : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class rhs_B_762x39_Tracer : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=117;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class rhs_ammo_762x51_M80_Ball : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class rhsusf_B_300winmag : BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.489;
+        ACE_bulletMass=220;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.310};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={847, 867, 877};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    
+    class R3F_9x19_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class R3F_556x45_Ball: BulletBase
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class R3F_762x51_Ball: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class R3F_762x51_Ball2: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.505, 0.496, 0.485, 0.485, 0.485};
+        ACE_velocityBoundaries[]={853, 549, 549, 549};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class R3F_127x99_Ball: BulletBase
+    {
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.310;
+        ACE_bulletMass=647;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.670};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={853};
+        ACE_barrelLengths[]={29};
+    };
+    class R3F_127x99_Ball2: BulletBase
+    {
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.310;
+        ACE_bulletMass=647;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.670};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={853};
+        ACE_barrelLengths[]={29};
+    };
+    
+    class CUP_B_545x39_Ball: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_545x39_Ball_Tracer_Green: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_545x39_Ball_Tracer_Red: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_545x39_Ball_Tracer_White: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_545x39_Ball_Tracer_Yellow: BulletBase
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_762x39_Ball: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_762x39_Ball_Tracer_Green: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=117;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class B_762x39mm_KLT: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_9x18_Ball: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_9x18_Ball_Tracer_Green: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_9x18_Ball_Tracer_Red: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_9x18_Ball_Tracer_Yellow: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_9x18_Ball_White_Tracer: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_9x19_Ball: BulletBase
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class CUP_B_762x51_noTracer: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_762x51_Red_Tracer_3RndBurst: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_762x51_White_Tracer_3RndBurst: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_303_Ball: BulletBase
+    {
+        ACE_caliber=0.311;
+        ACE_bulletLength=1.227;
+        ACE_bulletMass=174;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.499, 0.493, 0.48};
+        ACE_velocityBoundaries[]={671, 549};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={748, 761, 765};
+        ACE_barrelLengths[]={20, 24, 26};
+    };
+    class CUP_B_127x107_Ball_Green_Tracer: BulletBase
+    {
+        ACE_caliber=0.511;
+        ACE_bulletLength=2.520;
+        ACE_bulletMass=745;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.63};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={820};
+        ACE_barrelLengths[]={28.7};
+    };
+    class CUP_B_127x108_Ball_Green_Tracer: BulletBase
+    {
+        ACE_caliber=0.511;
+        ACE_bulletLength=2.520;
+        ACE_bulletMass=745;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.63};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={820};
+        ACE_barrelLengths[]={28.7};
+    };
+    class CUP_B_762x54_Ball_White_Tracer: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class CUP_B_762x54_Ball_Red_Tracer: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class CUP_B_762x54_Ball_Green_Tracer: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class CUP_B_762x54_Ball_Yellow_Tracer: BulletBase
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class CUP_B_9x39_SP5: BulletBase
+    {
+        ACE_caliber=0.364;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=250;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={280, 300, 320};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class CUP_B_762x51_Tracer_Green: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_762x51_Tracer_Red: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_762x51_Tracer_Yellow: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class CUP_B_762x51_Tracer_White: BulletBase
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class B_127x107_Ball: BulletBase
+    {
+        ACE_caliber=0.511;
+        ACE_bulletLength=2.520;
+        ACE_bulletMass=745;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.63};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={820};
+        ACE_barrelLengths[]={28.7};
+    };
+    class CUP_B_9x18_SD: BulletBase
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 340};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class CUP_B_765x17_Ball: BulletBase
+    {
+        ACE_caliber=0.3125;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=65;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.118};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={282, 300, 320};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class CUP_B_145x115_AP_Green_Tracer: BulletBase
+    {
+        ACE_caliber=0.586;
+        ACE_bulletLength=2.00;
+        ACE_bulletMass=1010;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.620};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={1000};
+        ACE_barrelLengths[]={53};
+    };
+    class CUP_B_127x99_Ball_White_Tracer: BulletBase
+    {
+        ACE_caliber=0.510;
+        ACE_bulletLength=2.310;
+        ACE_bulletMass=647;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.670};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={853};
+        ACE_barrelLengths[]={29};
+    };
+    class CUP_B_86x70_Ball_noTracer: BulletBase
+    {
+        ACE_caliber=0.338;
+        ACE_bulletLength=1.70;
+        ACE_bulletMass=300;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.381};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={820, 826, 830};
+        ACE_barrelLengths[]={24, 26.5, 28};
+    };
+    
+    class VTN_9x18_Ball_FMJ: B_9x21_Ball
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x18_Ball_SC: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x18_Ball_TRC: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x18_Ball_AP1: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x18_Ball_AP2: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x18_Ball_PRS: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.365;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=92.6;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.125};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={298, 330, 350};
+        ACE_barrelLengths[]={3.8, 5, 9};
+    };
+    class VTN_9x19_Ball_SC: VTN_9x18_Ball_FMJ
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_9x19_Ball_TRC: VTN_9x19_Ball_SC
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_9x19_Ball_AP: VTN_9x19_Ball_SC
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_9x19_Ball_PRS: VTN_9x19_Ball_SC
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_9x39_Ball_SC: B_9x21_Ball
+    {
+        ACE_caliber=0.364;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=250;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={280, 300, 320};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_9x39_Ball_AP: VTN_9x39_Ball_SC
+    {
+        ACE_caliber=0.364;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=250;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={280, 300, 320};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_545x39_Ball_SC: B_556x45_Ball
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_545x39_Ball_TRC: VTN_545x39_Ball_SC
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=49.8;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={785, 883, 925};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_545x39_Ball_AP: VTN_545x39_Ball_TRC
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_545x39_Ball_AP2: VTN_545x39_Ball_AP
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={780, 880, 920};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_545x39_Ball_SS: VTN_545x39_Ball_SC
+    {
+        ACE_caliber=0.220;
+        ACE_bulletLength=0.85;
+        ACE_bulletMass=52.9;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.168};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={300, 320, 340};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_SC: B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_TRC: VTN_762x39_Ball_SC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=117;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_AP: VTN_762x39_Ball_TRC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_INC: VTN_762x39_Ball_AP
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_API: VTN_762x39_Ball_INC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x39_Ball_SS: VTN_762x39_Ball_SC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={300, 320, 340};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_762x41_Ball_SS: B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=0.53;
+        ACE_bulletMass=143;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={200, 210, 220};
+        ACE_barrelLengths[]={4, 6, 8};
+    };
+    class VTN_762x54_Ball_SC: VTN_762x39_Ball_SC
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_762x54_Ball_TRC: VTN_762x54_Ball_SC
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=149;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.395};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={680, 750, 798, 800};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_762x54_Ball_AP: VTN_762x54_Ball_TRC
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_762x54_Ball_INC: VTN_762x54_Ball_AP
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_762x54_Ball_API: VTN_762x54_Ball_INC
+    {
+        ACE_caliber=0.312;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=152;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.4};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={700, 800, 820, 833};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_145x114_Ball_APT: B_127x108_Ball
+    {
+        ACE_caliber=0.586;
+        ACE_bulletLength=2.00;
+        ACE_bulletMass=1010;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.620};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={1000};
+        ACE_barrelLengths[]={53};
+    };
+    class VTN_6mm_BB: B_65x39_Caseless
+    {
+        ACE_caliber=0.24;
+        ACE_bulletLength=0.24;
+        ACE_bulletMass=6;
+        ACE_ammoTempMuzzleVelocityShifts[]={};
+        ACE_ballisticCoefficients[]={};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={100};
+        ACE_barrelLengths[]={15};
+    };
+    class VTN_9x19_Ball_FMJ: B_9x21_Ball
+    {
+        ACE_caliber=0.355;
+        ACE_bulletLength=0.610;
+        ACE_bulletMass=124;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.165};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={340, 370, 400};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_556x45_Ball_FMJ: B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_TRC: VTN_556x45_Ball_FMJ
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_TRCN: VTN_556x45_Ball_TRC
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_SC: VTN_556x45_Ball_FMJ
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_AP: VTN_556x45_Ball_TRC
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_INC: VTN_556x45_Ball_AP
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-27.20, -26.44, -23.76, -21.00, -17.54, -13.10, -7.95, -1.62, 6.24, 15.48, 27.75};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={723, 764, 796, 825, 843, 866, 878, 892, 906, 915, 922, 900};
+        ACE_barrelLengths[]={8.3, 9.4, 10.6, 11.8, 13.0, 14.2, 15.4, 16.5, 17.7, 18.9, 20.0, 24.0};
+    };
+    class VTN_556x45_Ball_LR: VTN_556x45_Ball_FMJ
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=77;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.361};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={624, 816, 832, 838};
+        ACE_barrelLengths[]={7.5, 14.5, 18, 20};
+    };
+    class VTN_556x45_Ball_SS: B_556x45_Ball
+    {
+        ACE_caliber=0.224;
+        ACE_bulletLength=0.906;
+        ACE_bulletMass=62;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.151};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={300, 320, 340};
+        ACE_barrelLengths[]={10, 20.0, 24.0};
+    };
+    class VTN_762x51_Ball_SC: B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class VTN_762x51_Ball_TRC: VTN_762x51_Ball_SC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class VTN_762x51_Ball_TRCN: VTN_762x51_Ball_TRC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class VTN_762x51_Ball_AP: VTN_762x51_Ball_TRC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=146;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.2};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={700, 800, 820, 833, 845};
+        ACE_barrelLengths[]={10, 16, 20, 24, 26};
+    };
+    class VTN_762x51_Ball_LR: VTN_762x51_Ball_SC
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.24;
+        ACE_bulletMass=175;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.243};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=7;
+        ACE_muzzleVelocities[]={750, 780, 790, 794};
+        ACE_barrelLengths[]={16, 20, 24, 26};
+    };
+    class VTN_1143x23_Ball_FMJ: B_408_Ball
+    {
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.68;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.195};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={230, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_1143x23_Ball_HP: VTN_1143x23_Ball_FMJ
+    {
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.68;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.195};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={230, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_1143x23_Ball_JHP: VTN_1143x23_Ball_FMJ
+    {
+        ACE_caliber=0.452;
+        ACE_bulletLength=0.68;
+        ACE_bulletMass=230;
+        ACE_ammoTempMuzzleVelocityShifts[]={-2.655, -2.547, -2.285, -2.012, -1.698, -1.280, -0.764, -0.153, 0.596, 1.517, 2.619};
+        ACE_ballisticCoefficients[]={0.195};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ASM";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={230, 250, 285};
+        ACE_barrelLengths[]={4, 5, 9};
+    };
+    class VTN_762x39_Ball_FMJ: B_762x51_Ball
+    {
+        ACE_caliber=0.308;
+        ACE_bulletLength=1.14;
+        ACE_bulletMass=123;
+        ACE_ammoTempMuzzleVelocityShifts[]={-26.55, -25.47, -22.85, -20.12, -16.98, -12.80, -7.64, -1.53, 5.96, 15.17, 26.19};
+        ACE_ballisticCoefficients[]={0.275};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={650, 716, 750};
+        ACE_barrelLengths[]={10, 16.3, 20};
+    };
+    class VTN_45_Pellet: B_762x51_Ball
+    {
+        ACE_caliber=0.22;
+        ACE_bulletLength=0.23;
+        ACE_bulletMass=3;
+        ACE_ammoTempMuzzleVelocityShifts[]={};
+        ACE_ballisticCoefficients[]={};
+        ACE_velocityBoundaries[]={};
+        ACE_standardAtmosphere="ICAO";
+        ACE_dragModel=1;
+        ACE_muzzleVelocities[]={100, 138, 150};
+        ACE_barrelLengths[]={5, 10, 16};
+    };
+};
\ No newline at end of file

From 387572c56018a4d965f94754bfea5be36ed1f7fd Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Mon, 20 Apr 2015 22:29:15 +0200
Subject: [PATCH 244/257] Added some weapon class reference data

---
 extras/CfgWeaponsReference.hpp | 1894 ++++++++++++++++++++++++++++++++
 1 file changed, 1894 insertions(+)
 create mode 100644 extras/CfgWeaponsReference.hpp

diff --git a/extras/CfgWeaponsReference.hpp b/extras/CfgWeaponsReference.hpp
new file mode 100644
index 0000000000..77ce494e39
--- /dev/null
+++ b/extras/CfgWeaponsReference.hpp
@@ -0,0 +1,1894 @@
+class CfgWeapons
+{
+    class MGun;
+    class MGunCore;
+    class Pistol_Base_F;
+    class Rifle_Base_F;
+    class Rifle_Long_Base_F;
+    class arifle_MX_Base_F;
+    class PDW2000_Base_F;
+    class arifle_Katiba_Base_F;
+    class SDAR_base_F;
+    class SMG_02_Base_F;
+    class Tavor_base_F;
+    class SMG_01_Base;
+    class DMR_01_base_F;
+    class Mk20_Base_F;
+    class EBR_base_F;
+    class HMG_127;
+    class LRR_base_F;
+    class GM6_base_F;
+    class DMR_02_base_F;
+    class DMR_03_base_F;
+    class DMR_04_base_F;
+    class DMR_05_base_F;
+    class DMR_06_base_F;
+    class MMG_01_base_F;
+    class MMG_02_base_F;
+    class hgun_P07_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4;
+    };
+    class hgun_Rook40_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class hgun_Pistol_heavy_01_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class hgun_Pistol_heavy_02_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=3;
+    };
+    class hgun_ACPC2_F : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class hgun_PDW2000_F : PDW2000_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=7;
+    };
+    class arifle_Katiba_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=28.7;
+    };
+    class arifle_Katiba_C_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=26.8;
+    };
+    class arifle_Katiba_GL_F : arifle_Katiba_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=28.7;
+    };
+    class arifle_MX_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_MX_GL_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_MX_SW_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=16.0;
+    };
+    class arifle_MXC_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=10.5;
+    };
+    class arifle_MXM_F: arifle_MX_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=18;
+    };
+    class arifle_SDAR_F : SDAR_base_F 
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=18;
+    };
+    class SMG_02_F : SMG_02_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=7.7;
+    };
+    class arifle_TRG20_F : Tavor_base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=15;
+    };
+    class arifle_TRG21_F : Tavor_base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.1;
+    };
+    class LMG_Zafir_F : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18.1;
+    };
+    class arifle_Mk20_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=17.4;
+    };
+    class arifle_Mk20C_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_Mk20_GL_F : Mk20_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class SMG_01_F : SMG_01_Base
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.5;
+    };
+    class srifle_DMR_01_F : DMR_01_base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=24;
+    };
+    class srifle_EBR_F : EBR_base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24;
+    };
+    class LMG_Mk200_F : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class srifle_LRR_F : LRR_base_F
+    {
+        ACE_barrelTwist=13;
+        ACE_barrelLength=29;
+    };
+    class srifle_GM6_F : GM6_base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=43.3;
+    };
+    class srifle_DMR_02_F: DMR_02_base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=26;
+    };
+    class srifle_DMR_03_F: DMR_03_base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class srifle_DMR_04_F: DMR_04_base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=17.72;
+    };
+    class srifle_DMR_05_blk_F: DMR_05_base_F
+    {
+        ACE_barrelTwist=14.17;
+        ACE_barrelLength=24.41;
+    };
+    class srifle_DMR_06_camo_F: DMR_06_base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class MMG_01_hex_F: MMG_01_base_F
+    {
+        ACE_barrelTwist=14.17;
+        ACE_barrelLength=21.65;
+    };
+    class MMG_02_camo_F: MMG_02_base_F
+    {
+        ACE_barrelTwist=9.25;
+        ACE_barrelLength=24;
+    };
+    class HMG_M2 : HMG_127
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=45;
+    };
+    
+    class RH_deagle : Pistol_Base_F
+    {
+        ACE_barrelTwist=19;
+        ACE_barrelLength=6;
+    };
+    class RH_sw659 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=7.44;
+    };
+    class RH_usp : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.41;
+    };
+    class RH_uspm : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=6;
+    };
+    class RH_mak : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class RH_m1911 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class RH_kimber : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class RH_m9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class RH_vz61 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class RH_tec9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };
+    class RH_muzi : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };
+    class RH_g18 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };
+    class RH_g17 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };
+    class RH_tt33 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.6;
+    };
+    class RH_mk2 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4;
+    };
+    class RH_p226 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.4;
+    };
+    class RH_g19 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4;
+    };
+    class RH_gsh18 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.1;	
+    };
+    class RH_mateba : Pistol_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=6;
+    };
+    class RH_python : Pistol_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=6;
+    };
+    class RH_bull : Pistol_Base_F
+    {
+        ACE_barrelTwist=24;
+        ACE_barrelLength=6.5;
+    };
+    class RH_ttracker : Pistol_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=4;
+    };
+    class RH_mp412 : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=6;
+    };
+    class RH_fnp45 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class RH_fn57 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.1;
+        ACE_barrelLength=4.8;		
+    };
+    class RH_vp70 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.6;
+    };
+    class RH_cz75 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=4.7;
+    };
+    
+    class RH_PDW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10;
+    };
+    
+    class RH_hb : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=6;
+    };
+    class RH_sbr9 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=9;
+    };
+    class RH_ar10 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20.8;
+    };
+    class RH_m4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class RH_M4m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.5;
+    };
+    class RH_M4sbr : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.5;
+    };
+    class RH_M16a1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_M16A6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class RH_hk416 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class RH_hk416c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class RH_hk416s : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.4;
+    };
+    class RH_m27iar : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.5;
+    };
+    class RH_Mk12mod1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class RH_SAMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.7;
+        ACE_barrelLength=20;
+    };
+    class RH_m110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class RH_mk11 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class RH_sr25ec : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20;
+    };
+    
+    class hlc_rifle_ak74 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class hlc_rifle_ak47 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_akm : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class hlc_rifle_rpk : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=23.2;
+    };
+    class hlc_rifle_aek971 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=17;
+    };
+    class hlc_rifle_saiga12k : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.9;
+    };
+    class hlc_ar15_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=11.5;
+    };
+    class hlc_rifle_bcmjack : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class hlc_rifle_Bushmaster300 : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=16;
+    };
+    class hlc_rifle_SAMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=9;
+        ACE_barrelLength=16;
+    };
+    class hlc_rifle_honeybase : Rifle_Base_F
+    {
+        ACE_barrelTwist=8;
+        ACE_barrelLength=6;
+    };
+    class hlc_rifle_SLRchopmod : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_LAR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_c1A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.7;
+    };
+    class hlc_rifle_FAL5061 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class hlc_rifle_STG58F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class hlc_rifle_SLR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.7;
+    };
+    class hlc_rifle_falosw : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=13;
+    };
+    class hlc_rifle_psg1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=25.6;
+    };
+    class hlc_rifle_g3sg1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class hlc_rifle_hk51 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=8.31;
+    };
+    class hlc_rifle_hk53 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=8.31;
+    };
+    class hlc_rifle_g3a3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class hlc_M14_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class hlc_rifle_m14sopmod : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class hlc_lmg_M60E4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17;
+    };
+    class hlc_lmg_m60 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    
+    class hlc_smg_mp5k_PDW : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.5;
+    };
+    class hlc_smg_mp5a2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5a4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5n : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5sd5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class hlc_smg_mp5sd6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class hlc_smg_9mmar : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp510 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=8.9;
+    };
+    class hlc_smg_mp5a3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+            
+    class hgun_mas_usp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.41;
+    };
+    class hgun_mas_m23_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.87;
+    };
+    class hgun_mas_acp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5.03;
+    };
+    class hgun_mas_m9_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.9;
+    };
+    class hgun_mas_bhp_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.7;
+    };
+    class hgun_mas_glock_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.84;
+        ACE_barrelLength=4.48;
+    };
+    class hgun_mas_glocksf_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=15.75;
+        ACE_barrelLength=4.60;
+    };
+    class hgun_mas_grach_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class hgun_mas_mak_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class hgun_mas_sa61_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class hgun_mas_uzi_F: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.28;
+    };
+    class arifle_mas_mk16 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.8;
+    };
+    class arifle_mas_mk16_l : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class arifle_mas_mk17 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class srifle_mas_m110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=20;
+    };
+    class arifle_mas_ak_74m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.34;
+    };
+    class arifle_mas_ak_74m_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.34;
+    };
+    class srifle_mas_svd : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class srifle_mas_m91 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=29;
+    };
+    class srifle_mas_ksvk : Rifle_Base_F
+    {
+        ACE_barrelTwist=18;
+        ACE_barrelLength=39.37;
+    };
+    class LMG_mas_rpk_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class LMG_mas_pkm_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class arifle_mas_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class arifle_mas_bizon : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=9.1;
+    };
+    class arifle_mas_saiga : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.93;
+    };
+    class arifle_mas_hk416 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_hk416_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_hk416c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9.0;
+    };
+    class arifle_mas_hk416_m203c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9.0;
+    };
+    class arifle_mas_hk417c : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=13;
+    };
+    class arifle_mas_m4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class arifle_mas_m4c : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class arifle_mas_l119 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_l119_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_l119_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16;
+    };
+    class arifle_mas_m16 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class arifle_mas_m16_gl : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class srifle_mas_hk417 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=16.5;
+    };
+    class srifle_mas_sr25 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class srifle_mas_ebr : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class srifle_mas_m24 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class arifle_mas_mp5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };
+    class arifle_mas_mp5sd : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class srifle_mas_m107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class LMG_mas_M249_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class LMG_mas_M249a_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class LMG_mas_mk48_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.75;
+    };
+    class LMG_mas_m240_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class LMG_mas_mg3_F : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22.2;
+    };
+    class arifle_mas_g3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class arifle_mas_g3_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17.7;
+    };
+    class arifle_mas_fal : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class arifle_mas_fal_m203 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+    class arifle_mas_m1014 : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18.5;
+    };
+    
+    class BWA3_P8 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.25;
+    };
+    class BWA3_MP7 : Pistol_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=7.1;
+    };
+    class BWA3_G36 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class BWA3_G36K : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class BWA3_G28_Standard : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16.5;
+    };
+    class BWA3_G27 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class BWA3_MG4 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class BWA3_MG5 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21.6;
+    };
+    class BWA3_G82 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    
+    class Trixie_L131A1 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.5;
+    };
+    class Trixie_XM8_Carbine : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class Trixie_XM8_Compact : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class Trixie_XM8_SAW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_SAW_NB : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class Trixie_XM8_DMR_NB : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class L129A1_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=16;
+    };
+    class Trixie_Enfield : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=25.2;
+    };
+    class Trixie_CZ550_Rail : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=23.622;
+    };
+    class Trixie_FNFAL_Rail : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };
+        
+    class Trixie_M110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class Trixie_MK12 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class Trixie_LM308MWS : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=16;
+    };
+    class Trixie_M14DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class Trixie_M14DMR_NG_Black_Short : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class Trixie_M14DMR_NG_Short : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=18;
+    };
+    class Trixie_M14 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class Trixie_M40A3 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24;
+    };
+    class Trixie_CZ750 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=26;
+    };
+    class Trixie_M24 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class Trixie_AWM338 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=27;
+    };
+    class Trixie_M107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class Trixie_AS50 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class L110A1_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };
+    class Trixie_L86A2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=25.4;
+    };
+    class Trixie_l85a2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20.4;
+    };
+    class L7A2_base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    
+    class rhs_weap_pya : Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class rhs_weap_pkp : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };
+    class rhs_weap_pkm : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class rhs_weap_rpk74m : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class rhs_weap_rpk74 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };
+    class rhs_weap_ak74m : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_aks74u : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class rhs_weap_akm : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_svd : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class rhs_weap_svds : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=22.2;
+    };
+    class rhs_weap_m4_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class rhs_weap_m16a4 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m16a4_carryhandle : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m16a4_grip : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_m240B : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class rhs_weap_m249_pip : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class rhs_weap_mk18 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class rhs_weap_M590_5RD : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18.5;
+    };
+    class rhs_weap_M590_8RD : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_sr25 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class rhs_weap_sr25_ec : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=20;
+    };
+    class rhs_weap_XM2010_Base_F: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=24;
+    };
+    
+    class R3F_PAMAS : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class R3F_Famas_F1: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.2;
+    };
+    class R3F_Famas_surb: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=15.9;
+    };
+    class R3F_Minimi: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };
+    class R3F_Minimi_762: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.8;
+    };
+    class R3F_FRF2: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=25.59;
+    };
+    class R3F_PGM_Hecate_II: Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=27.6;
+    };
+    class R3F_HK417S_HG : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=12;
+    };
+    class R3F_HK417M : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=16;
+    };
+    class R3F_HK417L : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class R3F_M107 : Rifle_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class R3F_HK416M : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14;
+    };
+    class R3F_MP5SD : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    
+    class CUP_hgun_Colt1911 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class CUP_sgun_AA12 : Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=18;		
+    };
+    class CUP_arifle_AK_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };	
+    class CUP_arifle_AK107_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_arifle_AKS_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_arifle_AKS74U : Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class CUP_arifle_RPK74 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7.68;
+        ACE_barrelLength=23.2;
+    };			
+    class CUP_srifle_AS50 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class CUP_srifle_AWM_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=27;
+    };	
+    class CUP_smg_bizon : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=9.1;
+    };
+    class CUP_hgun_Compact : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=3.74;
+    };	
+    class CUP_srifle_CZ750 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=26;
+    };	
+    class CUP_arifle_CZ805_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_CZ805_A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_CZ805_A2 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=10.9;
+    };
+    class CUP_srifle_DMR : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };	
+    class CUP_hgun_Duty : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=3.74;
+    };
+    class CUP_arifle_FNFAL : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=21;
+    };	
+    class CUP_arifle_G36A : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class CUP_arifle_G36K : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_G36C : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class CUP_arifle_MG36 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18.9;
+    };
+    class CUP_hgun_Glock17 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.49;
+    };	
+    class CUP_srifle_CZ550 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=23.622;
+    };	
+    class CUP_srifle_ksvk : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=18;
+        ACE_barrelLength=39.37;
+    };	
+    class CUP_lmg_L7A2 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };	
+    class CUP_arifle_L85A2_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20.4;
+    };	
+    class CUP_lmg_L110A1 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=13.7;
+    };	
+    class CUP_srifle_LeeEnfield : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=25.2;
+    };
+    class CUP_hgun_M9 : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class CUP_srifle_M14 : Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class CUP_arifle_M16_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_M4_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class CUP_srifle_Mk12SPR : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class CUP_srifle_M24_des : Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };	
+    class CUP_lmg_M60A4 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=17;
+    };
+    class CUP_srifle_M107_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=29;
+    };
+    class CUP_srifle_M110 : Rifle_Base_F
+    {
+        ACE_barrelTwist=11;
+        ACE_barrelLength=20;
+    };
+    class CUP_lmg_M240 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class CUP_lmg_M249_para : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class CUP_lmg_M249 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class CUP_sgun_M1014 : Rifle_Base_F
+    {
+        ACE_twistDirection=0;
+        ACE_barrelTwist=0;
+        ACE_barrelLength=18.5;
+    };	
+    class CUP_hgun_Makarov : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };	
+    class CUP_hgun_MicroUzi : Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=5;
+    };	
+    class CUP_lmg_Mk48_Base : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=19.75;
+    };	
+    class CUP_smg_MP5SD6 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=5.7;
+    };
+    class CUP_smg_MP5A5 : Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=8.9;
+    };	
+    class CUP_hgun_PB6P9 : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.1;
+    };
+    class CUP_hgun_Phantom : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.7;
+        ACE_barrelLength=4.7;
+    };	
+    class CUP_lmg_PKM : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class CUP_lmg_Pecheneg : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };	
+    class CUP_hgun_TaurusTracker455 : Pistol_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=4;
+    };
+    class CUP_arifle_Sa58P : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=15.4;
+    };
+    class CUP_arifle_Sa58V : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=15.4;
+    };
+    class CUP_hgun_SA61 : Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=4.5;
+    };
+    class CUP_sgun_Saiga12K: Rifle_Base_F
+    {
+        ACE_barrelTwist=0;
+        ACE_twistDirection=0;
+        ACE_barrelLength=16.9;
+    }	
+    class CUP_arifle_Mk16_CQC : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10;
+    };
+    class CUP_arifle_Mk16_STD : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14;
+    };
+    class CUP_arifle_Mk16_SV : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };	
+    class CUP_arifle_Mk17_CQC : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=13;
+    };
+    class CUP_arifle_Mk17_STD : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=16;
+    };
+    class CUP_arifle_Mk20 : Rifle_Base_F
+    {	
+        ACE_barrelTwist=12;
+        ACE_barrelLength=20;
+    };
+    class CUP_srifle_SVD : Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class CUP_lmg_UK59 : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=21.7;
+    };
+    class CUP_DSHKM_W : MGun
+    {
+        ACE_barrelTwist=15;
+        ACE_barrelLength=42.1;
+    };
+    class CUP_KPVT_W : MGun
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class CUP_KPVB_W : MGun
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class CUP_M134 : MGunCore
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=22;
+    };
+    class CUP_M240_veh_W : Rifle_Long_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;		 	
+    };
+    class CUP_PKT_W : MGun
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=28.43;
+    };
+    class CUP_srifle_VSSVintorez : Rifle_Base_F
+    {
+        ACE_barrelTwist=8.3;
+        ACE_barrelLength=7.9;
+    };
+    class CUP_arifle_XM8_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_XM8_Carbine : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_xm8_sharpshooter : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_xm8_SAW : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=20;
+    };
+    class CUP_arifle_XM8_Compact : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=9;
+    };
+    class CUP_arifle_XM8_Railed_Base : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    class CUP_arifle_XM8_Carbine_FG : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=12.5;
+    };
+    
+    class VTN_AK_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M_GP25: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74M_GP30M: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74N: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKS74N_76: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK74_76: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS_aa: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=10.3;
+    };
+    class VTN_AKS74U_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=6.3;
+        ACE_barrelLength=8.3;
+    };
+    class VTN_AKM_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AKMS_T_P: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.87;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK103_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_AK104_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_AK105_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_AK105_P_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=12.4;
+    };
+    class VTN_SVD_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SVD_63: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SVD_86: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.4;
+        ACE_barrelLength=24.4;
+    };
+    class VTN_SV98_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=12.6;
+        ACE_barrelLength=25.59;
+    };
+    class VTN_PKM_BAS: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.4;
+    };
+    class VTN_PKP: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=25.9;
+    };
+    class VTN_PYA: Pistol_Base_F
+    {
+        ACE_barrelTwist=10;
+        ACE_barrelLength=4.4;
+    };
+    class VTN_PM: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=3.68;
+    };
+    class VTN_PB: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=4.1;
+    };
+    class VTN_GSH18: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.1;
+    };
+    class VTN_PSS: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=1.4;
+    };
+    class VTN_PKT: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.45;
+        ACE_barrelLength=28.43;
+    };
+    class VTN_KORD: Rifle_Base_F
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class VTN_KPVT: Rifle_Base_F
+    {
+        ACE_barrelTwist=17.91;
+        ACE_barrelLength=53;
+    };
+    class VTN_C_M4A1 : Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=14.5;
+    };
+    class VTN_MK18MOD0: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=10.3;
+    };
+    class VTN_M16_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=14;
+        ACE_barrelLength=20;
+    };
+    class VTN_FN_SAMR_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7.7;
+        ACE_barrelLength=20;
+    };
+    class VTN_M249_SAW_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=18;
+    };
+    class VTN_M249_PARA: Rifle_Base_F
+    {
+        ACE_barrelTwist=7;
+        ACE_barrelLength=16.3;
+    };
+    class VTN_M240G_BASE: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class VTN_M9: Pistol_Base_F
+    {
+        ACE_barrelTwist=9.8;
+        ACE_barrelLength=4.9;
+    };
+    class VTN_M45A1: Pistol_Base_F
+    {
+        ACE_barrelTwist=16;
+        ACE_barrelLength=5;
+    };
+    class VTN_M24: Rifle_Base_F
+    {
+        ACE_barrelTwist=11.25;
+        ACE_barrelLength=24;
+    };
+    class VTN_M240: Rifle_Base_F
+    {
+        ACE_barrelTwist=12;
+        ACE_barrelLength=24.8;
+    };
+    class VTN_KO44: Rifle_Base_F
+    {
+        ACE_barrelTwist=9.5;
+        ACE_barrelLength=20.2;
+    };
+    class VTN_SAIGA_MK03: Rifle_Base_F
+    {
+        ACE_twistDirection=9.45;
+        ACE_barrelLength=16.3;
+    };
+};
\ No newline at end of file

From fdbd0c19057cefb52109fc5ed969c85561661ce9 Mon Sep 17 00:00:00 2001
From: PabstMirror <elephantisaterriblemascot@gmail.com>
Date: Mon, 20 Apr 2015 16:12:01 -0500
Subject: [PATCH 245/257] #777 - mDagr - Update map pos each frame.

---
 addons/microdagr/functions/fnc_mapOnDrawEH.sqf   |  4 ++--
 addons/microdagr/functions/fnc_openDisplay.sqf   |  1 -
 addons/microdagr/functions/fnc_updateDisplay.sqf | 14 +++++++-------
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
index bff20a4b67..644064d069 100644
--- a/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
+++ b/addons/microdagr/functions/fnc_mapOnDrawEH.sqf
@@ -49,11 +49,11 @@ if (GVAR(currentApplicationPage) == 1) then {
 
 } else { //Map Mode:
     if (GVAR(mapAutoTrackPosition)) then {
-        _theMap ctrlMapAnimAdd [0, (GVAR(mapZoom)/_mapSize), GVAR(gpsPositionASL)];
+        _theMap ctrlMapAnimAdd [0, (GVAR(mapZoom)/_mapSize), (getPosASL ace_player)];
         ctrlMapAnimCommit _theMap;
     };
     _size = 48 * _mapSize;
-    _theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], GVAR(gpsPositionASL), _size, _size, (getDir ace_player), '', 0 ];
+    _theMap drawIcon [QUOTE(PATHTO_R(images\icon_self.paa)), [0.533,0.769,0.76,0.75], (getPosASL ace_player), _size, _size, (getDir ace_player), '', 0 ];
 
     if (GVAR(settingShowAllWaypointsOnMap)) then {
         _size = 32 * _mapSize;
diff --git a/addons/microdagr/functions/fnc_openDisplay.sqf b/addons/microdagr/functions/fnc_openDisplay.sqf
index ae5f7f47f5..b4cec0fe46 100644
--- a/addons/microdagr/functions/fnc_openDisplay.sqf
+++ b/addons/microdagr/functions/fnc_openDisplay.sqf
@@ -83,7 +83,6 @@ if ((_oldShowMode == DISPLAY_MODE_CLOSED) && {GVAR(currentShowMode) != DISPLAY_M
             };
             [_pfID] call CBA_fnc_removePerFrameHandler;
         } else {
-            GVAR(gpsPositionASL) = getPosAsl ace_player;
             if (GVAR(currentShowMode) == DISPLAY_MODE_HIDDEN) then {
                 //If display is hidden, and we can show, then swithc modes:
                 if ([DISPLAY_MODE_DISPLAY] call FUNC(canShow)) then {
diff --git a/addons/microdagr/functions/fnc_updateDisplay.sqf b/addons/microdagr/functions/fnc_updateDisplay.sqf
index 2a5f34a12c..26e5ef8638 100644
--- a/addons/microdagr/functions/fnc_updateDisplay.sqf
+++ b/addons/microdagr/functions/fnc_updateDisplay.sqf
@@ -44,7 +44,7 @@ case (APP_MODE_INFODISPLAY): {
         (_display displayCtrl IDC_MODEDISPLAY_NORTHING) ctrlSetText _northingText;
 
         //Elevation:
-        _numASL = (GVAR(gpsPositionASL) select 2) + GVAR(mapAltitude);
+        _numASL = ((getPosASL ace_player) select 2) + GVAR(mapAltitude);
         _aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber;
         _aboveSeaLevelText = if (_numASL > 0) then {"+" + _aboveSeaLevelText + " MSL"} else {_aboveSeaLevelText + " MSL"};
         (_display displayCtrl IDC_MODEDISPLAY_ELEVATIONNUM) ctrlSetText _aboveSeaLevelText;
@@ -88,13 +88,13 @@ case (APP_MODE_INFODISPLAY): {
             };
 
             if (!(_targetPosLocationASL isEqualTo [])) then {
-                _bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo;
+                _bearing = [(getPosASL ace_player), _targetPosLocationASL] call BIS_fnc_dirTo;
                 _bearingText = if (GVAR(settingUseMils)) then {
                     [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
                 } else {
                     ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
                 };
-                _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
+                _2dDistanceKm = (((getPosASL ace_player) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
                 _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];
                 _numASL = (_targetPosLocationASL select 2) + GVAR(mapAltitude);
                 _aboveSeaLevelText = [_numASL, 5, 0] call CBA_fnc_formatNumber;
@@ -125,7 +125,7 @@ case (APP_MODE_COMPASS): {
             (_display displayCtrl IDC_MODECOMPASS_RANGE) ctrlSetText "";
             (_display displayCtrl IDC_MODECOMPASS_TARGET) ctrlSetText "";
         } else {
-            _playerPos2d = GVAR(gpsPositionASL) select [0,2];
+            _playerPos2d = (getPosASL ace_player) select [0,2];
 
             _targetPosName = "";
             _targetPosLocationASL = [];
@@ -145,13 +145,13 @@ case (APP_MODE_COMPASS): {
             _rangeText = "---";
 
             if (!(_targetPosLocationASL isEqualTo [])) then {
-                _bearing = [GVAR(gpsPositionASL), _targetPosLocationASL] call BIS_fnc_dirTo;
+                _bearing = [(getPosASL ace_player), _targetPosLocationASL] call BIS_fnc_dirTo;
                 _bearingText = if (GVAR(settingUseMils)) then {
                     [(floor ((6400 / 360) * (_bearing))), 4, 0] call CBA_fnc_formatNumber;
                 } else {
                     ([(floor (_bearing)), 3, 1] call CBA_fnc_formatNumber) + "°" //degree symbol is in UTF-8
                 };
-                _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
+                _2dDistanceKm = (((getPosASL ace_player) select [0,2]) distance (_targetPosLocationASL select [0,2])) / 1000;
                 _rangeText = format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)];
             };
 
@@ -169,7 +169,7 @@ case (APP_MODE_WAYPOINTS): {
         {
             EXPLODE_2_PVT(_x,_wpName,_wpPos);
             _wpListBox lbAdd _wpName;
-            _2dDistanceKm = ((GVAR(gpsPositionASL) select [0,2]) distance (_wpPos select [0,2])) / 1000;
+            _2dDistanceKm = (((getPosASL ace_player) select [0,2]) distance (_wpPos select [0,2])) / 1000;
             _wpListBox lbSetTextRight [_forEachIndex, (format ["%1km", ([_2dDistanceKm, 1, 1] call CBA_fnc_formatNumber)])];
         } forEach _waypoints;
 

From 90288b495ed5468866fb8a644881d4bf5cd06a43 Mon Sep 17 00:00:00 2001
From: esteldunedain <nicolas.d.badano@gmail.com>
Date: Mon, 20 Apr 2015 18:24:12 -0300
Subject: [PATCH 246/257] Interactions inside vehicles. Skip the "Main
 Interactions" level; mount its children intead.

---
 addons/interaction/functions/fnc_addPassengerActions.sqf | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/addons/interaction/functions/fnc_addPassengerActions.sqf b/addons/interaction/functions/fnc_addPassengerActions.sqf
index 9e577ed7bb..82e3b3b4fb 100644
--- a/addons/interaction/functions/fnc_addPassengerActions.sqf
+++ b/addons/interaction/functions/fnc_addPassengerActions.sqf
@@ -24,6 +24,10 @@ _actionTrees = missionNamespace getVariable [_varName, []];
 
 _actions = [];
 // Mount unit MainActions menu
-_actions pushBack [(_actionTrees select 0) select 0, (_actionTrees select 0) select 1, _unit];
+
+{
+	EXPLODE_2_PVT(_x,_actionData,_children);
+	_actions pushBack [_actionData, _children, _unit];
+} forEach ((_actionTrees select 0) select 1);
 
 _actions

From 6c4b078dce761a73b4ae43e7dc8dbb59d5a2f393 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 09:46:57 +0200
Subject: [PATCH 247/257] Updated the default gun profile used for adding new
 profiles

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

diff --git a/addons/atragmx/functions/fnc_add_new_gun.sqf b/addons/atragmx/functions/fnc_add_new_gun.sqf
index bac04c2e07..0a0c034f39 100644
--- a/addons/atragmx/functions/fnc_add_new_gun.sqf
+++ b/addons/atragmx/functions/fnc_add_new_gun.sqf
@@ -19,7 +19,7 @@ private ["_gunName", "_gunProfileEntry"];
 
 _gunName = ctrlText 11001;
 if (_gunName != "") then {
-    _gunProfileEntry = [_gunName, 850, 500, 0.280, -0.0010000, 3.81, 0, 0.338, 0.338, 120, 0, 0, 9.460, "", "", 0.393, 1, "ICAO"];
+    _gunProfileEntry = [_gunName, 810, 100, 0.0679, -0.0010350, 3.81, 0, 2, 10, 120, 0, 0, 9.525, 7.82, 25.40, 0.393, 1, "ICAO"],
 
     GVAR(gunList) = GVAR(gunList) + [_gunProfileEntry];
 

From f98a0cdfae2593b20a68e81e977b2c0d639d1720 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 11:24:59 +0200
Subject: [PATCH 248/257] Overworked the scope click number GUI

---
 addons/atragmx/RscTitles.hpp                       |  9 +++++++++
 addons/atragmx/functions/fnc_restore_user_data.sqf |  1 -
 addons/atragmx/functions/fnc_show_main_page.sqf    |  5 ++++-
 addons/atragmx/functions/fnc_store_user_data.sqf   |  1 -
 addons/atragmx/functions/fnc_update_scope_unit.sqf | 11 ++++++++---
 5 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index fe45ef67f5..8b576e4275 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -595,11 +595,20 @@ class ATragMX_Display {
         class TEXT_SCOPE_UNIT: TEXT_GUN_LIST {
             idc=2000;
             style=ST_CENTER;
+            w=0.06;
             x=0.550*safezoneW+safezoneX+0.205;
             colorBackground[]={0,0,0,0};
             text="TMOA";
             action=QUOTE(call FUNC(cycle_scope_unit));
         };
+        class TEXT_SCOPE_CLICK_NUMBER: TEXT_GUN_LIST {
+            idc=2001;
+            style=ST_CENTER;
+            w=0.03;
+            x=0.550*safezoneW+safezoneX+0.27;
+            text="4";
+            action="";
+        };        
         class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
             idc=3000;
             style=ST_RIGHT;
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 55b73cc5b5..7204f17426 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -18,7 +18,6 @@
 GVAR(currentUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentUnit", 2]) min 2;
 [(profileNamespace getVariable ["ACE_ATragMX_currentGun", 0]), true, false] call FUNC(change_gun);
 GVAR(currentTarget) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentTarget", 0]) min 3;
-GVAR(currentScopeUnit) = 0 max (profileNamespace getVariable ["ACE_ATragMX_currentScopeUnit", 0]) min 3;
 
 GVAR(atmosphereModeTBH) = profileNamespace getVariable ["ACE_ATragMX_atmosphereModeTBH", true];
 GVAR(altitude) = -1000 max (profileNamespace getVariable ["ACE_ATragMX_altitude", 0]) min 20000;
diff --git a/addons/atragmx/functions/fnc_show_main_page.sqf b/addons/atragmx/functions/fnc_show_main_page.sqf
index ed999948b0..580d111c8f 100644
--- a/addons/atragmx/functions/fnc_show_main_page.sqf
+++ b/addons/atragmx/functions/fnc_show_main_page.sqf
@@ -18,7 +18,7 @@
 GVAR(showMainPage) = _this;
 
 {ctrlShow [_x, _this]} forEach [10, 100, 11, 110, 12, 120, 13, 130, 14, 140, 20, 200, 21, 210, 22, 220, 23, 230, 30, 300, 31, 310, 32, 320, 33, 330, 34, 340, 40, 400, 401, 402, 403, 41, 410, 411, 412, 42, 420,
-                                500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
+                                500, 501, 502, 503, 600, 601, 602, 603, 1000, 1001, 1002, 1003, 1004, 2000, 2001, 3000, 4000, 4001, 4002, 4003, 4004, 4005, 4006, 4007, 4008];
 
 if (_this) then {
     if (GVAR(atmosphereModeTBH)) then {
@@ -26,4 +26,7 @@ if (_this) then {
     } else {
         {ctrlShow [_x, false]} forEach [21, 210, 22, 220];
     };
+    if (GVAR(currentScopeUnit) != 3) then {
+        {ctrlShow [_x, false]} forEach [2001];
+    };
 };
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 2045276426..01a5810fe2 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -20,7 +20,6 @@ profileNamespace setVariable ["ACE_ATragMX_profileNamespaceVersion", ATRAGMX_PRO
 profileNamespace setVariable ["ACE_ATragMX_currentUnit", GVAR(currentUnit)];
 profileNamespace setVariable ["ACE_ATragMX_currentGun", GVAR(currentGun)];
 profileNamespace setVariable ["ACE_ATragMX_currentTarget", GVAR(currentTarget)];
-profileNamespace setVariable ["ACE_ATragMX_currentScopeUnit", GVAR(currentScopeUnit)];
 
 profileNamespace setVariable ["ACE_ATragMX_atmosphereModeTBH", GVAR(atmosphereModeTBH)];
 profileNamespace setVariable ["ACE_ATragMX_altitude", GVAR(altitude)];
diff --git a/addons/atragmx/functions/fnc_update_scope_unit.sqf b/addons/atragmx/functions/fnc_update_scope_unit.sqf
index 72efeb772e..46db8c40c4 100644
--- a/addons/atragmx/functions/fnc_update_scope_unit.sqf
+++ b/addons/atragmx/functions/fnc_update_scope_unit.sqf
@@ -15,10 +15,15 @@
  */
 #include "script_component.hpp"
 
+ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
+ctrlSetText [2001, Str(GVAR(currentScopeClickNumber))];
+
 if (GVAR(currentScopeUnit) == 3) then {
-    ctrlSetText [2000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
     ctrlSetText [5000, format["Clicks=%1", GVAR(currentScopeClickNumber)]];
+    if (GVAR(showMainPage)) then {
+        ctrlShow [2001, true];
+    };
 } else {
-    ctrlSetText [2000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
     ctrlSetText [5000, GVAR(scopeUnits) select GVAR(currentScopeUnit)];
-};
+    ctrlShow [2001, false];
+};
\ No newline at end of file

From 0cf2374475e333bff88ada313050c120df8f61d2 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 11:43:16 +0200
Subject: [PATCH 249/257] Atmospheric Calc Method GUI improvement

---
 addons/atragmx/RscTitles.hpp | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 8b576e4275..fca0a6fcfe 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -1222,7 +1222,10 @@ class ATragMX_Display {
         };
         class TEXT_ATMO_ENV_DATA_CALC_METHOD: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
             idc=13011;
-            x=0.550*safezoneW+safezoneX+0.24;
+            style=64;
+            w=0.14;
+            h=0.07;
+            x=0.550*safezoneW+safezoneX+0.235;
             y=0.265*safezoneH+safezoneY+0.29;
             text="Calc Method";
         };

From c24586ce02f884882c053bfcc95eb96ea771e1b3 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 11:53:28 +0200
Subject: [PATCH 250/257] Reworked the result output GUI on the main page

---
 addons/atragmx/RscTitles.hpp | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index fca0a6fcfe..5fd3339f28 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -523,9 +523,12 @@ class ATragMX_Display {
             x=0.550*safezoneW+safezoneX+0.32;
             text="Cur";
         };
-        class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscEdit {
+        class TEXT_ELEVATION_OUTPUT_ABSOLUTE: ATragMX_RscText {
             idc=400;
-            w=0.07;
+            style=160;
+            sizeEx=0.025;
+            w=0.065;
+            h=0.032;
             x=0.550*safezoneW+safezoneX+0.17;
             y=0.265*safezoneH+safezoneY+0.50;
             text="";
@@ -537,7 +540,6 @@ class ATragMX_Display {
         class TEXT_ELEVATION_INPUT_CURRENT: TEXT_ELEVATION_OUTPUT_ABSOLUTE {
             idc=402;
             x=0.550*safezoneW+safezoneX+0.323;
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(parse_input); call FUNC(update_result)});
         };
         class TEXT_WINDAGE: TEXT_ELEVATION {
             idc=41;
@@ -555,7 +557,6 @@ class ATragMX_Display {
         class TEXT_WINDAGE_INPUT_CURRENT: TEXT_WINDAGE_OUTPUT_ABSOLUTE {
             idc=412;
             x=0.550*safezoneW+safezoneX+0.323;
-            onKeyUp=QUOTE(if (_this select 1 == 28) then {call FUNC(parse_input); call FUNC(update_result)});
         };
         class TEXT_LEAD: TEXT_GUN {
             idc=42;

From aabec2aea2a95ec0a386e563657d2196dfafcb89 Mon Sep 17 00:00:00 2001
From: ViperMaul <vipermaul@gmail.com>
Date: Tue, 21 Apr 2015 04:02:10 -0700
Subject: [PATCH 251/257] Converting Tabs to Spaces. Confirming UTF-8

---
 tools/make.py | 1690 +++++++++++++++++++++++++------------------------
 1 file changed, 846 insertions(+), 844 deletions(-)

diff --git a/tools/make.py b/tools/make.py
index 5146a666bb..aaaf6501c5 100644
--- a/tools/make.py
+++ b/tools/make.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python
 # vim: set fileencoding=utf-8 :
 
 # make.py
@@ -35,8 +35,8 @@ __version__ = "0.4"
 import sys
 
 if sys.version_info[0] == 2:
-	print("Python 3 is required.")
-	sys.exit(1)
+    print("Python 3 is required.")
+    sys.exit(1)
 
 import os
 import os.path
@@ -52,7 +52,7 @@ import time
 import re
 
 if sys.platform == "win32":
-	import winreg
+    import winreg
 
 ######## GLOBALS #########
 work_drive = ""
@@ -70,369 +70,371 @@ optionals_root = ""
 #   -1 -> Directory does not exist
 #   -2 -> General error (see stack traceback)
 def  get_directory_hash(directory):
-	directory_hash = hashlib.sha1()
-	if not os.path.exists (directory):
-		return -1
+    directory_hash = hashlib.sha1()
+    if not os.path.exists (directory):
+        return -1
 
-	try:
-		for root, dirs, files in os.walk(directory):
-			for names in files:
-				path = os.path.join(root, names)
-				try:
-					f = open(path, 'rb')
-				except:
-					# You can't open the file for some reason
-					f.close()
-					continue
+    try:
+        for root, dirs, files in os.walk(directory):
+            for names in files:
+                path = os.path.join(root, names)
+                try:
+                    f = open(path, 'rb')
+                except:
+                    # You can't open the file for some reason
+                    f.close()
+                    continue
 
-				while 1:
-					# Read file in as little chunks
-					buf = f.read(4096)
-					if not buf: break
-					new = hashlib.sha1(buf)
-					directory_hash.update(new.digest())
-				f.close()
+                while 1:
+                    # Read file in as little chunks
+                    buf = f.read(4096)
+                    if not buf: break
+                    new = hashlib.sha1(buf)
+                    directory_hash.update(new.digest())
+                f.close()
 
-	except:
-		# Print the stack traceback
-		traceback.print_exc()
-		return -2
+    except:
+        # Print the stack traceback
+        traceback.print_exc()
+        return -2
 
-	return directory_hash.hexdigest()
+    return directory_hash.hexdigest()
 
 # Copyright (c) André Burgaud
 # http://www.burgaud.com/bring-colors-to-the-windows-console-with-python/
 if sys.platform == "win32":
-	from ctypes import windll, Structure, c_short, c_ushort, byref
+    from ctypes import windll, Structure, c_short, c_ushort, byref
 
-	SHORT = c_short
-	WORD = c_ushort
+    SHORT = c_short
+    WORD = c_ushort
 
-	class COORD(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("X", SHORT),
-		("Y", SHORT)]
+    class COORD(Structure):
+      """struct in wincon.h."""
+      _fields_ = [
+        ("X", SHORT),
+        ("Y", SHORT)]
 
-	class SMALL_RECT(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("Left", SHORT),
-		("Top", SHORT),
-		("Right", SHORT),
-		("Bottom", SHORT)]
+    class SMALL_RECT(Structure):
+      """struct in wincon.h."""
+      _fields_ = [
+        ("Left", SHORT),
+        ("Top", SHORT),
+        ("Right", SHORT),
+        ("Bottom", SHORT)]
 
-	class CONSOLE_SCREEN_BUFFER_INFO(Structure):
-	  """struct in wincon.h."""
-	  _fields_ = [
-		("dwSize", COORD),
-		("dwCursorPosition", COORD),
-		("wAttributes", WORD),
-		("srWindow", SMALL_RECT),
-		("dwMaximumWindowSize", COORD)]
+    class CONSOLE_SCREEN_BUFFER_INFO(Structure):
+      """struct in wincon.h."""
+      _fields_ = [
+        ("dwSize", COORD),
+        ("dwCursorPosition", COORD),
+        ("wAttributes", WORD),
+        ("srWindow", SMALL_RECT),
+        ("dwMaximumWindowSize", COORD)]
 
-	# winbase.h
-	STD_INPUT_HANDLE = -10
-	STD_OUTPUT_HANDLE = -11
-	STD_ERROR_HANDLE = -12
+    # winbase.h
+    STD_INPUT_HANDLE = -10
+    STD_OUTPUT_HANDLE = -11
+    STD_ERROR_HANDLE = -12
 
-	# wincon.h
-	FOREGROUND_BLACK     = 0x0000
-	FOREGROUND_BLUE      = 0x0001
-	FOREGROUND_GREEN     = 0x0002
-	FOREGROUND_CYAN      = 0x0003
-	FOREGROUND_RED       = 0x0004
-	FOREGROUND_MAGENTA   = 0x0005
-	FOREGROUND_YELLOW    = 0x0006
-	FOREGROUND_GREY      = 0x0007
-	FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified.
+    # wincon.h
+    FOREGROUND_BLACK     = 0x0000
+    FOREGROUND_BLUE      = 0x0001
+    FOREGROUND_GREEN     = 0x0002
+    FOREGROUND_CYAN      = 0x0003
+    FOREGROUND_RED       = 0x0004
+    FOREGROUND_MAGENTA   = 0x0005
+    FOREGROUND_YELLOW    = 0x0006
+    FOREGROUND_GREY      = 0x0007
+    FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified.
 
-	BACKGROUND_BLACK     = 0x0000
-	BACKGROUND_BLUE      = 0x0010
-	BACKGROUND_GREEN     = 0x0020
-	BACKGROUND_CYAN      = 0x0030
-	BACKGROUND_RED       = 0x0040
-	BACKGROUND_MAGENTA   = 0x0050
-	BACKGROUND_YELLOW    = 0x0060
-	BACKGROUND_GREY      = 0x0070
-	BACKGROUND_INTENSITY = 0x0080 # background color is intensified.
+    BACKGROUND_BLACK     = 0x0000
+    BACKGROUND_BLUE      = 0x0010
+    BACKGROUND_GREEN     = 0x0020
+    BACKGROUND_CYAN      = 0x0030
+    BACKGROUND_RED       = 0x0040
+    BACKGROUND_MAGENTA   = 0x0050
+    BACKGROUND_YELLOW    = 0x0060
+    BACKGROUND_GREY      = 0x0070
+    BACKGROUND_INTENSITY = 0x0080 # background color is intensified.
 
-	stdout_handle = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
-	SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
-	GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo
+    stdout_handle = windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)
+    SetConsoleTextAttribute = windll.kernel32.SetConsoleTextAttribute
+    GetConsoleScreenBufferInfo = windll.kernel32.GetConsoleScreenBufferInfo
 
-	def get_text_attr():
-	  """Returns the character attributes (colors) of the console screen
-	  buffer."""
-	  csbi = CONSOLE_SCREEN_BUFFER_INFO()
-	  GetConsoleScreenBufferInfo(stdout_handle, byref(csbi))
-	  return csbi.wAttributes
+    def get_text_attr():
+      """Returns the character attributes (colors) of the console screen
+      buffer."""
+      csbi = CONSOLE_SCREEN_BUFFER_INFO()
+      GetConsoleScreenBufferInfo(stdout_handle, byref(csbi))
+      return csbi.wAttributes
 
-	def set_text_attr(color):
-	  """Sets the character attributes (colors) of the console screen
-	  buffer. Color is a combination of foreground and background color,
-	  foreground and background intensity."""
-	  SetConsoleTextAttribute(stdout_handle, color)
+    def set_text_attr(color):
+      """Sets the character attributes (colors) of the console screen
+      buffer. Color is a combination of foreground and background color,
+      foreground and background intensity."""
+      SetConsoleTextAttribute(stdout_handle, color)
 ###############################################################################
 
 def find_bi_tools(work_drive):
-	"""Find BI tools."""
+    """Find BI tools."""
 
-	reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-	try:
-		k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
-		arma3tools_path = winreg.QueryValueEx(k, "path")[0]
-		winreg.CloseKey(k)
-	except:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
+    reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
+    try:
+        k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
+        arma3tools_path = winreg.QueryValueEx(k, "path")[0]
+        winreg.CloseKey(k)
+    except:
+        raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
 
-	addonbuilder_path = os.path.join(arma3tools_path, "AddonBuilder", "AddonBuilder.exe")
-	dssignfile_path = os.path.join(arma3tools_path, "DSSignFile", "DSSignFile.exe")
-	dscreatekey_path = os.path.join(arma3tools_path, "DSSignFile", "DSCreateKey.exe")
-	cfgconvert_path = os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe")
+    addonbuilder_path = os.path.join(arma3tools_path, "AddonBuilder", "AddonBuilder.exe")
+    dssignfile_path = os.path.join(arma3tools_path, "DSSignFile", "DSSignFile.exe")
+    dscreatekey_path = os.path.join(arma3tools_path, "DSSignFile", "DSCreateKey.exe")
+    cfgconvert_path = os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe")
 
-	if os.path.isfile(addonbuilder_path) and os.path.isfile(dssignfile_path) and os.path.isfile(dscreatekey_path) and os.path.isfile(cfgconvert_path):
-		return [addonbuilder_path, dssignfile_path, dscreatekey_path, cfgconvert_path]
-	else:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
+    if os.path.isfile(addonbuilder_path) and os.path.isfile(dssignfile_path) and os.path.isfile(dscreatekey_path) and os.path.isfile(cfgconvert_path):
+        return [addonbuilder_path, dssignfile_path, dscreatekey_path, cfgconvert_path]
+    else:
+        raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
 
 def find_depbo_tools(regKey):
-	"""Use registry entries to find DePBO-based tools."""
-	stop = False
+    """Use registry entries to find DePBO-based tools."""
+    stop = False
 
-	if regKey == "HKCU":
-		reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-		stop = True
-	else:
-		reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
+    if regKey == "HKCU":
+        reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
+        stop = True
+    else:
+        reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
 
-	try:
-		try:
-			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\pboProject")
-		except FileNotFoundError:
-			k = winreg.OpenKey(reg, r"Software\Mikero\pboProject")
-		try:
-			pboproject_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found pboproject.")
-		except:
-			print_error("ERROR: Could not find pboProject.")
+    try:
+        try:
+            k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\pboProject")
+        except FileNotFoundError:
+            k = winreg.OpenKey(reg, r"Software\Mikero\pboProject")
+        try:
+            pboproject_path = winreg.QueryValueEx(k, "exe")[0]
+            winreg.CloseKey(k)
+            print("Found pboproject.")
+        except:
+            print_error("ERROR: Could not find pboProject.")
 
-		try:
-			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\rapify")
-		except FileNotFoundError:
-			k = winreg.OpenKey(reg, r"Software\Mikero\rapify")
-		try:
-			rapify_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found rapify.")
-		except:
-			print_error("Could not find rapify.")
+        try:
+            k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\rapify")
+        except FileNotFoundError:
+            k = winreg.OpenKey(reg, r"Software\Mikero\rapify")
+        try:
+            rapify_path = winreg.QueryValueEx(k, "exe")[0]
+            winreg.CloseKey(k)
+            print("Found rapify.")
+        except:
+            print_error("Could not find rapify.")
 
-		try:
-			k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\MakePbo")
-		except FileNotFoundError:
-			k = winreg.OpenKey(reg, r"Software\Mikero\MakePbo")
-		try:
-			makepbo_path = winreg.QueryValueEx(k, "exe")[0]
-			winreg.CloseKey(k)
-			print("Found makepbo.")
-		except:
-			print_error("Could not find makepbo.")
-	except:
-		if stop == True:
-			raise Exception("BadDePBO", "DePBO tools not installed correctly")
-		return -1
+        try:
+            k = winreg.OpenKey(reg, r"Software\Wow6432Node\Mikero\MakePbo")
+        except FileNotFoundError:
+            k = winreg.OpenKey(reg, r"Software\Mikero\MakePbo")
+        try:
+            makepbo_path = winreg.QueryValueEx(k, "exe")[0]
+            winreg.CloseKey(k)
+            print("Found makepbo.")
+        except:
+            print_error("Could not find makepbo.")
+    except:
+        if stop == True:
+            raise Exception("BadDePBO", "DePBO tools not installed correctly")
+        return -1
 
 
-	#Strip any quotations from the path due to a MikeRo tool bug which leaves a trailing space in some of its registry paths.
-	return [pboproject_path.strip('"'),rapify_path.strip('"'),makepbo_path.strip('"')]
+    #Strip any quotations from the path due to a MikeRo tool bug which leaves a trailing space in some of its registry paths.
+    return [pboproject_path.strip('"'),rapify_path.strip('"'),makepbo_path.strip('"')]
 
 def color(color):
-	"""Set the color. Works on Win32 and normal terminals."""
-	if sys.platform == "win32":
-		if color == "green":
-			set_text_attr(FOREGROUND_GREEN | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "red":
-			set_text_attr(FOREGROUND_RED | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "blue":
-			set_text_attr(FOREGROUND_BLUE | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
-		elif color == "reset":
-			set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
-		elif color == "grey":
-			set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
-	else :
-		if color == "green":
-			sys.stdout.write('\033[92m')
-		elif color == "red":
-			sys.stdout.write('\033[91m')
-		elif color == "blue":
-			sys.stdout.write('\033[94m')
-		elif color == "reset":
-			sys.stdout.write('\033[0m')
+    """Set the color. Works on Win32 and normal terminals."""
+    if sys.platform == "win32":
+        if color == "green":
+            set_text_attr(FOREGROUND_GREEN | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
+        elif color == "yellow":
+            set_text_attr(FOREGROUND_YELLOW | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
+        elif color == "red":
+            set_text_attr(FOREGROUND_RED | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
+        elif color == "blue":
+            set_text_attr(FOREGROUND_BLUE | get_text_attr() & 0x0070 | FOREGROUND_INTENSITY)
+        elif color == "reset":
+            set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
+        elif color == "grey":
+            set_text_attr(FOREGROUND_GREY | get_text_attr() & 0x0070)
+    else :
+        if color == "green":
+            sys.stdout.write('\033[92m')
+        elif color == "red":
+            sys.stdout.write('\033[91m')
+        elif color == "blue":
+            sys.stdout.write('\033[94m')
+        elif color == "reset":
+            sys.stdout.write('\033[0m')
 
 def print_error(msg):
-	color("red")
-	print ("ERROR: " + msg)
-	color("reset")
+    color("red")
+    print ("ERROR: " + msg)
+    color("reset")
 
 def print_green(msg):
-	color("green")
-	print(msg)
-	color("reset")
+    color("green")
+    print(msg)
+    color("reset")
 
 def print_blue(msg):
-	color("blue")
-	print(msg)
-	color("reset")
+    color("blue")
+    print(msg)
+    color("reset")
 
 def print_yellow(msg):
-	color("yellow")
-	print(msg)
-	color("reset")
+    color("yellow")
+    print(msg)
+    color("reset")
 
-	
+    
 def copy_important_files(source_dir,destination_dir):
-	
-	originalDir = os.getcwd()
-	importantFiles = ["mod.cpp",
-	"README.md",
-	"AUTHORS.txt",
-	"LICENSE",
-	"logo_ace3_ca.paa"
-	]
-	
-	print_yellow ("source_dir: " + source_dir)
-	print_yellow("destination_dir: " + destination_dir)
-	
-	#copy importantFiles
-	try:
-		print_blue("\nSearching for important files in " + source_dir)
-		for file in importantFiles:
-			print_green("Copying file => " + os.path.join(source_dir,file))
-			shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file))
-	except:
-		print_error("COPYING IMPORTANT FILES.")
-		raise
-	
-	#copy all extension dlls
-	try:
-		os.chdir(os.path.join(source_dir))
-		print_blue("\nSearching for DLLs in " + os.getcwd())
-		filenames = glob.glob("*.dll")
-		
-		if not filenames:
-			print ("Empty SET")
-			
-		for dll in filenames:
-			print_green("Copying dll => " + os.path.join(source_dir,dll))
-			if os.path.isfile(dll):
-				shutil.copyfile(os.path.join(source_dir,dll),os.path.join(destination_dir,dll))
-	except:
-		print_error("COPYING DLL FILES.")
-		raise
-	finally:
-		os.chdir(originalDir)
+    
+    originalDir = os.getcwd()
+    importantFiles = ["mod.cpp",
+    "README.md",
+    "AUTHORS.txt",
+    "LICENSE",
+    "logo_ace3_ca.paa"
+    ]
+    
+    print_yellow ("source_dir: " + source_dir)
+    print_yellow("destination_dir: " + destination_dir)
+    
+    #copy importantFiles
+    try:
+        print_blue("\nSearching for important files in " + source_dir)
+        for file in importantFiles:
+            print_green("Copying file => " + os.path.join(source_dir,file))
+            shutil.copyfile(os.path.join(source_dir,file),os.path.join(destination_dir,file))
+    except:
+        print_error("COPYING IMPORTANT FILES.")
+        raise
+    
+    #copy all extension dlls
+    try:
+        os.chdir(os.path.join(source_dir))
+        print_blue("\nSearching for DLLs in " + os.getcwd())
+        filenames = glob.glob("*.dll")
+        
+        if not filenames:
+            print ("Empty SET")
+            
+        for dll in filenames:
+            print_green("Copying dll => " + os.path.join(source_dir,dll))
+            if os.path.isfile(dll):
+                shutil.copyfile(os.path.join(source_dir,dll),os.path.join(destination_dir,dll))
+    except:
+        print_error("COPYING DLL FILES.")
+        raise
+    finally:
+        os.chdir(originalDir)
 
 def copy_optionals_for_building(mod,pbos):
-	src_directories = os.listdir(optionals_root)
-	current_dir = os.getcwd()
-	
-	print("")
-	try:
-		
-		#special server.pbo processing
-		files = glob.glob(os.path.join(release_dir, "@ace","optionals","*.pbo"))
-		for file in files:
-			file_name = os.path.basename(file)
-			print ("Adding the following file: " + file_name)
-			pbos.append(file_name)
-			pbo_path = os.path.join(release_dir, "@ace","optionals",file_name)
-			if (os.path.isfile(pbo_path)):
-				print("Moving " + pbo_path + " for processing.")
-				shutil.move(pbo_path, os.path.join(release_dir,"@ace","addons",file_name))
+    src_directories = os.listdir(optionals_root)
+    current_dir = os.getcwd()
+    
+    print("")
+    try:
+        
+        #special server.pbo processing
+        files = glob.glob(os.path.join(release_dir, "@ace","optionals","*.pbo"))
+        for file in files:
+            file_name = os.path.basename(file)
+            print ("Adding the following file: " + file_name)
+            pbos.append(file_name)
+            pbo_path = os.path.join(release_dir, "@ace","optionals",file_name)
+            if (os.path.isfile(pbo_path)):
+                print("Moving " + pbo_path + " for processing.")
+                shutil.move(pbo_path, os.path.join(release_dir,"@ace","addons",file_name))
 
-	except:
-		print_error("Error in moving")
-		raise
-	finally:
-		os.chdir(current_dir)
+    except:
+        print_error("Error in moving")
+        raise
+    finally:
+        os.chdir(current_dir)
 
-	print("")
-	try:
-		for dir_name in src_directories:
-			mod.append(dir_name)
-			if (dir_name == "userconfig"):
-				destination = os.path.join(work_drive,dir_name)
-			else:
-				destination = os.path.join(module_root,dir_name)
+    print("")
+    try:
+        for dir_name in src_directories:
+            mod.append(dir_name)
+            if (dir_name == "userconfig"):
+                destination = os.path.join(work_drive,dir_name)
+            else:
+                destination = os.path.join(module_root,dir_name)
 
-			print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.")
-			shutil.rmtree(destination, True)
-			shutil.copytree(os.path.join(optionals_root,dir_name), destination)
-	except:
-		print_error("Copy Optionals Failed")
-		raise
-	finally:
-		os.chdir(current_dir)
-		
+            print("Temporarily copying " + os.path.join(optionals_root,dir_name) + " => " + destination + " for building.")
+            shutil.rmtree(destination, True)
+            shutil.copytree(os.path.join(optionals_root,dir_name), destination)
+    except:
+        print_error("Copy Optionals Failed")
+        raise
+    finally:
+        os.chdir(current_dir)
+        
 def cleanup_optionals(mod,pbos):
-	print("")
-	try:			
-		for dir_name in mod:
-			if (dir_name == "userconfig"):
-				destination = os.path.join(work_drive,dir_name)
-			else:
-				destination = os.path.join(module_root,dir_name)
-			
-			print("Cleaning " + destination)
-			
-			try:
-				file_name = "ace_{}.pbo".format(dir_name)
-				src_file_path = os.path.join(release_dir, "@ace","addons",file_name)
-				dst_file_path = os.path.join(release_dir, "@ace","optionals",file_name)
-				if (os.path.isfile(src_file_path)):
-					#print("Preserving " + file_name)
-					os.renames(src_file_path,dst_file_path)
-			except FileExistsError:
-				print_error(file_name + " already exists")
-				continue
-			shutil.rmtree(destination)
-			
-	except:
-		print_error("Cleaning Optionals Failed")
-		raise
+    print("")
+    try:            
+        for dir_name in mod:
+            if (dir_name == "userconfig"):
+                destination = os.path.join(work_drive,dir_name)
+            else:
+                destination = os.path.join(module_root,dir_name)
+            
+            print("Cleaning " + destination)
+            
+            try:
+                file_name = "ace_{}.pbo".format(dir_name)
+                src_file_path = os.path.join(release_dir, "@ace","addons",file_name)
+                dst_file_path = os.path.join(release_dir, "@ace","optionals",file_name)
+                if (os.path.isfile(src_file_path)):
+                    #print("Preserving " + file_name)
+                    os.renames(src_file_path,dst_file_path)
+            except FileExistsError:
+                print_error(file_name + " already exists")
+                continue
+            shutil.rmtree(destination)
+            
+    except:
+        print_error("Cleaning Optionals Failed")
+        raise
 ###############################################################################
 
 def main(argv):
-	"""Build an Arma addon suite in a directory from rules in a make.cfg file."""
-	print_blue(("\nmake.py for Arma, modified for Advanced Combat Environment v" + __version__))
+    """Build an Arma addon suite in a directory from rules in a make.cfg file."""
+    print_blue(("\nmake.py for Arma, modified for Advanced Combat Environment v" + __version__))
 
-	if sys.platform != "win32":
-		print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.")
-		sys.exit(1)
+    if sys.platform != "win32":
+        print_error("Non-Windows platform (Cygwin?). Please re-run from cmd.")
+        sys.exit(1)
 
-	reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
-	try:
-		k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
-		arma3tools_path = winreg.QueryValueEx(k, "path")[0]
-		winreg.CloseKey(k)
-	except:
-		raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
+    reg = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
+    try:
+        k = winreg.OpenKey(reg, r"Software\bohemia interactive\arma 3 tools")
+        arma3tools_path = winreg.QueryValueEx(k, "path")[0]
+        winreg.CloseKey(k)
+    except:
+        raise Exception("BadTools","Arma 3 Tools are not installed correctly or the P: drive needs to be created.")
 
-	# Default behaviors
-	test = False # Copy to Arma 3 directory?
-	arg_modules = False # Only build modules on command line?
-	make_release = False # Make zip file from the release?
-	release_version = 0 # Version of release
-	use_pboproject = True # Default to pboProject build tool
-	make_target = "DEFAULT" # Which section in make.cfg to use for the build
-	new_key = False # Make a new key and use it to sign?
-	quiet = False # Suppress output from build tool?
+    # Default behaviors
+    test = False # Copy to Arma 3 directory?
+    arg_modules = False # Only build modules on command line?
+    make_release = False # Make zip file from the release?
+    release_version = 0 # Version of release
+    use_pboproject = True # Default to pboProject build tool
+    make_target = "DEFAULT" # Which section in make.cfg to use for the build
+    new_key = False # Make a new key and use it to sign?
+    quiet = False # Suppress output from build tool?
 
-	# Parse arguments
-	if "help" in argv or "-h" in argv or "--help" in argv:
-		print ("""
+    # Parse arguments
+    if "help" in argv or "-h" in argv or "--help" in argv:
+        print ("""
 make.py [help] [test] [force] [key <name>] [target <name>] [release <version>]
         [module name] [module name] [...]
 
@@ -463,539 +465,539 @@ If a file called $NOBIN$ is found in the module directory, that module will not
 
 See the make.cfg file for additional build options.
 """)
-		sys.exit(0)
-
-	if "force" in argv:
-		argv.remove("force")
-		force_build = True
-	else:
-		force_build = False
-
-	if "test" in argv:
-		test = True
-		argv.remove("test")
-
-	if "release" in argv:
-		make_release = True
-		release_version = argv[argv.index("release") + 1]
-		argv.remove(release_version)
-		argv.remove("release")
-
-	if "target" in argv:
-		make_target = argv[argv.index("target") + 1]
-		argv.remove("target")
-		argv.remove(make_target)
-		force_build = True
-
-	if "key" in argv:
-		new_key = True
-		key_name = argv[argv.index("key") + 1]
-		argv.remove("key")
-		argv.remove(key_name)
-
-	if "quiet" in argv:
-		quiet = True
-		argv.remove("quiet")
-
-	if "checkexternal" in argv:
-		argv.remove("checkexternal")
-		check_external = True
-	else:
-		check_external = False
-
-	# Get the directory the make script is in.
-	make_root = os.path.dirname(os.path.realpath(__file__))
-	make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
-	os.chdir(make_root)
-
-	# Get latest commit ID
-	try:
-		gitpath = os.path.join(os.path.dirname(make_root), ".git")
-		assert os.path.exists(gitpath)
-
-		commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"])
-		commit_id = str(commit_id, "utf-8")[:8]
-	except:
-		print_error("FAILED TO DETERMINE COMMIT ID.")
-		commit_id = "NOGIT"
-
-	cfg = configparser.ConfigParser();
-	try:
-		global work_drive
-		global module_root
-		global release_dir
-		global module_root_parent
-		global optionals_root
-		
-		cfg.read(os.path.join(make_root, "make.cfg"))
-
-		# Project name (with @ symbol)
-		project = cfg.get(make_target, "project", fallback="@"+os.path.basename(os.getcwd()))
-
-		# Private key path
-		key = cfg.get(make_target, "key", fallback=None)
-
-		# Project prefix (folder path)
-		prefix = cfg.get(make_target, "prefix", fallback="")
-
-		# Should we autodetect modules on a complete build?
-		module_autodetect = cfg.getboolean(make_target, "module_autodetect", fallback=True)
-
-		# Manual list of modules to build for a complete build
-		modules = cfg.get(make_target, "modules", fallback=None)
-		# Parse it out
-		if modules:
-			modules = [x.strip() for x in modules.split(',')]
-		else:
-			modules = []
-
-		# List of directories to ignore when detecting
-		ignore = [x.strip() for x in cfg.get(make_target, "ignore",  fallback="release").split(',')]
-
-		# BI Tools work drive on Windows
-		work_drive = cfg.get(make_target, "work_drive",  fallback="P:\\")
-
-		# Which build tool should we use?
-		build_tool = cfg.get(make_target, "build_tool", fallback="addonbuilder").lower()
-
-		# Release/build directory, relative to script dir
-		release_dir = cfg.get(make_target, "release_dir", fallback="release")
-		
-		# Project PBO file prefix (files are renamed to prefix_name.pbo)
-		pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None)
-
-		# Project module Root
-		module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
-		module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
-		optionals_root = os.path.join(module_root_parent, "optionals")
-		print_green ("module_root: " + module_root)
-		
-		if (os.path.isdir(module_root)):
-			os.chdir(module_root)
-		else:
-			print_error ("Directory " + module_root + " does not exist.")
-			sys.exit()
-
-		if (os.path.isdir(optionals_root)):
-			print_green ("optionals_root: " + optionals_root)
-		else:
-			print_error ("Directory " + optionals_root + " does not exist.")
-			sys.exit()
-		
-		print_green ("release_dir: " + release_dir)
-		
-	except:
-		raise
-		print_error("Could not parse make.cfg.")
-		sys.exit(1)
-
-	# See if we have been given specific modules to build from command line.
-	if len(argv) > 1 and not make_release:
-		arg_modules = True
-		modules = argv[1:]
-
-	# Find the tools we need.
-	try:
-		tools = find_bi_tools(work_drive)
-		addonbuilder = tools[0]
-		dssignfile = tools[1]
-		dscreatekey = tools[2]
-		cfgconvert = tools[3]
-
-	except:
-		print_error("Arma 3 Tools are not installed correctly or the P: drive has not been created.")
-		sys.exit(1)
-
-	if build_tool == "pboproject":
-		try:
-			depbo_tools = find_depbo_tools("HKLM")
-			if depbo_tools == -1:
-				depbo_tools = find_depbo_tools("HKCU")
-			pboproject = depbo_tools[0]
-			rapifyTool = depbo_tools[1]
-			makepboTool = depbo_tools[2]
-		except:
-			raise
-			print_error("Could not find dePBO tools. Download the needed tools from: https://dev.withsix.com/projects/mikero-pbodll/files")
-			sys.exit(1)
-
-	# Try to open and deserialize build cache file.
-	try:
-		cache = {}
-		with open(os.path.join(make_root, "make.cache"), 'r') as f:
-			cache_raw = f.read()
-
-		cache = json.loads(cache_raw)
-
-	except:
-		print ("No cache found.")
-		cache = {}
-
-	#Temporarily copy optionals_root for building. They will be removed later. 
-	optionals_modules = []
-	optional_files = []
-	copy_optionals_for_building(optionals_modules,optional_files)
-	
-	# Get list of subdirs in make root.
-	dirs = next(os.walk(module_root))[1]
-	
-	# Autodetect what directories to build.
-	if module_autodetect and not arg_modules:
-		modules = []
-		for path in dirs:
-			# Any dir that has a config.cpp in its root is an addon to build.
-			config_path = os.path.join(path, 'config.cpp')
-			if os.path.isfile(config_path) and not path in ignore:
-				modules.append(path)
-
-	# Make the key specified from command line if necessary.
-	if new_key:
-		if not os.path.isfile(os.path.join(module_root, key_name + ".biprivatekey")):
-			print_green("\nRequested key does not exist.")
-			ret = subprocess.call([dscreatekey, key_name]) # Created in make_root
-			if ret == 0:
-				print_blue("Created: " + os.path.join(module_root, key_name + ".biprivatekey"))
-			else:
-				print_error("Failed to create key!")
-
-			try:
-				print_blue("Copying public key to release directory.")
-
-				try:
-					os.makedirs(os.path.join(module_root, release_dir, "Keys"))
-				except:
-					pass
-
-				shutil.copyfile(os.path.join(module_root, key_name + ".bikey"), os.path.join(module_root, release_dir, "Keys", key_name + ".bikey"))
-
-			except:
-				raise
-				print_error("Could not copy key to release directory.")
-
-		else:
-			print_green("\nNOTE: Using key " + os.path.join(module_root, key_name + ".biprivatekey"))
-
-		key = os.path.join(module_root, key_name + ".biprivatekey")
-
-
-	# For each module, prep files and then build.
-	for module in modules:
-		print_green("\nMaking " + module + "-"*max(1, (60-len(module))))
-		missing = False
-		
-		# Cache check
-		if module in cache:
-			old_sha = cache[module]
-		else:
-			old_sha = ""
-
-		#We always build ACE_common so we can properly show the correct version stamp in the RPT file.
-		if module == "common":
-			old_sha = ""
-
-		# Hash the module
-		new_sha = get_directory_hash(os.path.join(module_root, module))
-		
-		# Is the pbo file missing?
-		missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module)))
-		if missing:
-			print("ace_{}.pbo".format(module) + " is missing. Building...")
-
-		# Check if it needs rebuilt
-		# print ("Hash:", new_sha)
-		if old_sha == new_sha and not missing:
-			if not force_build:
-				print("Module has not changed.")
-				# Skip everything else
-				continue
-
-		# Only do this if the project isn't stored directly on the work drive.
-		# Split the path at the drive name and see if they are on the same drive (usually P:)
-		if os.path.splitdrive(module_root)[0] != os.path.splitdrive(work_drive)[0]:
-			try:
-				# Remove old work drive version (ignore errors)
-				shutil.rmtree(os.path.join(work_drive, prefix, module), True)
-
-				# Copy module to the work drive
-				shutil.copytree(module, os.path.join(work_drive, prefix, module))
-
-			except:
-				raise
-				print_error("ERROR: Could not copy module to work drive. Does the module exist?")
-				input("Press Enter to continue...")
-				print("Resuming build...")
-				continue
-		#else:
-			#print("WARNING: Module is stored on work drive (" + work_drive + ").")
-
-		try:
-			# Remove the old pbo, key, and log
-			old = os.path.join(module_root, release_dir, project, "Addons", module) + "*"
-			files = glob.glob(old)
-			for f in files:
-				os.remove(f)
-
-			if pbo_name_prefix:
-				old = os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module) + "*"
-				files = glob.glob(old)
-				for f in files:
-					os.remove(f)
-		except:
-			raise
-			print_error("ERROR: Could not copy module to work drive. Does the module exist?")
-			input("Press Enter to continue...")
-			print("Resuming build...")
-			continue
-
-		# Build the module into a pbo
-		print_blue("Building: " + os.path.join(work_drive, prefix, module))
-		print_blue("Destination: " + os.path.join(module_root, release_dir, project, "Addons"))
-
-		# Make destination folder (if needed)
-		try:
-			os.makedirs(os.path.join(module_root, release_dir, project, "Addons"))
-		except:
-			pass
-
-		# Run build tool
-		build_successful = False
-		if build_tool == "pboproject":
-			try:
-				#PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up:
-				shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup"))
-
-				os.chdir("P:\\")
-
-				cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")]
-				ret = subprocess.call(cmd)
-				if ret != 0:
-					print_error("CfgConvert -bin return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
-					os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-					shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-
-				cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")]
-				ret = subprocess.call(cmd)
-				if ret != 0:
-					print_error("CfgConvert -txt return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
-					os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-					shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-					
-
-				# Include build number
-				try:
-					configpath = os.path.join(work_drive, prefix, module, "config.cpp")
-					f = open(configpath, "r")
-					configtext = f.read()
-					f.close()
-
-					if configtext:
-						patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1)
-						patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext)
-						configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL)
-						f = open(configpath, "w")
-						f.write(configtext)
-						f.close()
-					else:
-						os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-						os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))	
-				except:
-					raise
-					print_error("Failed to include build number")
-					continue
-
-				if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
-					print_green("$NOBIN$ Found. Proceeding with non-binarizing!")
-					cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
-
-				else:
-					if check_external:
-						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
-					else:
-						cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
-
-				color("grey")
-				if quiet:
-					devnull = open(os.devnull, 'w')
-					ret = subprocess.call(cmd, stdout=devnull)
-					devnull.close()
-				else:
-					ret = subprocess.call(cmd)
-				color("reset")
-
-				if ret == 0:
-					print_green("pboProject return code == " + str(ret))
-					# Prettyprefix rename the PBO if requested.
-					if pbo_name_prefix:
-						try:
-							os.rename(os.path.join(module_root, release_dir, project, "Addons", module+".pbo"), os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
-						except:
-							raise
-							print_error("Could not rename built PBO with prefix.")
-					# Sign result
-					if key:
-						print("Signing with " + key + ".")
-						if pbo_name_prefix:
-							ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
-						else:
-							ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", module + ".pbo")])
-
-						if ret == 0:
-							build_successful = True
-					else:
-						build_successful = True
-
-				if not build_successful:
-					print_error("pboProject return code == " + str(ret))
-					print_error("Module not successfully built/signed.")
-					print ("Resuming build...")
-					continue
-
-				#PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp
-				#print_green("\Pabst (restoring): " + os.path.join(work_drive, prefix, module, "config.cpp"))
-				os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
-				os.remove(os.path.join(work_drive, prefix, module, "config.bin"))
-				os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
-
-				# Back to the root
-				os.chdir(module_root)
-
-			except:
-				raise
-				print_error("Could not run Addon Builder.")
-				input("Press Enter to continue...")
-				print ("Resuming build...")
-				continue
-
-		elif build_tool== "addonbuilder":
-			# Detect $NOBIN$ and do not binarize if found.
-			if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
-				do_binarize = False
-				print("$NOBIN$ file found in module, packing only.")
-			else:
-				do_binarize = True
-			try:
-				# Call AddonBuilder
-				os.chdir("P:\\")
-
-				cmd = [addonbuilder, os.path.join(work_drive, prefix, module), os.path.join(make_root, release_dir, project, "Addons"), "-clear", "-project="+work_drive]
-				if not do_binarize:
-					cmd.append("-packonly")
-
-				if quiet:
-					previousDirectory = os.getcwd()
-					os.chdir(arma3tools_path)
-					devnull = open(os.devnull, 'w')
-					ret = subprocess.call(cmd, stdout=devnull)
-					devnull.close()
-					os.chdir(previousDirectory)
-				else:
-					previousDirectory = os.getcwd()
-					os.chdir(arma3tools_path)
-					print_error("Current directory - " + os.getcwd())
-					ret = subprocess.call(cmd)
-					os.chdir(previousDirectory)
-					print_error("Current directory - " + os.getcwd())
-				color("reset")
-				print_green("completed")
-				# Prettyprefix rename the PBO if requested.
-				if pbo_name_prefix:
-					try:
-						os.rename(os.path.join(make_root, release_dir, project, "Addons", module+".pbo"), os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
-					except:
-						raise
-						print_error("Could not rename built PBO with prefix.")
-
-				if ret == 0:
-					# Sign result
-					if key:
-						print("Signing with " + key + ".")
-						if pbo_name_prefix:
-							ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
-						else:
-							ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", module + ".pbo")])
-
-						if ret == 0:
-							build_successful = True
-					else:
-						build_successful = True
-
-				if not build_successful:
-					print_error("Module not successfully built.")
-
-				# Back to the root
-				os.chdir(make_root)
-
-			except:
-				raise
-				print_error("Could not run Addon Builder.")
-				input("Press Enter to continue...")
-				print ("Resuming build...")
-				continue
-
-		else:
-			print_error("Unknown build_tool " + build_tool + "!")
-
-		# Update the hash for a successfully built module
-		if build_successful:
-			cache[module] = new_sha
-
-	# Done building all modules!
-
-	# Write out the cache state
-	cache_out = json.dumps(cache)
-	with open(os.path.join(make_root, "make.cache"), 'w') as f:
-		f.write(cache_out)
-
-	# Delete the pboproject temp files if building a release.
-	if make_release and build_tool == "pboproject":
-		try:
-			shutil.rmtree(os.path.join(module_root, release_dir, project, "temp"), True)
-		except:
-			print_error("ERROR: Could not delete pboProject temp files.")
-
-	print_green("\nDone.")
-
-	# Make release
-	if make_release:
-		print_blue("\nMaking release: " + project + "-" + release_version + ".zip")
-
-		try:
-			# Delete all log files
-			for root, dirs, files in os.walk(os.path.join(module_root, release_dir, project, "Addons")):
-				for currentFile in files:
-					if currentFile.lower().endswith("log"):
-						os.remove(os.path.join(root, currentFile))
-
-			# Create a zip with the contents of release/ in it
-			shutil.make_archive(project + "-" + release_version, "zip", os.path.join(module_root, release_dir))
-		except:
-			raise
-			print_error("Could not make release.")
-
-	# Copy to Arma 3 folder for testing
-	if test:
-		print_blue("\nCopying to Arma 3.")
-
-		if sys.platform == "win32":
-			reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
-			try:
-				k = winreg.OpenKey(reg, r"SOFTWARE\Wow6432Node\Bohemia Interactive\Arma 3")
-				a3_path = winreg.EnumValue(k, 1)[1]
-				winreg.CloseKey(k)
-			except:
-				print_error("Could not find Arma 3's directory in the registry.")
-		else:
-			a3_path = cygwin_a3path
-
-		if os.path.exists(a3_path):
-			try:
-				shutil.rmtree(os.path.join(a3_path, project), True)
-				shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project))
-			except:
-				print_error("Could not copy files. Is Arma 3 running?")
-
-	copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
-	cleanup_optionals(optionals_modules,optional_files)
+        sys.exit(0)
+
+    if "force" in argv:
+        argv.remove("force")
+        force_build = True
+    else:
+        force_build = False
+
+    if "test" in argv:
+        test = True
+        argv.remove("test")
+
+    if "release" in argv:
+        make_release = True
+        release_version = argv[argv.index("release") + 1]
+        argv.remove(release_version)
+        argv.remove("release")
+
+    if "target" in argv:
+        make_target = argv[argv.index("target") + 1]
+        argv.remove("target")
+        argv.remove(make_target)
+        force_build = True
+
+    if "key" in argv:
+        new_key = True
+        key_name = argv[argv.index("key") + 1]
+        argv.remove("key")
+        argv.remove(key_name)
+
+    if "quiet" in argv:
+        quiet = True
+        argv.remove("quiet")
+
+    if "checkexternal" in argv:
+        argv.remove("checkexternal")
+        check_external = True
+    else:
+        check_external = False
+
+    # Get the directory the make script is in.
+    make_root = os.path.dirname(os.path.realpath(__file__))
+    make_root_parent = os.path.abspath(os.path.join(os.getcwd(), os.pardir))
+    os.chdir(make_root)
+
+    # Get latest commit ID
+    try:
+        gitpath = os.path.join(os.path.dirname(make_root), ".git")
+        assert os.path.exists(gitpath)
+
+        commit_id = subprocess.check_output(["git", "rev-parse", "HEAD"])
+        commit_id = str(commit_id, "utf-8")[:8]
+    except:
+        print_error("FAILED TO DETERMINE COMMIT ID.")
+        commit_id = "NOGIT"
+
+    cfg = configparser.ConfigParser();
+    try:
+        global work_drive
+        global module_root
+        global release_dir
+        global module_root_parent
+        global optionals_root
+        
+        cfg.read(os.path.join(make_root, "make.cfg"))
+
+        # Project name (with @ symbol)
+        project = cfg.get(make_target, "project", fallback="@"+os.path.basename(os.getcwd()))
+
+        # Private key path
+        key = cfg.get(make_target, "key", fallback=None)
+
+        # Project prefix (folder path)
+        prefix = cfg.get(make_target, "prefix", fallback="")
+
+        # Should we autodetect modules on a complete build?
+        module_autodetect = cfg.getboolean(make_target, "module_autodetect", fallback=True)
+
+        # Manual list of modules to build for a complete build
+        modules = cfg.get(make_target, "modules", fallback=None)
+        # Parse it out
+        if modules:
+            modules = [x.strip() for x in modules.split(',')]
+        else:
+            modules = []
+
+        # List of directories to ignore when detecting
+        ignore = [x.strip() for x in cfg.get(make_target, "ignore",  fallback="release").split(',')]
+
+        # BI Tools work drive on Windows
+        work_drive = cfg.get(make_target, "work_drive",  fallback="P:\\")
+
+        # Which build tool should we use?
+        build_tool = cfg.get(make_target, "build_tool", fallback="addonbuilder").lower()
+
+        # Release/build directory, relative to script dir
+        release_dir = cfg.get(make_target, "release_dir", fallback="release")
+        
+        # Project PBO file prefix (files are renamed to prefix_name.pbo)
+        pbo_name_prefix = cfg.get(make_target, "pbo_name_prefix", fallback=None)
+
+        # Project module Root
+        module_root_parent = os.path.abspath(os.path.join(os.path.join(work_drive, prefix), os.pardir))
+        module_root = cfg.get(make_target, "module_root", fallback=os.path.join(make_root_parent, "addons"))
+        optionals_root = os.path.join(module_root_parent, "optionals")
+        print_green ("module_root: " + module_root)
+        
+        if (os.path.isdir(module_root)):
+            os.chdir(module_root)
+        else:
+            print_error ("Directory " + module_root + " does not exist.")
+            sys.exit()
+
+        if (os.path.isdir(optionals_root)):
+            print_green ("optionals_root: " + optionals_root)
+        else:
+            print_error ("Directory " + optionals_root + " does not exist.")
+            sys.exit()
+        
+        print_green ("release_dir: " + release_dir)
+        
+    except:
+        raise
+        print_error("Could not parse make.cfg.")
+        sys.exit(1)
+
+    # See if we have been given specific modules to build from command line.
+    if len(argv) > 1 and not make_release:
+        arg_modules = True
+        modules = argv[1:]
+
+    # Find the tools we need.
+    try:
+        tools = find_bi_tools(work_drive)
+        addonbuilder = tools[0]
+        dssignfile = tools[1]
+        dscreatekey = tools[2]
+        cfgconvert = tools[3]
+
+    except:
+        print_error("Arma 3 Tools are not installed correctly or the P: drive has not been created.")
+        sys.exit(1)
+
+    if build_tool == "pboproject":
+        try:
+            depbo_tools = find_depbo_tools("HKLM")
+            if depbo_tools == -1:
+                depbo_tools = find_depbo_tools("HKCU")
+            pboproject = depbo_tools[0]
+            rapifyTool = depbo_tools[1]
+            makepboTool = depbo_tools[2]
+        except:
+            raise
+            print_error("Could not find dePBO tools. Download the needed tools from: https://dev.withsix.com/projects/mikero-pbodll/files")
+            sys.exit(1)
+
+    # Try to open and deserialize build cache file.
+    try:
+        cache = {}
+        with open(os.path.join(make_root, "make.cache"), 'r') as f:
+            cache_raw = f.read()
+
+        cache = json.loads(cache_raw)
+
+    except:
+        print ("No cache found.")
+        cache = {}
+
+    #Temporarily copy optionals_root for building. They will be removed later. 
+    optionals_modules = []
+    optional_files = []
+    copy_optionals_for_building(optionals_modules,optional_files)
+    
+    # Get list of subdirs in make root.
+    dirs = next(os.walk(module_root))[1]
+    
+    # Autodetect what directories to build.
+    if module_autodetect and not arg_modules:
+        modules = []
+        for path in dirs:
+            # Any dir that has a config.cpp in its root is an addon to build.
+            config_path = os.path.join(path, 'config.cpp')
+            if os.path.isfile(config_path) and not path in ignore:
+                modules.append(path)
+
+    # Make the key specified from command line if necessary.
+    if new_key:
+        if not os.path.isfile(os.path.join(module_root, key_name + ".biprivatekey")):
+            print_green("\nRequested key does not exist.")
+            ret = subprocess.call([dscreatekey, key_name]) # Created in make_root
+            if ret == 0:
+                print_blue("Created: " + os.path.join(module_root, key_name + ".biprivatekey"))
+            else:
+                print_error("Failed to create key!")
+
+            try:
+                print_blue("Copying public key to release directory.")
+
+                try:
+                    os.makedirs(os.path.join(module_root, release_dir, "Keys"))
+                except:
+                    pass
+
+                shutil.copyfile(os.path.join(module_root, key_name + ".bikey"), os.path.join(module_root, release_dir, "Keys", key_name + ".bikey"))
+
+            except:
+                raise
+                print_error("Could not copy key to release directory.")
+
+        else:
+            print_green("\nNOTE: Using key " + os.path.join(module_root, key_name + ".biprivatekey"))
+
+        key = os.path.join(module_root, key_name + ".biprivatekey")
+
+
+    # For each module, prep files and then build.
+    for module in modules:
+        print_green("\nMaking " + module + "-"*max(1, (60-len(module))))
+        missing = False
+        
+        # Cache check
+        if module in cache:
+            old_sha = cache[module]
+        else:
+            old_sha = ""
+
+        #We always build ACE_common so we can properly show the correct version stamp in the RPT file.
+        if module == "common":
+            old_sha = ""
+
+        # Hash the module
+        new_sha = get_directory_hash(os.path.join(module_root, module))
+        
+        # Is the pbo file missing?
+        missing = not os.path.isfile(os.path.join(release_dir, project, "addons", "ace_{}.pbo".format(module)))
+        if missing:
+            print("ace_{}.pbo".format(module) + " is missing. Building...")
+
+        # Check if it needs rebuilt
+        # print ("Hash:", new_sha)
+        if old_sha == new_sha and not missing:
+            if not force_build:
+                print("Module has not changed.")
+                # Skip everything else
+                continue
+
+        # Only do this if the project isn't stored directly on the work drive.
+        # Split the path at the drive name and see if they are on the same drive (usually P:)
+        if os.path.splitdrive(module_root)[0] != os.path.splitdrive(work_drive)[0]:
+            try:
+                # Remove old work drive version (ignore errors)
+                shutil.rmtree(os.path.join(work_drive, prefix, module), True)
+
+                # Copy module to the work drive
+                shutil.copytree(module, os.path.join(work_drive, prefix, module))
+
+            except:
+                raise
+                print_error("ERROR: Could not copy module to work drive. Does the module exist?")
+                input("Press Enter to continue...")
+                print("Resuming build...")
+                continue
+        #else:
+            #print("WARNING: Module is stored on work drive (" + work_drive + ").")
+
+        try:
+            # Remove the old pbo, key, and log
+            old = os.path.join(module_root, release_dir, project, "Addons", module) + "*"
+            files = glob.glob(old)
+            for f in files:
+                os.remove(f)
+
+            if pbo_name_prefix:
+                old = os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module) + "*"
+                files = glob.glob(old)
+                for f in files:
+                    os.remove(f)
+        except:
+            raise
+            print_error("ERROR: Could not copy module to work drive. Does the module exist?")
+            input("Press Enter to continue...")
+            print("Resuming build...")
+            continue
+
+        # Build the module into a pbo
+        print_blue("Building: " + os.path.join(work_drive, prefix, module))
+        print_blue("Destination: " + os.path.join(module_root, release_dir, project, "Addons"))
+
+        # Make destination folder (if needed)
+        try:
+            os.makedirs(os.path.join(module_root, release_dir, project, "Addons"))
+        except:
+            pass
+
+        # Run build tool
+        build_successful = False
+        if build_tool == "pboproject":
+            try:
+                #PABST: Convert config (run the macro'd config.cpp through CfgConvert twice to produce a de-macro'd cpp that pboProject can read without fucking up:
+                shutil.copyfile(os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.backup"))
+
+                os.chdir("P:\\")
+
+                cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-bin", "-dst", os.path.join(work_drive, prefix, module, "config.bin"), os.path.join(work_drive, prefix, module, "config.cpp")]
+                ret = subprocess.call(cmd)
+                if ret != 0:
+                    print_error("CfgConvert -bin return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
+                    os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
+                    shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
+
+                cmd = [os.path.join(arma3tools_path, "CfgConvert", "CfgConvert.exe"), "-txt", "-dst", os.path.join(work_drive, prefix, module, "config.cpp"), os.path.join(work_drive, prefix, module, "config.bin")]
+                ret = subprocess.call(cmd)
+                if ret != 0:
+                    print_error("CfgConvert -txt return code == " + str(ret) + ". Usually means there is a syntax error within the config.cpp file.")
+                    os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
+                    shutil.copyfile(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
+                    
+
+                # Include build number
+                try:
+                    configpath = os.path.join(work_drive, prefix, module, "config.cpp")
+                    f = open(configpath, "r")
+                    configtext = f.read()
+                    f.close()
+
+                    if configtext:
+                        patchestext = re.search(r"class CfgPatches\n\{(.*?)\n\}", configtext, re.DOTALL).group(1)
+                        patchestext = re.sub(r'version(.*?)="(.*?)"', r'version\1="\2-{}"'.format(commit_id), patchestext)
+                        configtext = re.sub(r"class CfgPatches\n\{(.*?)\n\}", "class CfgPatches\n{"+patchestext+"\n}", configtext, flags=re.DOTALL)
+                        f = open(configpath, "w")
+                        f.write(configtext)
+                        f.close()
+                    else:
+                        os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
+                        os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))    
+                except:
+                    raise
+                    print_error("Failed to include build number")
+                    continue
+
+                if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
+                    print_green("$NOBIN$ Found. Proceeding with non-binarizing!")
+                    cmd = [makepboTool, "-P","-A","-L","-N","-G", os.path.join(work_drive, prefix, module),os.path.join(module_root, release_dir, project,"Addons")]
+
+                else:
+                    if check_external:
+                        cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "+X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+                    else:
+                        cmd = [pboproject, "-P", os.path.join(work_drive, prefix, module), "+Engine=Arma3", "-S","+Noisy", "-X", "+Clean", "+Mod="+os.path.join(module_root, release_dir, project), "-Key"]
+
+                color("grey")
+                if quiet:
+                    devnull = open(os.devnull, 'w')
+                    ret = subprocess.call(cmd, stdout=devnull)
+                    devnull.close()
+                else:
+                    ret = subprocess.call(cmd)
+                color("reset")
+
+                if ret == 0:
+                    print_green("pboProject return code == " + str(ret))
+                    # Prettyprefix rename the PBO if requested.
+                    if pbo_name_prefix:
+                        try:
+                            os.rename(os.path.join(module_root, release_dir, project, "Addons", module+".pbo"), os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
+                        except:
+                            raise
+                            print_error("Could not rename built PBO with prefix.")
+                    # Sign result
+                    if key:
+                        print("Signing with " + key + ".")
+                        if pbo_name_prefix:
+                            ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
+                        else:
+                            ret = subprocess.call([dssignfile, key, os.path.join(module_root, release_dir, project, "Addons", module + ".pbo")])
+
+                        if ret == 0:
+                            build_successful = True
+                    else:
+                        build_successful = True
+
+                if not build_successful:
+                    print_error("pboProject return code == " + str(ret))
+                    print_error("Module not successfully built/signed.")
+                    print ("Resuming build...")
+                    continue
+
+                #PABST: cleanup config BS (you could comment this out to see the "de-macroed" cpp
+                #print_green("\Pabst (restoring): " + os.path.join(work_drive, prefix, module, "config.cpp"))
+                os.remove(os.path.join(work_drive, prefix, module, "config.cpp"))
+                os.remove(os.path.join(work_drive, prefix, module, "config.bin"))
+                os.rename(os.path.join(work_drive, prefix, module, "config.backup"), os.path.join(work_drive, prefix, module, "config.cpp"))
+
+                # Back to the root
+                os.chdir(module_root)
+
+            except:
+                raise
+                print_error("Could not run Addon Builder.")
+                input("Press Enter to continue...")
+                print ("Resuming build...")
+                continue
+
+        elif build_tool== "addonbuilder":
+            # Detect $NOBIN$ and do not binarize if found.
+            if os.path.isfile(os.path.join(work_drive, prefix, module, "$NOBIN$")):
+                do_binarize = False
+                print("$NOBIN$ file found in module, packing only.")
+            else:
+                do_binarize = True
+            try:
+                # Call AddonBuilder
+                os.chdir("P:\\")
+
+                cmd = [addonbuilder, os.path.join(work_drive, prefix, module), os.path.join(make_root, release_dir, project, "Addons"), "-clear", "-project="+work_drive]
+                if not do_binarize:
+                    cmd.append("-packonly")
+
+                if quiet:
+                    previousDirectory = os.getcwd()
+                    os.chdir(arma3tools_path)
+                    devnull = open(os.devnull, 'w')
+                    ret = subprocess.call(cmd, stdout=devnull)
+                    devnull.close()
+                    os.chdir(previousDirectory)
+                else:
+                    previousDirectory = os.getcwd()
+                    os.chdir(arma3tools_path)
+                    print_error("Current directory - " + os.getcwd())
+                    ret = subprocess.call(cmd)
+                    os.chdir(previousDirectory)
+                    print_error("Current directory - " + os.getcwd())
+                color("reset")
+                print_green("completed")
+                # Prettyprefix rename the PBO if requested.
+                if pbo_name_prefix:
+                    try:
+                        os.rename(os.path.join(make_root, release_dir, project, "Addons", module+".pbo"), os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix+module+".pbo"))
+                    except:
+                        raise
+                        print_error("Could not rename built PBO with prefix.")
+
+                if ret == 0:
+                    # Sign result
+                    if key:
+                        print("Signing with " + key + ".")
+                        if pbo_name_prefix:
+                            ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", pbo_name_prefix + module + ".pbo")])
+                        else:
+                            ret = subprocess.call([dssignfile, key, os.path.join(make_root, release_dir, project, "Addons", module + ".pbo")])
+
+                        if ret == 0:
+                            build_successful = True
+                    else:
+                        build_successful = True
+
+                if not build_successful:
+                    print_error("Module not successfully built.")
+
+                # Back to the root
+                os.chdir(make_root)
+
+            except:
+                raise
+                print_error("Could not run Addon Builder.")
+                input("Press Enter to continue...")
+                print ("Resuming build...")
+                continue
+
+        else:
+            print_error("Unknown build_tool " + build_tool + "!")
+
+        # Update the hash for a successfully built module
+        if build_successful:
+            cache[module] = new_sha
+
+    # Done building all modules!
+
+    # Write out the cache state
+    cache_out = json.dumps(cache)
+    with open(os.path.join(make_root, "make.cache"), 'w') as f:
+        f.write(cache_out)
+
+    # Delete the pboproject temp files if building a release.
+    if make_release and build_tool == "pboproject":
+        try:
+            shutil.rmtree(os.path.join(module_root, release_dir, project, "temp"), True)
+        except:
+            print_error("ERROR: Could not delete pboProject temp files.")
+
+    print_green("\nDone.")
+
+    # Make release
+    if make_release:
+        print_blue("\nMaking release: " + project + "-" + release_version + ".zip")
+
+        try:
+            # Delete all log files
+            for root, dirs, files in os.walk(os.path.join(module_root, release_dir, project, "Addons")):
+                for currentFile in files:
+                    if currentFile.lower().endswith("log"):
+                        os.remove(os.path.join(root, currentFile))
+
+            # Create a zip with the contents of release/ in it
+            shutil.make_archive(project + "-" + release_version, "zip", os.path.join(module_root, release_dir))
+        except:
+            raise
+            print_error("Could not make release.")
+
+    # Copy to Arma 3 folder for testing
+    if test:
+        print_blue("\nCopying to Arma 3.")
+
+        if sys.platform == "win32":
+            reg = winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE)
+            try:
+                k = winreg.OpenKey(reg, r"SOFTWARE\Wow6432Node\Bohemia Interactive\Arma 3")
+                a3_path = winreg.EnumValue(k, 1)[1]
+                winreg.CloseKey(k)
+            except:
+                print_error("Could not find Arma 3's directory in the registry.")
+        else:
+            a3_path = cygwin_a3path
+
+        if os.path.exists(a3_path):
+            try:
+                shutil.rmtree(os.path.join(a3_path, project), True)
+                shutil.copytree(os.path.join(module_root, release_dir, project), os.path.join(a3_path, project))
+            except:
+                print_error("Could not copy files. Is Arma 3 running?")
+
+    copy_important_files(module_root_parent,os.path.join(release_dir, "@ace"))
+    cleanup_optionals(optionals_modules,optional_files)
 if __name__ == "__main__":
-	main(sys.argv)
+    main(sys.argv)
 input("Press Enter to continue...")

From 8a55c282e17eba4ae63957773597f3634ec335ee Mon Sep 17 00:00:00 2001
From: bux578 <github@jonathandavid.de>
Date: Tue, 21 Apr 2015 13:27:45 +0200
Subject: [PATCH 252/257] add repair module icon

---
 extras/assets/icons/Icons_Modules.psd         | Bin 2356619 -> 2326533 bytes
 .../png/Icon_Module/Icon_Module_Repair_ca.png | Bin 0 -> 1621 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 extras/assets/icons/png/Icon_Module/Icon_Module_Repair_ca.png

diff --git a/extras/assets/icons/Icons_Modules.psd b/extras/assets/icons/Icons_Modules.psd
index 9dcfa6a38b961c88def30c9f968c6a33349eb68f..968664452112dd74a054a33c3115fa92130ef8a2 100644
GIT binary patch
delta 23791
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
P-+t>5QIhgGTVDSQdR}wK

delta 46144
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

diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Repair_ca.png b/extras/assets/icons/png/Icon_Module/Icon_Module_Repair_ca.png
new file mode 100644
index 0000000000000000000000000000000000000000..381c3d1c41147cdf234cb82a7490dc2afd54a567
GIT binary patch
literal 1621
zcmbVMdrT8|96ySqghfD+38;7+5+9MaSFW$K1xv5B4Hix5pgx$K?X{fH-q9YkWiwU~
z@ih~N4}37lVkRhIu!(4hj-m0f1tGc_6lL`>aT%KiG%C)pD_FNbjDPHMcfZGdKA-R7
z_x;}XmD$UtMkGW405Daj#SHAYH1LFnvG3z#$sjw#Gino)Ls=O&?j!)Eg<4O5Iy-J7
z3<PfRmRup^01#>=jV8vVUyhn7I}Z<Fcpf{=vH?Jz;h}MJ5y61#2^;B9K#x1Whd|Pz
zfbv9ofu2?og`~FJN#vAg8_nfKW|;-bNC)K}lohZO3=Vqi#SRzhQ9u*AC_4{q^C55o
z!W1c>NvBNum7t1p5}=5emTDHjFen!DU_>Mq!;3+o02cBE>@7}(5mY2bg%a@11+mtg
z7AtDNG;eIND+N@@Ff_{NyWMV{JB>#<ZG2cJlLa({!c-QK>hd}m+>`2XB?lES!ew@n
zG(%DjFrbL9r%D+G#Ckdzf}Pgu-wHciZxY3(jPJo|KFkyF?e;)i6KEG>ApUjZooJWQ
zOA~wp;i5{NX7)U+$w4xkyZ0Lk09kL)6;6^p6ucOt%%yh1!RRmr#D3vfNDC^KsH7r^
zM5&R&Vl@K8(o9ULR;H;XG6^h{A(EiRJGnv$BE~R*S_;cxSdAzVM4Aa_YBW-fNP;K@
zL9Wi>VsM9<2-+nBb|<(h&3n11%1Pi1<up=Maj*hb7E%o5Dx_#ol_TQ8U>@nPP;OV?
zcqXI82q#%aSTs(`4o>73CEsCRgUOTv1i@gLS{jI3rWU}eG_hKPiC_d4vvE&yE&nHH
zeAXF$pg8_hEWs_d0t3^xrOz(jHV@%oJI2Yj#vl1NYyiNi(qT%Y=hpC{-mDpT+$CGq
z`R=1~BUT-ms}0}NuvcrE0}ao7x>H{I`?WKw@y!dqn%^eehiVUmf3a;xg?trOG3RNY
zI%xz-gic+nOAqbES6SV*I`^f6-g<8O@bHq+t5;vu4S5G`gEx2Wlvz`Ap4|C-)Y~E5
ze>kF`6A&$&wc_GlK)K?9#@m*_S>$^N+)rASQ`LVXx-VMWhcqU(ZZGvcOY-LqoGnfG
zd3FP*5g=lAzKn&R0kKOz(3+AS9OpIyi+sPxz?e3_Y@j}D^eoS|Cj7y@IL_`K=+WW^
z&V_-pZr;rneOBZG8`qBxZ_e)L{?rQ8`_C31hA9Q8VY+M`C!b|jHvPJ*hC91zS>M`+
zr`u0%?W%(+$5UFyr*CbD{FaRI#~pc2J`cMSwa(vhlDPgT<XFR%V;iHtw%3MrZoD=4
zLp8F$`(<vF#NXU|&XzLv=Yh}KBED<=a$Zz_gq@BW>?+)Ie{})1hxVo<I%k#5Z;Cw4
zsd;jJs<lWEGUVqhj~$*{ZO2;{?wFZ;?6=+Pw#3YmU&=T*-Z9kvx+?1l+9LBOtlgR`
zoj$U*J-wF`igT&ezBz`T_RIN?n_9;!nqv{Jv~0@QJ><h9TRKO)bm;53=R<WrcKDB5
z#xh@p@sFmPL?w4|*V5$MGu+K5S|6{et;An^;@9QVvm=#DnlI<qSI5_sB;@)W@qgcq
z81sz2s=eJaH)Z$el-Ku-FMB@jk2Xa~UwE5_6nW!ut@IUin#mMZ=o_LhesjUM@a~Dz
zpU$h?VE~rpI{wNU898;JU|M2#O)dXSJbz31(Q}&)J%6!bAFw?w|D(JRBM{rQ;d+LS
g3~vO=1~!F+0jq1GA6{&!ofr7g>(tp;OJ+gEKe@hM1ONa4

literal 0
HcmV?d00001


From 483319386001ebdfbf6fe6346b5464c178d315e5 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 15:01:23 +0200
Subject: [PATCH 253/257] Added a new solution setup menu

---
 addons/atragmx/RscTitles.hpp                  | 91 ++++++++++++++++++-
 addons/atragmx/XEH_preInit.sqf                |  3 +
 .../atragmx/functions/fnc_create_dialog.sqf   |  1 +
 .../functions/fnc_cycle_scope_unit.sqf        |  1 +
 addons/atragmx/functions/fnc_init.sqf         |  3 +
 .../functions/fnc_show_solution_setup.sqf     | 20 ++++
 .../functions/fnc_toggle_solution_setup.sqf   | 38 ++++++++
 .../functions/fnc_update_range_card.sqf       | 17 ++--
 .../atragmx/functions/fnc_update_result.sqf   | 25 +++--
 .../functions/fnc_update_solution_setup.sqf   | 31 +++++++
 .../functions/fnc_update_target_selection.sqf |  5 +-
 11 files changed, 214 insertions(+), 21 deletions(-)
 create mode 100644 addons/atragmx/functions/fnc_show_solution_setup.sqf
 create mode 100644 addons/atragmx/functions/fnc_toggle_solution_setup.sqf
 create mode 100644 addons/atragmx/functions/fnc_update_solution_setup.sqf

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 5fd3339f28..2194b2b27a 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -608,7 +608,7 @@ class ATragMX_Display {
             w=0.03;
             x=0.550*safezoneW+safezoneX+0.27;
             text="4";
-            action="";
+            action=QUOTE(call FUNC(toggle_solution_setup));
         };        
         class TEXT_CALCULATE: TEXT_SCOPE_UNIT {
             idc=3000;
@@ -1368,5 +1368,94 @@ class ATragMX_Display {
         class TEXT_TARGET_DATA_NEXT: TEXT_TARGET_SPEED_ASSIST_NEXT {
             idc=14011;
         };
+        
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=15000;
+            style=64;
+            w=0.25;
+            h=0.07;
+            x=0.550*safezoneW+safezoneX+0.13;
+            y=0.265*safezoneH+safezoneY+0.32;
+            text="Show result in";
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1: TEXT_TARGET_A {
+            idc=15001;
+            w=0.04;
+            x=0.550*safezoneW+safezoneX+0.14;
+            y=0.265*safezoneH+safezoneY+0.35;
+            text="1";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 1; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_2: TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1 {
+            idc=15002;
+            x=0.550*safezoneW+safezoneX+0.18;
+            text="2";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 2; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_3: TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1 {
+            idc=15003;
+            x=0.550*safezoneW+safezoneX+0.22;
+            text="3";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 3; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_4: TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1 {
+            idc=15004;
+            x=0.550*safezoneW+safezoneX+0.26;
+            text="4";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 4; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_8: TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1 {
+            idc=15005;
+            x=0.550*safezoneW+safezoneX+0.30;
+            text="8";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 8; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_10: TEXT_SOLUTION_SETUP_SHOW_RESULT_IN_1 {
+            idc=15006;
+            x=0.550*safezoneW+safezoneX+0.34;
+            text="10";
+            action=QUOTE(GVAR(currentScopeClickNumberTemp) = 10; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_CLICKS_PER: TEXT_GUN_AMMO_DATA_BORE_HEIGHT {
+            idc=15007;
+            style=64;
+            w=0.25;
+            h=0.07;
+            x=0.550*safezoneW+safezoneX+0.13;
+            y=0.265*safezoneH+safezoneY+0.42;
+            text="Clicks per";
+        };
+        class TEXT_SOLUTION_SETUP_CLICKS_PER_TMOA: TEXT_TARGET_A {
+            idc=15008;
+            w=0.05;
+            x=0.550*safezoneW+safezoneX+0.15;
+            y=0.265*safezoneH+safezoneY+0.45;
+            text="TMOA";
+            action=QUOTE(GVAR(currentScopeClickUnitTemp) = 0; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_CLICKS_PER_SMOA: TEXT_SOLUTION_SETUP_CLICKS_PER_TMOA {
+            idc=15009;
+            x=0.550*safezoneW+safezoneX+0.23;
+            text="SMOA";
+            action=QUOTE(GVAR(currentScopeClickUnitTemp) = 1; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_CLICKS_PER_MILS: TEXT_SOLUTION_SETUP_CLICKS_PER_TMOA {
+            idc=15010;
+            x=0.550*safezoneW+safezoneX+0.31;
+            text="MILS";
+            action=QUOTE(GVAR(currentScopeClickUnitTemp) = 2; call FUNC(update_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_DONE: TEXT_TARGET_SPEED_ASSIST_DONE {
+            idc=15011;
+            x=0.550*safezoneW+safezoneX+0.18;
+            y=0.265*safezoneH+safezoneY+0.55;
+            action=QUOTE(1 call FUNC(toggle_solution_setup));
+        };
+        class TEXT_SOLUTION_SETUP_CANCEL: TEXT_TARGET_SPEED_ASSIST_CANCEL {
+            idc=15012;
+            x=0.550*safezoneW+safezoneX+0.26;
+            y=0.265*safezoneH+safezoneY+0.55;
+            action=QUOTE(0 call FUNC(toggle_solution_setup));
+        };
     };
 };
\ No newline at end of file
diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf
index b85e325494..4718e6c31a 100644
--- a/addons/atragmx/XEH_preInit.sqf
+++ b/addons/atragmx/XEH_preInit.sqf
@@ -34,6 +34,7 @@ PREP(show_gun_list);
 PREP(show_main_page);
 PREP(show_range_card);
 PREP(show_range_card_setup);
+PREP(show_solution_setup);
 PREP(show_target_data);
 PREP(show_target_range_assist);
 PREP(show_target_speed_assist);
@@ -46,6 +47,7 @@ PREP(toggle_gun_ammo_data);
 PREP(toggle_gun_list);
 PREP(toggle_range_card);
 PREP(toggle_range_card_setup);
+PREP(toggle_solution_setup);
 PREP(toggle_target_data);
 PREP(toggle_target_range_assist);
 PREP(toggle_target_speed_assist);
@@ -59,6 +61,7 @@ PREP(update_range_card);
 PREP(update_relative_click_memory);
 PREP(update_result);
 PREP(update_scope_unit);
+PREP(update_solution_setup);
 PREP(update_target);
 PREP(update_target_data);
 PREP(update_target_selection);
diff --git a/addons/atragmx/functions/fnc_create_dialog.sqf b/addons/atragmx/functions/fnc_create_dialog.sqf
index b4d51bd894..09e413d535 100644
--- a/addons/atragmx/functions/fnc_create_dialog.sqf
+++ b/addons/atragmx/functions/fnc_create_dialog.sqf
@@ -35,6 +35,7 @@ if (GVAR(showRangeCard)) then {
     [] call FUNC(update_range_card);
 };
 GVAR(showRangeCardSetup) call FUNC(show_range_card_setup);
+GVAR(showSolutionSetup) call FUNC(show_solution_setup);
 GVAR(showTargetData)  call FUNC(show_target_data);
 GVAR(showTargetRangeAssist) call FUNC(show_target_range_assist);
 GVAR(showTargetSpeedAssist) call FUNC(show_target_speed_assist);
diff --git a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf
index 36f704bd2d..ea9e2bd8e8 100644
--- a/addons/atragmx/functions/fnc_cycle_scope_unit.sqf
+++ b/addons/atragmx/functions/fnc_cycle_scope_unit.sqf
@@ -18,6 +18,7 @@
 [] call FUNC(parse_input);
 
 GVAR(currentScopeUnit) = (GVAR(currentScopeUnit) + 1) % (count GVAR(scopeUnits));
+GVAR(workingMemory) set [6, GVAR(currentScopeUnit)];
 
 [] call FUNC(update_scope_unit);
 [] call FUNC(update_result);
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index 2e613ca9e6..16c0b7eb86 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -42,7 +42,9 @@ GVAR(currentGun) = 0;
 GVAR(currentTarget) = 0;
 GVAR(currentScopeUnit) = 0;
 GVAR(currentScopeClickUnit) = 2;
+GVAR(currentScopeClickUnitTemp) = 2;
 GVAR(currentScopeClickNumber) = 10;
+GVAR(currentScopeClickNumberTemp) = 10;
 
 GVAR(atmosphereModeTBH) = true;
 GVAR(altitude) = 0;
@@ -74,6 +76,7 @@ GVAR(showGunAmmoData) = false;
 GVAR(showGunList) = false;
 GVAR(showRangeCard) = false;
 GVAR(showRangeCardSetup) = false;
+GVAR(showSolutionSetup) = false;
 GVAR(showTargetData) = false;
 GVAR(showTargetRangeAssist) = false;
 GVAR(showTargetSpeedAssist) = false;
diff --git a/addons/atragmx/functions/fnc_show_solution_setup.sqf b/addons/atragmx/functions/fnc_show_solution_setup.sqf
new file mode 100644
index 0000000000..761df45e6f
--- /dev/null
+++ b/addons/atragmx/functions/fnc_show_solution_setup.sqf
@@ -0,0 +1,20 @@
+/*
+ * Author: Ruthberg
+ * Shows/Hides the solution setup controls
+ *
+ * Arguments:
+ * visible - <BOOL>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * false call ace_atragmx_fnc_show_solution_setup
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+GVAR(showSolutionSetup) = _this;
+
+{ctrlShow [_x, _this]} forEach [15000, 15001, 15002, 15003, 15004, 15005, 15006, 15007, 15008, 15009, 15010, 15011, 15012];
diff --git a/addons/atragmx/functions/fnc_toggle_solution_setup.sqf b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf
new file mode 100644
index 0000000000..0e9f702383
--- /dev/null
+++ b/addons/atragmx/functions/fnc_toggle_solution_setup.sqf
@@ -0,0 +1,38 @@
+/*
+ * Author: Ruthberg
+ * Toggles the solution setup screen on/off
+ *
+ * Arguments:
+ * Apply new data? <NUMBER>
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * 1 call ace_atragmx_fnc_toggle_solution_setup
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (ctrlVisible 15000) then {
+    false call FUNC(show_solution_setup);
+    true call FUNC(show_main_page);
+    
+    if (_this == 1) then {
+        GVAR(currentScopeClickUnit) = GVAR(currentScopeClickUnitTemp);
+        GVAR(currentScopeClickNumber) = GVAR(currentScopeClickNumberTemp);
+        GVAR(workingMemory) set [7, GVAR(currentScopeClickUnit)];
+        GVAR(workingMemory) set [8, GVAR(currentScopeClickNumber)];
+       [] call FUNC(update_scope_unit);
+       [] call FUNC(update_result);
+    };
+} else {
+    true call FUNC(show_solution_setup);
+    false call FUNC(show_main_page);
+    
+    GVAR(currentScopeClickUnitTemp) = GVAR(currentScopeClickUnit);
+    GVAR(currentScopeClickNumberTemp) = GVAR(currentScopeClickNumber);
+    
+    [] call FUNC(update_solution_setup);
+};
diff --git a/addons/atragmx/functions/fnc_update_range_card.sqf b/addons/atragmx/functions/fnc_update_range_card.sqf
index 0c49b6f794..7e19abc36e 100644
--- a/addons/atragmx/functions/fnc_update_range_card.sqf
+++ b/addons/atragmx/functions/fnc_update_range_card.sqf
@@ -15,7 +15,7 @@
  */
 #include "script_component.hpp"
 
-private ["_range", "_elevation", "_windage1", "_windage2", "_elevationScopeStep", "_windageScopeStep", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
+private ["_range", "_elevation", "_windage1", "_windage2", "_clickSize", "_clickNumber", "_clickInterval", "_lead", "_TOF", "_velocity", "_kineticEnergy", "_rangeOutput", "_elevationOutput", "_windageOutput", "_lastColumnOutput"];
 _lastColumnOutput = "";
 
 if (GVAR(showWind2) && GVAR(rangeCardCurrentColumn) == 0) then {
@@ -54,12 +54,17 @@ lnbClear 5007;
             _windage2 = _windage2 * 1.047;
         };
         case 3: {
-            _elevationScopeStep = (GVAR(workingMemory) select 7);
-            _windageScopeStep = (GVAR(workingMemory) select 8);
+            switch (GVAR(workingMemory) select 7) do {
+                case 0: { _clickSize = 1; };
+                case 1: { _clickSize = 1 / 1.047; };
+                case 2: { _clickSize = 3.38; };
+            };
+            _clickNumber = GVAR(workingMemory) select 8;
+            _clickInterval = _clickSize / _clickNumber;
             
-            _elevation = Round(_elevation / _elevationScopeStep);
-            _windage1 = Round(_windage1 / _windageScopeStep);
-            _windage2 = Round(_windage2 / _windageScopeStep);
+            _elevation = Round(_elevation / _clickInterval);
+            _windage1 = Round(_windage1 / _clickInterval);
+            _windage2 = Round(_windage2 / _clickInterval);
         };
     };
     
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index a86170fd45..64f121bc86 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -15,7 +15,7 @@
  */
 #include "script_component.hpp"
 
-private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_elevationScopeStep", "_windageScopeStep"];
+private ["_elevationAbs", "_elevationRel", "_elevationCur", "_windageAbs", "_wind2", "_windageRel", "_windageCur", "_lead", "_clickSize", "_clickNumber", "_clickInterval"];
 _elevationAbs = GVAR(elevationOutput) select GVAR(currentTarget);
 _windageAbs = GVAR(windage1Output) select GVAR(currentTarget);
 
@@ -55,19 +55,24 @@ switch (GVAR(currentScopeUnit)) do {
         _windageCur = _windageCur * 1.047;
     };
     case 3: {
-        _elevationScopeStep = (GVAR(workingMemory) select 7);
-        _windageScopeStep = (GVAR(workingMemory) select 8);
+        switch (GVAR(workingMemory) select 7) do {
+            case 0: { _clickSize = 1; };
+            case 1: { _clickSize = 1 / 1.047; };
+            case 2: { _clickSize = 3.38; };
+        };
+        _clickNumber = GVAR(workingMemory) select 8;
+        _clickInterval = _clickSize / _clickNumber;
         
-        _elevationAbs = Round(_elevationAbs / _elevationScopeStep);
-        _windageAbs = Round(_windageAbs / _windageScopeStep);
+        _elevationAbs = Round(_elevationAbs / _clickInterval);
+        _windageAbs = Round(_windageAbs / _clickInterval);
         
-        _wind2 = Round(_wind2 / _windageScopeStep);
+        _wind2 = Round(_wind2 / _clickInterval);
         
-        _elevationRel = Round(_elevationRel / _elevationScopeStep);
-        _windageRel = Round(_windageRel / _windageScopeStep);
+        _elevationRel = Round(_elevationRel / _clickInterval);
+        _windageRel = Round(_windageRel / _clickInterval);
         
-        _elevationCur = Round(_elevationCur / _elevationScopeStep);
-        _windageCur = Round(_windageCur / _windageScopeStep);
+        _elevationCur = Round(_elevationCur / _clickInterval);
+        _windageCur = Round(_windageCur / _clickInterval);
     };
 };
 
diff --git a/addons/atragmx/functions/fnc_update_solution_setup.sqf b/addons/atragmx/functions/fnc_update_solution_setup.sqf
new file mode 100644
index 0000000000..204a844c9d
--- /dev/null
+++ b/addons/atragmx/functions/fnc_update_solution_setup.sqf
@@ -0,0 +1,31 @@
+/*
+ * Author: Ruthberg
+ * Updates all solution setup input fields
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_fnc_update_solution_setup
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+{((uiNamespace getVariable "ATragMX_Display") displayCtrl _x) ctrlEnable true} forEach [15001, 15002, 15003, 15004, 15005, 15006, 15008, 15009, 15010];
+
+switch (GVAR(currentScopeClickNumberTemp)) do {
+    case 1:  { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15001) ctrlEnable false; };
+    case 2:  { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15002) ctrlEnable false; };
+    case 3:  { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15003) ctrlEnable false; };
+    case 4:  { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15004) ctrlEnable false; };
+    case 8:  { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15005) ctrlEnable false; };
+    case 10: { ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15006) ctrlEnable false; };
+};
+
+((uiNamespace getVariable "ATragMX_Display") displayCtrl (15008 + GVAR(currentScopeClickUnitTemp))) ctrlEnable false;
+
+ctrlSetFocus ((uiNamespace getVariable "ATragMX_Display") displayCtrl 15011);
diff --git a/addons/atragmx/functions/fnc_update_target_selection.sqf b/addons/atragmx/functions/fnc_update_target_selection.sqf
index d63f84a90c..d9fd6002c9 100644
--- a/addons/atragmx/functions/fnc_update_target_selection.sqf
+++ b/addons/atragmx/functions/fnc_update_target_selection.sqf
@@ -15,10 +15,7 @@
  */
 #include "script_component.hpp"
 
-((uiNamespace getVariable "ATragMX_Display") displayCtrl 500) ctrlEnable true;
-((uiNamespace getVariable "ATragMX_Display") displayCtrl 501) ctrlEnable true;
-((uiNamespace getVariable "ATragMX_Display") displayCtrl 502) ctrlEnable true;
-((uiNamespace getVariable "ATragMX_Display") displayCtrl 503) ctrlEnable true;
+{((uiNamespace getVariable "ATragMX_Display") displayCtrl _x) ctrlEnable true} forEach [500, 501, 502, 503];
 
 ((uiNamespace getVariable "ATragMX_Display") displayCtrl 500 + GVAR(currentTarget)) ctrlEnable false;
 

From c27f3fb1317ed8478a5aba5e207927416b020a7c Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 15:46:53 +0200
Subject: [PATCH 254/257] Added target speed direction switch / Improved the
 solution result output

---
 addons/atragmx/RscTitles.hpp                  | 10 +++
 addons/atragmx/XEH_preInit.sqf                |  1 +
 .../atragmx/functions/fnc_clear_user_data.sqf |  1 +
 .../fnc_cycle_target_speed_direction.sqf      | 22 +++++
 addons/atragmx/functions/fnc_init.sqf         |  1 +
 addons/atragmx/functions/fnc_parse_input.sqf  |  7 +-
 .../functions/fnc_restore_user_data.sqf       |  1 +
 .../functions/fnc_show_target_data.sqf        |  2 +-
 .../atragmx/functions/fnc_store_user_data.sqf |  1 +
 .../atragmx/functions/fnc_update_result.sqf   | 88 +++++++++++++++++--
 .../functions/fnc_update_target_data.sqf      |  5 ++
 11 files changed, 129 insertions(+), 10 deletions(-)
 create mode 100644 addons/atragmx/functions/fnc_cycle_target_speed_direction.sqf

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 2194b2b27a..94416aba23 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -1338,6 +1338,16 @@ class ATragMX_Display {
             idc=140050;
             y=0.265*safezoneH+safezoneY+0.480;
         };
+        class TEXT_TARGET_DATA_TARGET_SPEED_DIRECTION: ATragMX_RscButton {
+            idc=140051;
+            colorBackground[]={0.15,0.21,0.23,0.3};
+            colorFocused[]={0.15,0.21,0.23,0.2};
+            w=0.0231;
+            x=0.550*safezoneW+safezoneX+0.305;
+            y=0.265*safezoneH+safezoneY+0.480;
+            text=">";
+            action=QUOTE(call FUNC(cycle_target_speed_direction));
+        };
         class TEXT_TARGET_DATA_TARGET_RANGE: TEXT_TARGET_DATA_LATITUDE {
             idc=14006;
             y=0.265*safezoneH+safezoneY+0.520;
diff --git a/addons/atragmx/XEH_preInit.sqf b/addons/atragmx/XEH_preInit.sqf
index 4718e6c31a..6ec288b9c7 100644
--- a/addons/atragmx/XEH_preInit.sqf
+++ b/addons/atragmx/XEH_preInit.sqf
@@ -20,6 +20,7 @@ PREP(cycle_num_ticks_units);
 PREP(cycle_range_card_columns);
 PREP(cycle_scope_unit);
 PREP(cycle_target_size_units);
+PREP(cycle_target_speed_direction);
 PREP(delete_gun);
 PREP(init);
 PREP(parse_input);
diff --git a/addons/atragmx/functions/fnc_clear_user_data.sqf b/addons/atragmx/functions/fnc_clear_user_data.sqf
index f805ce66b1..308b5bbf12 100644
--- a/addons/atragmx/functions/fnc_clear_user_data.sqf
+++ b/addons/atragmx/functions/fnc_clear_user_data.sqf
@@ -36,6 +36,7 @@ profileNamespace setVariable ["ACE_ATragMX_windSpeed2", nil];
 profileNamespace setVariable ["ACE_ATragMX_windDirection", nil];
 profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", nil];
 profileNamespace setVariable ["ACE_ATragMX_targetSpeed", nil];
+profileNamespace setVariable ["ACE_ATragMX_targetSpeedDirection", nil];
 profileNamespace setVariable ["ACE_ATragMX_targetRange", nil];
 
 profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", nil];
diff --git a/addons/atragmx/functions/fnc_cycle_target_speed_direction.sqf b/addons/atragmx/functions/fnc_cycle_target_speed_direction.sqf
new file mode 100644
index 0000000000..3c77fab792
--- /dev/null
+++ b/addons/atragmx/functions/fnc_cycle_target_speed_direction.sqf
@@ -0,0 +1,22 @@
+/*
+ * Author: Ruthberg
+ * Cycles through the target directions left/right
+ *
+ * Arguments:
+ * Nothing
+ *
+ * Return Value:
+ * Nothing
+ *
+ * Example:
+ * call ace_atragmx_cycle_target_direction
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if ((ctrlText 140051) == ">") then {
+    ctrlSetText [140051, "<"];
+} else {
+    ctrlSetText [140051, ">"];
+};
diff --git a/addons/atragmx/functions/fnc_init.sqf b/addons/atragmx/functions/fnc_init.sqf
index 16c0b7eb86..e4fe1b67a4 100644
--- a/addons/atragmx/functions/fnc_init.sqf
+++ b/addons/atragmx/functions/fnc_init.sqf
@@ -59,6 +59,7 @@ GVAR(windSpeed2) = [0, 0, 0, 0];
 GVAR(windDirection) = [12, 12, 12, 12];
 GVAR(inclinationAngle) = [0, 0, 0, 0];
 GVAR(targetSpeed) = [0, 0, 0, 0];
+GVAR(targetSpeedDirection) = [1, 1, 1, 1];
 GVAR(targetRange) = [0, 0, 0, 0];
 
 GVAR(showWind2) = false;
diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index ca289302c9..25ff7d764c 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -40,7 +40,12 @@ if (_inclinationAngleDegree != GVAR(inclinationAngle) select GVAR(currentTarget)
         GVAR(inclinationAngle) set [GVAR(currentTarget), round(acos(_inclinationAngleCosine))];
     };
 };
-GVAR(targetSpeed) set [GVAR(currentTarget), -50 max abs(parseNumber(ctrlText 140050)) min 50];
+GVAR(targetSpeed) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140050)) min 50];
+if ((ctrlText 140051) == ">") then {
+    GVAR(targetSpeedDirection) set [GVAR(currentTarget), +1];
+} else {
+    GVAR(targetSpeedDirection) set [GVAR(currentTarget), -1];
+};
 GVAR(targetRange) set [GVAR(currentTarget), 0 max abs(parseNumber(ctrlText 140060)) min 4000];
 if (GVAR(currentUnit) != 2) then {
     GVAR(windSpeed1) set [GVAR(currentTarget), (GVAR(windSpeed1) select GVAR(currentTarget)) * 0.44704];
diff --git a/addons/atragmx/functions/fnc_restore_user_data.sqf b/addons/atragmx/functions/fnc_restore_user_data.sqf
index 7204f17426..896455ec7a 100644
--- a/addons/atragmx/functions/fnc_restore_user_data.sqf
+++ b/addons/atragmx/functions/fnc_restore_user_data.sqf
@@ -33,6 +33,7 @@ GVAR(windSpeed2) = profileNamespace getVariable ["ACE_ATragMX_windSpeed2", [0, 0
 GVAR(windDirection) = profileNamespace getVariable ["ACE_ATragMX_windDirection", [12, 12, 12, 12]];
 GVAR(inclinationAngle) = profileNamespace getVariable ["ACE_ATragMX_inclinationAngle", [0, 0, 0, 0]];
 GVAR(targetSpeed) = profileNamespace getVariable ["ACE_ATragMX_targetSpeed", [0, 0, 0, 0]];
+GVAR(targetSpeedDirection) = profileNamespace getVariable ["ACE_ATragMX_targetSpeedDirection", [1, 1, 1, 1]];
 GVAR(targetRange) = profileNamespace getVariable ["ACE_ATragMX_targetRange", [0, 0, 0, 0]];
 
 GVAR(rangeCardStartRange) = 0 max (profileNamespace getVariable ["ACE_ATragMX_rangeCardStartRange", 200]) min 3000;
diff --git a/addons/atragmx/functions/fnc_show_target_data.sqf b/addons/atragmx/functions/fnc_show_target_data.sqf
index 48e419f65f..f1b432edf8 100644
--- a/addons/atragmx/functions/fnc_show_target_data.sqf
+++ b/addons/atragmx/functions/fnc_show_target_data.sqf
@@ -17,7 +17,7 @@
 
 GVAR(showTargetData) = _this;
 
-{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 14006, 140060, 140061, 14007, 14008, 14009, 14010, 14011];
+{ctrlShow [_x, _this]} forEach [14000, 140000, 14001, 140010, 14002, 141020, 140020, 141021, 140021, 14003, 140030, 14004, 140040, 141040, 141041, 140041, 14005, 140050, 140051, 14006, 140060, 140061, 14007, 14008, 14009, 14010, 14011];
 
 if (_this) then {
     [] call FUNC(update_target_data);
diff --git a/addons/atragmx/functions/fnc_store_user_data.sqf b/addons/atragmx/functions/fnc_store_user_data.sqf
index 01a5810fe2..5cfe7f2ae0 100644
--- a/addons/atragmx/functions/fnc_store_user_data.sqf
+++ b/addons/atragmx/functions/fnc_store_user_data.sqf
@@ -35,6 +35,7 @@ profileNamespace setVariable ["ACE_ATragMX_windSpeed2", GVAR(windSpeed2)];
 profileNamespace setVariable ["ACE_ATragMX_windDirection", GVAR(windDirection)];
 profileNamespace setVariable ["ACE_ATragMX_inclinationAngle", GVAR(inclinationAngle)];
 profileNamespace setVariable ["ACE_ATragMX_targetSpeed", GVAR(targetSpeed)];
+profileNamespace setVariable ["ACE_ATragMX_targetSpeedDirection", GVAR(targetSpeedDirection)];
 profileNamespace setVariable ["ACE_ATragMX_targetRange", GVAR(targetRange)];
 
 profileNamespace setVariable ["ACE_ATragMX_rangeCardStartRange", GVAR(rangeCardStartRange)];
diff --git a/addons/atragmx/functions/fnc_update_result.sqf b/addons/atragmx/functions/fnc_update_result.sqf
index 64f121bc86..bb708efaab 100644
--- a/addons/atragmx/functions/fnc_update_result.sqf
+++ b/addons/atragmx/functions/fnc_update_result.sqf
@@ -82,16 +82,88 @@ if (GVAR(showWind2)) then {
     ctrlSetText [42, "Lead"];
 };
 
-ctrlSetText [400, Str(Round(_elevationAbs * 100) / 100)];
-ctrlSetText [401, Str(Round(_elevationRel * 100) / 100)];
-ctrlSetText [402, Str(Round(_elevationCur * 100) / 100)];
+_elevationAbs = Round(_elevationAbs * 100) / 100;
+if (_elevationAbs > 0) then {
+    ctrlSetText [400, format["%1", abs(_elevationAbs)]];
+} else {
+    if (_elevationAbs < 0) then {
+        ctrlSetText [400, format["%1D", abs(_elevationAbs)]];
+    } else {
+        ctrlSetText [400, "0.0"];
+    };
+};
+_elevationRel = Round(_elevationRel * 100) / 100;
+if (_elevationRel > 0) then {
+    ctrlSetText [401, format["%1", abs(_elevationRel)]];
+} else {
+    if (_elevationRel < 0) then {
+        ctrlSetText [401, format["%1D", abs(_elevationRel)]];
+    } else {
+        ctrlSetText [401, "0.0"];
+    };
+};
+_elevationCur = Round(_elevationCur * 100) / 100;
+if (_elevationCur > 0) then {
+    ctrlSetText [402, format["%1", abs(_elevationCur)]];
+} else {
+    if (_elevationCur < 0) then {
+        ctrlSetText [402, format["%1D", abs(_elevationCur)]];
+    } else {
+        ctrlSetText [402, "0.0"];
+    };
+};
 
-ctrlSetText [410, Str(Round(_windageAbs * 100) / 100)];
-ctrlSetText [411, Str(Round(_windageRel * 100) / 100)];
-ctrlSetText [412, Str(Round(_windageCur * 100) / 100)];
+_windageAbs = Round(_windageAbs * 100) / 100;
+if (_windageAbs > 0) then {
+    ctrlSetText [410, format["%1R", abs(_windageAbs)]];
+} else {
+    if (_windageAbs < 0) then {
+        ctrlSetText [410, format["%1L", abs(_windageAbs)]];
+    } else {
+        ctrlSetText [410, "0.0"];
+    };
+};
+_windageRel = Round(_windageRel * 100) / 100;
+if (_windageRel > 0) then {
+    ctrlSetText [411, format["%1R", abs(_windageRel)]];
+} else {
+    if (_windageRel < 0) then {
+        ctrlSetText [411, format["%1L", abs(_windageRel)]];
+    } else {
+        ctrlSetText [411, "0.0"];
+    };
+};
+_windageCur = Round(_windageCur * 100) / 100;
+if (_windageCur > 0) then {
+    ctrlSetText [412, format["%1R", abs(_windageCur)]];
+} else {
+    if (_windageCur < 0) then {
+        ctrlSetText [412, format["%1L", abs(_windageCur)]];
+    } else {
+        ctrlSetText [412, "0.0"];
+    };
+};
 
 if (GVAR(showWind2)) then {
-    ctrlSetText [420, Str(Round(_wind2 * 100) / 100)];
+    _wind2 = Round(_wind2 * 100) / 100;
+    if (_wind2 > 0) then {
+        ctrlSetText [420, format["%1R", abs(_wind2)]];
+    } else {
+        if (_wind2 < 0) then {
+            ctrlSetText [420, format["%1L", abs(_wind2)]];
+        } else {
+            ctrlSetText [420, "0.0"];
+        };
+    };
 } else {
-    ctrlSetText [420, Str(Round(_lead * 100) / 100)];
+    _lead = Round(_lead * 100) / 100;
+    if (_lead > 0) then {
+        if ((GVAR(targetSpeedDirection) select GVAR(currentTarget)) == 1) then {
+            ctrlSetText [420, format["%1R", abs(_lead)]];
+        } else {
+            ctrlSetText [420, format["%1L", abs(_lead)]];
+        };
+    } else {
+        ctrlSetText [420, "0.0"];
+    };
 };
\ No newline at end of file
diff --git a/addons/atragmx/functions/fnc_update_target_data.sqf b/addons/atragmx/functions/fnc_update_target_data.sqf
index b5e6dcf85a..6fa9035a62 100644
--- a/addons/atragmx/functions/fnc_update_target_data.sqf
+++ b/addons/atragmx/functions/fnc_update_target_data.sqf
@@ -32,6 +32,11 @@ if (GVAR(currentUnit) != 2) then {
 } else {
     ctrlSetText [140050, Str(Round((GVAR(targetSpeed) select GVAR(currentTarget)) * 100) / 100)];
 };
+if ((GVAR(targetSpeedDirection) select GVAR(currentTarget)) == 1) then {
+    ctrlSetText [140051, ">"];
+} else {
+    ctrlSetText [140051, "<"];
+};
 if (GVAR(currentUnit) == 1) then {
     ctrlSetText [140060, Str(Round((GVAR(targetRange) select GVAR(currentTarget)) * 1.0936133))];
 } else {

From e22a7e1aad4207e437a1a2ed1d256f1a2e4f3113 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 16:01:53 +0200
Subject: [PATCH 255/257] Improved the range card column spacing

---
 addons/atragmx/RscTitles.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/atragmx/RscTitles.hpp b/addons/atragmx/RscTitles.hpp
index 94416aba23..76f06744dc 100644
--- a/addons/atragmx/RscTitles.hpp
+++ b/addons/atragmx/RscTitles.hpp
@@ -128,7 +128,7 @@ class ATragMX_RscListBox {
 class ATragMX_RscListNBox: ATragMX_RscListBox {
     idc=-1;
     type=102;
-    columns[]={0.0, 0.225, 0.475, 0.725};
+    columns[]={0.0, 0.225, 0.475, 0.7};
     drawSideArrows=0;
     idcLeft=-1;
     idcRight=-1;

From 7c57ad25bd35cc3db939b12fe89db9f5f7eb3cb2 Mon Sep 17 00:00:00 2001
From: ulteq <ulteq@web.de>
Date: Tue, 21 Apr 2015 16:54:26 +0200
Subject: [PATCH 256/257] Fixes a recently introduced bug in the relative click
 memory

---
 addons/atragmx/functions/fnc_parse_input.sqf | 19 ++++++++++++-------
 1 file changed, 12 insertions(+), 7 deletions(-)

diff --git a/addons/atragmx/functions/fnc_parse_input.sqf b/addons/atragmx/functions/fnc_parse_input.sqf
index 25ff7d764c..504c45fb28 100644
--- a/addons/atragmx/functions/fnc_parse_input.sqf
+++ b/addons/atragmx/functions/fnc_parse_input.sqf
@@ -95,9 +95,9 @@ if ((missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])
 GVAR(workingMemory) set [1, _muzzleVelocity];
 GVAR(workingMemory) set [2, _zeroRange];
 
-private ["_elevationCur", "_windageCur", "_elevationScopeStep", "_windageScopeStep"];
-_elevationCur = parseNumber(ctrlText 402);
-_windageCur = parseNumber(ctrlText 412);
+private ["_elevationCur", "_windageCur", "_clickSize", "_clickNumber", "_clickInterval"];
+_elevationCur = GVAR(workingMemory) select 10;
+_windageCur = GVAR(workingMemory) select 11;
 
 switch (GVAR(currentScopeUnit)) do {
     case 0: {
@@ -109,11 +109,16 @@ switch (GVAR(currentScopeUnit)) do {
         _windageCur = _windageCur / 1.047;
     };
     case 3: {
-        _elevationScopeStep = (GVAR(workingMemory) select 7);
-        _windageScopeStep = (GVAR(workingMemory) select 8);
+        switch (GVAR(workingMemory) select 7) do {
+            case 0: { _clickSize = 1; };
+            case 1: { _clickSize = 1 / 1.047; };
+            case 2: { _clickSize = 3.38; };
+        };
+        _clickNumber = GVAR(workingMemory) select 8;
+        _clickInterval = _clickSize / _clickNumber;
         
-        _elevationCur = _elevationCur * _elevationScopeStep;
-        _windageCur = _windageCur * _windageScopeStep;
+        _elevationCur = Round(_elevationCur / _clickInterval);
+        _windageCur = Round(_windageCur / _clickInterval);
     };
 };
 

From f888dcdb88e458f9845ab19680e40216cacd09eb Mon Sep 17 00:00:00 2001
From: jaynus <jaynus@gmail.com>
Date: Tue, 21 Apr 2015 08:22:50 -0700
Subject: [PATCH 257/257] Carry & Drag documentation.

---
 documentation/framework/carry-drag.md | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)
 create mode 100644 documentation/framework/carry-drag.md

diff --git a/documentation/framework/carry-drag.md b/documentation/framework/carry-drag.md
new file mode 100644
index 0000000000..daaa9fb95a
--- /dev/null
+++ b/documentation/framework/carry-drag.md
@@ -0,0 +1,27 @@
+---
+layout: wiki
+title: Carry and Drag System
+group: framework
+order: 5
+parent: wiki
+---
+
+# 1. Config Values
+
+```
+class CfgVehicles {
+    class MyVehicle {
+        
+
+        ace_dragging_canDrag = 1; // can this object be dragged?; 1 yes, 0 no (0 default)
+        ace_dragging_dragPosition[] = {0,1.2,0} // Offset of the model from the body while dragging, comparable to the offset in attachTo (It's the same actually)
+        ace_dragging_dragDirection = 0;  // how much degrees is the model rotatated after dragging it (a global setDir after attachTo)
+
+        ace_dragging_canCarry = 1; // can this object be carried?; 1 yes, 0 no (0 default)
+        ace_dragging_carryPosition[] = {0,1.2,0}; // Same as drag, but for carrying objects
+        ace_dragging_carryDirection = 0; // Same as drag, but for carrying objects
+
+    };
+};
+```
+