diff --git a/AUTHORS.txt b/AUTHORS.txt
index d33f9f41c7..a6227478ed 100644
--- a/AUTHORS.txt
+++ b/AUTHORS.txt
@@ -47,7 +47,7 @@ Codingboy
 Coren <coren4@gmail.com>
 Crusty
 Dharma Bellamkonda <dharma.bellamkonda@gmail.com>
-Dimaslg <dimaslg@telecable.e>
+Dimaslg <dimaslg@telecable.es>
 eRazeri
 evromalarkey <evromalarkey@gmail.com>
 Falke75
@@ -72,6 +72,7 @@ Kllrt <kllrtik@gmail.com>
 legman <juicemelon@msn.com>
 Legolasindar "Viper" <legolasindar@gmail.com>
 licht-im-Norden87 <lichtimnorden87@gmail.com>
+Macusercom <macusercom@gmail.com>
 MarcBook
 meat <p.humberdroz@gmail.com>
 Michail Nikolaev
diff --git a/addons/advanced_ballistics/RscTitles.hpp b/addons/advanced_ballistics/RscTitles.hpp
index b62af875d2..6deaf0a058 100644
--- a/addons/advanced_ballistics/RscTitles.hpp
+++ b/addons/advanced_ballistics/RscTitles.hpp
@@ -1,17 +1,13 @@
-class RscTitles
-{
-    class RscTurretDial
-    {
+class RscTitles {
+    class RscTurretDial {
         idd=-1;
         onLoad="with uiNameSpace do { RscTurretDial = _this select 0 };";
         movingEnable=0;
         duration=5;
         fadeIn="false";
         fadeOut="false";
-        class controls
-        {
-            class RscTurretDial
-            {
+        class controls {
+            class RscTurretDial {
                 idc=132949;
                 type=0;
                 style=128;
@@ -28,18 +24,15 @@ class RscTitles
         };
     };
 
-    class RscProtractor
-    {
+    class RscProtractor {
         idd=-1;
         onLoad="with uiNameSpace do { RscProtractor = _this select 0 };";
         movingEnable=0;
         duration=60;
         fadeIn="false";
         fadeOut="false";
-        class controls
-        {
-            class RscProtractorBase
-            {
+        class controls {
+            class RscProtractorBase {
                 idc=132950;
                 type=0;
                 style=48;
@@ -54,8 +47,7 @@ class RscTitles
                 sizeEx=0.027;
                 text="";
             };
-            class RscProtractorMarker : RscProtractorBase
-            {
+            class RscProtractorMarker : RscProtractorBase {
                 idc=132951;
             };
         };
diff --git a/addons/advanced_ballistics/config.cpp b/addons/advanced_ballistics/config.cpp
index 1a2187783b..3f974b18df 100644
--- a/addons/advanced_ballistics/config.cpp
+++ b/addons/advanced_ballistics/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
         units[] = {};
         weapons[] = {};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_ballistics", "ace_weather", "ace_modules"};
+        requiredAddons[] = {"ace_ballistics", "ace_weather"};
         author[] = {"Ruthberg"};
         authorUrl = "https://github.com/ulteq";
         VERSION_CONFIG;
diff --git a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
index 5fbdf2f12a..1a4c344b2e 100644
--- a/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
+++ b/addons/advanced_ballistics/functions/fnc_displayProtractor.sqf
@@ -45,12 +45,12 @@ GVAR(Protractor) = true;
     
     1 cutRsc ["RscProtractor", "PLAIN", 1, false];
     
-    __ctrl1 ctrlSetScale 0.75;
+    __ctrl1 ctrlSetScale 1;
     __ctrl1 ctrlCommit 0;
     __ctrl1 ctrlSetText QUOTE(PATHTOF(UI\protractor.paa));
     __ctrl1 ctrlSetTextColor [1, 1, 1, 1];
     
-    __ctrl2 ctrlSetScale 0.75;
+    __ctrl2 ctrlSetScale 1;
     __ctrl2 ctrlSetPosition [(_refPosition select 0), (_refPosition select 1) - 0.0012 * _inclinationAngle, (_refPosition select 2), (_refPosition select 3)];
     __ctrl2 ctrlCommit 0;
     __ctrl2 ctrlSetText QUOTE(PATHTOF(UI\protractor_marker.paa));
diff --git a/addons/advanced_ballistics/functions/fnc_handleFired.sqf b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
index e2a0875e01..2c3488f92d 100644
--- a/addons/advanced_ballistics/functions/fnc_handleFired.sqf
+++ b/addons/advanced_ballistics/functions/fnc_handleFired.sqf
@@ -133,8 +133,8 @@ GVAR(currentbulletID) = (GVAR(currentbulletID) + 1) % 10000;
         [_this select 1] call cba_fnc_removePerFrameHandler;
     };
     
-    if (_bulletTraceVisible && _bulletSpeed > 600) then {
-        drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.6],[0,0,0,0.4]],[1,0],0,0,"","",""];
+    if (_bulletTraceVisible && _bulletSpeed > 500) then {
+        drop ["\A3\data_f\ParticleEffects\Universal\Refract","","Billboard",1,0.1,getPos _bullet,[0,0,0],0,1.275,1,0,[0.02*_caliber,0.01*_caliber],[[0,0,0,0.65],[0,0,0,0.2]],[1,0],0,0,"","",""];
     };
 
     call compile ("ace_advanced_ballistics" callExtension format["simulate:%1:%2:%3:%4:%5:%6:%7", _index, _bulletVelocity, _bulletPosition, ACE_wind, ASLToATL(_bulletPosition) select 2, floor(ACE_time), ACE_time - floor(ACE_time)]);
diff --git a/addons/advanced_ballistics/stringtable.xml b/addons/advanced_ballistics/stringtable.xml
index 5b6040527f..d9891f6287 100644
--- a/addons/advanced_ballistics/stringtable.xml
+++ b/addons/advanced_ballistics/stringtable.xml
@@ -29,116 +29,139 @@
             <English>Advanced Ballistics</English>
             <Polish>Zaawansowana balistyka</Polish>
             <Spanish>Balística avanzada</Spanish>
+            <German>Erweiterte Ballistik</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_enabled_DisplayName">
             <English>Advanced Ballistics</English>
             <Polish>Zaawansowana balistyka</Polish>
             <Spanish>Balística avanzada</Spanish>
+            <German>Erweiterte Ballistik</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_enabled_Description">
             <English>Enables advanced ballistics</English>
             <Polish>Aktywuje zaawansowaną balistykę</Polish>
             <Spanish>Activa la balística avanzada</Spanish>
+            <German>Aktiviert die erweiterte Ballistik</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForSnipers_DisplayName">
             <English>Enabled For Snipers</English>
             <Spanish>Activada para francotiradores</Spanish>
             <Polish>Akt. dla snajperów</Polish>
+            <German>Für Scharfschützen aktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForSnipers_Description">
             <English>Enables advanced ballistics for non local snipers (when using high power optics)</English>
             <Spanish>Activa la balística avanzada para francotiradores no locales (cuando se usa una mira telescópica)</Spanish>
             <Polish>Aktywuje zaawansowaną balistykę dla nielokalnych snajperów (kiedy używają optyki)</Polish>
+            <German>Aktiviert die erweiterte Ballistik für nicht lokale Scharfschützen (bei Benutzung von Optiken mit starker Vergrößerung)</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForGroupMembers_DisplayName">
             <English>Enabled For Group Members</English>
             <Spanish>Activada para miembros de grupo</Spanish>
             <Polish>Akt. dla czł. grupy</Polish>
+            <German>Für Gruppenmitglieder aktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForGroupMembers_Description">
             <English>Enables advanced ballistics for non local group members</English>
             <Spanish>Activada la balística avanzada para miembros de grupo no locales</Spanish>
             <Polish>Aktywuje zaawansowaną balistykę dla nielokalnych członków grupy</Polish>
+            <German>Aktiviert die erweiterte Ballistik für nicht lokale Gruppenmitglieder</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForEveryone_DisplayName">
             <English>Enabled For Everyone</English>
             <Spanish>Activada para todos</Spanish>
             <Polish>Akt. dla wszystkich</Polish>
+            <German>Für jeden aktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulateForEveryone_Description">
             <English>Enables advanced ballistics for all non local players (enabling this may degrade performance during heavy firefights in multiplayer)</English>
             <Spanish>Activada la balística avanzada para todos los jugadores no locales (activarlo puede degradar el rendimiento durante grandes tiroteos en multijugador).</Spanish>
             <Polish>Aktywuje zaawansowaną balistykę dla wszystkich nielokalnych graczy (aktywacja tej opcji może spodowować spory spadek wydajności podczas ciężkiej wymiany ognia)</Polish>
+            <German>Aktiviert die erweiterte Ballistik für alle nicht lokalen Spieler (das Aktivieren dieser Funktion kann zur Beeinträchtigung des Spielerlebnisses im Multiplayer führen)</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForGroupMembers_DisplayName">
             <English>Always Enabled For Group Members</English>
             <Polish>Zawsze akt. dla czł. grupy</Polish>
             <Spanish>Siempre activada para miembros de grupo</Spanish>
+            <German>Für Gruppenmitglieder immer aktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_alwaysSimulateForGroupMembers_Description">
             <English>Always enables advanced ballistics when a group member fires</English>
             <Polish>Aktywuje zaawansowaną balistykę dla wszystkich członków grupy</Polish>
             <Spanish>Activada la balística avanzada siempre cuando miembros de grupo disparan</Spanish>
+            <German>Aktiviert die erweiterte Ballistik immer, wenn ein Gruppenmitglied schießt</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_DisplayName">
             <English>Disabled In FullAuto Mode</English>
             <Polish>Wył. podczas ognia auto.</Polish>
             <Spanish>Desactivada en modo automático</Spanish>
+            <German>Beim vollautomatischen Feuern deaktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_disabledInFullAutoMod_Description">
             <English>Disables the advanced ballistics during full auto fire</English>
             <Polish>Dezaktywuje zaawansowaną balistykę podczas ognia automatycznego</Polish>
             <Spanish>Desactivada la balística avanzada durante el fuego automático</Spanish>
+            <German>Deaktiviert die erweiterte Ballistik beim vollautomatischen Feuern</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_DisplayName">
             <English>Enable Ammo Temperature Simulation</English>
             <Polish>Symulacja temp. amunicji</Polish>
             <Spanish>Activar simulación de temperatura de munición</Spanish>
+            <German>Simulation der Munitionstemperatur aktivieren</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_ammoTemperatureEnabled_Description">
             <English>Muzzle velocity varies with ammo temperature</English>
             <Polish>Prędkość wylotowa pocisku jest zależna od temperatury amunicji</Polish>
             <Spanish>La velocidad de salida varía con la temperatura de la munición</Spanish>
+            <German>Munitionstemperatur hat Einfluss auf die Mündungsgeschwindigkeit</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_DisplayName">
             <English>Enable Barrel Length Simulation</English>
             <Polish>Symulacja długości lufy</Polish>
             <Spanish>Habilitar la simulación de longitud del cañón</Spanish>
+            <German>Simulation der Lauflänge aktivieren</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_barrelLengthInfluenceEnabled_Description">
             <English>Muzzle velocity varies with barrel length</English>
             <Polish>Prędkość wylotowa pocisku jest zależna od długości lufy</Polish>
             <Spanish>La velocidad de salidal varía con la longitud del cañón</Spanish>
+            <German>Lauflänge beeinflusst Mündungsgeschwindigkeit</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_DisplayName">
             <English>Enable Bullet Trace Effect</English>
             <Polish>Efekt smugi pocisku</Polish>
             <Spanish>Activar el efecto trazador de la bala</Spanish>
+            <German>Geschossspureffekt aktivieren</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_bulletTraceEnabled_Description">
             <English>Enables a bullet trace effect to high caliber bullets (only visible when looking through high power optics)</English>
             <Polish>Aktywuje efekt smugi pocisku dla pocisków wysokokalibrowych (widoczne tylko podczas patrzenia przez optykę)</Polish>
             <Spanish>Activa el efecto trazador de la balas de gran calibre (solo visible cuando se mira a través de una mira telescópica)</Spanish>
+            <German>Aktiviere Geschossspureffekt für hohe Kaliber (bei Benutzung von Optiken mit starker Vergrößerung)</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulationInterval_DisplayName">
             <English>Simulation Interval</English>
             <Polish>Interwał symulacji</Polish>
             <Spanish>Intervalo de simulación</Spanish>
+            <German>Simulationsintervall</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulationInterval_Description">
             <English>Defines the interval between every calculation step</English>
             <Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
             <Spanish>Define el intervalo entre cada cálculo</Spanish>
+            <German>Legt das Intervall zwischen den Berechnungsschritten fest</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulationRadius_DisplayName">
             <English>Simulation Radius</English>
             <Polish>Zasięg symulacji</Polish>
             <Spanish>Radio de simulación</Spanish>
+            <German>Simulationsradius</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_simulationRadius_Description">
             <English>Defines the radius around the player (in meters) at which advanced ballistics are applied to projectiles</English>
             <Polish>Określa obszar naokoło gracza (w metrach), na którym zaawansowana balistyka jest aplikowana dla pocisków</Polish>
             <Spanish>Define el radio alrededor del jugador (en metros) en el cual se aplica la balística avanzada a los proyectiles</Spanish>
+            <German>Gibt den Radius (in Metern) um den Spieler an, bei dem die erweiterte Ballistik auf Geschosse angewendet wird</German>
         </Key>
         <Key ID="STR_ACE_AdvancedBallistics_Description">
             <English></English>
diff --git a/addons/apl/LWTS_optic.p3d b/addons/apl/LWTS_optic.p3d
new file mode 100644
index 0000000000..874bd9051f
Binary files /dev/null and b/addons/apl/LWTS_optic.p3d differ
diff --git a/addons/apl/data/default.rvmat b/addons/apl/data/default.rvmat
new file mode 100644
index 0000000000..f70da1fcf0
--- /dev/null
+++ b/addons/apl/data/default.rvmat
@@ -0,0 +1,8 @@
+ambient[]={1,1,1,1};
+diffuse[]={1,1,1,1};
+forcedDiffuse[]={0,0,0,0};
+emmisive[]={0,0,0,1};
+specular[]={0,0,0,0};
+specularPower=0;
+PixelShaderID="Normal";
+VertexShaderID="Basic";
diff --git a/addons/apl/data/optics_bg_blurred_round_ca.paa b/addons/apl/data/optics_bg_blurred_round_ca.paa
new file mode 100644
index 0000000000..b449e342c1
Binary files /dev/null and b/addons/apl/data/optics_bg_blurred_round_ca.paa differ
diff --git a/addons/apl/data/optics_bg_square_ca.paa b/addons/apl/data/optics_bg_square_ca.paa
new file mode 100644
index 0000000000..43c9d97b3c
Binary files /dev/null and b/addons/apl/data/optics_bg_square_ca.paa differ
diff --git a/addons/apl/data/twis_m16_ca.paa b/addons/apl/data/twis_m16_ca.paa
new file mode 100644
index 0000000000..784c3b791e
Binary files /dev/null and b/addons/apl/data/twis_m16_ca.paa differ
diff --git a/addons/attach/functions/fnc_attach.sqf b/addons/attach/functions/fnc_attach.sqf
index 45b1c0a336..5df939a30b 100644
--- a/addons/attach/functions/fnc_attach.sqf
+++ b/addons/attach/functions/fnc_attach.sqf
@@ -55,7 +55,7 @@ if (_unit == _attachToVehicle) then {  //Self Attachment
     [_unit, QGVAR(vehAttach), true] call EFUNC(common,setForceWalkStatus);
 
     //MenuBack isn't working for now (localize "STR_ACE_Attach_CancelAction")
-    [{[localize "STR_ACE_Attach_PlaceAction", ""] call EFUNC(interaction,showMouseHint)}, [], 0, 0] call EFUNC(common,waitAndExecute);
+    [{[localize "STR_ACE_Attach_PlaceAction", ""] call EFUNC(interaction,showMouseHint)}, []] call EFUNC(common,execNextFrame);
     _unit setVariable [QGVAR(placeActionEH), [_unit, "DefaultAction", {true}, {GVAR(placeAction) = 1;}] call EFUNC(common,AddActionEventHandler)];
     // _unit setVariable [QGVAR(cancelActionEH), [_unit, "MenuBack", {true}, {GVAR(placeAction) = 0;}] call EFUNC(common,AddActionEventHandler)];
 
diff --git a/addons/ballistics/config.cpp b/addons/ballistics/config.cpp
index 66ff7d188e..768ba63e02 100644
--- a/addons/ballistics/config.cpp
+++ b/addons/ballistics/config.cpp
@@ -6,8 +6,7 @@ class CfgPatches {
         weapons[] = {};
         requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {"ace_common"};
-        author[] = {"TaoSensai","commy2","Ruthberg"};
-        authorUrl = "https://github.com/Taosenai/tmr";
+        author[] = {"commy2","Ruthberg"};
         VERSION_CONFIG;
     };
 };
diff --git a/addons/ballistics/stringtable.xml b/addons/ballistics/stringtable.xml
index 17c3238c66..9b79b616bd 100644
--- a/addons/ballistics/stringtable.xml
+++ b/addons/ballistics/stringtable.xml
@@ -1596,6 +1596,7 @@
             <English>[ACE] Ammo Supply Crate</English>
             <Polish>[ACE] Skrzynka z amunicją</Polish>
             <Spanish>[ACE] Caja de suministros de munición</Spanish>
+            <German>[ACE] Munitionskiste</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/captives/CfgVehicles.hpp b/addons/captives/CfgVehicles.hpp
index 91c47824fd..ec142a533b 100644
--- a/addons/captives/CfgVehicles.hpp
+++ b/addons/captives/CfgVehicles.hpp
@@ -164,8 +164,6 @@ class CfgVehicles {
         displayName = "$STR_ACE_Captives_ModuleSurrender_DisplayName"; //Make Unit Surrender
         function = QUOTE(DFUNC(moduleSurrender));
         scope = 2;  //show in editor
-        scopeCurator = 2; //show in zeus
-        curatorCost = 0;  //???
         isGlobal = 1; //run global
         isTriggerActivated  = 1; //Wait for triggers
         icon = QUOTE(PATHTOF(UI\Icon_Module_Make_Unit_Surrender_ca.paa));
@@ -176,4 +174,4 @@ class CfgVehicles {
             sync[] = {"AnyAI"};
         };
     };
-};
\ No newline at end of file
+};
diff --git a/addons/captives/functions/fnc_moduleSurrender.sqf b/addons/captives/functions/fnc_moduleSurrender.sqf
index bf0e04cd6a..5b40b7663e 100644
--- a/addons/captives/functions/fnc_moduleSurrender.sqf
+++ b/addons/captives/functions/fnc_moduleSurrender.sqf
@@ -23,37 +23,13 @@ private ["_bisMouseOver", "_mouseOverObject"];
 if (!_activated) exitWith {};
 
 if (local _logic) then {
-    if ((!isnull curatorcamera) && {((count curatorMouseOver) == 2) && {(curatorMouseOver select 1) == _logic}}) then {//in zeus interface and we placed the module
-        _bisMouseOver = missionNamespace getVariable ["bis_fnc_curatorObjectPlaced_mouseOver", []];//bis caches the previous curatorMouseOver
-        if ((count _bisMouseOver) == 2) then {//check what mouse was over before the module was placed
-            _mouseOverObject = _bisMouseOver select 1;
-            if ((_mouseOverObject isKindOf "CAManBase") && {(vehicle _mouseOverObject) == _mouseOverObject}) then {
-                TRACE_2("Debug - module surrendering %1",_mouseOverObject,(name _mouseOverObject));
-                if (alive _mouseOverObject) then {
-                    if (!(_mouseOverObject getVariable [QGVAR(isSurrendering), false])) then {
-                        ["SetSurrendered", [_mouseOverObject], [_mouseOverObject, true]] call EFUNC(common,targetEvent);
-                    } else {
-                        ["SetSurrendered", [_mouseOverObject], [_mouseOverObject, false]] call EFUNC(common,targetEvent);
-                    };
-                } else {
-                    ["STR_ACE_Captives_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
-                };
-            } else {
-                ["STR_ACE_Captives_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
-            };
-        } else {
-            ["STR_ACE_Captives_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
-        };
-    } else {
-        //an editor module
-        //Modules run before postInit can instal the event handler, so we need to wait a little bit
-        [{
-            PARAMS_1(_units);
-            {
-                ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
-            } forEach _units;
-        }, [_units], 0.05, 0.05]call EFUNC(common,waitAndExecute);
-    };
+    //Modules run before postInit can instal the event handler, so we need to wait a little bit
+    [{
+        PARAMS_1(_units);
+        {
+            ["SetSurrendered", [_x], [_x, true]] call EFUNC(common,targetEvent);
+        } forEach _units;
+    }, [_units], 0.05, 0.05]call EFUNC(common,waitAndExecute);
 
     deleteVehicle _logic;
 };
diff --git a/addons/captives/stringtable.xml b/addons/captives/stringtable.xml
index 071282c5f9..4e329675d1 100644
--- a/addons/captives/stringtable.xml
+++ b/addons/captives/stringtable.xml
@@ -157,51 +157,17 @@
             <Hungarian>Megadás abbahagyása</Hungarian>
             <Italian>Smetti di arrenderti</Italian>
         </Key>
-        <Key ID="STR_ACE_Captives_Zeus_OnlyAlive">
-            <English>Only use on alive units</English>
-            <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>
-            <Polish>Używaj tylko na żywych jednostkach</Polish>
-            <Russian>Применимо только к живым юнитам</Russian>
-            <Hungarian>Csak élő egységeken használni</Hungarian>
-            <Italian>Si può fare solo su persone vive</Italian>
-            <Portuguese>Usar somente em unidades vivas</Portuguese>
-        </Key>
-        <Key ID="STR_ACE_Captives_Zeus_OnlyInfantry">
-            <English>Only use on dismounted inf</English>
-            <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>
-            <Polish>Używaj tylko na piechocie poza wszelkimi pojazdami</Polish>
-            <Russian>Применимо только к пехоте вне техники</Russian>
-            <Hungarian>Csak járműben kívül lévő egységeken használni</Hungarian>
-            <Italian>Si può usare solo su fanteria a piedi</Italian>
-            <Portuguese>Usar somente em infantaria desmontada</Portuguese>
-        </Key>
-        <Key ID="STR_ACE_Captives_Zeus_NothingSelected">
-            <English>Nothing under mouse</English>
-            <French>Rien sous le curseur</French>
-            <German>Es wurde nichts ausgewählt</German>
-            <Spanish>Nada bajo el ratón</Spanish>
-            <Portuguese>Nada debaixo do mouse</Portuguese>
-            <Czech>Nic není vybráno</Czech>
-            <Polish>Nie ma nic pod kursorem</Polish>
-            <Russian>Ничего не выделено</Russian>
-            <Hungarian>Semmi sincs az egér alatt</Hungarian>
-            <Italian>Nessuna selezione</Italian>
-        </Key>
         <Key ID="STR_ACE_Captives_ModuleSurrender_DisplayName">
             <English>Make Unit Surrender</English>
             <Polish>Poddaj się!</Polish>
             <Spanish>Hacer que la unidad se rinda</Spanish>
+            <German>Einheit kapitulieren lassen</German>
         </Key>
         <Key ID="STR_ACE_Captives_ModuleSurrender_Description">
             <English>Sync a unit to make them surrender.&lt;br /&gt;Source: ace_captives</English>
             <Polish>Zsynchronizuj z jednostką aby sprawić by się poddała&lt;br /&gt;Źródło: ace_captives</Polish>
             <Spanish>Sincroniza una unidad para hacer que se rinda.&lt;br /&gt;Fuente: ace_captives</Spanish>
+            <German>Einheit synchronisieren, um sie kapitulieren zu lassen.&lt;br /&gt;Quelle: ace_captives</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/common/CfgVehicles.hpp b/addons/common/CfgVehicles.hpp
index 1adf622494..87d131934b 100644
--- a/addons/common/CfgVehicles.hpp
+++ b/addons/common/CfgVehicles.hpp
@@ -24,12 +24,12 @@ class CfgVehicles {
 
   // += needs a non inherited entry in that class, otherwise it simply overwrites
   //#include <DefaultItems.hpp>
-
-   class Logic;
-   class Module_F: Logic {
-     class ModuleDescription {};
-   };
-   class ACE_ModuleCheckPBOs: Module_F {
+    class Logic;
+    class Module_F: Logic {
+        class ModuleDescription;
+    };
+    class ACE_Module: Module_F {};
+   class ACE_ModuleCheckPBOs: ACE_Module {
     author = "$STR_ACE_Common_ACETeam";
     category = "ACE";
     displayName = "$STR_ACE_Common_CheckPBO_DisplayName";
@@ -77,7 +77,7 @@ class CfgVehicles {
     };
   };
 
-  class ACE_ModuleLSDVehicles: Module_F {
+  class ACE_ModuleLSDVehicles: ACE_Module {
     author = "$STR_ACE_Common_ACETeam";
     category = "ACE";
     displayName = "$STR_ACE_Common_LSDVehicles_DisplayName";
diff --git a/addons/common/XEH_postInit.sqf b/addons/common/XEH_postInit.sqf
index b91d9b9a39..643d4cb9d3 100644
--- a/addons/common/XEH_postInit.sqf
+++ b/addons/common/XEH_postInit.sqf
@@ -269,6 +269,9 @@ GVAR(commonPostInited) = true;
 
     diag_log text format["[ACE] Settings received from server"];
 
+    // Event so that ACE_Modules have their settings loaded:
+    ["InitSettingsFromModules", []] call FUNC(localEvent);
+
     // Load user settings from profile
     if (hasInterface) then {
         call FUNC(loadSettingsFromProfile);
diff --git a/addons/common/config.cpp b/addons/common/config.cpp
index 3f1e5a6308..dd13d10ec0 100644
--- a/addons/common/config.cpp
+++ b/addons/common/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
         units[] = {"ACE_Box_Misc", "ACE_bananaItem"};
         weapons[] = {"ACE_ItemCore","ACE_FakePrimaryWeapon", "ACE_Banana"};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_main"};
+        requiredAddons[] = {"ace_main","ace_modules"};
         author[] = {"KoffeinFlummi"};
         authorUrl = "https://github.com/KoffeinFlummi/";
         VERSION_CONFIG;
diff --git a/addons/common/stringtable.xml b/addons/common/stringtable.xml
index 67d0b932f7..c773c1f4a2 100644
--- a/addons/common/stringtable.xml
+++ b/addons/common/stringtable.xml
@@ -39,7 +39,7 @@
         </Key>
         <Key ID="STR_ACE_Common_Options">
             <English>ACE Options</English>
-            <German>ACE Optionen</German>
+            <German>ACE-Optionen</German>
             <Spanish>Opciones ACE</Spanish>
             <Polish>Ustawienia ACE</Polish>
             <Czech>Nastavení ACE</Czech>
@@ -474,66 +474,79 @@
             <English>Check PBOs</English>
             <Polish>Sprawdzaj PBO</Polish>
             <Spanish>Comprobar PBOs</Spanish>
+            <German>Überprüfe PBOs</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Description">
             <English></English>
             <Polish>Sprawdzaj spójność addonów z serwerem</Polish>
             <Spanish>Este módulo verifica la integridad de los addons con los que iniciamos el simulador</Spanish>
+            <German>Dieses Modul überprüft ob jeder Spieler die richtigen PBO-Dateien hat.</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Action_DisplayName">
             <English>Action</English>
             <Polish>Akcja</Polish>
             <Spanish>Acción</Spanish>
+            <German>Aktion</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Action_Description">
             <English>What to do with people who do not have the right PBOs?</English>
             <Polish>Co zrobić z graczami, którzy nie mają właściwych PBO?</Polish>
             <Spanish>¿Qué hacer con la gente que no tiene correctamente los PBOs?</Spanish>
+            <German>Was soll mit Leuten passieren, die nicht die richtigen PBOs haben?</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Action_WarnOnce">
             <English>Warn once</English>
             <Polish>Ostrzeż raz</Polish>
             <Spanish>Avisar una vez</Spanish>
+            <German>Einmal verwarnen</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Action_WarnPerm">
             <English>Warn (permanent)</English>
             <Polish>Ostrzeżenie (permanentne)</Polish>
             <Spanish>Avisar (permanente)</Spanish>
+            <German>Immer verwarnen</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Action_Kick">
             <English>Kick</English>
             <Polish>Kick</Polish>
             <Spanish>Expulsar</Spanish>
+            <German>Kicken</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_CheckAll_DisplayName">
             <English>Check all addons</English>
             <Polish>Sprawdź wsz. addony</Polish>
             <Spanish>Comprobar todos los addons</Spanish>
+            <German>Alle Addons überprüfen</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_CheckAll_Description">
             <English>Check all addons instead of only those of ACE?</English>
             <Polish>Sprawdzaj wszystkie addony czy tylko te z ACE?</Polish>
             <Spanish>Comprobar todos los addons en vez de solo los del ACE</Spanish>
+            <German>Alle Addons anstatt nur ACE überprüfen?</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Whitelist_DisplayName">
             <English>Whitelist</English>
             <Polish>Biała lista</Polish>
             <Spanish>Lista blanca</Spanish>
+            <German>Whitelist</German>
         </Key>
         <Key ID="STR_ACE_Common_CheckPBO_Whitelist_Description">
             <English>What addons are allowed regardless?</English>
             <Polish>Jakie addony są dozwolone?</Polish>
             <Spanish>Qué addons están permitidos igualmente</Spanish>
+            <German>Welche Addons werden dennoch erlaubt?</German>
         </Key>
         <Key ID="STR_ACE_Common_LSDVehicles_DisplayName">
             <English>LSD Vehicles</English>
             <Polish>Pojazdy LSD</Polish>
             <Spanish>Vehículos LSD</Spanish>
+            <German>LSD-Fahrzeuge</German>
         </Key>
         <Key ID="STR_ACE_Common_LSDVehicles_Description">
             <English>Adds LSD effect to synchronized vehicle</English>
             <Polish>Dodaje efekt LSD pod zsynchronizowany pojazd</Polish>
             <Spanish>Añade el efecto LSD al vehículo sincronizado</Spanish>
+            <German>Fügt einen LSD-Effekt zum synchronisierten Fahrzeug hinzu</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/disarming/functions/fnc_disarmDropItems.sqf b/addons/disarming/functions/fnc_disarmDropItems.sqf
index e19a01df1b..5422fd00a6 100644
--- a/addons/disarming/functions/fnc_disarmDropItems.sqf
+++ b/addons/disarming/functions/fnc_disarmDropItems.sqf
@@ -68,7 +68,7 @@ if (isNull _holder) exitWith {
 if (_holder getVariable [QGVAR(holderInUse), false]) exitWith {
     [{
         _this call FUNC(disarmDropItems);
-    }, _this, 0, 0] call EFUNC(common,waitAndExecute);
+    }, _this] call EFUNC(common,execNextFrame);
 };
 _holder setVariable [QGVAR(holderInUse), true];
 
diff --git a/addons/dragging/functions/fnc_startCarry.sqf b/addons/dragging/functions/fnc_startCarry.sqf
index f5d543c959..ad0af86359 100644
--- a/addons/dragging/functions/fnc_startCarry.sqf
+++ b/addons/dragging/functions/fnc_startCarry.sqf
@@ -41,7 +41,7 @@ if (_target isKindOf "CAManBase") then {
 
     // move a bit closer and adjust direction when trying to pick up a person
     _target setDir (getDir _unit + 180);
-    _target setPos (getPos _unit vectorAdd vectorDir _unit);
+    _target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit));
 
     [_unit, "AcinPknlMstpSnonWnonDnon_AcinPercMrunSnonWnonDnon", 2, true] call EFUNC(common,doAnimation);
     [_target, "AinjPfalMstpSnonWrflDnon_carried_Up", 2, true] call EFUNC(common,doAnimation);
diff --git a/addons/dragging/functions/fnc_startDrag.sqf b/addons/dragging/functions/fnc_startDrag.sqf
index 6ce3b73a5f..9d9570be14 100644
--- a/addons/dragging/functions/fnc_startDrag.sqf
+++ b/addons/dragging/functions/fnc_startDrag.sqf
@@ -43,7 +43,7 @@ _unit selectWeapon primaryWeapon _unit;
 // move a bit closer and adjust direction when trying to pick up a person
 if (_target isKindOf "CAManBase") then {
     _target setDir (getDir _unit + 180);
-    _target setPos (getPos _unit vectorAdd (vectorDir _unit vectorMultiply 1.5));
+    _target setPosASL (getPosASL _unit vectorAdd (vectorDir _unit vectorMultiply 1.5));
 
     [_target, "AinjPpneMrunSnonWnonDb_grab", 2, true] call EFUNC(common,doAnimation);
 };
diff --git a/addons/explosives/CfgModule.hpp b/addons/explosives/CfgModule.hpp
index 52f70ea3af..2bb8e18f96 100644
--- a/addons/explosives/CfgModule.hpp
+++ b/addons/explosives/CfgModule.hpp
@@ -1,8 +1,5 @@
-class Logic;
-class Module_F: Logic {
-    class ModuleDescription {};
-};
-class ACE_ModuleExplosive: Module_F {
+class ACE_Module;
+class ACE_ModuleExplosive: ACE_Module {
     author = "$STR_ACE_Common_ACETeam";
     category = "ACE";
     displayName = "$STR_ACE_Explosive_Module_DisplayName";
@@ -24,7 +21,7 @@ class ACE_ModuleExplosive: Module_F {
             defaultValue = 1;
         };
     };
-    class ModuleDescription: ModuleDescription {
+    class ModuleDescription {
         description = "$STR_ACE_Explosive_Module_Description";
     };
 };
\ No newline at end of file
diff --git a/addons/explosives/stringtable.xml b/addons/explosives/stringtable.xml
index f80a0e784c..0d583d70eb 100644
--- a/addons/explosives/stringtable.xml
+++ b/addons/explosives/stringtable.xml
@@ -509,30 +509,36 @@
             <English>Explosive System</English>
             <Polish>System ładunków wybuchowych</Polish>
             <Spanish>Sistema de explosivos</Spanish>
+            <German>Sprengstoffsystem</German>
         </Key>
         <Key ID="STR_ACE_Explosive_RequireSpecialist_DisplayName">
             <English>Require specialists?</English>
             <Polish>Wymagaj specjalistów?</Polish>
             <Spanish>¿Requiere especialista?</Spanish>
+            <German>Benötigt Sprengstoffexperten?</German>
         </Key>
         <Key ID="STR_ACE_Explosive_RequireSpecialist_Description">
             <English>Require explosive specialists to disable explosives? Default: No</English>
             <Polish>Wymagać saperów do rozbrajania ładunków wybuchowych? Domyślnie: Nie</Polish>
             <Spanish>Requiere especialista en explosivos para desactivar explosivos?. Por defecto: No</Spanish>
+            <German>Benötige Sprengstoffexperte um Sprengladungen zu entschärfen? Standard: Nein</German>
         </Key>
         <Key ID="STR_ACE_Explosive_PunishNonSpecialists_DisplayName">
             <English>Punish non-specialists?</English>
             <Polish>Karaj nie-specjalistów?</Polish>
             <Spanish>¿Penalizar a los no especialistas?</Spanish>
+            <German>Bestrafe Nicht-Sprengstoffexperten?</German>
         </Key>
         <Key ID="STR_ACE_Explosive_PunishNonSpecialists_Description">
             <English>Increase the time it takes to complete actions for non-specialists? Default: Yes</English>
             <Polish>Zwiększyć ilość wymaganego czasu do ukończenia akcji dla nie-specjalistów? Domyślnie: Tak</Polish>
             <Spanish>Aumenta el tiempo que lleva completar acciones para los no especialstas?. Por defecto: Si</Spanish>
+            <German>Entschärfungszeit für Nicht-Sprengstoffexperten erhöhen? Standard: Ja</German>
         </Key>
         <Key ID="STR_ACE_Explosive_Module_Description">
             <English></English>
             <Polish>Moduł ten pozwala dostosować opcje związane z ładunkami wybuchowymi, ich podkładaniem oraz rozbrajaniem.</Polish>
+            <German>Dieses Modul erlaubt die Einstellungen für Sprengstoffe zu verändern.</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/fcs/stringtable.xml b/addons/fcs/stringtable.xml
index d62a5d85ea..77d683fc98 100644
--- a/addons/fcs/stringtable.xml
+++ b/addons/fcs/stringtable.xml
@@ -3,7 +3,7 @@
     <Package name="FCS">
         <Key ID="STR_ACE_FCS_LaseTarget">
             <English>Lase Target / Measure Distance</English>
-            <German>Ziel anlasern / Entfernung Messen</German>
+            <German>Ziel anlasern / Entfernung messen</German>
             <French>Télémétrer la cible</French>
             <Polish>Naświetl cel / Zmierz odległość</Polish>
             <Czech>Označit cíl / Změřit vzdálenost</Czech>
@@ -74,4 +74,4 @@
             <Russian>СУО обнулен.</Russian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/frag/stringtable.xml b/addons/frag/stringtable.xml
index 0956c75066..032c8d53e9 100644
--- a/addons/frag/stringtable.xml
+++ b/addons/frag/stringtable.xml
@@ -5,40 +5,48 @@
             <English>Fragmentation Simulation</English>
             <Polish>Symulacja fragmentacji</Polish>
             <Spanish>Simulación de fragmentación</Spanish>
+            <German>Splittersimulation</German>
         </Key>
         <Key ID="STR_ACE_frag_EnableFrag_Desc">
             <English>Enable the ACE Fragmentation Simulation</English>
             <Spanish>Activa la simulación de fragmentación ACE</Spanish>
             <Polish>Aktywuje symulację fragmentacji ACE</Polish>
+            <German>Aktiviere die ACE-Splittersimulation</German>
         </Key>
         <Key ID="STR_ACE_frag_EnableSpall">
             <English>Spalling Simulation</English>
             <Spanish>Simulación de astillamiento</Spanish>
             <Polish>Symulacja odprysków</Polish>
+            <German>Explosionssimulation</German>
         </Key>
         <Key ID="STR_ACE_frag_EnableSpall_Desc">
             <English>Enable the ACE Spalling Simulation</English>
             <Spanish>Activa la simulación de astillamiento ACE</Spanish>
             <Polish>Aktywuje symulację odprysków ACE</Polish>
+            <German>Aktiviere ACE-Explosionssimulation</German>
         </Key>
         <Key ID="STR_ACE_frag_MaxTrack">
             <English>Maximum Projectiles Tracked</English>
             <Spanish>Máximos proyectiles rastreados</Spanish>
             <Polish>Maks. liczba śledzonych pocisków</Polish>
+            <German>Maximalzahl der verfolgten Projektile</German>
         </Key>
         <Key ID="STR_ACE_frag_MaxTrack_Desc">
             <English>This setting controls the maximum amount of projectiles the fragmentation and spalling system will track at any given time. If more projectiles are fired, they will not be tracked. Lower this setting if you do not want FPS drops at high-count projectile scenarios ( &gt;200 rounds in the air at once)</English>
             <Spanish>Este ajuste controla la cantidad máxima de proyectiles del sistema de fragmentación y astillamiento de los que se hará un seguimiento en cualquier momento dado. Si se disparan más proyectiles, no serán rastreados. Baja esta opción si no deseas una bajada de FPS en escenarios con muchos proyectiles (&gt;200 proyectiles en el aire a la vez)</Spanish>
             <Polish>To ustawienie kontroluje maksymalną ilość pocisków, jakie fragmentacja i odpryski symulują w danym momencie. Jeżeli więcej pocisków będzie wystrzelonych, wtedy nie będą one śledzone. Zmniejsz tą opcję jeżeli nie chcesz odczuwać spadków FPS podczas ciężkiej wymiany ognia (więcej niż 200 pocisków w powietrzu na raz).</Polish>
+            <German>Diese Einstellung steuert die maximale Anzahl an Projektilen, die das Splitter- und Explosionssystem gleichzeitig verfolgen wird. Wenn mehr Projektile abgefeuert werden, werden sie nicht verfolgt werden. Diese Einstellung zu verringern, kann FPS-Einbrüche bei Szenarien mit vielen Projektilen verhindern (&gt;200 Objekte gleichzeitig in der Luft)</German>
         </Key>
         <Key ID="STR_ACE_frag_MaxTrackPerFrame">
             <English>Maximum Projectiles Per Frame</English>
             <Spanish>Máximos proyectiles por cuadro</Spanish>
+            <German>Maximale Anzahl an Projektilen pro Frame</German>
             <Polish>Maks. liczba pocisków na klatkę</Polish>
         </Key>
         <Key ID="STR_ACE_frag_MaxTrackPerFrame_Desc">
             <English>The number of spall track calculations to perform in any given frame. This helps spread the FPS impact of tracking spall rounds across multiple frames, limiting its impact even further.</English>
             <Polish>Ilość obliczeń wykonywanych przez symulację odprysków w danej klatce. Ta opcja pomaga rozprzestrzenić obliczenia odprysków na więcej klatek, zmniejszając spadek FPS jeszcze bardziej.</Polish>
+            <German>Gibt die Anzahl der Explosionverfolgungsberechnungen an, die gleichzeitig ausgeführt werden. Das kann dabei helfen den FPS-Einfluss abzuschwächen, wenn Teile über mehrere Frames hinweg verfolgt werden.</German>
         </Key>
         <Key ID="STR_ACE_frag_EnableDebugTrace">
             <English>(SP Only) Frag/Spall Debug Tracing</English>
@@ -49,6 +57,7 @@
             <English>(SP Only) Requires a mission/editor restart. Enables visual tracing of fragmentation and spalling rounds in SP game mode only.</English>
             <Spanish>(Solo SP) Requiere un reinicio misión/editor. Permite el seguimiento visual de la fragmentación y astillamientos de los proyectiles en modo SP.</Spanish>
             <Polish>(Tylko SP) Wymaga restartu misji/edytora. Aktywuje wizualne śledzenie odłamków oraz odprysków w trybie gry Single Player.</Polish>
+            <German>(nur SP) Splitter-/Explosions-Debugging</German>
         </Key>
     </Package>
 </Project>
diff --git a/addons/hearing/CfgVehicles.hpp b/addons/hearing/CfgVehicles.hpp
index 16bb47014a..eaa765d814 100644
--- a/addons/hearing/CfgVehicles.hpp
+++ b/addons/hearing/CfgVehicles.hpp
@@ -94,8 +94,8 @@ class CfgVehicles {
     };
 
 
-    class Module_F;
-    class ACE_ModuleHearing: Module_F {
+    class ACE_Module;
+    class ACE_ModuleHearing: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_Hearing_Module_DisplayName";
diff --git a/addons/hearing/stringtable.xml b/addons/hearing/stringtable.xml
index a5a36ac77e..c7e852bc06 100644
--- a/addons/hearing/stringtable.xml
+++ b/addons/hearing/stringtable.xml
@@ -113,20 +113,24 @@
             <English>Hearing</English>
             <Polish>Słuch</Polish>
             <Spanish>Audición</Spanish>
+            <German>Gehör</German>
         </Key>
         <Key ID="STR_ACE_Hearing_CombatDeafness_DisplayName">
             <English>Enable combat deafness?</English>
             <Polish>Wł. głuchotę bojową</Polish>
             <Spanish>¿Habilitar sordera de combate?</Spanish>
+            <German>Aktiviere Taubheit im Gefecht?</German>
         </Key>
         <Key ID="STR_ACE_Hearing_CombatDeafness_Description">
             <English>Enable combat deafness?</English>
             <Polish>Możliwość chwilowej utraty słuchu przy głośnych wystrzałach i jednoczesnym braku włożonych stoperów</Polish>
             <Spanish>Habilita la sordera de combate</Spanish>
+            <German>Aktiviere Taubheit im Gefecht?</German>
         </Key>
         <Key ID="STR_ACE_Hearing_Module_Description">
             <English></English>
             <Polish>Głuchota bojowa pojawia się w momentach, kiedy stoimy w pobliżu broni wielkokalibrowej bez ochrony słuchu, lub np. podczas ostrzału artyleryjskiego. Moduł ten pozwala na włączenie lub wyłączenie tego efektu.</Polish>
+            <German>Dieses Modul aktiviert/deaktiviert die Taubheit im Gefecht. Wenn aktiviert, können Spieler ohne Gehörschutz taub werden, wenn eine Waffe in ihrer Nähe abgefeuert wird oder eine Explosion stattfindet.</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/hitreactions/ACE_Settings.hpp b/addons/hitreactions/ACE_Settings.hpp
new file mode 100644
index 0000000000..adbbdacaf2
--- /dev/null
+++ b/addons/hitreactions/ACE_Settings.hpp
@@ -0,0 +1,7 @@
+class ACE_Settings {
+    class GVAR(minDamageToTrigger) {
+        //Minimum mamage needed to trigger falling down while moving. Set to -1 to disable completely.
+        typeName = "SCALAR";
+        value = 0.1;
+    };
+};
diff --git a/addons/hitreactions/config.cpp b/addons/hitreactions/config.cpp
index 33d2665311..77b68b77f5 100644
--- a/addons/hitreactions/config.cpp
+++ b/addons/hitreactions/config.cpp
@@ -12,4 +12,5 @@ class CfgPatches {
     };
 };
 
+#include "ACE_Settings.hpp"
 #include "CfgEventHandlers.hpp"
diff --git a/addons/hitreactions/functions/fnc_fallDown.sqf b/addons/hitreactions/functions/fnc_fallDown.sqf
index fdad970950..b979d09a4f 100644
--- a/addons/hitreactions/functions/fnc_fallDown.sqf
+++ b/addons/hitreactions/functions/fnc_fallDown.sqf
@@ -10,6 +10,9 @@ _damage = _this select 2;
 // don't fall on collision damage
 if (_unit == _firer) exitWith {};
 
+//Exit if system disabled:
+if (GVAR(minDamageToTrigger) == -1) exitWith {};
+
 // cam shake for player
 if (_unit == ACE_player) then {
     addCamShake [3, 5, _damage + random 10];
@@ -27,13 +30,16 @@ if (_vehicle isKindOf "StaticWeapon") exitwith {
 };
 
 // don't fall after minor damage
-if (_damage < 0.1) exitWith {};
+if (_damage < GVAR(minDamageToTrigger)) exitWith {};
 
 // play sound
 if (!isNil QUOTE(EFUNC(medical,playInjuredSound))) then {
     [_unit] call EFUNC(medical,playInjuredSound);
 };
 
+//Don't do animations if in a vehicle (looks weird and animations never reset):
+if (_vehicle != _unit) exitWith {};
+
 // this checks most things, so it doesn't mess with being inside vehicles or while dragging etc.
 if !([_unit, _vehicle] call EFUNC(common,canInteractWith)) exitWith {};
 
diff --git a/addons/interact_menu/functions/fnc_compileMenu.sqf b/addons/interact_menu/functions/fnc_compileMenu.sqf
index 75c960522b..8d68a34268 100644
--- a/addons/interact_menu/functions/fnc_compileMenu.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenu.sqf
@@ -69,7 +69,12 @@ _recurseFnc = {
             _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
             _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
             _canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0;
-            _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
+            _runOnHover = false;
+            if (isText (_entryCfg >> "runOnHover")) then {
+                _runOnHover = compile getText (_entryCfg >> "runOnHover");
+            } else {
+                _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
+            };
 
             _condition = compile _condition;
             _children = [_entryCfg] call _recurseFnc;
diff --git a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
index 10426460d7..b33b06563c 100644
--- a/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
+++ b/addons/interact_menu/functions/fnc_compileMenuSelfAction.sqf
@@ -53,7 +53,12 @@ _recurseFnc = {
             _showDisabled = (getNumber (_entryCfg >> "showDisabled")) > 0;
             _enableInside = (getNumber (_entryCfg >> "enableInside")) > 0;
             _canCollapse = (getNumber (_entryCfg >> "canCollapse")) > 0;
-            _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
+            _runOnHover = true;
+            if (isText (_entryCfg >> "runOnHover")) then {
+                _runOnHover = compile getText (_entryCfg >> "runOnHover");
+            } else {
+                _runOnHover = (getNumber (_entryCfg >> "runOnHover")) > 0;
+            };
 
             _condition = compile _condition;
             _children = [_entryCfg] call _recurseFnc;
diff --git a/addons/interact_menu/functions/fnc_render.sqf b/addons/interact_menu/functions/fnc_render.sqf
index 66c9830a0c..55ca280c43 100644
--- a/addons/interact_menu/functions/fnc_render.sqf
+++ b/addons/interact_menu/functions/fnc_render.sqf
@@ -89,7 +89,17 @@ if (GVAR(openedMenuType) >= 0) then {
 
             // Execute the current action if it's run on hover
             private "_runOnHover";
-            _runOnHover = ((GVAR(selectedAction) select 0) select 9) select 3;
+            _tmp = ((GVAR(selectedAction) select 0) select 9) select 3;
+            _runOnHover = true;
+            if ((typeName _tmp) == "CODE" ) then {
+                _runOnHover = call _tmp;
+            } else {
+                if ((typeName _tmp) == "BOOL" ) then {
+                    _runOnHover = _tmp;
+                } else {
+                    _runOnHover = _tmp > 0;
+                };
+            };
             if (_runOnHover) then {
                 this = GVAR(selectedTarget);
                 _player = ACE_Player;
diff --git a/addons/interaction/CfgVehicles.hpp b/addons/interaction/CfgVehicles.hpp
index 804aba1100..0f07accdee 100644
--- a/addons/interaction/CfgVehicles.hpp
+++ b/addons/interaction/CfgVehicles.hpp
@@ -1,7 +1,7 @@
 class CfgVehicles {
 
-  class Module_F;
-  class ACE_ModuleInteraction: Module_F {
+  class ACE_Module;
+  class ACE_ModuleInteraction: ACE_Module {
     author = "$STR_ACE_Common_ACETeam";
     category = "ACE";
     displayName = "$STR_ACE_InteractionSystem_Module_DisplayName";
diff --git a/addons/interaction/stringtable.xml b/addons/interaction/stringtable.xml
index 6c999b679a..e62db5622a 100644
--- a/addons/interaction/stringtable.xml
+++ b/addons/interaction/stringtable.xml
@@ -111,7 +111,7 @@
         </Key>
         <Key ID="STR_ACE_Interaction_InteractionMenuSelf">
             <English>Interaction Menu (Self)</English>
-            <German>Interaktionsmenü (Selbst)</German>
+            <German>Interaktionsmenü (selbst)</German>
             <Spanish>Menú de interacción (Propio)</Spanish>
             <Polish>Menu interakcji (własne)</Polish>
             <Czech>Menu interakce (vlastní)</Czech>
@@ -495,7 +495,7 @@
         </Key>
         <Key ID="STR_ACE_Interaction_GetDown">
             <English>Get Down!</English>
-            <German>Auf Den Boden!</German>
+            <German>Auf den Boden!</German>
             <Spanish>Al suelo!</Spanish>
             <Polish>Padnij!</Polish>
             <Czech>K zemi!</Czech>
@@ -507,7 +507,7 @@
         </Key>
         <Key ID="STR_ACE_Interaction_TeamManagement">
             <English>Team Management</English>
-            <German>Team Management</German>
+            <German>Gruppenverwaltung</German>
             <Spanish>Gestión de equipo</Spanish>
             <French>Gestion d'équipe</French>
             <Polish>Zarządzanie oddziałem</Polish>
@@ -797,20 +797,24 @@
             <English>Interaction System</English>
             <Polish>System interakcji</Polish>
             <Spanish>Sistema de interacción</Spanish>
+            <German>Interaktionssystem</German>
         </Key>
         <Key ID="STR_ACE_InteractionSystem_EnableTeamManagement_DisplayName">
             <English>Enable Team Management</English>
             <Polish>Wł. zarządzanie drużyną</Polish>
             <Spanish>Habilitar gestión de equipos</Spanish>
+            <German>Aktiviere Gruppenverwaltung</German>
         </Key>
         <Key ID="STR_ACE_InteractionSystem_EnableTeamManagement_Description">
             <English>Should players be allowed to use the Team Management Menu? Default: Yes</English>
             <Polish>Czy gracze mogą korzystać z menu zarządzania drużyną? Domyślnie: Tak</Polish>
             <Spanish>¿Deben tener permitido los jugadores el uso del menu de gestión de equipos? Por defecto: Si</Spanish>
+            <German>Sollen Spieler das Gruppenverwaltungsmenü verwenden dürfen? Standard: Ja</German>
         </Key>
         <Key ID="STR_ACE_InteractionSystem_Module_Description">
             <English></English>
             <Polish>Na zarządzanie drużyną składa się: przydział kolorów dla członków drużyny, przejmowanie dowodzenia, dołączanie/opuszczanie drużyn.</Polish>
+            <German>Die Gruppenverwaltung erlaubt die Zuweisung von Farben für Einheiten, die Kommandierung und das Beitreten/Verlassen einer Gruppe.</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/inventory/stringtable.xml b/addons/inventory/stringtable.xml
index 6ad5ec0408..8272594df5 100644
--- a/addons/inventory/stringtable.xml
+++ b/addons/inventory/stringtable.xml
@@ -15,7 +15,7 @@
         </Key>
         <Key ID="STR_ACE_Inventory_SettingDescription">
             <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>
+            <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>
             <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>
@@ -26,4 +26,4 @@
             <Portuguese>Normalmente o tamanho da tela do inventário é ditada pelo tamanho da UI. Isso permite aumentar o tamanho da tela de inventário, mas não aumenta o tamanho da fonte, permitindo que mais linhas sejam visualizadas.</Portuguese>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/kestrel4500/XEH_postInit.sqf b/addons/kestrel4500/XEH_postInit.sqf
index 98136cbd0b..f22fc2228f 100644
--- a/addons/kestrel4500/XEH_postInit.sqf
+++ b/addons/kestrel4500/XEH_postInit.sqf
@@ -2,10 +2,10 @@
 
 #include "initKeybinds.sqf"
 
-GVAR(Menus) = ["Date", "Direction", "Wind SPD  m/s", "CROSSWIND m/s", "HEADWIND  m/s", "TEMP       °C", "CHILL      °C", "HUMIDITY    %", "HEAT INDEX °C", "DEW POINT  °C", "WET BULB   °C", "BARO      hPA", "ALTITUDE    m", "User Screen   1", "User Screen   2"];
+GVAR(Menus) = ["Date", "Direction", "Wind SPD  m/s", "CROSSWIND m/s", "HEADWIND  m/s", "TEMP       °C", "CHILL      °C", "HUMIDITY    %", "HEAT INDEX °C", "DEW POINT  °C", "WET BULB   °C", "BARO      hPA", "ALTITUDE    m", "DENS ALT    m", "User Screen   1", "User Screen   2"];
 
-GVAR(TOTAL) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
-GVAR(ENTRIES) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+GVAR(TOTAL) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
+GVAR(ENTRIES) = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
 
 GVAR(MinAvgMax) = false;
 GVAR(MinAvgMaxMode) = 0;
diff --git a/addons/kestrel4500/functions/fnc_collectData.sqf b/addons/kestrel4500/functions/fnc_collectData.sqf
index 41f372d416..4858ad80b2 100644
--- a/addons/kestrel4500/functions/fnc_collectData.sqf
+++ b/addons/kestrel4500/functions/fnc_collectData.sqf
@@ -14,26 +14,28 @@
  */
 #include "script_component.hpp"
 
-private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_altitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_updateMemory", "_windSpeed", "_crosswind", "_headwind"];
+private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_altitude", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_updateMemory", "_windSpeed", "_crosswind", "_headwind"];
 _playerDir = getDir ACE_player;
 _playerAltitude = (getPosASL ACE_player) select 2;
 _temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
 _humidity = EGVAR(weather,currentHumidity);
 _barometricPressure = _playerAltitude call EFUNC(weather,calculateBarometricPressure);
 _altitude = EGVAR(weather,Altitude) + _playerAltitude;
+_airDensity = [_temperature, _barometricPressure, _humidity] call EFUNC(weather,calculateAirDensity);
+_densityAltitude = _airDensity call EFUNC(weather,calculateDensityAltitude);
 _chill = [_temperature, _humidity] call EFUNC(weather,calculateWindChill);
 _heatIndex = [_temperature, _humidity] call EFUNC(weather,calculateHeatIndex);
 _dewPoint = [_temperature, _humidity] call EFUNC(weather,calculateDewPoint);
 _wetBulb = [_temperature, _barometricPressure, _humidity] call EFUNC(weather,calculateWetBulb);
 
 if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then {
-    GVAR(MIN) = [0, _playerDir, 0, 0, 0, _temperature, _chill, _humidity, _heatIndex, _dewPoint, _wetBulb, _barometricPressure, _altitude];
-    GVAR(MAX) = [0, _playerDir, 0, 0, 0, _temperature, _chill, _humidity, _heatIndex, _dewPoint, _wetBulb, _barometricPressure, _altitude];
+    GVAR(MIN) = [0, _playerDir, 0, 0, 0, _temperature, _chill, _humidity, _heatIndex, _dewPoint, _wetBulb, _barometricPressure, _altitude, _densityAltitude];
+    GVAR(MAX) = [0, _playerDir, 0, 0, 0, _temperature, _chill, _humidity, _heatIndex, _dewPoint, _wetBulb, _barometricPressure, _altitude, _densityAltitude];
 };
 
 {
     GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1];
-} forEach [1, 5, 6, 7, 8, 9, 10, 11, 12];
+} forEach [1, 5, 6, 7, 8, 9, 10, 11, 12, 13];
 
 _fnc_updateMemory = {
     PARAMS_2(_slot,_value);
@@ -86,3 +88,4 @@ if (GVAR(MinAvgMaxMode) == 1) then {
 [10, _wetBulb] call _fnc_updateMemory;
 [11, _barometricPressure] call _fnc_updateMemory;
 [12, _altitude] call _fnc_updateMemory;
+[13, _densityAltitude] call _fnc_updateMemory;
diff --git a/addons/kestrel4500/functions/fnc_generateOutputData.sqf b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
index fc7b94b711..fce359de6f 100644
--- a/addons/kestrel4500/functions/fnc_generateOutputData.sqf
+++ b/addons/kestrel4500/functions/fnc_generateOutputData.sqf
@@ -16,7 +16,7 @@
 
 if (ACE_diagTime - GVAR(headingSetDisplayTimer) < 0.8) exitWith {["", "", "  Heading Set", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]};
 
-private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_dayOfWeek", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"];
+private ["_playerDir", "_playerAltitude", "_temperature", "_humidity", "_barometricPressure", "_airDensity", "_densityAltitude", "_chill", "_heatIndex", "_dewPoint", "_wetBulb", "_fnc_dayOfWeek", "_dayString", "_monthString", "_windSpeed", "_windDir", "_textTop", "_textCenterBig", "_textCenter", "_textCenterLine1Left", "_textCenterLine2Left", "_textCenterLine3Left", "_textCenterLine1Right", "_textCenterLine2Right", "_textCenterLine3Right", "_textInfoLine1", "_textInfoLine2", "_textBottomBig", "_textCenterLine1", "_textCenterLine2", "_textCenterLine3", "_textCenterLine4", "_textCenterLine5", "_textCenterLine6"];
 
 [] call FUNC(collectData);
 
@@ -52,6 +52,8 @@ _playerAltitude = (getPosASL ACE_player) select 2;
 _temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
 _humidity = EGVAR(weather,currentHumidity);
 _barometricPressure = _playerAltitude call EFUNC(weather,calculateBarometricPressure);
+_airDensity = [_temperature, _barometricPressure, _humidity] call EFUNC(weather,calculateAirDensity);
+_densityAltitude = _airDensity call EFUNC(weather,calculateDensityAltitude);
 _chill = [_temperature, _humidity] call EFUNC(weather,calculateWindChill);
 _heatIndex = [_temperature, _humidity] call EFUNC(weather,calculateHeatIndex);
 _dewPoint = [_temperature, _humidity] call EFUNC(weather,calculateDewPoint);
@@ -284,7 +286,19 @@ if (GVAR(referenceHeadingMenu) == 0) then {
                 _textCenterLine3Right = Str(round(GVAR(Max) select 12));
             };
         };
-        case 13: { // User Screen 1
+        case 13: { // DENSITY ALTITUDE
+            if (!GVAR(MinAvgMax)) then {
+                _textCenterBig = Str(round(_densityAltitude));
+            } else {
+                _textCenterLine1Left = "Min";
+                _textCenterLine2Left = "Avg";
+                _textCenterLine3Left = "Max";
+                _textCenterLine1Right = Str(round(GVAR(Min) select 13));
+                _textCenterLine2Right = Str(round((GVAR(Total) select 13) / (GVAR(Entries) select 13)));
+                _textCenterLine3Right = Str(round(GVAR(Max) select 13));
+            };
+        };
+        case 14: { // User Screen 1
             _textCenterLine1Left = Str(round(_playerDir));
             _textCenterLine2Left = Str(round(EGVAR(weather,Altitude) + _playerAltitude));
             _textCenterLine3Left = Str(round(abs(_windSpeed) * 10) / 10);
@@ -292,7 +306,7 @@ if (GVAR(referenceHeadingMenu) == 0) then {
             _textCenterLine2Right = "m";
             _textCenterLine3Right = "m/s";
         };
-        case 14: { // User Screen 2
+        case 15: { // User Screen 2
             _textCenterLine1Left = Str(round(_temperature * 10) / 10);
             _textCenterLine2Left = Str(round(_humidity * 100 * 10) / 10);
             _textCenterLine3Left = Str(round((_playerAltitude call EFUNC(weather,calculateBarometricPressure)) * 10) / 10);
diff --git a/addons/magazinerepack/stringtable.xml b/addons/magazinerepack/stringtable.xml
index 8c1a0e01dc..c6879280da 100644
--- a/addons/magazinerepack/stringtable.xml
+++ b/addons/magazinerepack/stringtable.xml
@@ -76,7 +76,7 @@
         <Key ID="STR_ACE_MagazineRepack_RepackComplete">
             <English>Repacking Finished</English>
             <French>Réorganisation terminée</French>
-            <German>Wiederverpacken Fertig</German>
+            <German>Wiederverpacken fertig</German>
             <Spanish>Reorganización finalizada</Spanish>
             <Russian>Перепаковка завершена</Russian>
             <Czech>Páskování dokončeno</Czech>
@@ -88,7 +88,7 @@
         <Key ID="STR_ACE_MagazineRepack_RepackInterrupted">
             <English>Repacking Interrupted</English>
             <French>Réorganisation interrompue</French>
-            <German>Umpacken Unterbrochen</German>
+            <German>Umpacken unterbrochen</German>
             <Spanish>Reorganización interrumpida</Spanish>
             <Russian>Перепаковка прервана</Russian>
             <Czech>Páskování přerušeno</Czech>
@@ -110,4 +110,4 @@
             <Portuguese>%1 Total e %2 Parcial </Portuguese>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/map/CfgVehicles.hpp b/addons/map/CfgVehicles.hpp
index a5194e015e..43db54628b 100644
--- a/addons/map/CfgVehicles.hpp
+++ b/addons/map/CfgVehicles.hpp
@@ -1,6 +1,7 @@
 class CfgVehicles {
-    class Module_F;
-    class ACE_ModuleMap: Module_F {
+
+    class ACE_Module;
+    class ACE_ModuleMap: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_Map_Module_DisplayName";
@@ -39,6 +40,7 @@ class CfgVehicles {
         };
     };
 
+    class Module_F;
     class ACE_ModuleBlueForceTracking: Module_F {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
diff --git a/addons/map/stringtable.xml b/addons/map/stringtable.xml
index f59c2652ff..373275d6b9 100644
--- a/addons/map/stringtable.xml
+++ b/addons/map/stringtable.xml
@@ -5,79 +5,95 @@
             <English>Map</English>
             <Polish>Mapa</Polish>
             <Spanish>Mapa</Spanish>
+            <German>Karte</German>
         </Key>
         <Key ID="STR_ACE_Map_MapIllumination_DisplayName">
             <English>Map illumination?</English>
             <Polish>Oświetlenie mapy</Polish>
             <Spanish>¿Iluminación de mapa?</Spanish>
+            <German>Kartenausleuchtung</German>
         </Key>
         <Key ID="STR_ACE_Map_MapIllumination_Description">
             <English>Calculate dynamic map illumination based on light conditions?</English>
             <Polish>Oblicza dynamiczne oświetlenie mapy bazujące na warunkach oświetleniowych</Polish>
             <Spanish>Calcula la iluminación dinámica del mapa basandose en las condiciones de luz</Spanish>
+            <German>Berechne die Kartenauslichtung anhand des Umgebungslichts?</German>
         </Key>
         <Key ID="STR_ACE_Map_MapShake_DisplayName">
             <English>Map shake?</English>
             <Polish>Drżenie mapy</Polish>
             <Spanish>¿Temblor de mapa?</Spanish>
+            <German>Kamerawackeln</German>
         </Key>
         <Key ID="STR_ACE_Map_MapShake_Description">
             <English>Make map shake when walking?</English>
             <Polish>Ekran mapy drży podczas ruchu</Polish>
             <Spanish>Hace que el mapa tiemble cuando caminas</Spanish>
+            <German>Kamerawackeln beim Gehen?</German>
         </Key>
         <Key ID="STR_ACE_Map_MapLimitZoom_DisplayName">
             <English>Limit map zoom?</English>
             <Polish>Ograniczony zoom</Polish>
             <Spanish>¿Limitar el zoom de mapa?</Spanish>
+            <German>Kartenzoom einschränken</German>
         </Key>
         <Key ID="STR_ACE_Map_MapLimitZoom_Description">
             <English>Limit the amount of zoom available for the map?</English>
             <Polish>Ogranicza maksymalny stopień przybliżenia mapy</Polish>
             <Spanish>Limita la cantidad de zoom disponible para el mapa</Spanish>
+            <German>Zoomstufe der Karte einschränken?</German>
         </Key>
         <Key ID="STR_ACE_Map_MapShowCursorCoordinates_DisplayName">
             <English>Show cursor coordinates?</English>
             <Polish>Koordynaty pod kursorem</Polish>
             <Spanish>¿Mostrar coordenadas de cursor?</Spanish>
+            <German>Zeige Cursor-Koordinaten?</German>
         </Key>
         <Key ID="STR_ACE_Map_MapShowCursorCoordinates_Description">
             <English>Show the grid coordinates on the mouse pointer?</English>
             <Polish>Pokazuje pod kursorem koordynaty wskazanego kwadratu mapy</Polish>
             <Spanish>Muestra las coordenadas de la cuadricula en el puntero del ratón</Spanish>
+            <German>Gitter-Koordinaten auf dem Mauszeiger anzeigen?</German>
         </Key>
         <Key ID="STR_ACE_Map_Module_Description">
             <English></English>
             <Polish>Moduł ten pozwala dostosować opcje widoku ekranu mapy.</Polish>
+            <German>Dieses Modul erweitert die Kartenfunktionen.</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_Module_DisplayName">
             <English>Blue Force Tracking</English>
             <Polish>Blue Force Tracking</Polish>
             <Spanish>Seguimiento de fuerzas amigas</Spanish>
+            <German>Blue Force Tracking</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_Interval_DisplayName">
             <English>Interval</English>
             <Polish>Interwał</Polish>
             <Spanish>Intervalo</Spanish>
+            <German>Intervall</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_Interval_Description">
             <English>How often the markers should be refreshed (in seconds)</English>
             <Polish>Jak często markery powinny być odświeżane (w sekundach)</Polish>
             <Spanish>Frecuencia de actualización de los marcadores (en segundos)</Spanish>
+            <German>Wie oft sollen die Markierungen aktualisiert werden (in Sekunden)</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_HideAiGroups_DisplayName">
             <English>Hide AI groups?</English>
             <Polish>Ukryj grupy AI</Polish>
             <Spanish>¿Ocultar grupos de IA?</Spanish>
+            <German>KI-Gruppen verstecken?</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_HideAiGroups_Description">
             <English>Hide markers for 'AI only' groups?</English>
             <Polish>Ukrywa markery dla grup złożonych tylko z AI</Polish>
             <Spanish>Oculta las marcas de grupos 'solo IA'</Spanish>
+            <German>Verstecke Marker für "nur KI"-Gruppen?</German>
         </Key>
         <Key ID="STR_ACE_Map_BFT_Module_Description">
             <English></English>
             <Polish>Pozwala śledzić na mapie pozycje sojuszniczych jednostek za pomocą markerów BFT.</Polish>
+            <German>Dieses Modul ermöglicht es verbündete Einheiten mit dem BFT auf der Karte zu verfolgen.</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/medical/ACE_Medical_Treatments.hpp b/addons/medical/ACE_Medical_Treatments.hpp
index 29e21201b0..3ca8c56ed7 100644
--- a/addons/medical/ACE_Medical_Treatments.hpp
+++ b/addons/medical/ACE_Medical_Treatments.hpp
@@ -66,7 +66,7 @@ class ACE_Medical_Actions {
             displayNameProgress = "$STR_ACE_Medical_PlacingInBodyBag";
             treatmentLocations[] = {"All"};
             requiredMedic = 0;
-            treatmentTime = 2;
+            treatmentTime = 4;
             items[] = {"ACE_bodyBag"};
             condition = "!alive (_this select 1);";
             callbackSuccess = QUOTE(DFUNC(actionPlaceInBodyBag));
diff --git a/addons/medical/config.cpp b/addons/medical/config.cpp
index f86f5d166e..463ed95406 100644
--- a/addons/medical/config.cpp
+++ b/addons/medical/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
         units[] = {"ACE_medicalSupplyCrate", "ACE_medicalSupplyCrate_advanced", "ACE_fieldDressingItem", "ACE_packingBandageItem", "ACE_elasticBandageItem", "ACE_tourniquetItem", "ACE_morphineItem", "ACE_atropineItem", "ACE_epinephrineItem", "ACE_plasmaIVItem", "ACE_bloodIVItem", "ACE_salineIVItem", "ACE_quikclotItem", "ACE_personalAidKitItem", "ACE_surgicalKitItem", "ACE_bodyBagItem", "ACE_bodyBagObject"};
         weapons[] = {"ACE_fieldDressing", "ACE_packingBandage", "ACE_elasticBandage", "ACE_tourniquet", "ACE_morphine", "ACE_atropine", "ACE_epinephrine", "ACE_plasmaIV", "ACE_plasmaIV_500", "ACE_plasmaIV_250", "ACE_bloodIV", "ACE_bloodIV_500", "ACE_bloodIV_250", "ACE_salineIV", "ACE_salineIV_500", "ACE_salineIV_250", "ACE_quikclot", "ACE_personalAidKit", "ACE_surgicalKit", "ACE_bodyBag"};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_interaction","ace_modules", "ace_apl"};
+        requiredAddons[] = {"ace_interaction", "ace_apl"};
         author[] = {"Glowbal", "KoffeinFlummi"};
         authorUrl = "";
         VERSION_CONFIG;
diff --git a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf
index 872b9a628a..73f9eeca4d 100644
--- a/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf
+++ b/addons/medical/functions/fnc_actionPlaceInBodyBag.sqf
@@ -1,31 +1,40 @@
 /*
  * Author: Glowbal
- * Replace a dead body by a bodybag
+ * Replace a (dead) body by a body bag
  *
  * Arguments:
- * 0: The patient <OBJECT>
- * 1: The new item classname <STRING>
+ * 0: The actor <OBJECT>
+ * 1: The patient <OBJECT>
  *
  * Return Value:
- * nil
+ * body bag <OBJECT>
  *
  * Public: Yes
  */
 
 #include "script_component.hpp"
 
-private ["_target","_caller", "_nameOfUnit", "_onPosition", "_bodyBagCreated"];
-_caller = _this select 0;
-_target = _this select 1;
+PARAMS_2(_caller,_target);
+
+private ["_position", "_headPos", "_spinePos", "_dirVect", "_direction", "_bodyBag"];
 
-_nameOfUnit = [_target] call EFUNC(common,getName);
 if (alive _target) then {
     [_target, true] call FUNC(setDead);
 };
-_onPosition = getPos _target;
-deleteVehicle _target;
-_bodyBagCreated = createVehicle ["ACE_bodyBagObject", _onPosition, [], 0, "NONE"];
-// reset the position to ensure it is on the correct one.
-_bodyBagCreated setPos [_onPosition select 0, _onPosition select 1, (_onPosition select 2) + 0.2];
 
-_bodyBagCreated;
+_position = (getPosASL _target) vectorAdd [0, 0, 0.2];
+
+_headPos  = _target modelToWorldVisual (_target selectionPosition "head");
+_spinePos = _target modelToWorldVisual (_target selectionPosition "Spine3");
+_dirVect = _headPos vectorFromTo _spinePos;
+_direction = _dirVect call CBA_fnc_vectDir;
+
+deleteVehicle _target;
+
+_bodyBag = createVehicle ["ACE_bodyBagObject", _position, [], 0, "CAN_COLLIDE"];
+
+// prevent body bag from flipping
+_bodyBag setPosASL _position;
+_bodyBag setDir _direction;
+
+_bodyBag
diff --git a/addons/medical/functions/fnc_treatment.sqf b/addons/medical/functions/fnc_treatment.sqf
index 141fe68188..06cea8dfe3 100644
--- a/addons/medical/functions/fnc_treatment.sqf
+++ b/addons/medical/functions/fnc_treatment.sqf
@@ -26,7 +26,7 @@ _className = _this select 3;
 if (uiNamespace getVariable [QEGVAR(interact_menu,cursorMenuOpened),false]) exitwith {
     [{
         _this call FUNC(treatment);
-    }, _this, 0, 0] call EFUNC(common,waitAndExecute);
+    }, _this] call EFUNC(common,execNextFrame);
 };
 
 if !(_target isKindOf "CAManBase") exitWith {false};
diff --git a/addons/medical/stringtable.xml b/addons/medical/stringtable.xml
index 6be791a7ca..be674c85ba 100644
--- a/addons/medical/stringtable.xml
+++ b/addons/medical/stringtable.xml
@@ -44,7 +44,7 @@
             <Russian>Устанавливает количество мусора, который появляется после использования мед. препаратов. Большое количество мусора может уменьшить производительность, поэтому данная настройка локальна для клиента.</Russian>
             <Italian>Il livello di dettagli della simulazione dei rifiuti indica il numero di rifiuti che verranno creati localmente nel client. La creazione di troppi rifiuti in aree locali potrebbe causare lag e calo di FPS. Questo è un settaggio client.</Italian>
             <French>Le niveau de simulation des détritus règle la quantité de déchets qui vont être créés localement chez le client. Des quantitées excessive chez certains clients peuvent causer des chutes de FPS, c'est donc une option client uniquement.</French>
-            <German>Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Lags erzeugen, deswegen ist diese Einstellung nur clientseitig.</German>
+            <German>Die Einstellung für das Abfall-Detaillevel stellt die Menge der lokal erzeugten medizinischen Abfälle ein. Zuviel erzeugte Abfälle können FPS-Einbrüche erzeugen, deswegen ist diese Einstellung nur clientseitig.</German>
             <Hungarian>A hulladékszimuláció részletessége megszabja a kliens által megjelenített hulladékobjektumok mennyiségét. Súlyos mennyiségek izolált területeken alacsony FPS-t okozhatnak, így ez egy kliensoldali beállítás.</Hungarian>
             <Portuguese>O nível de detalhe de sujeira determina o número de itens que irão aparecer no cliente. Quantidades excessivas em áreas locais podem aumentar o lag do FPS, então esta é uma opção somente para o cliente.</Portuguese>
             <Czech>Počet zobrazených předmětů po použití zdravotnického materiálu ovlivňuje počet objektů, které budou zobrazeny klientovi v místě použití zdravotnického materiálu. Vyšší množství objektů může způsobovat poklesy FPS a proto je toto nastavení čistě na klientovi.</Czech>
@@ -111,7 +111,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Transfuse_Saline">
             <English>Transfuse Saline</English>
-            <German>Salzlösungtransfusion</German>
+            <German>Salzlösungstransfusion</German>
             <Spanish>Transfundir salino</Spanish>
             <Czech>Transfúze fyziologický roztoku</Czech>
             <Polish>Przetocz sól fizjologiczną</Polish>
@@ -171,7 +171,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Bandage_HitLeftArm">
             <English>Bandage Left Arm</English>
-            <German>Arm links verbinden</German>
+            <German>Linken Arm verbinden</German>
             <Spanish>Vendar el brazo izquierdo</Spanish>
             <Polish>Bandażuj lewe ramię</Polish>
             <Czech>Obvázat levou ruku</Czech>
@@ -183,7 +183,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Bandage_HitRightArm">
             <English>Bandage Right Arm</English>
-            <German>Arm rechts verbinden</German>
+            <German>Rechten Arm verbinden</German>
             <Spanish>Vendar el brazo derecho</Spanish>
             <Polish>Bandażuj prawe ramię</Polish>
             <Czech>Obvázat pravou ruku</Czech>
@@ -195,7 +195,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Bandage_HitLeftLeg">
             <English>Bandage Left Leg</English>
-            <German>Bein links verbinden</German>
+            <German>Linkes Bein verbinden</German>
             <Spanish>Vendar la pierna izquierda</Spanish>
             <Polish>Bandażuj lewą nogę</Polish>
             <Czech>Obvázat levou nohu</Czech>
@@ -207,7 +207,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Bandage_HitRightLeg">
             <English>Bandage Right Leg</English>
-            <German>Bein rechts verbinden</German>
+            <German>Rechtes Bein verbinden</German>
             <Spanish>Vendar la pierna derecha</Spanish>
             <Polish>Bandażuj prawą nogę</Polish>
             <Czech>Obvázat pravou nohu</Czech>
@@ -267,7 +267,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Transfusing_Saline">
             <English>Transfusing Saline ...</English>
-            <German>Sallösungtransfusion ...</German>
+            <German>Salzlösungtransfusion ...</German>
             <Spanish>Transfusión de salino ...</Spanish>
             <Czech>Probíha transfúze fyziologický roztoku ...</Czech>
             <Polish>Przetaczanie soli fizjologicznej ...</Polish>
@@ -787,7 +787,7 @@
             <Spanish>Utilizado para cubrir una herida</Spanish>
             <French>Utilisé pour couvrir une blessure</French>
             <Polish>Używany w celu przykrycia i ochrony miejsca zranienia</Polish>
-            <German>Verwendet, um Wunden abzudecken</German>
+            <German>Verwendet um Wunden abzudecken</German>
             <Hungarian>Sebesülések befedésére alkalmas</Hungarian>
             <Italian>Usato per coprire una ferita</Italian>
             <Portuguese>Usado para cobrir um ferimento</Portuguese>
@@ -915,7 +915,7 @@
         </Key>
         <Key ID="STR_ACE_Medical_Morphine_Display">
             <English>Morphine autoinjector</English>
-            <German>Morphium Autoinjektor</German>
+            <German>Morphium-Autoinjektor</German>
             <Russian>Морфин в пневмошприце</Russian>
             <Spanish>Morfina auto-inyectable</Spanish>
             <French>Auto-injecteur de Morphine</French>
@@ -955,7 +955,7 @@
             <Spanish>Atropina auto-inyectable</Spanish>
             <French>Auto-injecteur d'Atropine</French>
             <Polish>Autostrzykawka AtroPen</Polish>
-            <German>Atropin Autoinjektor</German>
+            <German>Atropin-Autoinjektor</German>
             <Czech>Autoinjektor atropin</Czech>
             <Hungarian>Atropin autoinjektor</Hungarian>
             <Italian>Autoiniettore di atropina</Italian>
@@ -967,7 +967,7 @@
             <Spanish>Usado en escenarios NBQ</Spanish>
             <French>Utilisé en cas d'attaque CBRN</French>
             <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice.</Polish>
-            <German>Verwendet bei ABC Kontamination</German>
+            <German>Verwendet bei ABC-Kontamination</German>
             <Hungarian>NBK helyzetek esetén használandó</Hungarian>
             <Italian>Usato in situazioni con gas nervino.</Italian>
             <Portuguese>Usado em casos de ataque QBRN</Portuguese>
@@ -979,7 +979,7 @@
             <Spanish>Medicamento usado por militares en escenarios NBQ</Spanish>
             <French>Médicament utilisé par l'armée en cas d'attaque CBRN</French>
             <Polish>Atropina. Stosowana jako lek rozkurczowy i środek rozszerzający źrenice. Środek stosowany w przypadku zagrożeń NBC.</Polish>
-            <German>Ein Medikament, das vom Militär bei ABC Kontamination verwendet wird.</German>
+            <German>Ein Medikament, das vom Militär bei ABC-Kontamination verwendet wird.</German>
             <Hungarian>Egy instabil alkaloid, NBK helyzetek esetén a katonai szervezetek veszik használatba.</Hungarian>
             <Italian>E' un farmaco usato in ambito militare in scenari con presenza di gas nervino.</Italian>
             <Portuguese>Uma droga usada por militares em casos de ataque QBRN.</Portuguese>
@@ -991,7 +991,7 @@
             <Spanish>Epinefrina auto-inyectable</Spanish>
             <French>Auto-injecteur d'épinéphrine</French>
             <Polish>Autostrzykawka EpiPen</Polish>
-            <German>Epiniphrin Autoinjektor</German>
+            <German>Epiniphrin-Autoinjektor</German>
             <Czech>Autoinjektor adrenalin</Czech>
             <Hungarian>Epinefrin autoinjektor</Hungarian>
             <Italian>Autoiniettore di epinefrina</Italian>
@@ -1016,7 +1016,7 @@
             <French>Medicament qui fonctionne sur le système nerveux sympathique créant une dilatation des bronches, augmente la fréquence cardiaque et annule les effets d'une réaction allergique (anaphylaxie). Utilisé lors d'arrêt cardio-respiratoire pour augmenter les chances de retrouver un pouls.</French>
             <Polish>EpiPen z adrenaliną ma działanie sympatykomimetyczne, tj. pobudza receptory alfa- i beta-adrenergiczne. Pobudzenie układu współczulnego prowadzi do zwiększenia częstotliwości pracy serca, zwiększenia pojemności wyrzutowej serca i przyśpieszenia krążenia wieńcowego. Pobudzenie oskrzelowych receptorów beta-adrenergicznych wywołuje rozkurcz mięśni gładkich oskrzeli, co w efekcie zmniejsza towarzyszące oddychaniu świsty i duszności.</Polish>
             <Italian>Una sostanza che permette di dilatare i bronchi, aumentare il battito cardiaco e combattere effetti di reazioni allergiche. Usato anche in casi di arresto cardiaco.</Italian>
-            <German>Ein Medikament, dass die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht.</German>
+            <German>Ein Medikament, das die Bronchien erweitert, die Herzfrequenz erhöht und Symptome von allergischen Reaktionen(Anaphylaxie) bekämpft. Wird bei plötzlichem Herzstillstand verabreicht.</German>
             <Portuguese>Uma droga trabalha dilatando os bronquios, aumentando a frequência cardíaca e combate efeitos de reações alérgicas(anáfilaticas). Usado em casos de parada cardiaca com poucas changes de recuperação.</Portuguese>
             <Hungarian>Egy hormon, mely a szimpatikus idegrendszer által kitágítja a hörgőket, valamint megnöveli a szívverést, ezzel ellensúlyozva ilyen jellegű allergiás reakciókat (anafilaxiás sokk). Hirtelen szívmegállás esetén is használt, idő alatt csökkenő hatásfokkal.</Hungarian>
             <Czech>Zúžení periferních cév díky působení na alfa receptory a následné kontrakci hladkých svalů, tím dochází k tzv. centralizaci oběhu, krev se soustřeďuje v životně důležitých centrálních orgánech (srdce, mozek, plíce), působí také pozitivně na srdeční činnost a dochází ke zvýšení krevního tlaku a tepu. Dále se používá při náhlé srdeční zástavě.</Czech>
@@ -2705,36 +2705,43 @@
             <English>ACE Medical</English>
             <Polish>ACE Opcje medyczne</Polish>
             <Spanish>Médico ACE</Spanish>
+            <German>ACE-Medicsystem</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_Module_DisplayName">
             <English>Medical Settings [ACE]</English>
             <Polish>Ustawienia medyczne [ACE]</Polish>
             <Spanish>Ajustes médicos [ACE]</Spanish>
+            <German>Medizinische Einstellungen [ACE]</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_level_DisplayName">
             <English>Medical Level</English>
             <Polish>Poziom medyczny</Polish>
             <Spanish>Nivel médico</Spanish>
+            <German>Medizinisches Level</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_level_Description">
             <English>What is the medical simulation level?</English>
             <Polish>Jaki jest poziom symulacji medycznej?</Polish>
             <Spanish>¿Cuál es el nivel de simulación médica?</Spanish>
+            <German>Wie hoch soll das medizinische Simulationslevel sein?</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_basic">
             <English>Basic</English>
             <Polish>Podstawowy</Polish>
             <Spanish>Básico</Spanish>
+            <German>Standard</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_advanced">
             <English>Advanced</English>
             <Polish>Zaawansowany</Polish>
             <Spanish>Avanzado</Spanish>
+            <German>Erweitert</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_medicSetting_DisplayName">
             <English>Medics setting</English>
             <Polish>Poziom medyków</Polish>
             <Spanish>Configuración médica</Spanish>
+            <German>Medizinische Einstellungen</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_medicSetting_Description">
             <English>What is the level of detail prefered for medics?</English>
@@ -2745,415 +2752,498 @@
             <English>Disable medics</English>
             <Polish>Wyłącz medyków</Polish>
             <Spanish>Desactivar médicos</Spanish>
+            <German>Sanitäter deaktivieren</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_allowLitterCreation_DisplayName">
             <English>Enable Litter</English>
             <Polish>Aktywuj odpadki</Polish>
             <Spanish>Activar restos médicos</Spanish>
+            <German>Abfälle aktivieren</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_allowLitterCreation_Description">
             <English>Enable litter being created upon treatment</English>
             <Polish>Twórz odpadki medyczne podczas leczenia</Polish>
             <Spanish>Activar los restos médicos que se crean en el tratamiento</Spanish>
+            <German>Aktiviere Abfälle, wenn eine Behandlung durchgeführt wurde</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_litterCleanUpDelay_DisplayName">
             <English>Life time of litter objects</English>
             <Polish>Długość życia odpadków</Polish>
             <Spanish>Tiempo de vida de los restos médicos</Spanish>
+            <German>Dauer des angezeigten Abfalls</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_litterCleanUpDelay_Description">
             <English>How long should litter objects stay? In seconds. -1 is forever.</English>
             <Polish>Ile czasu musi upłynąć, aby odpadki zaczęły znikać? W sekundach. -1 dla nieskończoności.</Polish>
             <Spanish>¿Por cuánto tiempo deben permanecer los restos médicos? En segundos. -1 es para siempre.</Spanish>
+            <German>Wie lange sollen Abfälle am Boden liegen (in Sekunden)? -1 ist für immer.</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_enableScreams_DisplayName">
             <English>Enable Screams</English>
             <Polish>Aktywuj wrzaski</Polish>
             <Spanish>Activar gritos</Spanish>
+            <German>Schreie aktivieren</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_enableScreams_Description">
             <English>Enable screaming by injuried units</English>
             <Polish>Aktywuj wrzeszczenie z bólu przez ranne jednostki</Polish>
             <Spanish>Activar gritos para unidades heridas</Spanish>
+            <German>Aktiviere Schreie bei verletzten Einheiten</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_playerDamageThreshold_DisplayName">
             <English>Player Damage</English>
             <Polish>Próg obrażeń graczy</Polish>
             <Spanish>Daño de jugador</Spanish>
+            <German>Spielerschaden</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_playerDamageThreshold_Description">
             <English>What is the damage a player can take before being killed?</English>
             <Polish>Jaki jest próg obrażeń, jakie gracz może otrzymać zanim zostanie zabity?</Polish>
             <Spanish>¿Cuál es el daño que un jugador puede sufrir antes de morir?</Spanish>
+            <German>Wie viel Schaden kann ein Spieler erleiden, bevor er getötet wird?</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_AIDamageThreshold_DisplayName">
             <English>AI Damage</English>
             <Polish>Próg obrażeń AI</Polish>
             <Spanish>Daño IA</Spanish>
+            <German>KI-Schaden</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_AIDamageThreshold_Description">
             <English>What is the damage an AI can take before being killed?</English>
             <Polish>Jaki jest próg obrażeń, jakie AI może otrzymać zanim zostanie zabite?</Polish>
             <Spanish>¿Cuál es el daño que la IA puede sufrir antes de morir?</Spanish>
+            <German>Wie viel Schaden kann eine KI erleiden, bis sie getötet wird?</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_enableUnconsciousnessAI_DisplayName">
             <English>AI Unconsciousness</English>
             <Polish>Nieprzytomność AI</Polish>
             <Spanish>Inconsciencia IA</Spanish>
+            <German>KI-Bewusstlosigkeit</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_enableUnconsciousnessAI_Description">
             <English>Allow AI to go unconscious</English>
             <Polish>Czy AI może być nieprzytomne od odniesionych obrażeń?</Polish>
             <Spanish>Permita a la IA caer inconsciente</Spanish>
+            <German>KI kann bewusstlos werden</German>
         </Key>
         <Key ID="STR_ACE_Medical_disabled">
             <English>Disabled</English>
             <Polish>Wyłączone</Polish>
             <Spanish>Activado</Spanish>
+            <German>Deaktiviert</German>
         </Key>
         <Key ID="STR_ACE_Medical_enabled">
             <English>Enabled</English>
             <Polish>Włączone</Polish>
             <Spanish>Desactivado</Spanish>
+            <German>Aktiviert</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_preventInstaDeath_DisplayName">
             <English>Prevent instant death</English>
             <Polish>Wył. natychmiast. śmierć</Polish>
             <Spanish>Prevenir muerte instantánea</Spanish>
+            <German>Verhindere direkten Tod</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_preventInstaDeath_Description">
             <English>Have a unit move to unconscious instead of death</English>
             <Polish>Spraw, aby jednostka została przeniesiona do stanu nieprzytomności zamiast ginąć na miejscu od śmiertelnych obrażeń</Polish>
             <Spanish>Mover una unidad a inconsciente en vez de a muerta</Spanish>
+            <German>Lässt eine Einheit bewusstlos werden anstatt zu sterben</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_bleedingCoefficient_DisplayName">
             <English>Bleeding coefficient</English>
             <Polish>Mnożnik krwawienia</Polish>
             <Spanish>Coeficiente de sangrado</Spanish>
+            <German>Verblutungsmultiplikator</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_bleedingCoefficient_Description">
             <English>Coefficient to modify the bleeding speed</English>
             <Polish>Mnożnik modyfikujący prędkość wykrwawiania się</Polish>
             <Spanish>Coeficiente para modificar la velocidad de sangrado</Spanish>
+            <German>Multiplikator um die Verblutungsgeschwindigkeit zu verändern</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_painCoefficient_DisplayName">
             <English>Pain coefficient</English>
             <Polish>Mnożnik bólu</Polish>
             <Spanish>Coeficiente de dolor</Spanish>
+            <German>Schmerzmultiplikator</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_painCoefficient_Description">
             <English>Coefficient to modify the pain intensity</English>
             <Polish>Mnożnik modyfikujący intensywność bólu</Polish>
             <Spanish>Coeficiente para modificar la intensidad del dolor</Spanish>
+            <German>Multiplikator um den Schmerzintensität zu verändern</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_keepLocalSettingsSynced_DisplayName">
             <English>Sync status</English>
             <Polish>Synchronizuj status</Polish>
             <Spanish>Sincronizador estado</Spanish>
+            <German>Status synchronisieren</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_keepLocalSettingsSynced_Description">
             <English>Keep unit status synced. Recommended on.</English>
             <Polish>Utrzymuj synchronizację statusu jednostek. Zalecane zostawienie tej opcji włączonej.</Polish>
             <Spanish>Mantener el estado de la unidad sincronizado. Recomendado activado</Spanish>
+            <German>Status der Einheit synchron halten. Sollte aktiviert bleiben.</German>
         </Key>
         <Key ID="STR_ACE_MedicalSettings_Module_Description">
             <English>Provides a medical system for both players and AI.</English>
             <Polish>Moduł ten dostarcza system medyczny dla graczy oraz AI.</Polish>
             <Spanish>Proporciona un sistema médico para  jugadores e IA.</Spanish>
+            <German>Aktiviert ein medizinisches System für Spieler und KI.</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_Module_DisplayName">
             <English>Advanced Medical Settings [ACE]</English>
             <Polish>Zaawansowane ustawienia medyczne [ACE]</Polish>
             <Spanish>Ajustes médicos avanzados [ACE]</Spanish>
+            <German>Erweiterte medizinische Einstellungen [ACE]</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_DisplayName">
             <English>Enabled for</English>
             <Polish>Aktywne dla</Polish>
             <Spanish>Hablitado para</Spanish>
+            <German>Aktiviert für</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableFor_Description">
             <English>Select what units the advanced medical system will be enabled for</English>
             <Polish>Wybierz dla kogo zaawansowany system medyczny będzie aktywny</Polish>
             <Spanish>Seleccione para qué unidades será habilitado el sistema médico avanzado</Spanish>
+            <German>Wähle aus welche Einheiten das erweiterte medizinische System haben</German>
         </Key>
         <Key ID="STR_ACE_Medical_playeronly">
             <English>Players only</English>
             <Polish>Tylko dla graczy</Polish>
             <Spanish>Solo jugadores</Spanish>
+            <German>Nur Spieler</German>
         </Key>
         <Key ID="STR_ACE_Medical_playersandai">
             <English>Players and AI</English>
             <Polish>Gracze oraz AI</Polish>
             <Spanish>Jugadors e IA</Spanish>
+            <German>Spieler und KI</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_DisplayName">
             <English>Enable Advanced wounds</English>
             <Polish>Akt. zaawansowane rany</Polish>
             <Spanish>Activa heridas avanzadas</Spanish>
+            <German>Aktiviere erweiterte Wunden</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableAdvancedWounds_Description">
             <English>Allow reopening of bandaged wounds?</English>
             <Polish>Pozwól na otwieranie się zabandażowanych ran?</Polish>
             <Spanish>Permitir la reapertura de las heridas vendadas?</Spanish>
+            <German>Erlaube das Öffnen von bandagierten Wunden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_DisplayName">
             <English>Vehicle Crashes</English>
             <Polish>Obrażenia od kolizji</Polish>
             <Spanish>Accidentes de vehículos</Spanish>
+            <German>Fahrzeugunfälle</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_enableVehicleCrashes_Description">
             <English>Do units take damage from a vehicle crash?</English>
             <Polish>Czy jednostki otrzymują obrażenia w wyniku kolizji pojazdów?</Polish>
             <Spanish>¿Las unidades reciben daño de un accidente de tráfico?</Spanish>
+            <German>Bekommen Einheiten von Fahrzeugunfällen Schaden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_DisplayName">
             <English>Allow PAK</English>
             <Polish>Ust. apteczek osobistych</Polish>
             <Spanish>Permitir EPA</Spanish>
+            <German>Erlaube Erstehilfekasten</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_PAK_Description">
             <English>Who can use the PAK for full heal?</English>
             <Polish>Kto może skorzystać z apteczki osobistej w celu pełnego uleczenia?</Polish>
             <Spanish>¿Quién puede utilizar el EPA para una cura completa?</Spanish>
+            <German>Wer kann den Erstehilfekasten für eine Endheilung verwenden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_anyone">
             <English>Anyone</English>
             <Polish>Wszyscy</Polish>
             <Spanish>Nadie</Spanish>
+            <German>Jeder</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_Medic">
             <English>Medics only</English>
             <Polish>Tylko medycy</Polish>
             <Spanish>Solo médicos</Spanish>
+            <German>Nur Sanitäter</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_Special">
             <English>Doctors only</English>
             <Polish>Tylko doktorzy</Polish>
             <Spanish>Solo doctores</Spanish>
+            <German>Nur Ärzte</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_DisplayName">
             <English>Remove PAK on use</English>
             <Polish>Usuń apteczkę po użyciu</Polish>
             <Spanish>Eliminar EPA después del uso</Spanish>
+            <German>Entferne Erstehilfekasten bei Verwendung</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_PAK_Description">
             <English>Should PAK be removed on usage?</English>
             <Polish>Czy apteczka osobista powinna zniknąć z ekwipunku po jej użyciu?</Polish>
             <Spanish>El EPA será eliminado después de usarlo</Spanish>
+            <German>Sollen Erstehilfekästen bei Verwendung entfernt werden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_PAK_DisplayName">
             <English>Locations PAK</English>
             <Polish>Ogr. apteczek osobistych</Polish>
             <Spanish>Ubicacions del EPA</Spanish>
+            <German>Orte für Erstehilfekasten</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_PAK_Description">
             <English>Where can the personal aid kit be used?</English>
             <Polish>Gdzie można korzystać z apteczek osobistych?</Polish>
             <Spanish>¿Dónde se puede utilizar el equipo de primeros auxilios?</Spanish>
+            <German>Wo kann der Erstehilfekasten verwendet werden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_anywhere">
             <English>Anywhere</English>
             <Polish>Wszędzie</Polish>
             <Spanish>Donde sea</Spanish>
+            <German>Überall</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_vehicle">
             <English>Medical vehicles</English>
             <Polish>Pojazdy medyczne</Polish>
             <Spanish>Vehiculos médicos</Spanish>
+            <German>Medizinische Fahrzeuge</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_facility">
             <English>Medical facility</English>
             <Polish>Budynki medyczne</Polish>
             <Spanish>Centro médico</Spanish>
+            <German>Medizinische Einrichtungen</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_vehicleAndFacility">
             <English>Vehicles &amp; facility</English>
             <Polish>Pojazdy i budynki medyczne</Polish>
             <Spanish>Vehículos y centros</Spanish>
+            <German>Fahrzeuge &amp; Einrichtungen</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_disabled">
             <English>Disabled</English>
             <Polish>Wyłączone</Polish>
             <Spanish>Desactivado</Spanish>
+            <German>Deaktiviert</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_DisplayName">
             <English>Allow Surgical kit (Adv)</English>
             <Polish>Ust. zestawu chirurg.</Polish>
             <Spanish>Permitir equipo quirúrgico (Avanzado)</Spanish>
+            <German>Erlaube Operationskasten</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_medicSetting_SurgicalKit_Description">
             <English>Who can use the surgical kit?</English>
             <Polish>Kto może skorzystać z zestawu chirurgicznego w celu zszycia ran?</Polish>
             <Spanish>¿Quién puede utilizar el equipo quirúrgico?</Spanish>
+            <German>Wer kann den Operationskasten verwenden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_DisplayName">
             <English>Remove Surgical kit (Adv)</English>
             <Polish>Usuń zest. chir. po użyciu</Polish>
             <Spanish>Eliminar equipo quirúrgico (Avanzado)</Spanish>
+            <German>Enrtferne Operationskasten (erweitert)</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_consumeItem_SurgicalKit_Description">
             <English>Should Surgical kit be removed on usage?</English>
             <Polish>Czy zestaw chirurgiczny powinien zniknąć z ekwipunku po jego użyciu?</Polish>
             <Spanish>Eliminar el equipo quirúrgico después del uso</Spanish>
+            <German>Entferne Operationskästen bei Verwendung?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_DisplayName">
             <English>Locations Surgical kit (Adv)</English>
             <Polish>Ogr. zestawu chirurg.</Polish>
             <Spanish>Ubicaciones del equipo quirúrgico (Avanzado)</Spanish>
+            <German>Orte für Operationskästen (erweitert)</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_useLocation_SurgicalKit_Description">
             <English>Where can the Surgical kit be used?</English>
             <Polish>Gdzie można korzystać z zestawu chirurgicznego?</Polish>
             <Spanish>Dónde se puede utilizar el equipo quirúrgico</Spanish>
+            <German>Wo kann der Operationskasten verwendet werden?</German>
         </Key>
         <Key ID="STR_ACE_AdvancedMedicalSettings_Module_Description">
             <English>Configure the treatment settings from ACE Medical</English>
             <Polish>Skonfiguruj zaawansowane ustawienia leczenia systemu medycznego ACE</Polish>
             <Spanish>Configure las opciones de tratamiento del ACE Médico</Spanish>
+            <German>Behandlungseinstellungen vom ACE-Medical konfigurieren</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_Module_DisplayName">
             <English>Revive Settings [ACE]</English>
             <Polish>Ustawienia wskrzeszania [ACE]</Polish>
             <Spanish>Sistema de resucitado [ACE]</Spanish>
+            <German>Wiederbelebungseinstellungen [ACE]</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_enableRevive_DisplayName">
             <English>Enable Revive</English>
             <Polish>Aktywuj wskrzeszanie</Polish>
             <Spanish>Habilitar resucitado</Spanish>
+            <German>Erlaube Wiederbelebung</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_enableRevive_Description">
             <English>Enable a basic revive system</English>
             <Polish>Aktywuj podstawowy system wskrzeszania</Polish>
             <Spanish>Habilitar un sistema básico de resucitado</Spanish>
+            <German>Aktiviere Standard-Wiederbelebungssystem</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_maxReviveTime_DisplayName">
             <English>Max Revive time</English>
             <Polish>Maks. czas agonii</Polish>
             <Spanish>Tiempo máximo de resucitado</Spanish>
+            <German>Maximale Wiederbelebungszeit</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_maxReviveTime_Description">
             <English>Max amount of seconds a unit can spend in revive state</English>
             <Polish>Maksymalna długość agonii w sekundach (czas na wskrzeszenie)</Polish>
             <Spanish>Cantidad máxima de segundos que una unidad puede gastar en estado de resucitación</Spanish>
+            <German>Maximale Zeitspanne in Sekunden die eine Einheit im Wiederbelebungszustand verbringen kann</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_amountOfReviveLives_DisplayName">
             <English>Max Revive lives</English>
             <Polish>Maks. ilość wskrzeszeń</Polish>
             <Spanish>Vidas máximas de resucitado</Spanish>
+            <German>Maximale Leben bei Wiederbelebung</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_amountOfReviveLives_Description">
             <English>Max amount of lives a unit. 0 or -1 is disabled.</English>
             <Polish>Maksymalna ilość wskrzeszeń. Wpisz 0 lub -1 aby wyłączyć.</Polish>
             <Spanish>Cantidad máxima de vidas por unidad. 0 o -1 es desactivado.</Spanish>
+            <German>Maximale Anzahl von Leben einer Einheit. 0 or -1 bedeutet deaktiviert.</German>
         </Key>
         <Key ID="STR_ACE_ReviveSettings_Module_Description">
             <English>Provides a medical system for both players and AI.</English>
             <Polish>Moduł ten aktywuje podstawowy system wskrzeszania. Jednostka po otrzymaniu śmiertelnych obrażeń przechodzi do stanu agonii, która trwa określoną długość czasu. W tym czasie aby wskrzesić i jednocześnie odratować jednostkę należy opatrzeć jej rany i wykonać RKO.</Polish>
             <Spanish>Proporciona un sistema médico para jugadores e IA.</Spanish>
+            <German>Aktiviert das Medicsystem für Spieler und KI.</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_Module_DisplayName">
             <English>Set Medic Class [ACE]</English>
             <Polish>Ustaw klasę medyka [ACE]</Polish>
             <Spanish>Establecer case médica [ACE]</Spanish>
+            <German>Setze Sanitäterklassen [ACE]</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_EnableList_DisplayName">
             <English>List</English>
             <Polish>Lista</Polish>
             <Spanish>Lista</Spanish>
+            <German>Liste</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_EnableList_Description">
             <English>List of unit names that will be classified as medic, separated by commas.</English>
             <Polish>Lista nazw jednostek, które są sklasyfikowane jako medycy, oddzielone przecinkami.</Polish>
             <Spanish>Lista de los nombres de las unidades que se clasifican como médico, separados por comas.</Spanish>
+            <German>Liste von Namen, die als Sanitäter verwendet werden. Wird durch Kommas getrennt.</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_role_DisplayName">
             <English>Is Medic</English>
             <Polish>Klasa medyczna</Polish>
             <Spanish>Es médico</Spanish>
+            <German>Ist Sanitäter</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_role_Description">
             <English></English>
             <Polish></Polish>
+            <German>Dieses Modul legt fest welche Einheit ein Sanitäter ist.</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_role_none">
             <English>None</English>
             <Polish>Żadna</Polish>
             <Spanish>Nada</Spanish>
+            <German>Keine</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_role_medic">
             <English>Regular medic</English>
             <Polish>Zwykły medyk</Polish>
             <Spanish>Médico regular</Spanish>
+            <German>Normaler Sanitäter</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_role_doctor">
             <English>Doctor (Only Advanced Medics)</English>
             <Polish>Doktor (tylko zaawansowani medycy)</Polish>
             <Spanish>Doctor (Solo medicina avanzada)</Spanish>
+            <German>Arzt (nur erweiterte Sanitäter)</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicRoles_Module_Description">
             <English>Assigns the ACE medic class to a unit</English>
             <Polish>Moduł ten przypisuje klasę medyka ACE do jednostek.</Polish>
             <Spanish>Asigna la clase médico ACE a una unidad</Spanish>
+            <German>Weise die ACE-Sanitäterklasse einer Einheit zu</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_Module_DisplayName">
             <English>Set Medical Vehicle [ACE]</English>
             <Polish>Ustaw pojazd medyczny [ACE]</Polish>
             <Spanish>Establecer vehículos médicos [ACE]</Spanish>
+            <German>Setze medizinisches Fahrzeug [ACE]</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_EnableList_DisplayName">
             <English>List</English>
             <Polish>Lista</Polish>
             <Spanish>Lista</Spanish>
+            <German>Liste</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_EnableList_Description">
             <English>List of vehicles that will be classified as medical vehicle, separated by commas.</English>
             <Polish>Lista nazw pojazdów, które są sklasyfikowane jako pojazdy medyczne, oddzielone przecinkami.</Polish>
             <Spanish>Lista de los vehículos que se clasifican como vehículo médicos, separados por comas.</Spanish>
+            <German>Liste ovn Fahrzeugen, die als medizinische Fahrzeuge verwendet werden. Wird durch Kommas getrennt.</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_enabled_DisplayName">
             <English>Is Medical Vehicle</English>
             <Polish>Jest pojazdem med.</Polish>
             <Spanish>Es vehículo médico</Spanish>
+            <German>Ist medizinisches Fahrzeug</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_enabled_Description">
             <English>Whatever or not the objects in the list will be a medical vehicle.</English>
             <Polish>Czy pojazdy z tej listy są pojazdami medycznymi.</Polish>
             <Spanish>Cualquiera de la lista o fuera de ella será un vehículo médico.</Spanish>
+            <German>Leg fest ob das Objekt in der Liste ein medizinisches Fahrzeug ist.</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicVehicle_Module_Description">
             <English>Assigns the ACE medic class to a unit</English>
             <Polish>Moduł ten pozwala na przypisanie danym pojazdom statusu pojazdów medycznych. Wewnątrz takiego pojazdu można wykonywać zaawansowane zabiegi medyczne.</Polish>
             <Spanish>Asigna la clase médico ACE a una unidad</Spanish>
+            <German>Weist die ACE-Sanitäterklasse einer Einheit zu</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicalFacility_Module_DisplayName">
             <English>Set Medical Facility [ACE]</English>
             <Polish>Ustaw budynek medyczny [ACE]</Polish>
             <Spanish>Establece el centro médico [ACE]</Spanish>
+            <German>Setze medizinische Einrichtung [ACE]</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicalFacility_enabled_DisplayName">
             <English>Is Medical Facility</English>
             <Polish>Jest budynkiem med.</Polish>
             <Spanish>Es centro médico</Spanish>
+            <German>Ist eine medizinische Einrichtung</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicalFacility_enabled_Description">
             <English>Registers an object as a medical facility</English>
             <Polish>Przypisuje danemu obiektowi status budynku medycznego</Polish>
             <Spanish>Registra un objeto como un centro médico</Spanish>
+            <German>Definiert ein Objekt als medizinische Einrichtung</German>
         </Key>
         <Key ID="STR_ACE_AssignMedicalFacility_Module_Description">
             <English>Defines an object as a medical facility. This allows for more advanced treatments. Can be used on buildings and vehicles.</English>
             <Polish>Moduł ten pozwala przypisać status budynku medycznego danemu obiektowi. Budynek taki pozwala na wykonywanie zaawansowanych zabiegów medycznych. Może być użyte na pojazdach i budynkach.</Polish>
             <Spanish>Define un objeto como un centro médico. Esto permite tratamientos más avanzados. Se puede utilizar en edificios y vehículos.</Spanish>
+            <German>Definiert ein Objekt als medizinische Einrichtung. Das ermöglicht weitere Behandlungen. Kann bei Gebäuden und Fahrzeugen verwendet werden.</German>
         </Key>
         <Key ID="STR_ACE_medicalSupplyCrate">
             <English>[ACE] Medical Supply Crate (Basic)</English>
             <Polish>[ACE] Skrzynka z zapasami medycznymi (podstawowa)</Polish>
             <Spanish>[ACE] Caja de suministros médicos (Básica)</Spanish>
+            <German>[ACE] Medizinische Kiste (standard)</German>
         </Key>
         <Key ID="STR_ACE_medicalSupplyCrate_advanced">
             <English>[ACE] Medical Supply Crate (Advanced)</English>
             <Polish>[ACE] Skrzynka z zapasami medycznymi (zaawansowana)</Polish>
             <Spanish>[ACE] Caja de suministros médicos (Avanzada)</Spanish>
+            <German>[ACE] Medizinische Kiste (erweitert)</German>
         </Key>
         <Key ID="STR_ACE_Medical_Yes">
             <English>Yes</English>
@@ -3180,4 +3270,4 @@
             <Italian>No</Italian>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/microdagr/CfgVehicles.hpp b/addons/microdagr/CfgVehicles.hpp
index 949860742d..bd3164ac72 100644
--- a/addons/microdagr/CfgVehicles.hpp
+++ b/addons/microdagr/CfgVehicles.hpp
@@ -36,12 +36,8 @@ class CfgVehicles {
         };
     };
 
-    class Logic;
-    class Module_F: Logic {
-        class ArgumentsBaseUnits {};
-        class ModuleDescription {};
-    };
-    class GVAR(dagrModule): Module_F {
+    class ACE_Module;
+    class GVAR(dagrModule): ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_Dagr_Module_DisplayName";
@@ -62,7 +58,7 @@ class CfgVehicles {
                 };
             };
         };
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_Dagr_Module_Description";
         };
     };
diff --git a/addons/microdagr/stringtable.xml b/addons/microdagr/stringtable.xml
index 16d27464bd..dbdc7d43e8 100644
--- a/addons/microdagr/stringtable.xml
+++ b/addons/microdagr/stringtable.xml
@@ -315,26 +315,31 @@
             <English>How much map data is filled on MicroDAGR's</English>
             <Polish>Jak duża część informacji mapy jest załadowana do MicroDAGR?</Polish>
             <Spanish>Cuanta información está disponible en el mapa del MicroDAG</Spanish>
+            <German>Wie viel Daten auf einem MicroDAGR zu sehen sind</German>
         </Key>
         <Key ID="STR_ACE_Dagr_None">
             <English>Full Satellite + Buildings</English>
             <Polish>Pełna satelitarna + budynki</Polish>
             <Spanish>Satelite completo + Edificios</Spanish>
+            <German>Satellitenbild + Gebäude</German>
         </Key>
         <Key ID="STR_ACE_Dagr_Side">
             <English>Topographical + Roads</English>
             <Polish>Topograficzna + drogi</Polish>
             <Spanish>Topografico + Carreteras</Spanish>
+            <German>Topografisch + Straßen</German>
         </Key>
         <Key ID="STR_ACE_Dagr_Unique">
             <English>None (Cannot use map view)</English>
             <Polish>Żadna (wyłącza ekran mapy)</Polish>
             <Spanish>Nada (No se puede el mapa)</Spanish>
+            <German>Keine (kann keine Kartenansicht verwenden)</German>
         </Key>
         <Key ID="STR_ACE_Dagr_Module_Description">
             <English>Controls how much data is filled on the microDAGR items.  Less data restricts the map view to show less on the minimap.&lt;br /&gt;Source: microDAGR.pbo</English>
             <Polish>Moduł ten pozwala kontrolować jak duża ilość informacji jest załadowana do przedmiotów MicroDAGR. Mniejsza ilość danych ogranicza widok mapy pokazując mniej rzeczy na minimapie.&lt;br /&gt;Źródło: microDAGR.pbo</Polish>
             <Spanish>Controla la cantidad de información disponible en el microDAGR. Menos datos limitan la vista del mapa a mostrar menos en el minimapa.&lt;br /&gt;Fuente: microDAGR.pbo</Spanish>
+            <German>Steuert wie viel Daten auf dem microDAGR zu sehen ist. Weniger Daten schränken die Kartenansicht ein, um mehr auf der Minimap zu sehen.&lt;br /&gt;Quelle: microDAGR.pbo</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/missileguidance/stringtable.xml b/addons/missileguidance/stringtable.xml
index 2b0b60664b..7b445db443 100644
--- a/addons/missileguidance/stringtable.xml
+++ b/addons/missileguidance/stringtable.xml
@@ -19,7 +19,7 @@
             <Italian>Guida dei missili avanzata, o AMG, offre diversi miglioramenti alla teleguida di missili. E' anche un sistema necessario per i tipi di armi missile.</Italian>
             <Russian>Продвинутое наведение ракет, или ПНР, обеспечивает множество усовершествований для наведения и стрельбы ракет. Также, это система, необходимая для всех ракетных типов оружия.</Russian>
             <Spanish>El guiado avanzado de misiles, o AMG en sus siglas en inglés, ofrece múltiples mejoras en el fijado y disparo de misiles. Es también un sistema requerido para armas de tipo misil.</Spanish>
-            <German>Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkten Raketen. </German>
+            <German>Das Erweiterte Raketenlenksystem, auch ERls genannt, bietet viele Verbesserungen zum Aufschalten und Feuern mittels gelenkter Raketen. </German>
             <French>Le guidage avancé de missile, ou AMG en anglais, apporte de multiple améliorations au verouillage et au tir de missiles. C'est aussi un framework requis pour tout arme de type missile.</French>
             <Hungarian>A fejlett rakétairányító (vagy AMG) többféle módosítást tartalmaz a rakéták célkövetéséhez és tüzeléséhez. Ez egy szükséges keresztrendszer a rakéta-alapú fegyverekhez.</Hungarian>
             <Portuguese>Orientação avançada de mísseis ou OAM, fornece vários aprimoramentos para travamento de mísseis e disparos. Também é um sistema requerido para disparar armas que utilizem mísseis.</Portuguese>
@@ -101,16 +101,19 @@
             <English>Off</English>
             <Polish>Wyłącz</Polish>
             <Spanish>Desactivado</Spanish>
+            <German>Aus</German>
         </Key>
         <Key ID="STR_ACE_MissileGuidance_PlayerOnly">
             <English>Player Only</English>
             <Polish>Tylko gracz</Polish>
             <Spanish>Solo jugador</Spanish>
+            <German>Nur Spieler</German>
         </Key>
         <Key ID="STR_ACE_MissileGuidance_PlayerAndAi">
             <English>Player and AI</English>
             <Polish>Gracz oraz AI</Polish>
             <Spanish>Jugador e IA</Spanish>
+            <German>Spieler und KI</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/missionmodules/stringtable.xml b/addons/missionmodules/stringtable.xml
index d577db8899..d1e6db9291 100644
--- a/addons/missionmodules/stringtable.xml
+++ b/addons/missionmodules/stringtable.xml
@@ -5,86 +5,103 @@
             <English>ACE Mission Modules</English>
             <Polish>ACE Moduły misji</Polish>
             <Spanish>Módulo de misiones ACE</Spanish>
+            <German>ACE-Missionsmodule</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_DisplayName">
             <English>Ambiance Sounds [ACE]</English>
             <Polish>Dźwięki [ACE]</Polish>
             <Spanish>[ACE] Sonidos ambiente</Spanish>
+            <German>Umgebungsgeräusche [ACE]</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_DisplayName">
             <English>Sounds</English>
             <Polish>Dźwięki</Polish>
             <Spanish>Sonidos</Spanish>
+            <German>Sounds</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_soundFiles_Description">
             <English>Class names of the ambiance sounds to be played. Seperated by ','</English>
             <Polish>Class name-y dźwięków do odtwarzania. Oddzielone przy użyciu ','</Polish>
             <Spanish>Class names de los sonidos ambiente que se reproducirán. Separados por ','</Spanish>
+            <German>Klassennamen der Umgebungsgeräusche, die abgespielt werden sollen. Getrennt durch ","</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_DisplayName">
             <English>Minimal Distance</English>
             <Polish>Minimalny dystans</Polish>
             <Spanish>Distancia mínima</Spanish>
+            <German>Mindestabstand</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDistance_Description">
             <English>Used for calculating a random position and sets the minimal distance between the players and the played sound file(s)</English>
             <Polish>Używany do obliczania losowej pozycji a także ustawia minimalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi</Polish>
             <Spanish>Usado para calcular una posición aleatoria y establecer la distancia mínima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
+            <German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Mindestabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_DisplayName">
             <English>Maximum Distance</English>
             <Polish>Maksymalny dystans</Polish>
             <Spanish>Distancia máxima</Spanish>
+            <German>Maximalabstand</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDistance_Description">
             <English>Used for calculating a random position and sets the maximum distance between the players and the played sound file(s)</English>
             <Polish>Używany do obliczania losowej pozycji a także ustawia maksymalny dystans pomiędzy graczami a odtwarzanymi plikami dźwiękowymi</Polish>
             <Spanish>Usado para calcular una posición aleatoria y establecer la distancia máxima entre los jugadores y los ficheros de sonido reproducidos</Spanish>
+            <German>Wird verwendet, um eine zufällige Position zu bestimmen und setzt den Maximalabstand zwischen Spielern und der/den abzuspielenden Sounddatei(en) fest</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_DisplayName">
             <English>Minimal Delay</English>
             <Polish>Minimalne opóźnienie</Polish>
             <Spanish>Retraso mínimo</Spanish>
+            <German>Minimale Verzögerung</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_minimalDelay_Description">
             <English>Minimal delay between sounds played</English>
             <Polish>Minimalne opóźnienie pomiędzy odtwarzanymi dźwiękami</Polish>
             <Spanish>Retraso mínimo entre los sonidos reproducidos</Spanish>
+            <German>Minimale Verzögerung zwischen abzuspielenden Sounds</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_DisplayName">
             <English>Maximum Delay</English>
             <Polish>Maksymalne opóźnienie</Polish>
             <Spanish>Retraso máximo</Spanish>
+            <German>Maximale Verzögerung</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_maximalDelay_Description">
             <English>Maximum delay between sounds played</English>
             <Polish>Maksymalne opóźnienie pomiędzy odtwarzanymi dźwiękami</Polish>
             <Spanish>Retraso máximo entre los sonidos reproducidos</Spanish>
+            <German>Maximale Verzögerung zwischen abzuspielenden Sounds</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_DisplayName">
             <English>Follow Players</English>
             <Polish>Podążaj za graczami</Polish>
             <Spanish>Seguir jugadores</Spanish>
+            <German>Spielern folgen</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_followPlayers_Description">
             <English>Follow players. If set to false, loop will play sounds only nearby logic position.</English>
             <Polish>Podążaj za graczami. Jeżeli ustawione na 'Nie', pętla będzie odtwarzana tylko w pobliżu pozycji logiki.</Polish>
             <Spanish>Seguir jugadores. Si esta desabilitado (false), se reproducirán sonidos en bucle solo cerca de la posición lógica.</Spanish>
+            <German>Spielern folgen. Wenn auf falsch gesetzt, werden Sounds nur in der Nähe des Logikmoduls abgespielt.</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_DisplayName">
             <English>Volume</English>
             <Polish>Głośność</Polish>
             <Spanish>Volumen</Spanish>
+            <German>Lautstärke</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_soundVolume_Description">
             <English>The volume of the sounds played</English>
             <Polish>Głośność odtwarzanych dźwięków</Polish>
             <Spanish>Volumen de los sonidos reproducidos</Spanish>
+            <German>Lautstärke der abzuspielenden Sounds</German>
         </Key>
         <Key ID="STR_ACE_MissionModules_AmbianceSounds_Description">
             <English>Ambiance sounds loop (synced across MP)</English>
             <Polish>Pętla odtwarzania dzwięków (synchronizowana na MP)</Polish>
             <Spanish>Bucle de sonidos ambiente (sincronizados en MP)</Spanish>
+            <German>Umgebungsgeräusch-Schleife (im MP synchronisiert)</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/mk6mortar/CfgVehicles.hpp b/addons/mk6mortar/CfgVehicles.hpp
index e4a9d0f2a5..5708f3c670 100644
--- a/addons/mk6mortar/CfgVehicles.hpp
+++ b/addons/mk6mortar/CfgVehicles.hpp
@@ -43,11 +43,8 @@ class CfgVehicles {
         };
     };
 
-    class Logic;
-    class Module_F: Logic {
-        class ModuleDescription {};
-    };
-    class GVAR(module): Module_F {
+    class ACE_Module;
+    class GVAR(module): ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_mk6mortar_Module_DisplayName";
@@ -76,7 +73,7 @@ class CfgVehicles {
                 defaultValue = 1;
             };
         };
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_mk6mortar_Module_Description";
         };
     };
diff --git a/addons/mk6mortar/stringtable.xml b/addons/mk6mortar/stringtable.xml
index 563e14d68f..3e3f2aba82 100644
--- a/addons/mk6mortar/stringtable.xml
+++ b/addons/mk6mortar/stringtable.xml
@@ -53,40 +53,48 @@
             <English>MK6 Settings</English>
             <Polish>Moździerz MK6 - Ustawienia</Polish>
             <Spanish>Ajustes MK6</Spanish>
+            <German>MK6-Einstellungen</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_airResistanceEnabled_DisplayName">
             <English>Air Resistance</English>
             <Polish>Opór powietrza</Polish>
             <Spanish>Resistencia al aire</Spanish>
+            <German>Luftwiderstand</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_airResistanceEnabled_Description">
             <English>For Player Shots, Model Air Resistance and Wind Effects</English>
             <Polish>Modeluj opór powietrza oraz wpływ wiatru na tor lotu pocisku dla strzałów z moździerza MK6 przez graczy</Polish>
             <Spanish>Para disparos del jugador, modelo de resistencia al aire y efectos de viento</Spanish>
+            <German>Für Spielerschüsse, Luftwiderstand und Windeffekte</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_allowComputerRangefinder_DisplayName">
             <English>Allow MK6 Computer</English>
             <Polish>Komputer MK6</Polish>
             <Spanish>Habilitar ordenador del MK6</Spanish>
+            <German>Erlaube MK6-Computer</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_allowComputerRangefinder_Description">
             <English>Show the Computer and Rangefinder (these NEED to be removed if you enable air resistance)</English>
             <Polish>Zezwól na komputer i dalmierz (opcja ta MUSI zostać wyłączona jeżeli aktywowałeś opór powietrza)</Polish>
             <Spanish>Muestra el ordenador y el medidor de distancia (DEBEN ser quitados si se activa la resistecia al aire)</Spanish>
+            <German>Zeige den Computer und den Entfernungsmesser an (diese MÜSSEN entfernt werden, wenn der Luftwiderstand aktiviert ist)</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_allowCompass_DisplayName">
             <English>Allow MK6 Compass</English>
             <Polish>Kompas MK6</Polish>
             <Spanish>Habilitar brujula del MK6</Spanish>
+            <German>Erlaube MK6-Kompass</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_allowCompass_Description">
             <English>Show the MK6 Digital Compass</English>
             <Polish>Pokaż kompas MK6</Polish>
             <Spanish>Muestra la brujula digital en el MK6</Spanish>
+            <German>Zeige MK6-Digitaler-Kompass</German>
         </Key>
         <Key ID="STR_ACE_mk6mortar_Module_Description">
             <English></English>
             <Polish>Moduł ten pozwala dostosować ustawienia moździerza MK6.</Polish>
+            <German>Dieses Modul erlaubt das Einstellen des MK6-Mörsers.</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/modules/XEH_postInit.sqf b/addons/modules/XEH_postInit.sqf
index b6aecf5f90..170c2e8c24 100644
--- a/addons/modules/XEH_postInit.sqf
+++ b/addons/modules/XEH_postInit.sqf
@@ -1,44 +1,46 @@
 
 #include "script_component.hpp"
 
-// TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it.
-// We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution.
-{
-    [_x] call {
-        private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"];
-        _logic = _this select 0;
-        _logicType = typeof _logic;
-        _logic hideobject true;
+["InitSettingsFromModules", {
+    // TODO This is a basic and limited implementation that mimics some of the functionality from the A3 module framework, but not all of it.
+    // We have to execute this in the postInit XEH because on object init, the parameters of the modules are not yet available. They are if we execute it at the start of postInit execution.
+    {
+        [_x] call {
+            private ["_logic", "_logicType", "_config", "_isGlobal", "_isDisposable", "_isPersistent","_function"];
+            _logic = _this select 0;
+            _logicType = typeof _logic;
+            _logic hideobject true;
 
-        if (_logic getvariable [QGVAR(initalized), false]) exitwith {};
-        _config = (configFile >> "CfgVehicles" >> _logicType);
-        if !(isClass _config) exitwith {};
+            if (_logic getvariable [QGVAR(initalized), false]) exitwith {};
+            _config = (configFile >> "CfgVehicles" >> _logicType);
+            if !(isClass _config) exitwith {};
 
-        // isGlobal = 1;
-        _isGlobal = getNumber (_config >> "isGlobal") > 0;
-        _isDisposable = getNumber (_config >> "isDisposable") > 0;
-        _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1;
-        _function = getText (_config >> "function");
-        if (isnil _function) then {
-            _function = compile _function;
-        } else {
-            _function = missionNamespace getvariable _function;
-        };
+            // isGlobal = 1;
+            _isGlobal = getNumber (_config >> "isGlobal") > 0;
+            _isDisposable = getNumber (_config >> "isDisposable") > 0;
+            _isPersistent = getNumber (_config >> "isPersistent") > 0 || getnumber (_config >> "isGlobal") > 1;
+            _function = getText (_config >> "function");
+            if (isnil _function) then {
+                _function = compile _function;
+            } else {
+                _function = missionNamespace getvariable _function;
+            };
 
-        if (_isGlobal) then {
-            [_logic, [], true] call _function;
-        } else {
-            if (isServer) then {
+            if (_isGlobal) then {
                 [_logic, [], true] call _function;
+            } else {
+                if (isServer) then {
+                    [_logic, [], true] call _function;
+                };
+            };
+
+            if !(_isPersistent) then {
+                _logic setvariable [QGVAR(initalized), true];
+            };
+
+            if (_isDisposable) then {
+                deleteVehicle _logic;
             };
         };
-
-        if !(_isPersistent) then {
-            _logic setvariable [QGVAR(initalized), true];
-        };
-
-        if (_isDisposable) then {
-            deleteVehicle _logic;
-        };
-    };
-}foreach GVAR(moduleInitCollection);
+    }foreach GVAR(moduleInitCollection);
+}] call EFUNC(common,addEventhandler);
diff --git a/addons/modules/config.cpp b/addons/modules/config.cpp
index c5880e7bb1..d25e193d32 100644
--- a/addons/modules/config.cpp
+++ b/addons/modules/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
         units[] = {};
         weapons[] = {};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_common"};
+        requiredAddons[] = {"ace_main"};
         author[] = {"Glowbal"};
         authorUrl = "";
         VERSION_CONFIG;
diff --git a/addons/mx2a/$PBOPREFIX$ b/addons/mx2a/$PBOPREFIX$
new file mode 100644
index 0000000000..1042853ad7
--- /dev/null
+++ b/addons/mx2a/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\mx2a
\ No newline at end of file
diff --git a/addons/mx2a/CfgVehicles.hpp b/addons/mx2a/CfgVehicles.hpp
new file mode 100644
index 0000000000..d58150ff4b
--- /dev/null
+++ b/addons/mx2a/CfgVehicles.hpp
@@ -0,0 +1,20 @@
+class CfgVehicles {
+    class Item_Base_F;
+    class ACE_Item_MX2A: Item_Base_F {
+        author[] = {"Spooner", "tcp"};
+        scope = 2;
+        scopeCurator = 2;
+        displayName = "$STR_ACE_MX2A_DisplayName";
+        vehicleClass = "Items";
+        class TransportWeapons {
+            MACRO_ADDWEAPON(ACE_MX2A,1);
+        };
+    };
+
+    class Box_NATO_Support_F;
+    class ACE_Box_Misc: Box_NATO_Support_F {
+        class TransportWeapons {
+            MACRO_ADDWEAPON(ACE_MX2A,6);
+        };
+    };
+};
diff --git a/addons/mx2a/CfgWeapons.hpp b/addons/mx2a/CfgWeapons.hpp
new file mode 100644
index 0000000000..0a9dadd85a
--- /dev/null
+++ b/addons/mx2a/CfgWeapons.hpp
@@ -0,0 +1,26 @@
+
+class CfgWeapons {
+    class Binocular;
+    class ACE_MX2A: Binocular {
+        author = "$STR_ACE_Common_ACETeam";
+        displayName = "$STR_ACE_MX2A_DisplayName";
+        descriptionShort = "$STR_ACE_MX2A_Description";
+        model = PATHTOF(data\ace_mx2a.p3d);
+        modelOptics = QUOTE(PATHTOEF(apl,LWTS_optic.p3d));
+        picture = PATHTOF(UI\w_mx2a_ca.paa);
+        opticsZoomMax = 0.1;
+        distanceZoomMax = 120;
+        opticsZoomMin = 0.05;
+        distanceZoomMin = 400;
+        opticsZoomInit = 0.1;
+        visionMode[] = {"Ti"};
+        thermalMode[] = {0,1};
+        discretefov[] = {0.33333/1, 0.33333/2}; // 1x/2x -- http://www.drs.com/Products/RSTA/PDF/MX2A.pdf
+        discreteInitIndex = 0;
+        discreteDistance[] = {120,400};
+        discreteDistanceInitIndex = 1;
+        class WeaponSlotsInfo {
+            mass = 20;
+        };
+    };
+};
diff --git a/addons/mx2a/README.md b/addons/mx2a/README.md
new file mode 100644
index 0000000000..cbaf9add1b
--- /dev/null
+++ b/addons/mx2a/README.md
@@ -0,0 +1,10 @@
+ace_mx2a
+==========
+
+Adds the MX-2A thermal imaging device.
+
+## Maintainers
+
+The people responsible for merging changes to this component or answering potential questions.
+
+- [Ruthberg] (http://github.com/Ulteq)
diff --git a/addons/mx2a/UI/w_mx2a_ca.paa b/addons/mx2a/UI/w_mx2a_ca.paa
new file mode 100644
index 0000000000..748a01d5f4
Binary files /dev/null and b/addons/mx2a/UI/w_mx2a_ca.paa differ
diff --git a/addons/mx2a/config.cpp b/addons/mx2a/config.cpp
new file mode 100644
index 0000000000..45b1643ed2
--- /dev/null
+++ b/addons/mx2a/config.cpp
@@ -0,0 +1,15 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+    class ADDON {
+        units[] = {"ACE_Item_MX2A"};
+        weapons[] = {"ACE_MX2A"};
+        requiredVersion = REQUIRED_VERSION;
+        requiredAddons[] = {"ace_apl"};
+        author[] = {"Spooner", "tcp"};
+        VERSION_CONFIG;
+    };
+};
+
+#include "CfgVehicles.hpp"
+#include "CfgWeapons.hpp"
diff --git a/addons/mx2a/data/ace_mx2a.p3d b/addons/mx2a/data/ace_mx2a.p3d
new file mode 100644
index 0000000000..f2664de20b
Binary files /dev/null and b/addons/mx2a/data/ace_mx2a.p3d differ
diff --git a/addons/mx2a/data/mx2A_ti_ca.paa b/addons/mx2a/data/mx2A_ti_ca.paa
new file mode 100644
index 0000000000..1315a56aa8
Binary files /dev/null and b/addons/mx2a/data/mx2A_ti_ca.paa differ
diff --git a/addons/mx2a/data/mx2a.rvmat b/addons/mx2a/data/mx2a.rvmat
new file mode 100644
index 0000000000..d614433dce
--- /dev/null
+++ b/addons/mx2a/data/mx2a.rvmat
@@ -0,0 +1,81 @@
+ambient[]={1,1,1,1};
+diffuse[]={1,1,1,1};
+forcedDiffuse[]={0,0,0,0};
+emmisive[]={0,0,0,1};
+specular[]={0.1,0.1,0.1,1};
+specularPower=30;
+PixelShaderID="Super";
+VertexShaderID="Super";
+class Stage1 {
+ texture="z\ace\addons\mx2a\data\mx2a_nohq.paa";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={1,0,0};
+        up[]={0,1,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage2 {
+    texture="a3\weapons_f\data\detailmaps\metal_detail_dt.paa";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={2,-1.568,0};
+        up[]={1.568,4,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage3 {
+    texture="#(argb,8,8,3)color(0,0,0,0,MC)";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={0.98480773,-0.17364819,0};
+        up[]={0.17364819,0.98480773,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage4 {
+ texture="z\ace\addons\mx2a\data\mx2a_as.paa";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={1,0,0};
+        up[]={0,1,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage5 {
+ texture="z\ace\addons\mx2a\data\mx2a_smdi.paa";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={1,0,0};
+        up[]={0,1,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage6 {
+    texture="#(ai,16,2,2)fresnel(1.5,1.22)";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={1,0,0};
+        up[]={0,1,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class Stage7 {
+    texture="a3\data_f\env_land_co.paa";
+    uvSource="tex";
+    class uvTransform {
+        aside[]={1,0,0};
+        up[]={0,1,0};
+        dir[]={0,0,0};
+        pos[]={0,0,0};
+    };
+};
+class StageTI {
+ texture="z\ace\addons\mx2a\data\mx2a_ti_ca.paa";
+};
\ No newline at end of file
diff --git a/addons/mx2a/data/mx2a_as.paa b/addons/mx2a/data/mx2a_as.paa
new file mode 100644
index 0000000000..4bf1b49b8a
Binary files /dev/null and b/addons/mx2a/data/mx2a_as.paa differ
diff --git a/addons/mx2a/data/mx2a_co.paa b/addons/mx2a/data/mx2a_co.paa
new file mode 100644
index 0000000000..28db7f08b2
Binary files /dev/null and b/addons/mx2a/data/mx2a_co.paa differ
diff --git a/addons/mx2a/data/mx2a_nohq.paa b/addons/mx2a/data/mx2a_nohq.paa
new file mode 100644
index 0000000000..adff9a6fb0
Binary files /dev/null and b/addons/mx2a/data/mx2a_nohq.paa differ
diff --git a/addons/mx2a/data/mx2a_smdi.paa b/addons/mx2a/data/mx2a_smdi.paa
new file mode 100644
index 0000000000..9eab8a9cb4
Binary files /dev/null and b/addons/mx2a/data/mx2a_smdi.paa differ
diff --git a/addons/mx2a/script_component.hpp b/addons/mx2a/script_component.hpp
new file mode 100644
index 0000000000..aabb74660a
--- /dev/null
+++ b/addons/mx2a/script_component.hpp
@@ -0,0 +1,12 @@
+#define COMPONENT mx2a
+#include "\z\ace\addons\main\script_mod.hpp"
+
+#ifdef DEBUG_ENABLED_MX2A
+    #define DEBUG_MODE_FULL
+#endif
+
+#ifdef DEBUG_SETTINGS_MX2A
+    #define DEBUG_SETTINGS DEBUG_SETTINGS_MX2A
+#endif
+
+#include "\z\ace\addons\main\script_macros.hpp"
\ No newline at end of file
diff --git a/addons/mx2a/stringtable.xml b/addons/mx2a/stringtable.xml
new file mode 100644
index 0000000000..4f8168d518
--- /dev/null
+++ b/addons/mx2a/stringtable.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project name="ACE">
+    <Package name="MX2A">
+        <Key ID="STR_ACE_MX2A_DisplayName">
+            <English>MX-2A</English>
+        </Key>
+        <Key ID="STR_ACE_MX2A_Description">
+            <English>Thermal imaging device</English>
+            <German>Wärmebildgerät</German>
+        </Key>
+    </Package>
+</Project>
diff --git a/addons/nametags/ACE_Settings.hpp b/addons/nametags/ACE_Settings.hpp
index 90d2b7d8c9..5270321768 100644
--- a/addons/nametags/ACE_Settings.hpp
+++ b/addons/nametags/ACE_Settings.hpp
@@ -11,7 +11,7 @@ class ACE_Settings {
         isClientSettable = 1;
         displayName = "$STR_ACE_NameTags_ShowPlayerNames";
         description = "$STR_ACE_NameTags_ShowPlayerNames_Desc";
-        values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_Enabled", "$STR_ACE_Common_OnlyCursor", "$STR_ACE_Common_OnlyOnKeypress", "$STR_ACE_Common_OnlyCursorAndKeyPress"};
+        values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_Enabled", "$STR_ACE_NameTags_OnlyCursor", "$STR_ACE_NameTags_OnlyKeypress", "$STR_ACE_NameTags_OnlyCursorAndKeypress"};
     };
     class GVAR(showPlayerRanks) {
         value = 1;
@@ -42,14 +42,14 @@ class ACE_Settings {
         isClientSettable = 1;
         displayName = "$STR_ACE_NameTags_ShowSoundWaves";
         description = "$STR_ACE_NameTags_ShowSoundWaves_Desc";
-        values[] = {"$STR_ACE_Common_Disabled", "$STR_ACE_Common_NameTagSettings", "$STR_ACE_Common_AlwaysShowAll"};
+        values[] = {"$STR_ACE_NameTags_Disabled", "$STR_ACE_NameTags_NameTagSettings", "$STR_ACE_NameTags_AlwaysShowAll"};
     };
-    class GVAR(PlayerNamesViewDistance) {
+    class GVAR(playerNamesViewDistance) {
         value = 5;
         typeName = "SCALAR";
         isClientSettable = 0;
     };
-    class GVAR(PlayerNamesMaxAlpha) {
+    class GVAR(playerNamesMaxAlpha) {
         value = 0.8;
         typeName = "SCALAR";
         isClientSettable = 0;
@@ -58,8 +58,8 @@ class ACE_Settings {
         value = 2;
         typeName = "SCALAR";
         isClientSettable = 1;
-        displayName = "$STR_ACE_nametags_tagsize_name";
-        description = "$STR_ACE_nametags_tagsize_description";
+        displayName = "$STR_ACE_NameTags_TagSize_Name";
+        description = "$STR_ACE_NameTags_TagSize_Description";
         values[] = {"$str_very_small", "$str_small", "$str_medium", "$str_large", "$str_very_large"};
     };
-};
\ No newline at end of file
+};
diff --git a/addons/nametags/CfgVehicles.hpp b/addons/nametags/CfgVehicles.hpp
index fabd3b09cb..1719ee69ce 100644
--- a/addons/nametags/CfgVehicles.hpp
+++ b/addons/nametags/CfgVehicles.hpp
@@ -1,9 +1,6 @@
 class CfgVehicles {
-    class Logic;
-    class Module_F: Logic {
-        class ModuleDescription {};
-    };
-    class ACE_ModuleNameTags : Module_F {
+    class ACE_Module;
+    class ACE_ModuleNameTags: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_NameTags_Module_DisplayName";
@@ -12,7 +9,39 @@ class CfgVehicles {
         isGlobal = 1;
         icon = QUOTE(PATHTOF(UI\Icon_Module_NameTags_ca.paa));
         class Arguments {
-            class PlayerNamesViewDistance {
+            class showPlayerNames {
+                displayName = "$STR_ACE_NameTags_ShowPlayerNames";
+                description = "$STR_ACE_NameTags_ShowPlayerNames_Desc";
+                typeName = "NUMBER";
+                class values {
+                    class DoNotForce {
+                        default = 1;
+                        name = "$STR_ACE_NameTags_DoNotForce";
+                        value = -1;
+                    };
+                    class ForceHide {
+                        name = "$STR_ACE_NameTags_ForceHide";
+                        value = 0;
+                    };
+                    class ForceShow {
+                        name = "$STR_ACE_NameTags_ForceShow";
+                        value = 1;
+                    };
+                    class ForceShowOnlyCursor {
+                        name = "$STR_ACE_NameTags_ForceShowOnlyCursor";
+                        value = 2;
+                    };
+                    class ForceShowOnlyKeypress {
+                        name = "$STR_ACE_NameTags_ForceShowOnlyKeypress";
+                        value = 3;
+                    };
+                    class ForceShowOnlyCursorAndKeypress {
+                        name = "$STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress";
+                        value = 4;
+                    };
+                };
+            };
+            class playerNamesViewDistance {
                 displayName = "$STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName";
                 description = "$STR_ACE_NameTags_PlayerNamesViewDistance_Description";
                 typeName = "NUMBER";
@@ -65,7 +94,7 @@ class CfgVehicles {
                 defaultValue = 0;
             };
         };
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_NameTags_Module_Description";
         };
     };
diff --git a/addons/nametags/XEH_postInit.sqf b/addons/nametags/XEH_postInit.sqf
index e34038950a..433de7c494 100644
--- a/addons/nametags/XEH_postInit.sqf
+++ b/addons/nametags/XEH_postInit.sqf
@@ -5,7 +5,7 @@
 
 if (!hasInterface) exitWith {};
 
-GVAR(ShowNamesTime) = -10;
+GVAR(showNamesTime) = -10;
 
 // Add keybinds
 ["ACE3 Common", QGVAR(showNameTags), localize "STR_ACE_NameTags_ShowNames",
@@ -14,7 +14,7 @@ GVAR(ShowNamesTime) = -10;
     if !([ACE_player, objNull, []] call EFUNC(common,canInteractWith)) exitWith {false};
 
     // Statement
-    GVAR(ShowNamesTime) = ACE_time;
+    GVAR(showNamesTime) = ACE_time;
     if (call FUNC(canShow)) then{ call FUNC(doShow); };
     // Return false so it doesn't block other actions
     false
@@ -61,5 +61,13 @@ GVAR(ShowNamesTime) = -10;
 // Wait until the colors are defined before starting to draw the nametags
 ["SettingsInitialized", {
     // Draw handle
-    addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}];
+    call FUNC(updateSettings);
+}] call EFUNC(common,addEventHandler);
+
+// Change settings accordingly when they are changed
+["SettingChanged", {
+    PARAMS_1(_name);
+    if (_name  == QGVAR(showPlayerNames)) then {
+        call FUNC(updateSettings);
+    };
 }] call EFUNC(common,addEventHandler);
diff --git a/addons/nametags/XEH_preInit.sqf b/addons/nametags/XEH_preInit.sqf
index f3c9a97cba..51b926cbb3 100644
--- a/addons/nametags/XEH_preInit.sqf
+++ b/addons/nametags/XEH_preInit.sqf
@@ -10,5 +10,6 @@ PREP(initIsSpeaking);
 PREP(moduleNameTags);
 PREP(onDraw3d);
 PREP(setText);
+PREP(updateSettings);
 
 ADDON = true;
diff --git a/addons/nametags/config.cpp b/addons/nametags/config.cpp
index 77e90b3b6b..a2d38254f1 100644
--- a/addons/nametags/config.cpp
+++ b/addons/nametags/config.cpp
@@ -13,6 +13,7 @@ class CfgPatches {
 };
 
 #include "CfgEventHandlers.hpp"
-#include "CfgVehicles.hpp"
 #include "ACE_Settings.hpp"
+#include "CfgVehicles.hpp"
+
 #include <RscTitles.hpp>
diff --git a/addons/nametags/functions/common.hpp b/addons/nametags/functions/common.hpp
index caa7a3e982..6aeb24fc5a 100644
--- a/addons/nametags/functions/common.hpp
+++ b/addons/nametags/functions/common.hpp
@@ -1,12 +1,8 @@
 /*
-    Author: aeroson
-
-    Description:
-        Images, index in images and order of roles.
-        Defined number also implies order, lower number shows more on top of the list.
-*/
-
-#include "script_component.hpp"
+ * Author: aeroson
+ * Images, index in images and order of roles.
+ * Defined number also implies order, lower number shows more on top of the list.
+ */
 
 #define PILOT 0
 #define DRIVER 1
diff --git a/addons/nametags/functions/fnc_canShow.sqf b/addons/nametags/functions/fnc_canShow.sqf
index 0e187fee0f..b53f50c93e 100644
--- a/addons/nametags/functions/fnc_canShow.sqf
+++ b/addons/nametags/functions/fnc_canShow.sqf
@@ -1,19 +1,22 @@
 /*
-    Author: aeroson
-
-    Description:
-        Might be called several times a second
-
-    Parameters:
-        None
-
-    Returns:
-        true if CrewInfo can be shown, false otherwise
-*/
-
+ * Author: aeroson
+ * Checks if crew info can be shown.
+ * Might be called several times a second.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * Can show Crew Info <BOOL>
+ *
+ * Example:
+ * call ace_nametags_fnc_doShow
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 
-private["_player"];
+private ["_player"];
 
 _player = ACE_player;
 
diff --git a/addons/nametags/functions/fnc_doShow.sqf b/addons/nametags/functions/fnc_doShow.sqf
index 16a6329347..1b7323921f 100644
--- a/addons/nametags/functions/fnc_doShow.sqf
+++ b/addons/nametags/functions/fnc_doShow.sqf
@@ -1,16 +1,18 @@
 /*
-    Author: aeroson
-    
-    Description:
-        Shows the actual text and sets text the crew info       
-
-    Parameters: 
-        None
-
-    Returns:
-        Nothing
-*/
-
+ * Author: aeroson
+ * Shows the actual text and sets text the crew info.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * call ace_nametags_fnc_doShow
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 #include "common.hpp";
 
diff --git a/addons/nametags/functions/fnc_drawNameTagIcon.sqf b/addons/nametags/functions/fnc_drawNameTagIcon.sqf
index 1fdd703d62..7b6bbda138 100644
--- a/addons/nametags/functions/fnc_drawNameTagIcon.sqf
+++ b/addons/nametags/functions/fnc_drawNameTagIcon.sqf
@@ -1,17 +1,21 @@
 /*
  * Author: commy2, esteldunedain
- *
  * Draw the nametag and rank icon.
  *
- * Argument:
+ * Arguments:
  * 0: Unit (Player) <OBJECT>
  * 1: Target <OBJECT>
- * 2: alpha (Number)
- * 4: Height offset (Number)
+ * 2: Alpha <NUMBER>
+ * 4: Height offset <NUMBER>
  * 5: Draw Type <NUMBER>
  *
  * Return value:
- * None.
+ * None
+ *
+ * Example:
+ * [ACE_player, _target, _alpha, _distance * 0.026, _icon] call ace_nametags_fnc_drawNameTagIcon
+ *
+ * Public: No
  */
 
 #include "script_component.hpp"
diff --git a/addons/nametags/functions/fnc_getVehicleData.sqf b/addons/nametags/functions/fnc_getVehicleData.sqf
index 1538c345a1..6d83b0f573 100644
--- a/addons/nametags/functions/fnc_getVehicleData.sqf
+++ b/addons/nametags/functions/fnc_getVehicleData.sqf
@@ -1,46 +1,38 @@
 /*
-    Author: aeroson
-    
-    Description:
-        Gathers and caches data needed by AGM_CrewInfo_fnc_doShow
-        What really does make difference for the engine is simulation of CfgAmmo
-        Priority of roles  is: driver/pilot, gunner, copilot, commander, ffv, cargo
-    
-    Parameters: 
-        None
-    
-    Returns:
-        [
-            Is vehicle inherited from Air ?
-            Array categorizing each vehicle's turret
-        ]
-*/
-
+ * Author: aeroson
+ * Gathers and caches data needed by AGM_CrewInfo_fnc_doShow.
+ * What really does make difference for the engine is simulation of CfgAmmo.
+ * Priority of roles  is: driver/pilot, gunner, copilot, commander, FFV, cargo.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * Data <ARRAY>
+ * 0: Vehicle inherits from Air <BOOL>
+ * 1: Categorized vehicle's turrets <ARRAY>
+ *
+ * Example:
+ * call ace_nametags_fnc_updateSettings
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 #include "common.hpp";
 
+private ["_type", "_varName", "_data", "_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"];
 
-private ["_type", "_varName", "_data"];
-
-_type = _this select 0;
+PARAMS_1(_type);
 
 _varName = format ["ACE_CrewInfo_Cache_%1", _type];
 _data = + (uiNamespace getVariable _varName);
 
-if (!isNil "_data") exitWith {
-    _data
-};
+if (!isNil "_data") exitWith {_data};
 
 _data = [];
-
-
-
-private ["_isAir", "_config", "_fnc_addTurret", "_fnc_addTurretUnit"];
-
 _isAir = _type isKindOf "Air";
 
 _fnc_addTurretUnit = {
-
     private  ["_config", "_path", "_role", "_simulationEmpty", "_simulationLaserDesignate", "_simulationOther", "_magazine", "_ammo", "_simulation"];
 
     _config = _this select 0;
@@ -83,7 +75,6 @@ _fnc_addTurretUnit = {
     };
 
     _data pushBack [_path, _role];  
-
 };
 
 
@@ -108,9 +99,7 @@ _fnc_addTurret = {
         } else {
             _offset = _offset + 1;
         };
-
     };
-
 };
 
 
diff --git a/addons/nametags/functions/fnc_initIsSpeaking.sqf b/addons/nametags/functions/fnc_initIsSpeaking.sqf
index c6087541a8..897d223930 100644
--- a/addons/nametags/functions/fnc_initIsSpeaking.sqf
+++ b/addons/nametags/functions/fnc_initIsSpeaking.sqf
@@ -4,13 +4,13 @@
  * Compatiblity with TFR/ACRE and Arma's VON
  *
  * Arguments:
- * NONE
+ * None
  *
  * Return Value:
- * NONE
+ * None
  *
  * Example:
- * [] call ACE_nametags_fnc_initIsSpeaking
+ * [] call ace_nametags_fnc_initIsSpeaking
  *
  * Public: No
  */
diff --git a/addons/nametags/functions/fnc_moduleNameTags.sqf b/addons/nametags/functions/fnc_moduleNameTags.sqf
index 1bbd4d8efb..7373d85de1 100644
--- a/addons/nametags/functions/fnc_moduleNameTags.sqf
+++ b/addons/nametags/functions/fnc_moduleNameTags.sqf
@@ -20,9 +20,14 @@ if !(_activated) exitWith {};
 
 GVAR(Module) = true;
 
-[_logic, QGVAR(PlayerNamesViewDistance),  "PlayerNamesViewDistance"     ] call EFUNC(common,readSettingFromModule);
-[_logic, QGVAR(ShowNamesForAI),           "ShowNamesForAI"              ] call EFUNC(common,readSettingFromModule);
+[_logic, QGVAR(playerNamesViewDistance),  "playerNamesViewDistance"     ] call EFUNC(common,readSettingFromModule);
+[_logic, QGVAR(showNamesForAI),           "showNamesForAI"              ] call EFUNC(common,readSettingFromModule);
 [_logic, QGVAR(showVehicleCrewInfo),      "showVehicleCrewInfo"         ] call EFUNC(common,readSettingFromModule);
-[_logic, QGVAR(showCursorTagForVehicles),  "showCursorTagForVehicles"    ] call EFUNC(common,readSettingFromModule);
+[_logic, QGVAR(showCursorTagForVehicles), "showCursorTagForVehicles"    ] call EFUNC(common,readSettingFromModule);
+
+// Do Not Force - read module setting only non-default is set due to using SCALAR
+if ((_logic getVariable "showPlayerNames") != -1) then {
+    [_logic, QGVAR(showPlayerNames),      "showPlayerNames"             ] call EFUNC(common,readSettingFromModule);
+};
 
 diag_log text "[ACE]: NameTags Module Initialized.";
diff --git a/addons/nametags/functions/fnc_onDraw3d.sqf b/addons/nametags/functions/fnc_onDraw3d.sqf
index 8ea8b63298..43996e17b2 100644
--- a/addons/nametags/functions/fnc_onDraw3d.sqf
+++ b/addons/nametags/functions/fnc_onDraw3d.sqf
@@ -1,3 +1,18 @@
+/*
+ * Author: <N/A>
+ * Draws names and icons.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * call ace_nametags_fnc_onDraw3d
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 
 private ["_onKeyPressAlphaMax", "_defaultIcon", "_distance", "_alpha", "_icon", "_targets", "_pos2", "_vecy", "_relPos", "_projDist", "_pos", "_target", "_targetEyePosASL", "_ambientBrightness", "_maxDistance"];
@@ -9,7 +24,7 @@ _ambientBrightness = ((([] call EFUNC(common,ambientBrightness)) + ([0, 0.4] sel
 _maxDistance = _ambientBrightness * GVAR(PlayerNamesViewDistance);
 
 _onKeyPressAlphaMax = if ((GVAR(showPlayerNames) in [3,4])) then {
-    2 + (GVAR(ShowNamesTime) - ACE_time); //after release 1 second of full opacity, 1 second of fading to 0
+    2 + (GVAR(showNamesTime) - ACE_time); //after release 1 second of full opacity, 1 second of fading to 0
 } else {
     1
 };
@@ -29,10 +44,10 @@ if (GVAR(showCursorTagForVehicles) && {_onKeyPressAlphaMax > 0}) then {
         if ((!isNull _target) &&
                 {(side (group _target)) == (side (group ACE_player))} &&
                 {_target != ACE_player} &&
-                {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
+                {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
                 {!(_target getVariable ["ACE_hideName", false])}) then {
             _distance = ACE_player distance _target;
-            _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax;
+            _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
             [ACE_player, _target, _alpha, _distance * 0.026, _defaultIcon] call FUNC(drawNameTagIcon);
         };
     };
@@ -45,10 +60,10 @@ if ((GVAR(showPlayerNames) in [2,4]) && {_onKeyPressAlphaMax > 0}) then {
             {_target isKindOf "CAManBase"} &&
             {(side (group _target)) == (side (group ACE_player))} &&
             {_target != ACE_player} &&
-            {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
+            {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
             {!(_target getVariable ["ACE_hideName", false])}) then {
         _distance = ACE_player distance _target;
-        _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax;
+        _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
         _icon = ICON_NONE;
         if (GVAR(showSoundWaves) == 2) then {  //icon will be drawn below, so only show name here
             _icon = if (([_target] call FUNC(isSpeaking)) && {(vehicle _target) == _target}) then {ICON_NAME} else {_defaultIcon};
@@ -87,7 +102,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
         if ((_icon != ICON_NONE) &&
                 {(side (group _target)) == (side (group ACE_player))} &&
                 {_target != ACE_player} &&
-                {GVAR(ShowNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
+                {GVAR(showNamesForAI) || {[_target] call EFUNC(common,isPlayer)}} &&
                 {!(_target getVariable ["ACE_hideName", false])}) then {
 
             _targetEyePosASL = eyePos _target;
@@ -97,7 +112,7 @@ if (((GVAR(showPlayerNames) in [1,3]) && {_onKeyPressAlphaMax > 0}) || {GVAR(sho
             _distance = vectorMagnitude _relPos;
             _projDist = _relPos vectorDistance (_vecy vectorMultiply (_relPos vectorDotProduct _vecy));
 
-            _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(PlayerNamesMaxAlpha)) min _onKeyPressAlphaMax;
+            _alpha = (((1 - 0.2 * (_distance - _maxDistance)) min 1) * GVAR(playerNamesMaxAlpha)) min _onKeyPressAlphaMax;
 
             [ACE_player, _target, _alpha, _distance * 0.026, _icon] call FUNC(drawNameTagIcon);
         };
diff --git a/addons/nametags/functions/fnc_setText.sqf b/addons/nametags/functions/fnc_setText.sqf
index e7d1b748b1..33112c31d0 100644
--- a/addons/nametags/functions/fnc_setText.sqf
+++ b/addons/nametags/functions/fnc_setText.sqf
@@ -1,25 +1,28 @@
-/*  
-    Author: aeroson
-    
-    Description:
-        Sets the text on the dialog
-    
-    Parameters: 
-        None
-    
-    Returns:
-        Nothing
-*/
-
+/*
+ * Author: aeroson
+ * Sets the text on the dialog.
+ *
+ * Arguments:
+ * 0: Text <STRING>
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * call ace_nametags_fnc_setText
+ *
+ * Public: No
+ */
 #include "script_component.hpp"
 
 #define TextIDC 11123
 
-private["_text", "_ctrl"];
+PARAMS_1(_text);
+
+private["_ctrl"];
 
 disableSerialization;
 
-_text = _this select 0;
 _ctrl = (uiNamespace getVariable QGVAR(dialog)) displayCtrl TextIDC;
 _ctrl ctrlSetStructuredText parseText _text;
 _ctrl ctrlCommit 0;
diff --git a/addons/nametags/functions/fnc_updateSettings.sqf b/addons/nametags/functions/fnc_updateSettings.sqf
new file mode 100644
index 0000000000..76110b4f79
--- /dev/null
+++ b/addons/nametags/functions/fnc_updateSettings.sqf
@@ -0,0 +1,25 @@
+/*
+ * Author: Jonpas
+ * Dynamically adds and removes Draw3D based on settings on run-time.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * call ace_nametags_fnc_updateSettings
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+if (isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) != 0}) then {
+    GVAR(drawHandler) = addMissionEventHandler ["Draw3D", {_this call FUNC(onDraw3d);}];
+} else {
+    if (!isNil QGVAR(drawHandler) && {GVAR(showPlayerNames) == 0}) then {
+        removeMissionEventHandler ["Draw3D", GVAR(drawHandler)];
+        GVAR(drawHandler) = nil;
+    };
+};
diff --git a/addons/nametags/stringtable.xml b/addons/nametags/stringtable.xml
index 4bcc093814..a39547ff1d 100644
--- a/addons/nametags/stringtable.xml
+++ b/addons/nametags/stringtable.xml
@@ -113,114 +113,143 @@
             <English>Name Tags</English>
             <Polish>Ustawienia imion</Polish>
             <Spanish>Etiquetas de nombre</Spanish>
+            <German>Namensanzeigen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_DisplayName">
             <English>Player Names View Dist.</English>
             <Polish>Zasięg imion graczy</Polish>
             <Spanish>Distancia de vision para nombres de jugadores</Spanish>
+            <German>Spielernamen-Distanz</German>
         </Key>
         <Key ID="STR_ACE_NameTags_PlayerNamesViewDistance_Description">
             <English>Distance in meters at which player names are shown. Default: 5</English>
             <Polish>Dystans w metrach, na którym wyświetlane są imiona graczy. Domyślnie: 5</Polish>
             <Spanish>Distancia en metros a la que se muestran los nombres de los jugadores. Por defecto: 5</Spanish>
+            <German>Distanz in Metern bei der Spielernamen angezeigt werden. Standard: 5</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showNamesForAI_DisplayName">
             <English>Show name tags for AI?</English>
             <Polish>Imiona AI</Polish>
             <Spanish>¿Mostrar nombres para la IA?</Spanish>
+            <German>Zeige Namensanzeigen für KI?</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showNamesForAI_Description">
             <English>Show the name and rank tags for friendly AI units? Default: Do not force</English>
             <Polish>Pokaż imiona i rangi przyjaznych jednostek AI? Domyślnie: Nie wymuszaj</Polish>
             <Spanish>Muestra etiquetas de nombre y rango para las unidades IA amigas? Por defecto: No forzar</Spanish>
+            <German>Zeige den Namen und Rang für freundliche KI-Einheiten? Standard: nicht erwzingen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_DoNotForce">
             <English>Do Not Force</English>
             <Polish>Nie wymuszaj</Polish>
             <Spanish>No forzar</Spanish>
+            <German>Nicht erzwingen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_ForceHide">
             <English>Force Hide</English>
             <Polish>Wymuś ukrycie</Polish>
             <Spanish>Ocultar forzado</Spanish>
+            <German>Verstecken erzwingen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_ForceShow">
-            <English>Force show</English>
+            <English>Force Show</English>
             <Polish>Wymuś wyświetlanie</Polish>
             <Spanish>Mostrar forzado</Spanish>
+            <German>Anzeigen erzwingen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showVehicleCrewInfo_DisplayName">
             <English>Show crew info?</English>
             <Polish>Pokaż załogę</Polish>
             <Spanish>¿Mostrar información de la tripulación?</Spanish>
+            <German>Zeige Besatzungsinfo?</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showVehicleCrewInfo_Description">
             <English>Show vehicle crew info, or by default allows players to choose it on their own. Default: Do Not Force</English>
             <Polish>Pokaż informacje o obsadzie pojazdu, lub pozwól graczom ustawić tą opcje według własnego uznania. Domyślnie: Nie wymuszaj</Polish>
             <Spanish>Muestra información de la tripulación, o por defecto permite a los jugadores elegirlo. Por defecto: No forzar</Spanish>
+            <German>Zeige Fahrzeugbesatzungsinfo oder erlaube Spielern es auszuwählen. Standard: nicht erzwingen.</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showCursorTagForVehicles_DisplayName">
             <English>Show for Vehicles</English>
             <Polish>Pokaż dla pojazdów</Polish>
             <Spanish>Mostrar para vehiculos</Spanish>
+            <German>Zeige bei Fahrzeugen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_showCursorTagForVehicles_Description">
             <English>Show cursor NameTag for vehicle commander (only if client has name tags enabled)Default: No</English>
             <Polish>Pokazuj imię dowódcy pojazdu nad pojazdem (tylko jeżeli klient ma włączone imiona graczy). Domyślnie: Nie</Polish>
             <Spanish>Muestra etiquetas de nombre en el cursor para el comandante del vehiculo (solo si el cliente tiene las etiquetas de nombre activadas) Por defecto: No</Spanish>
+            <German>Zeige Maus-Namensanzeigen für Fahrzeugkommandanten (nur wenn der Client Namensanzeigen aktiviert hat). Standard: Nein</German>
         </Key>
         <Key ID="STR_ACE_NameTags_Module_Description">
-            <English></English>
+            <English>This module allows you to customize settings and range of Name Tags.</English>
             <Polish>Moduł ten pozwala dostosować ustawienia i zasięg wyświetlania imion.</Polish>
+            <German>Dieses Modul erlaubt die Einstellungen der Anzeigenamen zu verändern.</German>
         </Key>
-        <Key ID="STR_ACE_Common_Disabled">
+        <Key ID="STR_ACE_NameTags_Disabled">
             <English>Disabled</English>
             <Polish>Wyłączone</Polish>
             <Spanish>Desactivado</Spanish>
+            <German>Deaktiviert</German>
         </Key>
-        <Key ID="STR_ACE_Common_Enabled">
+        <Key ID="STR_ACE_NameTags_Enabled">
             <English>Enabled</English>
             <Polish>Włączone</Polish>
             <Spanish>Activado</Spanish>
+            <German>Aktiviert</German>
         </Key>
-        <Key ID="STR_ACE_Common_OnlyCursor">
-            <English>Only Cursor</English>
+        <Key ID="STR_ACE_NameTags_OnlyCursor">
+            <English>Only on Cursor</English>
             <Polish>Tylko pod kursorem</Polish>
             <Spanish>Solo cursor</Spanish>
+            <German>Nur bei Maus</German>
         </Key>
-        <Key ID="STR_ACE_Common_OnlyOnKeypress">
-            <English>Only On Keypress</English>
+        <Key ID="STR_ACE_NameTags_OnlyKeypress">
+            <English>Only on Keypress</English>
             <Polish>Tylko po wciśnięciu klawisza</Polish>
             <Spanish>Solo al pulsar tecla</Spanish>
+            <German>Nur bei Tastendruck</German>
         </Key>
-        <Key ID="STR_ACE_Common_OnlyCursorAndKeyPress">
-            <English>Only Cursor and KeyPress</English>
+        <Key ID="STR_ACE_NameTags_OnlyCursorAndKeypress">
+            <English>Only on Cursor and Keypress</English>
             <Polish>Tylko pod kursorem i po wciśnięciu klawisza</Polish>
             <Spanish>En cursor y al pulsar tecla</Spanish>
+            <German>Nur Maus und Tastendruck</German>
         </Key>
-        <Key ID="STR_ACE_Common_NameTagSettings">
+        <Key ID="STR_ACE_NameTags_ForceShowOnlyCursor">
+            <English>Force Show Only on Cursor</English>
+        </Key>
+        <Key ID="STR_ACE_NameTags_ForceShowOnlyKeypress">
+            <English>Force Show Only on Keypress</English>
+        </Key>
+        <Key ID="STR_ACE_NameTags_ForceShowOnlyCursorAndKeypress">
+            <English>Force Show Only on Cursor and Keypress</English>
+        </Key>
+        <Key ID="STR_ACE_NameTags_NameTagSettings">
             <English>Use Nametag settings</English>
             <Polish>Użyj ustawień imion</Polish>
             <Spanish>Usar ajustes de etiquetas de nombre</Spanish>
+            <German>Verwende Namenanzeigen</German>
         </Key>
-        <Key ID="STR_ACE_Common_AlwaysShowAll">
+        <Key ID="STR_ACE_NameTags_AlwaysShowAll">
             <English>Always Show All</English>
             <Polish>Zawsze pokazuj wszystkie</Polish>
             <Spanish>Mostrar siempre todo</Spanish>
+            <German>Immer alle zeigen</German>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowPlayerNames_Desc">
-            <English></English>
+            <English>Show player names and set their activation. Default: Enabled</English>
             <Polish>Opcja ta pozwala dostosować sposób wyświetlania imion nad głowami graczy. Opcja "Tylko po wciśnięciu klawisza" wyświetla imiona tylko przytrzymania klawisza "Modyfikator" dostępnego w menu ustawień addonów -&gt; ACE3.</Polish>
         </Key>
         <Key ID="STR_ACE_NameTags_ShowSoundWaves_Desc">
-            <English></English>
+            <English>Effect of sound waves above the heads of speaking players after holding the PTT key. This option works with TFAR and ACRE2.</English>
             <Polish>Opcja ta pozwala dostosować sposób wyświetlania efektu fal dźwiękowych nad głowami mówiących graczy, wyświetlanych po przytrzymaniu klawisza PTT. Opcja ta współpracuje z TFAR oraz ACRE2.</Polish>
         </Key>
-        <Key ID="STR_ACE_nametags_tagsize_name">
+        <Key ID="STR_ACE_NameTags_TagSize_Name">
             <English>Nametags Size</English>
         </Key>
-        <Key ID="STR_ACE_nametags_tagsize_description">
+        <Key ID="STR_ACE_NameTags_TagSize_Description">
             <English>Text and Icon Size Scaling</English>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/nightvision/stringtable.xml b/addons/nightvision/stringtable.xml
index 9fe8593e13..050945d5d8 100644
--- a/addons/nightvision/stringtable.xml
+++ b/addons/nightvision/stringtable.xml
@@ -5,7 +5,7 @@
             <English>NV Goggles (Gen1)</English>
             <Czech>Noktovizor (Gen1)</Czech>
             <French>JVN (Gen1)</French>
-            <German>NS-Brille (Gen1)</German>
+            <German>NS-Brille (1. Gen.)</German>
             <Italian>Occhiali notturni (Gen1)</Italian>
             <Polish>Gogle noktowizyjne (Gen1)</Polish>
             <Portuguese>Óculos de visão noturna (Gen1)</Portuguese>
@@ -17,7 +17,7 @@
             <English>NV Goggles (Gen2)</English>
             <Czech>Noktovizor (Gen2)</Czech>
             <French>JVN (Gen2)</French>
-            <German>NS-Brille (Gen2)</German>
+            <German>NS-Brille (2. Gen.)</German>
             <Italian>Occhiali notturni (Gen2)</Italian>
             <Polish>Gogle noktowizyjne (Gen2)</Polish>
             <Portuguese>Óculos de visão noturna (Gen2)</Portuguese>
@@ -29,7 +29,7 @@
             <English>NV Goggles (Gen3)</English>
             <Czech>Noktovizor (Gen3)</Czech>
             <French>JVN (Gen3)</French>
-            <German>NS-Brille (Gen3)</German>
+            <German>NS-Brille (3. Gen.)</German>
             <Italian>Occhiali notturni (Gen3)</Italian>
             <Polish>Gogle noktowizyjne (Gen3)</Polish>
             <Portuguese>Óculos de visão noturna (Gen3)</Portuguese>
@@ -41,7 +41,7 @@
             <English>NV Goggles (Gen3, Brown)</English>
             <Czech>Noktovizor (Gen3, hnědý)</Czech>
             <French>JVN (Gen3, marron)</French>
-            <German>NS-Brille (Gen3, Braun)</German>
+            <German>NS-Brille (3. Gen., braun)</German>
             <Italian>Occhiali notturni (Gen3, marroni)</Italian>
             <Polish>Gogle noktowizyjne (Gen3, brązowe)</Polish>
             <Portuguese>Óculos de visão noturna (Gen3, marrons)</Portuguese>
@@ -53,7 +53,7 @@
             <English>NV Goggles (Gen3, Green)</English>
             <Czech>Noktovizor (Gen3, zelený)</Czech>
             <French>JVN (Gen3, vertes)</French>
-            <German>NS-Brille (Gen3, Grün)</German>
+            <German>NS-Brille (3. Gen., grün)</German>
             <Italian>Occhiali notturni (Gen3, verdi)</Italian>
             <Polish>Gogle noktowizyjne (Gen3, zielone)</Polish>
             <Portuguese>Óculos de visão noturna (Gen3, verdes)</Portuguese>
@@ -65,7 +65,7 @@
             <English>NV Goggles (Gen3, Black)</English>
             <Czech>Noktovizor (Gen3, černý)</Czech>
             <French>JVN (Gen3, noires)</French>
-            <German>NS-Brille (Gen3, Schwarz)</German>
+            <German>NS-Brille (3. Gen., schwarz)</German>
             <Italian>Occhiali notturni (Gen3, neri)</Italian>
             <Polish>Gogle noktowizyjne (Gen3, czarne)</Polish>
             <Portuguese>Óculos de visão noturna (Gen3, pretos)</Portuguese>
@@ -77,7 +77,7 @@
             <English>NV Goggles (Gen4)</English>
             <Czech>Noktovizor (Gen4)</Czech>
             <French>JVN (Gen4)</French>
-            <German>NS-Brille (Gen4)</German>
+            <German>NS-Brille (4. Gen.)</German>
             <Italian>Occhiali notturni (Gen4)</Italian>
             <Polish>Gogle noktowizyjne (Gen4)</Polish>
             <Portuguese>Óculos de visão noturna (Gen4)</Portuguese>
@@ -134,4 +134,4 @@
             <Italian>Riduci la luminosità dell'NVG</Italian>
         </Key>
     </Package>
-</Project>
+</Project>
\ No newline at end of file
diff --git a/addons/optionsmenu/XEH_preInit.sqf b/addons/optionsmenu/XEH_preInit.sqf
index 42f50287f2..e35784560a 100644
--- a/addons/optionsmenu/XEH_preInit.sqf
+++ b/addons/optionsmenu/XEH_preInit.sqf
@@ -2,6 +2,7 @@
 
 ADDON = false;
 
+PREP(debugDumpToClipboard);
 PREP(onListBoxSettingsChanged);
 PREP(onListBoxShowSelectionChanged);
 PREP(onSettingsMenuOpen);
diff --git a/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf
new file mode 100644
index 0000000000..04f66112e7
--- /dev/null
+++ b/addons/optionsmenu/functions/fnc_debugDumpToClipboard.sqf
@@ -0,0 +1,75 @@
+/*
+ * Author: PabstMirror
+ * Dumps debug info to clipboard.
+ *
+ * Arguments:
+ * None
+ *
+ * Return Value:
+ * None
+ *
+ * Example:
+ * [] call ACE_optionsmenu_fnc_debugDumpToClipboard
+ *
+ * Public: No
+ */
+#include "script_component.hpp"
+
+private ["_var", "_unit", "_outputText", "_text"];
+
+#define MIN_ARRAY_SIZE 10
+
+_outputText = {
+    diag_log text (_this select 0);
+    "ace_clipboard" callExtension ((_this select 0) + "
+");
+};
+
+_text = format ["~~~~~~~~~ACE Debug~~~~~~~~~
+time = %1
+
+------Performance------
+diag_fps = %2
+count ace_common_waitAndExecArray = %3
+count cba_common_perFrameHandlerArray = %4 (max %5)
+count diag_activeSQFScripts = %6
+count diag_activeSQSScripts = %7
+count diag_activeMissionFSMs = %8",
+time, diag_fps, count ace_common_waitAndExecArray, {!isNil "_x"} count cba_common_perFrameHandlerArray, count cba_common_perFrameHandlerArray, count diag_activeSQFScripts, count diag_activeSQSScripts,count diag_activeMissionFSMs];
+[_text] call _outputText;
+
+
+_text = format ["
+------Player------
+typeOf = %1
+animationState = %2",
+if (isNull ace_player) then {"null"} else {typeOf ace_player},
+if (isNull ace_player) then {"null"} else {animationState ace_player}];
+[_text] call _outputText;
+
+
+_text = format ["
+------Array Info (count >= %1)------", MIN_ARRAY_SIZE];
+[_text] call _outputText;
+
+
+{
+    _var = missionNamespace getVariable [_x, nil];
+    if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then {
+        _text = format ["%1 - ARRAY SIZE: %2", _x, (count _var)];
+        [_text] call _outputText;
+    };
+} forEach (allVariables missionNamespace);
+
+{
+    _unit = _x;
+    {
+        _var = _unit getVariable [_x, nil];
+        if(!isnil "_var" && {(typeName _var) == "ARRAY"} && {(count _var) > MIN_ARRAY_SIZE}) then {
+            _text = format ["%1 on [%2] - ARRAY SIZE: %3", _x, _unit, (count _var)];
+            [_text] call _outputText;
+        };
+    } forEach (allVariables _unit);
+} forEach allUnits;
+
+"ace_clipboard" callExtension "--COMPLETE--";
diff --git a/addons/optionsmenu/gui/settingsMenu.hpp b/addons/optionsmenu/gui/settingsMenu.hpp
index 04e7ee5aaa..15eb411019 100644
--- a/addons/optionsmenu/gui/settingsMenu.hpp
+++ b/addons/optionsmenu/gui/settingsMenu.hpp
@@ -247,6 +247,13 @@ class ACE_settingsMenu {
             text = "$STR_ACE_OptionsMenu_OpenExport";
             x = X_PART(18);
             action = QUOTE(if (GVAR(serverConfigGeneration) > 0) then {createDialog 'ACE_serverSettingsMenu'; });
+        };       
+        class action_debug: actionClose {
+            idc = 1102;
+            text = "$STR_ACE_OptionsMenu_DumpDebug";
+            x = X_PART(26.5);
+            action = QUOTE([] call FUNC(debugDumpToClipboard));
+            tooltip = "$STR_ACE_OptionsMenu_DumpDebugTooltip";
         };
     };
 };
diff --git a/addons/optionsmenu/stringtable.xml b/addons/optionsmenu/stringtable.xml
index 7ad035cd82..a878a33040 100644
--- a/addons/optionsmenu/stringtable.xml
+++ b/addons/optionsmenu/stringtable.xml
@@ -3,7 +3,7 @@
     <Package name="OptionsMenu">
         <Key ID="STR_ACE_OptionsMenu_OpenConfigMenu">
             <English>ACE Options</English>
-            <German>ACE Optionen</German>
+            <German>ACE-Optionen</German>
             <Spanish>Opciones ACE</Spanish>
             <Polish>Ustawienia ACE</Polish>
             <Czech>ACE Nastavení</Czech>
@@ -245,56 +245,73 @@
             <English>Allow Config Export [ACE]</English>
             <Polish>Pozwól na eksport ustawień [ACE]</Polish>
             <Spanish>[ACE] Permitir exportar configuración</Spanish>
+            <German>Erlaube Config-Export [ACE]</German>
         </Key>
         <Key ID="STR_AllowConfigExport_allowconfigurationExport_DisplayName">
             <English>Allow</English>
             <Polish>Zezwól</Polish>
             <Spanish>Permitir</Spanish>
+            <German>Erlaube</German>
         </Key>
         <Key ID="STR_AllowConfigExport_allowconfigurationExport_Description">
             <English>Allow export of all settings to a server config formatted.</English>
             <Polish>Zezwól na eksport wszystkich ustawień do formatu konfiguracji serwera.</Polish>
             <Spanish>Permitir la exportación de todos los ajustes de configuración a un servidor con formato.</Spanish>
+            <German>Erlaube alle Einstellungen in einer Server-Config zu exportieren.</German>
         </Key>
         <Key ID="STR_AllowConfigExport_Module_Description">
             <English>When allowed, you have access to the settings modification and export in SP. Clicking export will place the formated config on your clipboard.</English>
             <Polish>Jeżeli ustawione na zezwól, wtedy będziesz mieć dostęp do ekranu modyfikacji wszystich ustawień i zmiennych ACE, a także będziesz mieć możliwość eksportu tychże ustawień do formatu rozpoznawalnego przez userconfig serwera. Kliknięcie opcji Eksportuj skopiuje wszystkie ustawienia do schowka. Działa tylko w trybie SP.</Polish>
             <Spanish>Cuando esta permitido, se tiene acceso a los ajustes de modificación y exportación en SP. Pulsar en exportar copiara la configuración al portapapeles.</Spanish>
+            <German>Wenn erlaubt, können die Einstellungsmodifikationen angezeigt und im SP exportiert werden. Wenn auf "Exportieren" geklickt wird, wird eine formatierte Config-Datei in der Zwischenablage abgespeichert.</German>
         </Key>
         <Key ID="STR_ACE_Common_Hide">
             <English>Hide</English>
             <Polish>Ukryj</Polish>
             <Spanish>Ocultar</Spanish>
+            <German>Verstecken</German>
         </Key>
         <Key ID="STR_ACE_Common_TopRightDown">
             <English>Top right, downwards</English>
             <Polish>Po prawej u góry, w dół</Polish>
             <Spanish>Arriba a la derecha, hacia abajo</Spanish>
+            <German>Open rechts, nach unten</German>
         </Key>
         <Key ID="STR_ACE_Common_TopRightLeft">
             <English>Top right, to the left</English>
             <Polish>Po prawej u góry, do lewej</Polish>
             <Spanish>Arriba a la derecha, hacia la izquierda</Spanish>
+            <German>Von rechts nach links</German>
         </Key>
         <Key ID="STR_ACE_Common_TopLeftDown">
             <English>Top left, downwards</English>
             <Polish>Po lewej u góry, w dół</Polish>
             <Spanish>Arriba a la izquierda, hacia abajo</Spanish>
+            <German>Von links, nach unten</German>
         </Key>
         <Key ID="STR_ACE_Common_TopLeftRight">
             <English>Top left, to the right</English>
             <Polish>Po lewej u góry, do prawej</Polish>
             <Spanish>Arriba a la izquierda, hacia la derecha</Spanish>
+            <German>Oben links nach rechts</German>
         </Key>
         <Key ID="STR_ACE_Common_Top">
             <English>Top</English>
             <Polish>Góra</Polish>
             <Spanish>Arriba</Spanish>
+            <German>Oben</German>
         </Key>
         <Key ID="STR_ACE_Common_Bottom">
             <English>Bottom</English>
             <Polish>Dół</Polish>
             <Spanish>Abajo</Spanish>
+            <German>Unten</German>
+        </Key>
+        <Key ID="STR_ACE_OptionsMenu_DumpDebug">
+            <English>Debug To Clipboard</English>
+        </Key>
+        <Key ID="STR_ACE_OptionsMenu_DumpDebugTooltip">
+            <English>Sends debug information to RPT and clipboard.</English>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/overheating/CfgWeapons.hpp b/addons/overheating/CfgWeapons.hpp
index 7fdc08c973..9fefafad27 100644
--- a/addons/overheating/CfgWeapons.hpp
+++ b/addons/overheating/CfgWeapons.hpp
@@ -41,14 +41,14 @@ class CfgWeapons {
         ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075};
     };
     
-    class MMG_02_base_F : rifle_Base_F {
+    class MMG_02_base_F: Rifle_Long_Base_F {
         ACE_Overheating_allowSwapBarrel = 1;
         ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004};
         ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9};
         ACE_Overheating_JamChance[] = {0, 0.0003, 0.0015, 0.0075};
     };
 
-    class MMG_01_base_F : rifle_Base_F {
+    class MMG_01_base_F: Rifle_Long_Base_F {
         ACE_Overheating_allowSwapBarrel = 1;
         ACE_Overheating_Dispersion[] = {0, -0.001, 0.001, 0.004};
         ACE_Overheating_SlowdownFactor[] = {1, 1, 1, 0.9};
diff --git a/addons/respawn/CfgVehicles.hpp b/addons/respawn/CfgVehicles.hpp
index e90f4ba08e..6fd60e6321 100644
--- a/addons/respawn/CfgVehicles.hpp
+++ b/addons/respawn/CfgVehicles.hpp
@@ -1,9 +1,6 @@
 class CfgVehicles {
-    class Logic;
-    class Module_F: Logic {
-        class ModuleDescription {};
-    };
-    class ACE_ModuleRespawn: Module_F {
+    class ACE_Module;
+    class ACE_ModuleRespawn: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_Respawn_Module_DisplayName";
@@ -27,12 +24,12 @@ class CfgVehicles {
                 defaultValue = 1;
             };
         };
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_Respawn_Module_Description";
         };
     };
 
-    class ACE_ModuleFriendlyFire: Module_F {
+    class ACE_ModuleFriendlyFire: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_FriendlyFire_Module_DisplayName";
@@ -42,12 +39,12 @@ class CfgVehicles {
         icon = QUOTE(PATHTOF(UI\Icon_Module_FriendlyFire_ca.paa));
 
         class Arguments {};
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_FriendlyFire_Module_Description";
         };
     };
 
-    class ACE_ModuleRallypoint: Module_F {
+    class ACE_ModuleRallypoint: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_Rallypoint_Module_DisplayName";
@@ -57,7 +54,7 @@ class CfgVehicles {
         icon = QUOTE(PATHTOF(UI\Icon_Module_Rallypoint_ca.paa));
 
         class Arguments {};
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_Rallypoint_Module_Description";
         };
     };
diff --git a/addons/respawn/stringtable.xml b/addons/respawn/stringtable.xml
index 3a3abb6560..92361ae66b 100644
--- a/addons/respawn/stringtable.xml
+++ b/addons/respawn/stringtable.xml
@@ -149,35 +149,42 @@
             <English>Respawn System</English>
             <Polish>System odrodzenia</Polish>
             <Spanish>Sistema de reaparición</Spanish>
+            <German>Respawn-System</German>
         </Key>
         <Key ID="STR_ACE_Respawn_SavePreDeathGear_DisplayName">
             <English>Save Gear?</English>
             <Polish>Zapisać ekwipunek?</Polish>
             <Spanish>¿Guardar equipo?</Spanish>
+            <German>Ausrüstung speichern?</German>
         </Key>
         <Key ID="STR_ACE_Respawn_SavePreDeathGear_Description">
             <English>Respawn with the gear a soldier had just before his death?</English>
             <Polish>Odradzaj z ekwipunkiem jaki żołnierz miał tuż przed swoją śmiercią?</Polish>
             <Spanish>Reaparece con el equipo que el soldado tenía justo antes de morir</Spanish>
+            <German>Mit der Ausrüstung, die ein Soldat vor seinem Tod hatte, respawnen?</German>
         </Key>
         <Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_DisplayName">
             <English>Remove bodies?</English>
             <Polish>Usuwać ciała?</Polish>
             <Spanish>¿Eliminar cuerpos?</Spanish>
+            <German>Körper entfernen?</German>
         </Key>
         <Key ID="STR_ACE_Respawn_RemoveDeadBodiesDisconnected_Description">
             <English>Remove player bodies after disconnect?</English>
             <Polish>Usuwaj ciała graczy po rozłączeniu z serwera?</Polish>
             <Spanish>Elimina los cuerpos de los jugadores cuando se desconecten</Spanish>
+            <German>Entferne Spielerkörper nach dem Trennen einer Verbindung?</German>
         </Key>
         <Key ID="STR_ACE_Respawn_Module_Description">
             <English></English>
             <Polish>Moduł ten pozwala dostosować ustawienia odrodzenia (respawnu).</Polish>
+            <German>Dieses Modul erlaubt es die Respawn-Einstellungen anzupassen.</German>
         </Key>
         <Key ID="STR_ACE_FriendlyFire_Module_DisplayName">
             <English>Friendly Fire Messages</English>
             <Polish>Wiadomości Friendly Fire</Polish>
             <Spanish>Mensajes de fuego amigo</Spanish>
+            <German>Freundbeschuss-Nachrichten</German>
         </Key>
         <Key ID="STR_ACE_FriendlyFire_Module_Description">
             <English></English>
@@ -187,6 +194,7 @@
             <English>Rallypoint System</English>
             <Polish>System punktu zbiórki</Polish>
             <Spanish>Sistema de punto de reunión</Spanish>
+            <German>Rallypoint-System</German>
         </Key>
         <Key ID="STR_ACE_Rallypoint_Module_Description">
             <English></English>
@@ -196,11 +204,13 @@
             <English>Move Rallypoint</English>
             <Polish>Przenieś punkt zbiórki</Polish>
             <Spanish>Mover punto de reunión</Spanish>
+            <German>Bewege Rallypoint</German>
         </Key>
         <Key ID="STR_ACE_Respawn_EditorCategory">
             <English>ACE Respawn</English>
             <Polish>ACE Odrodzenie</Polish>
             <Spanish>Reaparición ACE</Spanish>
+            <German>ACE-Respawn</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/switchunits/CfgEventHandlers.hpp b/addons/switchunits/CfgEventHandlers.hpp
index 689e06c529..44b6e8e6ff 100644
--- a/addons/switchunits/CfgEventHandlers.hpp
+++ b/addons/switchunits/CfgEventHandlers.hpp
@@ -1,12 +1,11 @@
 class Extended_PreInit_EventHandlers {
-  class ADDON {
-    init = QUOTE( call COMPILE_FILE(XEH_preInit) );
-  };
+    class ADDON {
+        init = QUOTE( call COMPILE_FILE(XEH_preInit) );
+    };
 };
 
 class Extended_PostInit_EventHandlers {
     class ADDON {
-        clientInit = QUOTE( call COMPILE_FILE(XEH_clientInit) );
+        init = QUOTE( call COMPILE_FILE(XEH_postInit) );
     };
 };
-
diff --git a/addons/switchunits/CfgVehicles.hpp b/addons/switchunits/CfgVehicles.hpp
index 0f76c78568..bf5b402b74 100644
--- a/addons/switchunits/CfgVehicles.hpp
+++ b/addons/switchunits/CfgVehicles.hpp
@@ -1,6 +1,6 @@
 class CfgVehicles {
-  class Module_F;
-  class ACE_ModuleSwitchUnits: Module_F {
+  class ACE_Module;
+  class ACE_ModuleSwitchUnits: ACE_Module {
     author = "$STR_ACE_Common_ACETeam";
     category = "ACE";
     displayName = "$STR_ACE_SwitchUnits_Module_DisplayName";
@@ -50,4 +50,4 @@ class CfgVehicles {
       description = "$STR_ACE_SwitchUnits_Module_Description";
     };
   };
-};
\ No newline at end of file
+};
diff --git a/addons/switchunits/XEH_clientInit.sqf b/addons/switchunits/XEH_postInit.sqf
similarity index 91%
rename from addons/switchunits/XEH_clientInit.sqf
rename to addons/switchunits/XEH_postInit.sqf
index 6a908071c9..5928804d7b 100644
--- a/addons/switchunits/XEH_clientInit.sqf
+++ b/addons/switchunits/XEH_postInit.sqf
@@ -16,6 +16,7 @@
 
 #include "script_component.hpp"
 
+
 if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then {
     [player] call FUNC(startSwitchUnits);
 } else {
@@ -24,5 +25,5 @@ if (missionNamespace getVariable [QGVAR(EnableSwitchUnits), false]) then {
         if ((_name == QGVAR(EnableSwitchUnits)) && {_value}) then {
             [player] call FUNC(startSwitchUnits);
         };
-    }] call EFUNC(common,addEventhandler); 
+    }] call EFUNC(common,addEventhandler);
 };
diff --git a/addons/switchunits/config.cpp b/addons/switchunits/config.cpp
index 8e792381c3..3b1d11f460 100644
--- a/addons/switchunits/config.cpp
+++ b/addons/switchunits/config.cpp
@@ -14,4 +14,4 @@ class CfgPatches {
 
 #include "CfgEventHandlers.hpp"
 #include "CfgVehicles.hpp"
-#include "ACE_Settings.hpp"
\ No newline at end of file
+#include "ACE_Settings.hpp"
diff --git a/addons/switchunits/stringtable.xml b/addons/switchunits/stringtable.xml
index af99ac8417..16582b3d6d 100644
--- a/addons/switchunits/stringtable.xml
+++ b/addons/switchunits/stringtable.xml
@@ -29,70 +29,83 @@
             <English>SwitchUnits System</English>
             <Polish>System zmiany stron</Polish>
             <Spanish>Sistema de cambio de unidad</Spanish>
+            <German>Einheiten-Switch-System?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToWest_DisplayName">
             <English>Switch to West?</English>
             <Polish>Zmiana na Zachód?</Polish>
             <Spanish>¿Cambiar a Oeste?</Spanish>
+            <German>Nach BLUFOR wechseln?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToWest_Description">
             <English>Allow switching to west units?</English>
             <Polish>Pozwolić zmieniać graczom stronę na Zachód?</Polish>
             <Spanish>¿Permitir cambios a unidades del Oeste?</Spanish>
+            <German>Erlaube das Wechseln zu BLUFOR-Einheiten?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToEast_DisplayName">
             <English>Switch to East?</English>
             <Polish>Zmiana na Wschód?</Polish>
             <Spanish>¿Cambiar a Este?</Spanish>
+            <German>Nach OPFOR wechseln?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToEast_Description">
             <English>Allow switching to east units?</English>
             <Polish>Pozwolić zmieniać graczom stronę na Wschód?</Polish>
             <Spanish>¿Permitir cambios a unidades del Este?</Spanish>
+            <German>Erlaube das Wechseln zu OPFOR-Einheiten?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToIndependent_DisplayName">
             <English>Switch to Independent?</English>
             <Polish>Zmiana na Ruch Oporu?</Polish>
             <Spanish>¿Cambiar a Independiente?</Spanish>
+            <German>Nach INDFOR wechseln?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToIndependent_Description">
             <English>Allow switching to independent units?</English>
             <Polish>Pozwolić zmieniać stronę na Ruch Oporu?</Polish>
             <Spanish>¿Permitir cambios a unidades Independientes?</Spanish>
+            <German>Erlaube das Wechseln zu INDFOR-Einheiten?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToCivilian_DisplayName">
             <English>Switch to Civilian?</English>
             <Polish>Zmiana na Cywili?</Polish>
             <Spanish>¿Cambiar a Civil?</Spanish>
+            <German>Nach CIVILIAN wechseln?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SwitchToCivilian_Description">
             <English>Allow switching to civilian units?</English>
             <Polish>Pozwolić zmieniać stronę na Cywili?</Polish>
             <Spanish>¿Permitir cambios a unidades Civiles</Spanish>
+            <German>Erlaube das Wechseln zu CIVILIAN-Einheiten?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_EnableSafeZone_DisplayName">
             <English>Enable Safe Zone?</English>
             <Polish>Aktywuj bezp. strefę?</Polish>
             <Spanish>¿Habilitar zona segura?</Spanish>
+            <German>Aktiviere Sicherheitszone?</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_EnableSafeZone_Description">
             <English>Enable a safe zone around enemy units? Players can't switch to units inside of the safe zone.</English>
             <Polish>Aktywuje bezpieczną strefę wokół jednostek przeciwnika. Gracze nie mogą zmieniać strony wewnątrz tej strefy.</Polish>
             <Spanish>Habilita una zona segura alrededor de las unidades enemigas. Los jugadores no pueden cambiar de unidad dentro de la zona segura.</Spanish>
+            <German>Aktiviere eine Sicherheitszone um feindliche Einheiten? Spieler können nicht zu Einheiten in der Sicherheitszone wechseln.</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SafeZoneRadius_DisplayName">
             <English>Safe Zone Radius</English>
             <Polish>Promień bezp. strefy</Polish>
             <Spanish>Radio de la zona segura</Spanish>
+            <German>Sicherheitszonenradius</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_SafeZoneRadius_Description">
             <English>The safe zone around players from a different team. Default: 200</English>
             <Polish>Promień bezpiecznej strefy wokół graczy z innych drużyn. Domyślnie: 200</Polish>
             <Spanish>La zona segura alrededor de los jugadores de distintos equipos. Por defecto: 200</Spanish>
+            <German>Die Sicherheitszone um Spieler von einem anderen Team. Standard: 200</German>
         </Key>
         <Key ID="STR_ACE_SwitchUnits_Module_Description">
             <English></English>
             <Polish></Polish>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/vehiclelock/CfgVehicles.hpp b/addons/vehiclelock/CfgVehicles.hpp
index 60cb67d4c4..6e07148262 100644
--- a/addons/vehiclelock/CfgVehicles.hpp
+++ b/addons/vehiclelock/CfgVehicles.hpp
@@ -64,9 +64,10 @@ class CfgVehicles {
 
     class Logic;
     class Module_F: Logic {
-        class ModuleDescription {};
+        class ModuleDescription;
     };
-    class ACE_VehicleLock_ModuleSetup: Module_F {
+    class ACE_Module: Module_F {};
+    class ACE_VehicleLock_ModuleSetup: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_VehicleLock_Module_DisplayName";
@@ -99,12 +100,12 @@ class CfgVehicles {
                 defaultValue = "10";
             };
         };
-        class ModuleDescription: ModuleDescription {
+        class ModuleDescription {
             description = "$STR_ACE_VehicleLock_Module_Description";
         };
     };
 
-    class ACE_VehicleLock_ModuleSyncedAssign: Module_F {
+    class ACE_VehicleLock_ModuleSyncedAssign: ACE_Module {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         displayName = "$STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName";
diff --git a/addons/vehiclelock/stringtable.xml b/addons/vehiclelock/stringtable.xml
index 7987e3b916..94027835f3 100644
--- a/addons/vehiclelock/stringtable.xml
+++ b/addons/vehiclelock/stringtable.xml
@@ -137,66 +137,79 @@
             <English>Vehicle Lock Setup</English>
             <Polish>Ustawienie blokady pojazdów</Polish>
             <Spanish>Configuración del cierre del vehiculo</Spanish>
+            <German>Fahrzeugsperreinstellungen</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_LockVehicleInventory_DisplayName">
             <English>Lock Vehicle Inventory</English>
             <Polish>Zablokuj ekwipunek pojazdu</Polish>
             <Spanish>Bloquear inventario del vehículo</Spanish>
+            <German>Sperre Fahrzeuginventar</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_LockVehicleInventory_Description">
             <English>Locks the inventory of locked vehicles</English>
             <Polish>Blokuje dostęp do ekwipunku pojazdu</Polish>
             <Spanish>Bloquea el inventario de los vehículos cerrados</Spanish>
+            <German>Sperrt das Inventar von gesperrten Fahrzeugen</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleStartingLockState_DisplayName">
             <English>Vehicle Starting Lock State</English>
             <Polish>Początkowy stan blok. poj.</Polish>
             <Spanish>Estado inicial del cierre en vehículos</Spanish>
+            <German>Fahrzeuge spawnen gesperrt</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleStartingLockState_Description">
             <English>Set lock state for all vehicles (removes ambiguous lock states)</English>
             <Polish>Ustawia początkowy stan blokady dla wszystkich pojazdów (usuwa dwuznaczne stany blokady)</Polish>
             <Spanish>Establece el estado de cierre para todos los vehículos (elimina estados de cierre ambiguos)</Spanish>
+            <German>Setze Sperrstatus für alle Fahrzeuge (entfernt unklare Sperrzustände)</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleStartingLockState_AsIs">
             <English>As Is</English>
             <Polish>Jak jest</Polish>
             <Spanish>Está</Spanish>
+            <German>Unverändert</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleStartingLockState_Locked">
             <English>Locked</English>
             <Polish>Zablokowany</Polish>
             <Spanish>Cerrado</Spanish>
+            <German>Gesperrt</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleStartingLockState_Unlocked">
             <English>Unlocked</English>
             <Polish>Odblokowany</Polish>
             <Spanish>Abierto</Spanish>
+            <German>Offen</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_DefaultLockpickStrength_DisplayName">
             <English>Default Lockpick Strength</English>
             <Polish>Czas włamywania</Polish>
             <Spanish>Durabilidad de la ganzua por defecto</Spanish>
+            <German>Standard-Pick-Stärke</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_DefaultLockpickStrength_Description">
             <English>Default Time to lockpick (in seconds). Default: 10</English>
             <Polish>Domyślny czas potrzebny na otwarcie pojazdu (w sekundach). Domyślnie: 10</Polish>
             <Spanish>Tiempo por defecto para forzar cerradura (en segundos). Por defecto: 10</Spanish>
+            <German>Standardzeit um ein Schloss zu knacken (in Sekunden). Standard: 10</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_Module_Description">
             <English>Settings for lockpick strength and initial vehicle lock state. Removes ambiguous lock states.&lt;br /&gt;Source: vehiclelock.pbo</English>
             <Polish>Ustawienia czasu włamywania oraz domyślnego stanu blokady pojazdów. Wyłącza dwuznaczne ustawienia blokady. Moduł ten umożliwia więc np. zamknięcie pojazdów przeciwnika na klucz tak, że gracze bez odpowiedniego sprzętu (wytrycha) nie będą mogli ich używać.&lt;br /&gt;Źródło: vehiclelock.pbo</Polish>
             <Spanish>Ajustes de la durabilidad de la ganzua y el estado inicial del cierre de los vehículos. Elimina estados de cierre ambiguos.&lt;br /&gt;Fuente: vehiclelock.pbo</Spanish>
+            <German>Einstellungen für Pick-Stärke und anfänglichen Fahrzeugsperrzustand. Entfernt unklare Sperrzustände.&lt;br /&gt;Quelle: vehiclelock.pbo</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleKeyAssign_Module_DisplayName">
             <English>Vehicle Key Assign</English>
             <Polish>Przydział kluczyka do pojazdu</Polish>
             <Spanish>Asignacion de la llave del vehículo</Spanish>
+            <German>Fahrzeugschlüsselzuweisung</German>
         </Key>
         <Key ID="STR_ACE_VehicleLock_VehicleKeyAssign_Module_Description">
             <English>Sync with vehicles and players.  Will handout custom keys to players for every synced vehicle. Only valid for objects present at mission start.&lt;br /&gt;Source: vehiclelock.pbo</English>
             <Polish>Zsynchronizuj z pojazdami i graczami. Rozda klucze dla graczy dla każdego zsynchronizowanego pojazdu. Działa tylko na pojazdy obecne na misji od samego początku (postawione w edytorze).&lt;br /&gt;Źródło: vehiclelock.pbo</Polish>
             <Spanish>Sincronizar con vehiculos y jugadores. Distribuirá llaves personalizadas a los jugadores para todos los vehículos sincronizados. Solo valido para objetos presentes al inicio de la mision.&lt;br /&gt;Fuente: vehiclelock.pbo</Spanish>
+            <German>Synchronisiere mit Fahrzeugen und Spielern. Wird eigene Schlüssel an Spieler für jedes synchronisierte Fahrzeuge aushändigen. Nur gültig für am Missionsstart existierende Fahrzeuge.&lt;br /&gt;Quelle: vehiclelock.pbo</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/viewdistance/ACE_Settings.hpp b/addons/viewdistance/ACE_Settings.hpp
index 87acad5667..8db97caa52 100644
--- a/addons/viewdistance/ACE_Settings.hpp
+++ b/addons/viewdistance/ACE_Settings.hpp
@@ -2,47 +2,45 @@ class ACE_Settings {
     class GVAR(enabled) {
         typeName = "BOOL";
         value = 1;
-        displayName = "Enable ACE viewdistance";
-        description = "Enables ACE viewdistance module.";
+        displayName = "$STR_ACE_ViewDistance_enabled_DisplayName";
+        description = "$STR_ACE_ViewDistance_enabled_Description";
     };
     class GVAR(viewDistanceOnFoot) {
         typeName = "SCALAR";
         isClientSettable = 1;
         value = 0; // index, NOT value // Can set it to client's actual viewdistance in the init function once ACE_Settings supports numbers (if ever).
-        values[] = {"Video settings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
-        displayName = "Client View Distance (On Foot)";
-        description = "Changes in game view distance when the player is on foot.";
+        values[] = {"$STR_ACE_ViewDistance_videosettings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
+        displayName = "$STR_ACE_ViewDistance_onFoot_DisplayName";
+        description = "$STR_ACE_ViewDistance_onFoot_Description";
     };
     class GVAR(viewDistanceLandVehicle) {
         typeName = "SCALAR";
         isClientSettable = 1;
         value = 0; // index, NOT value
-        values[] = {"Video settings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
-        displayName = "Client View Distance (Land Vehicle)";
-        description = "Changes in game view distance when the player is in a land vehicle.";
+        values[] = {"$STR_ACE_ViewDistance_videosettings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
+        displayName = "$STR_ACE_ViewDistance_landVehicle_DisplayName";
+        description = "$STR_ACE_ViewDistance_landVehicle_Description";
     };
     class GVAR(viewDistanceAirVehicle) {
         typeName = "SCALAR";
         isClientSettable = 1;
         value = 0; // index, NOT value
-        values[] = {"Video settings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
-        displayName = "Client View Distance (Air Vehicle)";
-        description = "Changes in game view distance when the player is in an air vehicle.";
+        values[] = {"$STR_ACE_ViewDistance_videosettings","500","1000","1500","2000","2500","3000","3500","4000","5000","6000","7000","8000","9000","10000"}; // Values also need to be changed in functions/fnc_returnValue.sqf
+        displayName = "$STR_ACE_ViewDistance_airVehicle_DisplayName";
+        description = "$STR_ACE_ViewDistance_airVehicle_Description";
     };
     class GVAR(limitViewDistance) {
         typeName = "SCALAR";
         value = 10000; // Value, NOT index. 10000 is the maximum in A3
-        displayName = "View Distance Limit";
-        description = "Limit for client's view distance set here and can overridden by module";
+        displayName = "$STR_ACE_ViewDistance_limit_DisplayName";
+        description = "$STR_ACE_ViewDistance_limit_setting";
     };
     class GVAR(objectViewDistanceCoeff) {
         typeName = "SCALAR";
         isClientSettable = 1;
         value = 0; // index. Actual coefficient is given by functions/fnc_returnObjectCoeff.sqf
-        values[] = {"Off","Very Low","Low","Medium","High","Very High"};
-        displayName = "Dynamic Object View Distance";
-        description = "Sets the object view distance as a coefficient of the view distance.";
+        values[] = {"$STR_ACE_ViewDistance_object_off","$STR_ACE_ViewDistance_object_verylow","$STR_ACE_ViewDistance_object_low","$STR_ACE_ViewDistance_object_medium","$STR_ACE_ViewDistance_object_high","$STR_ACE_ViewDistance_object_veryhigh"};
+        displayName = "$STR_ACE_ViewDistance_object_DisplayName";
+        description = "$STR_ACE_ViewDistance_object_Description";
     };
 };
-
-// To do: include string table style displayName & description.
\ No newline at end of file
diff --git a/addons/viewdistance/CfgVehicles.hpp b/addons/viewdistance/CfgVehicles.hpp
index 63a50cf099..cda9d4e332 100644
--- a/addons/viewdistance/CfgVehicles.hpp
+++ b/addons/viewdistance/CfgVehicles.hpp
@@ -4,23 +4,27 @@ class CfgVehicles {
         author = "$STR_ACE_Common_ACETeam";
         category = "ACE";
         function = QUOTE(DFUNC(initModule));
-        displayName = "View Distance Limiter";
+        displayName = "$STR_ACE_ViewDistance_Module_DisplayName";
         scope = 2;
         isGlobal = 1;
         //icon = ""; // needs an icon
         class Arguments {
             class moduleViewDistanceEnabled {
-                displayName = "Enable ACE viewdistance";
-                description = "Enables ACE viewdistance";
+                displayName = "$STR_ACE_ViewDistance_enabled_DisplayName";
+                description = "$STR_ACE_ViewDistance_enabled_Description";
                 typeName = "BOOL";
                 defaultValue = 1;
             };
             class moduleViewDistanceLimit {
-                displayName = "View Distance Limit";
-                description = "Sets the limit for how high clients can raise their view distance (<= 10000)";
+                displayName = "$STR_ACE_ViewDistance_limit_DisplayName";
+                description = "$STR_ACE_ViewDistance_limit_Description";
                 typeName = "NUMBER";
                 defaultValue = 10000;
             };
+        };
+		class ModuleDescription {
+            description = "$STR_ACE_ViewDistance_Module_Description";
+            sync[] = {};
         };
     };
 };
\ No newline at end of file
diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf
index 30d308dc51..9060254c60 100644
--- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf
+++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf
@@ -34,13 +34,13 @@ if (_object_view_distance_coeff > 0) then {
 
 if (_show_prompt) then {
     _text = if (_new_view_distance <= _view_distance_limit) then {
-            format ["<t align='center'>View Distance: %1m", str(viewDistance)];
+            format ["<t align='center'>%1 %2m", (localize "STR_ACE_ViewDistance_infotext"), str(viewDistance)];
         } else {
-            format ["<t align='center'>That option is invalid! The limit is %1m", str(viewDistance)];
+            format ["<t align='center'>%1 %2m", (localize "STR_ACE_ViewDistance_invalid"), str(viewDistance)];
         };
 
     if (GVAR(objectViewDistanceCoeff) > 0) then {
-        _text = _text + format ["<br/><t align='center'>Object View Distance is %1%2</t>",str(_object_view_distance_coeff * 100),"%"];
+        _text = _text + format ["<br/><t align='center'>%1 %2%3</t>", (localize "STR_ACE_ViewDistance_objectinfotext"), str(_object_view_distance_coeff * 100),"%"];
     };
     [parseText _text,2] call EFUNC(common,displayTextStructured);
 };
diff --git a/addons/viewdistance/stringtable.xml b/addons/viewdistance/stringtable.xml
new file mode 100644
index 0000000000..33d667b65f
--- /dev/null
+++ b/addons/viewdistance/stringtable.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project name="ACE">
+    <Package name="View Distance">
+        <Key ID="STR_ACE_ViewDistance_Module_DisplayName">
+            <English>View Distance Limiter</English>
+            <Polish>Ogranicznik zasięgu widzenia</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_Module_Description">
+            <English>Allows limiting maximum view distance that can be set by players.</English>
+            <Polish>Pozwala ustawić maksymalny limit zasięgu widzenia.</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_enabled_DisplayName">
+            <English>Enable ACE viewdistance</English>
+            <Polish>Wł. zasięg widzenia ACE</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_enabled_Description">
+            <English>Enables ACE viewdistance</English>
+            <Polish>Aktywuje możliwość zmiany zasięgu widzenia w menu ustawień ACE</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_limit_DisplayName">
+            <English>View Distance Limit</English>
+            <Polish>Limit zas. widzenia</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_limit_Description">
+            <English>Sets the limit for how high clients can raise their view distance (up to 10000)</English>
+            <Polish>Ustawia maksymalny limit zasięgu widzenia jaki mogą ustawić gracze (do 10000)</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_limit_setting">
+            <English>Limit for client's view distance set here and can overridden by module</English>
+            <Polish>Limit zasięgu widzenia jest ustawiany tutaj i może zostać nadpisany poprzez moduł</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_onFoot_DisplayName">
+            <English>Client View Distance (On Foot)</English>
+            <Polish>Zasięg widzenia (piechota)</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_onFoot_Description">
+            <English>Changes in game view distance when the player is on foot.</English>
+            <Polish>Zmienia zasięg widzenia kiedy gracz porusza się na piechotę.</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_landVehicle_DisplayName">
+            <English>Client View Distance (Land Vehicle)</English>
+            <Polish>Zasięg widzenia (pojazdy naziemne)</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_landVehicle_Description">
+            <English>Changes in game view distance when the player is in a land vehicle.</English>
+            <Polish>Zmienia zasięg widzenia kiedy gracz porusza się pojazdami naziemnymi.</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_airVehicle_DisplayName">
+            <English>Client View Distance (Air Vehicle)</English>
+            <Polish>Zasięg widzenia (pojazdy lotnicze)</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_airVehicle_Description">
+            <English>Changes in game view distance when the player is in an air vehicle.</English>
+            <Polish>Zmienia zasięg widzenia kiedy gracz porusza się pojazdami lotniczymi.</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_DisplayName">
+            <English>Dynamic Object View Distance</English>
+            <Polish>Dynamiczny zasięg rysowania obiektów</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_Description">
+            <English>Sets the object view distance as a coefficient of the view distance.</English>
+            <Polish>Zmienia zasięg rysowania obiektów jako mnożnik zasięgu widzenia.</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_off">
+            <English>Off</English>
+            <Polish>Wyłącz</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_verylow">
+            <English>Very Low</English>
+            <Polish>Bardzo niski</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_low">
+            <English>Low</English>
+            <Polish>Niski</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_medium">
+            <English>Medium</English>
+            <Polish>Średni</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_high">
+            <English>High</English>
+            <Polish>Wysoki</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_object_veryhigh">
+            <English>Very High</English>
+            <Polish>Bardzo wysoki</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_infotext">
+            <English>View Distance:</English>
+            <Polish>Zasięg widzenia:</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_objectinfotext">
+            <English>Object View Distance is</English>
+            <Polish>Zasięg widzenia obiektów wynosi</Polish>
+        </Key>
+        <Key ID="STR_ACE_ViewDistance_invalid">
+            <English>That option is invalid! The limit is</English>
+            <Polish>Ta opcja jest nieprawidłowa! Limit wynosi</Polish>
+        </Key>
+		<Key ID="STR_ACE_ViewDistance_videosettings">
+            <English>Video Settings</English>
+            <Polish>Ustawienia wideo</Polish>
+        </Key>
+    </Package>
+</Project>
diff --git a/addons/weather/XEH_preInit.sqf b/addons/weather/XEH_preInit.sqf
index 177b58ec82..eb5291334a 100644
--- a/addons/weather/XEH_preInit.sqf
+++ b/addons/weather/XEH_preInit.sqf
@@ -5,6 +5,7 @@ ADDON = false;
 
 PREP(calculateAirDensity);
 PREP(calculateBarometricPressure);
+PREP(calculateDensityAltitude);
 PREP(calculateDewPoint);
 PREP(calculateHeatIndex);
 PREP(calculateRoughnessLength);
diff --git a/addons/weather/config.cpp b/addons/weather/config.cpp
index 18059fe9e8..50e2f8ace0 100644
--- a/addons/weather/config.cpp
+++ b/addons/weather/config.cpp
@@ -5,7 +5,7 @@ class CfgPatches {
         units[] = {};
         weapons[] = {};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_common", "ace_modules"};
+        requiredAddons[] = {"ace_common"};
         author[] = {"q1184", "Rocko", "esteldunedain", "Ruthberg"};
         VERSION_CONFIG;
     };
diff --git a/addons/weather/functions/fnc_calculateDensityAltitude.sqf b/addons/weather/functions/fnc_calculateDensityAltitude.sqf
new file mode 100644
index 0000000000..97889e2499
--- /dev/null
+++ b/addons/weather/functions/fnc_calculateDensityAltitude.sqf
@@ -0,0 +1,19 @@
+/*
+ * Author: Ruthberg
+ *
+ * Calculates density altitude for a given air density
+ *
+ * Arguments:
+ * density of air - kg * m^(-3) <NUMBER>
+ *
+ * Return Value:
+ * density altitude - m <NUMBER>
+ *
+ * Return value:
+ * None
+ */
+#include "script_component.hpp"
+
+// Source: http://wahiduddin.net/calc/density_altitude.htm
+
+((44.3308 - 42.2665 * _this ^ 0.2349692456) * 1000)
diff --git a/addons/weather/stringtable.xml b/addons/weather/stringtable.xml
index e4967b47e0..3443bb4b47 100644
--- a/addons/weather/stringtable.xml
+++ b/addons/weather/stringtable.xml
@@ -17,71 +17,85 @@
             <English>Weather</English>
             <Polish>Pogoda</Polish>
             <Spanish>Clima</Spanish>
+            <German>Wetter</German>
         </Key>
         <Key ID="STR_ACE_Weather_Module_Description">
             <English>Multiplayer synchronized ACE weather module</English>
             <Polish>Synchronizowana pogoda ACE</Polish>
             <Spanish>Modulo climático del ACE sincronizado en multijugador</Spanish>
+            <German>ACE-Wettermodul (synchron im Multiplayer)</German>
         </Key>
         <Key ID="STR_ACE_Weather_enableServerController_DisplayName">
             <English>Weather propagation</English>
             <Polish>Zmiany pogody</Polish>
             <Spanish>Propagación del clima</Spanish>
+            <German>Wetterübertragung</German>
         </Key>
         <Key ID="STR_ACE_Weather_enableServerController_Description">
             <English>Enables server side weather propagation</English>
             <Polish>Aktywuje zmiany pogody po stronie serwera</Polish>
             <Spanish>Permite al servidor controlar la propagación del clima</Spanish>
+            <German>Aktiviere serverseitige Wetterübertragung</German>
         </Key>
         <Key ID="STR_ACE_Weather_useACEWeather_DisplayName">
             <English>ACE Weather</English>
             <Polish>Pogoda ACE</Polish>
             <Spanish>Clima ACE</Spanish>
+            <German>ACE-Wetter</German>
         </Key>
         <Key ID="STR_ACE_Weather_useACEWeather_Description">
             <English>Overrides the default weather (editor, mission settings) with ACE weather (map based)</English>
             <Polish>Nadpisuje domyślne ustawienia pogody (edytor, wywiad) przy użyciu pogody ACE (zależna od mapy)</Polish>
             <Spanish>Sobreescribe el sistema climático por defecto (editor, ajustes de mision) con clima del ACE (basado en el mapa)</Spanish>
+            <German>Überschreibt das Standardwetter (Editor, Missionseinstellungen) mit dem ACE-Wetter (kartenbasiert)</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncRain_DisplayName">
             <English>Sync Rain</English>
             <Polish>Synchronizuj deszcz</Polish>
             <Spanish>Sincronizar lluvia</Spanish>
+            <German>Regen synchronisieren</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncRain_Description">
             <English>Synchronizes rain</English>
             <Polish>Synchronizuje deszcz</Polish>
             <Spanish>Sincroniza la lluvia</Spanish>
+            <German>Synchronisiert den Regen</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncWind_DisplayName">
             <English>Sync Wind</English>
             <Polish>Synchronizuj wiatr</Polish>
             <Spanish>Sincronizar viento</Spanish>
+            <German>Wind synchronisieren</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncWind_Description">
             <English>Synchronizes wind</English>
             <Polish>Synchronizuje wiatr</Polish>
             <Spanish>Sincroniza el viento</Spanish>
+            <German>Synchronisiert den Wind</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncMisc_DisplayName">
             <English>Sync Misc</English>
             <Polish>Synchronizuj różne</Polish>
             <Spanish>Sincronizar otros</Spanish>
+            <German>Sonstiges synchronisieren</German>
         </Key>
         <Key ID="STR_ACE_Weather_syncMisc_Description">
             <English>Synchronizes lightnings, rainbow, fog, ...</English>
             <Polish>Synchronizuje pioruny, tęcze, mgłę, ...</Polish>
             <Spanish>Sincroniza relampagos, arcoiris, niebla ...</Spanish>
+            <German>Synchronisiert Blitze, Regenbögen, Nebel, ...</German>
         </Key>
         <Key ID="STR_ACE_Weather_serverUpdateInterval_DisplayName">
             <English>Update Interval</English>
             <Polish>Interwał aktualizacji</Polish>
             <Spanish>Intervalo de actualización</Spanish>
+            <German>Aktualisierungsintervall</German>
         </Key>
         <Key ID="STR_ACE_Weather_serverUpdateInterval_Description">
             <English>Defines the interval (seconds) between weather updates</English>
             <Polish>Określa interwał (sekundy) pomiędzy aktualizacjami pogody</Polish>
             <Spanish>Defina el intervalo (en segundos) entre actualizacions de clima</Spanish>
+            <German>Definiert das Intervall (in Sekunden) zwischen Wetteraktualisierungen</German>
         </Key>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/winddeflection/stringtable.xml b/addons/winddeflection/stringtable.xml
index 212c1dbd11..c0f1f74201 100644
--- a/addons/winddeflection/stringtable.xml
+++ b/addons/winddeflection/stringtable.xml
@@ -66,52 +66,62 @@
                 <English>Wind Deflection</English>
                 <Polish>Wpływ wiatru</Polish>
                 <Spanish>Desviación por viento</Spanish>
+                <German>Windablenkung</German>
             </Key>
             <Key ID="STR_ACE_Weather_deflectionModule_DisplayName">
                 <English>Wind Deflection</English>
                 <Polish>Wpływ wiatru</Polish>
                 <Spanish>Desviación por viento</Spanish>
+                <German>Windablenkung</German>
             </Key>
             <Key ID="STR_ACE_Weather_deflectionModule_Description">
                 <English>Enables wind deflection</English>
                 <Polish>Aktywuje wpływ wiatru na trajektorię lotu pocisków</Polish>
                 <Spanish>Activa la desviación por viento</Spanish>
+                <German>Aktiviert Windablenkung</German>
             </Key>
             <Key ID="STR_ACE_Weather_vehicleEnabled_DisplayName">
                 <English>Vehicle Enabled</English>
                 <Polish>Włączone dla pojazdów</Polish>
                 <Spanish>Habilitada en vehículos</Spanish>
+                <German>Fahrzeuge aktiviert</German>
             </Key>
             <Key ID="STR_ACE_Weather_vehicleEnabled_Description">
                 <English>Enables wind deflection for static/vehicle gunners</English>
                 <Polish>Aktywuje wpływ wiatru na trajektorię lotu pocisków dla broni statycznej i na pojazdach</Polish>
                 <Spanish>Habilita la desviación por viento para artilleros estaticos/de vehículos</Spanish>
+                <German>Aktiviere Windablenkung für statische oder Fahrzeugschützen</German>
             </Key>
             <Key ID="STR_ACE_Weather_simulationInterval_DisplayName">
                 <English>Simulation Interval</English>
                 <Polish>Interwał symulacji</Polish>
                 <Spanish>Intervalo de simulación</Spanish>
+                <German>Simulationsintervall</German>
             </Key>
             <Key ID="STR_ACE_Weather_simulationInterval_Description">
                 <English>Defines the interval between every calculation step</English>
                 <Polish>Określa interwał pomiędzy każdym krokiem kalkulacji</Polish>
                 <Spanish>Define el intervalo entre cada calculo</Spanish>
+                <German>Definiert das Intervall zwischen jedem Berechnungsschritt</German>
             </Key>
             <Key ID="STR_ACE_Weather_simulationRadius_DisplayName">
                 <English>Simulation Radius</English>
                 <Polish>Zasięg symulacji</Polish>
                 <Spanish>Radio de simulación</Spanish>
+                <German>Simulationsradius</German>
             </Key>
             <Key ID="STR_ACE_Weather_simulationRadius_Description">
                 <English>Defines the radius around the player (in meters) at which projectiles are wind deflected</English>
                 <Polish>Określa obszar naokoło gracza (w metrach), na którym pociski są znoszone przez wiatr</Polish>
                 <Spanish>Define el radio alrededor del jugador (en metros) en el cual los proyectiles son desviados por el viento</Spanish>
+                <German>Gibt den Radius (in Metern) um den Spieler an, in dem Projektile vom Wind beeinflusst werden</German>
             </Key>
             <Key ID="STR_ACE_Weather_windDeflection_Description">
                 <English>Wind influence on projectiles trajectory</English>
                 <Polish>Wpływ wiatru na trajektorię lotu pocisków</Polish>
                 <Spanish>Influencia del viento en la trayectoria de proyectiles</Spanish>
+                <German>Windeinfluss auf die Geschossbahnen</German>
             </Key>
         </Container>
     </Package>
-</Project>
\ No newline at end of file
+</Project>
diff --git a/addons/zeus/ACE_Settings.hpp b/addons/zeus/ACE_Settings.hpp
index 536790ba26..2630c72dff 100644
--- a/addons/zeus/ACE_Settings.hpp
+++ b/addons/zeus/ACE_Settings.hpp
@@ -18,6 +18,6 @@ class ACE_Settings {
     class GVAR(revealMines) {
         typeName = "SCALAR";
         value = 0;
-        values[] = {"Disabled", "Partially", "Fully"};
+        values[] = {"$STR_ACE_Zeus_revealMines_disable", "$STR_ACE_Zeus_revealMines_partial", "$STR_ACE_Zeus_revealMines_full"};
     };
 };
diff --git a/addons/zeus/CfgFactionClasses.hpp b/addons/zeus/CfgFactionClasses.hpp
deleted file mode 100644
index bf34546727..0000000000
--- a/addons/zeus/CfgFactionClasses.hpp
+++ /dev/null
@@ -1,6 +0,0 @@
-class CfgFactionClasses {
-    class NO_CATEGORY;
-    class ADDON: NO_CATEGORY {
-        displayName = "ACE Zeus";
-    };
-};
diff --git a/addons/zeus/CfgVehicles.hpp b/addons/zeus/CfgVehicles.hpp
index 7d145c8421..439dede5b1 100644
--- a/addons/zeus/CfgVehicles.hpp
+++ b/addons/zeus/CfgVehicles.hpp
@@ -3,78 +3,112 @@ class CfgVehicles {
     class ModuleEmpty_F;
     class ACE_Module;
 
-    class GVAR(moduleZeusSettings): ACE_Module {
+    class ModuleCurator_F: Module_F {
+        function = QFUNC(bi_moduleCurator);
+    };
+    class ModuleMine_F: ModuleEmpty_F {
+        function = QFUNC(bi_moduleMine);
+    };
+    class ModuleOrdnance_F: Module_F {
+        function = QFUNC(bi_moduleProjectile);
+    };
+    class ModuleRemoteControl_F: Module_F {
+        function = QFUNC(bi_moduleRemoteControl);
+    };
+    class GVAR(moduleSettings): ACE_Module {
         scope = 2;
-        displayName = "Zeus Settings [ACE]";
-        //icon = QUOTE(PATHTOF(iconGoesHere));
-        category = "ACE_zeus";
-        function = QUOTE(DFUNC(moduleZeusSettings));
+        displayName = "$STR_ACE_Zeus_Module_DisplayName";
+        icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Settings_ca.paa));
+        category = "ACE";
+        function = QFUNC(moduleZeusSettings);
         functionPriority = 1;
         isGlobal = 1;
         isTriggerActivated = 0;
         author = "SilentSpike";
         class Arguments {
             class zeusAscension {
-                displayName = "Ascension Messages";
-                description = "Display global popup messages when a player is assigned as Zeus.";
+                displayName = "$STR_ACE_Zeus_ascension_DisplayName";
+                description = "$STR_ACE_Zeus_ascension_Description";
                 typeName = "BOOL";
                 defaultValue = 0;
             };
             class zeusBird {
-                displayName = "Zeus Eagle";
-                description = "Spawn an eagle that follows the Zeus camera.";
+                displayName = "$STR_ACE_Zeus_bird_DisplayName";
+                description = "$STR_ACE_Zeus_bird_Description";
                 typeName = "BOOL";
                 defaultValue = 0;
             };
             class remoteWind {
-                displayName = "Wind Sounds";
-                description = "Play wind sounds when Zeus remote controls a unit.";
+                displayName = "$STR_ACE_Zeus_remoteWind_DisplayName";
+                description = "$STR_ACE_Zeus_remoteWind_Description";
                 typeName = "BOOL";
                 defaultValue = 0;
             };
             class radioOrdnance {
-                displayName = "Ordnance Warning";
-                description = "Play a radio warning when Zeus uses ordnance.";
+                displayName = "$STR_ACE_Zeus_radioOrdnance_DisplayName";
+                description = "$STR_ACE_Zeus_radioOrdnance_Description";
                 typeName = "BOOL";
                 defaultValue = 0;
             };
             class revealMines {
-                displayName = "Reveal Mines";
-                description = "Reveal mines to allies and/or place map markers.";
+                displayName = "$STR_ACE_Zeus_revealMines_DisplayName";
+                description = "$STR_ACE_Zeus_revealMines_Description";
                 typeName = "NUMBER";
                 class values {
                     class disable {
-                        name = "Disabled";
+                        name = "$STR_ACE_Zeus_revealMines_disable";
                         value = 0;
                         default = 1;
                     };
                     class partial {
-                        name = "Reveal to Allies";
+                        name = "$STR_ACE_Zeus_revealMines_partial";
                         value = 1;
                     };
                     class full  {
-                        name = "Allies + Map Markers";
+                        name = "$STR_ACE_Zeus_revealMines_full";
                         value = 2;
                     };
                 };
             };
         };
         class ModuleDescription {
-            description = "Provides control over various aspects of Zeus.";
+            description = "$STR_ACE_Zeus_Module_Description";
             sync[] = {};
         };
     };
-
-    class ModuleCurator_F: Module_F {
-        function = QUOTE(DFUNC(bi_moduleCurator));
+    class GVAR(moduleBase): Module_F {
+        author = "SilentSpike";
+        category = "ACE";
+        scopeCurator = 2;
     };
-    class ModuleMine_F: ModuleEmpty_F {
-        function = QUOTE(DFUNC(bi_moduleMine));
+    class GVAR(moduleCaptive): GVAR(moduleBase) {
+        curatorCanAttach = 1;
+        displayName = "$STR_ACE_Zeus_ModuleCaptive_DisplayName";
+        function = QFUNC(moduleCaptive);
+        icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Captive_ca.paa));
+        class ModuleDescription {
+            description = "Flips the capture state of the specified unit.";
+            sync[] = {};
+        };
     };
-    class ModuleOrdnance_F: Module_F {
-        function = QUOTE(DFUNC(bi_moduleProjectile));
+    class GVAR(moduleSurrender): GVAR(moduleBase) {
+        curatorCanAttach = 1;
+        displayName = "$STR_ACE_Zeus_ModuleSurrender_DisplayName";
+        function = QFUNC(moduleSurrender);
+        icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Surrender_ca.paa));
+        class ModuleDescription {
+            description = "Flips the surrender state of the specified unit.";
+            sync[] = {};
+        };
     };
-    class ModuleRemoteControl_F: Module_F {
-        function = QUOTE(DFUNC(bi_moduleRemoteControl));
+    class GVAR(moduleUnconscious): GVAR(moduleBase) {
+        curatorCanAttach = 1;
+        displayName = "$STR_ACE_Zeus_ModuleUnconscious_DisplayName";
+        function = QFUNC(moduleUnconscious);
+        icon = QUOTE(PATHTOF(UI\Icon_Module_Zeus_Unconscious_ca.paa));
+        class ModuleDescription {
+            description = "Flips the unconscious state of the specified unit.";
+            sync[] = {};
+        };
     };
 };
diff --git a/addons/zeus/XEH_preInit.sqf b/addons/zeus/XEH_preInit.sqf
index e7bb1b96a5..1b2ac19263 100644
--- a/addons/zeus/XEH_preInit.sqf
+++ b/addons/zeus/XEH_preInit.sqf
@@ -6,6 +6,14 @@ PREP(bi_moduleCurator);
 PREP(bi_moduleMine);
 PREP(bi_moduleProjectile);
 PREP(bi_moduleRemoteControl);
+PREP(handleZeusUnitAssigned);
+PREP(moduleCaptive);
+PREP(moduleSurrender);
+PREP(moduleUnconscious);
 PREP(moduleZeusSettings);
 
+if (isServer) then {
+    ["zeusUnitAssigned", FUNC(handleZeusUnitAssigned)] call EFUNC(common,addEventHandler);
+};
+
 ADDON = true;
diff --git a/addons/zeus/config.cpp b/addons/zeus/config.cpp
index 4bdc1cd5e1..7505f2770e 100644
--- a/addons/zeus/config.cpp
+++ b/addons/zeus/config.cpp
@@ -5,14 +5,30 @@ class CfgPatches {
         units[] = {};
         weapons[] = {};
         requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {"ace_common","ace_modules"};
+        requiredAddons[] = {"ace_common"};
         author[] = {"SilentSpike"};
         authorUrl = "https://github.com/SilentSpike";
         VERSION_CONFIG;
     };
+    // Use additional cfgPatches to contextually remove modules from zeus
+    class GVAR(captives): ADDON {
+        units[] = {
+            QGVAR(moduleCaptive),
+            QGVAR(moduleSurrender)
+        };
+    };
+    class GVAR(medical): ADDON {
+        units[] = {
+            QGVAR(moduleUnconscious)
+        };
+    };
+};
+
+class ACE_Curator {
+    GVAR(captives) = "ace_captives";
+    GVAR(medical) = "ace_medical";
 };
 
 #include "CfgEventHandlers.hpp"
-#include "CfgFactionClasses.hpp"
 #include "CfgVehicles.hpp"
 #include "ACE_Settings.hpp"
diff --git a/addons/zeus/functions/fnc_bi_moduleCurator.sqf b/addons/zeus/functions/fnc_bi_moduleCurator.sqf
index 016d1ae078..b33d7461cd 100644
--- a/addons/zeus/functions/fnc_bi_moduleCurator.sqf
+++ b/addons/zeus/functions/fnc_bi_moduleCurator.sqf
@@ -2,9 +2,12 @@
  * Author: Bohemia Interactive
  * Module function for initalizing zeus
  * Edited to remove eagle and global ascension message
+ * Added "zeusUnitAssigned" event call
  *
  * Arguments:
- * 0: The logic object <OBJECT>
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
  *
  * Return Value:
  * nil
@@ -169,6 +172,9 @@ if (_activated) then {
 
                 [_logic,"curatorUnitAssigned",[_logic,_player]] call bis_fnc_callscriptedeventhandler;
 
+                // Added by ACE_zeus
+                ["zeusUnitAssigned", [_logic,_player]] call EFUNC(common,globalEvent);
+
                 //--- Forced interface
                 //if (_forced) then {
                 //  [[true,true],"bis_fnc_forceCuratorInterface",_player] call bis_fnc_mp;
diff --git a/addons/zeus/functions/fnc_bi_moduleMine.sqf b/addons/zeus/functions/fnc_bi_moduleMine.sqf
index b5063c7fed..5eade0e0b4 100644
--- a/addons/zeus/functions/fnc_bi_moduleMine.sqf
+++ b/addons/zeus/functions/fnc_bi_moduleMine.sqf
@@ -4,7 +4,9 @@
  * Edited to remove forced map markers and mines being revealed to players
  *
  * Arguments:
- * 0: The logic object <OBJECT>
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
  *
  * Return Value:
  * nil
diff --git a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf
index 203d058d5a..3237d5be73 100644
--- a/addons/zeus/functions/fnc_bi_moduleProjectile.sqf
+++ b/addons/zeus/functions/fnc_bi_moduleProjectile.sqf
@@ -5,7 +5,9 @@
  * Edited to remove radio warning and add ballistics support
  *
  * Arguments:
- * 0: The logic object <OBJECT>
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
  *
  * Return Value:
  * nil
diff --git a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf
index 57b325b585..92cc786b23 100644
--- a/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf
+++ b/addons/zeus/functions/fnc_bi_moduleRemoteControl.sqf
@@ -4,7 +4,9 @@
  * Edited to remove global wind sound
  *
  * Arguments:
- * 0: The logic object <OBJECT>
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
  *
  * Return Value:
  * nil
diff --git a/addons/zeus/functions/fnc_handleZeusUnitAssigned.sqf b/addons/zeus/functions/fnc_handleZeusUnitAssigned.sqf
new file mode 100644
index 0000000000..e5433bad27
--- /dev/null
+++ b/addons/zeus/functions/fnc_handleZeusUnitAssigned.sqf
@@ -0,0 +1,50 @@
+/*
+ * Author: SilentSpike
+ * Contextually removes addons (given in ACE_Curator) from zeus based on their required addon(s)
+ *
+ * ACE_Curator format:
+ * ModuleAddon = "RequiredAddon";
+ * OR
+ * ModuleAddon[] = {"RequiredAddon1","RequiredAddon2",...}
+ *
+ * Arguments:
+ * 0: The zeus logic <LOGIC>
+ * 1: The zeus player <UNIT>
+ *
+ * Return Value:
+ * nil
+ *
+ * Public: No
+ */
+
+#include "script_component.hpp"
+
+private ["_logic","_removeAddons","_numCfgs","_cfg","_requiredAddon"];
+
+if !(isClass (configFile >> "ACE_Curator")) exitWith { ERROR("The ACE_Curator class does not exist") };
+
+_logic = _this select 0;
+_removeAddons = [];
+
+_numCfgs = count (configFile >> "ACE_Curator");
+for "_n" from 0 to (_numCfgs - 1) do {
+    _cfg = (configFile >> "ACE_Curator") select _n;
+
+    if (isArray _cfg) then {
+        _requiredAddon = getArray _cfg;
+        {
+            if !(isClass (configFile >> "CfgPatches" >> _x)) exitWith {
+                _removeAddons pushBack (configName _cfg);
+            };
+        } forEach _requiredAddon;
+    };
+
+    if (isText _cfg) then {
+        _requiredAddon = getText _cfg;
+        if !(isClass (configFile >> "CfgPatches" >> _requiredAddon)) then {
+            _removeAddons pushBack (configName _cfg);
+        };
+    };
+};
+
+_logic removeCuratorAddons _removeAddons;
diff --git a/addons/zeus/functions/fnc_moduleCaptive.sqf b/addons/zeus/functions/fnc_moduleCaptive.sqf
new file mode 100644
index 0000000000..624117ed03
--- /dev/null
+++ b/addons/zeus/functions/fnc_moduleCaptive.sqf
@@ -0,0 +1,45 @@
+/*
+ * Author: SilentSpike
+ * Flips the capture state of the unit the module is attached to.
+ *
+ * Arguments:
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
+ *
+ * ReturnValue:
+ * nil
+ *
+ * Public: no
+ */
+
+#include "script_component.hpp"
+
+PARAMS_3(_logic,_units,_activated);
+private ["_unit","_captive"];
+
+if (!_activated) exitWith {};
+
+if (isNil QEFUNC(captives,setHandcuffed)) then {
+    ["STR_ACE_Zeus_RequiresAddon"] call EFUNC(common,displayTextStructured);
+} else {
+    _unit = attachedTo _logic;
+
+    if (isNull _unit) then {
+        ["STR_ACE_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
+    } else {
+        if !(_unit isKindOf "CAManBase") then {
+            ["STR_ACE_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
+        } else {
+            if !(alive _unit) then {
+                ["STR_ACE_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
+            } else {
+                _captive = GETVAR(_unit,EGVAR(captives,isHandcuffed),false);
+                // Event initalized by ACE_Captives
+                ["SetHandcuffed", _unit, [_unit, !_captive]] call EFUNC(common,targetEvent);
+            };
+        };
+    };
+};
+
+deleteVehicle _logic;
diff --git a/addons/zeus/functions/fnc_moduleSurrender.sqf b/addons/zeus/functions/fnc_moduleSurrender.sqf
new file mode 100644
index 0000000000..094ece0979
--- /dev/null
+++ b/addons/zeus/functions/fnc_moduleSurrender.sqf
@@ -0,0 +1,49 @@
+/*
+ * Author: SilentSpike
+ * Flips the surrender state of the unit the module is attached to.
+ *
+ * Arguments:
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
+ *
+ * ReturnValue:
+ * nil
+ *
+ * Public: no
+ */
+
+#include "script_component.hpp"
+
+PARAMS_3(_logic,_units,_activated);
+private ["_unit","_surrendering"];
+
+if (!_activated) exitWith {};
+
+if (isNil QEFUNC(captives,setSurrendered)) then {
+    ["STR_ACE_Zeus_RequiresAddon"] call EFUNC(common,displayTextStructured);
+} else {
+    _unit = attachedTo _logic;
+
+    if (isNull _unit) then {
+        ["STR_ACE_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
+    } else {
+        if !(_unit isKindOf "CAManBase") then {
+            ["STR_ACE_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
+        } else {
+            if !(alive _unit) then {
+                ["STR_ACE_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
+            } else {
+                if (GETVAR(_unit,EGVAR(captives,isHandcuffed),false)) then {
+                    ["STR_ACE_Zeus_OnlyNonCaptive"] call EFUNC(common,displayTextStructured);
+                } else {
+                    _surrendering = GETVAR(_unit,EGVAR(captives,isSurrendering),false);
+                    // Event initalized by ACE_Captives
+                    ["SetSurrendered", _unit, [_unit, !_surrendering]] call EFUNC(common,targetEvent);
+                };
+            };
+        };
+    };
+};
+
+deleteVehicle _logic;
diff --git a/addons/zeus/functions/fnc_moduleUnconscious.sqf b/addons/zeus/functions/fnc_moduleUnconscious.sqf
new file mode 100644
index 0000000000..cf44b3e07e
--- /dev/null
+++ b/addons/zeus/functions/fnc_moduleUnconscious.sqf
@@ -0,0 +1,45 @@
+/*
+ * Author: SilentSpike
+ * Flips the unconscious state of the unit the module is attached to.
+ *
+ * Arguments:
+ * 0: The module logic <LOGIC>
+ * 1: units <ARRAY>
+ * 2: activated <BOOL>
+ *
+ * ReturnValue:
+ * nil
+ *
+ * Public: no
+ */
+
+#include "script_component.hpp"
+
+PARAMS_3(_logic,_units,_activated);
+private ["_unit","_conscious"];
+
+if (!_activated) exitWith {};
+
+if (isNil QEFUNC(medical,setUnconscious)) then {
+    ["STR_ACE_Zeus_RequiresAddon"] call EFUNC(common,displayTextStructured);
+} else {
+    _unit = attachedTo _logic;
+
+    if (isNull _unit) then {
+        ["STR_ACE_Zeus_NothingSelected"] call EFUNC(common,displayTextStructured);
+    } else {
+        if !(_unit isKindOf "CAManBase") then {
+            ["STR_ACE_Zeus_OnlyInfantry"] call EFUNC(common,displayTextStructured);
+        } else {
+            if !(alive _unit) then {
+                ["STR_ACE_Zeus_OnlyAlive"] call EFUNC(common,displayTextStructured);
+            } else {
+                _conscious = GETVAR(_unit,ACE_isUnconscious,false);
+                // Function handles locality for me
+                [_unit, !_conscious, round(random(10)+5), true] call EFUNC(medical,setUnconscious);
+            };
+        };
+    };
+};
+
+deleteVehicle _logic;
diff --git a/addons/zeus/stringtable.xml b/addons/zeus/stringtable.xml
new file mode 100644
index 0000000000..d21814623a
--- /dev/null
+++ b/addons/zeus/stringtable.xml
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project name="ACE">
+    <Package name="Zeus">
+        <Key ID="STR_ACE_Zeus_Module_DisplayName">
+            <English>Zeus Settings</English>
+            <Polish>Ustawienia Zeusa</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_Module_Description">
+            <English>Provides control over various aspects of Zeus.</English>
+            <Polish>Pozwala kontrolować różne aspekty Zeusa.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_ascension_DisplayName">
+            <English>Ascension Messages</English>
+            <Polish>Wiad. o nowym Zeusie</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_ascension_Description">
+            <English>Display global popup messages when a player is assigned as Zeus.</English>
+            <Polish>Wyświetlaj globalną wiadomość kiedy gracz zostanie przydzielony jako Zeus</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_bird_DisplayName">
+            <English>Zeus Eagle</English>
+            <Polish>Orzeł Zeusa</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_bird_Description">
+            <English>Spawn an eagle that follows the Zeus camera.</English>
+            <Polish>Spawnuj orła, który podąrza za kamerą Zeusa.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_remoteWind_DisplayName">
+            <English>Wind Sounds</English>
+            <Polish>Dźwięki wiatru</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_remoteWind_Description">
+            <English>Play wind sounds when Zeus remote controls a unit.</English>
+            <Polish>Odtwarzaj dźwięki wiatru kiedy Zeus zdalnie kontroluje jednostkę.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_radioOrdnance_DisplayName">
+            <English>Ordnance Warning</English>
+            <Polish>Ostrz. o ostrzale arty.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_radioOrdnance_Description">
+            <English>Play a radio warning when Zeus uses ordnance.</English>
+            <Polish>Odtwarzaj wiadomość radiową kiedy Zeus używa artylerii.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_revealMines_DisplayName">
+            <English>Reveal Mines</English>
+            <Polish>Pokazuj miny</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_revealMines_Description">
+            <English>Reveal mines to allies and place map markers.</English>
+            <Polish>Pokazuj znaczniki min dla sojuszników i twórz markery na mapie w miejscu min.</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_revealMines_disable">
+            <English>Disabled</English>
+            <Polish>Wyłączone</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_revealMines_partial">
+            <English>Reveal to Allies</English>
+            <Polish>Pokaż dla sojuszników</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_revealMines_full">
+            <English>Allies + Map Markers</English>
+            <Polish>Sojusznicy + markery na mapie</Polish>
+        </Key>
+        <Key ID="STR_ACE_Zeus_ModuleCaptive_DisplayName">
+            <English>Toggle Captive</English>
+        </Key>
+        <Key ID="STR_ACE_Zeus_ModuleSurrender_DisplayName">
+            <English>Toggle Surrender</English>
+        </Key>
+        <Key ID="STR_ACE_Zeus_ModuleUnconscious_DisplayName">
+            <English>Toggle Unconscious</English>
+        </Key>
+        <Key ID="STR_ACE_Zeus_OnlyAlive">
+            <English>Unit must be alive</English>
+            <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>
+            <Polish>Używaj tylko na żywych jednostkach</Polish>
+            <Russian>Применимо только к живым юнитам</Russian>
+            <Hungarian>Csak élő egységeken használni</Hungarian>
+            <Italian>Si può fare solo su persone vive</Italian>
+            <Portuguese>Usar somente em unidades vivas</Portuguese>
+        </Key>
+        <Key ID="STR_ACE_Zeus_OnlyInfantry">
+            <English>Unit must be infantry</English>
+            <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>
+            <Polish>Używaj tylko na piechocie poza wszelkimi pojazdami</Polish>
+            <Russian>Применимо только к пехоте вне техники</Russian>
+            <Hungarian>Csak járműben kívül lévő egységeken használni</Hungarian>
+            <Italian>Si può usare solo su fanteria a piedi</Italian>
+            <Portuguese>Usar somente em infantaria desmontada</Portuguese>
+        </Key>
+        <Key ID="STR_ACE_Zeus_OnlyNonCaptive">
+            <English>Unit must not be captive</English>
+        </Key>
+        <Key ID="STR_ACE_Zeus_NothingSelected">
+            <English>Place on a unit</English>
+            <French>Rien sous le curseur</French>
+            <German>Es wurde nichts ausgewählt</German>
+            <Spanish>Nada bajo el ratón</Spanish>
+            <Portuguese>Nada debaixo do mouse</Portuguese>
+            <Czech>Nic není vybráno</Czech>
+            <Polish>Nie ma nic pod kursorem</Polish>
+            <Russian>Ничего не выделено</Russian>
+            <Hungarian>Semmi sincs az egér alatt</Hungarian>
+            <Italian>Nessuna selezione</Italian>
+        </Key>
+        <Key ID="STR_ACE_Zeus_RequiresAddon">
+            <English>Requires an addon that is not present</English>
+        </Key>
+    </Package>
+</Project>
diff --git a/addons/zeus/ui/Icon_Module_Zeus_Captive_ca.paa b/addons/zeus/ui/Icon_Module_Zeus_Captive_ca.paa
new file mode 100644
index 0000000000..aa7eb0faf8
Binary files /dev/null and b/addons/zeus/ui/Icon_Module_Zeus_Captive_ca.paa differ
diff --git a/addons/zeus/ui/Icon_Module_Zeus_Settings_ca.paa b/addons/zeus/ui/Icon_Module_Zeus_Settings_ca.paa
new file mode 100644
index 0000000000..58bbe312ce
Binary files /dev/null and b/addons/zeus/ui/Icon_Module_Zeus_Settings_ca.paa differ
diff --git a/addons/zeus/ui/Icon_Module_Zeus_Surrender_ca.paa b/addons/zeus/ui/Icon_Module_Zeus_Surrender_ca.paa
new file mode 100644
index 0000000000..6ddabf4d56
Binary files /dev/null and b/addons/zeus/ui/Icon_Module_Zeus_Surrender_ca.paa differ
diff --git a/addons/zeus/ui/Icon_Module_Zeus_Unconscious_ca.paa b/addons/zeus/ui/Icon_Module_Zeus_Unconscious_ca.paa
new file mode 100644
index 0000000000..fb179e40fc
Binary files /dev/null and b/addons/zeus/ui/Icon_Module_Zeus_Unconscious_ca.paa differ
diff --git a/documentation/README_PL.md b/documentation/README_PL.md
index d156185908..4d4c36a619 100644
--- a/documentation/README_PL.md
+++ b/documentation/README_PL.md
@@ -4,29 +4,28 @@
 </p>
 <p align="center">
     <a href="https://github.com/acemod/ACE3/releases">
-        <img src="http://img.shields.io/badge/Version-3.0.0-blue.svg?style=flat"
-             alt="ACE version">
+        <img src="http://img.shields.io/badge/Wersja-3.0.1-blue.svg"
+             alt="ACE wersja">
     </a>
-    <a href="https://github.com/acemod/ACE3/archive/master.zip">
-        <img src="http://img.shields.io/badge/Download-48.3_MB-green.svg?style=flat"
-             alt="ACE download">
+    <a href="https://github.com/acemod/ACE3/releases/download/v3.0.1/ace3_3.0.1.zip">
+        <img src="http://img.shields.io/badge/Pobierz-40.9_MB-green.svg"
+             alt="ACE pobierz">
     </a>
     <a href="https://github.com/acemod/ACE3/issues">
-        <img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?style=flat&label=Issues"
-             alt="ACE issues">
+        <img src="http://img.shields.io/github/issues-raw/acemod/ACE3.svg?label=Zagadnienia"
+             alt="ACE zagadnienia">
     </a>
-    <a href="http://forums.bistudio.com/showthread.php?190433-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2910796&viewfull=1#post2910796">
-        <img src="https://img.shields.io/badge/BIF-Thread-lightgrey.svg?style=flat"
-             alt="BIF thread">
+    <a href="http://forums.bistudio.com/showthread.php?191716-ACE3-A-collaborative-merger-between-AGM-CSE-and-ACE&p=2935435&viewfull=1#post2935435">
+        <img src="https://img.shields.io/badge/Temat-BIF-lightgrey.svg"
+             alt="Temat BIF">
     </a>
     <a href="https://github.com/acemod/ACE3/blob/master/LICENSE">
-        <img src="http://img.shields.io/badge/License-GPLv2-red.svg?style=flat"
-             alt="ACE license">
+        <img src="http://img.shields.io/badge/Licencja-GPLv2-red.svg"
+             alt="ACE licencja">
     </a>
 </p>
 <p align="center"><sup><strong>Wymaga najnowszej wersji <a href="http://www.armaholic.com/page.php?id=18767">CBA A3</a>. Odwiedź nas na <a href="https://www.facebook.com/ACE3Mod">Facebook</a> | <a href="https://www.youtube.com/c/ACE3Mod">YouTube</a> | <a href="https://twitter.com/ACE3Mod">Twitter</a> | <a href="http://www.reddit.com/r/arma/search?q=ACE&restrict_sr=on&sort=new&t=all">Reddit</a></strong></sup></p>
 
-
 **ACE3** to efekt wspólnego wysiłku grup moderów odpowiedzialnych za **ACE2**, **AGM** oraz **CSE** w celu zwiększenia realizmu i autentyczności Arma 3.
 
 Projekt ten jest całkowicie **otwarty źródłowo** i wszelki wkład w rozwój jest mile widziany. Możesz bez przeszkód prowadzić swoją własną dostosowaną wersję, o ile zmiany jakie wprowadzisz będą otwarte dla publiki zgodnie z GNU General Public License ([GPLv2](https://github.com/acemod/ACE3/blob/master/LICENSE)).
@@ -81,4 +80,4 @@ Używaj naszego [Issue Tracker-a](https://github.com/acemod/ACE3/issues) aby zg
 
 #### Testowanie i budowanie
 Aby pomóc nam w testowaniu najnowszych zmian rozwojowych, pobierz nasz master branch ([bezpośrednio](https://github.com/acemod/ACE3/archive/master.zip), lub [korzystając z git](https://help.github.com/articles/fetching-a-remote/)), a następnie złóż testowego build-a:
-* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE do celów testowych.
\ No newline at end of file
+* [Konfiguracja środowiska do testów](http://ace3mod.com/wiki/development/setting-up-the-development-environment.html) – intrukcja krok-po-kroku jak poprawnie ustawić i zbudować wersję ACE do celów testowych.
diff --git a/extras/assets/icons/Icons_Modules.psd b/extras/assets/icons/Icons_Modules.psd
index 9686644521..af9b9abaa0 100644
Binary files a/extras/assets/icons/Icons_Modules.psd and b/extras/assets/icons/Icons_Modules.psd differ
diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Captive_ca.png b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Captive_ca.png
new file mode 100644
index 0000000000..f40078473c
Binary files /dev/null and b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Captive_ca.png differ
diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Settings_ca.png b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Settings_ca.png
new file mode 100644
index 0000000000..517c060180
Binary files /dev/null and b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Settings_ca.png differ
diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Surrender_ca.png b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Surrender_ca.png
new file mode 100644
index 0000000000..5d7d08b50a
Binary files /dev/null and b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Surrender_ca.png differ
diff --git a/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Unconscious_ca.png b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Unconscious_ca.png
new file mode 100644
index 0000000000..abbb79bb9b
Binary files /dev/null and b/extras/assets/icons/png/Icon_Module/Icon_Module_Zeus_Unconscious_ca.png differ