From ba089d4691f7c2ef24b55531f396fd3efe73ea36 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 02:06:47 +0100
Subject: [PATCH 001/139] init

---
 addons/wardrobe/$PBOPREFIX$                   |   1 +
 addons/wardrobe/Baseclass.hpp                 |  39 +++++
 addons/wardrobe/CfgFunctions.hpp              |  69 +++++++++
 addons/wardrobe/CfgVehicles.hpp               |  17 +++
 addons/wardrobe/TODO/gm/$PBOPREFIX$           |   1 +
 addons/wardrobe/TODO/gm/CfgWardrobe.hpp       |  17 +++
 addons/wardrobe/TODO/gm/Helmets.hpp           |  14 ++
 addons/wardrobe/TODO/gm/Uniforms.hpp          |  82 +++++++++++
 addons/wardrobe/TODO/gm/config.cpp            |  35 +++++
 addons/wardrobe/TODO/gm/notes.md              |   4 +
 addons/wardrobe/TODO/gm/script_component.hpp  |   9 ++
 addons/wardrobe/TODO/rf/$PBOPREFIX$           |   1 +
 addons/wardrobe/TODO/rf/CfgWardrobe.hpp       |  21 +++
 addons/wardrobe/TODO/rf/Helmets.hpp           |  24 +++
 addons/wardrobe/TODO/rf/Uniforms.hpp          |  23 +++
 addons/wardrobe/TODO/rf/config.cpp            |  35 +++++
 addons/wardrobe/TODO/rf/notes.md              |   4 +
 addons/wardrobe/TODO/rf/script_component.hpp  |   9 ++
 addons/wardrobe/TODO/vanilla/$PBOPREFIX$      |   1 +
 addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp  |  10 ++
 addons/wardrobe/TODO/vanilla/Uniforms.hpp     |  23 +++
 addons/wardrobe/TODO/vanilla/config.cpp       |  35 +++++
 .../TODO/vanilla/script_component.hpp         |   9 ++
 addons/wardrobe/TODO/vn/$PBOPREFIX$           |   1 +
 addons/wardrobe/TODO/vn/Booniehats.hpp        |  45 ++++++
 addons/wardrobe/TODO/vn/CfgWardrobe.hpp       |  20 +++
 addons/wardrobe/TODO/vn/Pilothelmets.hpp      |  47 ++++++
 addons/wardrobe/TODO/vn/Uniforms_B.hpp        |  63 ++++++++
 addons/wardrobe/TODO/vn/Uniforms_O.hpp        |  85 +++++++++++
 addons/wardrobe/TODO/vn/config.cpp            |  35 +++++
 addons/wardrobe/TODO/vn/notes.md              |   4 +
 addons/wardrobe/TODO/vn/script_component.hpp  |   8 +
 .../TODO/vn/vn_uniform_fix/Uniforms.hpp       |  21 +++
 .../TODO/vn/vn_uniform_fix/config.cpp         |  38 +++++
 .../vn/vn_uniform_fix/script_component.hpp    |   9 ++
 addons/wardrobe/TODO/ws/$PBOPREFIX$           |   1 +
 addons/wardrobe/TODO/ws/CfgWardrobe.hpp       |  12 ++
 addons/wardrobe/TODO/ws/Turbans.hpp           |  34 +++++
 addons/wardrobe/TODO/ws/config.cpp            |  35 +++++
 addons/wardrobe/TODO/ws/notes.md              |   4 +
 addons/wardrobe/TODO/ws/script_component.hpp  |   9 ++
 addons/wardrobe/XEH/CfgXEH.hpp                |   6 +
 addons/wardrobe/XEH/XEH_preInit.sqf           |  39 +++++
 addons/wardrobe/config.cpp                    |  40 +++++
 .../ace_intel/fn_getIndexFromMagID.sqf        |  24 +++
 .../functions/ace_intel/fn_getMagIDs.sqf      |  26 ++++
 .../ace_intel/fn_setIndexForMagID.sqf         |  25 ++++
 .../functions/action/fn_addActions.sqf        |  49 ++++++
 .../action/fn_addActions_children.sqf         |  51 +++++++
 .../action/fn_addActions_condition.sqf        |  20 +++
 .../functions/action/fn_getAction_Icon.sqf    |  22 +++
 .../functions/action/fn_getAction_Name.sqf    |  22 +++
 .../functions/cache/fn_cache_clear.sqf        |  26 ++++
 .../wardrobe/functions/cache/fn_cache_db.sqf  |  27 ++++
 .../wardrobe/functions/cache/fn_cache_get.sqf |  24 +++
 .../wardrobe/functions/cache/fn_cache_set.sqf |  26 ++++
 addons/wardrobe/functions/fn_checkItem.sqf    |  25 ++++
 addons/wardrobe/functions/fn_clearOnClose.sqf |  39 +++++
 .../functions/fn_getCfgDataRandom.sqf         |  25 ++++
 addons/wardrobe/functions/fn_postInit.sqf     |  18 +++
 addons/wardrobe/functions/fn_say3d.sqf        |  35 +++++
 .../functions/getItems/fn_getItems_all.sqf    |  30 ++++
 .../getItems/fn_getItems_modifiable_all.sqf   |  35 +++++
 .../fn_getItems_modifiable_current.sqf        |  36 +++++
 .../wardrobe/functions/replace/fn_replace.sqf |  81 ++++++++++
 .../functions/replace/fn_replace_facewear.sqf |  23 +++
 .../functions/replace/fn_replace_headgear.sqf |  23 +++
 .../functions/replace/fn_replace_uniform.sqf  |  54 +++++++
 addons/wardrobe/script_component.hpp          |  18 +++
 addons/wardrobe/script_macros_zrn.hpp         | 139 ++++++++++++++++++
 addons/wardrobe/stringtable.xml               |  63 ++++++++
 71 files changed, 2025 insertions(+)
 create mode 100644 addons/wardrobe/$PBOPREFIX$
 create mode 100644 addons/wardrobe/Baseclass.hpp
 create mode 100644 addons/wardrobe/CfgFunctions.hpp
 create mode 100644 addons/wardrobe/CfgVehicles.hpp
 create mode 100644 addons/wardrobe/TODO/gm/$PBOPREFIX$
 create mode 100644 addons/wardrobe/TODO/gm/CfgWardrobe.hpp
 create mode 100644 addons/wardrobe/TODO/gm/Helmets.hpp
 create mode 100644 addons/wardrobe/TODO/gm/Uniforms.hpp
 create mode 100644 addons/wardrobe/TODO/gm/config.cpp
 create mode 100644 addons/wardrobe/TODO/gm/notes.md
 create mode 100644 addons/wardrobe/TODO/gm/script_component.hpp
 create mode 100644 addons/wardrobe/TODO/rf/$PBOPREFIX$
 create mode 100644 addons/wardrobe/TODO/rf/CfgWardrobe.hpp
 create mode 100644 addons/wardrobe/TODO/rf/Helmets.hpp
 create mode 100644 addons/wardrobe/TODO/rf/Uniforms.hpp
 create mode 100644 addons/wardrobe/TODO/rf/config.cpp
 create mode 100644 addons/wardrobe/TODO/rf/notes.md
 create mode 100644 addons/wardrobe/TODO/rf/script_component.hpp
 create mode 100644 addons/wardrobe/TODO/vanilla/$PBOPREFIX$
 create mode 100644 addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
 create mode 100644 addons/wardrobe/TODO/vanilla/Uniforms.hpp
 create mode 100644 addons/wardrobe/TODO/vanilla/config.cpp
 create mode 100644 addons/wardrobe/TODO/vanilla/script_component.hpp
 create mode 100644 addons/wardrobe/TODO/vn/$PBOPREFIX$
 create mode 100644 addons/wardrobe/TODO/vn/Booniehats.hpp
 create mode 100644 addons/wardrobe/TODO/vn/CfgWardrobe.hpp
 create mode 100644 addons/wardrobe/TODO/vn/Pilothelmets.hpp
 create mode 100644 addons/wardrobe/TODO/vn/Uniforms_B.hpp
 create mode 100644 addons/wardrobe/TODO/vn/Uniforms_O.hpp
 create mode 100644 addons/wardrobe/TODO/vn/config.cpp
 create mode 100644 addons/wardrobe/TODO/vn/notes.md
 create mode 100644 addons/wardrobe/TODO/vn/script_component.hpp
 create mode 100644 addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp
 create mode 100644 addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
 create mode 100644 addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
 create mode 100644 addons/wardrobe/TODO/ws/$PBOPREFIX$
 create mode 100644 addons/wardrobe/TODO/ws/CfgWardrobe.hpp
 create mode 100644 addons/wardrobe/TODO/ws/Turbans.hpp
 create mode 100644 addons/wardrobe/TODO/ws/config.cpp
 create mode 100644 addons/wardrobe/TODO/ws/notes.md
 create mode 100644 addons/wardrobe/TODO/ws/script_component.hpp
 create mode 100644 addons/wardrobe/XEH/CfgXEH.hpp
 create mode 100644 addons/wardrobe/XEH/XEH_preInit.sqf
 create mode 100644 addons/wardrobe/config.cpp
 create mode 100644 addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf
 create mode 100644 addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf
 create mode 100644 addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf
 create mode 100644 addons/wardrobe/functions/action/fn_addActions.sqf
 create mode 100644 addons/wardrobe/functions/action/fn_addActions_children.sqf
 create mode 100644 addons/wardrobe/functions/action/fn_addActions_condition.sqf
 create mode 100644 addons/wardrobe/functions/action/fn_getAction_Icon.sqf
 create mode 100644 addons/wardrobe/functions/action/fn_getAction_Name.sqf
 create mode 100644 addons/wardrobe/functions/cache/fn_cache_clear.sqf
 create mode 100644 addons/wardrobe/functions/cache/fn_cache_db.sqf
 create mode 100644 addons/wardrobe/functions/cache/fn_cache_get.sqf
 create mode 100644 addons/wardrobe/functions/cache/fn_cache_set.sqf
 create mode 100644 addons/wardrobe/functions/fn_checkItem.sqf
 create mode 100644 addons/wardrobe/functions/fn_clearOnClose.sqf
 create mode 100644 addons/wardrobe/functions/fn_getCfgDataRandom.sqf
 create mode 100644 addons/wardrobe/functions/fn_postInit.sqf
 create mode 100644 addons/wardrobe/functions/fn_say3d.sqf
 create mode 100644 addons/wardrobe/functions/getItems/fn_getItems_all.sqf
 create mode 100644 addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
 create mode 100644 addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
 create mode 100644 addons/wardrobe/functions/replace/fn_replace.sqf
 create mode 100644 addons/wardrobe/functions/replace/fn_replace_facewear.sqf
 create mode 100644 addons/wardrobe/functions/replace/fn_replace_headgear.sqf
 create mode 100644 addons/wardrobe/functions/replace/fn_replace_uniform.sqf
 create mode 100644 addons/wardrobe/script_component.hpp
 create mode 100644 addons/wardrobe/script_macros_zrn.hpp
 create mode 100644 addons/wardrobe/stringtable.xml

diff --git a/addons/wardrobe/$PBOPREFIX$ b/addons/wardrobe/$PBOPREFIX$
new file mode 100644
index 00000000000..a04885ddda0
--- /dev/null
+++ b/addons/wardrobe/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\wardrobe
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
new file mode 100644
index 00000000000..7e4efe5649c
--- /dev/null
+++ b/addons/wardrobe/Baseclass.hpp
@@ -0,0 +1,39 @@
+class GVAR(base) 
+{
+    modifiableTo[] = {""};
+
+    // WIP
+    modifiableToWithDependency = "";
+    dependency = "";
+
+    // Supports Multiple Sounds, will pick one by random.
+    sound[] = {"click"}; // I need a better default Sound
+    sound_timing = 1;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
+
+    // Gesture
+    gesture = "Gear";
+
+    // These will be read from the Target Class, so for example, the uniformclass with the rolled up sleaves, it should say "Roll Up Sleves"
+    alternativePicture = "";
+    alternativeDisplayName = "";
+
+    duration = 1; // Minimum Value: 1 - Anything above will produce a progressbar.
+};
+
+// Common Base Class for Uniforms with Sleeves Up/Down Variants
+class GVAR(base_U_sleeves_up)   : GVAR(base) { alternativeDisplayName = CSTRING(sleevesUp);   };
+class GVAR(base_U_sleeves_down) : GVAR(base) { alternativeDisplayName = CSTRING(sleevesDown); };
+
+// Common Base Class for Uniforms with Sleeves Up/Down Variants
+class GVAR(base_U_gloves_on)  : GVAR(base) { alternativeDisplayName = CSTRING(glovesOn);  };
+class GVAR(base_U_gloves_off) : GVAR(base) { alternativeDisplayName = CSTRING(glovesOff); };
+
+
+// Common Base Class for Uniforms who are open/closed in the front
+class GVAR(base_U_jacket_open)   : GVAR(base) { alternativeDisplayName = CSTRING(jacketOpen);  };
+class GVAR(base_U_jacket_closed) : GVAR(base) { alternativeDisplayName = CSTRING(jacketClose); };
+
+
+// Common Base Class for Helmets with a Visor that can be flipped up or down
+class GVAR(base_H_visor_up)   : GVAR(base) { gesture ="gestureNod"; sound[] = {""}; soundEnd[] = {"click"}; alternativeDisplayName = CSTRING(visorUp); };
+class GVAR(base_H_visor_down) : GVAR(base) { gesture ="gestureNod"; sound[] = {""}; soundEnd[] = {"click"}; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
new file mode 100644
index 00000000000..926a5696fa4
--- /dev/null
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -0,0 +1,69 @@
+class CfgFunctions
+{
+    class ADDON
+    {
+        class COMPONENT
+        {
+            file = PATH_TO_FUNC;
+
+            class postInit { postInit = 1; };
+            class say3d {};
+
+            class clearOnClose {};
+            class checkItem {};
+            class getCfgDataRandom {};
+
+        };
+
+        class ace_intel
+        {
+            file = PATH_TO_FUNC_SUB(ace_intel);
+            class getMagIDs {};
+            class getIndexFromMagID {};
+            class setIndexForMagID {};
+        };
+
+        class getItems
+        {
+            file = PATH_TO_FUNC_SUB(getItems);
+            class getItems_all {};
+            class getItems_modifiable_all {};
+            class getItems_modifiable_current {};
+            
+        };
+
+        class replace
+        {
+            file = PATH_TO_FUNC_SUB(replace);
+
+            class replace {};
+            class replace_headgear {};
+            class replace_facewear {};
+            class replace_uniform  {};
+        };
+
+        class action
+        {
+            file = PATH_TO_FUNC_SUB(action);
+
+            class addActions {};
+            class addActions_condition {};
+            class addActions_children {};
+
+            class getAction_Name {};
+            class getAction_Icon {};
+        };
+
+        class cache
+        {
+            file = PATH_TO_FUNC_SUB(cache);
+
+            class cache_db {};
+
+            class cache_get {};
+            class cache_set {};
+
+            class cache_clear {};
+        };
+    };
+};
\ No newline at end of file
diff --git a/addons/wardrobe/CfgVehicles.hpp b/addons/wardrobe/CfgVehicles.hpp
new file mode 100644
index 00000000000..5dbee3c34d4
--- /dev/null
+++ b/addons/wardrobe/CfgVehicles.hpp
@@ -0,0 +1,17 @@
+class CfgVehicles {
+    class Man;
+    class CAManBase: Man {
+        class ACE_SelfActions {
+            class ACE_Equipment {
+                class ADDON {
+                    displayName = CSTRING(actionTitle); // Text shown to user
+                    icon = "";
+                    condition = Q([_player] call FUNC(addActions_condition));
+                    statement = "";
+                    insertChildren = Q([_player] call FUNC(addActions));
+                    exceptions[] = {"isNotSwimming","isNotSitting"};
+                };
+            };
+        };
+    };
+};
diff --git a/addons/wardrobe/TODO/gm/$PBOPREFIX$ b/addons/wardrobe/TODO/gm/$PBOPREFIX$
new file mode 100644
index 00000000000..e4a1b10ddc6
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\gm
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/CfgWardrobe.hpp b/addons/wardrobe/TODO/gm/CfgWardrobe.hpp
new file mode 100644
index 00000000000..678f456585d
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/CfgWardrobe.hpp
@@ -0,0 +1,17 @@
+class EGVAR(wardrobe,base);
+
+class EGVAR(wardrobe,base_H_visor_up);
+class EGVAR(wardrobe,base_H_visor_down);
+
+class EGVAR(wardrobe,base_U_sleeves_up);
+class EGVAR(wardrobe,base_U_sleeves_down);
+
+class EGVAR(wardrobe,base_U_gloves_on);
+class EGVAR(wardrobe,base_U_gloves_off);
+
+class CfgWeapons
+{
+    #include "Helmets.hpp"
+    #include "Uniforms.hpp"
+};
+
diff --git a/addons/wardrobe/TODO/gm/Helmets.hpp b/addons/wardrobe/TODO/gm/Helmets.hpp
new file mode 100644
index 00000000000..1d8a7e52f32
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/Helmets.hpp
@@ -0,0 +1,14 @@
+// CfgWeapons
+
+// Base Classes
+class gm_ge_headgear_psh77_cover_down_base;
+class gm_ge_headgear_psh77_cover_up_base;
+class gm_ge_headgear_psh77_down_base;
+class gm_ge_headgear_psh77_up_base;
+
+class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp"   }; }; };
+class gm_ge_bgs_headgear_psh77_cover_up_smp   : gm_ge_headgear_psh77_cover_up_base   { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" }; }; };
+class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str"   }; }; };
+class gm_ge_bgs_headgear_psh77_cover_up_str   : gm_ge_headgear_psh77_cover_up_base   { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" }; }; };
+class gm_ge_headgear_psh77_down_oli           : gm_ge_headgear_psh77_down_base       { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_headgear_psh77_up_oli"             }; }; };
+class gm_ge_headgear_psh77_up_oli             : gm_ge_headgear_psh77_up_base         { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_headgear_psh77_down_oli"           }; }; };
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/Uniforms.hpp b/addons/wardrobe/TODO/gm/Uniforms.hpp
new file mode 100644
index 00000000000..9d55165814c
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/Uniforms.hpp
@@ -0,0 +1,82 @@
+// CfgWeapons
+
+// Sleves
+
+class gm_ge_bgs_uniform_special_80_base;
+class gm_ge_bgs_uniform_special_rolled_80_base;
+
+class gm_ge_bgs_uniform_special_80_grn        : gm_ge_bgs_uniform_special_80_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) }; }; };
+class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) }; }; };
+
+class gm_ge_bgs_uniform_special_80_blk        : gm_ge_bgs_uniform_special_80_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) }; }; };
+class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) }; }; };
+
+
+class gm_ge_army_uniform_pilot_base;
+class gm_ge_army_uniform_pilot_rolled_base;
+
+class gm_ge_army_uniform_pilot_sar        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) }; }; };
+class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) }; }; };
+
+class gm_ge_army_uniform_pilot_oli        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) }; }; };
+class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) }; }; };
+
+class gm_ge_pol_uniform_pilot_grn        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) }; }; };
+class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) }; }; };
+
+class gm_ge_uniform_pilot_commando_base;
+class gm_ge_uniform_pilot_commando_rolled_base;
+
+class gm_ge_uniform_pilot_commando_oli        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) }; }; };
+
+class gm_ge_uniform_pilot_commando_gry        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) }; }; };
+
+class gm_ge_uniform_pilot_commando_blk        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) }; }; };
+
+class gm_pl_uniform_soldier_80_base;
+
+class gm_pl_army_uniform_soldier_80_frog        : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) }; }; };
+class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) }; }; };
+
+class gm_pl_army_uniform_soldier_80_moro        : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) }; }; };
+class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) }; }; };
+
+
+class gm_ge_uniform_soldier_90_base;
+
+class gm_ge_uniform_soldier_90_trp        : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) }; }; };
+class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) }; }; };
+
+class gm_ge_uniform_soldier_90_flk        : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) }; }; };
+class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) }; }; };
+
+
+
+
+// Gloves
+
+class gm_gc_uniform_soldier_80_base;
+class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str)        }; }; };
+class gm_gc_army_uniform_soldier_80_str        : gm_gc_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) }; }; };
+
+class gm_ge_uniform_soldier_80_base;
+class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols)        }; }; };
+class gm_ge_army_uniform_soldier_80_ols        : gm_ge_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) }; }; };
+
+
+// Mixed case -> Base Interaction
+class gm_ge_army_uniform_soldier_bdu_80_wdl;
+class gm_ge_army_uniform_soldier_bdu_rolled_80_wdl;
+
+class gm_xx_uniform_soldier_bdu_80_wdl          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
+class gm_xx_uniform_soldier_bdu_rolled_80_wdl   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
+class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl)   }; }; };
+
+class gm_xx_uniform_soldier_bdu_80_oli          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
+class gm_xx_uniform_soldier_bdu_rolled_80_oli   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
+class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_rolled_80_oli)   }; }; };
+
+
diff --git a/addons/wardrobe/TODO/gm/config.cpp b/addons/wardrobe/TODO/gm/config.cpp
new file mode 100644
index 00000000000..fff8caaa821
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/config.cpp
@@ -0,0 +1,35 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main", "gm_core"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/notes.md b/addons/wardrobe/TODO/gm/notes.md
new file mode 100644
index 00000000000..0021f2a4fad
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/notes.md
@@ -0,0 +1,4 @@
+lxWS_H_turban_01_black
+lxWS_H_turban_02_black
+lxWS_H_turban_03_black
+lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/script_component.hpp b/addons/wardrobe/TODO/gm/script_component.hpp
new file mode 100644
index 00000000000..e823f5b7dfe
--- /dev/null
+++ b/addons/wardrobe/TODO/gm/script_component.hpp
@@ -0,0 +1,9 @@
+#define COMPONENT ws
+
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for Western Sahara
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/rf/$PBOPREFIX$ b/addons/wardrobe/TODO/rf/$PBOPREFIX$
new file mode 100644
index 00000000000..fa13eec9733
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\rf
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/CfgWardrobe.hpp b/addons/wardrobe/TODO/rf/CfgWardrobe.hpp
new file mode 100644
index 00000000000..7973d34ce81
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/CfgWardrobe.hpp
@@ -0,0 +1,21 @@
+class EGVAR(wardrobe,base);
+class EGVAR(wardrobe,base_U_sleeves_up);
+class EGVAR(wardrobe,base_U_sleeves_down);
+class EGVAR(wardrobe,base_U_jacket_open);
+class EGVAR(wardrobe,base_U_jacket_closed);
+class EGVAR(wardrobe,base_H_visor_up);
+class EGVAR(wardrobe,base_H_visor_down);
+
+class CfgWeapons
+{
+    #include "Helmets.hpp"
+    #include "Uniforms.hpp"
+
+
+    // Cap (Ion) Forward and Reversed
+    class lxWS_H_CapB_rvs_blk;
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
+};
+
+
diff --git a/addons/wardrobe/TODO/rf/Helmets.hpp b/addons/wardrobe/TODO/rf/Helmets.hpp
new file mode 100644
index 00000000000..111db01f951
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/Helmets.hpp
@@ -0,0 +1,24 @@
+// CfgWeapons
+
+// Macros
+#define CN(color) H_HelmetHeavy_##color##_RF
+#define CN_VU(color) H_HelmetHeavy_VisorUp_##color##_RF
+
+
+#define HELMET_VARIANT(color)\
+class CN(color): H_HelmetHeavy_Black_RF            { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
+class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN(color))    }; }; };\
+
+
+// Base Classes
+class H_HelmetAggressor_F;
+
+class H_HelmetHeavy_Black_RF         : H_HelmetAggressor_F    { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
+class H_HelmetHeavy_VisorUp_Black_RF : H_HelmetHeavy_Black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "H_HelmetHeavy_Black_RF"         }; }; };
+
+// Variants
+HELMET_VARIANT(Hex)
+HELMET_VARIANT(GHex)
+HELMET_VARIANT(Sand)
+HELMET_VARIANT(Olive)
+HELMET_VARIANT(White)
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/Uniforms.hpp b/addons/wardrobe/TODO/rf/Uniforms.hpp
new file mode 100644
index 00000000000..a00636efc1d
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/Uniforms.hpp
@@ -0,0 +1,23 @@
+// CfgWeapons
+
+class Uniform_Base;
+
+// Macros
+#define UNIFORM_BASE(class1,class2)\
+class class1: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+
+// Simple Variants
+UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
+UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF)
+
+
+// Pilot Jackets
+class U_C_PilotJacket_black_RF      : Uniform_Base             { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
+class U_C_PilotJacket_open_black_RF : U_C_PilotJacket_black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
+
+class U_C_PilotJacket_brown_RF      : U_C_PilotJacket_black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
+class U_C_PilotJacket_open_brown_RF : U_C_PilotJacket_brown_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
+
+class U_C_PilotJacket_lbrown_RF      : U_C_PilotJacket_black_RF  { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
+class U_C_PilotJacket_open_lbrown_RF : U_C_PilotJacket_lbrown_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
diff --git a/addons/wardrobe/TODO/rf/config.cpp b/addons/wardrobe/TODO/rf/config.cpp
new file mode 100644
index 00000000000..511bd1d8a81
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/config.cpp
@@ -0,0 +1,35 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main","RF_Data_Loadorder"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/notes.md b/addons/wardrobe/TODO/rf/notes.md
new file mode 100644
index 00000000000..0021f2a4fad
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/notes.md
@@ -0,0 +1,4 @@
+lxWS_H_turban_01_black
+lxWS_H_turban_02_black
+lxWS_H_turban_03_black
+lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/script_component.hpp b/addons/wardrobe/TODO/rf/script_component.hpp
new file mode 100644
index 00000000000..09b545796d9
--- /dev/null
+++ b/addons/wardrobe/TODO/rf/script_component.hpp
@@ -0,0 +1,9 @@
+#define COMPONENT rf
+
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for Reaction Forces
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vanilla/$PBOPREFIX$ b/addons/wardrobe/TODO/vanilla/$PBOPREFIX$
new file mode 100644
index 00000000000..c38a70b1dd2
--- /dev/null
+++ b/addons/wardrobe/TODO/vanilla/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\vanilla
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp b/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
new file mode 100644
index 00000000000..c581aff3568
--- /dev/null
+++ b/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
@@ -0,0 +1,10 @@
+class EGVAR(wardrobe,base);
+class EGVAR(wardrobe,base_U_sleeves_up);
+class EGVAR(wardrobe,base_U_sleeves_down);
+
+
+
+class CfgWeapons
+{
+    #include "Uniforms.hpp"
+};
diff --git a/addons/wardrobe/TODO/vanilla/Uniforms.hpp b/addons/wardrobe/TODO/vanilla/Uniforms.hpp
new file mode 100644
index 00000000000..e7c46ed163b
--- /dev/null
+++ b/addons/wardrobe/TODO/vanilla/Uniforms.hpp
@@ -0,0 +1,23 @@
+// CfgWeapons
+class Uniform_Base;
+
+// Macros
+#define UNIFORM_BASE(class1,class2)\
+class class1: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+
+
+// Vanilla CTRG Uniform
+UNIFORM_BASE(U_B_CTRG_1,U_B_CTRG_3)
+
+// AAF Fatigues
+UNIFORM_BASE(U_I_CombatUniform,U_I_CombatUniform_shortsleeve)
+
+// APEX CTRG Uniforms
+UNIFORM_BASE(U_B_CTRG_Soldier_F,U_B_CTRG_Soldier_3_F)
+UNIFORM_BASE(U_B_CTRG_Soldier_Arid_F,U_B_CTRG_Soldier_3_Arid_F)
+UNIFORM_BASE(U_B_CTRG_Soldier_urb_1_F,U_B_CTRG_Soldier_urb_3_F)
+
+// Contact - LDF Fatigues
+UNIFORM_BASE(U_I_E_Uniform_01_F,U_I_E_Uniform_01_shortsleeve_F)
+
diff --git a/addons/wardrobe/TODO/vanilla/config.cpp b/addons/wardrobe/TODO/vanilla/config.cpp
new file mode 100644
index 00000000000..d0d31d554ad
--- /dev/null
+++ b/addons/wardrobe/TODO/vanilla/config.cpp
@@ -0,0 +1,35 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vanilla/script_component.hpp b/addons/wardrobe/TODO/vanilla/script_component.hpp
new file mode 100644
index 00000000000..a67b9d8c2b2
--- /dev/null
+++ b/addons/wardrobe/TODO/vanilla/script_component.hpp
@@ -0,0 +1,9 @@
+#define COMPONENT vanilla
+
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for Vanilla Assets
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vn/$PBOPREFIX$ b/addons/wardrobe/TODO/vn/$PBOPREFIX$
new file mode 100644
index 00000000000..2d7e5ca17f8
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\vn
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/Booniehats.hpp b/addons/wardrobe/TODO/vn/Booniehats.hpp
new file mode 100644
index 00000000000..0cb46ac35c9
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/Booniehats.hpp
@@ -0,0 +1,45 @@
+// CfgWeapons
+
+// Variations
+// 01 sides up 02 normal 03 front up 04 l side up 05 r side up
+// 06-08 anzac
+// 09 rebel - not compatible
+//Colors
+// 01 green 02 tiger 03 black 04 spray 05 tiger green 06 erdl brown 07 leopard 08 erdl
+// 09 gray <- Fuck this - inheritance is fucking horrible as fuck.
+
+// Macros
+#define CN(variation,color) vn_b_boonie_##variation##_##color
+
+// Base Boonie
+#define CAMO_BASE 01
+class CN(02,CAMO_BASE) : vn_b_headgear_base { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(01,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(04,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) }; }; };
+
+
+#define CN_COLORS(CAMO)\
+class CN(02,CAMO) : CN(02,01)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(01,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(03,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(04,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(05,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) }; }; };\
+
+CN_COLORS(02)
+CN_COLORS(03)
+CN_COLORS(04)
+CN_COLORS(05)
+
+
+// Base classes in CfgWeapons.hpp
+// 06-08 anzac
+
+#define BOONIE_ANZAC(VAR)
+class CN(06,VAR) : CN(02,01)  { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) }; }; };
+class CN(07,VAR) : CN(06,VAR) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) }; }; };
+class CN(08,VAR) : CN(06,VAR) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) }; }; };
+
+BOONIE_ANZAC(01)
+BOONIE_ANZAC(02)
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/CfgWardrobe.hpp b/addons/wardrobe/TODO/vn/CfgWardrobe.hpp
new file mode 100644
index 00000000000..79049a426bd
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/CfgWardrobe.hpp
@@ -0,0 +1,20 @@
+class EGVAR(wardrobe,base);
+
+class EGVAR(wardrobe,base_H_visor_up);
+class EGVAR(wardrobe,base_H_visor_down);
+
+class EGVAR(wardrobe,base_U_sleeves_up);
+class EGVAR(wardrobe,base_U_sleeves_down);
+
+class CfgWeapons
+{
+    // Base Classes
+    class vn_b_headgear_base;
+    class vn_o_headgear_base;
+
+    #include "Pilothelmets.hpp"
+    #include "Booniehats.hpp"
+    #include "Uniforms_B.hpp"
+    #include "Uniforms_O.hpp"
+};
+
diff --git a/addons/wardrobe/TODO/vn/Pilothelmets.hpp b/addons/wardrobe/TODO/vn/Pilothelmets.hpp
new file mode 100644
index 00000000000..d41144eaa0a
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/Pilothelmets.hpp
@@ -0,0 +1,47 @@
+// CfgWeapons
+
+
+// Macros
+#define CN01(side,var1,var2) vn_##side##_helmet_##var1##_01_##var2
+#define CN02(side,var1,var2) vn_##side##_helmet_##var1##_02_##var2
+
+
+#define HELMET_VARIANT(side,var1,var2)\
+class CN01(side,var1,var2) : base_class_up { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN02(side,var1,var2)) }; }; };\
+class CN02(side,var1,var2) : base_class_dn { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };\
+
+
+// Base classes in CfgWeapons.hpp
+
+// Parent Version aph6 & svh4
+#define base_class_up vn_b_headgear_base
+#define base_class_dn vn_b_headgear_base
+HELMET_VARIANT(b,aph6,01)
+HELMET_VARIANT(b,svh4,01)
+
+// Child Version aph6
+#undef base_class_up
+#undef base_class_dn
+#define base_class_up CN01(b,aph6,01)
+#define base_class_dn CN02(b,aph6,01)
+
+HELMET_VARIANT(b,aph6,02)
+HELMET_VARIANT(b,aph6,03)
+HELMET_VARIANT(b,aph6,04)
+HELMET_VARIANT(b,aph6,05)
+
+// Child Version svh4
+#undef base_class_up
+#undef base_class_dn
+#define base_class_up CN01(b,svh4,01)
+#define base_class_dn CN02(b,svh4,01)
+
+HELMET_VARIANT(b,svh4,02)
+HELMET_VARIANT(b,svh4,03)
+HELMET_VARIANT(b,svh4,04)
+HELMET_VARIANT(b,svh4,05)
+HELMET_VARIANT(b,svh4,06)
+
+// Special Case zsh3
+class vn_o_helmet_zsh3_01 :  vn_o_headgear_base  { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(vn_o_helmet_zsh3_02) }; }; };
+class vn_o_helmet_zsh3_02 :  vn_o_helmet_zsh3_01 { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(vn_o_helmet_zsh3_01) }; }; };
diff --git a/addons/wardrobe/TODO/vn/Uniforms_B.hpp b/addons/wardrobe/TODO/vn/Uniforms_B.hpp
new file mode 100644
index 00000000000..3e3953b4a29
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/Uniforms_B.hpp
@@ -0,0 +1,63 @@
+// CfgWeapons
+
+class vn_b_uniform_base;
+
+// Macros
+
+
+#define UNIFORM_BASE_B(class1,class2)\
+class class1: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+
+#define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
+
+#define B_U_PAIR(div,down,up,camo) UNIFORM_BASE_B(B_U(div,down,camo),B_U(div,up,camo))
+
+
+// Simple Variants
+// ACZAC
+UNIFORM_BASE_B(vn_b_uniform_aus_01_01,vn_b_uniform_aus_02_01)
+UNIFORM_BASE_B(vn_b_uniform_aus_03_01,vn_b_uniform_aus_04_01)
+UNIFORM_BASE_B(vn_b_uniform_aus_05_01,vn_b_uniform_aus_06_01)
+UNIFORM_BASE_B(vn_b_uniform_aus_07_01,vn_b_uniform_aus_08_01)
+UNIFORM_BASE_B(vn_b_uniform_aus_09_01,vn_b_uniform_aus_10_01)
+
+// NZ
+UNIFORM_BASE_B(vn_b_uniform_NZ_01_01,vn_b_uniform_NZ_02_01)
+UNIFORM_BASE_B(vn_b_uniform_NZ_03_01,vn_b_uniform_NZ_04_01)
+UNIFORM_BASE_B(vn_b_uniform_NZ_05_01,vn_b_uniform_NZ_06_01)
+
+// SEAL STUFF
+UNIFORM_BASE_B(vn_b_uniform_seal_01_01,vn_b_uniform_seal_02_01)
+UNIFORM_BASE_B(vn_b_uniform_seal_01_02,vn_b_uniform_seal_02_02)
+UNIFORM_BASE_B(vn_b_uniform_seal_01_05,vn_b_uniform_seal_02_05)
+UNIFORM_BASE_B(vn_b_uniform_seal_01_06,vn_b_uniform_seal_02_06)
+UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07)
+
+// MACV
+#define OLIVE_FIELD 01
+#define TIGER 02
+#define TIGER_GREEN 05
+#define ERDL_BROWN 06
+#define OLIVE 07
+#define LEOPARD 08
+#define ERDL 15
+#define LIZARD 16
+#define BDQ 17
+#define FROG 18
+
+// macv 05 and 04 have inconsistency between them -> different uniform maxLoad. This likely will cause the player to loose items when the uniform is filled to the brim. Difference is 1lb which translates to 16~17x ace bandages or 1x 1l blood
+#define B_U_PAIR_SET(camo)\
+B_U_PAIR(macv,02,03,camo)\
+B_U_PAIR(macv,05,04,camo)\
+
+B_U_PAIR_SET(TIGER)
+B_U_PAIR_SET(TIGER_GREEN)
+B_U_PAIR_SET(ERDL)
+B_U_PAIR_SET(ERDL_BROWN)
+B_U_PAIR_SET(OLIVE)
+B_U_PAIR_SET(OLIVE_FIELD)
+B_U_PAIR_SET(LEOPARD)
+B_U_PAIR_SET(LIZARD)
+B_U_PAIR_SET(BDQ)
+B_U_PAIR_SET(FROG)
diff --git a/addons/wardrobe/TODO/vn/Uniforms_O.hpp b/addons/wardrobe/TODO/vn/Uniforms_O.hpp
new file mode 100644
index 00000000000..0ed331e0da9
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/Uniforms_O.hpp
@@ -0,0 +1,85 @@
+class vn_o_uniform_base;
+
+#define UNIFORM_BASE_O(class1,class2)\
+class class1: vn_o_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: vn_o_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+
+// OPFOR
+
+// NVA Sailors
+UNIFORM_BASE_O(vn_o_uniform_nva_navy_01,vn_o_uniform_nva_navy_03)
+UNIFORM_BASE_O(vn_o_uniform_nva_navy_02,vn_o_uniform_nva_navy_04)
+
+// NVA_Army_AA_BB
+// brown: 01,02 03,04 | GREEN: 01..12
+#define BROWN 01
+#define BROWN_FIELD 02
+#define GREEN 03
+#define GREEN_FIELD 04
+#define O_U_NVA_ARMY(var,camo) vn_o_uniform_nva_army_##var##_##camo
+#define O_U_NVA_ARMY_PAIR(down,up,camo) UNIFORM_BASE_O(O_U_NVA_ARMY(down,camo),O_U_NVA_ARMY(up,camo))
+O_U_NVA_ARMY_PAIR(01,02,BROWN)
+O_U_NVA_ARMY_PAIR(03,04,BROWN)
+O_U_NVA_ARMY_PAIR(01,02,BROWN_FIELD)
+O_U_NVA_ARMY_PAIR(03,04,BROWN_FIELD)
+
+O_U_NVA_ARMY_PAIR(01,02,GREEN)
+O_U_NVA_ARMY_PAIR(03,04,GREEN)
+O_U_NVA_ARMY_PAIR(05,06,GREEN)
+O_U_NVA_ARMY_PAIR(07,08,GREEN)
+O_U_NVA_ARMY_PAIR(09,10,GREEN)
+O_U_NVA_ARMY_PAIR(11,12,GREEN)
+O_U_NVA_ARMY_PAIR(01,02,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(03,04,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(05,06,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(07,08,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(09,10,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(11,12,GREEN_FIELD)
+
+// PL ARMY
+#define DARK 11
+#define DARK_FIELD 12
+#define LIGHT 13
+#define LIGHT_FIELD 14
+#define O_U_PL_ARMY(var,camo) vn_o_uniform_pl_army_##var##_##camo
+#define O_U_PL_ARMY_PAIR(down,up,camo) UNIFORM_BASE_O(O_U_PL_ARMY(down,camo),O_U_PL_ARMY(up,camo))
+
+O_U_PL_ARMY_PAIR(01,02,DARK)
+O_U_PL_ARMY_PAIR(03,04,DARK)
+O_U_PL_ARMY_PAIR(01,02,DARK_FIELD)
+O_U_PL_ARMY_PAIR(03,04,DARK_FIELD)
+O_U_PL_ARMY_PAIR(01,02,LIGHT)
+O_U_PL_ARMY_PAIR(03,04,LIGHT)
+O_U_PL_ARMY_PAIR(01,02,LIGHT_FIELD)
+O_U_PL_ARMY_PAIR(03,04,LIGHT_FIELD)
+
+
+#define O_U(div,var,camo) vn_o_uniform_##div##_##var##_##camo
+#define O_U_PAIR(div,down,up,camo) UNIFORM_BASE_O(O_U(div,down,camo),O_U(div,up,camo))
+// VC MF
+#define VC_MF 07
+O_U_PAIR(vc_mf,01,02,VC_MF)
+O_U_PAIR(vc_mf,03,04,VC_MF)
+O_U_PAIR(vc_mf,09,10,VC_MF)
+O_U_PAIR(vc_mf,11,12,VC_MF)
+
+// VC REG
+O_U_PAIR(vc_reg,11,12,08)
+O_U_PAIR(vc_reg,11,12,09)
+O_U_PAIR(vc_reg,11,12,10)
+
+// VC BLACK 01 BLACK_WHITE 02 GREY_TAN 03 BLUE 04 WHITE_BLACK 05 BLUE_WHITE 06 BLUE_GREY 07
+O_U_PAIR(vc,01,02,01)
+O_U_PAIR(vc,03,04,01)
+O_U_PAIR(vc,01,02,02)
+O_U_PAIR(vc,03,04,02)
+O_U_PAIR(vc,01,02,03)
+O_U_PAIR(vc,03,04,03)
+O_U_PAIR(vc,01,02,04)
+O_U_PAIR(vc,03,04,04)
+O_U_PAIR(vc,01,02,05)
+O_U_PAIR(vc,03,04,05)
+O_U_PAIR(vc,01,02,06)
+O_U_PAIR(vc,03,04,06)
+O_U_PAIR(vc,01,02,07)
+O_U_PAIR(vc,03,04,07)
diff --git a/addons/wardrobe/TODO/vn/config.cpp b/addons/wardrobe/TODO/vn/config.cpp
new file mode 100644
index 00000000000..fa4640d2f84
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/config.cpp
@@ -0,0 +1,35 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main","vn_data_f"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/notes.md b/addons/wardrobe/TODO/vn/notes.md
new file mode 100644
index 00000000000..0021f2a4fad
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/notes.md
@@ -0,0 +1,4 @@
+lxWS_H_turban_01_black
+lxWS_H_turban_02_black
+lxWS_H_turban_03_black
+lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/script_component.hpp b/addons/wardrobe/TODO/vn/script_component.hpp
new file mode 100644
index 00000000000..ec51690e2fc
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/script_component.hpp
@@ -0,0 +1,8 @@
+#define COMPONENT vn
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for SOG:PF
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp b/addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp
new file mode 100644
index 00000000000..fca77bf4987
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp
@@ -0,0 +1,21 @@
+class ItemInfo;
+
+class CfgWeapons
+{
+    // Importing the parent class for the uniforms we want to change, so we can inherit from it.
+    class vn_b_uniform_base;
+    // creating the macro
+    #define S_70(className)\
+    class className : vn_b_uniform_base { class ItemInfo : ItemInfo { containerClass = "Supply70"; }; };\
+
+    S_70(vn_b_uniform_macv_04_01)
+    S_70(vn_b_uniform_macv_04_02)
+    S_70(vn_b_uniform_macv_04_05)
+    S_70(vn_b_uniform_macv_04_06)
+    S_70(vn_b_uniform_macv_04_07)
+    S_70(vn_b_uniform_macv_04_08)
+    S_70(vn_b_uniform_macv_04_15)
+    S_70(vn_b_uniform_macv_04_16)
+    S_70(vn_b_uniform_macv_04_17)
+    S_70(vn_b_uniform_macv_04_18)
+};
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp b/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
new file mode 100644
index 00000000000..3e183709561
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
@@ -0,0 +1,38 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // SubAddon Stuff
+        addonRootClass = QPVAR(vn);
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main","vn_data_f"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "Uniforms.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp b/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
new file mode 100644
index 00000000000..972e84ffaa8
--- /dev/null
+++ b/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
@@ -0,0 +1,9 @@
+#define COMPONENT vn_uniform_fix
+
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for SOG:PF - Uniform Fix
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/ws/$PBOPREFIX$ b/addons/wardrobe/TODO/ws/$PBOPREFIX$
new file mode 100644
index 00000000000..1da69ea8489
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/$PBOPREFIX$
@@ -0,0 +1 @@
+z\ace\addons\ws
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/CfgWardrobe.hpp b/addons/wardrobe/TODO/ws/CfgWardrobe.hpp
new file mode 100644
index 00000000000..5edba25847d
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/CfgWardrobe.hpp
@@ -0,0 +1,12 @@
+class EGVAR(wardrobe,base);
+
+class CfgWeapons
+{
+    // Cap (Ion) Forward and Reversed
+    class lxWS_H_CapB_rvs_blk;
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };
+
+    #include "Turbans.hpp"
+};
+
diff --git a/addons/wardrobe/TODO/ws/Turbans.hpp b/addons/wardrobe/TODO/ws/Turbans.hpp
new file mode 100644
index 00000000000..92db3bc726f
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/Turbans.hpp
@@ -0,0 +1,34 @@
+// CfgWeapons
+
+// MACROS
+#define CN(version,color) lxWS_H_turban_##version##_##color
+#define QCN(version,color) Q(CN(version,color))
+
+#define COLORGROUP(COLOR)\
+class CN(01,COLOR): lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
+class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
+class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
+class CN(04,COLOR): lxWS_H_turban_04_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };\
+
+#define COLORGROUP_SPECIAL(COLOR)\
+class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
+class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };\
+
+// BASECLASS
+class H_Shemag_khk;
+class lxWS_H_turban_01_black : H_Shemag_khk           { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black) }; }; };
+class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black) }; }; };
+class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black) }; }; };
+class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black) }; }; };
+
+// VARIATIONS
+COLORGROUP(blue)
+COLORGROUP(blue_una)
+COLORGROUP(green)
+COLORGROUP(red)
+COLORGROUP(sand)
+COLORGROUP(gray)
+COLORGROUP(yellow)
+
+// Special Variations
+COLORGROUP_SPECIAL(green_pattern)
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/config.cpp b/addons/wardrobe/TODO/ws/config.cpp
new file mode 100644
index 00000000000..ee6b5864984
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/config.cpp
@@ -0,0 +1,35 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_mod_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main","Characters_f_lxWS_headgear"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/notes.md b/addons/wardrobe/TODO/ws/notes.md
new file mode 100644
index 00000000000..0021f2a4fad
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/notes.md
@@ -0,0 +1,4 @@
+lxWS_H_turban_01_black
+lxWS_H_turban_02_black
+lxWS_H_turban_03_black
+lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/script_component.hpp b/addons/wardrobe/TODO/ws/script_component.hpp
new file mode 100644
index 00000000000..e823f5b7dfe
--- /dev/null
+++ b/addons/wardrobe/TODO/ws/script_component.hpp
@@ -0,0 +1,9 @@
+#define COMPONENT ws
+
+
+// This is being used for the Addon's Name and can be "My Addon Template Framework"
+#define COMPONENT_BEAUTIFIED Compatibility for Western Sahara
+
+
+#include "\z\ace\addons\main\script_mod.hpp"
+#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/XEH/CfgXEH.hpp b/addons/wardrobe/XEH/CfgXEH.hpp
new file mode 100644
index 00000000000..cde9653434e
--- /dev/null
+++ b/addons/wardrobe/XEH/CfgXEH.hpp
@@ -0,0 +1,6 @@
+// No need to change anything here
+class Extended_PreInit_EventHandlers {
+    class ADDON {
+        init = QUOTE(call COMPILE_FILE(XEH\XEH_preInit));
+    };
+};
\ No newline at end of file
diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH/XEH_preInit.sqf
new file mode 100644
index 00000000000..2c6434529da
--- /dev/null
+++ b/addons/wardrobe/XEH/XEH_preInit.sqf
@@ -0,0 +1,39 @@
+#include "../script_component.hpp"
+
+
+/*
+here, you put in your CBA Settings so they are available in the editor!
+
+https://github.com/CBATeam/CBA_A3/wiki/CBA-Settings-System#create-a-custom-setting-for-mission-or-mod
+
+MACROS Used:
+SETLSTRING(test) -> [LSTRING(set_test), LSTRING(set_test_desc)]
+SET(test) -> ADDON_set_test
+QSET(test) -> "ADDON_set_test"
+*/
+
+/*
+[
+	QSET(displayMusic),					//    _setting     - Unique setting name. Matches resulting variable name <STRING>
+	"CHECKBOX",								//    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+	["Display Music Title","This enables the message of the currently played music title by the CVO Music System"],
+											//    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
+	["CVO", "CVO Music"],					//    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
+	false,									//    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
+	0,										//    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
+	{},										//    _script      - Script to execute when setting is changed. (optional) <CODE>
+	false									//    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+] call CBA_fnc_addSetting;
+*/
+
+[
+	QSET(enable),							//    _setting     - Unique setting name. Matches resulting variable name <STRING>
+	"CHECKBOX",								//    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+	SETLSTRING(enable),
+											//    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
+	[LSTRING(set_cat_main)],				//    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
+	true,									//    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
+	1,										//    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
+	{},										//    _script      - Script to execute when setting is changed. (optional) <CODE>
+	false									//    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+] call CBA_fnc_addSetting;
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
new file mode 100644
index 00000000000..89b33ae3244
--- /dev/null
+++ b/addons/wardrobe/config.cpp
@@ -0,0 +1,40 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class ADDON {
+
+        // Meta information for editor
+		name = ADDON_NAME;
+		author = "$STR_wardrobe_author";
+        authors[] = {"OverlordZorn [CVO]"};
+		
+        url = "$STR_mod_URL";
+
+		VERSION_CONFIG;
+
+        // Addon Specific Information
+        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
+        requiredVersion = 2.02;
+
+        // Required addons, used for setting load order.
+        // When any of the addons is missing, pop-up warning will appear when launching the game.
+        requiredAddons[] = {QPVAR(main),"cba_main", "ace_interact_menu"};
+
+		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+		skipWhenMissingDependencies = 1;
+        
+        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+        units[] = {};
+
+        // List of weapons (CfgWeapons classes) contained in the addon.
+        weapons[] = {};
+
+	};
+};
+
+#include "CfgFunctions.hpp"
+#include "XEH\CfgXEH.hpp"
+
+#include "CfgVehicles.hpp"
+
+#include "Baseclass.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf b/addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf
new file mode 100644
index 00000000000..ce6b6d66071
--- /dev/null
+++ b/addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf
@@ -0,0 +1,24 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to return the data index based of the magazine ID
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_magazineID", "", [""] ]
+];
+
+if !(_magazineID in allVariables ace_intelItems_intelMap) exitWith { -1 };
+
+ace_intelItems_intelMap getVariable _magazineID
diff --git a/addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf b/addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf
new file mode 100644
index 00000000000..eb1df20c373
--- /dev/null
+++ b/addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf
@@ -0,0 +1,26 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to return the magazine ID's of certain magazines
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_unit",       objNull,    [objNull]       ],
+    ["_className",  "",         [""]            ]
+];
+
+if ( _className == "" || { _unit isEqualTo objNull } ) exitWith {};
+
+toFixed 0;
+(magazinesAmmoFull _unit) apply { [_x#0, _x#-2, _x#-1] } select { _x#0 == _className } apply { format ["%1/%2", _x#1,_x#2] }
\ No newline at end of file
diff --git a/addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf b/addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf
new file mode 100644
index 00000000000..142f5952031
--- /dev/null
+++ b/addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf
@@ -0,0 +1,25 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* This function sets the data-index for a magID
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_magID",  "", [""] ],
+    ["_index",  0,  [0]  ]
+];
+
+if (_index == -1) exitWith {};
+
+ace_intelItems_intelMap setVariable [_magID, _index, true];
\ No newline at end of file
diff --git a/addons/wardrobe/functions/action/fn_addActions.sqf b/addons/wardrobe/functions/action/fn_addActions.sqf
new file mode 100644
index 00000000000..c3fc715aa8c
--- /dev/null
+++ b/addons/wardrobe/functions/action/fn_addActions.sqf
@@ -0,0 +1,49 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* This function creates children for every modifiable Item.
+* Each Modifiable Item will have its own children in regard of the items it can be changed towards.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call cvo_fnc_sth
+*
+* Public: Yes
+*/
+
+params ["_unit"];
+
+
+private _modifiableItems = [_unit] call FUNC(getItems_modifiable_current);
+diag_log format ['[CVO](debug)(fn_addActions) _modifiableItems: %1', _modifiableItems];
+private _actions = [];
+
+{
+    private _params = [_x];
+    private _cfg = [_x] call CBA_fnc_getItemConfig;
+
+    diag_log format ['[CVO](debug)(fn_addActions) _cfg: %1', _cfg];
+
+    private _aceAction = [
+        _x                                      // * 0: Action name <STRING>
+        ,getText (_cfg >> "displayName")        //  * 1: Name of the action shown in the menu <STRING>
+        ,getText (_cfg >> "picture")            //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
+        ,{}                                     //  * 3: Statement <CODE>
+        ,{true}                                 //  * 4: Condition <CODE>
+        ,FUNC(addActions_children)              //  * 5: Insert children code <CODE> (Optional)
+        ,_params                                //  * 6: Action parameters <ANY> (Optional)
+    //    ,[0,0,0]                              //  * 7: Position (Position array, Position code or Selection Name) <ARRAY>, <CODE> or <STRING> (Optional)
+    //    ,20                                   //  * 8: Distance <NUMBER> (Optional)
+    //    ,[false,false,false,false,false]      //  * 9: Other parameters [showDisabled,enableInside,canCollapse,runOnHover,doNotCheckLOS] <ARRAY> (Optional)
+    //    ,{}                                   //  * 10: Modifier function <CODE> (Optional)
+    ] call ace_interact_menu_fnc_createAction;
+    _actions pushBack [_aceAction, [], _target];
+
+} forEach _modifiableItems;
+
+_actions
\ No newline at end of file
diff --git a/addons/wardrobe/functions/action/fn_addActions_children.sqf b/addons/wardrobe/functions/action/fn_addActions_children.sqf
new file mode 100644
index 00000000000..7bc4e5810b6
--- /dev/null
+++ b/addons/wardrobe/functions/action/fn_addActions_children.sqf
@@ -0,0 +1,51 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to create the sub-children for each modifiable item
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_target", "_player", "_actionParams"];
+
+_actionParams params ["_modifiableItem"];
+
+private _cfg_origin = [_modifiableItem] call CBA_fnc_getItemConfig;
+
+private _newItems = [_cfg_origin >> QPVAR(wardrobe) >> "modifiableTo"] call BIS_fnc_getCfgDataArray;
+
+private _actions = [];
+
+{
+    private _targetItem = _x;
+    private _cfg_target = [_targetItem] call CBA_fnc_getItemConfig;
+
+    private _params = [_cfg_origin, _cfg_target];
+
+    private _aceAction = [
+        _targetItem                             //  * 0: Action name <STRING>
+        ,[_cfg_target] call FUNC(getAction_Name)    //  * 1: Name of the action shown in the menu <STRING>
+        ,[_cfg_target] call FUNC(getAction_Icon)    //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
+        ,FUNC(replace)                          //  * 3: Statement <CODE>
+        ,{true}                                 //  * 4: Condition <CODE>
+        ,{}                                     //  * 5: Insert children code <CODE> (Optional)
+        ,_params                                //  * 6: Action parameters <ANY> (Optional)
+    //    ,[0,0,0]                              //  * 7: Position (Position array, Position code or Selection Name) <ARRAY>, <CODE> or <STRING> (Optional)
+    //    ,20                                   //  * 8: Distance <NUMBER> (Optional)
+    //    ,[false,false,false,false,false]      //  * 9: Other parameters [showDisabled,enableInside,canCollapse,runOnHover,doNotCheckLOS] <ARRAY> (Optional)
+    //    ,{}                                   //  * 10: Modifier function <CODE> (Optional)
+    ] call ace_interact_menu_fnc_createAction;
+    _actions pushBack [_aceAction, [], _target];
+
+} forEach _newItems;
+
+_actions
\ No newline at end of file
diff --git a/addons/wardrobe/functions/action/fn_addActions_condition.sqf b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
new file mode 100644
index 00000000000..18b47ef6a46
--- /dev/null
+++ b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
@@ -0,0 +1,20 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to check if the player has an item that can be modified.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_player"];
+
+missionNamespace getVariable [QSET(enable), false] && { count ([_player] call FUNC(getItems_modifiable_current)) > 0 }
\ No newline at end of file
diff --git a/addons/wardrobe/functions/action/fn_getAction_Icon.sqf b/addons/wardrobe/functions/action/fn_getAction_Icon.sqf
new file mode 100644
index 00000000000..a3119d6957f
--- /dev/null
+++ b/addons/wardrobe/functions/action/fn_getAction_Icon.sqf
@@ -0,0 +1,22 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* This Function checks if the Target Item has an Alternative Picture for the Action, if not, it returns the picture property
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [ ["_cfg", configNull, [configNull] ] ];
+
+private _altDispIcon = getText (_cfg >> QADDON >> "alternativePicture");
+if (_altDispIcon isEqualTo "") then { getText (_cfg >> "picture") } else { _altDispIcon }
+
diff --git a/addons/wardrobe/functions/action/fn_getAction_Name.sqf b/addons/wardrobe/functions/action/fn_getAction_Name.sqf
new file mode 100644
index 00000000000..afde79c357d
--- /dev/null
+++ b/addons/wardrobe/functions/action/fn_getAction_Name.sqf
@@ -0,0 +1,22 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* This Function checks if the Target Item has an Alternative String for the Action, if not, it returns the displayName property
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [ ["_cfg", configNull, [configNull] ] ];
+
+private _altDispName = getText (_cfg >> QADDON >> "alternativeDisplayName");
+if (_altDispName isEqualTo "") then { getText (_cfg >> "displayName") } else { _altDispName };
+
diff --git a/addons/wardrobe/functions/cache/fn_cache_clear.sqf b/addons/wardrobe/functions/cache/fn_cache_clear.sqf
new file mode 100644
index 00000000000..f60461add6a
--- /dev/null
+++ b/addons/wardrobe/functions/cache/fn_cache_clear.sqf
@@ -0,0 +1,26 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to clear an entry from the  cache-database.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+// Retrieve hashmap
+
+params [ ["_key", "", [""]] ];
+
+private _map = missionNamespace getVariable [QGVAR(cache), "404"];
+_map deleteAt _key;
+
+if (count _map == 0) then { missionNamespace setVariable [QGVAR(cache),nil] };
\ No newline at end of file
diff --git a/addons/wardrobe/functions/cache/fn_cache_db.sqf b/addons/wardrobe/functions/cache/fn_cache_db.sqf
new file mode 100644
index 00000000000..6039c3f3595
--- /dev/null
+++ b/addons/wardrobe/functions/cache/fn_cache_db.sqf
@@ -0,0 +1,27 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* [Description]
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+// Retrieve hashmap
+
+private _map = missionNamespace getVariable [QGVAR(cache), "404"];
+
+if (_map isEqualTo "404") then {
+    _map = createHashMap;
+    missionNamespace setVariable [QGVAR(cache), _map];
+};
+
+_map
\ No newline at end of file
diff --git a/addons/wardrobe/functions/cache/fn_cache_get.sqf b/addons/wardrobe/functions/cache/fn_cache_get.sqf
new file mode 100644
index 00000000000..bfa2648f2ff
--- /dev/null
+++ b/addons/wardrobe/functions/cache/fn_cache_get.sqf
@@ -0,0 +1,24 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to retrieve a value from the database. returns "404" if not stored or, when provided will execute the alternative code and store said result.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [ [ "_key", "", [""] ], [ "_else", "404", [{}] ] ];
+
+if (_else isEqualTo "404") then {
+    [] call FUNC(cache_db) getOrDefault [_key, "404"];
+} else {
+    [] call FUNC(cache_db) getOrDefaultCall [_key, _else, true];
+};
diff --git a/addons/wardrobe/functions/cache/fn_cache_set.sqf b/addons/wardrobe/functions/cache/fn_cache_set.sqf
new file mode 100644
index 00000000000..7c0f4cf9453
--- /dev/null
+++ b/addons/wardrobe/functions/cache/fn_cache_set.sqf
@@ -0,0 +1,26 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to store a value into under a key into the addons cache
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [ ["_key", "", [""] ], ["_value", "404"] ];
+
+private _db = [] call FUNC(cache_db);
+
+if (_value isEqualTo "404") exitWith { false };
+
+_db set [_key, _value];
+
+true
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_checkItem.sqf b/addons/wardrobe/functions/fn_checkItem.sqf
new file mode 100644
index 00000000000..3ae56ddac07
--- /dev/null
+++ b/addons/wardrobe/functions/fn_checkItem.sqf
@@ -0,0 +1,25 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to check if the this item is modifiable - returns boolean
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_cfg",        configNull,         [configNull]       ]
+];
+
+
+if (isNull _cfg) exitWith {false};
+// Checks if the config has the property without it being inherited(!)
+count configProperties [_cfg >> QADDON, Q(configName _x == QQ(modifiableTo)), false] > 0 
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_clearOnClose.sqf b/addons/wardrobe/functions/fn_clearOnClose.sqf
new file mode 100644
index 00000000000..6b4669d93f6
--- /dev/null
+++ b/addons/wardrobe/functions/fn_clearOnClose.sqf
@@ -0,0 +1,39 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to request the clearing of the cache on closing of the menu
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+// Cleanup Cache once the interaction menu is closed
+
+params [ ["_key", "", [""]] ];
+
+private _queue = missionNamespace getVariable [QGVAR(menu_clear_queue), "404"];
+
+if (_queue isEqualTo "404") then {
+    _queue = [];
+    [
+        "ace_interactMenuClosed",
+        {
+            if (_this isNotEqualTo [1]) exitWith {};
+
+            { [_x] call FUNC(cache_clear) } forEach ( missionNamespace getVariable [QGVAR(menu_clear_queue), [] ] );
+
+            missionNamespace setVariable [QGVAR(menu_clear_queue), nil ];
+            [_thisType, _thisId] call CBA_fnc_removeEventHandler;
+        }
+    ] call CBA_fnc_addEventHandlerArgs;
+    missionNamespace setVariable [QGVAR(menu_clear_queue), _queue];
+};
+
+_queue pushBackUnique _key;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_getCfgDataRandom.sqf b/addons/wardrobe/functions/fn_getCfgDataRandom.sqf
new file mode 100644
index 00000000000..cc28339a141
--- /dev/null
+++ b/addons/wardrobe/functions/fn_getCfgDataRandom.sqf
@@ -0,0 +1,25 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* This function extracts data from a config property. If it is an Array, it will select a random entry from the array, otherwise it will simply return the provided data.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call cigs_wardrobe_fnc_getCfgDataRandom
+*
+* Public: No
+*/
+
+params [
+    [ "_cfg", configNull, [configNull] ]
+];
+
+if (_cfg isEqualTo configNull) exitWith {nil};
+private _data = [_cfg] call BIS_fnc_getCfgData;
+if (_data isEqualType []) then { _data = selectRandom _data };
+_data
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_postInit.sqf b/addons/wardrobe/functions/fn_postInit.sqf
new file mode 100644
index 00000000000..b689c089e34
--- /dev/null
+++ b/addons/wardrobe/functions/fn_postInit.sqf
@@ -0,0 +1,18 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* [Description]
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_say3d.sqf b/addons/wardrobe/functions/fn_say3d.sqf
new file mode 100644
index 00000000000..7b1fdf9b21d
--- /dev/null
+++ b/addons/wardrobe/functions/fn_say3d.sqf
@@ -0,0 +1,35 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to execute say3d globally - triggered as 3cba event.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_source",     objNull,    [objNull]   ],
+    ["_sound",      [""],        ["", []]   ]
+];
+
+if (_sound isEqualType [] && {_sound#0 == ""} || {_sound isEqualType "" && {_sound == ""}}) exitWith {};
+
+_sound params [
+"_className",
+["_distance",        100,               [0]         ],
+["_pitch",           0.95 + random 0.1, [0]         ],
+["_isSpeech",        false,             [false, 0]  ],
+["_offSet",          0,                 [0]         ],
+["_simSpeedOfSound", false,             [false]     ]
+];
+
+
+_source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
new file mode 100644
index 00000000000..322a23a609a
--- /dev/null
+++ b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
@@ -0,0 +1,30 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Retrieves a list of items on the user - will be cached for the duration of the interaction.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params [
+    ["_player",   objNull,    [objNull]]
+];
+
+
+// Cleanup Cache once the interaction menu is closed
+["items_all"] call FUNC(clearOnClose);
+[
+    "items_all",
+    {
+        flatten getUnitLoadout _player select { _x isEqualType "" && { _x != ""}};
+    }
+] call FUNC(cache_get);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
new file mode 100644
index 00000000000..b8427d635ea
--- /dev/null
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
@@ -0,0 +1,35 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to retrieve modifiable items. Cached Array for the duration of the interaction menu.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+params [
+    ["_player",   objNull,    [objNull]]
+];
+
+// Cleanup Cache once the interaction menu is closed
+["items_modifiable_all"] call FUNC(clearOnClose);
+[
+    "items_modifiable_all",
+    {
+        private _array = [];
+        {
+            private _cfg = [_x] call CBA_fnc_getItemConfig;
+            if ( [_cfg] call FUNC(checkItem) && { count ([_cfg >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray) > 0 } )  then { _array pushBack _x; };
+        } forEach ( [_player] call FUNC(getItems_all) );
+        _array
+    }
+] call FUNC(cache_get);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
new file mode 100644
index 00000000000..b3929b2be0a
--- /dev/null
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
@@ -0,0 +1,36 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to retrieve currently worn, modifiable items. Cached Array for the duration of the interaction menu.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+params [
+    ["_player",   objNull,    [objNull]]
+];
+
+// Cleanup Cache once the interaction menu is closed
+["items_modifiable_current"] call FUNC(clearOnClose);
+[
+    "items_modifiable_current",
+    {
+        private _array = [];
+        {
+            private _cfg = [_x] call CBA_fnc_getItemConfig;
+            if ( [_cfg] call FUNC(checkItem) && { count ([_cfg >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray) > 0 } )  then { _array pushBack _x; };
+
+        } forEach ( [headgear _player, goggles _player, uniform _player, vest _player, backpack _player] - [""] );
+        _array
+    }
+] call FUNC(cache_get);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
new file mode 100644
index 00000000000..3a9ab735057
--- /dev/null
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -0,0 +1,81 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to removes the modifiableItem and replaces it with the target item
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+#define DISTANCE 50
+
+params ["_target", "_player", "_actionParams"];
+_actionParams params ["_cfg_origin", "_cfg_tgt"];
+
+
+[ _player, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
+
+private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
+
+private _additionalParams = "";
+
+private _replaceCode = switch ( _typeNumber ) do {
+    case TYPE_GOGGLE:   {                                 FUNC(replace_facewear) };
+    case TYPE_HEADGEAR: {                                 FUNC(replace_headgear) };
+    case TYPE_UNIFORM:  { _additionalParams = "UNIFORM";  FUNC(replace_uniform)  };
+    case TYPE_VEST:     { _additionalParams = "VEST";     FUNC(replace_uniform)  };
+    case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_uniform)  };
+};
+
+private _duration     = getNumber (_cfg_tgt>> Q(ADDON) >> "duration") max 1;
+// Plays Random Sound At the Beginning
+private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
+private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
+// TODO - refactor sound playing
+if (_sound != "") then { [QGVAR(EH_say3d), [_player, _sound]] call CBA_fnc_globalEvent; };
+
+
+private _notify_img = getText (_cfg_tgt >> "picture");
+if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
+
+private _params_notify = [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ];
+private _params_replace = [_player, _cfg_origin, _cfg_tgt, _additionalParams ];
+
+// Dart made a PR to CBA to impove depricated Functions. I plan to use these once cba gets updated.
+// [ [ _player ], [ _sound, 50 ] ] call CBA_fnc_globalSay;
+private _params_soundEnd = [ QGVAR(EH_say3d), [ _player, [ _cfg_tgt >> Q(ADDON) >> "soundEnd" ] call FUNC(getCfgDataRandom), DISTANCE, 0.95 + random 0.1 ] ];
+
+if ( _duration > 1 ) then {
+
+    [
+        _duration               // * 0: Total Time (in game "time" seconds) <NUMBER>
+        ,[_replaceCode, _params_replace, _params_soundEnd, _params_notify] // * 1: Arguments, passed to condition, fail and finish <ARRAY>
+        // * 2: On Finish: Code called or STRING raised as event. <CODE, STRING>
+        ,{
+            params ["_args", "_elapsedTime", "_totalTime", "_errorCode"];
+            _args params ["_replaceCode", "_params_replace", "_params_soundEnd", "_params_notify"];
+
+            _params_replace call _replaceCode;
+            _params_notify call CBA_fnc_notify;
+            _params_soundEnd call CBA_fnc_globalEvent;
+            
+            
+        }
+        // * 3: On Failure: Code called or STRING raised as event. <CODE, STRING>
+        ,{}   
+        ,""                     // * 4: Localized Title <STRING> (default: "")
+    ] call ace_common_fnc_progressBar;
+
+} else {
+    [ _replaceCode,        _params_replace,  1.0 ] call CBA_fnc_waitAndExecute;
+    [ CBA_fnc_globalEvent, _params_soundEnd, 1.0 ] call CBA_fnc_waitAndExecute;
+    [ CBA_fnc_notify,      _params_notify,   1.2 ] call CBA_fnc_waitAndExecute;
+};
diff --git a/addons/wardrobe/functions/replace/fn_replace_facewear.sqf b/addons/wardrobe/functions/replace/fn_replace_facewear.sqf
new file mode 100644
index 00000000000..e245f8a8569
--- /dev/null
+++ b/addons/wardrobe/functions/replace/fn_replace_facewear.sqf
@@ -0,0 +1,23 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to replace a persons goggles/facewear.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+ZRN_LOG_MSG_1(init,_this);
+
+params ["_player", "_cfg_origin", "_cfg_tgt"];
+
+removeGoggles _player;
+_player addGoggles configName _cfg_tgt;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace_headgear.sqf b/addons/wardrobe/functions/replace/fn_replace_headgear.sqf
new file mode 100644
index 00000000000..b33abf195c0
--- /dev/null
+++ b/addons/wardrobe/functions/replace/fn_replace_headgear.sqf
@@ -0,0 +1,23 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to replace a persons Headgear/Helmet slot.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+ZRN_LOG_MSG_1(init,_this);
+
+params ["_player", "_cfg_origin", "_cfg_tgt"];
+
+removeHeadgear _player;
+_player addHeadgear configName _cfg_tgt;
diff --git a/addons/wardrobe/functions/replace/fn_replace_uniform.sqf b/addons/wardrobe/functions/replace/fn_replace_uniform.sqf
new file mode 100644
index 00000000000..b7e35a5f569
--- /dev/null
+++ b/addons/wardrobe/functions/replace/fn_replace_uniform.sqf
@@ -0,0 +1,54 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to replace a persons Uniform while maintaining the content of the uniform.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+ZRN_LOG_MSG_1(init,_this);
+
+params ["_player", "_cfg_origin", "_cfg_tgt", "_case"];
+
+
+toFixed 0;
+private _magazineDetails = (magazinesAmmoFull _player) apply { [_x#0, _x#-2, _x#-1] };
+private _loadout = [_player] call CBA_fnc_getLoadout;
+
+
+//// Handle Special Cases - Pre Replace
+// ACE Intel Items
+private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document"} > -1;
+private _hasNotepad =  _magazineDetails findIf { _x#0 == "acex_intelitems_notepad" } > -1;
+private _hasPhoto =    _magazineDetails findIf { _x#0 == "acex_intelitems_photo"   } > -1;
+if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad" ]  call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo" ]    call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+
+
+//// Replace Wearable
+// Change Wearable
+switch (_case) do {
+    case "UNIFORM":  { _loadout # 0 # 3 set [0, configName _cfg_tgt]; };
+    case "VEST":     { _loadout # 0 # 4 set [0, configName _cfg_tgt]; };
+    case "BACKPACK": { _loadout # 0 # 5 set [0, configName _cfg_tgt]; };
+    default { diag_log format ['[CVO](debug)(fn_replace_uniform) Failed! - _case: %1', _case]; };
+};
+
+// Apply new Loadout
+[_player, _loadout] call CBA_fnc_setLoadout;
+
+//// Handle Special Cases - Post Replace
+// ACE Intel Items
+if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) ); };
+if (_hasNotepad  isEqualType []) then { { [_x, _hasNotepad  # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"  ] call FUNC(getMagIDs) ); };
+if (_hasPhoto    isEqualType []) then { { [_x, _hasPhoto    # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"    ] call FUNC(getMagIDs) ); };
\ No newline at end of file
diff --git a/addons/wardrobe/script_component.hpp b/addons/wardrobe/script_component.hpp
new file mode 100644
index 00000000000..22f97fade07
--- /dev/null
+++ b/addons/wardrobe/script_component.hpp
@@ -0,0 +1,18 @@
+#define COMPONENT wardrobe
+#define COMPONENT_BEAUTIFIED Wardrobe
+#include "\z\ace\addons\main\script_mod.hpp"
+
+// #define DEBUG_MODE_FULL
+// #define DISABLE_COMPILE_CACHE
+// #define ENABLE_PERFORMANCE_COUNTERS
+
+#ifdef DEBUG_ENABLED_VOLUME
+    #define DEBUG_MODE_FULL
+#endif
+
+#ifdef DEBUG_SETTINGS_VOLUME
+    #define DEBUG_SETTINGS DEBUG_SETTINGS_VOLUME
+#endif
+
+#include "\z\ace\addons\main\script_macros.hpp"
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/script_macros_zrn.hpp b/addons/wardrobe/script_macros_zrn.hpp
new file mode 100644
index 00000000000..90138ec1f7b
--- /dev/null
+++ b/addons/wardrobe/script_macros_zrn.hpp
@@ -0,0 +1,139 @@
+#ifdef __A3_DEBUG__
+    #define _ZRN_DEBUG_
+#endif
+
+// CBA Settings
+#define SET(var1) TRIPLES(ADDON,set,var1)
+#define QSET(var1) Q(SET(var1))
+#define QQSET(var1) QQ(SET(var1))
+#define ESET(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),SET,var2)
+#define QESET(var1,var2) Q(ESET(var1,var2))
+#define QQESET(var1,var2) QQ(ESET(var1,var2))
+
+// Stringtable.xml - use LSTRING() instead
+// #define XML(var1) TRIPLES(STR,ADDON,var1)
+// #define QXML(var1) Q(XML(var1))
+#define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
+
+// hashMapObjects
+#define OGET(var1) (_self get Q(var1))
+#define OSET(var1,var2) (_self set [Q(var1), var2])
+
+// Quotes
+#ifndef QUOTE
+    #define QUOTE(var1) #var1
+#endif
+#define QQUOTE(var1) QUOTE(QUOTE(var1))
+#define Q(var1) QUOTE(var1)
+#define QQ(var1) QQUOTE(var1)
+
+#define QADDON Q(ADDON)
+#define QPREFIX Q(PREFIX)
+#define QCOMPONENT Q(COMPONENT)
+
+// Prefix Function
+#define PFUNC(var1) TRIPLES(PREFIX,fnc,var1)
+#define QPFUNC(var1) QUOTE(PFUNC(var1))
+#define QQPFUNC(var1) QUOTE(QPFUNC(var1))
+
+
+// Prefix Variables
+#define PVAR(var1) DOUBLES(PREFIX,var1)
+#define QPVAR(var1) QUOTE(PVAR(var1))
+#define QQPVAR(var1) QUOTE(QPVAR(var1))
+
+// Component Variables
+#define CVAR(var1) DOUBLES(COMPONENT,var1)
+#define QCVAR(var1) QUOTE(CVAR(var1))
+#define QQCVAR(var1) QUOTE(QCVAR(var1))
+
+// missionNamespace set/get Variables
+
+#define SETMGVAR(name,value) (missionNamespace setVariable [QGVAR(name),value])
+#define SETMGVAR_PUBLIC(name,value,public) (missionNamespace setVariable [QGVAR(name),value,public])
+
+#define GETMGVAR(name,default) (missionNamespace getVariable [QGVAR(name),default])
+
+// CfgPatches Stuff
+#ifndef PREFIX_BEAUTIFIED
+    #define PREFIX_BEAUTIFIED PREFIX
+#endif
+#ifndef COMPONENT_BEAUTIFIED
+    #define COMPONENT_BEAUTIFIED COMPONENT
+#endif
+
+#define ADDON_NAME Q(PREFIX_BEAUTIFIED - COMPONENT_BEAUTIFIED)
+
+// Paths
+#define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
+#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
+#define PATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
+#define PATH_TO_ADDON_2(var1,var2) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1\var2)
+#define PATH_TO_ADDON_3(var1,var2,var3) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1\var2\var3)
+
+#define QPATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
+#define QQPATH_TO_ADDON(var1) Q(QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1))
+
+// Debug
+// Doesnt seem to work currently 
+#ifdef _ZRN_DEBUG_
+    #define _DEBUG_POSTINIT_ postInit = 1;
+    #define _DEBUG_PREINIT_ preInit = 1;
+#else
+    #define _DEBUG_POSTINIT_ postInit = 0;
+    #define _DEBUG_PREINIT_ preInit = 0;
+#endif
+
+
+#define DEBUG_HEADER format [QUOTE([PREFIX][COMPONENT](%1)),_fnc_scriptName]
+
+#define ZRN_LOG_MSG(MSG) diag_log (DEBUG_HEADER + " " + QUOTE(MSG))
+
+#ifdef _ZRN_DEBUG_
+    #define ZRN_SCRIPTNAME(var1) private _fnc_scriptName = Q(var1)
+
+    #define ZRN_LOG_MSG_1(MSG,A) diag_log (DEBUG_HEADER + (format [' %1 - A: %2',QUOTE(MSG),RETNIL(A)]))
+    #define ZRN_LOG_MSG_2(MSG,A,B) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3',QUOTE(MSG),RETNIL(A),RETNIL(B)]))
+    #define ZRN_LOG_MSG_3(MSG,A,B,C) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C)]))
+    #define ZRN_LOG_MSG_4(MSG,A,B,C,D) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D)]))
+    #define ZRN_LOG_MSG_5(MSG,A,B,C,D,E) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E)]))
+    #define ZRN_LOG_MSG_6(MSG,A,B,C,D,E,F) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F)]))
+    #define ZRN_LOG_MSG_7(MSG,A,B,C,D,E,F,G) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7 - H: %8',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G)]))
+    #define ZRN_LOG_MSG_8(MSG,A,B,C,D,E,F,G,H) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7 - H: %8 - I: %9',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G),RETNIL(H)]))
+
+    #define ZRN_LOG_1(A) diag_log (DEBUG_HEADER + (format [' A: %1',RETNIL(A)]))
+    #define ZRN_LOG_2(A,B) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2',RETNIL(A),RETNIL(B)]))
+    #define ZRN_LOG_3(A,B,C) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3',RETNIL(A),RETNIL(B),RETNIL(C)]))
+    #define ZRN_LOG_4(A,B,C,D) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D)]))
+    #define ZRN_LOG_5(A,B,C,D,E) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E)]))
+    #define ZRN_LOG_6(A,B,C,D,E,F) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F)]))
+    #define ZRN_LOG_7(A,B,C,D,E,F,G) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G)]))
+    #define ZRN_LOG_8(A,B,C,D,E,F,G,H) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7 - I: %8',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G),RETNIL(H)]))
+
+    #define ZRN_LOG_HMO(var1) { if ('#' in _x || 'Meth' in _x) then {continue}; diag_log (DEBUG_HEADER + (format [' %3 - %1 - %2', _x, _y, Q(MSG)])) } forEach var1;
+    #define ZRN_LOG_MSG_HMO(MSG,var1) { if ('#' in _x || 'Meth' in _x) then {continue}; diag_log (DEBUG_HEADER + (format [' %3 - %1 - %2', _x, _y, Q(MSG)])) } forEach var1;
+
+#else
+    #define ZRN_SCRIPTNAME(var1)
+
+    #define ZRN_LOG_MSG_1(MSG,A)
+    #define ZRN_LOG_MSG_2(MSG,A,B)
+    #define ZRN_LOG_MSG_3(MSG,A,B,C)
+    #define ZRN_LOG_MSG_4(MSG,A,B,C,D)
+    #define ZRN_LOG_MSG_5(MSG,A,B,C,D,E)
+    #define ZRN_LOG_MSG_6(MSG,A,B,C,D,E,F)
+    #define ZRN_LOG_MSG_7(MSG,A,B,C,D,E,F,G)
+    #define ZRN_LOG_MSG_8(MSG,A,B,C,D,E,F,G,H)
+
+    #define ZRN_LOG_1(A)
+    #define ZRN_LOG_2(A,B)
+    #define ZRN_LOG_3(A,B,C)
+    #define ZRN_LOG_4(A,B,C,D)
+    #define ZRN_LOG_5(A,B,C,D,E)
+    #define ZRN_LOG_6(A,B,C,D,E,F)
+    #define ZRN_LOG_7(A,B,C,D,E,F,G)
+    #define ZRN_LOG_8(A,B,C,D,E,F,G,H)
+
+    #define ZRN_LOG_HMO(var1)
+    #define ZRN_LOG_MSG_HMO(MSG,var1)
+#endif
\ No newline at end of file
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
new file mode 100644
index 00000000000..06706f928a7
--- /dev/null
+++ b/addons/wardrobe/stringtable.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project name="ace">
+    <Package name="wardrobe">
+        <Container name="meta">
+            <Key ID="STR_wardrobe_author">
+                <Original>OverlordZorn[CVO]</Original>
+                <English>OverlordZorn[CVO]</English>
+            </Key>
+        </Container>
+        <Container name="CBA_Settings_Categories">
+            <Key ID="STR_ace_wardrobe_set_cat_main">
+                <Original>ACE Wardrobe</Original>
+                <English>ACE Wardrobe</English>
+            </Key>
+        </Container>
+        <Container name="CBA_Settings">
+            <Key ID="STR_ace_wardrobe_set_enable">
+                <Original>Enable</Original>
+            </Key>
+            <Key ID="STR_ace_wardrobe_set_enable_desc">
+                <English>When Enabled, will let the player use the Wardrobe Actions.</English>
+            </Key>
+        </Container>
+        <Container name="Action">
+            <Key ID="STR_ace_wardrobe_actionTitle">
+                <Original>Wardrobe</Original>
+                <English>Wardrobe</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_glovesOff">
+                <Original>Take Gloves Off</Original>
+                <English>Take Gloves Off</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_glovesOn">
+                <Original>Wear Gloves</Original>
+                <English>Wear Gloves</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_jacketClose">
+                <Original>Close Jacket</Original>
+                <English>Close Jacket</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_jacketOpen">
+                <Original>Open Jacket</Original>
+                <English>Open Jacket</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_sleevesDown">
+                <Original>Roll sleeves Down</Original>
+                <English>Roll sleeves Down</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_sleevesUp">
+                <Original>Roll sleeves Up</Original>
+                <English>Roll sleeves Up</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_visorDown">
+                <Original>Visor Down</Original>
+                <English>Visor Down</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_visorUp">
+                <Original>Visor Up</Original>
+                <English>Visor Up</English>
+            </Key>
+        </Container>
+    </Package>
+</Project>

From 9c3554522cbeafc02529867fea3ff681cb5451b7 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 14:05:52 +0100
Subject: [PATCH 002/139] compat integration

---
 .../compat_gm_wardrobe}/CfgWardrobe.hpp       |  1 +
 .../compat_gm_wardrobe}/Helmets.hpp           |  0
 .../compat_gm_wardrobe}/Uniforms.hpp          |  0
 .../compat_gm/compat_gm_wardrobe/config.cpp   | 25 ++++++++++++
 .../compat_gm_wardrobe/script_component.hpp   |  3 ++
 .../compat_rf_wardrobe}/CfgWardrobe.hpp       |  0
 .../compat_rf_wardrobe}/Helmets.hpp           |  0
 .../compat_rf_wardrobe}/Uniforms.hpp          |  0
 .../compat_rf/compat_rf_wardrobe/config.cpp   | 25 ++++++++++++
 .../compat_rf_wardrobe/script_component.hpp   |  3 ++
 .../compat_sog_wardrobe}/Booniehats.hpp       |  0
 .../compat_sog_wardrobe}/CfgWardrobe.hpp      |  0
 .../compat_sog_wardrobe}/Pilothelmets.hpp     |  0
 .../compat_sog_wardrobe}/Uniforms_B.hpp       |  0
 .../compat_sog_wardrobe}/Uniforms_O.hpp       |  0
 .../compat_sog/compat_sog_wardrobe/config.cpp | 25 ++++++++++++
 .../compat_sog_wardrobe}/notes.md             |  0
 .../compat_sog_wardrobe/script_component.hpp  |  3 ++
 .../Uniforms.hpp                              |  2 +-
 .../config.cpp                                | 25 ++++++++++++
 .../script_component.hpp                      |  3 ++
 .../compat_ws_wardrobe}/CfgWardrobe.hpp       |  0
 .../compat_ws_wardrobe}/Turbans.hpp           |  0
 .../compat_ws_wardrobe}/config.cpp            |  0
 .../compat_ws_wardrobe}/notes.md              |  0
 .../compat_ws_wardrobe/script_component.hpp   |  3 ++
 addons/wardrobe/Baseclass.hpp                 |  8 ++--
 addons/wardrobe/TODO/gm/$PBOPREFIX$           |  1 -
 addons/wardrobe/TODO/gm/config.cpp            | 35 -----------------
 addons/wardrobe/TODO/gm/script_component.hpp  |  9 -----
 addons/wardrobe/TODO/rf/$PBOPREFIX$           |  1 -
 addons/wardrobe/TODO/rf/config.cpp            | 35 -----------------
 addons/wardrobe/TODO/rf/script_component.hpp  |  9 -----
 addons/wardrobe/TODO/vanilla/$PBOPREFIX$      |  1 -
 addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp  | 10 -----
 addons/wardrobe/TODO/vanilla/config.cpp       | 35 -----------------
 .../TODO/vanilla/script_component.hpp         |  9 -----
 addons/wardrobe/TODO/vn/$PBOPREFIX$           |  1 -
 addons/wardrobe/TODO/vn/config.cpp            | 35 -----------------
 addons/wardrobe/TODO/vn/notes.md              |  4 --
 addons/wardrobe/TODO/vn/script_component.hpp  |  8 ----
 .../TODO/vn/vn_uniform_fix/config.cpp         | 38 -------------------
 .../vn/vn_uniform_fix/script_component.hpp    |  9 -----
 addons/wardrobe/TODO/ws/$PBOPREFIX$           |  1 -
 addons/wardrobe/TODO/ws/notes.md              |  4 --
 addons/wardrobe/TODO/ws/script_component.hpp  |  9 -----
 .../vanilla => compat_vanilla}/Uniforms.hpp   |  0
 addons/wardrobe/config.cpp                    |  9 ++++-
 addons/wardrobe/script_macros_zrn.hpp         | 31 +++------------
 49 files changed, 133 insertions(+), 287 deletions(-)
 rename addons/{wardrobe/TODO/gm => compat_gm/compat_gm_wardrobe}/CfgWardrobe.hpp (93%)
 rename addons/{wardrobe/TODO/gm => compat_gm/compat_gm_wardrobe}/Helmets.hpp (100%)
 rename addons/{wardrobe/TODO/gm => compat_gm/compat_gm_wardrobe}/Uniforms.hpp (100%)
 create mode 100644 addons/compat_gm/compat_gm_wardrobe/config.cpp
 create mode 100644 addons/compat_gm/compat_gm_wardrobe/script_component.hpp
 rename addons/{wardrobe/TODO/rf => compat_rf/compat_rf_wardrobe}/CfgWardrobe.hpp (100%)
 rename addons/{wardrobe/TODO/rf => compat_rf/compat_rf_wardrobe}/Helmets.hpp (100%)
 rename addons/{wardrobe/TODO/rf => compat_rf/compat_rf_wardrobe}/Uniforms.hpp (100%)
 create mode 100644 addons/compat_rf/compat_rf_wardrobe/config.cpp
 create mode 100644 addons/compat_rf/compat_rf_wardrobe/script_component.hpp
 rename addons/{wardrobe/TODO/vn => compat_sog/compat_sog_wardrobe}/Booniehats.hpp (100%)
 rename addons/{wardrobe/TODO/vn => compat_sog/compat_sog_wardrobe}/CfgWardrobe.hpp (100%)
 rename addons/{wardrobe/TODO/vn => compat_sog/compat_sog_wardrobe}/Pilothelmets.hpp (100%)
 rename addons/{wardrobe/TODO/vn => compat_sog/compat_sog_wardrobe}/Uniforms_B.hpp (100%)
 rename addons/{wardrobe/TODO/vn => compat_sog/compat_sog_wardrobe}/Uniforms_O.hpp (100%)
 create mode 100644 addons/compat_sog/compat_sog_wardrobe/config.cpp
 rename addons/{wardrobe/TODO/gm => compat_sog/compat_sog_wardrobe}/notes.md (100%)
 create mode 100644 addons/compat_sog/compat_sog_wardrobe/script_component.hpp
 rename addons/{wardrobe/TODO/vn/vn_uniform_fix => compat_sog/compat_sog_wardrobe_uniform_fix}/Uniforms.hpp (93%)
 create mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
 create mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
 rename addons/{wardrobe/TODO/ws => compat_ws/compat_ws_wardrobe}/CfgWardrobe.hpp (100%)
 rename addons/{wardrobe/TODO/ws => compat_ws/compat_ws_wardrobe}/Turbans.hpp (100%)
 rename addons/{wardrobe/TODO/ws => compat_ws/compat_ws_wardrobe}/config.cpp (100%)
 rename addons/{wardrobe/TODO/rf => compat_ws/compat_ws_wardrobe}/notes.md (100%)
 create mode 100644 addons/compat_ws/compat_ws_wardrobe/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/gm/$PBOPREFIX$
 delete mode 100644 addons/wardrobe/TODO/gm/config.cpp
 delete mode 100644 addons/wardrobe/TODO/gm/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/rf/$PBOPREFIX$
 delete mode 100644 addons/wardrobe/TODO/rf/config.cpp
 delete mode 100644 addons/wardrobe/TODO/rf/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/vanilla/$PBOPREFIX$
 delete mode 100644 addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
 delete mode 100644 addons/wardrobe/TODO/vanilla/config.cpp
 delete mode 100644 addons/wardrobe/TODO/vanilla/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/vn/$PBOPREFIX$
 delete mode 100644 addons/wardrobe/TODO/vn/config.cpp
 delete mode 100644 addons/wardrobe/TODO/vn/notes.md
 delete mode 100644 addons/wardrobe/TODO/vn/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
 delete mode 100644 addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
 delete mode 100644 addons/wardrobe/TODO/ws/$PBOPREFIX$
 delete mode 100644 addons/wardrobe/TODO/ws/notes.md
 delete mode 100644 addons/wardrobe/TODO/ws/script_component.hpp
 rename addons/wardrobe/{TODO/vanilla => compat_vanilla}/Uniforms.hpp (100%)

diff --git a/addons/wardrobe/TODO/gm/CfgWardrobe.hpp b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
similarity index 93%
rename from addons/wardrobe/TODO/gm/CfgWardrobe.hpp
rename to addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
index 678f456585d..8a4bcf09b43 100644
--- a/addons/wardrobe/TODO/gm/CfgWardrobe.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
@@ -1,3 +1,4 @@
+// Import Base Classes
 class EGVAR(wardrobe,base);
 
 class EGVAR(wardrobe,base_H_visor_up);
diff --git a/addons/wardrobe/TODO/gm/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
similarity index 100%
rename from addons/wardrobe/TODO/gm/Helmets.hpp
rename to addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
diff --git a/addons/wardrobe/TODO/gm/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
similarity index 100%
rename from addons/wardrobe/TODO/gm/Uniforms.hpp
rename to addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
diff --git a/addons/compat_gm/compat_gm_wardrobe/config.cpp b/addons/compat_gm/compat_gm_wardrobe/config.cpp
new file mode 100644
index 00000000000..3823b748028
--- /dev/null
+++ b/addons/compat_gm/compat_gm_wardrobe/config.cpp
@@ -0,0 +1,25 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class SUBADDON {
+		name = COMPONENT_NAME;
+		author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+		
+		VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
+        requiredAddons[] = {
+            QPVAR(wardrobe),
+            "gm_core"
+        };
+		skipWhenMissingDependencies = 1;
+
+        requiredVersion = 2.02;
+       
+        units[] = {};
+        weapons[] = {};
+	};
+};
+
+#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
new file mode 100644
index 00000000000..31996452391
--- /dev/null
+++ b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for GlobMo
+#include "..\script_component.hpp"
diff --git a/addons/wardrobe/TODO/rf/CfgWardrobe.hpp b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
similarity index 100%
rename from addons/wardrobe/TODO/rf/CfgWardrobe.hpp
rename to addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
diff --git a/addons/wardrobe/TODO/rf/Helmets.hpp b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
similarity index 100%
rename from addons/wardrobe/TODO/rf/Helmets.hpp
rename to addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
diff --git a/addons/wardrobe/TODO/rf/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
similarity index 100%
rename from addons/wardrobe/TODO/rf/Uniforms.hpp
rename to addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
diff --git a/addons/compat_rf/compat_rf_wardrobe/config.cpp b/addons/compat_rf/compat_rf_wardrobe/config.cpp
new file mode 100644
index 00000000000..98ab4e75619
--- /dev/null
+++ b/addons/compat_rf/compat_rf_wardrobe/config.cpp
@@ -0,0 +1,25 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class SUBADDON {
+		name = COMPONENT_NAME;
+		author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+		
+		VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
+        requiredAddons[] = {
+            QPVAR(wardrobe),
+            "RF_Data_Loadorder"
+        };
+		skipWhenMissingDependencies = 1;
+
+        requiredVersion = 2.02;
+       
+        units[] = {};
+        weapons[] = {};
+	};
+};
+
+#include "CfgWardrobe.hpp"
diff --git a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
new file mode 100644
index 00000000000..ff47cdd6203
--- /dev/null
+++ b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for RF
+#include "..\script_component.hpp"
diff --git a/addons/wardrobe/TODO/vn/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vn/Booniehats.hpp
rename to addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
diff --git a/addons/wardrobe/TODO/vn/CfgWardrobe.hpp b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vn/CfgWardrobe.hpp
rename to addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
diff --git a/addons/wardrobe/TODO/vn/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vn/Pilothelmets.hpp
rename to addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
diff --git a/addons/wardrobe/TODO/vn/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vn/Uniforms_B.hpp
rename to addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
diff --git a/addons/wardrobe/TODO/vn/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vn/Uniforms_O.hpp
rename to addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
diff --git a/addons/compat_sog/compat_sog_wardrobe/config.cpp b/addons/compat_sog/compat_sog_wardrobe/config.cpp
new file mode 100644
index 00000000000..b2bc7f07615
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe/config.cpp
@@ -0,0 +1,25 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class SUBADDON {
+		name = COMPONENT_NAME;
+		author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+		
+		VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
+        requiredAddons[] = {
+            QPVAR(wardrobe),
+            "vn_data_f"
+        };
+		skipWhenMissingDependencies = 1;
+
+        requiredVersion = 2.02;
+       
+        units[] = {};
+        weapons[] = {};
+	};
+};
+
+#include "CfgWardrobe.hpp"
diff --git a/addons/wardrobe/TODO/gm/notes.md b/addons/compat_sog/compat_sog_wardrobe/notes.md
similarity index 100%
rename from addons/wardrobe/TODO/gm/notes.md
rename to addons/compat_sog/compat_sog_wardrobe/notes.md
diff --git a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
new file mode 100644
index 00000000000..c4cfb8d4188
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF
+#include "..\script_component.hpp"
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
similarity index 93%
rename from addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp
rename to addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index fca77bf4987..f6365293956 100644
--- a/addons/wardrobe/TODO/vn/vn_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -6,7 +6,7 @@ class CfgWeapons
     class vn_b_uniform_base;
     // creating the macro
     #define S_70(className)\
-    class className : vn_b_uniform_base { class ItemInfo : ItemInfo { containerClass = "Supply70"; }; };\
+    class className : vn_b_uniform_base { class ItemInfo : ItemInfo { containerClass = "Supply70"; }; };
 
     S_70(vn_b_uniform_macv_04_01)
     S_70(vn_b_uniform_macv_04_02)
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
new file mode 100644
index 00000000000..819156bcfd8
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
@@ -0,0 +1,25 @@
+#include "script_component.hpp"
+
+class CfgPatches {
+	class SUBADDON {
+		name = COMPONENT_NAME;
+		author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+		
+		VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
+        requiredAddons[] = {
+            QPVAR(wardrobe),
+            "vn_data_f"
+        };
+		skipWhenMissingDependencies = 1;
+
+        requiredVersion = 2.02;
+       
+        units[] = {};
+        weapons[] = {};
+	};
+};
+
+#include "Uniforms.hpp"
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
new file mode 100644
index 00000000000..689711cbfa2
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF - Uniform Fix
+#include "..\script_component.hpp"
diff --git a/addons/wardrobe/TODO/ws/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
similarity index 100%
rename from addons/wardrobe/TODO/ws/CfgWardrobe.hpp
rename to addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
diff --git a/addons/wardrobe/TODO/ws/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
similarity index 100%
rename from addons/wardrobe/TODO/ws/Turbans.hpp
rename to addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
diff --git a/addons/wardrobe/TODO/ws/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
similarity index 100%
rename from addons/wardrobe/TODO/ws/config.cpp
rename to addons/compat_ws/compat_ws_wardrobe/config.cpp
diff --git a/addons/wardrobe/TODO/rf/notes.md b/addons/compat_ws/compat_ws_wardrobe/notes.md
similarity index 100%
rename from addons/wardrobe/TODO/rf/notes.md
rename to addons/compat_ws/compat_ws_wardrobe/notes.md
diff --git a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
new file mode 100644
index 00000000000..5f9a4cf0fe3
--- /dev/null
+++ b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
@@ -0,0 +1,3 @@
+#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for Western Sahara
+#include "..\script_component.hpp"
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 7e4efe5649c..3300086dfe8 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,10 +1,10 @@
 class GVAR(base) 
 {
     modifiableTo[] = {""};
-
-    // WIP
-    modifiableToWithDependency = "";
-    dependency = "";
+    // ## WIP ##
+    // describes the components of the current item.
+    // When the current wearable is being changed into something, that does not have these 
+    components[] = {};
 
     // Supports Multiple Sounds, will pick one by random.
     sound[] = {"click"}; // I need a better default Sound
diff --git a/addons/wardrobe/TODO/gm/$PBOPREFIX$ b/addons/wardrobe/TODO/gm/$PBOPREFIX$
deleted file mode 100644
index e4a1b10ddc6..00000000000
--- a/addons/wardrobe/TODO/gm/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\gm
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/config.cpp b/addons/wardrobe/TODO/gm/config.cpp
deleted file mode 100644
index fff8caaa821..00000000000
--- a/addons/wardrobe/TODO/gm/config.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-	class ADDON {
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
-        authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
-
-		VERSION_CONFIG;
-
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main", "gm_core"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
-        weapons[] = {};
-
-	};
-};
-
-#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/gm/script_component.hpp b/addons/wardrobe/TODO/gm/script_component.hpp
deleted file mode 100644
index e823f5b7dfe..00000000000
--- a/addons/wardrobe/TODO/gm/script_component.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#define COMPONENT ws
-
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for Western Sahara
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/rf/$PBOPREFIX$ b/addons/wardrobe/TODO/rf/$PBOPREFIX$
deleted file mode 100644
index fa13eec9733..00000000000
--- a/addons/wardrobe/TODO/rf/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\rf
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/config.cpp b/addons/wardrobe/TODO/rf/config.cpp
deleted file mode 100644
index 511bd1d8a81..00000000000
--- a/addons/wardrobe/TODO/rf/config.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-	class ADDON {
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
-        authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
-
-		VERSION_CONFIG;
-
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main","RF_Data_Loadorder"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
-        weapons[] = {};
-
-	};
-};
-
-#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/rf/script_component.hpp b/addons/wardrobe/TODO/rf/script_component.hpp
deleted file mode 100644
index 09b545796d9..00000000000
--- a/addons/wardrobe/TODO/rf/script_component.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#define COMPONENT rf
-
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for Reaction Forces
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vanilla/$PBOPREFIX$ b/addons/wardrobe/TODO/vanilla/$PBOPREFIX$
deleted file mode 100644
index c38a70b1dd2..00000000000
--- a/addons/wardrobe/TODO/vanilla/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\vanilla
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp b/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
deleted file mode 100644
index c581aff3568..00000000000
--- a/addons/wardrobe/TODO/vanilla/CfgWardrobe.hpp
+++ /dev/null
@@ -1,10 +0,0 @@
-class EGVAR(wardrobe,base);
-class EGVAR(wardrobe,base_U_sleeves_up);
-class EGVAR(wardrobe,base_U_sleeves_down);
-
-
-
-class CfgWeapons
-{
-    #include "Uniforms.hpp"
-};
diff --git a/addons/wardrobe/TODO/vanilla/config.cpp b/addons/wardrobe/TODO/vanilla/config.cpp
deleted file mode 100644
index d0d31d554ad..00000000000
--- a/addons/wardrobe/TODO/vanilla/config.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-	class ADDON {
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
-        authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
-
-		VERSION_CONFIG;
-
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
-        weapons[] = {};
-
-	};
-};
-
-#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vanilla/script_component.hpp b/addons/wardrobe/TODO/vanilla/script_component.hpp
deleted file mode 100644
index a67b9d8c2b2..00000000000
--- a/addons/wardrobe/TODO/vanilla/script_component.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#define COMPONENT vanilla
-
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for Vanilla Assets
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vn/$PBOPREFIX$ b/addons/wardrobe/TODO/vn/$PBOPREFIX$
deleted file mode 100644
index 2d7e5ca17f8..00000000000
--- a/addons/wardrobe/TODO/vn/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\vn
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/config.cpp b/addons/wardrobe/TODO/vn/config.cpp
deleted file mode 100644
index fa4640d2f84..00000000000
--- a/addons/wardrobe/TODO/vn/config.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-	class ADDON {
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
-        authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
-
-		VERSION_CONFIG;
-
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main","vn_data_f"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
-        weapons[] = {};
-
-	};
-};
-
-#include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/notes.md b/addons/wardrobe/TODO/vn/notes.md
deleted file mode 100644
index 0021f2a4fad..00000000000
--- a/addons/wardrobe/TODO/vn/notes.md
+++ /dev/null
@@ -1,4 +0,0 @@
-lxWS_H_turban_01_black
-lxWS_H_turban_02_black
-lxWS_H_turban_03_black
-lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/script_component.hpp b/addons/wardrobe/TODO/vn/script_component.hpp
deleted file mode 100644
index ec51690e2fc..00000000000
--- a/addons/wardrobe/TODO/vn/script_component.hpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#define COMPONENT vn
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for SOG:PF
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp b/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
deleted file mode 100644
index 3e183709561..00000000000
--- a/addons/wardrobe/TODO/vn/vn_uniform_fix/config.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-	class ADDON {
-
-        // SubAddon Stuff
-        addonRootClass = QPVAR(vn);
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
-        authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
-
-		VERSION_CONFIG;
-
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main","vn_data_f"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
-        weapons[] = {};
-
-	};
-};
-
-#include "Uniforms.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp b/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
deleted file mode 100644
index 972e84ffaa8..00000000000
--- a/addons/wardrobe/TODO/vn/vn_uniform_fix/script_component.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#define COMPONENT vn_uniform_fix
-
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for SOG:PF - Uniform Fix
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/ws/$PBOPREFIX$ b/addons/wardrobe/TODO/ws/$PBOPREFIX$
deleted file mode 100644
index 1da69ea8489..00000000000
--- a/addons/wardrobe/TODO/ws/$PBOPREFIX$
+++ /dev/null
@@ -1 +0,0 @@
-z\ace\addons\ws
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/notes.md b/addons/wardrobe/TODO/ws/notes.md
deleted file mode 100644
index 0021f2a4fad..00000000000
--- a/addons/wardrobe/TODO/ws/notes.md
+++ /dev/null
@@ -1,4 +0,0 @@
-lxWS_H_turban_01_black
-lxWS_H_turban_02_black
-lxWS_H_turban_03_black
-lxWS_H_turban_04_black
\ No newline at end of file
diff --git a/addons/wardrobe/TODO/ws/script_component.hpp b/addons/wardrobe/TODO/ws/script_component.hpp
deleted file mode 100644
index e823f5b7dfe..00000000000
--- a/addons/wardrobe/TODO/ws/script_component.hpp
+++ /dev/null
@@ -1,9 +0,0 @@
-#define COMPONENT ws
-
-
-// This is being used for the Addon's Name and can be "My Addon Template Framework"
-#define COMPONENT_BEAUTIFIED Compatibility for Western Sahara
-
-
-#include "\z\ace\addons\main\script_mod.hpp"
-#include "\z\ace\addons\main\script_macros.hpp"
diff --git a/addons/wardrobe/TODO/vanilla/Uniforms.hpp b/addons/wardrobe/compat_vanilla/Uniforms.hpp
similarity index 100%
rename from addons/wardrobe/TODO/vanilla/Uniforms.hpp
rename to addons/wardrobe/compat_vanilla/Uniforms.hpp
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index 89b33ae3244..3ec328500de 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -18,7 +18,7 @@ class CfgPatches {
 
         // Required addons, used for setting load order.
         // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main", "ace_interact_menu"};
+        requiredAddons[] = {"cba_main", "ace_interact_menu"};
 
 		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
 		skipWhenMissingDependencies = 1;
@@ -35,6 +35,11 @@ class CfgPatches {
 #include "CfgFunctions.hpp"
 #include "XEH\CfgXEH.hpp"
 
+#include "Baseclass.hpp"
+
 #include "CfgVehicles.hpp"
 
-#include "Baseclass.hpp"
\ No newline at end of file
+class CfgWeapons
+{
+    #include "compat_vanilla\Uniforms.hpp"
+};
diff --git a/addons/wardrobe/script_macros_zrn.hpp b/addons/wardrobe/script_macros_zrn.hpp
index 90138ec1f7b..c2179c41144 100644
--- a/addons/wardrobe/script_macros_zrn.hpp
+++ b/addons/wardrobe/script_macros_zrn.hpp
@@ -2,6 +2,7 @@
     #define _ZRN_DEBUG_
 #endif
 
+
 // CBA Settings
 #define SET(var1) TRIPLES(ADDON,set,var1)
 #define QSET(var1) Q(SET(var1))
@@ -10,14 +11,10 @@
 #define QESET(var1,var2) Q(ESET(var1,var2))
 #define QQESET(var1,var2) QQ(ESET(var1,var2))
 
+
 // Stringtable.xml - use LSTRING() instead
-// #define XML(var1) TRIPLES(STR,ADDON,var1)
-// #define QXML(var1) Q(XML(var1))
 #define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
 
-// hashMapObjects
-#define OGET(var1) (_self get Q(var1))
-#define OSET(var1,var2) (_self set [Q(var1), var2])
 
 // Quotes
 #ifndef QUOTE
@@ -31,6 +28,7 @@
 #define QPREFIX Q(PREFIX)
 #define QCOMPONENT Q(COMPONENT)
 
+
 // Prefix Function
 #define PFUNC(var1) TRIPLES(PREFIX,fnc,var1)
 #define QPFUNC(var1) QUOTE(PFUNC(var1))
@@ -42,18 +40,13 @@
 #define QPVAR(var1) QUOTE(PVAR(var1))
 #define QQPVAR(var1) QUOTE(QPVAR(var1))
 
-// Component Variables
-#define CVAR(var1) DOUBLES(COMPONENT,var1)
-#define QCVAR(var1) QUOTE(CVAR(var1))
-#define QQCVAR(var1) QUOTE(QCVAR(var1))
 
 // missionNamespace set/get Variables
-
 #define SETMGVAR(name,value) (missionNamespace setVariable [QGVAR(name),value])
 #define SETMGVAR_PUBLIC(name,value,public) (missionNamespace setVariable [QGVAR(name),value,public])
-
 #define GETMGVAR(name,default) (missionNamespace getVariable [QGVAR(name),default])
 
+
 // CfgPatches Stuff
 #ifndef PREFIX_BEAUTIFIED
     #define PREFIX_BEAUTIFIED PREFIX
@@ -74,17 +67,8 @@
 #define QPATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
 #define QQPATH_TO_ADDON(var1) Q(QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1))
 
-// Debug
-// Doesnt seem to work currently 
-#ifdef _ZRN_DEBUG_
-    #define _DEBUG_POSTINIT_ postInit = 1;
-    #define _DEBUG_PREINIT_ preInit = 1;
-#else
-    #define _DEBUG_POSTINIT_ postInit = 0;
-    #define _DEBUG_PREINIT_ preInit = 0;
-#endif
-
 
+// Debug
 #define DEBUG_HEADER format [QUOTE([PREFIX][COMPONENT](%1)),_fnc_scriptName]
 
 #define ZRN_LOG_MSG(MSG) diag_log (DEBUG_HEADER + " " + QUOTE(MSG))
@@ -110,9 +94,6 @@
     #define ZRN_LOG_7(A,B,C,D,E,F,G) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G)]))
     #define ZRN_LOG_8(A,B,C,D,E,F,G,H) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7 - I: %8',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G),RETNIL(H)]))
 
-    #define ZRN_LOG_HMO(var1) { if ('#' in _x || 'Meth' in _x) then {continue}; diag_log (DEBUG_HEADER + (format [' %3 - %1 - %2', _x, _y, Q(MSG)])) } forEach var1;
-    #define ZRN_LOG_MSG_HMO(MSG,var1) { if ('#' in _x || 'Meth' in _x) then {continue}; diag_log (DEBUG_HEADER + (format [' %3 - %1 - %2', _x, _y, Q(MSG)])) } forEach var1;
-
 #else
     #define ZRN_SCRIPTNAME(var1)
 
@@ -134,6 +115,4 @@
     #define ZRN_LOG_7(A,B,C,D,E,F,G)
     #define ZRN_LOG_8(A,B,C,D,E,F,G,H)
 
-    #define ZRN_LOG_HMO(var1)
-    #define ZRN_LOG_MSG_HMO(MSG,var1)
 #endif
\ No newline at end of file

From 4e3f2eb2bea1bafc9371250a10d90626c9fd1e6a Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 14:10:49 +0100
Subject: [PATCH 003/139] Update config.cpp

---
 addons/wardrobe/config.cpp | 28 ++++++++--------------------
 1 file changed, 8 insertions(+), 20 deletions(-)

diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index 3ec328500de..6806b610b62 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -2,33 +2,21 @@
 
 class CfgPatches {
 	class ADDON {
-
-        // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_wardrobe_author";
+		name = COMPONENT_NAME;
+		author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
-		
-        url = "$STR_mod_URL";
+        url = ECSTRING(main,URL);
 
 		VERSION_CONFIG;
+        requiredVersion = REQUIRED_VERSION;
 
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
-        requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {"cba_main", "ace_interact_menu"};
-
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+        requiredAddons[] = {
+            "ace_interact_menu"
+        };
 		skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
-        units[] = {};
 
-        // List of weapons (CfgWeapons classes) contained in the addon.
+        units[] = {};
         weapons[] = {};
-
 	};
 };
 

From 69d7810ba71236ab2f2de422fdc26649c5416b25 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 14:10:51 +0100
Subject: [PATCH 004/139] Update config.cpp

---
 addons/compat_rf/compat_rf_wardrobe/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_rf/compat_rf_wardrobe/config.cpp b/addons/compat_rf/compat_rf_wardrobe/config.cpp
index 98ab4e75619..22793b4f532 100644
--- a/addons/compat_rf/compat_rf_wardrobe/config.cpp
+++ b/addons/compat_rf/compat_rf_wardrobe/config.cpp
@@ -15,7 +15,7 @@ class CfgPatches {
         };
 		skipWhenMissingDependencies = 1;
 
-        requiredVersion = 2.02;
+        requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};

From 8c13b824fea9300e2da4e2ef0a553bc4c4a0895b Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 14:35:59 +0100
Subject: [PATCH 005/139] small fixes: Macro's and typo's

---
 addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp       | 2 +-
 addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp       | 2 +-
 addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp | 2 +-
 addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp   | 4 ++--
 addons/wardrobe/Baseclass.hpp                          | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index 9d55165814c..999de64c24e 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -1,6 +1,6 @@
 // CfgWeapons
 
-// Sleves
+// Sleeves
 
 class gm_ge_bgs_uniform_special_80_base;
 class gm_ge_bgs_uniform_special_rolled_80_base;
diff --git a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
index a00636efc1d..7bd89dc0e8c 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
@@ -5,7 +5,7 @@ class Uniform_Base;
 // Macros
 #define UNIFORM_BASE(class1,class2)\
 class class1: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
 
 // Simple Variants
 UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
index d41144eaa0a..8e461d7da1d 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
@@ -8,7 +8,7 @@
 
 #define HELMET_VARIANT(side,var1,var2)\
 class CN01(side,var1,var2) : base_class_up { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN02(side,var1,var2)) }; }; };\
-class CN02(side,var1,var2) : base_class_dn { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };\
+class CN02(side,var1,var2) : base_class_dn { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };
 
 
 // Base classes in CfgWeapons.hpp
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index 3e3953b4a29..cfa3ee4cf33 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -7,7 +7,7 @@ class vn_b_uniform_base;
 
 #define UNIFORM_BASE_B(class1,class2)\
 class class1: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class2: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
 
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
 
@@ -49,7 +49,7 @@ UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07)
 // macv 05 and 04 have inconsistency between them -> different uniform maxLoad. This likely will cause the player to loose items when the uniform is filled to the brim. Difference is 1lb which translates to 16~17x ace bandages or 1x 1l blood
 #define B_U_PAIR_SET(camo)\
 B_U_PAIR(macv,02,03,camo)\
-B_U_PAIR(macv,05,04,camo)\
+B_U_PAIR(macv,05,04,camo)
 
 B_U_PAIR_SET(TIGER)
 B_U_PAIR_SET(TIGER_GREEN)
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 3300086dfe8..fa0c69bf997 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -13,7 +13,7 @@ class GVAR(base)
     // Gesture
     gesture = "Gear";
 
-    // These will be read from the Target Class, so for example, the uniformclass with the rolled up sleaves, it should say "Roll Up Sleves"
+    // These will be read from the Target Class, so for example, the uniformclass with the rolled up sleaves, it should say "Roll Up Sleeves"
     alternativePicture = "";
     alternativeDisplayName = "";
 

From cd5744552053322a5feebe32fdc76e5157490ca6 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 27 Dec 2024 14:36:05 +0100
Subject: [PATCH 006/139] Create readme.md

---
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md | 5 +++++
 1 file changed, 5 insertions(+)
 create mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
new file mode 100644
index 00000000000..e9f0fae9edd
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
@@ -0,0 +1,5 @@
+The uniforms addressed in this sub-addon are the "sleeves rolled up" version of their "sleeves rolled down" counterpart.
+The problem is, that the rolled up version are both, 1 lb lighter, and can carry 1 lb less. 
+
+If we would ignore this, the player would run into situations where they would loose items by simply rolling up their sleeves.
+To counter this, I increased the maxLoad of those items by 1 lb to be aligned with their counterpart.

From a096f915d34ffd99a2892150377a9017eb16bf2a Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 15:34:21 +0100
Subject: [PATCH 007/139] fix compat macros

---
 addons/compat_gm/compat_gm_wardrobe/script_component.hpp        | 2 ++
 addons/compat_rf/compat_rf_wardrobe/script_component.hpp        | 2 ++
 addons/compat_sog/compat_sog_wardrobe/script_component.hpp      | 2 ++
 .../compat_sog_wardrobe_uniform_fix/script_component.hpp        | 2 ++
 addons/compat_ws/compat_ws_wardrobe/script_component.hpp        | 2 ++
 5 files changed, 10 insertions(+)

diff --git a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
index 31996452391..6fc839abdb8 100644
--- a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
@@ -1,3 +1,5 @@
 #define SUBCOMPONENT wardrobe
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for GlobMo
 #include "..\script_component.hpp"
+
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
diff --git a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
index ff47cdd6203..c6abb6601b1 100644
--- a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
@@ -1,3 +1,5 @@
 #define SUBCOMPONENT wardrobe
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for RF
 #include "..\script_component.hpp"
+
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
index c4cfb8d4188..bc44bae5fc7 100644
--- a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
@@ -1,3 +1,5 @@
 #define SUBCOMPONENT wardrobe
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF
 #include "..\script_component.hpp"
+
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
index 689711cbfa2..273c8190a91 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
@@ -1,3 +1,5 @@
 #define SUBCOMPONENT wardrobe
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF - Uniform Fix
 #include "..\script_component.hpp"
+
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
diff --git a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
index 5f9a4cf0fe3..424cc0eb6a9 100644
--- a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
@@ -1,3 +1,5 @@
 #define SUBCOMPONENT wardrobe
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for Western Sahara
 #include "..\script_component.hpp"
+
+#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file

From 90d775c6fec59c0500ff3e0b3c26bf3a242818a3 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 17:48:36 +0100
Subject: [PATCH 008/139] fix: ignore inherited subclasses

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

diff --git a/addons/wardrobe/functions/fn_checkItem.sqf b/addons/wardrobe/functions/fn_checkItem.sqf
index 3ae56ddac07..befaed14ede 100644
--- a/addons/wardrobe/functions/fn_checkItem.sqf
+++ b/addons/wardrobe/functions/fn_checkItem.sqf
@@ -22,4 +22,4 @@ params [
 
 if (isNull _cfg) exitWith {false};
 // Checks if the config has the property without it being inherited(!)
-count configProperties [_cfg >> QADDON, Q(configName _x == QQ(modifiableTo)), false] > 0 
\ No newline at end of file
+count ( Q(configName _x  isEqualTo QQPVAR(wardrobe)) configClasses _cfg ) > 0
\ No newline at end of file

From f4b7180ee53753add7508ea070b7a1cfb1c522da Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 17:48:57 +0100
Subject: [PATCH 009/139] reorganised

---
 .../wardrobe/functions/{ => config}/fn_getCfgDataRandom.sqf   | 2 +-
 addons/wardrobe/functions/{ => effects}/fn_say3d.sqf          | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)
 rename addons/wardrobe/functions/{ => config}/fn_getCfgDataRandom.sqf (93%)
 rename addons/wardrobe/functions/{ => effects}/fn_say3d.sqf (89%)

diff --git a/addons/wardrobe/functions/fn_getCfgDataRandom.sqf b/addons/wardrobe/functions/config/fn_getCfgDataRandom.sqf
similarity index 93%
rename from addons/wardrobe/functions/fn_getCfgDataRandom.sqf
rename to addons/wardrobe/functions/config/fn_getCfgDataRandom.sqf
index cc28339a141..aeeb86c6792 100644
--- a/addons/wardrobe/functions/fn_getCfgDataRandom.sqf
+++ b/addons/wardrobe/functions/config/fn_getCfgDataRandom.sqf
@@ -1,4 +1,4 @@
-#include "../script_component.hpp"
+#include "../../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fn_say3d.sqf b/addons/wardrobe/functions/effects/fn_say3d.sqf
similarity index 89%
rename from addons/wardrobe/functions/fn_say3d.sqf
rename to addons/wardrobe/functions/effects/fn_say3d.sqf
index 7b1fdf9b21d..942b90cee13 100644
--- a/addons/wardrobe/functions/fn_say3d.sqf
+++ b/addons/wardrobe/functions/effects/fn_say3d.sqf
@@ -1,4 +1,4 @@
-#include "../script_component.hpp"
+#include "../../script_component.hpp"
 
 /*
 * Author: Zorn
@@ -24,7 +24,7 @@ if (_sound isEqualType [] && {_sound#0 == ""} || {_sound isEqualType "" && {_sou
 
 _sound params [
 "_className",
-["_distance",        100,               [0]         ],
+["_distance",        25,                [0]         ],
 ["_pitch",           0.95 + random 0.1, [0]         ],
 ["_isSpeech",        false,             [false, 0]  ],
 ["_offSet",          0,                 [0]         ],

From c5bcc11197702d8594588faef18004a271b79eb8 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 17:49:16 +0100
Subject: [PATCH 010/139] debug fnc

---
 addons/wardrobe/CfgFunctions.hpp              | 21 +++++++++++++---
 .../debug/fn_getAllWardrobeItems.sqf          | 24 +++++++++++++++++++
 2 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf

diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index 926a5696fa4..c2ff20159e9 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -7,12 +7,9 @@ class CfgFunctions
             file = PATH_TO_FUNC;
 
             class postInit { postInit = 1; };
-            class say3d {};
 
             class clearOnClose {};
             class checkItem {};
-            class getCfgDataRandom {};
-
         };
 
         class ace_intel
@@ -65,5 +62,23 @@ class CfgFunctions
 
             class cache_clear {};
         };
+
+        class config
+        {
+            file = PATH_TO_FUNC_SUB(config);
+            class getCfgDataRandom {};
+        };
+
+        class debug
+        {
+            file = PATH_TO_FUNC_SUB(debug);
+            class getAllWardrobeItems {};
+        };
+
+        class effects
+        {
+            file = PATH_TO_FUNC_SUB(effects);
+            class say3d {};
+        };
     };
 };
\ No newline at end of file
diff --git a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
new file mode 100644
index 00000000000..acf4e848b52
--- /dev/null
+++ b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
@@ -0,0 +1,24 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to retrieve all Wardrobe Items.
+*
+* Arguments:
+*
+* Return Value:
+* Nested Array of Classnames that have the wardrobe properties. One Entry per Cfg Group (currently just CfgWeapons)
+*
+* Example:
+* [] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+[
+    "allWardrobeItems",
+    {
+        ["CfgWeapons"] apply { ( Q([_x] call FUNC(checkItem)) configClasses (configFile >> _x) ) apply { configName _x } }
+    }
+] call FUNC(cache_get);
+

From e6ddc21193d024dfcb10dd61186b3ca7f9700ae4 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 18:18:02 +0100
Subject: [PATCH 011/139] refactor of sound effects

---
 addons/wardrobe/Baseclass.hpp                 |  6 ++--
 .../wardrobe/functions/replace/fn_replace.sqf | 30 ++++++++++++-------
 2 files changed, 22 insertions(+), 14 deletions(-)

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index fa0c69bf997..9de6f596783 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -8,7 +8,7 @@ class GVAR(base)
 
     // Supports Multiple Sounds, will pick one by random.
     sound[] = {"click"}; // I need a better default Sound
-    sound_timing = 1;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
+    sound_timing = 0;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
 
     // Gesture
     gesture = "Gear";
@@ -35,5 +35,5 @@ class GVAR(base_U_jacket_closed) : GVAR(base) { alternativeDisplayName = CSTRING
 
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
-class GVAR(base_H_visor_up)   : GVAR(base) { gesture ="gestureNod"; sound[] = {""}; soundEnd[] = {"click"}; alternativeDisplayName = CSTRING(visorUp); };
-class GVAR(base_H_visor_down) : GVAR(base) { gesture ="gestureNod"; sound[] = {""}; soundEnd[] = {"click"}; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
+class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {"click"}; sound_timing = 1; alternativeDisplayName = CSTRING(visorUp); };
+class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {"click"}; sound_timing = 1; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 3a9ab735057..e661e9d787e 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -35,13 +35,24 @@ private _replaceCode = switch ( _typeNumber ) do {
     case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_uniform)  };
 };
 
-private _duration     = getNumber (_cfg_tgt>> Q(ADDON) >> "duration") max 1;
+private _duration     = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
 // Plays Random Sound At the Beginning
 private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
 private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
-// TODO - refactor sound playing
-if (_sound != "") then { [QGVAR(EH_say3d), [_player, _sound]] call CBA_fnc_globalEvent; };
 
+private _params_soundEnd = false;
+
+if (_sound != "") then {
+    if  (_sound_timing < 1) then {
+        [
+            CBA_fnc_globalEvent ,
+            [QGVAR(EH_say3d), [_player, _sound]],
+            _sound_timing * _duration
+        ] call CBA_fnc_waitAndExecute;
+    } else {
+        _params_soundEnd = [ QGVAR(EH_say3d), [ _player, _sound] ];
+    };
+};
 
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
@@ -51,7 +62,6 @@ private _params_replace = [_player, _cfg_origin, _cfg_tgt, _additionalParams ];
 
 // Dart made a PR to CBA to impove depricated Functions. I plan to use these once cba gets updated.
 // [ [ _player ], [ _sound, 50 ] ] call CBA_fnc_globalSay;
-private _params_soundEnd = [ QGVAR(EH_say3d), [ _player, [ _cfg_tgt >> Q(ADDON) >> "soundEnd" ] call FUNC(getCfgDataRandom), DISTANCE, 0.95 + random 0.1 ] ];
 
 if ( _duration > 1 ) then {
 
@@ -65,9 +75,7 @@ if ( _duration > 1 ) then {
 
             _params_replace call _replaceCode;
             _params_notify call CBA_fnc_notify;
-            _params_soundEnd call CBA_fnc_globalEvent;
-            
-            
+            if (_params_soundEnd isNotEqualTo false) then { _params_soundEnd call CBA_fnc_globalEvent; };
         }
         // * 3: On Failure: Code called or STRING raised as event. <CODE, STRING>
         ,{}   
@@ -75,7 +83,7 @@ if ( _duration > 1 ) then {
     ] call ace_common_fnc_progressBar;
 
 } else {
-    [ _replaceCode,        _params_replace,  1.0 ] call CBA_fnc_waitAndExecute;
-    [ CBA_fnc_globalEvent, _params_soundEnd, 1.0 ] call CBA_fnc_waitAndExecute;
-    [ CBA_fnc_notify,      _params_notify,   1.2 ] call CBA_fnc_waitAndExecute;
-};
+    [ _replaceCode,        _params_replace,  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
+    [ CBA_fnc_notify,      _params_notify,   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
+    if (_params_soundEnd isNotEqualTo false) then { [ CBA_fnc_globalEvent, _params_soundEnd, _duration * 1.0 ] call CBA_fnc_waitAndExecute; };
+};
\ No newline at end of file

From cb191aff4261e43bc5540ef9de5c5e2756400f99 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 19:10:12 +0100
Subject: [PATCH 012/139] purge tab

---
 .../compat_gm/compat_gm_wardrobe/config.cpp   | 14 ++++----
 .../compat_rf/compat_rf_wardrobe/config.cpp   | 14 ++++----
 .../compat_sog/compat_sog_wardrobe/config.cpp | 14 ++++----
 .../compat_ws/compat_ws_wardrobe/config.cpp   | 16 ++++-----
 addons/wardrobe/XEH/XEH_preInit.sqf           | 36 +++++++++----------
 addons/wardrobe/config.cpp                    | 12 +++----
 .../wardrobe/functions/replace/fn_replace.sqf |  7 ++--
 addons/wardrobe/stringtable.xml               | 36 +++++++++----------
 8 files changed, 72 insertions(+), 77 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/config.cpp b/addons/compat_gm/compat_gm_wardrobe/config.cpp
index 3823b748028..a3a1683f408 100644
--- a/addons/compat_gm/compat_gm_wardrobe/config.cpp
+++ b/addons/compat_gm/compat_gm_wardrobe/config.cpp
@@ -1,25 +1,25 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class SUBADDON {
-		name = COMPONENT_NAME;
-		author = ECSTRING(common,ACETeam);
+    class SUBADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
         url = ECSTRING(main,URL);
-		
-		VERSION_CONFIG;
+        
+        VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
             QPVAR(wardrobe),
             "gm_core"
         };
-		skipWhenMissingDependencies = 1;
+        skipWhenMissingDependencies = 1;
 
         requiredVersion = 2.02;
        
         units[] = {};
         weapons[] = {};
-	};
+    };
 };
 
 #include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_rf/compat_rf_wardrobe/config.cpp b/addons/compat_rf/compat_rf_wardrobe/config.cpp
index 22793b4f532..704ee9bf340 100644
--- a/addons/compat_rf/compat_rf_wardrobe/config.cpp
+++ b/addons/compat_rf/compat_rf_wardrobe/config.cpp
@@ -1,25 +1,25 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class SUBADDON {
-		name = COMPONENT_NAME;
-		author = ECSTRING(common,ACETeam);
+    class SUBADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
         url = ECSTRING(main,URL);
-		
-		VERSION_CONFIG;
+        
+        VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
             QPVAR(wardrobe),
             "RF_Data_Loadorder"
         };
-		skipWhenMissingDependencies = 1;
+        skipWhenMissingDependencies = 1;
 
         requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};
-	};
+    };
 };
 
 #include "CfgWardrobe.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe/config.cpp b/addons/compat_sog/compat_sog_wardrobe/config.cpp
index b2bc7f07615..e07a5b05ec2 100644
--- a/addons/compat_sog/compat_sog_wardrobe/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe/config.cpp
@@ -1,25 +1,25 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class SUBADDON {
-		name = COMPONENT_NAME;
-		author = ECSTRING(common,ACETeam);
+    class SUBADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
         url = ECSTRING(main,URL);
-		
-		VERSION_CONFIG;
+        
+        VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
             QPVAR(wardrobe),
             "vn_data_f"
         };
-		skipWhenMissingDependencies = 1;
+        skipWhenMissingDependencies = 1;
 
         requiredVersion = 2.02;
        
         units[] = {};
         weapons[] = {};
-	};
+    };
 };
 
 #include "CfgWardrobe.hpp"
diff --git a/addons/compat_ws/compat_ws_wardrobe/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
index ee6b5864984..35ee5b61743 100644
--- a/addons/compat_ws/compat_ws_wardrobe/config.cpp
+++ b/addons/compat_ws/compat_ws_wardrobe/config.cpp
@@ -1,16 +1,16 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class ADDON {
+    class ADDON {
 
         // Meta information for editor
-		name = ADDON_NAME;
-		author = "$STR_mod_author";
+        name = ADDON_NAME;
+        author = "$STR_mod_author";
         authors[] = {"OverlordZorn [CVO]"};
-		
+        
         url = "$STR_mod_URL";
 
-		VERSION_CONFIG;
+        VERSION_CONFIG;
 
         // Addon Specific Information
         // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
@@ -20,8 +20,8 @@ class CfgPatches {
         // When any of the addons is missing, pop-up warning will appear when launching the game.
         requiredAddons[] = {QPVAR(main),"cba_main","Characters_f_lxWS_headgear"};
 
-		// Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-		skipWhenMissingDependencies = 1;
+        // Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
+        skipWhenMissingDependencies = 1;
         
         // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
         units[] = {};
@@ -29,7 +29,7 @@ class CfgPatches {
         // List of weapons (CfgWeapons classes) contained in the addon.
         weapons[] = {};
 
-	};
+    };
 };
 
 #include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH/XEH_preInit.sqf
index 2c6434529da..8e8bcd2b3e1 100644
--- a/addons/wardrobe/XEH/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH/XEH_preInit.sqf
@@ -14,26 +14,26 @@ QSET(test) -> "ADDON_set_test"
 
 /*
 [
-	QSET(displayMusic),					//    _setting     - Unique setting name. Matches resulting variable name <STRING>
-	"CHECKBOX",								//    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
-	["Display Music Title","This enables the message of the currently played music title by the CVO Music System"],
-											//    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
-	["CVO", "CVO Music"],					//    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
-	false,									//    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
-	0,										//    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-	{},										//    _script      - Script to execute when setting is changed. (optional) <CODE>
-	false									//    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+    QSET(displayMusic),                         //    _setting     - Unique setting name. Matches resulting variable name <STRING>
+    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+    ["Display Music Title","This enables the message of the currently played music title by the CVO Music System"],
+                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
+    ["CVO", "CVO Music"],                       //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
+    false,                                      //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
+    0,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
+    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
+    false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
 ] call CBA_fnc_addSetting;
 */
 
 [
-	QSET(enable),							//    _setting     - Unique setting name. Matches resulting variable name <STRING>
-	"CHECKBOX",								//    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
-	SETLSTRING(enable),
-											//    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
-	[LSTRING(set_cat_main)],				//    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
-	true,									//    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
-	1,										//    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-	{},										//    _script      - Script to execute when setting is changed. (optional) <CODE>
-	false									//    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+    QSET(enable),                               //    _setting     - Unique setting name. Matches resulting variable name <STRING>
+    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+    SETLSTRING(enable),
+                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
+    [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
+    true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
+    1,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
+    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
+    false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
 ] call CBA_fnc_addSetting;
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index 6806b610b62..38a159cf24d 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -1,23 +1,23 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class ADDON {
-		name = COMPONENT_NAME;
-		author = ECSTRING(common,ACETeam);
+    class ADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
         url = ECSTRING(main,URL);
 
-		VERSION_CONFIG;
+        VERSION_CONFIG;
         requiredVersion = REQUIRED_VERSION;
 
         requiredAddons[] = {
             "ace_interact_menu"
         };
-		skipWhenMissingDependencies = 1;
+        skipWhenMissingDependencies = 1;
 
         units[] = {};
         weapons[] = {};
-	};
+    };
 };
 
 #include "CfgFunctions.hpp"
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index e661e9d787e..5772d1f6bb8 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -60,14 +60,11 @@ if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString
 private _params_notify = [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ];
 private _params_replace = [_player, _cfg_origin, _cfg_tgt, _additionalParams ];
 
-// Dart made a PR to CBA to impove depricated Functions. I plan to use these once cba gets updated.
-// [ [ _player ], [ _sound, 50 ] ] call CBA_fnc_globalSay;
-
 if ( _duration > 1 ) then {
 
     [
-        _duration               // * 0: Total Time (in game "time" seconds) <NUMBER>
-        ,[_replaceCode, _params_replace, _params_soundEnd, _params_notify] // * 1: Arguments, passed to condition, fail and finish <ARRAY>
+        _duration                                                           // * 0: Total Time (in game "time" seconds) <NUMBER>
+        ,[_replaceCode, _params_replace, _params_soundEnd, _params_notify]  // * 1: Arguments, passed to condition, fail and finish <ARRAY>
         // * 2: On Finish: Code called or STRING raised as event. <CODE, STRING>
         ,{
             params ["_args", "_elapsedTime", "_totalTime", "_errorCode"];
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 06706f928a7..92822bb6a0d 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -1,38 +1,36 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project name="ace">
     <Package name="wardrobe">
-        <Container name="meta">
-            <Key ID="STR_wardrobe_author">
-                <Original>OverlordZorn[CVO]</Original>
-                <English>OverlordZorn[CVO]</English>
-            </Key>
-        </Container>
         <Container name="CBA_Settings_Categories">
             <Key ID="STR_ace_wardrobe_set_cat_main">
                 <Original>ACE Wardrobe</Original>
                 <English>ACE Wardrobe</English>
+                <German>ACE Gaderobe</German>
             </Key>
         </Container>
         <Container name="CBA_Settings">
             <Key ID="STR_ace_wardrobe_set_enable">
                 <Original>Enable</Original>
+                <English>Enable</English>
+                <German>Aktivieren</German>
             </Key>
             <Key ID="STR_ace_wardrobe_set_enable_desc">
-                <English>When Enabled, will let the player use the Wardrobe Actions.</English>
+                <English>When Enabled, will let the player use the Wardrobe actions.</English>
             </Key>
         </Container>
         <Container name="Action">
             <Key ID="STR_ace_wardrobe_actionTitle">
                 <Original>Wardrobe</Original>
                 <English>Wardrobe</English>
+                <German>Gaderobe</German>
             </Key>
             <Key ID="STR_ace_wardrobe_glovesOff">
-                <Original>Take Gloves Off</Original>
-                <English>Take Gloves Off</English>
+                <Original>Take gloves off</Original>
+                <English>Take gloves off</English>
             </Key>
             <Key ID="STR_ace_wardrobe_glovesOn">
-                <Original>Wear Gloves</Original>
-                <English>Wear Gloves</English>
+                <Original>Wear gloves</Original>
+                <English>Wear gloves</English>
             </Key>
             <Key ID="STR_ace_wardrobe_jacketClose">
                 <Original>Close Jacket</Original>
@@ -43,20 +41,20 @@
                 <English>Open Jacket</English>
             </Key>
             <Key ID="STR_ace_wardrobe_sleevesDown">
-                <Original>Roll sleeves Down</Original>
-                <English>Roll sleeves Down</English>
+                <Original>Roll sleeves down</Original>
+                <English>Roll sleeves down</English>
             </Key>
             <Key ID="STR_ace_wardrobe_sleevesUp">
-                <Original>Roll sleeves Up</Original>
-                <English>Roll sleeves Up</English>
+                <Original>Roll sleeves up</Original>
+                <English>Roll sleeves up</English>
             </Key>
             <Key ID="STR_ace_wardrobe_visorDown">
-                <Original>Visor Down</Original>
-                <English>Visor Down</English>
+                <Original>Visor down</Original>
+                <English>Visor down</English>
             </Key>
             <Key ID="STR_ace_wardrobe_visorUp">
-                <Original>Visor Up</Original>
-                <English>Visor Up</English>
+                <Original>Visor up</Original>
+                <English>Visor up</English>
             </Key>
         </Container>
     </Package>

From fea7488c1d0174a1495243475546ce815c5a4545 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 20:21:19 +0100
Subject: [PATCH 013/139] temp test mission

---
 .hemtt/launch.toml                  |  16 ++
 .hemtt/missions/test.VR/mission.sqm | 254 ++++++++++++++++++++++++++++
 2 files changed, 270 insertions(+)
 create mode 100644 .hemtt/missions/test.VR/mission.sqm

diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index ae05b1942a5..5f2fad4e147 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -35,3 +35,19 @@ workshop = [
     "843593391", # RHS GREF Workshop ID
     "843632231", # RHS SAF  Workshop ID
 ]
+
+[zrn]
+extends = "default"
+workshop = [
+    "2369477168", # Advanced Developer Tools
+    "1779063631", # ZEN
+#    "623475643",  # eden enhanced
+]
+mission = "test.VR"
+
+[zrn_dlc]
+extends = "zrn"
+dlc = [
+    "Reaction Forces",
+    "Western Sahara"
+]
\ No newline at end of file
diff --git a/.hemtt/missions/test.VR/mission.sqm b/.hemtt/missions/test.VR/mission.sqm
new file mode 100644
index 00000000000..6e4cdddd9d6
--- /dev/null
+++ b/.hemtt/missions/test.VR/mission.sqm
@@ -0,0 +1,254 @@
+version=54;
+class EditorData
+{
+	moveGridStep=2;
+	angleGridStep=0.2617994;
+	scaleGridStep=1;
+	autoGroupingDist=10;
+	toggles=517;
+	class ItemIDProvider
+	{
+		nextID=202;
+	};
+	class Camera
+	{
+		pos[]={10.292682,7.7905149,-9.2390032};
+		dir[]={0.76574892,-0.31659395,-0.55981857};
+		up[]={0.2555781,0.94856107,-0.18684632};
+		aside[]={-0.59017646,0,-0.8072741};
+	};
+};
+binarizationWanted=0;
+sourceName="test";
+addons[]=
+{
+	"A3_Weapons_F",
+	"ace_realisticnames",
+	"ace_ballistics",
+	"A3_Characters_F",
+	"A3_Soft_F_Exp_Offroad_02"
+};
+class AddonsMetaData
+{
+	class List
+	{
+		items=4;
+		class Item0
+		{
+			className="A3_Weapons_F";
+			name="Arma 3 Alpha - Weapons and Accessories";
+			author="Bohemia Interactive";
+			url="https://www.arma3.com";
+		};
+		class Item1
+		{
+			className="A3_Characters_F";
+			name="Arma 3 Alpha - Characters and Clothing";
+			author="Bohemia Interactive";
+			url="https://www.arma3.com";
+		};
+		class Item2
+		{
+			className="ace_ballistics";
+			name="ACE3 - Ballistics";
+			author="ACE-Team";
+			url="https://ace3.acemod.org/";
+		};
+		class Item3
+		{
+			className="A3_Soft_F_Exp";
+			name="Arma 3 Apex - Unarmored Land Vehicles";
+			author="Bohemia Interactive";
+			url="https://www.arma3.com";
+		};
+	};
+};
+dlcs[]=
+{
+	"Expansion"
+};
+randomSeed=4540948;
+class ScenarioData
+{
+	author="Overlord Zorn";
+};
+class CustomAttributes
+{
+};
+class Mission
+{
+	class Intel
+	{
+		timeOfChanges=1800.0002;
+		startWeather=0;
+		startWind=0.1;
+		startWaves=0.1;
+		forecastWeather=0;
+		forecastWind=0.1;
+		forecastWaves=0.1;
+		forecastLightnings=0.1;
+		wavesForced=1;
+		windForced=1;
+		year=2035;
+		day=28;
+		hour=13;
+		minute=37;
+		startFogDecay=0.014;
+		forecastFogDecay=0.014;
+	};
+	class Entities
+	{
+		items=4;
+		class Item0
+		{
+			dataType="Object";
+			class PositionInfo
+			{
+				position[]={16,5,-12};
+			};
+			side="Empty";
+			flags=4;
+			class Attributes
+			{
+			};
+			id=196;
+			type="Weapon_hgun_Pistol_heavy_01_F";
+		};
+		class Item1
+		{
+			dataType="Object";
+			class PositionInfo
+			{
+				position[]={17.833,5.2840548,-13.012};
+			};
+			side="Empty";
+			flags=4;
+			class Attributes
+			{
+				init="[this, flatten ([] call ACE_WARDROBE_fnc_getAllWardrobeItems)] call ace_arsenal_fnc_initBox;";
+			};
+			id=197;
+			type="ACE_Box_Ammo";
+			class CustomAttributes
+			{
+				class Attribute0
+				{
+					property="ace_arsenal_attribute";
+					expression="if (!is3DEN) then {[_this, +_value] call ace_arsenal_fnc_attributeInit}";
+					class Value
+					{
+						class data
+						{
+							singleType="ARRAY";
+							class value
+							{
+								items=2;
+								class Item0
+								{
+									class data
+									{
+										singleType="ARRAY";
+									};
+								};
+								class Item1
+								{
+									class data
+									{
+										singleType="SCALAR";
+										value=0;
+									};
+								};
+							};
+						};
+					};
+				};
+				class Attribute1
+				{
+					property="ammoBox";
+					expression="[_this,_value] call bis_fnc_initAmmoBox;";
+					class Value
+					{
+						class data
+						{
+							singleType="STRING";
+							value="[[[[""hgun_Pistol_heavy_01_green_snds_F""],[1]],[[""11Rnd_45ACP_Mag""],[2]],[[],[]],[[],[]]],false]";
+						};
+					};
+				};
+				nAttributes=2;
+			};
+		};
+		class Item2
+		{
+			dataType="Group";
+			side="Civilian";
+			class Entities
+			{
+				items=1;
+				class Item0
+				{
+					dataType="Object";
+					class PositionInfo
+					{
+						position[]={15.877691,5.0014391,-20.87595};
+					};
+					side="Civilian";
+					flags=7;
+					class Attributes
+					{
+						isPlayer=1;
+						class Inventory
+						{
+							class uniform
+							{
+								typeName="gm_ge_uniform_soldier_rolled_90_flk";
+								isBackpack=0;
+							};
+							map="ItemMap";
+							compass="ItemCompass";
+							watch="ItemWatch";
+						};
+					};
+					id=199;
+					type="C_man_polo_1_F";
+				};
+			};
+			class Attributes
+			{
+			};
+			id=198;
+		};
+		class Item3
+		{
+			dataType="Object";
+			class PositionInfo
+			{
+				position[]={5,6.5695963,-27.110023};
+			};
+			side="Empty";
+			flags=4;
+			class Attributes
+			{
+			};
+			id=200;
+			type="C_Offroad_02_unarmed_F";
+			class CustomAttributes
+			{
+				class Attribute0
+				{
+					property="ammoBox";
+					expression="[_this,_value] call bis_fnc_initAmmoBox;";
+					class Value
+					{
+						class data
+						{
+							singleType="STRING";
+							value="[[[[""FirstAidKit""],[6]],[[],[]],[[],[]],[[],[]]],false]";
+						};
+					};
+				};
+				nAttributes=1;
+			};
+		};
+	};
+};

From 653a2052cffbad4a79b64ada2261d59dfebb39d9 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 28 Dec 2024 20:26:32 +0100
Subject: [PATCH 014/139] Update Turbans.hpp

---
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  | 29 ++++++++++++++-----
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 92db3bc726f..51969376257 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -8,27 +8,40 @@
 class CN(01,COLOR): lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
 class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
 class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
-class CN(04,COLOR): lxWS_H_turban_04_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };\
+class CN(04,COLOR): lxWS_H_turban_04_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };
 
 #define COLORGROUP_SPECIAL(COLOR)\
 class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
-class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };\
+class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };
+
+
+lxWS_H_bmask_base // mask standalone
+
 
 // BASECLASS
 class H_Shemag_khk;
-class lxWS_H_turban_01_black : H_Shemag_khk           { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black) }; }; };
-class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black) }; }; };
-class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black) }; }; };
-class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black) }; }; };
+
+class H_turban_02_mask_black_lxws : H_Shemag_khk      { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) }; components[] = { "lxWS_H_bmask_base" }; }; };
+class lxWS_H_turban_01_black : H_Shemag_khk           { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" }; }; };
 
 // VARIATIONS
 COLORGROUP(blue)
 COLORGROUP(blue_una)
 COLORGROUP(green)
 COLORGROUP(red)
-COLORGROUP(sand)
 COLORGROUP(gray)
 COLORGROUP(yellow)
 
 // Special Variations
-COLORGROUP_SPECIAL(green_pattern)
\ No newline at end of file
+COLORGROUP_SPECIAL(green_pattern)
+
+// Super Special Manual blabla
+class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
+class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
+class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
\ No newline at end of file

From 3b7e08acd896ceccaabe447718a2c22a810f3497 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 29 Dec 2024 17:22:52 +0100
Subject: [PATCH 015/139] check for component implemented

---
 .hemtt/missions/test.VR/mission.sqm           | 13 +++----
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  |  9 ++---
 addons/wardrobe/CfgFunctions.hpp              |  7 +++-
 .../functions/action/fn_addActions.sqf        |  9 ++---
 .../action/fn_addActions_children.sqf         | 12 ++----
 .../action/fn_addActions_condition.sqf        | 11 +++++-
 .../debug/fn_getAllWardrobeItems.sqf          |  8 +---
 addons/wardrobe/functions/fn_canModifyTo.sqf  | 24 ++++++++++++
 .../functions/fn_compare_components.sqf       | 28 ++++++++++++++
 .../{fn_checkItem.sqf => fn_isModifiable.sqf} |  0
 addons/wardrobe/functions/fn_returnItem.sqf   | 22 +++++++++++
 .../getItems/fn_getItems_modifiableTo.sqf     | 20 ++++++++++
 .../getItems/fn_getItems_modifiable_all.sqf   | 38 ++++++++++++++-----
 .../fn_getItems_modifiable_current.sqf        | 38 +++++++++++++------
 .../wardrobe/functions/replace/fn_replace.sqf | 11 +++++-
 15 files changed, 193 insertions(+), 57 deletions(-)
 create mode 100644 addons/wardrobe/functions/fn_canModifyTo.sqf
 create mode 100644 addons/wardrobe/functions/fn_compare_components.sqf
 rename addons/wardrobe/functions/{fn_checkItem.sqf => fn_isModifiable.sqf} (100%)
 create mode 100644 addons/wardrobe/functions/fn_returnItem.sqf
 create mode 100644 addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf

diff --git a/.hemtt/missions/test.VR/mission.sqm b/.hemtt/missions/test.VR/mission.sqm
index 6e4cdddd9d6..0f1533140f5 100644
--- a/.hemtt/missions/test.VR/mission.sqm
+++ b/.hemtt/missions/test.VR/mission.sqm
@@ -5,17 +5,17 @@ class EditorData
 	angleGridStep=0.2617994;
 	scaleGridStep=1;
 	autoGroupingDist=10;
-	toggles=517;
+	toggles=1541;
 	class ItemIDProvider
 	{
 		nextID=202;
 	};
 	class Camera
 	{
-		pos[]={10.292682,7.7905149,-9.2390032};
-		dir[]={0.76574892,-0.31659395,-0.55981857};
-		up[]={0.2555781,0.94856107,-0.18684632};
-		aside[]={-0.59017646,0,-0.8072741};
+		pos[]={3.673414,13.197466,-29.890484};
+		dir[]={0.56360948,-0.37021363,0.73846245};
+		up[]={0.22461432,0.92893893,0.29429838};
+		aside[]={0.79494452,-8.312054e-08,-0.60671729};
 	};
 };
 binarizationWanted=0;
@@ -72,9 +72,6 @@ class ScenarioData
 {
 	author="Overlord Zorn";
 };
-class CustomAttributes
-{
-};
 class Mission
 {
 	class Intel
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 51969376257..8b6fcc4a237 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -10,14 +10,12 @@ class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardro
 class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
 class CN(04,COLOR): lxWS_H_turban_04_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };
 
+
 #define COLORGROUP_SPECIAL(COLOR)\
 class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
 class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };
 
 
-lxWS_H_bmask_base // mask standalone
-
-
 // BASECLASS
 class H_Shemag_khk;
 
@@ -38,9 +36,10 @@ COLORGROUP(yellow)
 // Special Variations
 COLORGROUP_SPECIAL(green_pattern)
 
+
 // Super Special Manual blabla
-class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
-class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
+class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
+class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
 class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
 class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
 class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index c2ff20159e9..8ef9795d614 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -9,7 +9,10 @@ class CfgFunctions
             class postInit { postInit = 1; };
 
             class clearOnClose {};
-            class checkItem {};
+            class isModifiable {};
+
+            class compare_components {};
+            class canModifyTo {};
         };
 
         class ace_intel
@@ -27,6 +30,8 @@ class CfgFunctions
             class getItems_modifiable_all {};
             class getItems_modifiable_current {};
             
+            class getItems_modifiableTo {};
+            
         };
 
         class replace
diff --git a/addons/wardrobe/functions/action/fn_addActions.sqf b/addons/wardrobe/functions/action/fn_addActions.sqf
index c3fc715aa8c..acbb88fbc0d 100644
--- a/addons/wardrobe/functions/action/fn_addActions.sqf
+++ b/addons/wardrobe/functions/action/fn_addActions.sqf
@@ -20,17 +20,16 @@ params ["_unit"];
 
 
 private _modifiableItems = [_unit] call FUNC(getItems_modifiable_current);
-diag_log format ['[CVO](debug)(fn_addActions) _modifiableItems: %1', _modifiableItems];
 private _actions = [];
-
 {
-    private _params = [_x];
-    private _cfg = [_x] call CBA_fnc_getItemConfig;
+    private _cfg = _x#0;
+    private _className = configName _cfg;
+    private _params = [_cfg, _x#1];
 
     diag_log format ['[CVO](debug)(fn_addActions) _cfg: %1', _cfg];
 
     private _aceAction = [
-        _x                                      // * 0: Action name <STRING>
+        _className                              // * 0: Action name <STRING>
         ,getText (_cfg >> "displayName")        //  * 1: Name of the action shown in the menu <STRING>
         ,getText (_cfg >> "picture")            //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
         ,{}                                     //  * 3: Statement <CODE>
diff --git a/addons/wardrobe/functions/action/fn_addActions_children.sqf b/addons/wardrobe/functions/action/fn_addActions_children.sqf
index 7bc4e5810b6..dbdb100f81a 100644
--- a/addons/wardrobe/functions/action/fn_addActions_children.sqf
+++ b/addons/wardrobe/functions/action/fn_addActions_children.sqf
@@ -16,23 +16,19 @@
 */
 
 params ["_target", "_player", "_actionParams"];
+_actionParams params ["_cfg_origin", "_newItems"];
 
-_actionParams params ["_modifiableItem"];
-
-private _cfg_origin = [_modifiableItem] call CBA_fnc_getItemConfig;
-
-private _newItems = [_cfg_origin >> QPVAR(wardrobe) >> "modifiableTo"] call BIS_fnc_getCfgDataArray;
 
 private _actions = [];
 
 {
-    private _targetItem = _x;
-    private _cfg_target = [_targetItem] call CBA_fnc_getItemConfig;
+    private _cfg_target = _x;
+    private _className_target = configName _cfg_target;
 
     private _params = [_cfg_origin, _cfg_target];
 
     private _aceAction = [
-        _targetItem                             //  * 0: Action name <STRING>
+        _className_target                           //  * 0: Action name <STRING>
         ,[_cfg_target] call FUNC(getAction_Name)    //  * 1: Name of the action shown in the menu <STRING>
         ,[_cfg_target] call FUNC(getAction_Icon)    //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
         ,FUNC(replace)                          //  * 3: Statement <CODE>
diff --git a/addons/wardrobe/functions/action/fn_addActions_condition.sqf b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
index 18b47ef6a46..d522e6f1a4a 100644
--- a/addons/wardrobe/functions/action/fn_addActions_condition.sqf
+++ b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
@@ -17,4 +17,13 @@
 
 params ["_player"];
 
-missionNamespace getVariable [QSET(enable), false] && { count ([_player] call FUNC(getItems_modifiable_current)) > 0 }
\ No newline at end of file
+missionNamespace getVariable [QSET(enable), false]
+&&
+{ 
+    count ([_player] call FUNC(getItems_modifiable_current)) > 0
+}
+
+
+// 1. Check if the player has items that can be modified
+// 2. Get the target classnames and check if they are available.
+// 
\ No newline at end of file
diff --git a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
index acf4e848b52..5fa1c7e69a1 100644
--- a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
@@ -15,10 +15,4 @@
 * Public: No
 */
 
-[
-    "allWardrobeItems",
-    {
-        ["CfgWeapons"] apply { ( Q([_x] call FUNC(checkItem)) configClasses (configFile >> _x) ) apply { configName _x } }
-    }
-] call FUNC(cache_get);
-
+["CfgWeapons"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } }
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_canModifyTo.sqf b/addons/wardrobe/functions/fn_canModifyTo.sqf
new file mode 100644
index 00000000000..2580eace2ef
--- /dev/null
+++ b/addons/wardrobe/functions/fn_canModifyTo.sqf
@@ -0,0 +1,24 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* Check if the unit can modify from current to target. Checks and compares components.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_unit", "_cfg_origin", "_cfg_target"];
+
+[_cfg_origin, _cfg_target] call FUNC(compare_components) params ["_missing", "_surplus"];
+
+private _currentItems = [_unit] call FUNC(getItems_all);
+
+count ( _missing select { ! (_x in _currentItems) } ) == 0
diff --git a/addons/wardrobe/functions/fn_compare_components.sqf b/addons/wardrobe/functions/fn_compare_components.sqf
new file mode 100644
index 00000000000..a2acbb4a7df
--- /dev/null
+++ b/addons/wardrobe/functions/fn_compare_components.sqf
@@ -0,0 +1,28 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to compare the components of the current and target wearables.
+*
+* Arguments:
+*
+* Return Value:
+* Nested Array - [[missing components], [surplus components]]
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_cfg_origin", "_cfg_tgt"];
+
+private _current = getArray (_cfg_origin >> QPVAR(wardrobe) >> "components");
+private _needed  = getArray (_cfg_tgt    >> QPVAR(wardrobe) >> "components");
+
+private _missing = []; 
+
+{ if (_x in _current) then { _current = _current - [_x] } else { _missing pushBack _x }; } forEach _needed;
+
+//[[missing components], [surplus components]]
+[_missing, _current]
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_checkItem.sqf b/addons/wardrobe/functions/fn_isModifiable.sqf
similarity index 100%
rename from addons/wardrobe/functions/fn_checkItem.sqf
rename to addons/wardrobe/functions/fn_isModifiable.sqf
diff --git a/addons/wardrobe/functions/fn_returnItem.sqf b/addons/wardrobe/functions/fn_returnItem.sqf
new file mode 100644
index 00000000000..e44b0eb299e
--- /dev/null
+++ b/addons/wardrobe/functions/fn_returnItem.sqf
@@ -0,0 +1,22 @@
+#include "../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to return an component to the player.
+*
+* Arguments:
+*
+* Return Value:
+* boolean - was it successful?
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_unit", "_itemClassName"];
+
+if !(_unit canAdd _itemClassName) exitWith { false };
+_unit addItem _itemClassName;
+true
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf
new file mode 100644
index 00000000000..388520c6835
--- /dev/null
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf
@@ -0,0 +1,20 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to return an array the config of desired target items. Also checks if those items exist: CBA_fnc_getItemConfig returns configNull when item not found.
+*
+* Arguments:
+*
+* Return Value:
+* Array of Configs - Available Target configs
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_cfg_current"];
+
+[_cfg_current >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray apply { [_x] call CBA_fnc_getItemConfig } select { !isNull _x }
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
index b8427d635ea..cd1afe40d5e 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
@@ -15,21 +15,39 @@
 * Public: No
 */
 
-
 params [
-    ["_player",   objNull,    [objNull]]
+    ["_unit",   objNull,    [objNull]]
 ];
 
+
+private _code = {
+
+    [_unit] call FUNC(getItems_all)
+    apply
+    { [_x] call CBA_fnc_getItemConfig }
+    select
+    { [_x] call FUNC(isModifiable) }
+    apply
+    { [_x, [_x] call FUNC(getItems_modifiableTo) ] }
+    select
+    { count (_x#1) > 0 }
+    apply
+    {
+        private _origin_cfg = _x#0;
+        [
+            _origin_cfg,
+            _x#1 select { [_unit, _origin_cfg, _x] call FUNC(canModifyTo) }
+        ]
+    }
+    select
+    { count (_x#1) > 0 }
+};
+
+
+
 // Cleanup Cache once the interaction menu is closed
 ["items_modifiable_all"] call FUNC(clearOnClose);
 [
     "items_modifiable_all",
-    {
-        private _array = [];
-        {
-            private _cfg = [_x] call CBA_fnc_getItemConfig;
-            if ( [_cfg] call FUNC(checkItem) && { count ([_cfg >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray) > 0 } )  then { _array pushBack _x; };
-        } forEach ( [_player] call FUNC(getItems_all) );
-        _array
-    }
+    _code
 ] call FUNC(cache_get);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
index b3929b2be0a..66c71273f46 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
@@ -15,22 +15,38 @@
 * Public: No
 */
 
-
 params [
-    ["_player",   objNull,    [objNull]]
+    ["_unit",   objNull,    [objNull]]
 ];
 
+
+private _code = {
+
+    ( [headgear _unit, goggles _unit, uniform _unit, vest _unit, backpack _unit] - [""] )
+    apply
+    { [_x] call CBA_fnc_getItemConfig }
+    select
+    { [_x] call FUNC(isModifiable) }
+    apply
+    { [_x, [_x] call FUNC(getItems_modifiableTo) ] }
+    select
+    { count (_x#1) > 0 }
+    apply
+    {
+        private _origin_cfg = _x#0;
+        [
+            _origin_cfg,
+            _x#1 select { [_unit, _origin_cfg, _x] call FUNC(canModifyTo) }
+        ]
+    }
+    select
+    { count (_x#1) > 0 }
+};
+    
+
 // Cleanup Cache once the interaction menu is closed
 ["items_modifiable_current"] call FUNC(clearOnClose);
 [
     "items_modifiable_current",
-    {
-        private _array = [];
-        {
-            private _cfg = [_x] call CBA_fnc_getItemConfig;
-            if ( [_cfg] call FUNC(checkItem) && { count ([_cfg >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray) > 0 } )  then { _array pushBack _x; };
-
-        } forEach ( [headgear _player, goggles _player, uniform _player, vest _player, backpack _player] - [""] );
-        _array
-    }
+    _code
 ] call FUNC(cache_get);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 5772d1f6bb8..4e8adcdf6bd 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -25,6 +25,10 @@ _actionParams params ["_cfg_origin", "_cfg_tgt"];
 
 private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
 
+// Remove / Add Missing/Surplus Items.
+[_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
+systemChat format ["%1 - %2", _missing, _surplus];
+
 private _additionalParams = "";
 
 private _replaceCode = switch ( _typeNumber ) do {
@@ -60,6 +64,9 @@ if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString
 private _params_notify = [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ];
 private _params_replace = [_player, _cfg_origin, _cfg_tgt, _additionalParams ];
 
+
+// Im considering removing the progressbar tbh. just causes alot of issues without a real need for it.
+
 if ( _duration > 1 ) then {
 
     [
@@ -76,11 +83,13 @@ if ( _duration > 1 ) then {
         }
         // * 3: On Failure: Code called or STRING raised as event. <CODE, STRING>
         ,{}   
-        ,""                     // * 4: Localized Title <STRING> (default: "")
+        ,""                                                                 // * 4: Localized Title <STRING> (default: "")
     ] call ace_common_fnc_progressBar;
 
 } else {
+
     [ _replaceCode,        _params_replace,  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
     [ CBA_fnc_notify,      _params_notify,   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
     if (_params_soundEnd isNotEqualTo false) then { [ CBA_fnc_globalEvent, _params_soundEnd, _duration * 1.0 ] call CBA_fnc_waitAndExecute; };
+
 };
\ No newline at end of file

From d8d03905d5ec22dc18945c9c3b40ca6bd3c8de3f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 29 Dec 2024 19:33:11 +0100
Subject: [PATCH 016/139] components fully supported

---
 addons/wardrobe/functions/fn_returnItem.sqf   | 22 ------
 .../wardrobe/functions/replace/fn_replace.sqf | 71 +++++--------------
 2 files changed, 16 insertions(+), 77 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fn_returnItem.sqf

diff --git a/addons/wardrobe/functions/fn_returnItem.sqf b/addons/wardrobe/functions/fn_returnItem.sqf
deleted file mode 100644
index e44b0eb299e..00000000000
--- a/addons/wardrobe/functions/fn_returnItem.sqf
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "../script_component.hpp"
-
-/*
-* Author: Zorn
-* Function to return an component to the player.
-*
-* Arguments:
-*
-* Return Value:
-* boolean - was it successful?
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
-
-params ["_unit", "_itemClassName"];
-
-if !(_unit canAdd _itemClassName) exitWith { false };
-_unit addItem _itemClassName;
-true
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 4e8adcdf6bd..c17a0cbc70c 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -15,81 +15,42 @@
 * Public: No
 */
 
-#define DISTANCE 50
-
-params ["_target", "_player", "_actionParams"];
+params ["_target", "_unit", "_actionParams"];
 _actionParams params ["_cfg_origin", "_cfg_tgt"];
 
+// Duration of the "animation"
+private _duration = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
+
+// Animation/Gestures
+[ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
 
-[ _player, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
 
-private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
 
 // Remove / Add Missing/Surplus Items.
 [_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
-systemChat format ["%1 - %2", _missing, _surplus];
+{ [_unit, _x, true] call CBA_fnc_addItem; } forEach _surplus;
+{ [_unit, _x] call CBA_fnc_removeItem;    } forEach _missing;
+if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
 
+// Replace the Main Item.
 private _additionalParams = "";
-
-private _replaceCode = switch ( _typeNumber ) do {
+private _replaceCode = switch ( getNumber (_cfg_origin >> "ItemInfo" >> "type") ) do {
     case TYPE_GOGGLE:   {                                 FUNC(replace_facewear) };
     case TYPE_HEADGEAR: {                                 FUNC(replace_headgear) };
     case TYPE_UNIFORM:  { _additionalParams = "UNIFORM";  FUNC(replace_uniform)  };
     case TYPE_VEST:     { _additionalParams = "VEST";     FUNC(replace_uniform)  };
     case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_uniform)  };
 };
+[ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
+
 
-private _duration     = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
 // Plays Random Sound At the Beginning
-private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
 private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
+private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
 
-private _params_soundEnd = false;
-
-if (_sound != "") then {
-    if  (_sound_timing < 1) then {
-        [
-            CBA_fnc_globalEvent ,
-            [QGVAR(EH_say3d), [_player, _sound]],
-            _sound_timing * _duration
-        ] call CBA_fnc_waitAndExecute;
-    } else {
-        _params_soundEnd = [ QGVAR(EH_say3d), [ _player, _sound] ];
-    };
-};
-
+// Notification
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
+[ CBA_fnc_notify,      [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ],   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
 
-private _params_notify = [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ];
-private _params_replace = [_player, _cfg_origin, _cfg_tgt, _additionalParams ];
-
-
-// Im considering removing the progressbar tbh. just causes alot of issues without a real need for it.
-
-if ( _duration > 1 ) then {
-
-    [
-        _duration                                                           // * 0: Total Time (in game "time" seconds) <NUMBER>
-        ,[_replaceCode, _params_replace, _params_soundEnd, _params_notify]  // * 1: Arguments, passed to condition, fail and finish <ARRAY>
-        // * 2: On Finish: Code called or STRING raised as event. <CODE, STRING>
-        ,{
-            params ["_args", "_elapsedTime", "_totalTime", "_errorCode"];
-            _args params ["_replaceCode", "_params_replace", "_params_soundEnd", "_params_notify"];
-
-            _params_replace call _replaceCode;
-            _params_notify call CBA_fnc_notify;
-            if (_params_soundEnd isNotEqualTo false) then { _params_soundEnd call CBA_fnc_globalEvent; };
-        }
-        // * 3: On Failure: Code called or STRING raised as event. <CODE, STRING>
-        ,{}   
-        ,""                                                                 // * 4: Localized Title <STRING> (default: "")
-    ] call ace_common_fnc_progressBar;
-
-} else {
-
-    [ _replaceCode,        _params_replace,  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
-    [ CBA_fnc_notify,      _params_notify,   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
-    if (_params_soundEnd isNotEqualTo false) then { [ CBA_fnc_globalEvent, _params_soundEnd, _duration * 1.0 ] call CBA_fnc_waitAndExecute; };
 
-};
\ No newline at end of file

From 2cdbd7bb58249801e8e1e0b38e71052fbf6b86e9 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 29 Dec 2024 23:18:29 +0100
Subject: [PATCH 017/139] wip contextmenu

---
 addons/wardrobe/XEH/XEH_preInit.sqf           |  20 ++-
 .../action/fn_addActions_condition.sqf        |   2 +-
 .../contextMenu/fn_enable_contextMenu.sqf     | 123 ++++++++++++++++++
 addons/wardrobe/stringtable.xml               |  22 +++-
 4 files changed, 156 insertions(+), 11 deletions(-)
 create mode 100644 addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf

diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH/XEH_preInit.sqf
index 8e8bcd2b3e1..b5114ea8e5f 100644
--- a/addons/wardrobe/XEH/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH/XEH_preInit.sqf
@@ -7,7 +7,7 @@ here, you put in your CBA Settings so they are available in the editor!
 https://github.com/CBATeam/CBA_A3/wiki/CBA-Settings-System#create-a-custom-setting-for-mission-or-mod
 
 MACROS Used:
-SETLSTRING(test) -> [LSTRING(set_test), LSTRING(set_test_desc)]
+SETLSTRING(test) -> [LSTRING(set_test), LSTRING(set_test_desc)] -> STR_prefix_component_set_test // STR_prefix_component_set_test_desc
 SET(test) -> ADDON_set_test
 QSET(test) -> "ADDON_set_test"
 */
@@ -27,9 +27,9 @@ QSET(test) -> "ADDON_set_test"
 */
 
 [
-    QSET(enable),                               //    _setting     - Unique setting name. Matches resulting variable name <STRING>
+    QSET(enable_action),                        //    _setting     - Unique setting name. Matches resulting variable name <STRING>
     "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
-    SETLSTRING(enable),
+    SETLSTRING(enable_action),
                                                 //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
     [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
     true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
@@ -37,3 +37,17 @@ QSET(test) -> "ADDON_set_test"
     {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
     false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
 ] call CBA_fnc_addSetting;
+
+/* - I dont think there's going to be a way to make this work propperly.
+[
+    QSET(enable_contextMenu),                   //    _setting     - Unique setting name. Matches resulting variable name <STRING>
+    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+    SETLSTRING(enable_contextMenu),
+                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
+    [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
+    true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
+    1,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
+    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
+    true                                        //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+] call CBA_fnc_addSetting;
+*/
\ No newline at end of file
diff --git a/addons/wardrobe/functions/action/fn_addActions_condition.sqf b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
index d522e6f1a4a..36d8a7996d1 100644
--- a/addons/wardrobe/functions/action/fn_addActions_condition.sqf
+++ b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
@@ -17,7 +17,7 @@
 
 params ["_player"];
 
-missionNamespace getVariable [QSET(enable), false]
+missionNamespace getVariable [QSET(enable_action), false]
 &&
 { 
     count ([_player] call FUNC(getItems_modifiable_current)) > 0
diff --git a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
new file mode 100644
index 00000000000..4374d3f8d93
--- /dev/null
+++ b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
@@ -0,0 +1,123 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to activate the Wardrobe related CBA Context Menu Options
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+params ["_enable", true, [true]];
+
+
+if (missionNamespace getVariable [QGVAR(contextmenu_enabled), false]) then {
+    missionNamespace setVariable [QGVAR(contextmenu_enabled), true];
+
+
+};
+
+
+/*
+Description:
+    Adds context menu option to inventory display.
+
+Parameters:
+    _item                   - Item classname <STRING>
+                              Can be base class.
+
+                              Can be item type as reported by BIS_fnc_itemType:
+                                ["Equipment","Headgear"]
+                                ->
+                                "#Equipment" and/or "##Headgear"
+
+                              Wildcard:
+                                #All
+
+    _slots                  - Relevant slots <ARRAY, STRING>
+                              Values:
+                                    CLOTHES
+                                        UNIFORM
+                                        VEST
+                                        BACKPACK
+                                        HEADGEAR
+                                        GOGGLES
+
+    _displayName            String keys are automatically translated. <STRING, ARRAY>
+        0: _displayName     - Option display name <STRING>
+        1: _tooltip         - Option tooltip <STRING>
+
+    _color                  - Option text color. Default alpha is 1.
+                              (default: [] = default color) <ARRAY>
+
+    _icon                   - Path to icon. (default: "" = no icon) <STRING>
+
+    _condition              <CODE, ARRAY>
+        0: _conditionEnable - Menu option is enabled and executed only if this
+                              condition reports 'true' (default: {true}) <CODE>
+        1: _conditionShow   - Menu option is shown only if this condition
+                              reports 'true'. (optional, default: {true}) <CODE>
+
+                            - Passed arguments:
+                              params ["_unit", "_container", "_item", "_slot", "_params"];
+
+    _statement              - Option statement (default: {}) <CODE>
+                              Return true to keep context menu opened.
+
+                            - Passed arguments:
+                              params ["_unit", "_container", "_item", "_slot", "_params"];
+
+    _consume                - Remove the item before executing the statement
+                              code. (default: false) <BOOLEAN>
+
+                            - This does NOT work for the following slots:
+                                GROUND
+                                CARGO
+
+    _params                 - Arguments passed as '_this select 4' to condition and
+                              statement (optional, default: []) <ANY>
+
+Returns:
+    Nothing/Undefined.
+
+Examples:
+    (begin example)
+        ["#All", "ALL", ">DEBUG ACTION<", nil, nil, {true}, {
+            params ["_unit", "_container", "_item", "_slot", "_params"];
+            systemChat str [name _unit, typeOf _container, _item, _slot, _params];
+            true
+        }, false, [0,1,2]] call CBA_fnc_addItemContextMenuOption;
+    (end)
+*/
+
+
+
+/*
+
+To make this work i would need to add a Menu Option for each individual modfifiable item AND its potential variants.
+
+The most efficient variant i can think of would be following.
+1. Event Handler for when the inventory gets open.
+2. Get Current Modifiable Items.
+3. Check if they are already established (GVAR(contextMenu_hashmap) classname, config)
+4. For every new modifiable Item, create a ContextMenuOption for each of its variant
+- could make an event handler, everytime the inventory gets opened, it scans the wearables, if they are modifiable, (and not already established) adds the option for those items
+
+*/
+
+/*
+    [
+        "#ALL",
+        "CLOTHES",
+    ] call CBA_fnc_addItemContextMenuOption;
+
+
+*/
\ No newline at end of file
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 92822bb6a0d..c7d598c0c33 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -9,13 +9,21 @@
             </Key>
         </Container>
         <Container name="CBA_Settings">
-            <Key ID="STR_ace_wardrobe_set_enable">
-                <Original>Enable</Original>
-                <English>Enable</English>
-                <German>Aktivieren</German>
+            <Key ID="STR_ace_wardrobe_set_enable_action">
+                <Original>Enable ACE Interaction</Original>
+                <English>Enable ACE Interaction</English>
+                <German>Aktivieren ACE Interaction</German>
             </Key>
-            <Key ID="STR_ace_wardrobe_set_enable_desc">
-                <English>When Enabled, will let the player use the Wardrobe actions.</English>
+            <Key ID="STR_ace_wardrobe_set_enable_action_desc">
+                <English>When Enabled, will let the player use the Wardrobe related Ace Interactions.</English>
+            </Key>
+            <Key ID="STR_ace_wardrobe_set_enable_contexMenu">
+                <Original>Enable CBA Context Menu</Original>
+                <English>Enable </English>
+                <German>Aktiviere CBA Context Menu</German>
+            </Key>
+            <Key ID="STR_ace_wardrobe_set_enable_contexMenu_desc">
+                <English>When Enabled, will let the player use the Wardrobe related CBA Context Menu Options.&lt;br/&gt;Can be enabled at any time, but requires restart to disable. </English>
             </Key>
         </Container>
         <Container name="Action">
@@ -58,4 +66,4 @@
             </Key>
         </Container>
     </Package>
-</Project>
+</Project>
\ No newline at end of file

From a4456cd943ae27ec97b35e24a98eb66cc2683fa0 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 30 Dec 2024 13:12:38 +0100
Subject: [PATCH 018/139] fix sound

---
 addons/wardrobe/functions/replace/fn_replace.sqf | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index c17a0cbc70c..4eb39fa441a 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -25,12 +25,11 @@ private _duration = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
 [ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
 
 
-
 // Remove / Add Missing/Surplus Items.
 [_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
 { [_unit, _x, true] call CBA_fnc_addItem; } forEach _surplus;
 { [_unit, _x] call CBA_fnc_removeItem;    } forEach _missing;
-if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
+
 
 // Replace the Main Item.
 private _additionalParams = "";
@@ -47,6 +46,8 @@ private _replaceCode = switch ( getNumber (_cfg_origin >> "ItemInfo" >> "type")
 // Plays Random Sound At the Beginning
 private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
 private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
+if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
+
 
 // Notification
 private _notify_img = getText (_cfg_tgt >> "picture");

From 969051d77e80196245ae5904dbbfbf6ed6cb8f94 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 30 Dec 2024 13:13:03 +0100
Subject: [PATCH 019/139] added sounds

---
 addons/wardrobe/Baseclass.hpp            |   9 ++++++---
 addons/wardrobe/CfgSounds.hpp            |  22 ++++++++++++++++++++++
 addons/wardrobe/config.cpp               |   2 ++
 addons/wardrobe/data/attribution.md      |  12 ++++++++++++
 addons/wardrobe/data/fabric_06.ogg       | Bin 0 -> 35534 bytes
 addons/wardrobe/data/fabric_07.ogg       | Bin 0 -> 38708 bytes
 addons/wardrobe/data/fabric_16.ogg       | Bin 0 -> 82265 bytes
 addons/wardrobe/data/fabric_20.ogg       | Bin 0 -> 103913 bytes
 addons/wardrobe/data/fabric_25.ogg       | Bin 0 -> 128550 bytes
 addons/wardrobe/data/helmet_visor_05.ogg | Bin 0 -> 29143 bytes
 10 files changed, 42 insertions(+), 3 deletions(-)
 create mode 100644 addons/wardrobe/CfgSounds.hpp
 create mode 100644 addons/wardrobe/data/attribution.md
 create mode 100644 addons/wardrobe/data/fabric_06.ogg
 create mode 100644 addons/wardrobe/data/fabric_07.ogg
 create mode 100644 addons/wardrobe/data/fabric_16.ogg
 create mode 100644 addons/wardrobe/data/fabric_20.ogg
 create mode 100644 addons/wardrobe/data/fabric_25.ogg
 create mode 100644 addons/wardrobe/data/helmet_visor_05.ogg

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 9de6f596783..bc8dba5dd6c 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,3 +1,5 @@
+
+
 class GVAR(base) 
 {
     modifiableTo[] = {""};
@@ -7,7 +9,8 @@ class GVAR(base)
     components[] = {};
 
     // Supports Multiple Sounds, will pick one by random.
-    sound[] = {"click"}; // I need a better default Sound
+    #define SOUND(base,dur) Q(TRIPLES(ADDON,base,dur))
+    sound[] = {SOUND(fabric,06),SOUND(fabric,07),SOUND(fabric,16),SOUND(fabric,20),SOUND(fabric,25)};
     sound_timing = 0;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
 
     // Gesture
@@ -35,5 +38,5 @@ class GVAR(base_U_jacket_closed) : GVAR(base) { alternativeDisplayName = CSTRING
 
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
-class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {"click"}; sound_timing = 1; alternativeDisplayName = CSTRING(visorUp); };
-class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {"click"}; sound_timing = 1; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
+class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.5; gesture ="gestureNod"; sound[] = {SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorUp); };
+class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.5; gesture ="gestureNod"; sound[] = {SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
new file mode 100644
index 00000000000..d66fcd44e2a
--- /dev/null
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -0,0 +1,22 @@
+#define SOUND(var1,dur)\
+class GVAR(DOUBLES(var1,dur))\
+{\
+    name = Q(var1 dur);\
+    sound[] = { QPATHTOF(data\DOUBLES(var1,dur)##.ogg), 1, 1, 100 };\
+    titles[] = { 0, "" };\
+    forceTitles = 0;\
+    titlesStructured = 0;\
+};
+
+
+class CfgSounds
+{
+	sounds[] = {}; // OFP required it filled, now it can be empty or absent depending on the game's version
+    SOUND(fabric,06)
+    SOUND(fabric,07)
+    SOUND(fabric,16)
+    SOUND(fabric,20)
+    SOUND(fabric,25)
+    
+    SOUND(helmet_visor,05)
+};
\ No newline at end of file
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index 38a159cf24d..2d8e69b6998 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -31,3 +31,5 @@ class CfgWeapons
 {
     #include "compat_vanilla\Uniforms.hpp"
 };
+
+#include "CfgSounds.hpp"
diff --git a/addons/wardrobe/data/attribution.md b/addons/wardrobe/data/attribution.md
new file mode 100644
index 00000000000..ffd4622c6b6
--- /dev/null
+++ b/addons/wardrobe/data/attribution.md
@@ -0,0 +1,12 @@
+fabric_06, fabric_07, fabric_16, fabric_20, fabric_25
+Nylon Jacket or Raincoat
+by IENBA
+https://freesound.org/s/658410/
+License: Creative Commons 0
+
+helmet_visor_05
+
+Click of a Motorcycle Helmet Visor
+ by rylandbrooks
+ https://freesound.org/s/328103/
+ License: Creative Commons 0
\ No newline at end of file
diff --git a/addons/wardrobe/data/fabric_06.ogg b/addons/wardrobe/data/fabric_06.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..e83564286983024e0dd896121aeb0b571aec2a2b
GIT binary patch
literal 35534
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
YmUXp<`SQo&qHwzzNLNF;dQ=uM0D;vlU;qFB

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/fabric_07.ogg b/addons/wardrobe/data/fabric_07.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..5a26d62a9fa78648367f1fcd2bc8eb0855392a09
GIT binary patch
literal 38708
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

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/fabric_16.ogg b/addons/wardrobe/data/fabric_16.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..ce46a5e5376ee122cd513d2b94578a4337cf1704
GIT binary patch
literal 82265
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%0Axh3eDUO
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
E09nk_IsgCw

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/fabric_20.ogg b/addons/wardrobe/data/fabric_20.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..e9e43cd28cee132ed1f275fe40c7337eb568775c
GIT binary patch
literal 103913
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
V^h}Ty!bNfwNmWr)i4?SgK@l=T|3Lr%

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/fabric_25.ogg b/addons/wardrobe/data/fabric_25.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..86a251fa16b63a408a7f8941e7bd64c741727c0e
GIT binary patch
literal 128550
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
L6Qt&8!6x)S%ub%(

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/helmet_visor_05.ogg b/addons/wardrobe/data/helmet_visor_05.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..a438aaf1242389f1e2b5061eff7fa5dfb6fd934c
GIT binary patch
literal 29143
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
L%jYI1Cz1aH>+_gc

literal 0
HcmV?d00001


From 69fe0dded49124c6da20d86a8b0c2f3345366e70 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 30 Dec 2024 14:57:59 +0100
Subject: [PATCH 020/139] Update addons/wardrobe/XEH/XEH_preInit.sqf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/XEH/XEH_preInit.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH/XEH_preInit.sqf
index b5114ea8e5f..e2111484ff7 100644
--- a/addons/wardrobe/XEH/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH/XEH_preInit.sqf
@@ -38,7 +38,7 @@ QSET(test) -> "ADDON_set_test"
     false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
 ] call CBA_fnc_addSetting;
 
-/* - I dont think there's going to be a way to make this work propperly.
+/* - I dont think there's going to be a way to make this work properly.
 [
     QSET(enable_contextMenu),                   //    _setting     - Unique setting name. Matches resulting variable name <STRING>
     "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>

From ad8aa112709493cc7daa3d753797a4ce13cb3367 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 30 Dec 2024 14:58:07 +0100
Subject: [PATCH 021/139] Update
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
index e9f0fae9edd..b369055d6f0 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
@@ -1,5 +1,5 @@
 The uniforms addressed in this sub-addon are the "sleeves rolled up" version of their "sleeves rolled down" counterpart.
 The problem is, that the rolled up version are both, 1 lb lighter, and can carry 1 lb less. 
 
-If we would ignore this, the player would run into situations where they would loose items by simply rolling up their sleeves.
+If we would ignore this, the player would run into situations where they would lose items by simply rolling up their sleeves.
 To counter this, I increased the maxLoad of those items by 1 lb to be aligned with their counterpart.

From 86d39b3e7c2d7ce1de25c40186a88c07416b6a60 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 30 Dec 2024 15:18:45 +0100
Subject: [PATCH 022/139] Update mission.sqm

---
 .hemtt/missions/test.VR/mission.sqm | 33 ++++++++++++++++++++++-------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/.hemtt/missions/test.VR/mission.sqm b/.hemtt/missions/test.VR/mission.sqm
index 0f1533140f5..c611feb5e8b 100644
--- a/.hemtt/missions/test.VR/mission.sqm
+++ b/.hemtt/missions/test.VR/mission.sqm
@@ -5,17 +5,17 @@ class EditorData
 	angleGridStep=0.2617994;
 	scaleGridStep=1;
 	autoGroupingDist=10;
-	toggles=1541;
+	toggles=517;
 	class ItemIDProvider
 	{
-		nextID=202;
+		nextID=203;
 	};
 	class Camera
 	{
-		pos[]={3.673414,13.197466,-29.890484};
-		dir[]={0.56360948,-0.37021363,0.73846245};
-		up[]={0.22461432,0.92893893,0.29429838};
-		aside[]={0.79494452,-8.312054e-08,-0.60671729};
+		pos[]={11.851013,13.197466,-25.312586};
+		dir[]={0.28843617,-0.51576251,0.80672157};
+		up[]={0.17364158,0.85673237,0.4856551};
+		aside[]={0.94162649,-3.1082891e-08,-0.33667031};
 	};
 };
 binarizationWanted=0;
@@ -26,7 +26,8 @@ addons[]=
 	"ace_realisticnames",
 	"ace_ballistics",
 	"A3_Characters_F",
-	"A3_Soft_F_Exp_Offroad_02"
+	"A3_Soft_F_Exp_Offroad_02",
+	"A3_Weapons_F_Ammoboxes"
 };
 class AddonsMetaData
 {
@@ -95,7 +96,7 @@ class Mission
 	};
 	class Entities
 	{
-		items=4;
+		items=5;
 		class Item0
 		{
 			dataType="Object";
@@ -247,5 +248,21 @@ class Mission
 				nAttributes=1;
 			};
 		};
+		class Item4
+		{
+			dataType="Object";
+			class PositionInfo
+			{
+				position[]={18.822828,5,-13.759856};
+				angles[]={-0,1.0776811,0};
+			};
+			side="Empty";
+			flags=4;
+			class Attributes
+			{
+			};
+			id=202;
+			type="B_AssaultPack_blk";
+		};
 	};
 };

From fc639199eeb9aaf614ebec31705ebd1716513d54 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 30 Dec 2024 15:18:56 +0100
Subject: [PATCH 023/139] macro conflict

---
 addons/wardrobe/CfgSounds.hpp | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
index d66fcd44e2a..de489c489fc 100644
--- a/addons/wardrobe/CfgSounds.hpp
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -1,8 +1,10 @@
-#define SOUND(var1,dur)\
-class GVAR(DOUBLES(var1,dur))\
+// Duration in this case is 10th of secounds. so 10 -> 1 sec, 15 -> 1.5sec, ...
+
+#define ENTRY(base,dur)\
+class GVAR(DOUBLES(base,dur))\
 {\
-    name = Q(var1 dur);\
-    sound[] = { QPATHTOF(data\DOUBLES(var1,dur)##.ogg), 1, 1, 100 };\
+    name = Q(base dur);\
+    sound[] = { QPATHTOF(data\DOUBLES(base,dur)##.ogg), 1, 1, 100 };\
     titles[] = { 0, "" };\
     forceTitles = 0;\
     titlesStructured = 0;\
@@ -12,11 +14,11 @@ class GVAR(DOUBLES(var1,dur))\
 class CfgSounds
 {
 	sounds[] = {}; // OFP required it filled, now it can be empty or absent depending on the game's version
-    SOUND(fabric,06)
-    SOUND(fabric,07)
-    SOUND(fabric,16)
-    SOUND(fabric,20)
-    SOUND(fabric,25)
-    
-    SOUND(helmet_visor,05)
+    ENTRY(fabric,06)
+    ENTRY(fabric,07)
+    ENTRY(fabric,16)
+    ENTRY(fabric,20)
+    ENTRY(fabric,25)
+
+    ENTRY(helmet_visor,05)
 };
\ No newline at end of file

From 551fe63cf3ed332792ada5d6a43731676abf4a10 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 30 Dec 2024 15:19:06 +0100
Subject: [PATCH 024/139] fine-tuning helmet sound

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

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index bc8dba5dd6c..834310e4cac 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,4 +1,4 @@
-
+#define CN_SOUND(base,dur) Q(TRIPLES(ADDON,base,dur))
 
 class GVAR(base) 
 {
@@ -9,8 +9,7 @@ class GVAR(base)
     components[] = {};
 
     // Supports Multiple Sounds, will pick one by random.
-    #define SOUND(base,dur) Q(TRIPLES(ADDON,base,dur))
-    sound[] = {SOUND(fabric,06),SOUND(fabric,07),SOUND(fabric,16),SOUND(fabric,20),SOUND(fabric,25)};
+    sound[] = {CN_SOUND(fabric,06),CN_SOUND(fabric,07),CN_SOUND(fabric,16),CN_SOUND(fabric,20),CN_SOUND(fabric,25)};
     sound_timing = 0;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
 
     // Gesture
@@ -38,5 +37,5 @@ class GVAR(base_U_jacket_closed) : GVAR(base) { alternativeDisplayName = CSTRING
 
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
-class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.5; gesture ="gestureNod"; sound[] = {SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorUp); };
-class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.5; gesture ="gestureNod"; sound[] = {SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
+class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {CN_SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorUp); };
+class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {CN_SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file

From db2f6057f3da0c81b90eb32d7f9bf2b0cf6adb85 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Tue, 31 Dec 2024 14:29:35 +0100
Subject: [PATCH 025/139] wip

---
 addons/wardrobe/CfgFunctions.hpp              |   4 +-
 .../fn_clearOnClosed_InteractionMenu.sqf}     |   2 +-
 .../cache/fn_clearOnClosed_Inventory.sqf      |  35 ++++++
 .../contextMenu/fn_CM_nextvariant.sqf         | 114 ++++++++++++++++++
 .../contextMenu/fn_do_nextVariant.sqf         |  32 +++++
 .../contextMenu/fn_enable_contextMenu.sqf     |  99 +--------------
 .../contextMenu/fn_getNextVariant.sqf         |  46 +++++++
 .../functions/getItems/fn_getItems_all.sqf    |   2 +-
 .../getItems/fn_getItems_modifiable_all.sqf   |   2 +-
 .../fn_getItems_modifiable_current.sqf        |   2 +-
 10 files changed, 235 insertions(+), 103 deletions(-)
 rename addons/wardrobe/functions/{fn_clearOnClose.sqf => cache/fn_clearOnClosed_InteractionMenu.sqf} (96%)
 create mode 100644 addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf
 create mode 100644 addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf
 create mode 100644 addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
 create mode 100644 addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf

diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index 8ef9795d614..18197b2919b 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -8,7 +8,6 @@ class CfgFunctions
 
             class postInit { postInit = 1; };
 
-            class clearOnClose {};
             class isModifiable {};
 
             class compare_components {};
@@ -66,6 +65,9 @@ class CfgFunctions
             class cache_set {};
 
             class cache_clear {};
+
+            class clearOnClosed_InteractionMenu {};
+            class clearOnClosed_Inventory {};
         };
 
         class config
diff --git a/addons/wardrobe/functions/fn_clearOnClose.sqf b/addons/wardrobe/functions/cache/fn_clearOnClosed_InteractionMenu.sqf
similarity index 96%
rename from addons/wardrobe/functions/fn_clearOnClose.sqf
rename to addons/wardrobe/functions/cache/fn_clearOnClosed_InteractionMenu.sqf
index 6b4669d93f6..a2aecfb5741 100644
--- a/addons/wardrobe/functions/fn_clearOnClose.sqf
+++ b/addons/wardrobe/functions/cache/fn_clearOnClosed_InteractionMenu.sqf
@@ -1,4 +1,4 @@
-#include "../script_component.hpp"
+#include "../../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf
new file mode 100644
index 00000000000..6ff42a9bfc8
--- /dev/null
+++ b/addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf
@@ -0,0 +1,35 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to request the clearing of the cache on closing of the menu
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+// Cleanup Cache once the inventory is closed
+
+params [ ["_key", "", [""]] ];
+
+private _queue = missionNamespace getVariable [QGVAR(inventory_clear_queue), "404"];
+
+if (_queue isEqualTo "404") then {
+    
+    _queue = [];
+
+    player addEventHandler ["InventoryClosed", {
+        { [_x] call FUNC(cache_clear) } forEach ( missionNamespace getVariable [QGVAR(inventory_clear_queue), [] ] );
+        missionNamespace setVariable [QGVAR(inventory_clear_queue), nil ];
+        player removeEventHandler [_thisEvent, _thisEventhandler];
+    }];
+    missionNamespace setVariable [QGVAR(inventory_clear_queue), _queue];
+};
+
+_queue pushBackUnique _key;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf b/addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf
new file mode 100644
index 00000000000..23486546b35
--- /dev/null
+++ b/addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf
@@ -0,0 +1,114 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to create the CM Option to switch to the "next" Variant of the current Version.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+
+/*
+Description:
+    Adds context menu option to inventory display.
+
+Parameters:
+    _item                   - Item classname <STRING>
+                              Can be base class.
+
+                              Can be item type as reported by BIS_fnc_itemType:
+                                ["Equipment","Headgear"]
+                                ->
+                                "#Equipment" and/or "##Headgear"
+
+                              Wildcard:
+                                #All
+
+    _slots                  - Relevant slots <ARRAY, STRING>
+                              Values:
+                                    CLOTHES
+                                        UNIFORM
+                                        VEST
+                                        BACKPACK
+                                        HEADGEAR
+                                        GOGGLES
+
+    _displayName            String keys are automatically translated. <STRING, ARRAY>
+        0: _displayName     - Option display name <STRING>
+        1: _tooltip         - Option tooltip <STRING>
+
+    _color                  - Option text color. Default alpha is 1.
+                              (default: [] = default color) <ARRAY>
+
+    _icon                   - Path to icon. (default: "" = no icon) <STRING>
+
+    _condition              <CODE, ARRAY>
+        0: _conditionEnable - Menu option is enabled and executed only if this
+                              condition reports 'true' (default: {true}) <CODE>
+        1: _conditionShow   - Menu option is shown only if this condition
+                              reports 'true'. (optional, default: {true}) <CODE>
+
+                            - Passed arguments:
+                              params ["_unit", "_container", "_item", "_slot", "_params"];
+
+    _statement              - Option statement (default: {}) <CODE>
+                              Return true to keep context menu opened.
+
+                            - Passed arguments:
+                              params ["_unit", "_container", "_item", "_slot", "_params"];
+
+    _consume                - Remove the item before executing the statement
+                              code. (default: false) <BOOLEAN>
+
+                            - This does NOT work for the following slots:
+                                GROUND
+                                CARGO
+
+    _params                 - Arguments passed as '_this select 4' to condition and
+                              statement (optional, default: []) <ANY>
+
+Returns:
+    Nothing/Undefined.
+
+Examples:
+    (begin example)
+        ["#All", "ALL", ">DEBUG ACTION<", nil, nil, {true}, {
+            params ["_unit", "_container", "_item", "_slot", "_params"];
+            systemChat str [name _unit, typeOf _container, _item, _slot, _params];
+            true
+        }, false, [0,1,2]] call CBA_fnc_addItemContextMenuOption;
+    (end)
+*/
+
+
+
+/*
+
+To make this work i would need to add a Menu Option for each individual modfifiable item AND its potential variants.
+
+The most efficient variant i can think of would be following.
+1. Event Handler for when the inventory gets open.
+2. Get Current Modifiable Items.
+3. Check if they are already established (GVAR(contextMenu_hashmap) classname, config)
+4. For every new modifiable Item, create a ContextMenuOption for each of its variant
+- could make an event handler, everytime the inventory gets opened, it scans the wearables, if they are modifiable, (and not already established) adds the option for those items
+
+*/
+
+/*
+    [
+        "#ALL",
+        "CLOTHES",
+    ] call CBA_fnc_addItemContextMenuOption;
+
+
+*/
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
new file mode 100644
index 00000000000..5dfc75a57e8
--- /dev/null
+++ b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
@@ -0,0 +1,32 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* Function to Execute the Next Variant Context Menu Action.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+params ["_unit", "_container", "_item", "_slot", "_params"];
+
+private _current_cfg = [_item] call cba_fnc_getItemConfig;
+
+private _cfg_tgt = [ _current_cfg ] call FUNC(getNextVariant);
+
+if (_cfg_tgt isEqualTo false) exitWith { diag_log format ['[CVO](debug)(fn_do_nextVariant) "": %1', ""]; };
+
+private _canModifyTo = [_unit, _current_cfg, _cfg_tgt] call FUNC(canModifyTo);
+
+if !(_canModifyTo) exitWith {[["Can not switch to:"], [getText (_cfg_tgt >> "displayName")], ["Due to missing components"] ,true ] call CBA_fnc_notify /* error hint to player: cannot switch to next variant, try again */ };
+
+
+
+[_unit, _unit, [_current_cfg, _cfg_tgt]] call FUNC(replace); 
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
index 4374d3f8d93..102d66639af 100644
--- a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
@@ -16,7 +16,7 @@
 */
 
 
-params ["_enable", true, [true]];
+params [["_enable", true, [true]]];
 
 
 if (missionNamespace getVariable [QGVAR(contextmenu_enabled), false]) then {
@@ -24,100 +24,3 @@ if (missionNamespace getVariable [QGVAR(contextmenu_enabled), false]) then {
 
 
 };
-
-
-/*
-Description:
-    Adds context menu option to inventory display.
-
-Parameters:
-    _item                   - Item classname <STRING>
-                              Can be base class.
-
-                              Can be item type as reported by BIS_fnc_itemType:
-                                ["Equipment","Headgear"]
-                                ->
-                                "#Equipment" and/or "##Headgear"
-
-                              Wildcard:
-                                #All
-
-    _slots                  - Relevant slots <ARRAY, STRING>
-                              Values:
-                                    CLOTHES
-                                        UNIFORM
-                                        VEST
-                                        BACKPACK
-                                        HEADGEAR
-                                        GOGGLES
-
-    _displayName            String keys are automatically translated. <STRING, ARRAY>
-        0: _displayName     - Option display name <STRING>
-        1: _tooltip         - Option tooltip <STRING>
-
-    _color                  - Option text color. Default alpha is 1.
-                              (default: [] = default color) <ARRAY>
-
-    _icon                   - Path to icon. (default: "" = no icon) <STRING>
-
-    _condition              <CODE, ARRAY>
-        0: _conditionEnable - Menu option is enabled and executed only if this
-                              condition reports 'true' (default: {true}) <CODE>
-        1: _conditionShow   - Menu option is shown only if this condition
-                              reports 'true'. (optional, default: {true}) <CODE>
-
-                            - Passed arguments:
-                              params ["_unit", "_container", "_item", "_slot", "_params"];
-
-    _statement              - Option statement (default: {}) <CODE>
-                              Return true to keep context menu opened.
-
-                            - Passed arguments:
-                              params ["_unit", "_container", "_item", "_slot", "_params"];
-
-    _consume                - Remove the item before executing the statement
-                              code. (default: false) <BOOLEAN>
-
-                            - This does NOT work for the following slots:
-                                GROUND
-                                CARGO
-
-    _params                 - Arguments passed as '_this select 4' to condition and
-                              statement (optional, default: []) <ANY>
-
-Returns:
-    Nothing/Undefined.
-
-Examples:
-    (begin example)
-        ["#All", "ALL", ">DEBUG ACTION<", nil, nil, {true}, {
-            params ["_unit", "_container", "_item", "_slot", "_params"];
-            systemChat str [name _unit, typeOf _container, _item, _slot, _params];
-            true
-        }, false, [0,1,2]] call CBA_fnc_addItemContextMenuOption;
-    (end)
-*/
-
-
-
-/*
-
-To make this work i would need to add a Menu Option for each individual modfifiable item AND its potential variants.
-
-The most efficient variant i can think of would be following.
-1. Event Handler for when the inventory gets open.
-2. Get Current Modifiable Items.
-3. Check if they are already established (GVAR(contextMenu_hashmap) classname, config)
-4. For every new modifiable Item, create a ContextMenuOption for each of its variant
-- could make an event handler, everytime the inventory gets opened, it scans the wearables, if they are modifiable, (and not already established) adds the option for those items
-
-*/
-
-/*
-    [
-        "#ALL",
-        "CLOTHES",
-    ] call CBA_fnc_addItemContextMenuOption;
-
-
-*/
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
new file mode 100644
index 00000000000..4589d0c81fb
--- /dev/null
+++ b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
@@ -0,0 +1,46 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* function to return cfg the next variant. the choosen variant will be added to a gvar of previous variants. the array of possible variants has been exhausted, it will remove all possible variants from the backlog and start new.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+
+params ["_cfg_current"];
+
+private _modifiableTo_cfg = [_cfg_current] call FUNC(getItems_modifiableTo);
+
+if (count _modifiableTo_cfg == 0) exitWith {false};
+
+private _history_cfg = missionNamespace getVariable [QGVAR(variant_history_cfg), "404"];
+
+if (_history_cfg isEqualTo "404") then {
+    _history_cfg = [];
+    missionNamespace setVariable [QGVAR(variant_history_cfg), _history_cfg];
+    player addEventHandler ["InventoryClosed", {
+        missionNamespace setVariable [QGVAR(variant_history_cfg), nil ];
+        player removeEventHandler [_thisEvent, _thisEventhandler];
+    }];
+};
+
+
+private _remaining = _modifiableTo_cfg - _history_cfg;
+_history_cfg pushbackUnique _cfg_current;
+
+// Returns ether a random remaining item or alternatively, a random one from the complete array.
+if (count _remaining > 0) then {
+    selectRandom _remaining
+} else {
+    _history_cfg = _history_cfg select { !(_x in _modifiableTo_cfg) };
+    selectRandom _modifiableTo_cfg
+};
\ No newline at end of file
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
index 322a23a609a..37c060b21b1 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
@@ -21,7 +21,7 @@ params [
 
 
 // Cleanup Cache once the interaction menu is closed
-["items_all"] call FUNC(clearOnClose);
+["items_all"] call FUNC(clearOnClosed_InteractionMenu);
 [
     "items_all",
     {
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
index cd1afe40d5e..83c6f01918a 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
@@ -46,7 +46,7 @@ private _code = {
 
 
 // Cleanup Cache once the interaction menu is closed
-["items_modifiable_all"] call FUNC(clearOnClose);
+["items_modifiable_all"] call FUNC(clearOnClosed_InteractionMenu);
 [
     "items_modifiable_all",
     _code
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
index 66c71273f46..54dd463cb03 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
@@ -45,7 +45,7 @@ private _code = {
     
 
 // Cleanup Cache once the interaction menu is closed
-["items_modifiable_current"] call FUNC(clearOnClose);
+["items_modifiable_current"] call FUNC(clearOnClosed_InteractionMenu);
 [
     "items_modifiable_current",
     _code

From fa21d316e0e243a18a85e94a909848ec3c2a2ec8 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 1 Jan 2025 16:41:57 +0100
Subject: [PATCH 026/139] Update CfgFunctions.hpp

---
 addons/wardrobe/CfgFunctions.hpp | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index 18197b2919b..d66e8eb5265 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -9,7 +9,6 @@ class CfgFunctions
             class postInit { postInit = 1; };
 
             class isModifiable {};
-
             class compare_components {};
             class canModifyTo {};
         };
@@ -28,7 +27,6 @@ class CfgFunctions
             class getItems_all {};
             class getItems_modifiable_all {};
             class getItems_modifiable_current {};
-            
             class getItems_modifiableTo {};
             
         };
@@ -50,7 +48,6 @@ class CfgFunctions
             class addActions {};
             class addActions_condition {};
             class addActions_children {};
-
             class getAction_Name {};
             class getAction_Icon {};
         };
@@ -60,12 +57,9 @@ class CfgFunctions
             file = PATH_TO_FUNC_SUB(cache);
 
             class cache_db {};
-
             class cache_get {};
             class cache_set {};
-
             class cache_clear {};
-
             class clearOnClosed_InteractionMenu {};
             class clearOnClosed_Inventory {};
         };
@@ -73,18 +67,21 @@ class CfgFunctions
         class config
         {
             file = PATH_TO_FUNC_SUB(config);
+
             class getCfgDataRandom {};
         };
 
         class debug
         {
             file = PATH_TO_FUNC_SUB(debug);
+
             class getAllWardrobeItems {};
         };
 
         class effects
         {
             file = PATH_TO_FUNC_SUB(effects);
+            
             class say3d {};
         };
     };

From 62afe5a7385b44a0360ae153ac41f69f13d8c46c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 1 Jan 2025 18:55:50 +0100
Subject: [PATCH 027/139] wip contextMenu

---
 .hemtt/missions/test.VR/mission.sqm           | 10 ++---
 .../script_component.hpp                      |  2 +-
 .../compat_ws/compat_ws_wardrobe/config.cpp   | 33 +++++---------
 addons/wardrobe/CfgFunctions.hpp              | 12 ++++-
 addons/wardrobe/XEH/XEH_preInit.sqf           |  6 +--
 ...xtvariant.sqf => fn_addCM_nextvariant.sqf} | 21 +++++----
 .../contextMenu/fn_do_nextVariant.sqf         | 14 ++++--
 .../contextMenu/fn_enable_contextMenu.sqf     |  6 +--
 .../contextMenu/fn_getNextVariant.sqf         |  2 +-
 .../debug/fn_compare_container_maxLoad.sqf    | 45 +++++++++++++++++++
 .../debug/fn_getAllWardrobeItems.sqf          |  7 ++-
 11 files changed, 109 insertions(+), 49 deletions(-)
 rename addons/wardrobe/functions/contextMenu/{fn_CM_nextvariant.sqf => fn_addCM_nextvariant.sqf} (87%)
 create mode 100644 addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf

diff --git a/.hemtt/missions/test.VR/mission.sqm b/.hemtt/missions/test.VR/mission.sqm
index c611feb5e8b..a607b56fcac 100644
--- a/.hemtt/missions/test.VR/mission.sqm
+++ b/.hemtt/missions/test.VR/mission.sqm
@@ -12,10 +12,10 @@ class EditorData
 	};
 	class Camera
 	{
-		pos[]={11.851013,13.197466,-25.312586};
-		dir[]={0.28843617,-0.51576251,0.80672157};
-		up[]={0.17364158,0.85673237,0.4856551};
-		aside[]={0.94162649,-3.1082891e-08,-0.33667031};
+		pos[]={16.435326,30,-25};
+		dir[]={0,-0.70710683,0.70710683};
+		up[]={0,0.70710677,0.70710677};
+		aside[]={0.99999994,0,-0};
 	};
 };
 binarizationWanted=0;
@@ -254,7 +254,7 @@ class Mission
 			class PositionInfo
 			{
 				position[]={18.822828,5,-13.759856};
-				angles[]={-0,1.0776811,0};
+				angles[]={0,1.0776811,0};
 			};
 			side="Empty";
 			flags=4;
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
index 273c8190a91..262eb23a042 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
@@ -1,4 +1,4 @@
-#define SUBCOMPONENT wardrobe
+#define SUBCOMPONENT wardrobe_uniform_fix
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF - Uniform Fix
 #include "..\script_component.hpp"
 
diff --git a/addons/compat_ws/compat_ws_wardrobe/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
index 35ee5b61743..a25c5e3f89e 100644
--- a/addons/compat_ws/compat_ws_wardrobe/config.cpp
+++ b/addons/compat_ws/compat_ws_wardrobe/config.cpp
@@ -1,35 +1,26 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-    class ADDON {
-
-        // Meta information for editor
-        name = ADDON_NAME;
-        author = "$STR_mod_author";
+    class SUBADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
         
-        url = "$STR_mod_URL";
-
         VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
+        requiredAddons[] = {
+            QPVAR(wardrobe),
+            "Characters_f_lxWS_headgear"
+        };
+        skipWhenMissingDependencies = 1;
 
-        // Addon Specific Information
-        // Minimum compatible version. When the game's version is lower, pop-up warning will appear when launching the game.
         requiredVersion = 2.02;
-
-        // Required addons, used for setting load order.
-        // When any of the addons is missing, pop-up warning will appear when launching the game.
-        requiredAddons[] = {QPVAR(main),"cba_main","Characters_f_lxWS_headgear"};
-
-        // Optional. If this is 1, if any of requiredAddons[] entry is missing in your game the entire config will be ignored and return no error (but in rpt) so useful to make a compat Mod (Since Arma 3 2.14)
-        skipWhenMissingDependencies = 1;
-        
-        // List of objects (CfgVehicles classes) contained in the addon. Important also for Zeus content (units and groups)
+       
         units[] = {};
-
-        // List of weapons (CfgWeapons classes) contained in the addon.
         weapons[] = {};
-
     };
 };
 
+
 #include "CfgWardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index d66e8eb5265..852233ccb10 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -76,13 +76,23 @@ class CfgFunctions
             file = PATH_TO_FUNC_SUB(debug);
 
             class getAllWardrobeItems {};
+            class compare_container_maxLoad {};
         };
 
         class effects
         {
             file = PATH_TO_FUNC_SUB(effects);
-            
+
             class say3d {};
         };
+        class contextMenu
+        {
+            file = PATH_TO_FUNC_SUB(contextMenu);
+
+            class enable_contextMenu {};
+            class addCM_nextvariant {};
+            class do_nextVariant {};
+            class getNextVariant {};
+        };
     };
 };
\ No newline at end of file
diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH/XEH_preInit.sqf
index e2111484ff7..1a461780dd4 100644
--- a/addons/wardrobe/XEH/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH/XEH_preInit.sqf
@@ -38,7 +38,6 @@ QSET(test) -> "ADDON_set_test"
     false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
 ] call CBA_fnc_addSetting;
 
-/* - I dont think there's going to be a way to make this work properly.
 [
     QSET(enable_contextMenu),                   //    _setting     - Unique setting name. Matches resulting variable name <STRING>
     "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
@@ -47,7 +46,6 @@ QSET(test) -> "ADDON_set_test"
     [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
     true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
     1,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
+    FUNC(enable_contextMenu),                   //    _script      - Script to execute when setting is changed. (optional) <CODE>
     true                                        //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
-] call CBA_fnc_addSetting;
-*/
\ No newline at end of file
+] call CBA_fnc_addSetting;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
similarity index 87%
rename from addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf
rename to addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
index 23486546b35..941c0d1461c 100644
--- a/addons/wardrobe/functions/contextMenu/fn_CM_nextvariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
@@ -92,7 +92,6 @@ Examples:
 
 
 /*
-
 To make this work i would need to add a Menu Option for each individual modfifiable item AND its potential variants.
 
 The most efficient variant i can think of would be following.
@@ -101,14 +100,20 @@ The most efficient variant i can think of would be following.
 3. Check if they are already established (GVAR(contextMenu_hashmap) classname, config)
 4. For every new modifiable Item, create a ContextMenuOption for each of its variant
 - could make an event handler, everytime the inventory gets opened, it scans the wearables, if they are modifiable, (and not already established) adds the option for those items
-
 */
 
-/*
+[
+    "#ALL",                     // filter items
+    "CLOTHES",                  // filter slots
+    "Switch to next Variant",   // Display Name
+    [],                         // Color
+    "",                         // Icon
     [
-        "#ALL",
-        "CLOTHES",
-    ] call CBA_fnc_addItemContextMenuOption;
-
+        {true},                 // Condition Enable action
+        {true}                  // Condition Show Action
+    ],
+    FUNC(do_nextVariant),       // statement
+    false,                      // consume Item
+    []                          // Params
+] call CBA_fnc_addItemContextMenuOption;
 
-*/
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
index 5dfc75a57e8..0fba9b6323e 100644
--- a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
@@ -2,7 +2,7 @@
 
 /*
 * Author: Zorn
-* Function to Execute the Next Variant Context Menu Action.
+* Function to Request the Next Variant Context Menu Action.
 *
 * Arguments:
 *
@@ -25,8 +25,16 @@ if (_cfg_tgt isEqualTo false) exitWith { diag_log format ['[CVO](debug)(fn_do_ne
 
 private _canModifyTo = [_unit, _current_cfg, _cfg_tgt] call FUNC(canModifyTo);
 
-if !(_canModifyTo) exitWith {[["Can not switch to:"], [getText (_cfg_tgt >> "displayName")], ["Due to missing components"] ,true ] call CBA_fnc_notify /* error hint to player: cannot switch to next variant, try again */ };
-
+if !(_canModifyTo) exitWith {
+    // error hint to player: cannot switch to next variant, try again
+    // TODO: Stringtable XML
+    [
+        ["Can not switch to:"],
+        [getText (_cfg_tgt >> "displayName")],
+        ["Due to missing components"],
+        true
+    ] call CBA_fnc_notify;
+}; 
 
 
 [_unit, _unit, [_current_cfg, _cfg_tgt]] call FUNC(replace); 
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
index 102d66639af..56cca48daf5 100644
--- a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
@@ -18,9 +18,7 @@
 
 params [["_enable", true, [true]]];
 
-
-if (missionNamespace getVariable [QGVAR(contextmenu_enabled), false]) then {
+if (_enable && {!(missionNamespace getVariable [QGVAR(contextmenu_enabled), false])}) then {
     missionNamespace setVariable [QGVAR(contextmenu_enabled), true];
-
-
+    [] call FUNC(addCM_nextvariant);
 };
diff --git a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
index 4589d0c81fb..9faa5063762 100644
--- a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
@@ -35,7 +35,7 @@ if (_history_cfg isEqualTo "404") then {
 
 
 private _remaining = _modifiableTo_cfg - _history_cfg;
-_history_cfg pushbackUnique _cfg_current;
+_history_cfg pushBackUnique _cfg_current;
 
 // Returns ether a random remaining item or alternatively, a random one from the complete array.
 if (count _remaining > 0) then {
diff --git a/addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf b/addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf
new file mode 100644
index 00000000000..d78251a1269
--- /dev/null
+++ b/addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf
@@ -0,0 +1,45 @@
+#include "../../script_component.hpp"
+
+/*
+* Author: Zorn
+* This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
+*
+* Arguments:
+*
+* Return Value:
+* None
+*
+* Example:
+* ['something', player] call prefix_component_fnc_functionname
+*
+* Public: No
+*/
+
+// TODO
+
+private _allWardrobeItems = [true] call FUNC(getAllWardrobeItems) select {
+    switch ( getNumber (_x >> "ItemInfo" >> "type") ) do {
+        case TYPE_GOGGLE: { false; };
+        case TYPE_HEADGEAR: { false; };
+        case default { true };
+    };
+};
+
+private _established = [];
+
+{
+    private _origin_cfg = _x;
+    private _origin_className = configName _origin_cfg;
+    
+
+    if (_origin_className in _established) then { continue };
+    _established pushBack _origin_className;
+
+    private _targets = [_origin] call FUNC(getItems_modifiableTo);
+
+    // formulate 
+    
+
+
+} forEach _allWardrobeItems;
+
diff --git a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
index 5fa1c7e69a1..a3da7fd40fc 100644
--- a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
@@ -15,4 +15,9 @@
 * Public: No
 */
 
-["CfgWeapons"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } }
\ No newline at end of file
+params [["_asConfig", false, [true]]];
+
+[
+    ["CfgWeapons", "CfgGlasses"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } },
+    ["CfgWeapons", "CfgGlasses"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) }    
+] select _asConfig

From 574493630f3b048b80abc8fe6576b0dce8c4576c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 1 Jan 2025 23:55:47 +0100
Subject: [PATCH 028/139] added icon

---
 addons/wardrobe/CfgVehicles.hpp               |   2 +-
 addons/wardrobe/data/wardrobe_logo.paa        | Bin 0 -> 34357 bytes
 addons/wardrobe/data/wardrobe_logo.png        | Bin 0 -> 16653 bytes
 .../contextMenu/fn_addCM_nextvariant.sqf      |  20 +++++++++---------
 4 files changed, 11 insertions(+), 11 deletions(-)
 create mode 100644 addons/wardrobe/data/wardrobe_logo.paa
 create mode 100644 addons/wardrobe/data/wardrobe_logo.png

diff --git a/addons/wardrobe/CfgVehicles.hpp b/addons/wardrobe/CfgVehicles.hpp
index 5dbee3c34d4..3c2f0e38775 100644
--- a/addons/wardrobe/CfgVehicles.hpp
+++ b/addons/wardrobe/CfgVehicles.hpp
@@ -5,7 +5,7 @@ class CfgVehicles {
             class ACE_Equipment {
                 class ADDON {
                     displayName = CSTRING(actionTitle); // Text shown to user
-                    icon = "";
+                    icon = PATH_TO_ADDON(data\wardrobe_logo.paa);
                     condition = Q([_player] call FUNC(addActions_condition));
                     statement = "";
                     insertChildren = Q([_player] call FUNC(addActions));
diff --git a/addons/wardrobe/data/wardrobe_logo.paa b/addons/wardrobe/data/wardrobe_logo.paa
new file mode 100644
index 0000000000000000000000000000000000000000..2910c92cd715076db1ce9a70a9616cf2e2e906da
GIT binary patch
literal 34357
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

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/data/wardrobe_logo.png b/addons/wardrobe/data/wardrobe_logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb1b7a064b185ecfdf31293d1e4a8240d21e0753
GIT binary patch
literal 16653
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

literal 0
HcmV?d00001

diff --git a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
index 941c0d1461c..341a3143afc 100644
--- a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
@@ -103,17 +103,17 @@ The most efficient variant i can think of would be following.
 */
 
 [
-    "#ALL",                     // filter items
-    "CLOTHES",                  // filter slots
-    "Switch to next Variant",   // Display Name
-    [],                         // Color
-    "",                         // Icon
+    "#ALL",                                     // filter items
+    "CLOTHES",                                  // filter slots
+    "Switch to next Variant",                   // Display Name
+    [],                                         // Color
+    PATH_TO_ADDON(data\wardrobe_logo.paa),    // Icon
     [
-        {true},                 // Condition Enable action
-        {true}                  // Condition Show Action
+        {true},                                 // Condition Enable action
+        {true}                                  // Condition Show Action
     ],
-    FUNC(do_nextVariant),       // statement
-    false,                      // consume Item
-    []                          // Params
+    FUNC(do_nextVariant),                       // statement
+    false,                                      // consume Item
+    []                                          // Params
 ] call CBA_fnc_addItemContextMenuOption;
 

From 91813528db31bfbe19cff3a6610da8d27616bc2b Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 13:28:09 +0100
Subject: [PATCH 029/139] polish

---
 .../action/fn_addActions_condition.sqf        |  7 +------
 .../contextMenu/fn_do_nextVariant.sqf         |  6 +++---
 .../contextMenu/fn_getNextVariant.sqf         | 18 +++++++++++++-----
 addons/wardrobe/functions/fn_canModifyTo.sqf  |  4 ++--
 .../functions/getItems/fn_getItems_all.sqf    | 19 ++++++++++---------
 .../getItems/fn_getItems_modifiable_all.sqf   | 15 +++++++--------
 .../fn_getItems_modifiable_current.sqf        | 17 +++++++++--------
 .../wardrobe/functions/replace/fn_replace.sqf |  3 ++-
 8 files changed, 47 insertions(+), 42 deletions(-)

diff --git a/addons/wardrobe/functions/action/fn_addActions_condition.sqf b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
index 36d8a7996d1..7715f88818f 100644
--- a/addons/wardrobe/functions/action/fn_addActions_condition.sqf
+++ b/addons/wardrobe/functions/action/fn_addActions_condition.sqf
@@ -21,9 +21,4 @@ missionNamespace getVariable [QSET(enable_action), false]
 &&
 { 
     count ([_player] call FUNC(getItems_modifiable_current)) > 0
-}
-
-
-// 1. Check if the player has items that can be modified
-// 2. Get the target classnames and check if they are available.
-// 
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
index 0fba9b6323e..f8e3ab6666b 100644
--- a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
@@ -23,7 +23,7 @@ private _cfg_tgt = [ _current_cfg ] call FUNC(getNextVariant);
 
 if (_cfg_tgt isEqualTo false) exitWith { diag_log format ['[CVO](debug)(fn_do_nextVariant) "": %1', ""]; };
 
-private _canModifyTo = [_unit, _current_cfg, _cfg_tgt] call FUNC(canModifyTo);
+private _canModifyTo = [_unit, _current_cfg, _cfg_tgt, false] call FUNC(canModifyTo);
 
 if !(_canModifyTo) exitWith {
     // error hint to player: cannot switch to next variant, try again
@@ -31,10 +31,10 @@ if !(_canModifyTo) exitWith {
     [
         ["Can not switch to:"],
         [getText (_cfg_tgt >> "displayName")],
-        ["Due to missing components"],
+        ["missing components"],
         true
     ] call CBA_fnc_notify;
 }; 
 
 
-[_unit, _unit, [_current_cfg, _cfg_tgt]] call FUNC(replace); 
\ No newline at end of file
+[_unit, _unit, [_current_cfg, _cfg_tgt], true] call FUNC(replace); 
\ No newline at end of file
diff --git a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
index 9faa5063762..7e92d5f01d9 100644
--- a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
@@ -18,15 +18,19 @@
 
 params ["_cfg_current"];
 
-private _modifiableTo_cfg = [_cfg_current] call FUNC(getItems_modifiableTo);
+private _modifiableTo_cfg = [_cfg_current, false] call FUNC(getItems_modifiableTo);
 
 if (count _modifiableTo_cfg == 0) exitWith {false};
 
 private _history_cfg = missionNamespace getVariable [QGVAR(variant_history_cfg), "404"];
 
 if (_history_cfg isEqualTo "404") then {
+    
     _history_cfg = [];
+    _history_cfg pushBackUnique _cfg_current;
+
     missionNamespace setVariable [QGVAR(variant_history_cfg), _history_cfg];
+
     player addEventHandler ["InventoryClosed", {
         missionNamespace setVariable [QGVAR(variant_history_cfg), nil ];
         player removeEventHandler [_thisEvent, _thisEventhandler];
@@ -35,12 +39,16 @@ if (_history_cfg isEqualTo "404") then {
 
 
 private _remaining = _modifiableTo_cfg - _history_cfg;
-_history_cfg pushBackUnique _cfg_current;
+
 
 // Returns ether a random remaining item or alternatively, a random one from the complete array.
-if (count _remaining > 0) then {
+private _return = if (count _remaining > 0) then {
     selectRandom _remaining
 } else {
-    _history_cfg = _history_cfg select { !(_x in _modifiableTo_cfg) };
+    _history_cfg = []; // _history_cfg select { !(_x in _modifiableTo_cfg) };
+    missionNamespace setVariable [QGVAR(variant_history_cfg), [] ];
     selectRandom _modifiableTo_cfg
-};
\ No newline at end of file
+};
+
+_history_cfg pushBackUnique _return;
+_return
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fn_canModifyTo.sqf b/addons/wardrobe/functions/fn_canModifyTo.sqf
index 2580eace2ef..033e4e4330f 100644
--- a/addons/wardrobe/functions/fn_canModifyTo.sqf
+++ b/addons/wardrobe/functions/fn_canModifyTo.sqf
@@ -15,10 +15,10 @@
 * Public: No
 */
 
-params ["_unit", "_cfg_origin", "_cfg_target"];
+params ["_unit", "_cfg_origin", "_cfg_target", ["_cache", true, [true]]];
 
 [_cfg_origin, _cfg_target] call FUNC(compare_components) params ["_missing", "_surplus"];
 
-private _currentItems = [_unit] call FUNC(getItems_all);
+private _currentItems = [_unit, _cache] call FUNC(getItems_all);
 
 count ( _missing select { ! (_x in _currentItems) } ) == 0
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
index 37c060b21b1..db3dfcc2de7 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_all.sqf
@@ -16,15 +16,16 @@
 */
 
 params [
-    ["_player",   objNull,    [objNull]]
+    ["_unit",   objNull,    [objNull]],
+    ["_cache",    true,       [true]   ]
 ];
 
 
-// Cleanup Cache once the interaction menu is closed
-["items_all"] call FUNC(clearOnClosed_InteractionMenu);
-[
-    "items_all",
-    {
-        flatten getUnitLoadout _player select { _x isEqualType "" && { _x != ""}};
-    }
-] call FUNC(cache_get);
\ No newline at end of file
+private _code = { flatten getUnitLoadout _unit select { _x isEqualType "" && { _x != ""}}; };
+
+private _caching = {
+    ["items_all"] call FUNC(clearOnClosed_InteractionMenu);
+    ["items_all", _code] call FUNC(cache_get);   // returns the result
+};
+
+if (_cache) then _caching else _code;
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
index 83c6f01918a..bcc00c4c5df 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
@@ -16,7 +16,8 @@
 */
 
 params [
-    ["_unit",   objNull,    [objNull]]
+    ["_unit",   objNull,    [objNull]],
+    ["_cache",    true,       [true]   ]
 ];
 
 
@@ -43,11 +44,9 @@ private _code = {
     { count (_x#1) > 0 }
 };
 
+private _caching = {
+    ["items_modifiable_all"] call FUNC(clearOnClosed_InteractionMenu);
+    ["items_modifiable_all", _code] call FUNC(cache_get);   // returns the result
+};
 
-
-// Cleanup Cache once the interaction menu is closed
-["items_modifiable_all"] call FUNC(clearOnClosed_InteractionMenu);
-[
-    "items_modifiable_all",
-    _code
-] call FUNC(cache_get);
\ No newline at end of file
+if (_cache) then _caching else _code;
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
index 54dd463cb03..4948b2cbdb3 100644
--- a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
@@ -16,7 +16,8 @@
 */
 
 params [
-    ["_unit",   objNull,    [objNull]]
+    ["_unit",   objNull,    [objNull]],
+    ["_cache",    true,       [true]   ]
 ];
 
 
@@ -28,7 +29,7 @@ private _code = {
     select
     { [_x] call FUNC(isModifiable) }
     apply
-    { [_x, [_x] call FUNC(getItems_modifiableTo) ] }
+    { [_x, [_x] call FUNC(getItems_modifiableTo) ] }    // will return an array, even if the target variants are not available.
     select
     { count (_x#1) > 0 }
     apply
@@ -44,9 +45,9 @@ private _code = {
 };
     
 
-// Cleanup Cache once the interaction menu is closed
-["items_modifiable_current"] call FUNC(clearOnClosed_InteractionMenu);
-[
-    "items_modifiable_current",
-    _code
-] call FUNC(cache_get);
\ No newline at end of file
+private _caching = {
+    ["items_modifiable_current"] call FUNC(clearOnClosed_InteractionMenu);
+    ["items_modifiable_current", _code] call FUNC(cache_get);   // returns the result
+};
+
+if (_cache) then _caching else _code;
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 4eb39fa441a..e85e4c0c52b 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -15,11 +15,12 @@
 * Public: No
 */
 
-params ["_target", "_unit", "_actionParams"];
+params ["_target", "_unit", "_actionParams", ["_replaceNow", false, [true]]];
 _actionParams params ["_cfg_origin", "_cfg_tgt"];
 
 // Duration of the "animation"
 private _duration = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
+if (_replaceNow) then { _duration = 0; };
 
 // Animation/Gestures
 [ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;

From ad9c63284e17aab06acdb4d086177d2acc90e9e9 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 14:09:23 +0100
Subject: [PATCH 030/139] compat facewear

---
 addons/wardrobe/compat_vanilla/Wardrobe.hpp | 10 ++++++++++
 addons/wardrobe/config.cpp                  | 10 +++-------
 2 files changed, 13 insertions(+), 7 deletions(-)
 create mode 100644 addons/wardrobe/compat_vanilla/Wardrobe.hpp

diff --git a/addons/wardrobe/compat_vanilla/Wardrobe.hpp b/addons/wardrobe/compat_vanilla/Wardrobe.hpp
new file mode 100644
index 00000000000..cce5ac273f3
--- /dev/null
+++ b/addons/wardrobe/compat_vanilla/Wardrobe.hpp
@@ -0,0 +1,10 @@
+class CfgWeapons
+{
+    #include "Uniforms.hpp"
+};
+
+
+class CfgGlasses
+{
+    #include "Facewear.hpp"
+};
\ No newline at end of file
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index 2d8e69b6998..af135d83bea 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -23,13 +23,9 @@ class CfgPatches {
 #include "CfgFunctions.hpp"
 #include "XEH\CfgXEH.hpp"
 
-#include "Baseclass.hpp"
-
 #include "CfgVehicles.hpp"
+#include "CfgSounds.hpp"
 
-class CfgWeapons
-{
-    #include "compat_vanilla\Uniforms.hpp"
-};
+#include "Baseclass.hpp"
 
-#include "CfgSounds.hpp"
+#include "compat_vanilla\Wardrobe.hpp"
\ No newline at end of file

From f8bd529f5ccb59cda63c2c5eedc632607254a968 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 14:09:30 +0100
Subject: [PATCH 031/139] compat balaclava black

---
 addons/wardrobe/compat_vanilla/Facewear.hpp | 9 +++++++++
 1 file changed, 9 insertions(+)
 create mode 100644 addons/wardrobe/compat_vanilla/Facewear.hpp

diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
new file mode 100644
index 00000000000..7d0f0f38928
--- /dev/null
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -0,0 +1,9 @@
+// CfgGlasses
+
+// Parents
+class None;
+
+// Balaclava, black
+class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile), Q(G_Balaclava_combat) }; components[] = {""}; }; };
+class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Combat"}; }; };
+class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Lowprofile"}; }; };

From 177d48e9d5b6005aeab27d56cd301aa44c97d8ea Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Thu, 2 Jan 2025 15:25:14 +0100
Subject: [PATCH 032/139] Update
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
index b369055d6f0..5a1967bfd3a 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
@@ -1,5 +1,5 @@
 The uniforms addressed in this sub-addon are the "sleeves rolled up" version of their "sleeves rolled down" counterpart.
-The problem is, that the rolled up version are both, 1 lb lighter, and can carry 1 lb less. 
+The problem is, that the rolled up version are both 1 lb (0.453 kg) lighter and can carry 1 lb less. 
 
 If we would ignore this, the player would run into situations where they would lose items by simply rolling up their sleeves.
 To counter this, I increased the maxLoad of those items by 1 lb to be aligned with their counterpart.

From b0e91ad2eef5961cc5cbc0224cf4220b54575945 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 15:48:56 +0100
Subject: [PATCH 033/139] renamed hemtt Launch preset to Wardrobe

---
 .hemtt/launch.toml                                   | 7 ++-----
 .hemtt/missions/{test.VR => Wardrobe.VR}/mission.sqm | 6 +++---
 addons/wardrobe/compat_vanilla/Facewear.hpp          | 9 +++++++++
 3 files changed, 14 insertions(+), 8 deletions(-)
 rename .hemtt/missions/{test.VR => Wardrobe.VR}/mission.sqm (97%)

diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index 5f2fad4e147..22fa41bfa59 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -36,17 +36,14 @@ workshop = [
     "843632231", # RHS SAF  Workshop ID
 ]
 
-[zrn]
+[Wardrobe]
 extends = "default"
 workshop = [
     "2369477168", # Advanced Developer Tools
     "1779063631", # ZEN
 #    "623475643",  # eden enhanced
 ]
-mission = "test.VR"
-
-[zrn_dlc]
-extends = "zrn"
+mission = "Wardrobe.VR"
 dlc = [
     "Reaction Forces",
     "Western Sahara"
diff --git a/.hemtt/missions/test.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
similarity index 97%
rename from .hemtt/missions/test.VR/mission.sqm
rename to .hemtt/missions/Wardrobe.VR/mission.sqm
index a607b56fcac..8329d2e730d 100644
--- a/.hemtt/missions/test.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -13,9 +13,9 @@ class EditorData
 	class Camera
 	{
 		pos[]={16.435326,30,-25};
-		dir[]={0,-0.70710683,0.70710683};
-		up[]={0,0.70710677,0.70710677};
-		aside[]={0.99999994,0,-0};
+		dir[]={-1.2363449e-07,-0.70710683,0.70710683};
+		up[]={-1.2363449e-07,0.70710671,0.70710683};
+		aside[]={1,0,1.7484557e-07};
 	};
 };
 binarizationWanted=0;
diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index 7d0f0f38928..cdaec37cee1 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -7,3 +7,12 @@ class None;
 class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile), Q(G_Balaclava_combat) }; components[] = {""}; }; };
 class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Combat"}; }; };
 class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Lowprofile"}; }; };
+
+
+// Stealth Balaclava, black
+class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_blk_F) }; components[] = {""}; }; };
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_blk_F) }; components[] = {"G_Combat"}; }; };
+
+// Stealth Balaclava, green(tanoa)
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_tna_F) }; components[] = {""}; }; };
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_tna_F) }; components[] = {"G_Combat"}; }; };

From e2235f7a62ad4c85e7eee59cfba199e52d39e663 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 17:41:52 +0100
Subject: [PATCH 034/139] Update mission.sqm

---
 .hemtt/missions/Wardrobe.VR/mission.sqm | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/.hemtt/missions/Wardrobe.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
index 8329d2e730d..7898931dbb7 100644
--- a/.hemtt/missions/Wardrobe.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -12,14 +12,14 @@ class EditorData
 	};
 	class Camera
 	{
-		pos[]={16.435326,30,-25};
-		dir[]={-1.2363449e-07,-0.70710683,0.70710683};
-		up[]={-1.2363449e-07,0.70710671,0.70710683};
-		aside[]={1,0,1.7484557e-07};
+		pos[]={6.6224675,9.7580004,-22.782627};
+		dir[]={0.80753577,-0.42340663,0.4107419};
+		up[]={0.3774308,0.90591747,0.19197531};
+		aside[]={0.45338005,3.1408854e-07,-0.89136314};
 	};
 };
 binarizationWanted=0;
-sourceName="test";
+sourceName="wardrobe";
 addons[]=
 {
 	"A3_Weapons_F",

From 8cacab04f3d58d7f32243e471dc865c0944d3539 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 17:44:03 +0100
Subject: [PATCH 035/139] Refactored Components

Supports non linear definitions.

Example:
Balaclava <-> Balaclava with Combat Goggles <-> Combat Goggles

Requires: Balclava and Goggles to have itself as a component, while the combo version has both as components.
---
 addons/wardrobe/compat_vanilla/Facewear.hpp   | 19 +++++++++------
 .../contextMenu/fn_getNextVariant.sqf         |  3 ++-
 .../wardrobe/functions/replace/fn_replace.sqf | 23 +++++++++++++++----
 3 files changed, 33 insertions(+), 12 deletions(-)

diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index cdaec37cee1..c4d138b9930 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -3,16 +3,21 @@
 // Parents
 class None;
 
+class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile) }; components[] = {"G_Lowprofile"}; }; };
+class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_combat), Q(G_Balaclava_TI_G_blk_F), Q(G_Balaclava_TI_G_tna_F) }; components[] = {"G_Combat"}; }; };
+
+
 // Balaclava, black
-class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile), Q(G_Balaclava_combat) }; components[] = {""}; }; };
-class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Combat"}; }; };
-class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Lowprofile"}; }; };
+class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile), Q(G_Balaclava_combat) }; components[] = {"G_Balaclava_blk"}; }; };
+class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
+class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
 
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_blk_F) }; components[] = {""}; }; };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_blk_F) }; components[] = {"G_Combat"}; }; };
+class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_blk_F) }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_blk_F) }; components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
+
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_tna_F) }; components[] = {""}; }; };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_tna_F) }; components[] = {"G_Combat"}; }; };
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_tna_F) }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_tna_F) }; components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
diff --git a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
index 7e92d5f01d9..b997d5bf5f3 100644
--- a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
@@ -47,7 +47,8 @@ private _return = if (count _remaining > 0) then {
 } else {
     _history_cfg = []; // _history_cfg select { !(_x in _modifiableTo_cfg) };
     missionNamespace setVariable [QGVAR(variant_history_cfg), [] ];
-    selectRandom _modifiableTo_cfg
+    _history_cfg pushBackUnique _cfg_current;
+    selectRandom _modifiableTo_cfg;
 };
 
 _history_cfg pushBackUnique _return;
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index e85e4c0c52b..b6daa3dbad6 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -27,20 +27,35 @@ if (_replaceNow) then { _duration = 0; };
 
 
 // Remove / Add Missing/Surplus Items.
+
 [_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
-{ [_unit, _x, true] call CBA_fnc_addItem; } forEach _surplus;
-{ [_unit, _x] call CBA_fnc_removeItem;    } forEach _missing;
+{
+    if (configName _cfg_tgt != _x) then { [_unit, _x, true] call CBA_fnc_addItem; };
+} forEach _surplus;   
+{
+    if (configName _cfg_origin != _x) then { [_unit, _x] call CBA_fnc_removeItem; };
+} forEach _missing;
 
 
 // Replace the Main Item.
 private _additionalParams = "";
-private _replaceCode = switch ( getNumber (_cfg_origin >> "ItemInfo" >> "type") ) do {
-    case TYPE_GOGGLE:   {                                 FUNC(replace_facewear) };
+private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
+private _replaceCode = switch ( _typeNumber ) do {
     case TYPE_HEADGEAR: {                                 FUNC(replace_headgear) };
     case TYPE_UNIFORM:  { _additionalParams = "UNIFORM";  FUNC(replace_uniform)  };
     case TYPE_VEST:     { _additionalParams = "VEST";     FUNC(replace_uniform)  };
     case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_uniform)  };
+    default {
+        // CfgGlasses items do not have a ItemInfo Subclass and therefore, not TypeNumber.
+        switch (true) do {
+            case ("CfgGlasses" in str _cfg_origin) : { FUNC(replace_facewear) };
+            default { false };
+        };
+    };
 };
+
+if (_replaceCode isEqualType true) exitWith {ZRN_LOG_MSG_2(replacecode undefined,_typeNumber,_replaceCode);};
+
 [ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
 
 

From 8a53f84611a812057b94b8200c2d3b69d103a79e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 18:37:05 +0100
Subject: [PATCH 036/139] fix for cfgGlasses not having ItemInfo

---
 .../wardrobe/functions/replace/fn_replace.sqf | 21 ++++++++++---------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index b6daa3dbad6..2206adac1d4 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -26,15 +26,6 @@ if (_replaceNow) then { _duration = 0; };
 [ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
 
 
-// Remove / Add Missing/Surplus Items.
-
-[_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
-{
-    if (configName _cfg_tgt != _x) then { [_unit, _x, true] call CBA_fnc_addItem; };
-} forEach _surplus;   
-{
-    if (configName _cfg_origin != _x) then { [_unit, _x] call CBA_fnc_removeItem; };
-} forEach _missing;
 
 
 // Replace the Main Item.
@@ -48,16 +39,26 @@ private _replaceCode = switch ( _typeNumber ) do {
     default {
         // CfgGlasses items do not have a ItemInfo Subclass and therefore, not TypeNumber.
         switch (true) do {
-            case ("CfgGlasses" in str _cfg_origin) : { FUNC(replace_facewear) };
+            case (isClass (configFile >> "CfgGlasses" >> configName _cfg_origin)) : { FUNC(replace_facewear) };
             default { false };
         };
     };
 };
 
+
 if (_replaceCode isEqualType true) exitWith {ZRN_LOG_MSG_2(replacecode undefined,_typeNumber,_replaceCode);};
 
 [ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
 
+// Remove / Add Missing/Surplus Items.
+[_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
+{
+    if (configName _cfg_tgt != _x) then { [_unit, _x, true] call CBA_fnc_addItem; };
+} forEach _surplus;   
+{
+    if (configName _cfg_origin != _x) then { [_unit, _x] call CBA_fnc_removeItem; };
+} forEach _missing;
+
 
 // Plays Random Sound At the Beginning
 private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;

From bbc33ac76b462e6e987c2b31fd98852a6d8754c6 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 18:37:13 +0100
Subject: [PATCH 037/139] Update Facewear.hpp

---
 addons/wardrobe/compat_vanilla/Facewear.hpp | 43 ++++++++++++++++-----
 1 file changed, 34 insertions(+), 9 deletions(-)

diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index c4d138b9930..097c10774b9 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -2,22 +2,47 @@
 
 // Parents
 class None;
+class G_WirelessEarpiece_base_F;
+class G_EyeProtectors_base_F;
+class G_Sport_Blackred;
 
-class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile) }; components[] = {"G_Lowprofile"}; }; };
-class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_combat), Q(G_Balaclava_TI_G_blk_F), Q(G_Balaclava_TI_G_tna_F) }; components[] = {"G_Combat"}; }; };
 
+// Common Components
+class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
+class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base)  { modifiableTo[] = { "G_Balaclava_combat"), "G_Balaclava_TI_G_blk_F"), "G_Balaclava_TI_G_tna_F") }; components[] = {"G_Combat"}; }; };
+
+class G_Aviator : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
+class G_Shades_Black : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" }; components[] = {"G_Shades_Black"}; }; };
 
 // Balaclava, black
-class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_lowprofile), Q(G_Balaclava_combat) }; components[] = {"G_Balaclava_blk"}; }; };
-class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
-class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_blk) }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
+class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile"), "G_Balaclava_combat") }; components[] = {"G_Balaclava_blk"}; }; };
+class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
+class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
 
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_blk_F) }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_blk_F) }; components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
+class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" }; components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
 
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_G_tna_F) }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(G_Balaclava_TI_tna_F) }; components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" }; components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
+
+
+
+// Bandana, Black
+G_Bandanna_blk : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
+
+G_Bandanna_shades : G_Bandanna_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" }; components[] = {"G_Shades_Black", "G_Bandanna_blk"}; }; };
+G_Bandanna_sport : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Sport_Blackred", "G_Bandanna_blk"}; }; };
+G_Bandanna_aviator : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" }; components[] = {"G_Aviator", "G_Bandanna_blk"}; }; };
+
+
+
+
+// Eye Protector
+G_EyeProtectors_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" }; components[] = {"G_EyeProtectors_F"}; }; };
+G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
+G_WirelessEarpiece_F : G_WirelessEarpiece_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" }; components[] = {"G_WirelessEarpiece_F"}; }; };
+

From 13b3342a27a6d3561f376f497c3ad71c11548408 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 18:42:29 +0100
Subject: [PATCH 038/139] missed )

---
 addons/wardrobe/compat_vanilla/Facewear.hpp | 14 +++-----------
 1 file changed, 3 insertions(+), 11 deletions(-)

diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index 097c10774b9..e540bc81939 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -4,43 +4,35 @@
 class None;
 class G_WirelessEarpiece_base_F;
 class G_EyeProtectors_base_F;
-class G_Sport_Blackred;
-
 
 // Common Components
 class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
-class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base)  { modifiableTo[] = { "G_Balaclava_combat"), "G_Balaclava_TI_G_blk_F"), "G_Balaclava_TI_G_tna_F") }; components[] = {"G_Combat"}; }; };
+class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base)  { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
 
 class G_Aviator : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
 class G_Shades_Black : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" }; components[] = {"G_Shades_Black"}; }; };
 
+
 // Balaclava, black
-class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile"), "G_Balaclava_combat") }; components[] = {"G_Balaclava_blk"}; }; };
+class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
 class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
 class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
 
-
 // Stealth Balaclava, black
 class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
 class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" }; components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
 
-
 // Stealth Balaclava, green(tanoa)
 class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
 class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" }; components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
 
-
-
 // Bandana, Black
 G_Bandanna_blk : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
-
 G_Bandanna_shades : G_Bandanna_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" }; components[] = {"G_Shades_Black", "G_Bandanna_blk"}; }; };
 G_Bandanna_sport : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Sport_Blackred", "G_Bandanna_blk"}; }; };
 G_Bandanna_aviator : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" }; components[] = {"G_Aviator", "G_Bandanna_blk"}; }; };
 
 
-
-
 // Eye Protector
 G_EyeProtectors_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" }; components[] = {"G_EyeProtectors_F"}; }; };
 G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };

From b5c95e4d426cbf5a4938602e131a79f1131b91e8 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 2 Jan 2025 19:09:41 +0100
Subject: [PATCH 039/139] forgor "class"

---
 addons/wardrobe/compat_vanilla/Facewear.hpp | 34 ++++++++++-----------
 1 file changed, 17 insertions(+), 17 deletions(-)

diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index e540bc81939..0f73ff3b05a 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -7,34 +7,34 @@ class G_EyeProtectors_base_F;
 
 // Common Components
 class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
-class G_Combat : None { class PVAR(wardrobe) : EGVAR(wardrobe,base)  { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
+class G_Combat : None     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
 
-class G_Aviator : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
-class G_Shades_Black : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" }; components[] = {"G_Shades_Black"}; }; };
+class G_Aviator : None      { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
+class G_Shades_Black : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" };  components[] = {"G_Shades_Black"}; }; };
 
 
 // Balaclava, black
-class G_Balaclava_blk : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
-class G_Balaclava_combat : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
+class G_Balaclava_blk : None                   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
+class G_Balaclava_combat : G_Balaclava_blk     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
 class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" }; components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
+class G_Balaclava_TI_blk_F : None                   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" };   components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" }; components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" };   components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
 
 // Bandana, Black
-G_Bandanna_blk : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
-G_Bandanna_shades : G_Bandanna_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" }; components[] = {"G_Shades_Black", "G_Bandanna_blk"}; }; };
-G_Bandanna_sport : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Sport_Blackred", "G_Bandanna_blk"}; }; };
-G_Bandanna_aviator : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" }; components[] = {"G_Aviator", "G_Bandanna_blk"}; }; };
+class G_Bandanna_blk : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
 
+class G_Bandanna_shades : G_Bandanna_blk     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };   components[] = {"G_Bandanna_blk", "G_Shades_Black"  }; }; };
+class G_Bandanna_sport : G_Bandanna_shades   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Bandanna_blk", "G_Sport_Blackred"}; }; };
+class G_Bandanna_aviator : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };        components[] = {"G_Bandanna_blk", "G_Aviator"   }; }; };
 
-// Eye Protector
-G_EyeProtectors_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" }; components[] = {"G_EyeProtectors_F"}; }; };
-G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
-G_WirelessEarpiece_F : G_WirelessEarpiece_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" }; components[] = {"G_WirelessEarpiece_F"}; }; };
 
+// Eye Protector
+class G_EyeProtectors_F :  G_EyeProtectors_base_F         { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_EyeProtectors_F"}; }; };
+class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
+class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F  { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_WirelessEarpiece_F"}; }; };

From 7b49f75dc31f251f786a5ad949e00d1b6824a9ea Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 01:55:35 +0100
Subject: [PATCH 040/139] zrn macro cleanup

---
 .../compat_gm_wardrobe/script_component.hpp   |   2 +-
 .../compat_rf_wardrobe/script_component.hpp   |   2 +-
 .../compat_sog_wardrobe/script_component.hpp  |   2 +-
 .../script_component.hpp                      |   2 +-
 .../compat_ws_wardrobe/script_component.hpp   |   2 +-
 .../wardrobe/functions/replace/fn_replace.sqf |   2 +-
 .../functions/replace/fn_replace_facewear.sqf |   3 -
 .../functions/replace/fn_replace_headgear.sqf |   3 -
 .../functions/replace/fn_replace_uniform.sqf  |   2 -
 addons/wardrobe/script_component.hpp          |   2 +-
 addons/wardrobe/script_macros_wardrobe.hpp    |  25 ++++
 addons/wardrobe/script_macros_zrn.hpp         | 118 ------------------
 12 files changed, 32 insertions(+), 133 deletions(-)
 create mode 100644 addons/wardrobe/script_macros_wardrobe.hpp
 delete mode 100644 addons/wardrobe/script_macros_zrn.hpp

diff --git a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
index 6fc839abdb8..21f2a8d74d4 100644
--- a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for GlobMo
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
diff --git a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
index c6abb6601b1..b9375b33011 100644
--- a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for RF
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
index bc44bae5fc7..285bfd696d5 100644
--- a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
index 262eb23a042..e02f07c5fcb 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF - Uniform Fix
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
index 424cc0eb6a9..3cb1f8bd5c8 100644
--- a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for Western Sahara
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 2206adac1d4..fd3db8b5d3f 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -46,7 +46,7 @@ private _replaceCode = switch ( _typeNumber ) do {
 };
 
 
-if (_replaceCode isEqualType true) exitWith {ZRN_LOG_MSG_2(replacecode undefined,_typeNumber,_replaceCode);};
+if (_replaceCode isEqualType false) exitWith {ERROR_2(replacecode undefined,_typeNumber,_replaceCode);};
 
 [ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
 
diff --git a/addons/wardrobe/functions/replace/fn_replace_facewear.sqf b/addons/wardrobe/functions/replace/fn_replace_facewear.sqf
index e245f8a8569..a797edf87ce 100644
--- a/addons/wardrobe/functions/replace/fn_replace_facewear.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace_facewear.sqf
@@ -15,9 +15,6 @@
 * Public: No
 */
 
-ZRN_LOG_MSG_1(init,_this);
-
 params ["_player", "_cfg_origin", "_cfg_tgt"];
-
 removeGoggles _player;
 _player addGoggles configName _cfg_tgt;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace_headgear.sqf b/addons/wardrobe/functions/replace/fn_replace_headgear.sqf
index b33abf195c0..f676e9fae6e 100644
--- a/addons/wardrobe/functions/replace/fn_replace_headgear.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace_headgear.sqf
@@ -15,9 +15,6 @@
 * Public: No
 */
 
-ZRN_LOG_MSG_1(init,_this);
-
 params ["_player", "_cfg_origin", "_cfg_tgt"];
-
 removeHeadgear _player;
 _player addHeadgear configName _cfg_tgt;
diff --git a/addons/wardrobe/functions/replace/fn_replace_uniform.sqf b/addons/wardrobe/functions/replace/fn_replace_uniform.sqf
index b7e35a5f569..e8547160925 100644
--- a/addons/wardrobe/functions/replace/fn_replace_uniform.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace_uniform.sqf
@@ -15,8 +15,6 @@
 * Public: No
 */
 
-ZRN_LOG_MSG_1(init,_this);
-
 params ["_player", "_cfg_origin", "_cfg_tgt", "_case"];
 
 
diff --git a/addons/wardrobe/script_component.hpp b/addons/wardrobe/script_component.hpp
index 22f97fade07..3bfe0fd2d46 100644
--- a/addons/wardrobe/script_component.hpp
+++ b/addons/wardrobe/script_component.hpp
@@ -15,4 +15,4 @@
 #endif
 
 #include "\z\ace\addons\main\script_macros.hpp"
-#include "\z\ace\addons\wardrobe\script_macros_zrn.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
new file mode 100644
index 00000000000..3759c81b5bd
--- /dev/null
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -0,0 +1,25 @@
+// CBA Settings
+#define SET(var1) TRIPLES(ADDON,set,var1)
+#define QSET(var1) Q(SET(var1))
+#define QQSET(var1) QQ(SET(var1))
+#define ESET(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),SET,var2)
+#define QESET(var1,var2) Q(ESET(var1,var2))
+#define QQESET(var1,var2) QQ(ESET(var1,var2))
+
+// LSTRING for cba Settings
+#define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
+
+#define Q(var1) QUOTE(var1)
+#define QQ(var1) Q(Q(var1))
+
+#define QADDON Q(ADDON)
+
+// Prefix Variables
+#define PVAR(var1) DOUBLES(PREFIX,var1)
+#define QPVAR(var1) QUOTE(PVAR(var1))
+#define QQPVAR(var1) QUOTE(QPVAR(var1))
+
+// Paths
+#define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
+#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
+#define PATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
\ No newline at end of file
diff --git a/addons/wardrobe/script_macros_zrn.hpp b/addons/wardrobe/script_macros_zrn.hpp
deleted file mode 100644
index c2179c41144..00000000000
--- a/addons/wardrobe/script_macros_zrn.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-#ifdef __A3_DEBUG__
-    #define _ZRN_DEBUG_
-#endif
-
-
-// CBA Settings
-#define SET(var1) TRIPLES(ADDON,set,var1)
-#define QSET(var1) Q(SET(var1))
-#define QQSET(var1) QQ(SET(var1))
-#define ESET(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),SET,var2)
-#define QESET(var1,var2) Q(ESET(var1,var2))
-#define QQESET(var1,var2) QQ(ESET(var1,var2))
-
-
-// Stringtable.xml - use LSTRING() instead
-#define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
-
-
-// Quotes
-#ifndef QUOTE
-    #define QUOTE(var1) #var1
-#endif
-#define QQUOTE(var1) QUOTE(QUOTE(var1))
-#define Q(var1) QUOTE(var1)
-#define QQ(var1) QQUOTE(var1)
-
-#define QADDON Q(ADDON)
-#define QPREFIX Q(PREFIX)
-#define QCOMPONENT Q(COMPONENT)
-
-
-// Prefix Function
-#define PFUNC(var1) TRIPLES(PREFIX,fnc,var1)
-#define QPFUNC(var1) QUOTE(PFUNC(var1))
-#define QQPFUNC(var1) QUOTE(QPFUNC(var1))
-
-
-// Prefix Variables
-#define PVAR(var1) DOUBLES(PREFIX,var1)
-#define QPVAR(var1) QUOTE(PVAR(var1))
-#define QQPVAR(var1) QUOTE(QPVAR(var1))
-
-
-// missionNamespace set/get Variables
-#define SETMGVAR(name,value) (missionNamespace setVariable [QGVAR(name),value])
-#define SETMGVAR_PUBLIC(name,value,public) (missionNamespace setVariable [QGVAR(name),value,public])
-#define GETMGVAR(name,default) (missionNamespace getVariable [QGVAR(name),default])
-
-
-// CfgPatches Stuff
-#ifndef PREFIX_BEAUTIFIED
-    #define PREFIX_BEAUTIFIED PREFIX
-#endif
-#ifndef COMPONENT_BEAUTIFIED
-    #define COMPONENT_BEAUTIFIED COMPONENT
-#endif
-
-#define ADDON_NAME Q(PREFIX_BEAUTIFIED - COMPONENT_BEAUTIFIED)
-
-// Paths
-#define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
-#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
-#define PATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
-#define PATH_TO_ADDON_2(var1,var2) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1\var2)
-#define PATH_TO_ADDON_3(var1,var2,var3) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1\var2\var3)
-
-#define QPATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
-#define QQPATH_TO_ADDON(var1) Q(QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1))
-
-
-// Debug
-#define DEBUG_HEADER format [QUOTE([PREFIX][COMPONENT](%1)),_fnc_scriptName]
-
-#define ZRN_LOG_MSG(MSG) diag_log (DEBUG_HEADER + " " + QUOTE(MSG))
-
-#ifdef _ZRN_DEBUG_
-    #define ZRN_SCRIPTNAME(var1) private _fnc_scriptName = Q(var1)
-
-    #define ZRN_LOG_MSG_1(MSG,A) diag_log (DEBUG_HEADER + (format [' %1 - A: %2',QUOTE(MSG),RETNIL(A)]))
-    #define ZRN_LOG_MSG_2(MSG,A,B) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3',QUOTE(MSG),RETNIL(A),RETNIL(B)]))
-    #define ZRN_LOG_MSG_3(MSG,A,B,C) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C)]))
-    #define ZRN_LOG_MSG_4(MSG,A,B,C,D) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D)]))
-    #define ZRN_LOG_MSG_5(MSG,A,B,C,D,E) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E)]))
-    #define ZRN_LOG_MSG_6(MSG,A,B,C,D,E,F) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F)]))
-    #define ZRN_LOG_MSG_7(MSG,A,B,C,D,E,F,G) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7 - H: %8',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G)]))
-    #define ZRN_LOG_MSG_8(MSG,A,B,C,D,E,F,G,H) diag_log (DEBUG_HEADER + (format [' %1 - A: %2 - B: %3 - C: %4 - D: %5 - E: %6 - F: %7 - H: %8 - I: %9',QUOTE(MSG),RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G),RETNIL(H)]))
-
-    #define ZRN_LOG_1(A) diag_log (DEBUG_HEADER + (format [' A: %1',RETNIL(A)]))
-    #define ZRN_LOG_2(A,B) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2',RETNIL(A),RETNIL(B)]))
-    #define ZRN_LOG_3(A,B,C) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3',RETNIL(A),RETNIL(B),RETNIL(C)]))
-    #define ZRN_LOG_4(A,B,C,D) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D)]))
-    #define ZRN_LOG_5(A,B,C,D,E) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E)]))
-    #define ZRN_LOG_6(A,B,C,D,E,F) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F)]))
-    #define ZRN_LOG_7(A,B,C,D,E,F,G) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G)]))
-    #define ZRN_LOG_8(A,B,C,D,E,F,G,H) diag_log (DEBUG_HEADER + (format [' A: %1 - B: %2 - C: %3 - D: %4 - E: %5 - F: %6 - H: %7 - I: %8',RETNIL(A),RETNIL(B),RETNIL(C),RETNIL(D),RETNIL(E),RETNIL(F),RETNIL(G),RETNIL(H)]))
-
-#else
-    #define ZRN_SCRIPTNAME(var1)
-
-    #define ZRN_LOG_MSG_1(MSG,A)
-    #define ZRN_LOG_MSG_2(MSG,A,B)
-    #define ZRN_LOG_MSG_3(MSG,A,B,C)
-    #define ZRN_LOG_MSG_4(MSG,A,B,C,D)
-    #define ZRN_LOG_MSG_5(MSG,A,B,C,D,E)
-    #define ZRN_LOG_MSG_6(MSG,A,B,C,D,E,F)
-    #define ZRN_LOG_MSG_7(MSG,A,B,C,D,E,F,G)
-    #define ZRN_LOG_MSG_8(MSG,A,B,C,D,E,F,G,H)
-
-    #define ZRN_LOG_1(A)
-    #define ZRN_LOG_2(A,B)
-    #define ZRN_LOG_3(A,B,C)
-    #define ZRN_LOG_4(A,B,C,D)
-    #define ZRN_LOG_5(A,B,C,D,E)
-    #define ZRN_LOG_6(A,B,C,D,E,F)
-    #define ZRN_LOG_7(A,B,C,D,E,F,G)
-    #define ZRN_LOG_8(A,B,C,D,E,F,G,H)
-
-#endif
\ No newline at end of file

From 3fea9346c868bfba393d2afb4b84fe1386a03057 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 3 Jan 2025 02:06:37 +0100
Subject: [PATCH 041/139] Update addons/compat_gm/compat_gm_wardrobe/config.cpp

Co-authored-by: Dart <59131299+DartRuffian@users.noreply.github.com>
---
 addons/compat_gm/compat_gm_wardrobe/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/config.cpp b/addons/compat_gm/compat_gm_wardrobe/config.cpp
index a3a1683f408..b8d090871c9 100644
--- a/addons/compat_gm/compat_gm_wardrobe/config.cpp
+++ b/addons/compat_gm/compat_gm_wardrobe/config.cpp
@@ -15,7 +15,7 @@ class CfgPatches {
         };
         skipWhenMissingDependencies = 1;
 
-        requiredVersion = 2.02;
+        requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};

From 39f50cdd3b04d4f44650aea6342847cfc59c586b Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 3 Jan 2025 02:06:56 +0100
Subject: [PATCH 042/139] Update
 addons/compat_sog/compat_sog_wardrobe/config.cpp

Co-authored-by: Dart <59131299+DartRuffian@users.noreply.github.com>
---
 addons/compat_sog/compat_sog_wardrobe/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe/config.cpp b/addons/compat_sog/compat_sog_wardrobe/config.cpp
index e07a5b05ec2..16eefada3fa 100644
--- a/addons/compat_sog/compat_sog_wardrobe/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe/config.cpp
@@ -15,7 +15,7 @@ class CfgPatches {
         };
         skipWhenMissingDependencies = 1;
 
-        requiredVersion = 2.02;
+        requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};

From 1ba5bd6197e08da79986d6d5e16187e62a4e8b21 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 3 Jan 2025 02:07:04 +0100
Subject: [PATCH 043/139] Update
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp

Co-authored-by: Dart <59131299+DartRuffian@users.noreply.github.com>
---
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
index 819156bcfd8..f561e41a5f0 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
@@ -15,7 +15,7 @@ class CfgPatches {
         };
 		skipWhenMissingDependencies = 1;
 
-        requiredVersion = 2.02;
+        requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};

From 5cd501ffea93113c2658c74af87d772eef4ca342 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 3 Jan 2025 02:07:15 +0100
Subject: [PATCH 044/139] Update addons/compat_ws/compat_ws_wardrobe/config.cpp

Co-authored-by: Dart <59131299+DartRuffian@users.noreply.github.com>
---
 addons/compat_ws/compat_ws_wardrobe/config.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
index a25c5e3f89e..68cb3f34dab 100644
--- a/addons/compat_ws/compat_ws_wardrobe/config.cpp
+++ b/addons/compat_ws/compat_ws_wardrobe/config.cpp
@@ -15,7 +15,7 @@ class CfgPatches {
         };
         skipWhenMissingDependencies = 1;
 
-        requiredVersion = 2.02;
+        requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};

From 45c34719ad287b662b5bdcacb2b202d428caec13 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:12:41 +0100
Subject: [PATCH 045/139] pvar -> ace_

---
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  | 12 ++--
 .../compat_gm/compat_gm_wardrobe/Uniforms.hpp | 68 +++++++++----------
 .../compat_gm/compat_gm_wardrobe/config.cpp   |  2 +-
 .../compat_rf_wardrobe/CfgWardrobe.hpp        |  4 +-
 .../compat_rf/compat_rf_wardrobe/Helmets.hpp  |  8 +--
 .../compat_rf/compat_rf_wardrobe/Uniforms.hpp | 16 ++---
 .../compat_rf/compat_rf_wardrobe/config.cpp   |  2 +-
 .../compat_sog_wardrobe/Booniehats.hpp        | 26 +++----
 .../compat_sog_wardrobe/Pilothelmets.hpp      |  8 +--
 .../compat_sog_wardrobe/Uniforms_B.hpp        |  4 +-
 .../compat_sog_wardrobe/Uniforms_O.hpp        |  4 +-
 .../compat_sog/compat_sog_wardrobe/config.cpp |  2 +-
 .../config.cpp                                |  2 +-
 .../compat_ws_wardrobe/CfgWardrobe.hpp        |  4 +-
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  | 34 +++++-----
 .../compat_ws/compat_ws_wardrobe/config.cpp   |  2 +-
 addons/wardrobe/compat_vanilla/Facewear.hpp   | 36 +++++-----
 addons/wardrobe/compat_vanilla/Uniforms.hpp   |  4 +-
 .../functions/fn_compare_components.sqf       |  4 +-
 addons/wardrobe/functions/fn_isModifiable.sqf |  2 +-
 addons/wardrobe/script_macros_wardrobe.hpp    |  8 +--
 21 files changed, 123 insertions(+), 129 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index 1d8a7e52f32..c3d4d023e66 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -6,9 +6,9 @@ class gm_ge_headgear_psh77_cover_up_base;
 class gm_ge_headgear_psh77_down_base;
 class gm_ge_headgear_psh77_up_base;
 
-class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp"   }; }; };
-class gm_ge_bgs_headgear_psh77_cover_up_smp   : gm_ge_headgear_psh77_cover_up_base   { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" }; }; };
-class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str"   }; }; };
-class gm_ge_bgs_headgear_psh77_cover_up_str   : gm_ge_headgear_psh77_cover_up_base   { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" }; }; };
-class gm_ge_headgear_psh77_down_oli           : gm_ge_headgear_psh77_down_base       { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_headgear_psh77_up_oli"             }; }; };
-class gm_ge_headgear_psh77_up_oli             : gm_ge_headgear_psh77_up_base         { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_headgear_psh77_down_oli"           }; }; };
\ No newline at end of file
+class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp"   }; }; };
+class gm_ge_bgs_headgear_psh77_cover_up_smp   : gm_ge_headgear_psh77_cover_up_base   { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" }; }; };
+class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str"   }; }; };
+class gm_ge_bgs_headgear_psh77_cover_up_str   : gm_ge_headgear_psh77_cover_up_base   { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" }; }; };
+class gm_ge_headgear_psh77_down_oli           : gm_ge_headgear_psh77_down_base       { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_headgear_psh77_up_oli"             }; }; };
+class gm_ge_headgear_psh77_up_oli             : gm_ge_headgear_psh77_up_base         { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_headgear_psh77_down_oli"           }; }; };
\ No newline at end of file
diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index 999de64c24e..324b4f9fc6b 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -5,53 +5,53 @@
 class gm_ge_bgs_uniform_special_80_base;
 class gm_ge_bgs_uniform_special_rolled_80_base;
 
-class gm_ge_bgs_uniform_special_80_grn        : gm_ge_bgs_uniform_special_80_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) }; }; };
-class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) }; }; };
+class gm_ge_bgs_uniform_special_80_grn        : gm_ge_bgs_uniform_special_80_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) }; }; };
+class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) }; }; };
 
-class gm_ge_bgs_uniform_special_80_blk        : gm_ge_bgs_uniform_special_80_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) }; }; };
-class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) }; }; };
+class gm_ge_bgs_uniform_special_80_blk        : gm_ge_bgs_uniform_special_80_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) }; }; };
+class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) }; }; };
 
 
 class gm_ge_army_uniform_pilot_base;
 class gm_ge_army_uniform_pilot_rolled_base;
 
-class gm_ge_army_uniform_pilot_sar        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) }; }; };
-class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) }; }; };
+class gm_ge_army_uniform_pilot_sar        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) }; }; };
+class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) }; }; };
 
-class gm_ge_army_uniform_pilot_oli        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) }; }; };
-class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) }; }; };
+class gm_ge_army_uniform_pilot_oli        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) }; }; };
+class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) }; }; };
 
-class gm_ge_pol_uniform_pilot_grn        : gm_ge_army_uniform_pilot_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) }; }; };
-class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) }; }; };
+class gm_ge_pol_uniform_pilot_grn        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) }; }; };
+class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) }; }; };
 
 class gm_ge_uniform_pilot_commando_base;
 class gm_ge_uniform_pilot_commando_rolled_base;
 
-class gm_ge_uniform_pilot_commando_oli        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) }; }; };
+class gm_ge_uniform_pilot_commando_oli        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) }; }; };
 
-class gm_ge_uniform_pilot_commando_gry        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) }; }; };
+class gm_ge_uniform_pilot_commando_gry        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) }; }; };
 
-class gm_ge_uniform_pilot_commando_blk        : gm_ge_uniform_pilot_commando_base        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) }; }; };
+class gm_ge_uniform_pilot_commando_blk        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) }; }; };
+class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) }; }; };
 
 class gm_pl_uniform_soldier_80_base;
 
-class gm_pl_army_uniform_soldier_80_frog        : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) }; }; };
-class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) }; }; };
+class gm_pl_army_uniform_soldier_80_frog        : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) }; }; };
+class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) }; }; };
 
-class gm_pl_army_uniform_soldier_80_moro        : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) }; }; };
-class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) }; }; };
+class gm_pl_army_uniform_soldier_80_moro        : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) }; }; };
+class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) }; }; };
 
 
 class gm_ge_uniform_soldier_90_base;
 
-class gm_ge_uniform_soldier_90_trp        : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) }; }; };
-class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) }; }; };
+class gm_ge_uniform_soldier_90_trp        : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) }; }; };
+class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) }; }; };
 
-class gm_ge_uniform_soldier_90_flk        : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) }; }; };
-class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) }; }; };
+class gm_ge_uniform_soldier_90_flk        : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) }; }; };
+class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) }; }; };
 
 
 
@@ -59,24 +59,24 @@ class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { clas
 // Gloves
 
 class gm_gc_uniform_soldier_80_base;
-class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str)        }; }; };
-class gm_gc_army_uniform_soldier_80_str        : gm_gc_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) }; }; };
+class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str)        }; }; };
+class gm_gc_army_uniform_soldier_80_str        : gm_gc_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) }; }; };
 
 class gm_ge_uniform_soldier_80_base;
-class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols)        }; }; };
-class gm_ge_army_uniform_soldier_80_ols        : gm_ge_uniform_soldier_80_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) }; }; };
+class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols)        }; }; };
+class gm_ge_army_uniform_soldier_80_ols        : gm_ge_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) }; }; };
 
 
 // Mixed case -> Base Interaction
 class gm_ge_army_uniform_soldier_bdu_80_wdl;
 class gm_ge_army_uniform_soldier_bdu_rolled_80_wdl;
 
-class gm_xx_uniform_soldier_bdu_80_wdl          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
-class gm_xx_uniform_soldier_bdu_rolled_80_wdl   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
-class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl)   }; }; };
+class gm_xx_uniform_soldier_bdu_80_wdl          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
+class gm_xx_uniform_soldier_bdu_rolled_80_wdl   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
+class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl)   }; }; };
 
-class gm_xx_uniform_soldier_bdu_80_oli          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
-class gm_xx_uniform_soldier_bdu_rolled_80_oli   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
-class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl        { class PVAR(wardrobe) : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_rolled_80_oli)   }; }; };
+class gm_xx_uniform_soldier_bdu_80_oli          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
+class gm_xx_uniform_soldier_bdu_rolled_80_oli   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
+class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_rolled_80_oli)   }; }; };
 
 
diff --git a/addons/compat_gm/compat_gm_wardrobe/config.cpp b/addons/compat_gm/compat_gm_wardrobe/config.cpp
index a3a1683f408..3ddc38573a5 100644
--- a/addons/compat_gm/compat_gm_wardrobe/config.cpp
+++ b/addons/compat_gm/compat_gm_wardrobe/config.cpp
@@ -10,7 +10,7 @@ class CfgPatches {
         VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
-            QPVAR(wardrobe),
+            "ace_wardrobe",
             "gm_core"
         };
         skipWhenMissingDependencies = 1;
diff --git a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
index 7973d34ce81..dc891c51af4 100644
--- a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
@@ -14,8 +14,8 @@ class CfgWeapons
 
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
-    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
-    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
 };
 
 
diff --git a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
index 111db01f951..8b38ea87608 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
@@ -6,15 +6,15 @@
 
 
 #define HELMET_VARIANT(color)\
-class CN(color): H_HelmetHeavy_Black_RF            { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
-class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN(color))    }; }; };\
+class CN(color): H_HelmetHeavy_Black_RF            { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
+class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN(color))    }; }; };\
 
 
 // Base Classes
 class H_HelmetAggressor_F;
 
-class H_HelmetHeavy_Black_RF         : H_HelmetAggressor_F    { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
-class H_HelmetHeavy_VisorUp_Black_RF : H_HelmetHeavy_Black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "H_HelmetHeavy_Black_RF"         }; }; };
+class H_HelmetHeavy_Black_RF         : H_HelmetAggressor_F    { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
+class H_HelmetHeavy_VisorUp_Black_RF : H_HelmetHeavy_Black_RF { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "H_HelmetHeavy_Black_RF"         }; }; };
 
 // Variants
 HELMET_VARIANT(Hex)
diff --git a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
index 7bd89dc0e8c..fc1af3df27a 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
@@ -4,8 +4,8 @@ class Uniform_Base;
 
 // Macros
 #define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
+class class1: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
 
 // Simple Variants
 UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
@@ -13,11 +13,11 @@ UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF)
 
 
 // Pilot Jackets
-class U_C_PilotJacket_black_RF      : Uniform_Base             { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
-class U_C_PilotJacket_open_black_RF : U_C_PilotJacket_black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
+class U_C_PilotJacket_black_RF      : Uniform_Base             { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
+class U_C_PilotJacket_open_black_RF : U_C_PilotJacket_black_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
 
-class U_C_PilotJacket_brown_RF      : U_C_PilotJacket_black_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
-class U_C_PilotJacket_open_brown_RF : U_C_PilotJacket_brown_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
+class U_C_PilotJacket_brown_RF      : U_C_PilotJacket_black_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
+class U_C_PilotJacket_open_brown_RF : U_C_PilotJacket_brown_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
 
-class U_C_PilotJacket_lbrown_RF      : U_C_PilotJacket_black_RF  { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
-class U_C_PilotJacket_open_lbrown_RF : U_C_PilotJacket_lbrown_RF { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
+class U_C_PilotJacket_lbrown_RF      : U_C_PilotJacket_black_RF  { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
+class U_C_PilotJacket_open_lbrown_RF : U_C_PilotJacket_lbrown_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
diff --git a/addons/compat_rf/compat_rf_wardrobe/config.cpp b/addons/compat_rf/compat_rf_wardrobe/config.cpp
index 704ee9bf340..717c785aa98 100644
--- a/addons/compat_rf/compat_rf_wardrobe/config.cpp
+++ b/addons/compat_rf/compat_rf_wardrobe/config.cpp
@@ -10,7 +10,7 @@ class CfgPatches {
         VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
-            QPVAR(wardrobe),
+            "ace_wardrobe",
             "RF_Data_Loadorder"
         };
         skipWhenMissingDependencies = 1;
diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 0cb46ac35c9..5db08f4397d 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -13,19 +13,19 @@
 
 // Base Boonie
 #define CAMO_BASE 01
-class CN(02,CAMO_BASE) : vn_b_headgear_base { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(01,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(04,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) }; }; };
+class CN(02,CAMO_BASE) : vn_b_headgear_base { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(01,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(04,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
+class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) }; }; };
 
 
 #define CN_COLORS(CAMO)\
-class CN(02,CAMO) : CN(02,01)   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(01,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(03,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(04,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(05,CAMO) : CN(02,CAMO) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) }; }; };\
+class CN(02,CAMO) : CN(02,01)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(01,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(03,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(04,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) }; }; };\
+class CN(05,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) }; }; };\
 
 CN_COLORS(02)
 CN_COLORS(03)
@@ -37,9 +37,9 @@ CN_COLORS(05)
 // 06-08 anzac
 
 #define BOONIE_ANZAC(VAR)
-class CN(06,VAR) : CN(02,01)  { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) }; }; };
-class CN(07,VAR) : CN(06,VAR) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) }; }; };
-class CN(08,VAR) : CN(06,VAR) { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) }; }; };
+class CN(06,VAR) : CN(02,01)  { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) }; }; };
+class CN(07,VAR) : CN(06,VAR) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) }; }; };
+class CN(08,VAR) : CN(06,VAR) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) }; }; };
 
 BOONIE_ANZAC(01)
 BOONIE_ANZAC(02)
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
index 8e461d7da1d..3f8464a3215 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
@@ -7,8 +7,8 @@
 
 
 #define HELMET_VARIANT(side,var1,var2)\
-class CN01(side,var1,var2) : base_class_up { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN02(side,var1,var2)) }; }; };\
-class CN02(side,var1,var2) : base_class_dn { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };
+class CN01(side,var1,var2) : base_class_up { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN02(side,var1,var2)) }; }; };\
+class CN02(side,var1,var2) : base_class_dn { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };
 
 
 // Base classes in CfgWeapons.hpp
@@ -43,5 +43,5 @@ HELMET_VARIANT(b,svh4,05)
 HELMET_VARIANT(b,svh4,06)
 
 // Special Case zsh3
-class vn_o_helmet_zsh3_01 :  vn_o_headgear_base  { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(vn_o_helmet_zsh3_02) }; }; };
-class vn_o_helmet_zsh3_02 :  vn_o_helmet_zsh3_01 { class PVAR(wardrobe) : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(vn_o_helmet_zsh3_01) }; }; };
+class vn_o_helmet_zsh3_01 :  vn_o_headgear_base  { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(vn_o_helmet_zsh3_02) }; }; };
+class vn_o_helmet_zsh3_02 :  vn_o_helmet_zsh3_01 { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(vn_o_helmet_zsh3_01) }; }; };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index cfa3ee4cf33..da08f84f6e0 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -6,8 +6,8 @@ class vn_b_uniform_base;
 
 
 #define UNIFORM_BASE_B(class1,class2)\
-class class1: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: vn_b_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
+class class1: vn_b_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: vn_b_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
 
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
 
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
index 0ed331e0da9..a7119828511 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
@@ -1,8 +1,8 @@
 class vn_o_uniform_base;
 
 #define UNIFORM_BASE_O(class1,class2)\
-class class1: vn_o_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: vn_o_uniform_base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class1: vn_o_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: vn_o_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
 
 // OPFOR
 
diff --git a/addons/compat_sog/compat_sog_wardrobe/config.cpp b/addons/compat_sog/compat_sog_wardrobe/config.cpp
index e07a5b05ec2..509b6ea2c6f 100644
--- a/addons/compat_sog/compat_sog_wardrobe/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe/config.cpp
@@ -10,7 +10,7 @@ class CfgPatches {
         VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
-            QPVAR(wardrobe),
+            "ace_wardrobe",
             "vn_data_f"
         };
         skipWhenMissingDependencies = 1;
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
index 819156bcfd8..b982997e002 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
@@ -10,7 +10,7 @@ class CfgPatches {
 		VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
-            QPVAR(wardrobe),
+            "ace_wardrobe",
             "vn_data_f"
         };
 		skipWhenMissingDependencies = 1;
diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 5edba25847d..a6f3f6fb16a 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -4,8 +4,8 @@ class CfgWeapons
 {
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
-    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
-    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };
 
     #include "Turbans.hpp"
 };
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 8b6fcc4a237..cc4ea18f268 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -5,25 +5,25 @@
 #define QCN(version,color) Q(CN(version,color))
 
 #define COLORGROUP(COLOR)\
-class CN(01,COLOR): lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
-class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
-class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
-class CN(04,COLOR): lxWS_H_turban_04_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };
+class CN(01,COLOR): lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
+class CN(02,COLOR): lxWS_H_turban_02_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
+class CN(03,COLOR): lxWS_H_turban_03_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
+class CN(04,COLOR): lxWS_H_turban_04_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };
 
 
 #define COLORGROUP_SPECIAL(COLOR)\
-class CN(02,COLOR): lxWS_H_turban_02_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
-class CN(03,COLOR): lxWS_H_turban_03_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };
+class CN(02,COLOR): lxWS_H_turban_02_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
+class CN(03,COLOR): lxWS_H_turban_03_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };
 
 
 // BASECLASS
 class H_Shemag_khk;
 
-class H_turban_02_mask_black_lxws : H_Shemag_khk      { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) }; components[] = { "lxWS_H_bmask_base" }; }; };
-class lxWS_H_turban_01_black : H_Shemag_khk           { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" }; }; };
+class H_turban_02_mask_black_lxws : H_Shemag_khk      { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) }; components[] = { "lxWS_H_bmask_base" }; }; };
+class lxWS_H_turban_01_black : H_Shemag_khk           { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
+class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" }; }; };
 
 // VARIATIONS
 COLORGROUP(blue)
@@ -38,9 +38,9 @@ COLORGROUP_SPECIAL(green_pattern)
 
 
 // Super Special Manual blabla
-class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
-class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
-class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
\ No newline at end of file
+class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
+class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
+class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
+class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
\ No newline at end of file
diff --git a/addons/compat_ws/compat_ws_wardrobe/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
index a25c5e3f89e..a3d885cc333 100644
--- a/addons/compat_ws/compat_ws_wardrobe/config.cpp
+++ b/addons/compat_ws/compat_ws_wardrobe/config.cpp
@@ -10,7 +10,7 @@ class CfgPatches {
         VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
-            QPVAR(wardrobe),
+            "ace_wardrobe",
             "Characters_f_lxWS_headgear"
         };
         skipWhenMissingDependencies = 1;
diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index 0f73ff3b05a..64ebb57bf14 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -6,35 +6,35 @@ class G_WirelessEarpiece_base_F;
 class G_EyeProtectors_base_F;
 
 // Common Components
-class G_Lowprofile : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
-class G_Combat : None     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
+class G_Lowprofile : None { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
+class G_Combat : None     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
 
-class G_Aviator : None      { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
-class G_Shades_Black : None { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" };  components[] = {"G_Shades_Black"}; }; };
+class G_Aviator : None      { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
+class G_Shades_Black : None { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" };  components[] = {"G_Shades_Black"}; }; };
 
 
 // Balaclava, black
-class G_Balaclava_blk : None                   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
-class G_Balaclava_combat : G_Balaclava_blk     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
-class G_Balaclava_lowprofile : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
+class G_Balaclava_blk : None                   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
+class G_Balaclava_combat : G_Balaclava_blk     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
+class G_Balaclava_lowprofile : G_Balaclava_blk { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None                   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" };   components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
+class G_Balaclava_TI_blk_F : None                   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" };   components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" };   components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" };   components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
 
 // Bandana, Black
-class G_Bandanna_blk : G_Balaclava_blk { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
+class G_Bandanna_blk : G_Balaclava_blk { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
 
-class G_Bandanna_shades : G_Bandanna_blk     { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };   components[] = {"G_Bandanna_blk", "G_Shades_Black"  }; }; };
-class G_Bandanna_sport : G_Bandanna_shades   { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Bandanna_blk", "G_Sport_Blackred"}; }; };
-class G_Bandanna_aviator : G_Bandanna_shades { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };        components[] = {"G_Bandanna_blk", "G_Aviator"   }; }; };
+class G_Bandanna_shades : G_Bandanna_blk     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };   components[] = {"G_Bandanna_blk", "G_Shades_Black"  }; }; };
+class G_Bandanna_sport : G_Bandanna_shades   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Bandanna_blk", "G_Sport_Blackred"}; }; };
+class G_Bandanna_aviator : G_Bandanna_shades { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };        components[] = {"G_Bandanna_blk", "G_Aviator"   }; }; };
 
 
 // Eye Protector
-class G_EyeProtectors_F :  G_EyeProtectors_base_F         { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_EyeProtectors_F"}; }; };
-class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
-class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F  { class PVAR(wardrobe) : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_WirelessEarpiece_F"}; }; };
+class G_EyeProtectors_F :  G_EyeProtectors_base_F         { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_EyeProtectors_F"}; }; };
+class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
+class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F  { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_WirelessEarpiece_F"}; }; };
diff --git a/addons/wardrobe/compat_vanilla/Uniforms.hpp b/addons/wardrobe/compat_vanilla/Uniforms.hpp
index e7c46ed163b..18d783bcccd 100644
--- a/addons/wardrobe/compat_vanilla/Uniforms.hpp
+++ b/addons/wardrobe/compat_vanilla/Uniforms.hpp
@@ -3,8 +3,8 @@ class Uniform_Base;
 
 // Macros
 #define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class PVAR(wardrobe) : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class1: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
 
 
 // Vanilla CTRG Uniform
diff --git a/addons/wardrobe/functions/fn_compare_components.sqf b/addons/wardrobe/functions/fn_compare_components.sqf
index a2acbb4a7df..ff90d18ab19 100644
--- a/addons/wardrobe/functions/fn_compare_components.sqf
+++ b/addons/wardrobe/functions/fn_compare_components.sqf
@@ -17,8 +17,8 @@
 
 params ["_cfg_origin", "_cfg_tgt"];
 
-private _current = getArray (_cfg_origin >> QPVAR(wardrobe) >> "components");
-private _needed  = getArray (_cfg_tgt    >> QPVAR(wardrobe) >> "components");
+private _current = getArray (_cfg_origin >> "ace_wardrobe" >> "components");
+private _needed  = getArray (_cfg_tgt    >> "ace_wardrobe" >> "components");
 
 private _missing = []; 
 
diff --git a/addons/wardrobe/functions/fn_isModifiable.sqf b/addons/wardrobe/functions/fn_isModifiable.sqf
index befaed14ede..274339091a5 100644
--- a/addons/wardrobe/functions/fn_isModifiable.sqf
+++ b/addons/wardrobe/functions/fn_isModifiable.sqf
@@ -22,4 +22,4 @@ params [
 
 if (isNull _cfg) exitWith {false};
 // Checks if the config has the property without it being inherited(!)
-count ( Q(configName _x  isEqualTo QQPVAR(wardrobe)) configClasses _cfg ) > 0
\ No newline at end of file
+count ( Q(configName _x  isEqualTo ""ace_wardrobe"") configClasses _cfg ) > 0
\ No newline at end of file
diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
index 3759c81b5bd..86ab5b50b55 100644
--- a/addons/wardrobe/script_macros_wardrobe.hpp
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -14,12 +14,6 @@
 
 #define QADDON Q(ADDON)
 
-// Prefix Variables
-#define PVAR(var1) DOUBLES(PREFIX,var1)
-#define QPVAR(var1) QUOTE(PVAR(var1))
-#define QQPVAR(var1) QUOTE(QPVAR(var1))
-
 // Paths
 #define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
-#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
-#define PATH_TO_ADDON(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\var1)
\ No newline at end of file
+#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
\ No newline at end of file

From c4a98d919e95b67821bf620f6e20d17e9ddf43b6 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:13:10 +0100
Subject: [PATCH 046/139] -> QPATHTOF

---
 addons/wardrobe/CfgVehicles.hpp                                | 2 +-
 addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/wardrobe/CfgVehicles.hpp b/addons/wardrobe/CfgVehicles.hpp
index 3c2f0e38775..2035d60bf50 100644
--- a/addons/wardrobe/CfgVehicles.hpp
+++ b/addons/wardrobe/CfgVehicles.hpp
@@ -5,7 +5,7 @@ class CfgVehicles {
             class ACE_Equipment {
                 class ADDON {
                     displayName = CSTRING(actionTitle); // Text shown to user
-                    icon = PATH_TO_ADDON(data\wardrobe_logo.paa);
+                    icon = QPATHTOF(data\wardrobe_logo.paa);
                     condition = Q([_player] call FUNC(addActions_condition));
                     statement = "";
                     insertChildren = Q([_player] call FUNC(addActions));
diff --git a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
index 341a3143afc..7d7f6ad97e8 100644
--- a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
@@ -107,7 +107,7 @@ The most efficient variant i can think of would be following.
     "CLOTHES",                                  // filter slots
     "Switch to next Variant",                   // Display Name
     [],                                         // Color
-    PATH_TO_ADDON(data\wardrobe_logo.paa),    // Icon
+    QPATHTOF(data\wardrobe_logo.paa),    // Icon
     [
         {true},                                 // Condition Enable action
         {true}                                  // Condition Show Action

From 61eae5d3cb3cb6fb819a2ff5d8e0d75219f2717a Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:17:43 +0100
Subject: [PATCH 047/139] -> root + rename

---
 .../{XEH/CfgXEH.hpp => CfgEventHandlers.hpp}  |  2 +-
 addons/wardrobe/{XEH => }/XEH_preInit.sqf     | 26 -------------------
 addons/wardrobe/config.cpp                    |  2 +-
 3 files changed, 2 insertions(+), 28 deletions(-)
 rename addons/wardrobe/{XEH/CfgXEH.hpp => CfgEventHandlers.hpp} (63%)
 rename addons/wardrobe/{XEH => }/XEH_preInit.sqf (59%)

diff --git a/addons/wardrobe/XEH/CfgXEH.hpp b/addons/wardrobe/CfgEventHandlers.hpp
similarity index 63%
rename from addons/wardrobe/XEH/CfgXEH.hpp
rename to addons/wardrobe/CfgEventHandlers.hpp
index cde9653434e..82da8b574b8 100644
--- a/addons/wardrobe/XEH/CfgXEH.hpp
+++ b/addons/wardrobe/CfgEventHandlers.hpp
@@ -1,6 +1,6 @@
 // No need to change anything here
 class Extended_PreInit_EventHandlers {
     class ADDON {
-        init = QUOTE(call COMPILE_FILE(XEH\XEH_preInit));
+        init = QUOTE(call COMPILE_FILE(XEH_preInit));
     };
 };
\ No newline at end of file
diff --git a/addons/wardrobe/XEH/XEH_preInit.sqf b/addons/wardrobe/XEH_preInit.sqf
similarity index 59%
rename from addons/wardrobe/XEH/XEH_preInit.sqf
rename to addons/wardrobe/XEH_preInit.sqf
index 1a461780dd4..4dbebbc46c4 100644
--- a/addons/wardrobe/XEH/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH_preInit.sqf
@@ -1,31 +1,5 @@
 #include "../script_component.hpp"
 
-
-/*
-here, you put in your CBA Settings so they are available in the editor!
-
-https://github.com/CBATeam/CBA_A3/wiki/CBA-Settings-System#create-a-custom-setting-for-mission-or-mod
-
-MACROS Used:
-SETLSTRING(test) -> [LSTRING(set_test), LSTRING(set_test_desc)] -> STR_prefix_component_set_test // STR_prefix_component_set_test_desc
-SET(test) -> ADDON_set_test
-QSET(test) -> "ADDON_set_test"
-*/
-
-/*
-[
-    QSET(displayMusic),                         //    _setting     - Unique setting name. Matches resulting variable name <STRING>
-    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
-    ["Display Music Title","This enables the message of the currently played music title by the CVO Music System"],
-                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
-    ["CVO", "CVO Music"],                       //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
-    false,                                      //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
-    0,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
-    false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
-] call CBA_fnc_addSetting;
-*/
-
 [
     QSET(enable_action),                        //    _setting     - Unique setting name. Matches resulting variable name <STRING>
     "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index af135d83bea..daf52d50b31 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -21,7 +21,7 @@ class CfgPatches {
 };
 
 #include "CfgFunctions.hpp"
-#include "XEH\CfgXEH.hpp"
+#include "CfgEventHandlers.hpp"
 
 #include "CfgVehicles.hpp"
 #include "CfgSounds.hpp"

From fe8591593b8edaaca5be3d656cc4a2fe1b6d1edb Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:19:16 +0100
Subject: [PATCH 048/139] comment cleanup

---
 .../contextMenu/fn_addCM_nextvariant.sqf      | 87 -------------------
 1 file changed, 87 deletions(-)

diff --git a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
index 7d7f6ad97e8..5b402b50f42 100644
--- a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
@@ -15,93 +15,6 @@
 * Public: No
 */
 
-
-
-/*
-Description:
-    Adds context menu option to inventory display.
-
-Parameters:
-    _item                   - Item classname <STRING>
-                              Can be base class.
-
-                              Can be item type as reported by BIS_fnc_itemType:
-                                ["Equipment","Headgear"]
-                                ->
-                                "#Equipment" and/or "##Headgear"
-
-                              Wildcard:
-                                #All
-
-    _slots                  - Relevant slots <ARRAY, STRING>
-                              Values:
-                                    CLOTHES
-                                        UNIFORM
-                                        VEST
-                                        BACKPACK
-                                        HEADGEAR
-                                        GOGGLES
-
-    _displayName            String keys are automatically translated. <STRING, ARRAY>
-        0: _displayName     - Option display name <STRING>
-        1: _tooltip         - Option tooltip <STRING>
-
-    _color                  - Option text color. Default alpha is 1.
-                              (default: [] = default color) <ARRAY>
-
-    _icon                   - Path to icon. (default: "" = no icon) <STRING>
-
-    _condition              <CODE, ARRAY>
-        0: _conditionEnable - Menu option is enabled and executed only if this
-                              condition reports 'true' (default: {true}) <CODE>
-        1: _conditionShow   - Menu option is shown only if this condition
-                              reports 'true'. (optional, default: {true}) <CODE>
-
-                            - Passed arguments:
-                              params ["_unit", "_container", "_item", "_slot", "_params"];
-
-    _statement              - Option statement (default: {}) <CODE>
-                              Return true to keep context menu opened.
-
-                            - Passed arguments:
-                              params ["_unit", "_container", "_item", "_slot", "_params"];
-
-    _consume                - Remove the item before executing the statement
-                              code. (default: false) <BOOLEAN>
-
-                            - This does NOT work for the following slots:
-                                GROUND
-                                CARGO
-
-    _params                 - Arguments passed as '_this select 4' to condition and
-                              statement (optional, default: []) <ANY>
-
-Returns:
-    Nothing/Undefined.
-
-Examples:
-    (begin example)
-        ["#All", "ALL", ">DEBUG ACTION<", nil, nil, {true}, {
-            params ["_unit", "_container", "_item", "_slot", "_params"];
-            systemChat str [name _unit, typeOf _container, _item, _slot, _params];
-            true
-        }, false, [0,1,2]] call CBA_fnc_addItemContextMenuOption;
-    (end)
-*/
-
-
-
-/*
-To make this work i would need to add a Menu Option for each individual modfifiable item AND its potential variants.
-
-The most efficient variant i can think of would be following.
-1. Event Handler for when the inventory gets open.
-2. Get Current Modifiable Items.
-3. Check if they are already established (GVAR(contextMenu_hashmap) classname, config)
-4. For every new modifiable Item, create a ContextMenuOption for each of its variant
-- could make an event handler, everytime the inventory gets opened, it scans the wearables, if they are modifiable, (and not already established) adds the option for those items
-*/
-
 [
     "#ALL",                                     // filter items
     "CLOTHES",                                  // filter slots

From 4f9482b263e0edbd7b2a6dc71749802c3f6a900a Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:20:17 +0100
Subject: [PATCH 049/139] comment cleanup

---
 addons/wardrobe/XEH_preInit.sqf | 30 ++++++++++++++----------------
 1 file changed, 14 insertions(+), 16 deletions(-)

diff --git a/addons/wardrobe/XEH_preInit.sqf b/addons/wardrobe/XEH_preInit.sqf
index 4dbebbc46c4..3ecfb8d76d2 100644
--- a/addons/wardrobe/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH_preInit.sqf
@@ -1,25 +1,23 @@
 #include "../script_component.hpp"
 
 [
-    QSET(enable_action),                        //    _setting     - Unique setting name. Matches resulting variable name <STRING>
-    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+    QSET(enable_action),
+    "CHECKBOX",
     SETLSTRING(enable_action),
-                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
-    [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
-    true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
-    1,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-    {},                                         //    _script      - Script to execute when setting is changed. (optional) <CODE>
-    false                                       //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+    [LSTRING(set_cat_main)],
+    true,
+    1,
+    {},
+    false
 ] call CBA_fnc_addSetting;
 
 [
-    QSET(enable_contextMenu),                   //    _setting     - Unique setting name. Matches resulting variable name <STRING>
-    "CHECKBOX",                                 //    _settingType - Type of setting. Can be "CHECKBOX", "EDITBOX", "LIST", "SLIDER" or "COLOR" <STRING>
+    QSET(enable_contextMenu),
+    "CHECKBOX",
     SETLSTRING(enable_contextMenu),
-                                                //    _title       - Display name or display name + tooltip (optional, default: same as setting name) <STRING, ARRAY>
-    [LSTRING(set_cat_main)],                    //    _category    - Category for the settings menu + optional sub-category <STRING, ARRAY>
-    true,                                       //    _valueInfo   - Extra properties of the setting depending of _settingType. See examples below <ANY>
-    1,                                          //    _isGlobal    - 1: all clients share the same setting, 2: setting can't be overwritten (optional, default: 0) <NUMBER>
-    FUNC(enable_contextMenu),                   //    _script      - Script to execute when setting is changed. (optional) <CODE>
-    true                                        //    _needRestart - Setting will be marked as needing mission restart after being changed. (optional, default false) <BOOL>
+    [LSTRING(set_cat_main)],
+    true,
+    1,
+    FUNC(enable_contextMenu),
+    true
 ] call CBA_fnc_addSetting;
\ No newline at end of file

From a62e45aaf62aeb44ba1cf78879bee65b4e2bf460 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:29:01 +0100
Subject: [PATCH 050/139] wardrobe/config

---
 addons/wardrobe/Baseclass.hpp               |  45 +++++--
 addons/wardrobe/CfgSounds.hpp               |   4 +-
 addons/wardrobe/compat_vanilla/Facewear.hpp | 126 +++++++++++++++++---
 addons/wardrobe/compat_vanilla/Uniforms.hpp |  12 +-
 4 files changed, 156 insertions(+), 31 deletions(-)

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 834310e4cac..79afb9a2379 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -23,19 +23,48 @@ class GVAR(base)
 };
 
 // Common Base Class for Uniforms with Sleeves Up/Down Variants
-class GVAR(base_U_sleeves_up)   : GVAR(base) { alternativeDisplayName = CSTRING(sleevesUp);   };
-class GVAR(base_U_sleeves_down) : GVAR(base) { alternativeDisplayName = CSTRING(sleevesDown); };
+class GVAR(base_U_sleeves_up)   : GVAR(base) {
+    alternativeDisplayName = CSTRING(sleevesUp);  
+};
+class GVAR(base_U_sleeves_down) : GVAR(base) {
+    alternativeDisplayName = CSTRING(sleevesDown);
+};
 
 // Common Base Class for Uniforms with Sleeves Up/Down Variants
-class GVAR(base_U_gloves_on)  : GVAR(base) { alternativeDisplayName = CSTRING(glovesOn);  };
-class GVAR(base_U_gloves_off) : GVAR(base) { alternativeDisplayName = CSTRING(glovesOff); };
+class GVAR(base_U_gloves_on)  : GVAR(base) {
+    alternativeDisplayName = CSTRING(glovesOn); 
+};
+class GVAR(base_U_gloves_off) : GVAR(base) {
+    alternativeDisplayName = CSTRING(glovesOff);
+};
 
 
 // Common Base Class for Uniforms who are open/closed in the front
-class GVAR(base_U_jacket_open)   : GVAR(base) { alternativeDisplayName = CSTRING(jacketOpen);  };
-class GVAR(base_U_jacket_closed) : GVAR(base) { alternativeDisplayName = CSTRING(jacketClose); };
+class GVAR(base_U_jacket_open)   : GVAR(base) {
+    alternativeDisplayName = CSTRING(jacketOpen); 
+};
+class GVAR(base_U_jacket_closed) : GVAR(base) {
+    alternativeDisplayName = CSTRING(jacketClose);
+};
 
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
-class GVAR(base_H_visor_up)   : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {CN_SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorUp); };
-class GVAR(base_H_visor_down) : GVAR(base) { duration = 0.3; gesture ="gestureNod"; sound[] = {CN_SOUND(helmet_visor,05)}; sound_timing = 0; alternativeDisplayName = CSTRING(visorDown); };
\ No newline at end of file
+class GVAR(base_H_visor_up)   : GVAR(base) {
+    duration = 0.3;
+    gesture ="gestureNod";
+
+    sound[] = {CN_SOUND(helmet_visor,05)};
+    sound_timing = 0;
+
+    alternativeDisplayName = CSTRING(visorUp);
+};
+
+class GVAR(base_H_visor_down) : GVAR(base) {
+    duration = 0.3;
+    gesture ="gestureNod";
+
+    sound[] = {CN_SOUND(helmet_visor,05)};
+    sound_timing = 0;
+
+    alternativeDisplayName = CSTRING(visorDown);
+};
\ No newline at end of file
diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
index de489c489fc..2c5ddd4f0f0 100644
--- a/addons/wardrobe/CfgSounds.hpp
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -1,5 +1,4 @@
 // Duration in this case is 10th of secounds. so 10 -> 1 sec, 15 -> 1.5sec, ...
-
 #define ENTRY(base,dur)\
 class GVAR(DOUBLES(base,dur))\
 {\
@@ -10,10 +9,9 @@ class GVAR(DOUBLES(base,dur))\
     titlesStructured = 0;\
 };
 
-
 class CfgSounds
 {
-	sounds[] = {}; // OFP required it filled, now it can be empty or absent depending on the game's version
+	sounds[] = {};
     ENTRY(fabric,06)
     ENTRY(fabric,07)
     ENTRY(fabric,16)
diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index 64ebb57bf14..59ac668761f 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -6,35 +6,125 @@ class G_WirelessEarpiece_base_F;
 class G_EyeProtectors_base_F;
 
 // Common Components
-class G_Lowprofile : None { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile" }; components[] = {"G_Lowprofile"}; }; };
-class G_Combat : None     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Combat"}; }; };
+class G_Lowprofile : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_lowprofile" };
+        components[] = {"G_Lowprofile"};
+    };
+};
+class G_Combat : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" };
+        components[] = {"G_Combat"};
+    };
+};
 
-class G_Aviator : None      { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator" }; components[] = {"G_Aviator"}; }; };
-class G_Shades_Black : None { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_shades" };  components[] = {"G_Shades_Black"}; }; };
+class G_Aviator : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_aviator" };
+        components[] = {"G_Aviator"};
+    };
+};
+class G_Shades_Black : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_shades" }; 
+        components[] = {"G_Shades_Black"};
+    };
+};
 
 
 // Balaclava, black
-class G_Balaclava_blk : None                   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" }; components[] = {"G_Balaclava_blk"}; }; };
-class G_Balaclava_combat : G_Balaclava_blk     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Combat"}; }; };
-class G_Balaclava_lowprofile : G_Balaclava_blk { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_blk" }; components[] = {"G_Balaclava_blk","G_Lowprofile"}; }; };
+class G_Balaclava_blk : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" };
+        components[] = {"G_Balaclava_blk"};
+    };
+};
+class G_Balaclava_combat : G_Balaclava_blk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_blk" };
+        components[] = {"G_Balaclava_blk","G_Combat"};
+    };
+};
+class G_Balaclava_lowprofile : G_Balaclava_blk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_blk" };
+        components[] = {"G_Balaclava_blk","G_Lowprofile"};
+    };
+};
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None                   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_blk_F" }; components[] = {"G_Balaclava_TI_blk_F"}; }; };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_blk_F" };   components[] = {"G_Balaclava_TI_blk_F","G_Combat"}; }; };
+class G_Balaclava_TI_blk_F : None {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_TI_G_blk_F" };
+        components[] = {"G_Balaclava_TI_blk_F"};
+    };
+};
+class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_TI_blk_F" };  
+        components[] = {"G_Balaclava_TI_blk_F","G_Combat"};
+    };
+};
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_G_tna_F" }; components[] = {"G_Balaclava_TI_tna_F"}; }; };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Balaclava_TI_tna_F" };   components[] = {"G_Balaclava_TI_tna_F","G_Combat"}; }; };
+class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_TI_G_tna_F" };
+        components[] = {"G_Balaclava_TI_tna_F"};
+    };
+};
+class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Balaclava_TI_tna_F" };  
+        components[] = {"G_Balaclava_TI_tna_F","G_Combat"};
+    };
+};
 
 // Bandana, Black
-class G_Bandanna_blk : G_Balaclava_blk { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" }; components[] = {"G_Bandanna_blk"}; }; };
+class G_Bandanna_blk : G_Balaclava_blk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" };
+        components[] = {"G_Bandanna_blk"};
+    };
+};
 
-class G_Bandanna_shades : G_Bandanna_blk     { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };   components[] = {"G_Bandanna_blk", "G_Shades_Black"  }; }; };
-class G_Bandanna_sport : G_Bandanna_shades   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" }; components[] = {"G_Bandanna_blk", "G_Sport_Blackred"}; }; };
-class G_Bandanna_aviator : G_Bandanna_shades { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };        components[] = {"G_Bandanna_blk", "G_Aviator"   }; }; };
+class G_Bandanna_shades : G_Bandanna_blk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };  
+        components[] = {"G_Bandanna_blk", "G_Shades_Black"  };
+    };
+};
+class G_Bandanna_sport : G_Bandanna_shades {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" };
+        components[] = {"G_Bandanna_blk", "G_Sport_Blackred"};
+    };
+};
+class G_Bandanna_aviator : G_Bandanna_shades {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };       
+        components[] = {"G_Bandanna_blk", "G_Aviator"   };
+    };
+};
 
 
 // Eye Protector
-class G_EyeProtectors_F :  G_EyeProtectors_base_F         { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_EyeProtectors_F"}; }; };
-class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" }; components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"}; }; };
-class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F  { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };                components[] = {"G_WirelessEarpiece_F"}; }; };
+class G_EyeProtectors_F :  G_EyeProtectors_base_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
+        components[] = {"G_EyeProtectors_F"};
+    };
+};
+class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" };
+        components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"};
+    };
+};
+class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
+        components[] = {"G_WirelessEarpiece_F"};
+    };
+};
diff --git a/addons/wardrobe/compat_vanilla/Uniforms.hpp b/addons/wardrobe/compat_vanilla/Uniforms.hpp
index 18d783bcccd..3d6fde86aed 100644
--- a/addons/wardrobe/compat_vanilla/Uniforms.hpp
+++ b/addons/wardrobe/compat_vanilla/Uniforms.hpp
@@ -3,8 +3,16 @@ class Uniform_Base;
 
 // Macros
 #define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class1: Uniform_Base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+        modifiableTo[] = { Q(class2) };\
+    };\
+};\
+class class2: Uniform_Base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+        modifiableTo[] = { Q(class1) };\
+    };\
+};
 
 
 // Vanilla CTRG Uniform

From 45e3ff07c9537fd1da8d4c448c257e789f39a2ed Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:40:26 +0100
Subject: [PATCH 051/139] sog/config

---
 .../compat_sog_wardrobe/Booniehats.hpp        | 82 +++++++++++++++----
 .../compat_sog_wardrobe/Pilothelmets.hpp      | 24 +++++-
 .../compat_sog_wardrobe/Uniforms_B.hpp        | 12 ++-
 .../compat_sog_wardrobe/Uniforms_O.hpp        | 12 ++-
 .../Uniforms.hpp                              |  3 +-
 5 files changed, 108 insertions(+), 25 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 5db08f4397d..ddf9c8690ef 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -12,20 +12,60 @@
 #define CN(variation,color) vn_b_boonie_##variation##_##color
 
 // Base Boonie
-#define CAMO_BASE 01
-class CN(02,CAMO_BASE) : vn_b_headgear_base { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(01,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(04,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) }; }; };
-class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) }; }; };
+#define CAMO_BASE 01\
+class CN(02,CAMO_BASE) : vn_b_headgear_base {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
+    };\
+};\
+class CN(01,CAMO_BASE) : CN(02,CAMO_BASE) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
+    };\
+};\
+class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
+    };\
+};\
+class CN(04,CAMO_BASE) : CN(02,CAMO_BASE) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
+    };\
+};\
+class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) };\
+    };\
+};
 
 
 #define CN_COLORS(CAMO)\
-class CN(02,CAMO) : CN(02,01)   { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(01,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(03,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(04,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) }; }; };\
-class CN(05,CAMO) : CN(02,CAMO) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) }; }; };\
+class CN(02,CAMO) : CN(02,01) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+    };\
+};\
+class CN(01,CAMO) : CN(02,CAMO) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+    };\
+};\
+class CN(03,CAMO) : CN(02,CAMO) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+    };\
+};\
+class CN(04,CAMO) : CN(02,CAMO) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) };\
+    };\
+};\
+class CN(05,CAMO) : CN(02,CAMO) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) };\
+    };\
+};
 
 CN_COLORS(02)
 CN_COLORS(03)
@@ -36,10 +76,22 @@ CN_COLORS(05)
 // Base classes in CfgWeapons.hpp
 // 06-08 anzac
 
-#define BOONIE_ANZAC(VAR)
-class CN(06,VAR) : CN(02,01)  { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) }; }; };
-class CN(07,VAR) : CN(06,VAR) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) }; }; };
-class CN(08,VAR) : CN(06,VAR) { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) }; }; };
+#define BOONIE_ANZAC(VAR)\
+class CN(06,VAR) : CN(02,01) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) };\
+    };\
+};\
+class CN(07,VAR) : CN(06,VAR) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) };\
+    };\
+};\
+class CN(08,VAR) : CN(06,VAR) {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) };\
+    };\
+};
 
 BOONIE_ANZAC(01)
 BOONIE_ANZAC(02)
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
index 3f8464a3215..e18be1d6910 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
@@ -7,8 +7,16 @@
 
 
 #define HELMET_VARIANT(side,var1,var2)\
-class CN01(side,var1,var2) : base_class_up { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN02(side,var1,var2)) }; }; };\
-class CN02(side,var1,var2) : base_class_dn { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN01(side,var1,var2)) }; }; };
+class CN01(side,var1,var2) : base_class_up {\
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up) {\
+        modifiableTo[] = { Q(CN02(side,var1,var2)) };\
+    };\
+};\
+class CN02(side,var1,var2) : base_class_dn {\
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) {\
+        modifiableTo[] = { Q(CN01(side,var1,var2)) };\
+    };\
+};
 
 
 // Base classes in CfgWeapons.hpp
@@ -43,5 +51,13 @@ HELMET_VARIANT(b,svh4,05)
 HELMET_VARIANT(b,svh4,06)
 
 // Special Case zsh3
-class vn_o_helmet_zsh3_01 :  vn_o_headgear_base  { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(vn_o_helmet_zsh3_02) }; }; };
-class vn_o_helmet_zsh3_02 :  vn_o_helmet_zsh3_01 { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(vn_o_helmet_zsh3_01) }; }; };
+class vn_o_helmet_zsh3_01 : vn_o_headgear_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up) {
+        modifiableTo[] = { Q(vn_o_helmet_zsh3_02) };
+    }; 
+};
+class vn_o_helmet_zsh3_02 : vn_o_helmet_zsh3_01 {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) {
+        modifiableTo[] = { Q(vn_o_helmet_zsh3_01) };
+    }; 
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index da08f84f6e0..be0f9307815 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -6,8 +6,16 @@ class vn_b_uniform_base;
 
 
 #define UNIFORM_BASE_B(class1,class2)\
-class class1: vn_b_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: vn_b_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
+class class1: vn_b_uniform_base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+        modifiableTo[] = { Q(class2) };\
+    };\
+};\
+class class2: vn_b_uniform_base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+        modifiableTo[] = { Q(class1) };\
+    };\
+};
 
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
 
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
index a7119828511..9af22b9abe9 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
@@ -1,8 +1,16 @@
 class vn_o_uniform_base;
 
 #define UNIFORM_BASE_O(class1,class2)\
-class class1: vn_o_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: vn_o_uniform_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };\
+class class1: vn_o_uniform_base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+        modifiableTo[] = { Q(class2) };\
+    };\
+};\
+class class2: vn_o_uniform_base {\
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+        modifiableTo[] = { Q(class1) };\
+    };\
+};
 
 // OPFOR
 
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index f6365293956..a142e0067ea 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -2,9 +2,8 @@ class ItemInfo;
 
 class CfgWeapons
 {
-    // Importing the parent class for the uniforms we want to change, so we can inherit from it.
     class vn_b_uniform_base;
-    // creating the macro
+
     #define S_70(className)\
     class className : vn_b_uniform_base { class ItemInfo : ItemInfo { containerClass = "Supply70"; }; };
 

From dfb35a711684cee0742836347db977d308814e30 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:40:32 +0100
Subject: [PATCH 052/139] Delete notes.md

---
 addons/compat_sog/compat_sog_wardrobe/notes.md | 4 ----
 1 file changed, 4 deletions(-)
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe/notes.md

diff --git a/addons/compat_sog/compat_sog_wardrobe/notes.md b/addons/compat_sog/compat_sog_wardrobe/notes.md
deleted file mode 100644
index 0021f2a4fad..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe/notes.md
+++ /dev/null
@@ -1,4 +0,0 @@
-lxWS_H_turban_01_black
-lxWS_H_turban_02_black
-lxWS_H_turban_03_black
-lxWS_H_turban_04_black
\ No newline at end of file

From 344df47d20573d42741470f5b69291dc51874d88 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:48:37 +0100
Subject: [PATCH 053/139] Delete notes.md

---
 addons/compat_ws/compat_ws_wardrobe/notes.md | 4 ----
 1 file changed, 4 deletions(-)
 delete mode 100644 addons/compat_ws/compat_ws_wardrobe/notes.md

diff --git a/addons/compat_ws/compat_ws_wardrobe/notes.md b/addons/compat_ws/compat_ws_wardrobe/notes.md
deleted file mode 100644
index 0021f2a4fad..00000000000
--- a/addons/compat_ws/compat_ws_wardrobe/notes.md
+++ /dev/null
@@ -1,4 +0,0 @@
-lxWS_H_turban_01_black
-lxWS_H_turban_02_black
-lxWS_H_turban_03_black
-lxWS_H_turban_04_black
\ No newline at end of file

From 8db68fecc5becd1700963ba26f1f7806f841eb3c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:48:43 +0100
Subject: [PATCH 054/139] Update script_component.hpp

---
 addons/compat_ws/script_component.hpp | 1 -
 1 file changed, 1 deletion(-)

diff --git a/addons/compat_ws/script_component.hpp b/addons/compat_ws/script_component.hpp
index 7607cd056bc..2c5ebd6ba49 100644
--- a/addons/compat_ws/script_component.hpp
+++ b/addons/compat_ws/script_component.hpp
@@ -2,5 +2,4 @@
 #define COMPONENT_BEAUTIFIED Western Sahara Compatibility
 
 #include "\z\ace\addons\main\script_mod.hpp"
-
 #include "\z\ace\addons\main\script_macros.hpp"

From 4368ea4132ef3902c426f1e0402907d74044a670 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:49:15 +0100
Subject: [PATCH 055/139] ws\config

---
 .../compat_ws_wardrobe/CfgWardrobe.hpp        |  13 ++-
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  | 105 +++++++++++++++---
 2 files changed, 98 insertions(+), 20 deletions(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index a6f3f6fb16a..9a6f2e7ebbe 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -4,9 +4,16 @@ class CfgWeapons
 {
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
-    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
-    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk {
+        class ace_wardrobe : EGVAR(wardrobe,base) {
+            modifiableTo[] = { "H_Cap_headphones_ion_lxws" };
+        };
+    };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION {
+        class ace_wardrobe : EGVAR(wardrobe,base) {
+            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   };
+        };
+    };
 
     #include "Turbans.hpp"
 };
-
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index cc4ea18f268..8e8703abc71 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -5,25 +5,70 @@
 #define QCN(version,color) Q(CN(version,color))
 
 #define COLORGROUP(COLOR)\
-class CN(01,COLOR): lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
-class CN(02,COLOR): lxWS_H_turban_02_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) }; }; };\
-class CN(03,COLOR): lxWS_H_turban_03_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) }; }; };\
-class CN(04,COLOR): lxWS_H_turban_04_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) }; }; };
+class CN(01,COLOR): lxWS_H_turban_01_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) };\
+    };\
+};\
+class CN(02,COLOR): lxWS_H_turban_02_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) };\
+    };\
+};\
+class CN(03,COLOR): lxWS_H_turban_03_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) };\
+    };\
+};\
+class CN(04,COLOR): lxWS_H_turban_04_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) };\
+    };\
+};
 
 
 #define COLORGROUP_SPECIAL(COLOR)\
-class CN(02,COLOR): lxWS_H_turban_02_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(03,COLOR) }; }; };\
-class CN(03,COLOR): lxWS_H_turban_03_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,COLOR) }; }; };
+class CN(02,COLOR): lxWS_H_turban_02_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(03,COLOR) };\
+    };\
+};\
+class CN(03,COLOR): lxWS_H_turban_03_black {\
+    class ace_wardrobe : EGVAR(wardrobe,base) {\
+        modifiableTo[] = { QCN(02,COLOR) };\
+    };\
+};
 
 
 // BASECLASS
 class H_Shemag_khk;
 
-class H_turban_02_mask_black_lxws : H_Shemag_khk      { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) }; components[] = { "lxWS_H_bmask_base" }; }; };
-class lxWS_H_turban_01_black : H_Shemag_khk           { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_02_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_03_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" }; }; };
-class lxWS_H_turban_04_black : lxWS_H_turban_01_black { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" }; }; };
+class H_turban_02_mask_black_lxws : H_Shemag_khk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) };
+        components[] = { "lxWS_H_bmask_base" };
+    };
+};
+class lxWS_H_turban_01_black : H_Shemag_khk {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
+    };
+};
+class lxWS_H_turban_02_black : lxWS_H_turban_01_black {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
+    };
+};
+class lxWS_H_turban_03_black : lxWS_H_turban_01_black {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
+    };
+};
+class lxWS_H_turban_04_black : lxWS_H_turban_01_black {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" };
+    };
+};
 
 // VARIATIONS
 COLORGROUP(blue)
@@ -38,9 +83,35 @@ COLORGROUP_SPECIAL(green_pattern)
 
 
 // Super Special Manual blabla
-class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" }; components[] = {"H_bmask_snake_lxws"}; }; };
-class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" }; components[] = {"lxWS_H_bmask_hex"}; }; };
-class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
-class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" }; }; };
\ No newline at end of file
+class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" };
+        components[] = {"H_bmask_snake_lxws"};
+    };
+};
+class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" };
+        components[] = {"lxWS_H_bmask_hex"};
+    };
+};
+class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
+    };
+};
+class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
+    };
+};
+class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
+    };
+};
+class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
+    };
+};
\ No newline at end of file

From 5e4f12d02ead9f6c64f65cd2c338df66e425ba7e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:49:22 +0100
Subject: [PATCH 056/139] cleanup

---
 addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp   |  3 ---
 .../compat_sog_wardrobe_uniform_fix/Uniforms.hpp       | 10 +++++++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index be0f9307815..a5f13456132 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -3,8 +3,6 @@
 class vn_b_uniform_base;
 
 // Macros
-
-
 #define UNIFORM_BASE_B(class1,class2)\
 class class1: vn_b_uniform_base {\
     class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
@@ -18,7 +16,6 @@ class class2: vn_b_uniform_base {\
 };
 
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
-
 #define B_U_PAIR(div,down,up,camo) UNIFORM_BASE_B(B_U(div,down,camo),B_U(div,up,camo))
 
 
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index a142e0067ea..5e12ed5350f 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -1,12 +1,16 @@
 class ItemInfo;
 
+#define S_70(className)\
+class className : vn_b_uniform_base {\
+    class ItemInfo : ItemInfo {\
+        containerClass = "Supply70";\
+    };\
+};
+
 class CfgWeapons
 {
     class vn_b_uniform_base;
 
-    #define S_70(className)\
-    class className : vn_b_uniform_base { class ItemInfo : ItemInfo { containerClass = "Supply70"; }; };
-
     S_70(vn_b_uniform_macv_04_01)
     S_70(vn_b_uniform_macv_04_02)
     S_70(vn_b_uniform_macv_04_05)

From 3b13160eb455fcc463591225761a7ad4c9e15297 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 02:55:22 +0100
Subject: [PATCH 057/139] gm/config

---
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  |  36 ++-
 .../compat_gm/compat_gm_wardrobe/Uniforms.hpp | 218 ++++++++++++++----
 2 files changed, 207 insertions(+), 47 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index c3d4d023e66..6dff70fc9d8 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -6,9 +6,33 @@ class gm_ge_headgear_psh77_cover_up_base;
 class gm_ge_headgear_psh77_down_base;
 class gm_ge_headgear_psh77_up_base;
 
-class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp"   }; }; };
-class gm_ge_bgs_headgear_psh77_cover_up_smp   : gm_ge_headgear_psh77_cover_up_base   { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" }; }; };
-class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str"   }; }; };
-class gm_ge_bgs_headgear_psh77_cover_up_str   : gm_ge_headgear_psh77_cover_up_base   { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" }; }; };
-class gm_ge_headgear_psh77_down_oli           : gm_ge_headgear_psh77_down_base       { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "gm_ge_headgear_psh77_up_oli"             }; }; };
-class gm_ge_headgear_psh77_up_oli             : gm_ge_headgear_psh77_up_base         { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "gm_ge_headgear_psh77_down_oli"           }; }; };
\ No newline at end of file
+class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+        modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp" };
+    };
+};
+class gm_ge_bgs_headgear_psh77_cover_up_smp : gm_ge_headgear_psh77_cover_up_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+        modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" };
+    };
+};
+class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+        modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str" };
+    };
+};
+class gm_ge_bgs_headgear_psh77_cover_up_str : gm_ge_headgear_psh77_cover_up_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+        modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" };
+    };
+};
+class gm_ge_headgear_psh77_down_oli : gm_ge_headgear_psh77_down_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+        modifiableTo[] = { "gm_ge_headgear_psh77_up_oli" };
+    };
+};
+class gm_ge_headgear_psh77_up_oli : gm_ge_headgear_psh77_up_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+        modifiableTo[] = { "gm_ge_headgear_psh77_down_oli" };
+    };
+};
\ No newline at end of file
diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index 324b4f9fc6b..3993ed35ff8 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -5,53 +5,149 @@
 class gm_ge_bgs_uniform_special_80_base;
 class gm_ge_bgs_uniform_special_rolled_80_base;
 
-class gm_ge_bgs_uniform_special_80_grn        : gm_ge_bgs_uniform_special_80_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) }; }; };
-class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) }; }; };
-
-class gm_ge_bgs_uniform_special_80_blk        : gm_ge_bgs_uniform_special_80_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) }; }; };
-class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) }; }; };
+class gm_ge_bgs_uniform_special_80_grn : gm_ge_bgs_uniform_special_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) };
+    };
+};
+class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) };
+    };
+};
+
+class gm_ge_bgs_uniform_special_80_blk : gm_ge_bgs_uniform_special_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) };
+    };
+};
+class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) };
+    };
+};
 
 
 class gm_ge_army_uniform_pilot_base;
 class gm_ge_army_uniform_pilot_rolled_base;
 
-class gm_ge_army_uniform_pilot_sar        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) }; }; };
-class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) }; }; };
-
-class gm_ge_army_uniform_pilot_oli        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) }; }; };
-class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) }; }; };
-
-class gm_ge_pol_uniform_pilot_grn        : gm_ge_army_uniform_pilot_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) }; }; };
-class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) }; }; };
+class gm_ge_army_uniform_pilot_sar : gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) };
+    };
+};
+class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) };
+    };
+};
+
+class gm_ge_army_uniform_pilot_oli : gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) };
+    };
+};
+class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) };
+    };
+};
+
+class gm_ge_pol_uniform_pilot_grn : gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) };
+    };
+};
+class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+        modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) };
+    };
+};
 
 class gm_ge_uniform_pilot_commando_base;
 class gm_ge_uniform_pilot_commando_rolled_base;
 
-class gm_ge_uniform_pilot_commando_oli        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) }; }; };
-
-class gm_ge_uniform_pilot_commando_gry        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) }; }; };
-
-class gm_ge_uniform_pilot_commando_blk        : gm_ge_uniform_pilot_commando_base        { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) }; }; };
-class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) }; }; };
+class gm_ge_uniform_pilot_commando_oli : gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) };
+    };
+};
+class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) };
+    };
+};
+
+class gm_ge_uniform_pilot_commando_gry : gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) };
+    };
+};
+class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) };
+    };
+};
+
+class gm_ge_uniform_pilot_commando_blk : gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) };
+    };
+};
+class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) };
+    };
+};
 
 class gm_pl_uniform_soldier_80_base;
 
-class gm_pl_army_uniform_soldier_80_frog        : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) }; }; };
-class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) }; }; };
-
-class gm_pl_army_uniform_soldier_80_moro        : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) }; }; };
-class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) }; }; };
+class gm_pl_army_uniform_soldier_80_frog : gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) };
+    };
+};
+class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) };
+    };
+};
+
+class gm_pl_army_uniform_soldier_80_moro : gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) };
+    };
+};
+class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) };
+    };
+};
 
 
 class gm_ge_uniform_soldier_90_base;
 
-class gm_ge_uniform_soldier_90_trp        : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) }; }; };
-class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) }; }; };
+class gm_ge_uniform_soldier_90_trp : gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) };
+    };
+};
+class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) };
+    };
+};
 
-class gm_ge_uniform_soldier_90_flk        : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) }; }; };
-class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) }; }; };
+class gm_ge_uniform_soldier_90_flk : gm_ge_uniform_soldier_90_base { 
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+        modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) };
+    };
+};
+class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) };
+    };
+};
 
 
 
@@ -59,24 +155,64 @@ class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base { clas
 // Gloves
 
 class gm_gc_uniform_soldier_80_base;
-class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str)        }; }; };
-class gm_gc_army_uniform_soldier_80_str        : gm_gc_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) }; }; };
+class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+        modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str) };
+    };
+};
+class gm_gc_army_uniform_soldier_80_str : gm_gc_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) {
+        modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) };
+    };
+};
 
 class gm_ge_uniform_soldier_80_base;
-class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)  { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols)        }; }; };
-class gm_ge_army_uniform_soldier_80_ols        : gm_ge_uniform_soldier_80_base { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) { modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) }; }; };
+class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+        modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols) };
+    };
+};
+class gm_ge_army_uniform_soldier_80_ols : gm_ge_uniform_soldier_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) {
+        modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) };
+    };
+};
 
 
 // Mixed case -> Base Interaction
 class gm_ge_army_uniform_soldier_bdu_80_wdl;
 class gm_ge_army_uniform_soldier_bdu_rolled_80_wdl;
 
-class gm_xx_uniform_soldier_bdu_80_wdl          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
-class gm_xx_uniform_soldier_bdu_rolled_80_wdl   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) }; }; };
-class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl),        Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl)   }; }; };
-
-class gm_xx_uniform_soldier_bdu_80_oli          : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on)    { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
-class gm_xx_uniform_soldier_bdu_rolled_80_oli   : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) }; }; };
-class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl        { class ace_wardrobe : EGVAR(wardrobe,base)                { modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli),        Q(gm_xx_uniform_soldier_bdu_rolled_80_oli)   }; }; };
+class gm_xx_uniform_soldier_bdu_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
+    };
+};
+class gm_xx_uniform_soldier_bdu_rolled_80_wdl : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
+    };
+};
+class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl) };
+    };
+};
+
+class gm_xx_uniform_soldier_bdu_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
+    };
+};
+class gm_xx_uniform_soldier_bdu_rolled_80_oli : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
+    };
+};
+class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_rolled_80_oli) };
+    };
+};
 
 

From f1063f4a0fa8254115524a8372ba222c8f9e4f52 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:04:34 +0100
Subject: [PATCH 058/139] fix path

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

diff --git a/addons/wardrobe/XEH_preInit.sqf b/addons/wardrobe/XEH_preInit.sqf
index 3ecfb8d76d2..9e2dfa374cc 100644
--- a/addons/wardrobe/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH_preInit.sqf
@@ -1,4 +1,4 @@
-#include "../script_component.hpp"
+#include "script_component.hpp"
 
 [
     QSET(enable_action),

From 386136576377dc11a5392d75e840e6c7df0bab71 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:14:49 +0100
Subject: [PATCH 059/139] fixed error_2

---
 addons/wardrobe/functions/replace/fn_replace.sqf | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index fd3db8b5d3f..73ecc301ec2 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -22,12 +22,6 @@ _actionParams params ["_cfg_origin", "_cfg_tgt"];
 private _duration = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
 if (_replaceNow) then { _duration = 0; };
 
-// Animation/Gestures
-[ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
-
-
-
-
 // Replace the Main Item.
 private _additionalParams = "";
 private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
@@ -45,8 +39,7 @@ private _replaceCode = switch ( _typeNumber ) do {
     };
 };
 
-
-if (_replaceCode isEqualType false) exitWith {ERROR_2(replacecode undefined,_typeNumber,_replaceCode);};
+if (_replaceCode isEqualType false) exitWith { ERROR_2("typeNumber undefined: %1 - %2",_typeNumber,configName _cfg_origin); };
 
 [ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
 
@@ -60,6 +53,9 @@ if (_replaceCode isEqualType false) exitWith {ERROR_2(replacecode undefined,_typ
 } forEach _missing;
 
 
+// Animation/Gestures
+[ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
+
 // Plays Random Sound At the Beginning
 private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
 private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);

From 97b7c37131e535b715f206cb98cc4d164c0b9477 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:15:04 +0100
Subject: [PATCH 060/139] fixed config

---
 .../compat_sog_wardrobe/Booniehats.hpp        | 51 ++++++++++---------
 1 file changed, 26 insertions(+), 25 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index ddf9c8690ef..56b1c3049a3 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -12,31 +12,32 @@
 #define CN(variation,color) vn_b_boonie_##variation##_##color
 
 // Base Boonie
-#define CAMO_BASE 01\
-class CN(02,CAMO_BASE) : vn_b_headgear_base {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
-    };\
-};\
-class CN(01,CAMO_BASE) : CN(02,CAMO_BASE) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
-    };\
-};\
-class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
-    };\
-};\
-class CN(04,CAMO_BASE) : CN(02,CAMO_BASE) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };\
-    };\
-};\
-class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) };\
-    };\
+#define CAMO_BASE 01
+
+class CN(02,CAMO_BASE) : vn_b_headgear_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+    };
+};
+class CN(01,CAMO_BASE) : CN(02,CAMO_BASE) {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+    };
+};
+class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+    };
+};
+class CN(04,CAMO_BASE) : CN(02,CAMO_BASE) {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+    };
+};
+class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) };
+    };
 };
 
 

From 5d2bed4b88ed10f8174da428557965e5f4bdef42 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:22:53 +0100
Subject: [PATCH 061/139] config fix ` :`

---
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  |  24 ++--
 .../compat_gm/compat_gm_wardrobe/Uniforms.hpp | 136 +++++++++---------
 .../compat_rf_wardrobe/CfgWardrobe.hpp        |   4 +-
 .../compat_rf/compat_rf_wardrobe/Helmets.hpp  |   8 +-
 .../compat_rf/compat_rf_wardrobe/Uniforms.hpp |  16 +--
 .../compat_sog_wardrobe/Booniehats.hpp        |  52 +++----
 .../compat_sog_wardrobe/Pilothelmets.hpp      |  16 +--
 .../compat_sog_wardrobe/Uniforms_B.hpp        |   4 +-
 .../compat_sog_wardrobe/Uniforms_O.hpp        |   4 +-
 .../Uniforms.hpp                              |   4 +-
 .../compat_ws_wardrobe/CfgWardrobe.hpp        |   4 +-
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  |  46 +++---
 addons/wardrobe/Baseclass.hpp                 |  16 +--
 addons/wardrobe/compat_vanilla/Facewear.hpp   |  72 +++++-----
 addons/wardrobe/compat_vanilla/Uniforms.hpp   |   4 +-
 .../wardrobe/functions/replace/fn_replace.sqf |   2 +-
 16 files changed, 206 insertions(+), 206 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index 6dff70fc9d8..36d42efd33c 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -6,33 +6,33 @@ class gm_ge_headgear_psh77_cover_up_base;
 class gm_ge_headgear_psh77_down_base;
 class gm_ge_headgear_psh77_up_base;
 
-class gm_ge_bgs_headgear_psh77_cover_down_smp : gm_ge_headgear_psh77_cover_down_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+class gm_ge_bgs_headgear_psh77_cover_down_smp: gm_ge_headgear_psh77_cover_down_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { 
         modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_smp" };
     };
 };
-class gm_ge_bgs_headgear_psh77_cover_up_smp : gm_ge_headgear_psh77_cover_up_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+class gm_ge_bgs_headgear_psh77_cover_up_smp: gm_ge_headgear_psh77_cover_up_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up)   { 
         modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_smp" };
     };
 };
-class gm_ge_bgs_headgear_psh77_cover_down_str : gm_ge_headgear_psh77_cover_down_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+class gm_ge_bgs_headgear_psh77_cover_down_str: gm_ge_headgear_psh77_cover_down_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { 
         modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_up_str" };
     };
 };
-class gm_ge_bgs_headgear_psh77_cover_up_str : gm_ge_headgear_psh77_cover_up_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+class gm_ge_bgs_headgear_psh77_cover_up_str: gm_ge_headgear_psh77_cover_up_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up)   { 
         modifiableTo[] = { "gm_ge_bgs_headgear_psh77_cover_down_str" };
     };
 };
-class gm_ge_headgear_psh77_down_oli : gm_ge_headgear_psh77_down_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { 
+class gm_ge_headgear_psh77_down_oli: gm_ge_headgear_psh77_down_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { 
         modifiableTo[] = { "gm_ge_headgear_psh77_up_oli" };
     };
 };
-class gm_ge_headgear_psh77_up_oli : gm_ge_headgear_psh77_up_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { 
+class gm_ge_headgear_psh77_up_oli: gm_ge_headgear_psh77_up_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up)   { 
         modifiableTo[] = { "gm_ge_headgear_psh77_down_oli" };
     };
 };
\ No newline at end of file
diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index 3993ed35ff8..31bd6db4255 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -5,24 +5,24 @@
 class gm_ge_bgs_uniform_special_80_base;
 class gm_ge_bgs_uniform_special_rolled_80_base;
 
-class gm_ge_bgs_uniform_special_80_grn : gm_ge_bgs_uniform_special_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_bgs_uniform_special_80_grn: gm_ge_bgs_uniform_special_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) };
     };
 };
-class gm_ge_bgs_uniform_special_rolled_80_grn : gm_ge_bgs_uniform_special_rolled_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+class gm_ge_bgs_uniform_special_rolled_80_grn: gm_ge_bgs_uniform_special_rolled_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
         modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) };
     };
 };
 
-class gm_ge_bgs_uniform_special_80_blk : gm_ge_bgs_uniform_special_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_bgs_uniform_special_80_blk: gm_ge_bgs_uniform_special_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) };
     };
 };
-class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+class gm_ge_bgs_uniform_special_rolled_80_blk: gm_ge_bgs_uniform_special_rolled_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
         modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) };
     };
 };
@@ -31,35 +31,35 @@ class gm_ge_bgs_uniform_special_rolled_80_blk : gm_ge_bgs_uniform_special_rolled
 class gm_ge_army_uniform_pilot_base;
 class gm_ge_army_uniform_pilot_rolled_base;
 
-class gm_ge_army_uniform_pilot_sar : gm_ge_army_uniform_pilot_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_army_uniform_pilot_sar: gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) };
     };
 };
-class gm_ge_army_uniform_pilot_rolled_sar : gm_ge_army_uniform_pilot_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+class gm_ge_army_uniform_pilot_rolled_sar: gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
         modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) };
     };
 };
 
-class gm_ge_army_uniform_pilot_oli : gm_ge_army_uniform_pilot_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_army_uniform_pilot_oli: gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) };
     };
 };
-class gm_ge_army_uniform_pilot_rolled_oli : gm_ge_army_uniform_pilot_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+class gm_ge_army_uniform_pilot_rolled_oli: gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
         modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) };
     };
 };
 
-class gm_ge_pol_uniform_pilot_grn : gm_ge_army_uniform_pilot_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_pol_uniform_pilot_grn: gm_ge_army_uniform_pilot_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) };
     };
 };
-class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up)   {
+class gm_ge_pol_uniform_pilot_rolled_grn: gm_ge_army_uniform_pilot_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
         modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) };
     };
 };
@@ -67,59 +67,59 @@ class gm_ge_pol_uniform_pilot_rolled_grn : gm_ge_army_uniform_pilot_rolled_base
 class gm_ge_uniform_pilot_commando_base;
 class gm_ge_uniform_pilot_commando_rolled_base;
 
-class gm_ge_uniform_pilot_commando_oli : gm_ge_uniform_pilot_commando_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_uniform_pilot_commando_oli: gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) };
     };
 };
-class gm_ge_uniform_pilot_commando_rolled_oli : gm_ge_uniform_pilot_commando_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_ge_uniform_pilot_commando_rolled_oli: gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) };
     };
 };
 
-class gm_ge_uniform_pilot_commando_gry : gm_ge_uniform_pilot_commando_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_uniform_pilot_commando_gry: gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) };
     };
 };
-class gm_ge_uniform_pilot_commando_rolled_gry : gm_ge_uniform_pilot_commando_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_ge_uniform_pilot_commando_rolled_gry: gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) };
     };
 };
 
-class gm_ge_uniform_pilot_commando_blk : gm_ge_uniform_pilot_commando_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_uniform_pilot_commando_blk: gm_ge_uniform_pilot_commando_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) };
     };
 };
-class gm_ge_uniform_pilot_commando_rolled_blk : gm_ge_uniform_pilot_commando_rolled_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_ge_uniform_pilot_commando_rolled_blk: gm_ge_uniform_pilot_commando_rolled_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) };
     };
 };
 
 class gm_pl_uniform_soldier_80_base;
 
-class gm_pl_army_uniform_soldier_80_frog : gm_pl_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_pl_army_uniform_soldier_80_frog: gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) };
     };
 };
-class gm_pl_army_uniform_soldier_rolled_80_frog : gm_pl_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_pl_army_uniform_soldier_rolled_80_frog: gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) };
     };
 };
 
-class gm_pl_army_uniform_soldier_80_moro : gm_pl_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_pl_army_uniform_soldier_80_moro: gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) };
     };
 };
-class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_pl_army_uniform_soldier_rolled_80_moro: gm_pl_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) };
     };
 };
@@ -127,24 +127,24 @@ class gm_pl_army_uniform_soldier_rolled_80_moro : gm_pl_uniform_soldier_80_base
 
 class gm_ge_uniform_soldier_90_base;
 
-class gm_ge_uniform_soldier_90_trp : gm_ge_uniform_soldier_90_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_uniform_soldier_90_trp: gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) };
     };
 };
-class gm_ge_uniform_soldier_rolled_90_trp : gm_ge_uniform_soldier_90_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_ge_uniform_soldier_rolled_90_trp: gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) };
     };
 };
 
-class gm_ge_uniform_soldier_90_flk : gm_ge_uniform_soldier_90_base { 
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {
+class gm_ge_uniform_soldier_90_flk: gm_ge_uniform_soldier_90_base { 
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
         modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) };
     };
 };
-class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_ge_uniform_soldier_rolled_90_flk: gm_ge_uniform_soldier_90_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) };
     };
 };
@@ -155,25 +155,25 @@ class gm_ge_uniform_soldier_rolled_90_flk : gm_ge_uniform_soldier_90_base {
 // Gloves
 
 class gm_gc_uniform_soldier_80_base;
-class gm_gc_army_uniform_soldier_gloves_80_str : gm_gc_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+class gm_gc_army_uniform_soldier_gloves_80_str: gm_gc_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
         modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str) };
     };
 };
-class gm_gc_army_uniform_soldier_80_str : gm_gc_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) {
+class gm_gc_army_uniform_soldier_80_str: gm_gc_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_off) {
         modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) };
     };
 };
 
 class gm_ge_uniform_soldier_80_base;
-class gm_ge_army_uniform_soldier_gloves_80_ols : gm_ge_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+class gm_ge_army_uniform_soldier_gloves_80_ols: gm_ge_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
         modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols) };
     };
 };
-class gm_ge_army_uniform_soldier_80_ols : gm_ge_uniform_soldier_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_off) {
+class gm_ge_army_uniform_soldier_80_ols: gm_ge_uniform_soldier_80_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_off) {
         modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) };
     };
 };
@@ -183,34 +183,34 @@ class gm_ge_army_uniform_soldier_80_ols : gm_ge_uniform_soldier_80_base {
 class gm_ge_army_uniform_soldier_bdu_80_wdl;
 class gm_ge_army_uniform_soldier_bdu_rolled_80_wdl;
 
-class gm_xx_uniform_soldier_bdu_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+class gm_xx_uniform_soldier_bdu_80_wdl: gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
     };
 };
-class gm_xx_uniform_soldier_bdu_rolled_80_wdl : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_xx_uniform_soldier_bdu_rolled_80_wdl: gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
     };
 };
-class gm_xx_uniform_soldier_bdu_nogloves_80_wdl : gm_ge_army_uniform_soldier_bdu_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class gm_xx_uniform_soldier_bdu_nogloves_80_wdl: gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl) };
     };
 };
 
-class gm_xx_uniform_soldier_bdu_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_gloves_on) {
+class gm_xx_uniform_soldier_bdu_80_oli: gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
     };
 };
-class gm_xx_uniform_soldier_bdu_rolled_80_oli : gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {
+class gm_xx_uniform_soldier_bdu_rolled_80_oli: gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
     };
 };
-class gm_xx_uniform_soldier_bdu_nogloves_80_oli : gm_ge_army_uniform_soldier_bdu_80_wdl {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class gm_xx_uniform_soldier_bdu_nogloves_80_oli: gm_ge_army_uniform_soldier_bdu_80_wdl {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_rolled_80_oli) };
     };
 };
diff --git a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
index dc891c51af4..1989d2e2ab8 100644
--- a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
@@ -14,8 +14,8 @@ class CfgWeapons
 
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
-    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
-    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe : EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe: EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe: EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
 };
 
 
diff --git a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
index 8b38ea87608..06411e8dd1c 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
@@ -6,15 +6,15 @@
 
 
 #define HELMET_VARIANT(color)\
-class CN(color): H_HelmetHeavy_Black_RF            { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
-class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { Q(CN(color))    }; }; };\
+class CN(color): H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
+class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { Q(CN(color)) }; }; };\
 
 
 // Base Classes
 class H_HelmetAggressor_F;
 
-class H_HelmetHeavy_Black_RF         : H_HelmetAggressor_F    { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
-class H_HelmetHeavy_VisorUp_Black_RF : H_HelmetHeavy_Black_RF { class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up)   { modifiableTo[] = { "H_HelmetHeavy_Black_RF"         }; }; };
+class H_HelmetHeavy_Black_RF: H_HelmetAggressor_F { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
+class H_HelmetHeavy_VisorUp_Black_RF: H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { "H_HelmetHeavy_Black_RF" }; }; };
 
 // Variants
 HELMET_VARIANT(Hex)
diff --git a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
index fc1af3df27a..0692cd72fb0 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
@@ -4,8 +4,8 @@ class Uniform_Base;
 
 // Macros
 #define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
+class class1: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
+class class2: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
 
 // Simple Variants
 UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
@@ -13,11 +13,11 @@ UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF)
 
 
 // Pilot Jackets
-class U_C_PilotJacket_black_RF      : Uniform_Base             { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
-class U_C_PilotJacket_open_black_RF : U_C_PilotJacket_black_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
+class U_C_PilotJacket_black_RF: Uniform_Base             { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
+class U_C_PilotJacket_open_black_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
 
-class U_C_PilotJacket_brown_RF      : U_C_PilotJacket_black_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
-class U_C_PilotJacket_open_brown_RF : U_C_PilotJacket_brown_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
+class U_C_PilotJacket_brown_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
+class U_C_PilotJacket_open_brown_RF: U_C_PilotJacket_brown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
 
-class U_C_PilotJacket_lbrown_RF      : U_C_PilotJacket_black_RF  { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
-class U_C_PilotJacket_open_lbrown_RF : U_C_PilotJacket_lbrown_RF { class ace_wardrobe : EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
+class U_C_PilotJacket_lbrown_RF: U_C_PilotJacket_black_RF  { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
+class U_C_PilotJacket_open_lbrown_RF: U_C_PilotJacket_lbrown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 56b1c3049a3..99dd22b0963 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -14,56 +14,56 @@
 // Base Boonie
 #define CAMO_BASE 01
 
-class CN(02,CAMO_BASE) : vn_b_headgear_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class CN(02,CAMO_BASE): vn_b_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
     };
 };
-class CN(01,CAMO_BASE) : CN(02,CAMO_BASE) {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class CN(01,CAMO_BASE): CN(02,CAMO_BASE) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
     };
 };
-class CN(03,CAMO_BASE) : CN(02,CAMO_BASE)   {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class CN(03,CAMO_BASE): CN(02,CAMO_BASE)   {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
     };
 };
-class CN(04,CAMO_BASE) : CN(02,CAMO_BASE) {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class CN(04,CAMO_BASE): CN(02,CAMO_BASE) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
     };
 };
-class CN(05,CAMO_BASE) : CN(02,CAMO_BASE)   {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class CN(05,CAMO_BASE): CN(02,CAMO_BASE)   {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) };
     };
 };
 
 
 #define CN_COLORS(CAMO)\
-class CN(02,CAMO) : CN(02,01) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(02,CAMO): CN(02,01) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
     };\
 };\
-class CN(01,CAMO) : CN(02,CAMO) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(01,CAMO): CN(02,CAMO) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
     };\
 };\
-class CN(03,CAMO) : CN(02,CAMO) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(03,CAMO): CN(02,CAMO) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
     };\
 };\
-class CN(04,CAMO) : CN(02,CAMO) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(04,CAMO): CN(02,CAMO) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) };\
     };\
 };\
-class CN(05,CAMO) : CN(02,CAMO) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(05,CAMO): CN(02,CAMO) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) };\
     };\
 };
@@ -78,18 +78,18 @@ CN_COLORS(05)
 // 06-08 anzac
 
 #define BOONIE_ANZAC(VAR)\
-class CN(06,VAR) : CN(02,01) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(06,VAR): CN(02,01) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) };\
     };\
 };\
-class CN(07,VAR) : CN(06,VAR) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(07,VAR): CN(06,VAR) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) };\
     };\
 };\
-class CN(08,VAR) : CN(06,VAR) {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+class CN(08,VAR): CN(06,VAR) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) };\
     };\
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
index e18be1d6910..e87a5782932 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
@@ -7,13 +7,13 @@
 
 
 #define HELMET_VARIANT(side,var1,var2)\
-class CN01(side,var1,var2) : base_class_up {\
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up) {\
+class CN01(side,var1,var2): base_class_up {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {\
         modifiableTo[] = { Q(CN02(side,var1,var2)) };\
     };\
 };\
-class CN02(side,var1,var2) : base_class_dn {\
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) {\
+class CN02(side,var1,var2): base_class_dn {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
         modifiableTo[] = { Q(CN01(side,var1,var2)) };\
     };\
 };
@@ -51,13 +51,13 @@ HELMET_VARIANT(b,svh4,05)
 HELMET_VARIANT(b,svh4,06)
 
 // Special Case zsh3
-class vn_o_helmet_zsh3_01 : vn_o_headgear_base {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_up) {
+class vn_o_helmet_zsh3_01: vn_o_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {
         modifiableTo[] = { Q(vn_o_helmet_zsh3_02) };
     }; 
 };
-class vn_o_helmet_zsh3_02 : vn_o_helmet_zsh3_01 {
-    class ace_wardrobe : EGVAR(wardrobe,base_H_visor_down) {
+class vn_o_helmet_zsh3_02: vn_o_helmet_zsh3_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {
         modifiableTo[] = { Q(vn_o_helmet_zsh3_01) };
     }; 
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index a5f13456132..704f58d966b 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -5,12 +5,12 @@ class vn_b_uniform_base;
 // Macros
 #define UNIFORM_BASE_B(class1,class2)\
 class class1: vn_b_uniform_base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
         modifiableTo[] = { Q(class2) };\
     };\
 };\
 class class2: vn_b_uniform_base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { Q(class1) };\
     };\
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
index 9af22b9abe9..c68db25cd9f 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
@@ -2,12 +2,12 @@ class vn_o_uniform_base;
 
 #define UNIFORM_BASE_O(class1,class2)\
 class class1: vn_o_uniform_base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
         modifiableTo[] = { Q(class2) };\
     };\
 };\
 class class2: vn_o_uniform_base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { Q(class1) };\
     };\
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 5e12ed5350f..5f60ac6c006 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -1,8 +1,8 @@
 class ItemInfo;
 
 #define S_70(className)\
-class className : vn_b_uniform_base {\
-    class ItemInfo : ItemInfo {\
+class className: vn_b_uniform_base {\
+    class ItemInfo: ItemInfo {\
         containerClass = "Supply70";\
     };\
 };
diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 9a6f2e7ebbe..8e58be79228 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -5,12 +5,12 @@ class CfgWeapons
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
     class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk {
-        class ace_wardrobe : EGVAR(wardrobe,base) {
+        class ace_wardrobe: EGVAR(wardrobe,base) {
             modifiableTo[] = { "H_Cap_headphones_ion_lxws" };
         };
     };
     class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION {
-        class ace_wardrobe : EGVAR(wardrobe,base) {
+        class ace_wardrobe: EGVAR(wardrobe,base) {
             modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   };
         };
     };
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 8e8703abc71..87346bb6aa4 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -6,22 +6,22 @@
 
 #define COLORGROUP(COLOR)\
 class CN(01,COLOR): lxWS_H_turban_01_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(02,COLOR), QCN(03,COLOR), QCN(04,COLOR) };\
     };\
 };\
 class CN(02,COLOR): lxWS_H_turban_02_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(01,COLOR), QCN(03,COLOR), QCN(04,COLOR) };\
     };\
 };\
 class CN(03,COLOR): lxWS_H_turban_03_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(04,COLOR) };\
     };\
 };\
 class CN(04,COLOR): lxWS_H_turban_04_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) };\
     };\
 };
@@ -29,12 +29,12 @@ class CN(04,COLOR): lxWS_H_turban_04_black {\
 
 #define COLORGROUP_SPECIAL(COLOR)\
 class CN(02,COLOR): lxWS_H_turban_02_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(03,COLOR) };\
     };\
 };\
 class CN(03,COLOR): lxWS_H_turban_03_black {\
-    class ace_wardrobe : EGVAR(wardrobe,base) {\
+    class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(02,COLOR) };\
     };\
 };
@@ -43,29 +43,29 @@ class CN(03,COLOR): lxWS_H_turban_03_black {\
 // BASECLASS
 class H_Shemag_khk;
 
-class H_turban_02_mask_black_lxws : H_Shemag_khk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class H_turban_02_mask_black_lxws: H_Shemag_khk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) };
         components[] = { "lxWS_H_bmask_base" };
     };
 };
-class lxWS_H_turban_01_black : H_Shemag_khk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class lxWS_H_turban_01_black: H_Shemag_khk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
     };
 };
-class lxWS_H_turban_02_black : lxWS_H_turban_01_black {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class lxWS_H_turban_02_black: lxWS_H_turban_01_black {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
     };
 };
-class lxWS_H_turban_03_black : lxWS_H_turban_01_black {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class lxWS_H_turban_03_black: lxWS_H_turban_01_black {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(04,black), "H_turban_02_mask_black_lxws" };
     };
 };
-class lxWS_H_turban_04_black : lxWS_H_turban_01_black {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class lxWS_H_turban_04_black: lxWS_H_turban_01_black {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), "H_turban_02_mask_black_lxws" };
     };
 };
@@ -83,35 +83,35 @@ COLORGROUP_SPECIAL(green_pattern)
 
 
 // Super Special Manual blabla
-class H_turban_02_mask_snake_lxws : H_turban_02_mask_black_lxws {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class H_turban_02_mask_snake_lxws: H_turban_02_mask_black_lxws {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_hex_lxws" };
         components[] = {"H_bmask_snake_lxws"};
     };
 };
 class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" };
         components[] = {"lxWS_H_bmask_hex"};
     };
 };
 class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
 class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
 class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
 class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
\ No newline at end of file
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 79afb9a2379..7c9ca77e15a 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -23,33 +23,33 @@ class GVAR(base)
 };
 
 // Common Base Class for Uniforms with Sleeves Up/Down Variants
-class GVAR(base_U_sleeves_up)   : GVAR(base) {
+class GVAR(base_U_sleeves_up): GVAR(base) {
     alternativeDisplayName = CSTRING(sleevesUp);  
 };
-class GVAR(base_U_sleeves_down) : GVAR(base) {
+class GVAR(base_U_sleeves_down): GVAR(base) {
     alternativeDisplayName = CSTRING(sleevesDown);
 };
 
 // Common Base Class for Uniforms with Sleeves Up/Down Variants
-class GVAR(base_U_gloves_on)  : GVAR(base) {
+class GVAR(base_U_gloves_on): GVAR(base) {
     alternativeDisplayName = CSTRING(glovesOn); 
 };
-class GVAR(base_U_gloves_off) : GVAR(base) {
+class GVAR(base_U_gloves_off): GVAR(base) {
     alternativeDisplayName = CSTRING(glovesOff);
 };
 
 
 // Common Base Class for Uniforms who are open/closed in the front
-class GVAR(base_U_jacket_open)   : GVAR(base) {
+class GVAR(base_U_jacket_open): GVAR(base) {
     alternativeDisplayName = CSTRING(jacketOpen); 
 };
-class GVAR(base_U_jacket_closed) : GVAR(base) {
+class GVAR(base_U_jacket_closed): GVAR(base) {
     alternativeDisplayName = CSTRING(jacketClose);
 };
 
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
-class GVAR(base_H_visor_up)   : GVAR(base) {
+class GVAR(base_H_visor_up): GVAR(base) {
     duration = 0.3;
     gesture ="gestureNod";
 
@@ -59,7 +59,7 @@ class GVAR(base_H_visor_up)   : GVAR(base) {
     alternativeDisplayName = CSTRING(visorUp);
 };
 
-class GVAR(base_H_visor_down) : GVAR(base) {
+class GVAR(base_H_visor_down): GVAR(base) {
     duration = 0.3;
     gesture ="gestureNod";
 
diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/compat_vanilla/Facewear.hpp
index 59ac668761f..ee800590004 100644
--- a/addons/wardrobe/compat_vanilla/Facewear.hpp
+++ b/addons/wardrobe/compat_vanilla/Facewear.hpp
@@ -6,27 +6,27 @@ class G_WirelessEarpiece_base_F;
 class G_EyeProtectors_base_F;
 
 // Common Components
-class G_Lowprofile : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Lowprofile: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_lowprofile" };
         components[] = {"G_Lowprofile"};
     };
 };
-class G_Combat : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Combat: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_combat", "G_Balaclava_TI_G_blk_F", "G_Balaclava_TI_G_tna_F" };
         components[] = {"G_Combat"};
     };
 };
 
-class G_Aviator : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Aviator: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_aviator" };
         components[] = {"G_Aviator"};
     };
 };
-class G_Shades_Black : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Shades_Black: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_shades" }; 
         components[] = {"G_Shades_Black"};
     };
@@ -34,75 +34,75 @@ class G_Shades_Black : None {
 
 
 // Balaclava, black
-class G_Balaclava_blk : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_blk: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" };
         components[] = {"G_Balaclava_blk"};
     };
 };
-class G_Balaclava_combat : G_Balaclava_blk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_combat: G_Balaclava_blk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_blk" };
         components[] = {"G_Balaclava_blk","G_Combat"};
     };
 };
-class G_Balaclava_lowprofile : G_Balaclava_blk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_lowprofile: G_Balaclava_blk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_blk" };
         components[] = {"G_Balaclava_blk","G_Lowprofile"};
     };
 };
 
 // Stealth Balaclava, black
-class G_Balaclava_TI_blk_F : None {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_TI_blk_F: None {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_G_blk_F" };
         components[] = {"G_Balaclava_TI_blk_F"};
     };
 };
-class G_Balaclava_TI_G_blk_F : G_Balaclava_TI_blk_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_TI_G_blk_F: G_Balaclava_TI_blk_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_blk_F" };  
         components[] = {"G_Balaclava_TI_blk_F","G_Combat"};
     };
 };
 
 // Stealth Balaclava, green(tanoa)
-class G_Balaclava_TI_tna_F : G_Balaclava_TI_blk_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_TI_tna_F: G_Balaclava_TI_blk_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_G_tna_F" };
         components[] = {"G_Balaclava_TI_tna_F"};
     };
 };
-class G_Balaclava_TI_G_tna_F : G_Balaclava_TI_tna_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_tna_F" };  
         components[] = {"G_Balaclava_TI_tna_F","G_Combat"};
     };
 };
 
 // Bandana, Black
-class G_Bandanna_blk : G_Balaclava_blk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Bandanna_blk: G_Balaclava_blk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" };
         components[] = {"G_Bandanna_blk"};
     };
 };
 
-class G_Bandanna_shades : G_Bandanna_blk {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Bandanna_shades: G_Bandanna_blk {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };  
         components[] = {"G_Bandanna_blk", "G_Shades_Black"  };
     };
 };
-class G_Bandanna_sport : G_Bandanna_shades {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Bandanna_sport: G_Bandanna_shades {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" };
         components[] = {"G_Bandanna_blk", "G_Sport_Blackred"};
     };
 };
-class G_Bandanna_aviator : G_Bandanna_shades {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_Bandanna_aviator: G_Bandanna_shades {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };       
         components[] = {"G_Bandanna_blk", "G_Aviator"   };
     };
@@ -110,20 +110,20 @@ class G_Bandanna_aviator : G_Bandanna_shades {
 
 
 // Eye Protector
-class G_EyeProtectors_F :  G_EyeProtectors_base_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_EyeProtectors_F:  G_EyeProtectors_base_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
         components[] = {"G_EyeProtectors_F"};
     };
 };
-class G_EyeProtectors_Earpiece_F : G_EyeProtectors_base_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_EyeProtectors_Earpiece_F: G_EyeProtectors_base_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" };
         components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"};
     };
 };
-class G_WirelessEarpiece_F :   G_WirelessEarpiece_base_F {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+class G_WirelessEarpiece_F:   G_WirelessEarpiece_base_F {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
         components[] = {"G_WirelessEarpiece_F"};
     };
diff --git a/addons/wardrobe/compat_vanilla/Uniforms.hpp b/addons/wardrobe/compat_vanilla/Uniforms.hpp
index 3d6fde86aed..ed1ec598b02 100644
--- a/addons/wardrobe/compat_vanilla/Uniforms.hpp
+++ b/addons/wardrobe/compat_vanilla/Uniforms.hpp
@@ -4,12 +4,12 @@ class Uniform_Base;
 // Macros
 #define UNIFORM_BASE(class1,class2)\
 class class1: Uniform_Base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_down) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
         modifiableTo[] = { Q(class2) };\
     };\
 };\
 class class2: Uniform_Base {\
-    class ace_wardrobe : EGVAR(wardrobe,base_U_sleeves_up) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { Q(class1) };\
     };\
 };
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index 73ecc301ec2..e0cc297d3f5 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -33,7 +33,7 @@ private _replaceCode = switch ( _typeNumber ) do {
     default {
         // CfgGlasses items do not have a ItemInfo Subclass and therefore, not TypeNumber.
         switch (true) do {
-            case (isClass (configFile >> "CfgGlasses" >> configName _cfg_origin)) : { FUNC(replace_facewear) };
+            case (isclass (configFile >> "CfgGlasses" >> configName _cfg_origin)): { FUNC(replace_facewear) };
             default { false };
         };
     };

From 65a8bb1f1ee5a5a92b689b669032b9bd08249ea0 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:25:21 +0100
Subject: [PATCH 062/139] tab -> spaces

---
 .../compat_sog_wardrobe_uniform_fix/config.cpp     | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
index 36c24cde11a..7e28c9dc177 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
@@ -1,25 +1,25 @@
 #include "script_component.hpp"
 
 class CfgPatches {
-	class SUBADDON {
-		name = COMPONENT_NAME;
-		author = ECSTRING(common,ACETeam);
+    class SUBADDON {
+        name = COMPONENT_NAME;
+        author = ECSTRING(common,ACETeam);
         authors[] = {"OverlordZorn [CVO]"};
         url = ECSTRING(main,URL);
-		
-		VERSION_CONFIG;
+        
+        VERSION_CONFIG;
         addonRootClass = QUOTE(ADDON);
         requiredAddons[] = {
             "ace_wardrobe",
             "vn_data_f"
         };
-		skipWhenMissingDependencies = 1;
+        skipWhenMissingDependencies = 1;
 
         requiredVersion = REQUIRED_VERSION;
        
         units[] = {};
         weapons[] = {};
-	};
+    };
 };
 
 #include "Uniforms.hpp"
\ No newline at end of file

From 8637bb34d93d96c4d012cac6c43723b49ebaa76f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:30:12 +0100
Subject: [PATCH 063/139] fix formatting

---
 .../compat_gm_wardrobe/CfgWardrobe.hpp        |  3 +-
 .../compat_sog_wardrobe/CfgWardrobe.hpp       |  3 +-
 .../Uniforms.hpp                              |  3 +-
 .../compat_ws_wardrobe/CfgWardrobe.hpp        |  3 +-
 addons/wardrobe/Baseclass.hpp                 |  3 +-
 addons/wardrobe/CfgFunctions.hpp              | 30 +++++++------------
 addons/wardrobe/CfgSounds.hpp                 |  8 ++---
 addons/wardrobe/compat_vanilla/Wardrobe.hpp   |  6 ++--
 8 files changed, 20 insertions(+), 39 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
index 8a4bcf09b43..f8bd616392a 100644
--- a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
@@ -10,8 +10,7 @@ class EGVAR(wardrobe,base_U_sleeves_down);
 class EGVAR(wardrobe,base_U_gloves_on);
 class EGVAR(wardrobe,base_U_gloves_off);
 
-class CfgWeapons
-{
+class CfgWeapons {
     #include "Helmets.hpp"
     #include "Uniforms.hpp"
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
index 79049a426bd..1516da1e51a 100644
--- a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
@@ -6,8 +6,7 @@ class EGVAR(wardrobe,base_H_visor_down);
 class EGVAR(wardrobe,base_U_sleeves_up);
 class EGVAR(wardrobe,base_U_sleeves_down);
 
-class CfgWeapons
-{
+class CfgWeapons {
     // Base Classes
     class vn_b_headgear_base;
     class vn_o_headgear_base;
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 5f60ac6c006..82d18c07c20 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -7,8 +7,7 @@ class className: vn_b_uniform_base {\
     };\
 };
 
-class CfgWeapons
-{
+class CfgWeapons {
     class vn_b_uniform_base;
 
     S_70(vn_b_uniform_macv_04_01)
diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 8e58be79228..76571f73a82 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -1,7 +1,6 @@
 class EGVAR(wardrobe,base);
 
-class CfgWeapons
-{
+class CfgWeapons {
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
     class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk {
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 7c9ca77e15a..f09c2dbe844 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,7 +1,6 @@
 #define CN_SOUND(base,dur) Q(TRIPLES(ADDON,base,dur))
 
-class GVAR(base) 
-{
+class GVAR(base) {
     modifiableTo[] = {""};
     // ## WIP ##
     // describes the components of the current item.
diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index 852233ccb10..041980f8351 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -2,8 +2,7 @@ class CfgFunctions
 {
     class ADDON
     {
-        class COMPONENT
-        {
+        class COMPONENT {
             file = PATH_TO_FUNC;
 
             class postInit { postInit = 1; };
@@ -13,16 +12,14 @@ class CfgFunctions
             class canModifyTo {};
         };
 
-        class ace_intel
-        {
+        class ace_intel {
             file = PATH_TO_FUNC_SUB(ace_intel);
             class getMagIDs {};
             class getIndexFromMagID {};
             class setIndexForMagID {};
         };
 
-        class getItems
-        {
+        class getItems {
             file = PATH_TO_FUNC_SUB(getItems);
             class getItems_all {};
             class getItems_modifiable_all {};
@@ -31,8 +28,7 @@ class CfgFunctions
             
         };
 
-        class replace
-        {
+        class replace {
             file = PATH_TO_FUNC_SUB(replace);
 
             class replace {};
@@ -41,8 +37,7 @@ class CfgFunctions
             class replace_uniform  {};
         };
 
-        class action
-        {
+        class action {
             file = PATH_TO_FUNC_SUB(action);
 
             class addActions {};
@@ -52,8 +47,7 @@ class CfgFunctions
             class getAction_Icon {};
         };
 
-        class cache
-        {
+        class cache {
             file = PATH_TO_FUNC_SUB(cache);
 
             class cache_db {};
@@ -64,29 +58,25 @@ class CfgFunctions
             class clearOnClosed_Inventory {};
         };
 
-        class config
-        {
+        class config {
             file = PATH_TO_FUNC_SUB(config);
 
             class getCfgDataRandom {};
         };
 
-        class debug
-        {
+        class debug {
             file = PATH_TO_FUNC_SUB(debug);
 
             class getAllWardrobeItems {};
             class compare_container_maxLoad {};
         };
 
-        class effects
-        {
+        class effects {
             file = PATH_TO_FUNC_SUB(effects);
 
             class say3d {};
         };
-        class contextMenu
-        {
+        class contextMenu {
             file = PATH_TO_FUNC_SUB(contextMenu);
 
             class enable_contextMenu {};
diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
index 2c5ddd4f0f0..d0e12cbcae2 100644
--- a/addons/wardrobe/CfgSounds.hpp
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -1,7 +1,6 @@
 // Duration in this case is 10th of secounds. so 10 -> 1 sec, 15 -> 1.5sec, ...
 #define ENTRY(base,dur)\
-class GVAR(DOUBLES(base,dur))\
-{\
+class GVAR(DOUBLES(base,dur)) {\
     name = Q(base dur);\
     sound[] = { QPATHTOF(data\DOUBLES(base,dur)##.ogg), 1, 1, 100 };\
     titles[] = { 0, "" };\
@@ -9,9 +8,8 @@ class GVAR(DOUBLES(base,dur))\
     titlesStructured = 0;\
 };
 
-class CfgSounds
-{
-	sounds[] = {};
+class CfgSounds {
+    sounds[] = {};
     ENTRY(fabric,06)
     ENTRY(fabric,07)
     ENTRY(fabric,16)
diff --git a/addons/wardrobe/compat_vanilla/Wardrobe.hpp b/addons/wardrobe/compat_vanilla/Wardrobe.hpp
index cce5ac273f3..b1740e5a47d 100644
--- a/addons/wardrobe/compat_vanilla/Wardrobe.hpp
+++ b/addons/wardrobe/compat_vanilla/Wardrobe.hpp
@@ -1,10 +1,8 @@
-class CfgWeapons
-{
+class CfgWeapons {
     #include "Uniforms.hpp"
 };
 
 
-class CfgGlasses
-{
+class CfgGlasses {
     #include "Facewear.hpp"
 };
\ No newline at end of file

From e5c0dc1191732212aa0930b268bd0d5cb6458273 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:32:18 +0100
Subject: [PATCH 064/139] formatting

---
 addons/wardrobe/stringtable.xml | 16 ++--------------
 1 file changed, 2 insertions(+), 14 deletions(-)

diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index c7d598c0c33..c13714e91e8 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -1,16 +1,14 @@
 <?xml version="1.0" encoding="utf-8"?>
-<Project name="ace">
-    <Package name="wardrobe">
+<Project name="ACE">
+    <Package name="Wardrobe">
         <Container name="CBA_Settings_Categories">
             <Key ID="STR_ace_wardrobe_set_cat_main">
-                <Original>ACE Wardrobe</Original>
                 <English>ACE Wardrobe</English>
                 <German>ACE Gaderobe</German>
             </Key>
         </Container>
         <Container name="CBA_Settings">
             <Key ID="STR_ace_wardrobe_set_enable_action">
-                <Original>Enable ACE Interaction</Original>
                 <English>Enable ACE Interaction</English>
                 <German>Aktivieren ACE Interaction</German>
             </Key>
@@ -18,7 +16,6 @@
                 <English>When Enabled, will let the player use the Wardrobe related Ace Interactions.</English>
             </Key>
             <Key ID="STR_ace_wardrobe_set_enable_contexMenu">
-                <Original>Enable CBA Context Menu</Original>
                 <English>Enable </English>
                 <German>Aktiviere CBA Context Menu</German>
             </Key>
@@ -28,40 +25,31 @@
         </Container>
         <Container name="Action">
             <Key ID="STR_ace_wardrobe_actionTitle">
-                <Original>Wardrobe</Original>
                 <English>Wardrobe</English>
                 <German>Gaderobe</German>
             </Key>
             <Key ID="STR_ace_wardrobe_glovesOff">
-                <Original>Take gloves off</Original>
                 <English>Take gloves off</English>
             </Key>
             <Key ID="STR_ace_wardrobe_glovesOn">
-                <Original>Wear gloves</Original>
                 <English>Wear gloves</English>
             </Key>
             <Key ID="STR_ace_wardrobe_jacketClose">
-                <Original>Close Jacket</Original>
                 <English>Close Jacket</English>
             </Key>
             <Key ID="STR_ace_wardrobe_jacketOpen">
-                <Original>Open Jacket</Original>
                 <English>Open Jacket</English>
             </Key>
             <Key ID="STR_ace_wardrobe_sleevesDown">
-                <Original>Roll sleeves down</Original>
                 <English>Roll sleeves down</English>
             </Key>
             <Key ID="STR_ace_wardrobe_sleevesUp">
-                <Original>Roll sleeves up</Original>
                 <English>Roll sleeves up</English>
             </Key>
             <Key ID="STR_ace_wardrobe_visorDown">
-                <Original>Visor down</Original>
                 <English>Visor down</English>
             </Key>
             <Key ID="STR_ace_wardrobe_visorUp">
-                <Original>Visor up</Original>
                 <English>Visor up</English>
             </Key>
         </Container>

From fd1a4b025e95ff0844088999bbfd4d3725731540 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 03:34:00 +0100
Subject: [PATCH 065/139] fix ID attribute

---
 addons/wardrobe/stringtable.xml | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index c13714e91e8..12b8f41893f 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -2,54 +2,54 @@
 <Project name="ACE">
     <Package name="Wardrobe">
         <Container name="CBA_Settings_Categories">
-            <Key ID="STR_ace_wardrobe_set_cat_main">
+            <Key ID="STR_ACE_Wardrobe_set_cat_main">
                 <English>ACE Wardrobe</English>
                 <German>ACE Gaderobe</German>
             </Key>
         </Container>
         <Container name="CBA_Settings">
-            <Key ID="STR_ace_wardrobe_set_enable_action">
+            <Key ID="STR_ACE_Wardrobe_set_enable_action">
                 <English>Enable ACE Interaction</English>
                 <German>Aktivieren ACE Interaction</German>
             </Key>
-            <Key ID="STR_ace_wardrobe_set_enable_action_desc">
+            <Key ID="STR_ACE_Wardrobe_set_enable_action_desc">
                 <English>When Enabled, will let the player use the Wardrobe related Ace Interactions.</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_set_enable_contexMenu">
+            <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu">
                 <English>Enable </English>
                 <German>Aktiviere CBA Context Menu</German>
             </Key>
-            <Key ID="STR_ace_wardrobe_set_enable_contexMenu_desc">
+            <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu_desc">
                 <English>When Enabled, will let the player use the Wardrobe related CBA Context Menu Options.&lt;br/&gt;Can be enabled at any time, but requires restart to disable. </English>
             </Key>
         </Container>
         <Container name="Action">
-            <Key ID="STR_ace_wardrobe_actionTitle">
+            <Key ID="STR_ACE_Wardrobe_actionTitle">
                 <English>Wardrobe</English>
                 <German>Gaderobe</German>
             </Key>
-            <Key ID="STR_ace_wardrobe_glovesOff">
+            <Key ID="STR_ACE_Wardrobe_glovesOff">
                 <English>Take gloves off</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_glovesOn">
+            <Key ID="STR_ACE_Wardrobe_glovesOn">
                 <English>Wear gloves</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_jacketClose">
+            <Key ID="STR_ACE_Wardrobe_jacketClose">
                 <English>Close Jacket</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_jacketOpen">
+            <Key ID="STR_ACE_Wardrobe_jacketOpen">
                 <English>Open Jacket</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_sleevesDown">
+            <Key ID="STR_ACE_Wardrobe_sleevesDown">
                 <English>Roll sleeves down</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_sleevesUp">
+            <Key ID="STR_ACE_Wardrobe_sleevesUp">
                 <English>Roll sleeves up</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_visorDown">
+            <Key ID="STR_ACE_Wardrobe_visorDown">
                 <English>Visor down</English>
             </Key>
-            <Key ID="STR_ace_wardrobe_visorUp">
+            <Key ID="STR_ACE_Wardrobe_visorUp">
                 <English>Visor up</English>
             </Key>
         </Container>

From e15e8e8d4743100df5a363e73ccf8e4be45b54a6 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 11:57:00 +0100
Subject: [PATCH 066/139] Q( -> QUOTE(

---
 .../compat_gm/compat_gm_wardrobe/Uniforms.hpp | 68 +++++++++----------
 .../compat_rf/compat_rf_wardrobe/Helmets.hpp  |  4 +-
 .../compat_rf/compat_rf_wardrobe/Uniforms.hpp | 16 ++---
 .../compat_sog_wardrobe/Booniehats.hpp        | 27 ++++----
 .../compat_sog_wardrobe/Pilothelmets.hpp      |  8 +--
 .../compat_sog_wardrobe/Uniforms_B.hpp        |  4 +-
 .../compat_sog_wardrobe/Uniforms_O.hpp        |  4 +-
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  |  2 +-
 addons/wardrobe/Baseclass.hpp                 |  2 +-
 addons/wardrobe/CfgSounds.hpp                 |  2 +-
 addons/wardrobe/CfgVehicles.hpp               |  4 +-
 addons/wardrobe/compat_vanilla/Uniforms.hpp   |  4 +-
 .../debug/fn_getAllWardrobeItems.sqf          |  4 +-
 addons/wardrobe/functions/fn_isModifiable.sqf |  2 +-
 .../wardrobe/functions/replace/fn_replace.sqf | 10 +--
 addons/wardrobe/script_macros_wardrobe.hpp    |  9 ++-
 16 files changed, 85 insertions(+), 85 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index 31bd6db4255..c8857364a5e 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -7,23 +7,23 @@ class gm_ge_bgs_uniform_special_rolled_80_base;
 
 class gm_ge_bgs_uniform_special_80_grn: gm_ge_bgs_uniform_special_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_grn) };
+        modifiableTo[] = { "gm_ge_bgs_uniform_special_rolled_80_grn" };
     };
 };
 class gm_ge_bgs_uniform_special_rolled_80_grn: gm_ge_bgs_uniform_special_rolled_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
-        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_grn) };
+        modifiableTo[] = { "gm_ge_bgs_uniform_special_80_grn" };
     };
 };
 
 class gm_ge_bgs_uniform_special_80_blk: gm_ge_bgs_uniform_special_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_rolled_80_blk) };
+        modifiableTo[] = { "gm_ge_bgs_uniform_special_rolled_80_blk" };
     };
 };
 class gm_ge_bgs_uniform_special_rolled_80_blk: gm_ge_bgs_uniform_special_rolled_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
-        modifiableTo[] = { Q(gm_ge_bgs_uniform_special_80_blk) };
+        modifiableTo[] = { "gm_ge_bgs_uniform_special_80_blk" };
     };
 };
 
@@ -33,34 +33,34 @@ class gm_ge_army_uniform_pilot_rolled_base;
 
 class gm_ge_army_uniform_pilot_sar: gm_ge_army_uniform_pilot_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_sar) };
+        modifiableTo[] = { "gm_ge_army_uniform_pilot_rolled_sar" };
     };
 };
 class gm_ge_army_uniform_pilot_rolled_sar: gm_ge_army_uniform_pilot_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
-        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_sar) };
+        modifiableTo[] = { "gm_ge_army_uniform_pilot_sar" };
     };
 };
 
 class gm_ge_army_uniform_pilot_oli: gm_ge_army_uniform_pilot_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_oli) };
+        modifiableTo[] = { "gm_ge_army_uniform_pilot_oli" };
     };
 };
 class gm_ge_army_uniform_pilot_rolled_oli: gm_ge_army_uniform_pilot_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
-        modifiableTo[] = { Q(gm_ge_army_uniform_pilot_rolled_oli) };
+        modifiableTo[] = { "gm_ge_army_uniform_pilot_rolled_oli" };
     };
 };
 
 class gm_ge_pol_uniform_pilot_grn: gm_ge_army_uniform_pilot_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_rolled_grn) };
+        modifiableTo[] = { "gm_ge_pol_uniform_pilot_rolled_grn" };
     };
 };
 class gm_ge_pol_uniform_pilot_rolled_grn: gm_ge_army_uniform_pilot_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up)   {
-        modifiableTo[] = { Q(gm_ge_pol_uniform_pilot_grn) };
+        modifiableTo[] = { "gm_ge_pol_uniform_pilot_grn" };
     };
 };
 
@@ -69,34 +69,34 @@ class gm_ge_uniform_pilot_commando_rolled_base;
 
 class gm_ge_uniform_pilot_commando_oli: gm_ge_uniform_pilot_commando_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_oli) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_rolled_oli" };
     };
 };
 class gm_ge_uniform_pilot_commando_rolled_oli: gm_ge_uniform_pilot_commando_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_oli) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_oli" };
     };
 };
 
 class gm_ge_uniform_pilot_commando_gry: gm_ge_uniform_pilot_commando_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_gry) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_rolled_gry" };
     };
 };
 class gm_ge_uniform_pilot_commando_rolled_gry: gm_ge_uniform_pilot_commando_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_gry) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_gry" };
     };
 };
 
 class gm_ge_uniform_pilot_commando_blk: gm_ge_uniform_pilot_commando_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_rolled_blk) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_rolled_blk" };
     };
 };
 class gm_ge_uniform_pilot_commando_rolled_blk: gm_ge_uniform_pilot_commando_rolled_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_ge_uniform_pilot_commando_blk) };
+        modifiableTo[] = { "gm_ge_uniform_pilot_commando_blk" };
     };
 };
 
@@ -104,23 +104,23 @@ class gm_pl_uniform_soldier_80_base;
 
 class gm_pl_army_uniform_soldier_80_frog: gm_pl_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_frog) };
+        modifiableTo[] = { "gm_pl_army_uniform_soldier_rolled_80_frog" };
     };
 };
 class gm_pl_army_uniform_soldier_rolled_80_frog: gm_pl_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_frog) };
+        modifiableTo[] = { "gm_pl_army_uniform_soldier_80_frog" };
     };
 };
 
 class gm_pl_army_uniform_soldier_80_moro: gm_pl_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_rolled_80_moro) };
+        modifiableTo[] = { "gm_pl_army_uniform_soldier_rolled_80_moro" };
     };
 };
 class gm_pl_army_uniform_soldier_rolled_80_moro: gm_pl_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_pl_army_uniform_soldier_80_moro) };
+        modifiableTo[] = { "gm_pl_army_uniform_soldier_80_moro" };
     };
 };
 
@@ -129,23 +129,23 @@ class gm_ge_uniform_soldier_90_base;
 
 class gm_ge_uniform_soldier_90_trp: gm_ge_uniform_soldier_90_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_trp) };
+        modifiableTo[] = { "gm_ge_uniform_soldier_rolled_90_trp" };
     };
 };
 class gm_ge_uniform_soldier_rolled_90_trp: gm_ge_uniform_soldier_90_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_ge_uniform_soldier_90_trp) };
+        modifiableTo[] = { "gm_ge_uniform_soldier_90_trp" };
     };
 };
 
 class gm_ge_uniform_soldier_90_flk: gm_ge_uniform_soldier_90_base { 
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {
-        modifiableTo[] = { Q(gm_ge_uniform_soldier_rolled_90_flk) };
+        modifiableTo[] = { "gm_ge_uniform_soldier_rolled_90_flk" };
     };
 };
 class gm_ge_uniform_soldier_rolled_90_flk: gm_ge_uniform_soldier_90_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_ge_uniform_soldier_90_flk) };
+        modifiableTo[] = { "gm_ge_uniform_soldier_90_flk" };
     };
 };
 
@@ -157,24 +157,24 @@ class gm_ge_uniform_soldier_rolled_90_flk: gm_ge_uniform_soldier_90_base {
 class gm_gc_uniform_soldier_80_base;
 class gm_gc_army_uniform_soldier_gloves_80_str: gm_gc_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
-        modifiableTo[] = { Q(gm_gc_army_uniform_soldier_80_str) };
+        modifiableTo[] = { "gm_gc_army_uniform_soldier_80_str" };
     };
 };
 class gm_gc_army_uniform_soldier_80_str: gm_gc_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_off) {
-        modifiableTo[] = { Q(gm_gc_army_uniform_soldier_gloves_80_str) };
+        modifiableTo[] = { "gm_gc_army_uniform_soldier_gloves_80_str" };
     };
 };
 
 class gm_ge_uniform_soldier_80_base;
 class gm_ge_army_uniform_soldier_gloves_80_ols: gm_ge_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
-        modifiableTo[] = { Q(gm_ge_army_uniform_soldier_80_ols) };
+        modifiableTo[] = { "gm_ge_army_uniform_soldier_80_ols" };
     };
 };
 class gm_ge_army_uniform_soldier_80_ols: gm_ge_uniform_soldier_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_off) {
-        modifiableTo[] = { Q(gm_ge_army_uniform_soldier_gloves_80_ols) };
+        modifiableTo[] = { "gm_ge_army_uniform_soldier_gloves_80_ols" };
     };
 };
 
@@ -185,33 +185,33 @@ class gm_ge_army_uniform_soldier_bdu_rolled_80_wdl;
 
 class gm_xx_uniform_soldier_bdu_80_wdl: gm_ge_army_uniform_soldier_bdu_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_rolled_80_wdl", "gm_xx_uniform_soldier_bdu_nogloves_80_wdl" };
     };
 };
 class gm_xx_uniform_soldier_bdu_rolled_80_wdl: gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_nogloves_80_wdl) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_80_wdl", "gm_xx_uniform_soldier_bdu_nogloves_80_wdl" };
     };
 };
 class gm_xx_uniform_soldier_bdu_nogloves_80_wdl: gm_ge_army_uniform_soldier_bdu_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_wdl), Q(gm_xx_uniform_soldier_bdu_rolled_80_wdl) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_80_wdl", "gm_xx_uniform_soldier_bdu_rolled_80_wdl" };
     };
 };
 
 class gm_xx_uniform_soldier_bdu_80_oli: gm_ge_army_uniform_soldier_bdu_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base_U_gloves_on) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_rolled_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_rolled_80_oli", "gm_xx_uniform_soldier_bdu_nogloves_80_oli" };
     };
 };
 class gm_xx_uniform_soldier_bdu_rolled_80_oli: gm_ge_army_uniform_soldier_bdu_rolled_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_nogloves_80_oli) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_80_oli", "gm_xx_uniform_soldier_bdu_nogloves_80_oli" };
     };
 };
 class gm_xx_uniform_soldier_bdu_nogloves_80_oli: gm_ge_army_uniform_soldier_bdu_80_wdl {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(gm_xx_uniform_soldier_bdu_80_oli), Q(gm_xx_uniform_soldier_bdu_rolled_80_oli) };
+        modifiableTo[] = { "gm_xx_uniform_soldier_bdu_80_oli", "gm_xx_uniform_soldier_bdu_rolled_80_oli" };
     };
 };
 
diff --git a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
index 06411e8dd1c..9691347d687 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
@@ -6,8 +6,8 @@
 
 
 #define HELMET_VARIANT(color)\
-class CN(color): H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { Q(CN_VU(color)) }; }; };\
-class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { Q(CN(color)) }; }; };\
+class CN(color): H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { QUOTE(CN_VU(color)) }; }; };\
+class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { QUOTE(CN(color)) }; }; };\
 
 
 // Base Classes
diff --git a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
index 0692cd72fb0..dae2da7e4e8 100644
--- a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
@@ -4,8 +4,8 @@ class Uniform_Base;
 
 // Macros
 #define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { Q(class2) }; }; };\
-class class2: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { Q(class1) }; }; };
+class class1: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { QUOTE(class2) }; }; };\
+class class2: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { QUOTE(class1) }; }; };
 
 // Simple Variants
 UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
@@ -13,11 +13,11 @@ UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF)
 
 
 // Pilot Jackets
-class U_C_PilotJacket_black_RF: Uniform_Base             { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_black_RF) };    }; };
-class U_C_PilotJacket_open_black_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_black_RF) };         }; };
+class U_C_PilotJacket_black_RF: Uniform_Base             { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_black_RF" };    }; };
+class U_C_PilotJacket_open_black_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_black_RF" };         }; };
 
-class U_C_PilotJacket_brown_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_brown_RF) };    }; };
-class U_C_PilotJacket_open_brown_RF: U_C_PilotJacket_brown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_brown_RF) };         }; };
+class U_C_PilotJacket_brown_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_brown_RF" };    }; };
+class U_C_PilotJacket_open_brown_RF: U_C_PilotJacket_brown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_brown_RF" };         }; };
 
-class U_C_PilotJacket_lbrown_RF: U_C_PilotJacket_black_RF  { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { Q(U_C_PilotJacket_open_lbrown_RF) }; }; };
-class U_C_PilotJacket_open_lbrown_RF: U_C_PilotJacket_lbrown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { Q(U_C_PilotJacket_lbrown_RF) };      }; };
+class U_C_PilotJacket_lbrown_RF: U_C_PilotJacket_black_RF  { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_lbrown_RF" }; }; };
+class U_C_PilotJacket_open_lbrown_RF: U_C_PilotJacket_lbrown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_lbrown_RF" };      }; };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 99dd22b0963..4bffac40e10 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -10,33 +10,34 @@
 
 // Macros
 #define CN(variation,color) vn_b_boonie_##variation##_##color
+#define QCN(variation,color) QUOTE(CN(variation,color))
 
 // Base Boonie
 #define CAMO_BASE 01
 
 class CN(02,CAMO_BASE): vn_b_headgear_base {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+        modifiableTo[] = { QCN(01,CAMO_BASE), QCN(03,CAMO_BASE), QCN(04,CAMO_BASE), QCN(05,CAMO_BASE) };
     };
 };
 class CN(01,CAMO_BASE): CN(02,CAMO_BASE) {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+        modifiableTo[] = { QCN(02,CAMO_BASE), QCN(03,CAMO_BASE), QCN(04,CAMO_BASE), QCN(05,CAMO_BASE) };
     };
 };
 class CN(03,CAMO_BASE): CN(02,CAMO_BASE)   {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(04,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+        modifiableTo[] = { QCN(01,CAMO_BASE), QCN(02,CAMO_BASE), QCN(04,CAMO_BASE), QCN(05,CAMO_BASE) };
     };
 };
 class CN(04,CAMO_BASE): CN(02,CAMO_BASE) {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(05,CAMO_BASE)) };
+        modifiableTo[] = { QCN(01,CAMO_BASE), QCN(02,CAMO_BASE), QCN(03,CAMO_BASE), QCN(05,CAMO_BASE) };
     };
 };
 class CN(05,CAMO_BASE): CN(02,CAMO_BASE)   {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { Q(CN(01,CAMO_BASE)), Q(CN(02,CAMO_BASE)), Q(CN(03,CAMO_BASE)), Q(CN(04,CAMO_BASE)) };
+        modifiableTo[] = { QCN(01,CAMO_BASE), QCN(02,CAMO_BASE), QCN(03,CAMO_BASE), QCN(04,CAMO_BASE) };
     };
 };
 
@@ -44,27 +45,27 @@ class CN(05,CAMO_BASE): CN(02,CAMO_BASE)   {
 #define CN_COLORS(CAMO)\
 class CN(02,CAMO): CN(02,01) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+        modifiableTo[] = { QCN(01,CAMO), QCN(03,CAMO), QCN(04,CAMO), QCN(05,CAMO) };\
     };\
 };\
 class CN(01,CAMO): CN(02,CAMO) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+        modifiableTo[] = { QCN(02,CAMO), QCN(03,CAMO), QCN(04,CAMO), QCN(05,CAMO) };\
     };\
 };\
 class CN(03,CAMO): CN(02,CAMO) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(04,CAMO)), Q(CN(05,CAMO)) };\
+        modifiableTo[] = { QCN(01,CAMO), QCN(02,CAMO), QCN(04,CAMO), QCN(05,CAMO) };\
     };\
 };\
 class CN(04,CAMO): CN(02,CAMO) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(05,CAMO)) };\
+        modifiableTo[] = { QCN(01,CAMO), QCN(02,CAMO), QCN(03,CAMO), QCN(05,CAMO) };\
     };\
 };\
 class CN(05,CAMO): CN(02,CAMO) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(01,CAMO)), Q(CN(02,CAMO)), Q(CN(03,CAMO)), Q(CN(04,CAMO)) };\
+        modifiableTo[] = { QCN(01,CAMO), QCN(02,CAMO), QCN(03,CAMO), QCN(04,CAMO) };\
     };\
 };
 
@@ -80,17 +81,17 @@ CN_COLORS(05)
 #define BOONIE_ANZAC(VAR)\
 class CN(06,VAR): CN(02,01) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(07,VAR)), Q(CN(08,VAR)) };\
+        modifiableTo[] = { QCN(07,VAR), QCN(08,VAR) };\
     };\
 };\
 class CN(07,VAR): CN(06,VAR) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(06,VAR)), Q(CN(08,VAR)) };\
+        modifiableTo[] = { QCN(06,VAR), QCN(08,VAR) };\
     };\
 };\
 class CN(08,VAR): CN(06,VAR) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { Q(CN(06,VAR)), Q(CN(07,VAR)) };\
+        modifiableTo[] = { QCN(06,VAR), QCN(07,VAR) };\
     };\
 };
 
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
index e87a5782932..d31d288e4b7 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
@@ -9,12 +9,12 @@
 #define HELMET_VARIANT(side,var1,var2)\
 class CN01(side,var1,var2): base_class_up {\
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {\
-        modifiableTo[] = { Q(CN02(side,var1,var2)) };\
+        modifiableTo[] = { QUOTE(CN02(side,var1,var2)) };\
     };\
 };\
 class CN02(side,var1,var2): base_class_dn {\
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
-        modifiableTo[] = { Q(CN01(side,var1,var2)) };\
+        modifiableTo[] = { QUOTE(CN01(side,var1,var2)) };\
     };\
 };
 
@@ -53,11 +53,11 @@ HELMET_VARIANT(b,svh4,06)
 // Special Case zsh3
 class vn_o_helmet_zsh3_01: vn_o_headgear_base {
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {
-        modifiableTo[] = { Q(vn_o_helmet_zsh3_02) };
+        modifiableTo[] = { "vn_o_helmet_zsh3_02" };
     }; 
 };
 class vn_o_helmet_zsh3_02: vn_o_helmet_zsh3_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {
-        modifiableTo[] = { Q(vn_o_helmet_zsh3_01) };
+        modifiableTo[] = { "vn_o_helmet_zsh3_01" };
     }; 
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index 704f58d966b..72e41a9b087 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -6,12 +6,12 @@ class vn_b_uniform_base;
 #define UNIFORM_BASE_B(class1,class2)\
 class class1: vn_b_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
-        modifiableTo[] = { Q(class2) };\
+        modifiableTo[] = { QUOTE(class2) };\
     };\
 };\
 class class2: vn_b_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
-        modifiableTo[] = { Q(class1) };\
+        modifiableTo[] = { QUOTE(class1) };\
     };\
 };
 
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
index c68db25cd9f..b411ab0c7f5 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
@@ -3,12 +3,12 @@ class vn_o_uniform_base;
 #define UNIFORM_BASE_O(class1,class2)\
 class class1: vn_o_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
-        modifiableTo[] = { Q(class2) };\
+        modifiableTo[] = { QUOTE(class2) };\
     };\
 };\
 class class2: vn_o_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
-        modifiableTo[] = { Q(class1) };\
+        modifiableTo[] = { QUOTE(class1) };\
     };\
 };
 
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 87346bb6aa4..ff8b091e736 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -2,7 +2,7 @@
 
 // MACROS
 #define CN(version,color) lxWS_H_turban_##version##_##color
-#define QCN(version,color) Q(CN(version,color))
+#define QCN(version,color) QUOTE(CN(version,color))
 
 #define COLORGROUP(COLOR)\
 class CN(01,COLOR): lxWS_H_turban_01_black {\
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index f09c2dbe844..c2d070e179d 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,4 +1,4 @@
-#define CN_SOUND(base,dur) Q(TRIPLES(ADDON,base,dur))
+#define CN_SOUND(base,dur) QUOTE(TRIPLES(ADDON,base,dur))
 
 class GVAR(base) {
     modifiableTo[] = {""};
diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
index d0e12cbcae2..72a856caed6 100644
--- a/addons/wardrobe/CfgSounds.hpp
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -1,7 +1,7 @@
 // Duration in this case is 10th of secounds. so 10 -> 1 sec, 15 -> 1.5sec, ...
 #define ENTRY(base,dur)\
 class GVAR(DOUBLES(base,dur)) {\
-    name = Q(base dur);\
+    name = QUOTE(base dur);\
     sound[] = { QPATHTOF(data\DOUBLES(base,dur)##.ogg), 1, 1, 100 };\
     titles[] = { 0, "" };\
     forceTitles = 0;\
diff --git a/addons/wardrobe/CfgVehicles.hpp b/addons/wardrobe/CfgVehicles.hpp
index 2035d60bf50..c24fa239e63 100644
--- a/addons/wardrobe/CfgVehicles.hpp
+++ b/addons/wardrobe/CfgVehicles.hpp
@@ -6,9 +6,9 @@ class CfgVehicles {
                 class ADDON {
                     displayName = CSTRING(actionTitle); // Text shown to user
                     icon = QPATHTOF(data\wardrobe_logo.paa);
-                    condition = Q([_player] call FUNC(addActions_condition));
+                    condition = QUOTE([_player] call FUNC(addActions_condition));
                     statement = "";
-                    insertChildren = Q([_player] call FUNC(addActions));
+                    insertChildren = QUOTE([_player] call FUNC(addActions));
                     exceptions[] = {"isNotSwimming","isNotSitting"};
                 };
             };
diff --git a/addons/wardrobe/compat_vanilla/Uniforms.hpp b/addons/wardrobe/compat_vanilla/Uniforms.hpp
index ed1ec598b02..511fba3b967 100644
--- a/addons/wardrobe/compat_vanilla/Uniforms.hpp
+++ b/addons/wardrobe/compat_vanilla/Uniforms.hpp
@@ -5,12 +5,12 @@ class Uniform_Base;
 #define UNIFORM_BASE(class1,class2)\
 class class1: Uniform_Base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
-        modifiableTo[] = { Q(class2) };\
+        modifiableTo[] = { QUOTE(class2) };\
     };\
 };\
 class class2: Uniform_Base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
-        modifiableTo[] = { Q(class1) };\
+        modifiableTo[] = { QUOTE(class1) };\
     };\
 };
 
diff --git a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
index a3da7fd40fc..7bb6cb8b308 100644
--- a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
@@ -18,6 +18,6 @@
 params [["_asConfig", false, [true]]];
 
 [
-    ["CfgWeapons", "CfgGlasses"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } },
-    ["CfgWeapons", "CfgGlasses"] apply { ( Q([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) }    
+    ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } },
+    ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) }    
 ] select _asConfig
diff --git a/addons/wardrobe/functions/fn_isModifiable.sqf b/addons/wardrobe/functions/fn_isModifiable.sqf
index 274339091a5..c382ac5b36a 100644
--- a/addons/wardrobe/functions/fn_isModifiable.sqf
+++ b/addons/wardrobe/functions/fn_isModifiable.sqf
@@ -22,4 +22,4 @@ params [
 
 if (isNull _cfg) exitWith {false};
 // Checks if the config has the property without it being inherited(!)
-count ( Q(configName _x  isEqualTo ""ace_wardrobe"") configClasses _cfg ) > 0
\ No newline at end of file
+count ( QUOTE(configName _x  isEqualTo QQ(ace_wardrobe)) configClasses _cfg ) > 0
\ No newline at end of file
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/replace/fn_replace.sqf
index e0cc297d3f5..265f62c7506 100644
--- a/addons/wardrobe/functions/replace/fn_replace.sqf
+++ b/addons/wardrobe/functions/replace/fn_replace.sqf
@@ -19,7 +19,7 @@ params ["_target", "_unit", "_actionParams", ["_replaceNow", false, [true]]];
 _actionParams params ["_cfg_origin", "_cfg_tgt"];
 
 // Duration of the "animation"
-private _duration = getNumber (_cfg_tgt>> Q(ADDON) >> "duration");
+private _duration = getNumber (_cfg_tgt>> QADDON >> "duration");
 if (_replaceNow) then { _duration = 0; };
 
 // Replace the Main Item.
@@ -33,7 +33,7 @@ private _replaceCode = switch ( _typeNumber ) do {
     default {
         // CfgGlasses items do not have a ItemInfo Subclass and therefore, not TypeNumber.
         switch (true) do {
-            case (isclass (configFile >> "CfgGlasses" >> configName _cfg_origin)): { FUNC(replace_facewear) };
+            case (isClass (configFile >> "CfgGlasses" >> configName _cfg_origin)): { FUNC(replace_facewear) };
             default { false };
         };
     };
@@ -54,11 +54,11 @@ if (_replaceCode isEqualType false) exitWith { ERROR_2("typeNumber undefined: %1
 
 
 // Animation/Gestures
-[ _unit, getText (_cfg_tgt >> Q(ADDON) >> "gesture") ] call ace_common_fnc_doGesture;
+[ _unit, getText (_cfg_tgt >> QADDON >> "gesture") ] call ace_common_fnc_doGesture;
 
 // Plays Random Sound At the Beginning
-private _sound_timing = getNumber (_cfg_tgt>> Q(ADDON) >> "sound_timing") max 0 min 1;
-private _sound = [_cfg_tgt >> Q(ADDON) >> "sound"] call FUNC(getCfgDataRandom);
+private _sound_timing = getNumber (_cfg_tgt>> QADDON >> "sound_timing") max 0 min 1;
+private _sound = [_cfg_tgt >> QADDON >> "sound"] call FUNC(getCfgDataRandom);
 if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
 
 
diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
index 86ab5b50b55..75236f0e046 100644
--- a/addons/wardrobe/script_macros_wardrobe.hpp
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -1,18 +1,17 @@
 // CBA Settings
 #define SET(var1) TRIPLES(ADDON,set,var1)
-#define QSET(var1) Q(SET(var1))
+#define QSET(var1) QUOTE(SET(var1))
 #define QQSET(var1) QQ(SET(var1))
 #define ESET(var1,var2) TRIPLES(DOUBLES(PREFIX,var1),SET,var2)
-#define QESET(var1,var2) Q(ESET(var1,var2))
+#define QESET(var1,var2) QUOTE(ESET(var1,var2))
 #define QQESET(var1,var2) QQ(ESET(var1,var2))
 
 // LSTRING for cba Settings
 #define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
 
-#define Q(var1) QUOTE(var1)
-#define QQ(var1) Q(Q(var1))
+#define QQ(var1) QUOTE(QUOTE(var1))
 
-#define QADDON Q(ADDON)
+#define QADDON QUOTE(ADDON)
 
 // Paths
 #define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)

From 3d8aa264fad3eb2fc049bd5ef9daddb73f2cc5f3 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 11:59:39 +0100
Subject: [PATCH 067/139] pruned SUBCOMPONENT_BEAUTIFIED

---
 addons/compat_gm/compat_gm_wardrobe/script_component.hpp        | 2 +-
 addons/compat_rf/compat_rf_wardrobe/script_component.hpp        | 2 +-
 addons/compat_sog/compat_sog_wardrobe/script_component.hpp      | 2 +-
 .../compat_sog_wardrobe_uniform_fix/script_component.hpp        | 2 +-
 addons/compat_ws/compat_ws_wardrobe/script_component.hpp        | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
index 21f2a8d74d4..33ff700f410 100644
--- a/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/script_component.hpp
@@ -1,5 +1,5 @@
 #define SUBCOMPONENT wardrobe
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for GlobMo
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
 #include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
diff --git a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
index b9375b33011..67ddb91ef0a 100644
--- a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
@@ -1,5 +1,5 @@
 #define SUBCOMPONENT wardrobe
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for RF
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
 #include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
index 285bfd696d5..33ff700f410 100644
--- a/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/script_component.hpp
@@ -1,5 +1,5 @@
 #define SUBCOMPONENT wardrobe
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
 #include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
index e02f07c5fcb..845da92a822 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
@@ -1,5 +1,5 @@
 #define SUBCOMPONENT wardrobe_uniform_fix
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for SOG:PF - Uniform Fix
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
 #include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
diff --git a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
index 3cb1f8bd5c8..67ddb91ef0a 100644
--- a/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/script_component.hpp
@@ -1,5 +1,5 @@
 #define SUBCOMPONENT wardrobe
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe Compatibility for Western Sahara
+#define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
 #include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file

From 8506f650121a9e78df398c670a9a8c2ce6667636 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 12:06:26 +0100
Subject: [PATCH 068/139] also adapt mass to 70

---
 addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 82d18c07c20..10bc6521da1 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -4,6 +4,7 @@ class ItemInfo;
 class className: vn_b_uniform_base {\
     class ItemInfo: ItemInfo {\
         containerClass = "Supply70";\
+        mass = 70;\
     };\
 };
 

From 401cd950d3a12629e2a99efa81be7d96420fe6dd Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 18:27:16 +0100
Subject: [PATCH 069/139] compat_vanilla -> root

---
 .../wardrobe/{compat_vanilla/Wardrobe.hpp => CfgWardrobe.hpp}   | 0
 addons/wardrobe/{compat_vanilla => }/Facewear.hpp               | 0
 addons/wardrobe/{compat_vanilla => }/Uniforms.hpp               | 0
 addons/wardrobe/config.cpp                                      | 2 +-
 4 files changed, 1 insertion(+), 1 deletion(-)
 rename addons/wardrobe/{compat_vanilla/Wardrobe.hpp => CfgWardrobe.hpp} (100%)
 rename addons/wardrobe/{compat_vanilla => }/Facewear.hpp (100%)
 rename addons/wardrobe/{compat_vanilla => }/Uniforms.hpp (100%)

diff --git a/addons/wardrobe/compat_vanilla/Wardrobe.hpp b/addons/wardrobe/CfgWardrobe.hpp
similarity index 100%
rename from addons/wardrobe/compat_vanilla/Wardrobe.hpp
rename to addons/wardrobe/CfgWardrobe.hpp
diff --git a/addons/wardrobe/compat_vanilla/Facewear.hpp b/addons/wardrobe/Facewear.hpp
similarity index 100%
rename from addons/wardrobe/compat_vanilla/Facewear.hpp
rename to addons/wardrobe/Facewear.hpp
diff --git a/addons/wardrobe/compat_vanilla/Uniforms.hpp b/addons/wardrobe/Uniforms.hpp
similarity index 100%
rename from addons/wardrobe/compat_vanilla/Uniforms.hpp
rename to addons/wardrobe/Uniforms.hpp
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index daf52d50b31..c01f8e87e1e 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -28,4 +28,4 @@ class CfgPatches {
 
 #include "Baseclass.hpp"
 
-#include "compat_vanilla\Wardrobe.hpp"
\ No newline at end of file
+#include "CfgWardrobe.hpp"
\ No newline at end of file

From 7d65631fb84b926a1528fe4c9d8f2bc1b6563429 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 19:17:27 +0100
Subject: [PATCH 070/139] =?UTF-8?q?->=20PREP=20=F0=9F=92=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 addons/wardrobe/XEH_PREP.hpp                  | 43 +++++++++++++++++++
 addons/wardrobe/XEH_preInit.sqf               | 28 ++++--------
 .../fn_addActions.sqf => fnc_addActions.sqf}  |  0
 ...ildren.sqf => fnc_addActions_children.sqf} |  0
 ...ition.sqf => fnc_addActions_condition.sqf} |  0
 ...tvariant.sqf => fnc_addCM_nextvariant.sqf} |  0
 ...fn_cache_clear.sqf => fnc_cache_clear.sqf} |  0
 .../fn_cache_db.sqf => fnc_cache_db.sqf}      |  0
 .../fn_cache_get.sqf => fnc_cache_get.sqf}    |  0
 .../fn_cache_set.sqf => fnc_cache_set.sqf}    |  0
 ...fn_canModifyTo.sqf => fnc_canModifyTo.sqf} |  0
 ... => fnc_clearOnClosed_InteractionMenu.sqf} |  0
 ...ry.sqf => fnc_clearOnClosed_Inventory.sqf} |  0
 ...ponents.sqf => fnc_compare_components.sqf} |  0
 ....sqf => fnc_compare_container_maxLoad.sqf} |  0
 ...nextVariant.sqf => fnc_do_nextVariant.sqf} |  0
 ...extMenu.sqf => fnc_enable_contextMenu.sqf} |  0
 ...Action_Icon.sqf => fnc_getAction_Icon.sqf} |  0
 ...Action_Name.sqf => fnc_getAction_Name.sqf} |  0
 ...eItems.sqf => fnc_getAllWardrobeItems.sqf} |  0
 ...ataRandom.sqf => fnc_getCfgDataRandom.sqf} |  0
 ...romMagID.sqf => fnc_getIndexFromMagID.sqf} |  0
 ..._getItems_all.sqf => fnc_getItems_all.sqf} |  0
 ...leTo.sqf => fnc_getItems_modifiableTo.sqf} |  0
 ...ll.sqf => fnc_getItems_modifiable_all.sqf} |  0
 ...qf => fnc_getItems_modifiable_current.sqf} |  0
 .../fn_getMagIDs.sqf => fnc_getMagIDs.sqf}    |  0
 ...NextVariant.sqf => fnc_getNextVariant.sqf} |  0
 ..._isModifiable.sqf => fnc_isModifiable.sqf} |  0
 .../{fn_postInit.sqf => fnc_postInit.sqf}     |  0
 .../fn_replace.sqf => fnc_replace.sqf}        |  0
 ..._facewear.sqf => fnc_replace_facewear.sqf} |  0
 ..._headgear.sqf => fnc_replace_headgear.sqf} |  0
 ...ce_uniform.sqf => fnc_replace_uniform.sqf} |  0
 .../{effects/fn_say3d.sqf => fnc_say3d.sqf}   |  0
 ...xForMagID.sqf => fnc_setIndexForMagID.sqf} |  0
 addons/wardrobe/initSettings.inc.sqf          | 21 +++++++++
 37 files changed, 72 insertions(+), 20 deletions(-)
 create mode 100644 addons/wardrobe/XEH_PREP.hpp
 rename addons/wardrobe/functions/{action/fn_addActions.sqf => fnc_addActions.sqf} (100%)
 rename addons/wardrobe/functions/{action/fn_addActions_children.sqf => fnc_addActions_children.sqf} (100%)
 rename addons/wardrobe/functions/{action/fn_addActions_condition.sqf => fnc_addActions_condition.sqf} (100%)
 rename addons/wardrobe/functions/{contextMenu/fn_addCM_nextvariant.sqf => fnc_addCM_nextvariant.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_cache_clear.sqf => fnc_cache_clear.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_cache_db.sqf => fnc_cache_db.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_cache_get.sqf => fnc_cache_get.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_cache_set.sqf => fnc_cache_set.sqf} (100%)
 rename addons/wardrobe/functions/{fn_canModifyTo.sqf => fnc_canModifyTo.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_clearOnClosed_InteractionMenu.sqf => fnc_clearOnClosed_InteractionMenu.sqf} (100%)
 rename addons/wardrobe/functions/{cache/fn_clearOnClosed_Inventory.sqf => fnc_clearOnClosed_Inventory.sqf} (100%)
 rename addons/wardrobe/functions/{fn_compare_components.sqf => fnc_compare_components.sqf} (100%)
 rename addons/wardrobe/functions/{debug/fn_compare_container_maxLoad.sqf => fnc_compare_container_maxLoad.sqf} (100%)
 rename addons/wardrobe/functions/{contextMenu/fn_do_nextVariant.sqf => fnc_do_nextVariant.sqf} (100%)
 rename addons/wardrobe/functions/{contextMenu/fn_enable_contextMenu.sqf => fnc_enable_contextMenu.sqf} (100%)
 rename addons/wardrobe/functions/{action/fn_getAction_Icon.sqf => fnc_getAction_Icon.sqf} (100%)
 rename addons/wardrobe/functions/{action/fn_getAction_Name.sqf => fnc_getAction_Name.sqf} (100%)
 rename addons/wardrobe/functions/{debug/fn_getAllWardrobeItems.sqf => fnc_getAllWardrobeItems.sqf} (100%)
 rename addons/wardrobe/functions/{config/fn_getCfgDataRandom.sqf => fnc_getCfgDataRandom.sqf} (100%)
 rename addons/wardrobe/functions/{ace_intel/fn_getIndexFromMagID.sqf => fnc_getIndexFromMagID.sqf} (100%)
 rename addons/wardrobe/functions/{getItems/fn_getItems_all.sqf => fnc_getItems_all.sqf} (100%)
 rename addons/wardrobe/functions/{getItems/fn_getItems_modifiableTo.sqf => fnc_getItems_modifiableTo.sqf} (100%)
 rename addons/wardrobe/functions/{getItems/fn_getItems_modifiable_all.sqf => fnc_getItems_modifiable_all.sqf} (100%)
 rename addons/wardrobe/functions/{getItems/fn_getItems_modifiable_current.sqf => fnc_getItems_modifiable_current.sqf} (100%)
 rename addons/wardrobe/functions/{ace_intel/fn_getMagIDs.sqf => fnc_getMagIDs.sqf} (100%)
 rename addons/wardrobe/functions/{contextMenu/fn_getNextVariant.sqf => fnc_getNextVariant.sqf} (100%)
 rename addons/wardrobe/functions/{fn_isModifiable.sqf => fnc_isModifiable.sqf} (100%)
 rename addons/wardrobe/functions/{fn_postInit.sqf => fnc_postInit.sqf} (100%)
 rename addons/wardrobe/functions/{replace/fn_replace.sqf => fnc_replace.sqf} (100%)
 rename addons/wardrobe/functions/{replace/fn_replace_facewear.sqf => fnc_replace_facewear.sqf} (100%)
 rename addons/wardrobe/functions/{replace/fn_replace_headgear.sqf => fnc_replace_headgear.sqf} (100%)
 rename addons/wardrobe/functions/{replace/fn_replace_uniform.sqf => fnc_replace_uniform.sqf} (100%)
 rename addons/wardrobe/functions/{effects/fn_say3d.sqf => fnc_say3d.sqf} (100%)
 rename addons/wardrobe/functions/{ace_intel/fn_setIndexForMagID.sqf => fnc_setIndexForMagID.sqf} (100%)
 create mode 100644 addons/wardrobe/initSettings.inc.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
new file mode 100644
index 00000000000..a2c61927671
--- /dev/null
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -0,0 +1,43 @@
+PREP(postInit);
+PREP(isModifiable);
+PREP(compare_components);
+PREP(canModifyTo);
+// ace_intel
+PREP(getMagIDs);
+PREP(getIndexFromMagID);
+PREP(setIndexForMagID);
+// getItems
+PREP(getItems_all);
+PREP(getItems_modifiable_all);
+PREP(getItems_modifiable_current);
+PREP(getItems_modifiableTo);
+// Replace
+PREP(replace);
+PREP(replace_headgear);
+PREP(replace_facewear);
+PREP(replace_uniform);
+// Ace Actions
+PREP(addActions);
+PREP(addActions_condition);
+PREP(addActions_children);
+PREP(getAction_Name);
+PREP(getAction_Icon);
+// Cache
+PREP(cache_db);
+PREP(cache_get);
+PREP(cache_set);
+PREP(cache_clear);
+PREP(clearOnClosed_InteractionMenu);
+PREP(clearOnClosed_Inventory);
+// Config
+PREP(getCfgDataRandom);
+// Debug
+PREP(getAllWardrobeItems);
+PREP(compare_container_maxLoad);
+// Effects
+PREP(say3d);
+// CBA Context Menu
+PREP(enable_contextMenu);
+PREP(addCM_nextvariant);
+PREP(do_nextVariant);
+PREP(getNextVariant);
\ No newline at end of file
diff --git a/addons/wardrobe/XEH_preInit.sqf b/addons/wardrobe/XEH_preInit.sqf
index 9e2dfa374cc..894773534a4 100644
--- a/addons/wardrobe/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH_preInit.sqf
@@ -1,23 +1,11 @@
 #include "script_component.hpp"
 
-[
-    QSET(enable_action),
-    "CHECKBOX",
-    SETLSTRING(enable_action),
-    [LSTRING(set_cat_main)],
-    true,
-    1,
-    {},
-    false
-] call CBA_fnc_addSetting;
+ADDON = false;
 
-[
-    QSET(enable_contextMenu),
-    "CHECKBOX",
-    SETLSTRING(enable_contextMenu),
-    [LSTRING(set_cat_main)],
-    true,
-    1,
-    FUNC(enable_contextMenu),
-    true
-] call CBA_fnc_addSetting;
\ No newline at end of file
+PREP_RECOMPILE_START;
+#include "XEH_PREP.hpp"
+PREP_RECOMPILE_END;
+
+#include "initSettings.inc.sqf"
+
+ADDON = true;
diff --git a/addons/wardrobe/functions/action/fn_addActions.sqf b/addons/wardrobe/functions/fnc_addActions.sqf
similarity index 100%
rename from addons/wardrobe/functions/action/fn_addActions.sqf
rename to addons/wardrobe/functions/fnc_addActions.sqf
diff --git a/addons/wardrobe/functions/action/fn_addActions_children.sqf b/addons/wardrobe/functions/fnc_addActions_children.sqf
similarity index 100%
rename from addons/wardrobe/functions/action/fn_addActions_children.sqf
rename to addons/wardrobe/functions/fnc_addActions_children.sqf
diff --git a/addons/wardrobe/functions/action/fn_addActions_condition.sqf b/addons/wardrobe/functions/fnc_addActions_condition.sqf
similarity index 100%
rename from addons/wardrobe/functions/action/fn_addActions_condition.sqf
rename to addons/wardrobe/functions/fnc_addActions_condition.sqf
diff --git a/addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
similarity index 100%
rename from addons/wardrobe/functions/contextMenu/fn_addCM_nextvariant.sqf
rename to addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
diff --git a/addons/wardrobe/functions/cache/fn_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_cache_clear.sqf
rename to addons/wardrobe/functions/fnc_cache_clear.sqf
diff --git a/addons/wardrobe/functions/cache/fn_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_cache_db.sqf
rename to addons/wardrobe/functions/fnc_cache_db.sqf
diff --git a/addons/wardrobe/functions/cache/fn_cache_get.sqf b/addons/wardrobe/functions/fnc_cache_get.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_cache_get.sqf
rename to addons/wardrobe/functions/fnc_cache_get.sqf
diff --git a/addons/wardrobe/functions/cache/fn_cache_set.sqf b/addons/wardrobe/functions/fnc_cache_set.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_cache_set.sqf
rename to addons/wardrobe/functions/fnc_cache_set.sqf
diff --git a/addons/wardrobe/functions/fn_canModifyTo.sqf b/addons/wardrobe/functions/fnc_canModifyTo.sqf
similarity index 100%
rename from addons/wardrobe/functions/fn_canModifyTo.sqf
rename to addons/wardrobe/functions/fnc_canModifyTo.sqf
diff --git a/addons/wardrobe/functions/cache/fn_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_clearOnClosed_InteractionMenu.sqf
rename to addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
diff --git a/addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
similarity index 100%
rename from addons/wardrobe/functions/cache/fn_clearOnClosed_Inventory.sqf
rename to addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
diff --git a/addons/wardrobe/functions/fn_compare_components.sqf b/addons/wardrobe/functions/fnc_compare_components.sqf
similarity index 100%
rename from addons/wardrobe/functions/fn_compare_components.sqf
rename to addons/wardrobe/functions/fnc_compare_components.sqf
diff --git a/addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
similarity index 100%
rename from addons/wardrobe/functions/debug/fn_compare_container_maxLoad.sqf
rename to addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
diff --git a/addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
similarity index 100%
rename from addons/wardrobe/functions/contextMenu/fn_do_nextVariant.sqf
rename to addons/wardrobe/functions/fnc_do_nextVariant.sqf
diff --git a/addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
similarity index 100%
rename from addons/wardrobe/functions/contextMenu/fn_enable_contextMenu.sqf
rename to addons/wardrobe/functions/fnc_enable_contextMenu.sqf
diff --git a/addons/wardrobe/functions/action/fn_getAction_Icon.sqf b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
similarity index 100%
rename from addons/wardrobe/functions/action/fn_getAction_Icon.sqf
rename to addons/wardrobe/functions/fnc_getAction_Icon.sqf
diff --git a/addons/wardrobe/functions/action/fn_getAction_Name.sqf b/addons/wardrobe/functions/fnc_getAction_Name.sqf
similarity index 100%
rename from addons/wardrobe/functions/action/fn_getAction_Name.sqf
rename to addons/wardrobe/functions/fnc_getAction_Name.sqf
diff --git a/addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
similarity index 100%
rename from addons/wardrobe/functions/debug/fn_getAllWardrobeItems.sqf
rename to addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
diff --git a/addons/wardrobe/functions/config/fn_getCfgDataRandom.sqf b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
similarity index 100%
rename from addons/wardrobe/functions/config/fn_getCfgDataRandom.sqf
rename to addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
diff --git a/addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
similarity index 100%
rename from addons/wardrobe/functions/ace_intel/fn_getIndexFromMagID.sqf
rename to addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_all.sqf b/addons/wardrobe/functions/fnc_getItems_all.sqf
similarity index 100%
rename from addons/wardrobe/functions/getItems/fn_getItems_all.sqf
rename to addons/wardrobe/functions/fnc_getItems_all.sqf
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
similarity index 100%
rename from addons/wardrobe/functions/getItems/fn_getItems_modifiableTo.sqf
rename to addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
similarity index 100%
rename from addons/wardrobe/functions/getItems/fn_getItems_modifiable_all.sqf
rename to addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
diff --git a/addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
similarity index 100%
rename from addons/wardrobe/functions/getItems/fn_getItems_modifiable_current.sqf
rename to addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
diff --git a/addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
similarity index 100%
rename from addons/wardrobe/functions/ace_intel/fn_getMagIDs.sqf
rename to addons/wardrobe/functions/fnc_getMagIDs.sqf
diff --git a/addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf b/addons/wardrobe/functions/fnc_getNextVariant.sqf
similarity index 100%
rename from addons/wardrobe/functions/contextMenu/fn_getNextVariant.sqf
rename to addons/wardrobe/functions/fnc_getNextVariant.sqf
diff --git a/addons/wardrobe/functions/fn_isModifiable.sqf b/addons/wardrobe/functions/fnc_isModifiable.sqf
similarity index 100%
rename from addons/wardrobe/functions/fn_isModifiable.sqf
rename to addons/wardrobe/functions/fnc_isModifiable.sqf
diff --git a/addons/wardrobe/functions/fn_postInit.sqf b/addons/wardrobe/functions/fnc_postInit.sqf
similarity index 100%
rename from addons/wardrobe/functions/fn_postInit.sqf
rename to addons/wardrobe/functions/fnc_postInit.sqf
diff --git a/addons/wardrobe/functions/replace/fn_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
similarity index 100%
rename from addons/wardrobe/functions/replace/fn_replace.sqf
rename to addons/wardrobe/functions/fnc_replace.sqf
diff --git a/addons/wardrobe/functions/replace/fn_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_facewear.sqf
similarity index 100%
rename from addons/wardrobe/functions/replace/fn_replace_facewear.sqf
rename to addons/wardrobe/functions/fnc_replace_facewear.sqf
diff --git a/addons/wardrobe/functions/replace/fn_replace_headgear.sqf b/addons/wardrobe/functions/fnc_replace_headgear.sqf
similarity index 100%
rename from addons/wardrobe/functions/replace/fn_replace_headgear.sqf
rename to addons/wardrobe/functions/fnc_replace_headgear.sqf
diff --git a/addons/wardrobe/functions/replace/fn_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
similarity index 100%
rename from addons/wardrobe/functions/replace/fn_replace_uniform.sqf
rename to addons/wardrobe/functions/fnc_replace_uniform.sqf
diff --git a/addons/wardrobe/functions/effects/fn_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
similarity index 100%
rename from addons/wardrobe/functions/effects/fn_say3d.sqf
rename to addons/wardrobe/functions/fnc_say3d.sqf
diff --git a/addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
similarity index 100%
rename from addons/wardrobe/functions/ace_intel/fn_setIndexForMagID.sqf
rename to addons/wardrobe/functions/fnc_setIndexForMagID.sqf
diff --git a/addons/wardrobe/initSettings.inc.sqf b/addons/wardrobe/initSettings.inc.sqf
new file mode 100644
index 00000000000..c6869b5192b
--- /dev/null
+++ b/addons/wardrobe/initSettings.inc.sqf
@@ -0,0 +1,21 @@
+[
+    QSET(enable_action),
+    "CHECKBOX",
+    SETLSTRING(enable_action),
+    [LSTRING(set_cat_main)],
+    true,
+    1,
+    {},
+    false
+] call CBA_fnc_addSetting;
+
+[
+    QSET(enable_contextMenu),
+    "CHECKBOX",
+    SETLSTRING(enable_contextMenu),
+    [LSTRING(set_cat_main)],
+    true,
+    1,
+    FUNC(enable_contextMenu),
+    true
+] call CBA_fnc_addSetting;

From a632d1daa7e9175e473a060c8ad27b576a22dd7a Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 19:43:05 +0100
Subject: [PATCH 071/139] "../../" -> "../"

---
 addons/wardrobe/functions/fnc_addActions.sqf                    | 2 +-
 addons/wardrobe/functions/fnc_addActions_children.sqf           | 2 +-
 addons/wardrobe/functions/fnc_addActions_condition.sqf          | 2 +-
 addons/wardrobe/functions/fnc_addCM_nextvariant.sqf             | 2 +-
 addons/wardrobe/functions/fnc_cache_clear.sqf                   | 2 +-
 addons/wardrobe/functions/fnc_cache_db.sqf                      | 2 +-
 addons/wardrobe/functions/fnc_cache_get.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_cache_set.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf | 2 +-
 addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf       | 2 +-
 addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf     | 2 +-
 addons/wardrobe/functions/fnc_do_nextVariant.sqf                | 2 +-
 addons/wardrobe/functions/fnc_enable_contextMenu.sqf            | 2 +-
 addons/wardrobe/functions/fnc_getAction_Icon.sqf                | 2 +-
 addons/wardrobe/functions/fnc_getAction_Name.sqf                | 2 +-
 addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf           | 2 +-
 addons/wardrobe/functions/fnc_getCfgDataRandom.sqf              | 2 +-
 addons/wardrobe/functions/fnc_getIndexFromMagID.sqf             | 2 +-
 addons/wardrobe/functions/fnc_getItems_all.sqf                  | 2 +-
 addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf         | 2 +-
 addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf       | 2 +-
 addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf   | 2 +-
 addons/wardrobe/functions/fnc_getMagIDs.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_getNextVariant.sqf                | 2 +-
 addons/wardrobe/functions/fnc_replace.sqf                       | 2 +-
 addons/wardrobe/functions/fnc_replace_facewear.sqf              | 2 +-
 addons/wardrobe/functions/fnc_replace_headgear.sqf              | 2 +-
 addons/wardrobe/functions/fnc_replace_uniform.sqf               | 2 +-
 addons/wardrobe/functions/fnc_say3d.sqf                         | 2 +-
 addons/wardrobe/functions/fnc_setIndexForMagID.sqf              | 2 +-
 30 files changed, 30 insertions(+), 30 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_addActions.sqf b/addons/wardrobe/functions/fnc_addActions.sqf
index acbb88fbc0d..431c3481b19 100644
--- a/addons/wardrobe/functions/fnc_addActions.sqf
+++ b/addons/wardrobe/functions/fnc_addActions.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_addActions_children.sqf b/addons/wardrobe/functions/fnc_addActions_children.sqf
index dbdb100f81a..b186b875cc9 100644
--- a/addons/wardrobe/functions/fnc_addActions_children.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_children.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_addActions_condition.sqf b/addons/wardrobe/functions/fnc_addActions_condition.sqf
index 7715f88818f..af50d06b3f3 100644
--- a/addons/wardrobe/functions/fnc_addActions_condition.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_condition.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
index 5b402b50f42..2b503fe71f3 100644
--- a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
index f60461add6a..a53d09bd0e0 100644
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ b/addons/wardrobe/functions/fnc_cache_clear.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
index 6039c3f3595..fb7cc811ea9 100644
--- a/addons/wardrobe/functions/fnc_cache_db.sqf
+++ b/addons/wardrobe/functions/fnc_cache_db.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_cache_get.sqf b/addons/wardrobe/functions/fnc_cache_get.sqf
index bfa2648f2ff..c95e3678013 100644
--- a/addons/wardrobe/functions/fnc_cache_get.sqf
+++ b/addons/wardrobe/functions/fnc_cache_get.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_cache_set.sqf b/addons/wardrobe/functions/fnc_cache_set.sqf
index 7c0f4cf9453..84eca982db2 100644
--- a/addons/wardrobe/functions/fnc_cache_set.sqf
+++ b/addons/wardrobe/functions/fnc_cache_set.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
index a2aecfb5741..6b4669d93f6 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
index 6ff42a9bfc8..f84ab95a390 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
index d78251a1269..d9d8f0dcb53 100644
--- a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
+++ b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_do_nextVariant.sqf b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
index f8e3ab6666b..fd12d1efec3 100644
--- a/addons/wardrobe/functions/fnc_do_nextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
index 56cca48daf5..b5d8c8d8514 100644
--- a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getAction_Icon.sqf b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
index a3119d6957f..ab759df1fbc 100644
--- a/addons/wardrobe/functions/fnc_getAction_Icon.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getAction_Name.sqf b/addons/wardrobe/functions/fnc_getAction_Name.sqf
index afde79c357d..709ff0514ee 100644
--- a/addons/wardrobe/functions/fnc_getAction_Name.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Name.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
index 7bb6cb8b308..1dedf396942 100644
--- a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
index aeeb86c6792..cc28339a141 100644
--- a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
+++ b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
index ce6b6d66071..52ebdac03ea 100644
--- a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
+++ b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getItems_all.sqf b/addons/wardrobe/functions/fnc_getItems_all.sqf
index db3dfcc2de7..4c980f045ee 100644
--- a/addons/wardrobe/functions/fnc_getItems_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_all.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
index 388520c6835..f666c475d26 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
index bcc00c4c5df..2bc1ab1ac5c 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
index 4948b2cbdb3..59df6c4c359 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
index eb1df20c373..88f3851388f 100644
--- a/addons/wardrobe/functions/fnc_getMagIDs.sqf
+++ b/addons/wardrobe/functions/fnc_getMagIDs.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_getNextVariant.sqf b/addons/wardrobe/functions/fnc_getNextVariant.sqf
index b997d5bf5f3..8f5f6b80240 100644
--- a/addons/wardrobe/functions/fnc_getNextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_getNextVariant.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 265f62c7506..35d67d26cf0 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_facewear.sqf
index a797edf87ce..e2238da8771 100644
--- a/addons/wardrobe/functions/fnc_replace_facewear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_facewear.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_replace_headgear.sqf b/addons/wardrobe/functions/fnc_replace_headgear.sqf
index f676e9fae6e..dd30b6bf9ea 100644
--- a/addons/wardrobe/functions/fnc_replace_headgear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_headgear.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index e8547160925..db71ca51c93 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
index 942b90cee13..8f393fb3803 100644
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ b/addons/wardrobe/functions/fnc_say3d.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index 142f5952031..ceb786cba20 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -1,4 +1,4 @@
-#include "../../script_component.hpp"
+#include "../script_component.hpp"
 
 /*
 * Author: Zorn

From 37c3ffff1e181820f53a8922fad0376602eb0473 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 3 Jan 2025 19:56:19 +0100
Subject: [PATCH 072/139] 1 New Line at EOF

---
 addons/wardrobe/functions/fnc_addActions.sqf                    | 2 +-
 addons/wardrobe/functions/fnc_addActions_children.sqf           | 2 +-
 addons/wardrobe/functions/fnc_addActions_condition.sqf          | 2 +-
 addons/wardrobe/functions/fnc_addCM_nextvariant.sqf             | 1 -
 addons/wardrobe/functions/fnc_cache_clear.sqf                   | 2 +-
 addons/wardrobe/functions/fnc_cache_db.sqf                      | 2 +-
 addons/wardrobe/functions/fnc_cache_set.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf | 2 +-
 addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf       | 2 +-
 addons/wardrobe/functions/fnc_compare_components.sqf            | 2 +-
 addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf     | 1 -
 addons/wardrobe/functions/fnc_do_nextVariant.sqf                | 2 +-
 addons/wardrobe/functions/fnc_getAction_Icon.sqf                | 1 -
 addons/wardrobe/functions/fnc_getAction_Name.sqf                | 1 -
 addons/wardrobe/functions/fnc_getCfgDataRandom.sqf              | 2 +-
 addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf         | 2 +-
 addons/wardrobe/functions/fnc_getMagIDs.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_getNextVariant.sqf                | 2 +-
 addons/wardrobe/functions/fnc_isModifiable.sqf                  | 2 +-
 addons/wardrobe/functions/fnc_postInit.sqf                      | 2 +-
 addons/wardrobe/functions/fnc_replace.sqf                       | 2 --
 addons/wardrobe/functions/fnc_replace_facewear.sqf              | 2 +-
 addons/wardrobe/functions/fnc_replace_uniform.sqf               | 2 +-
 addons/wardrobe/functions/fnc_say3d.sqf                         | 2 +-
 addons/wardrobe/functions/fnc_setIndexForMagID.sqf              | 2 +-
 25 files changed, 20 insertions(+), 26 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_addActions.sqf b/addons/wardrobe/functions/fnc_addActions.sqf
index 431c3481b19..1fc3497ab8e 100644
--- a/addons/wardrobe/functions/fnc_addActions.sqf
+++ b/addons/wardrobe/functions/fnc_addActions.sqf
@@ -45,4 +45,4 @@ private _actions = [];
 
 } forEach _modifiableItems;
 
-_actions
\ No newline at end of file
+_actions
diff --git a/addons/wardrobe/functions/fnc_addActions_children.sqf b/addons/wardrobe/functions/fnc_addActions_children.sqf
index b186b875cc9..9c49a4e8c0a 100644
--- a/addons/wardrobe/functions/fnc_addActions_children.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_children.sqf
@@ -44,4 +44,4 @@ private _actions = [];
 
 } forEach _newItems;
 
-_actions
\ No newline at end of file
+_actions
diff --git a/addons/wardrobe/functions/fnc_addActions_condition.sqf b/addons/wardrobe/functions/fnc_addActions_condition.sqf
index af50d06b3f3..27065980dd4 100644
--- a/addons/wardrobe/functions/fnc_addActions_condition.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_condition.sqf
@@ -21,4 +21,4 @@ missionNamespace getVariable [QSET(enable_action), false]
 &&
 { 
     count ([_player] call FUNC(getItems_modifiable_current)) > 0
-}
\ No newline at end of file
+}
diff --git a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
index 2b503fe71f3..60fa1f9c0e0 100644
--- a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
@@ -29,4 +29,3 @@
     false,                                      // consume Item
     []                                          // Params
 ] call CBA_fnc_addItemContextMenuOption;
-
diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
index a53d09bd0e0..437d0a047f2 100644
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ b/addons/wardrobe/functions/fnc_cache_clear.sqf
@@ -23,4 +23,4 @@ params [ ["_key", "", [""]] ];
 private _map = missionNamespace getVariable [QGVAR(cache), "404"];
 _map deleteAt _key;
 
-if (count _map == 0) then { missionNamespace setVariable [QGVAR(cache),nil] };
\ No newline at end of file
+if (count _map == 0) then { missionNamespace setVariable [QGVAR(cache),nil] };
diff --git a/addons/wardrobe/functions/fnc_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
index fb7cc811ea9..81f5ffdc858 100644
--- a/addons/wardrobe/functions/fnc_cache_db.sqf
+++ b/addons/wardrobe/functions/fnc_cache_db.sqf
@@ -24,4 +24,4 @@ if (_map isEqualTo "404") then {
     missionNamespace setVariable [QGVAR(cache), _map];
 };
 
-_map
\ No newline at end of file
+_map
diff --git a/addons/wardrobe/functions/fnc_cache_set.sqf b/addons/wardrobe/functions/fnc_cache_set.sqf
index 84eca982db2..89fcd5d5e8a 100644
--- a/addons/wardrobe/functions/fnc_cache_set.sqf
+++ b/addons/wardrobe/functions/fnc_cache_set.sqf
@@ -23,4 +23,4 @@ if (_value isEqualTo "404") exitWith { false };
 
 _db set [_key, _value];
 
-true
\ No newline at end of file
+true
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
index 6b4669d93f6..03793f475f8 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
@@ -36,4 +36,4 @@ if (_queue isEqualTo "404") then {
     missionNamespace setVariable [QGVAR(menu_clear_queue), _queue];
 };
 
-_queue pushBackUnique _key;
\ No newline at end of file
+_queue pushBackUnique _key;
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
index f84ab95a390..3f904d73179 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
@@ -32,4 +32,4 @@ if (_queue isEqualTo "404") then {
     missionNamespace setVariable [QGVAR(inventory_clear_queue), _queue];
 };
 
-_queue pushBackUnique _key;
\ No newline at end of file
+_queue pushBackUnique _key;
diff --git a/addons/wardrobe/functions/fnc_compare_components.sqf b/addons/wardrobe/functions/fnc_compare_components.sqf
index ff90d18ab19..c5790375553 100644
--- a/addons/wardrobe/functions/fnc_compare_components.sqf
+++ b/addons/wardrobe/functions/fnc_compare_components.sqf
@@ -25,4 +25,4 @@ private _missing = [];
 { if (_x in _current) then { _current = _current - [_x] } else { _missing pushBack _x }; } forEach _needed;
 
 //[[missing components], [surplus components]]
-[_missing, _current]
\ No newline at end of file
+[_missing, _current]
diff --git a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
index d9d8f0dcb53..ecdf3c52a45 100644
--- a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
+++ b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
@@ -42,4 +42,3 @@ private _established = [];
 
 
 } forEach _allWardrobeItems;
-
diff --git a/addons/wardrobe/functions/fnc_do_nextVariant.sqf b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
index fd12d1efec3..1f3460c0af1 100644
--- a/addons/wardrobe/functions/fnc_do_nextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
@@ -37,4 +37,4 @@ if !(_canModifyTo) exitWith {
 }; 
 
 
-[_unit, _unit, [_current_cfg, _cfg_tgt], true] call FUNC(replace); 
\ No newline at end of file
+[_unit, _unit, [_current_cfg, _cfg_tgt], true] call FUNC(replace); 
diff --git a/addons/wardrobe/functions/fnc_getAction_Icon.sqf b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
index ab759df1fbc..fcaedbce9e9 100644
--- a/addons/wardrobe/functions/fnc_getAction_Icon.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
@@ -19,4 +19,3 @@ params [ ["_cfg", configNull, [configNull] ] ];
 
 private _altDispIcon = getText (_cfg >> QADDON >> "alternativePicture");
 if (_altDispIcon isEqualTo "") then { getText (_cfg >> "picture") } else { _altDispIcon }
-
diff --git a/addons/wardrobe/functions/fnc_getAction_Name.sqf b/addons/wardrobe/functions/fnc_getAction_Name.sqf
index 709ff0514ee..07aa658ec52 100644
--- a/addons/wardrobe/functions/fnc_getAction_Name.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Name.sqf
@@ -19,4 +19,3 @@ params [ ["_cfg", configNull, [configNull] ] ];
 
 private _altDispName = getText (_cfg >> QADDON >> "alternativeDisplayName");
 if (_altDispName isEqualTo "") then { getText (_cfg >> "displayName") } else { _altDispName };
-
diff --git a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
index cc28339a141..7aa909cda22 100644
--- a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
+++ b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
@@ -22,4 +22,4 @@ params [
 if (_cfg isEqualTo configNull) exitWith {nil};
 private _data = [_cfg] call BIS_fnc_getCfgData;
 if (_data isEqualType []) then { _data = selectRandom _data };
-_data
\ No newline at end of file
+_data
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
index f666c475d26..5706ea34f03 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
@@ -17,4 +17,4 @@
 
 params ["_cfg_current"];
 
-[_cfg_current >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray apply { [_x] call CBA_fnc_getItemConfig } select { !isNull _x }
\ No newline at end of file
+[_cfg_current >> QADDON >> "modifiableTo"] call BIS_fnc_getCfgDataArray apply { [_x] call CBA_fnc_getItemConfig } select { !isNull _x }
diff --git a/addons/wardrobe/functions/fnc_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
index 88f3851388f..34506224033 100644
--- a/addons/wardrobe/functions/fnc_getMagIDs.sqf
+++ b/addons/wardrobe/functions/fnc_getMagIDs.sqf
@@ -23,4 +23,4 @@ params [
 if ( _className == "" || { _unit isEqualTo objNull } ) exitWith {};
 
 toFixed 0;
-(magazinesAmmoFull _unit) apply { [_x#0, _x#-2, _x#-1] } select { _x#0 == _className } apply { format ["%1/%2", _x#1,_x#2] }
\ No newline at end of file
+(magazinesAmmoFull _unit) apply { [_x#0, _x#-2, _x#-1] } select { _x#0 == _className } apply { format ["%1/%2", _x#1,_x#2] }
diff --git a/addons/wardrobe/functions/fnc_getNextVariant.sqf b/addons/wardrobe/functions/fnc_getNextVariant.sqf
index 8f5f6b80240..9340d186726 100644
--- a/addons/wardrobe/functions/fnc_getNextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_getNextVariant.sqf
@@ -52,4 +52,4 @@ private _return = if (count _remaining > 0) then {
 };
 
 _history_cfg pushBackUnique _return;
-_return
\ No newline at end of file
+_return
diff --git a/addons/wardrobe/functions/fnc_isModifiable.sqf b/addons/wardrobe/functions/fnc_isModifiable.sqf
index c382ac5b36a..e4a824cf964 100644
--- a/addons/wardrobe/functions/fnc_isModifiable.sqf
+++ b/addons/wardrobe/functions/fnc_isModifiable.sqf
@@ -22,4 +22,4 @@ params [
 
 if (isNull _cfg) exitWith {false};
 // Checks if the config has the property without it being inherited(!)
-count ( QUOTE(configName _x  isEqualTo QQ(ace_wardrobe)) configClasses _cfg ) > 0
\ No newline at end of file
+count ( QUOTE(configName _x  isEqualTo QQ(ace_wardrobe)) configClasses _cfg ) > 0
diff --git a/addons/wardrobe/functions/fnc_postInit.sqf b/addons/wardrobe/functions/fnc_postInit.sqf
index b689c089e34..ab84300a4e3 100644
--- a/addons/wardrobe/functions/fnc_postInit.sqf
+++ b/addons/wardrobe/functions/fnc_postInit.sqf
@@ -15,4 +15,4 @@
 * Public: No
 */
 
-[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;
\ No newline at end of file
+[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 35d67d26cf0..b940831c938 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -66,5 +66,3 @@ if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
 [ CBA_fnc_notify,      [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ],   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
-
-
diff --git a/addons/wardrobe/functions/fnc_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_facewear.sqf
index e2238da8771..bc9fe45459d 100644
--- a/addons/wardrobe/functions/fnc_replace_facewear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_facewear.sqf
@@ -17,4 +17,4 @@
 
 params ["_player", "_cfg_origin", "_cfg_tgt"];
 removeGoggles _player;
-_player addGoggles configName _cfg_tgt;
\ No newline at end of file
+_player addGoggles configName _cfg_tgt;
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index db71ca51c93..ccda6137bdd 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -49,4 +49,4 @@ switch (_case) do {
 // ACE Intel Items
 if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) ); };
 if (_hasNotepad  isEqualType []) then { { [_x, _hasNotepad  # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"  ] call FUNC(getMagIDs) ); };
-if (_hasPhoto    isEqualType []) then { { [_x, _hasPhoto    # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"    ] call FUNC(getMagIDs) ); };
\ No newline at end of file
+if (_hasPhoto    isEqualType []) then { { [_x, _hasPhoto    # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"    ] call FUNC(getMagIDs) ); };
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
index 8f393fb3803..490a1d57eae 100644
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ b/addons/wardrobe/functions/fnc_say3d.sqf
@@ -32,4 +32,4 @@ _sound params [
 ];
 
 
-_source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
\ No newline at end of file
+_source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index ceb786cba20..9437afb73f3 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -22,4 +22,4 @@ params [
 
 if (_index == -1) exitWith {};
 
-ace_intelItems_intelMap setVariable [_magID, _index, true];
\ No newline at end of file
+ace_intelItems_intelMap setVariable [_magID, _index, true];

From 70b17bbd3669c5154d450b73779643b0f8843821 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 18:20:23 +0100
Subject: [PATCH 073/139] fnc headers and minor polish here and there

---
 addons/wardrobe/functions/fnc_addActions.sqf  | 31 +++++++------
 .../functions/fnc_addActions_children.sqf     | 31 +++++++------
 .../functions/fnc_addActions_condition.sqf    | 27 ++++++------
 .../functions/fnc_addCM_nextvariant.sqf       | 27 ++++++------
 addons/wardrobe/functions/fnc_cache_clear.sqf | 30 ++++++-------
 addons/wardrobe/functions/fnc_cache_db.sqf    | 28 ++++++------
 addons/wardrobe/functions/fnc_cache_get.sqf   | 30 +++++++------
 addons/wardrobe/functions/fnc_cache_set.sqf   | 30 +++++++------
 addons/wardrobe/functions/fnc_canModifyTo.sqf | 30 +++++++------
 .../fnc_clearOnClosed_InteractionMenu.sqf     | 30 +++++++------
 .../functions/fnc_clearOnClosed_Inventory.sqf | 30 +++++++------
 .../functions/fnc_compare_components.sqf      | 30 +++++++------
 .../fnc_compare_container_maxLoad.sqf         | 27 ++++++------
 .../wardrobe/functions/fnc_do_nextVariant.sqf | 42 ++++++++++--------
 .../functions/fnc_enable_contextMenu.sqf      | 27 ++++++------
 .../wardrobe/functions/fnc_getAction_Icon.sqf | 29 ++++++------
 .../wardrobe/functions/fnc_getAction_Name.sqf | 27 ++++++------
 .../functions/fnc_getAllWardrobeItems.sqf     | 36 ++++++++-------
 .../functions/fnc_getCfgDataRandom.sqf        | 29 ++++++------
 .../functions/fnc_getIndexFromMagID.sqf       | 27 ++++++------
 .../wardrobe/functions/fnc_getItems_all.sqf   | 28 ++++++------
 .../functions/fnc_getItems_modifiableTo.sqf   | 27 ++++++------
 .../functions/fnc_getItems_modifiable_all.sqf | 28 ++++++------
 .../fnc_getItems_modifiable_current.sqf       | 28 ++++++------
 addons/wardrobe/functions/fnc_getMagIDs.sqf   | 29 ++++++------
 .../wardrobe/functions/fnc_getNextVariant.sqf | 33 ++++++++------
 .../wardrobe/functions/fnc_isModifiable.sqf   | 28 ++++++------
 addons/wardrobe/functions/fnc_replace.sqf     | 34 ++++++++------
 .../functions/fnc_replace_facewear.sqf        | 29 ++++++------
 .../functions/fnc_replace_headgear.sqf        | 33 ++++++++------
 .../functions/fnc_replace_uniform.sqf         | 32 ++++++++------
 addons/wardrobe/functions/fnc_say3d.sqf       | 44 ++++++++++++-------
 .../functions/fnc_setIndexForMagID.sqf        | 28 ++++++------
 addons/wardrobe/stringtable.xml               |  8 ++++
 34 files changed, 554 insertions(+), 453 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_addActions.sqf b/addons/wardrobe/functions/fnc_addActions.sqf
index 1fc3497ab8e..e31913e9208 100644
--- a/addons/wardrobe/functions/fnc_addActions.sqf
+++ b/addons/wardrobe/functions/fnc_addActions.sqf
@@ -1,20 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This function creates children for every modifiable Item.
-* Each Modifiable Item will have its own children in regard of the items it can be changed towards.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call cvo_fnc_sth
-*
-* Public: Yes
-*/
+ * Author: OverlordZorn
+ * This function creates children for the main wardrobe action - one for every modifiable Item.
+ * Each Modifiable Item will have its own children in regard of the items it can be changed towards.
+ *
+ * Arguments:
+ * 0: The Unit who's wearable shall be changed - usually the player themselves <OBJECT>
+ *
+ * Return Value:
+ * Array of ACE Child Actions <ARRAY>
+ *
+ * Example:
+ * [_player] call ace_wardrobe_fnc_addActions
+ *
+ * Public: No
+ */
 
 params ["_unit"];
 
@@ -26,8 +27,6 @@ private _actions = [];
     private _className = configName _cfg;
     private _params = [_cfg, _x#1];
 
-    diag_log format ['[CVO](debug)(fn_addActions) _cfg: %1', _cfg];
-
     private _aceAction = [
         _className                              // * 0: Action name <STRING>
         ,getText (_cfg >> "displayName")        //  * 1: Name of the action shown in the menu <STRING>
diff --git a/addons/wardrobe/functions/fnc_addActions_children.sqf b/addons/wardrobe/functions/fnc_addActions_children.sqf
index 9c49a4e8c0a..5da634b9fd8 100644
--- a/addons/wardrobe/functions/fnc_addActions_children.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_children.sqf
@@ -1,19 +1,24 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to create the sub-children for each modifiable item
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to create the ace action children, one for each possible variant of the current item.
+ *
+ * Arguments:
+ * 0: target <OBJECT>
+ * 1: player <OBJECT>
+ * 2: Multiple input types <STRING|ARRAY|CODE>
+ * - 0: Current Variant <Config>
+ * - 1: Array of Configs Possible Variants <ARRAY>
+ *
+ * Return Value:
+ * Array of ACE Child Actions <ARRAY>
+ *
+ * Example:
+ * _this call ace_wardrobe_fnc_addActions_children
+ *
+ * Public: No
+ */
 
 params ["_target", "_player", "_actionParams"];
 _actionParams params ["_cfg_origin", "_newItems"];
diff --git a/addons/wardrobe/functions/fnc_addActions_condition.sqf b/addons/wardrobe/functions/fnc_addActions_condition.sqf
index 27065980dd4..d4561680cba 100644
--- a/addons/wardrobe/functions/fnc_addActions_condition.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_condition.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to check if the player has an item that can be modified.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Condition check: Is wardrobe enabled & if the player has an item that can be modified
+ *
+ * Arguments:
+ * 0: _player from the Ace Action <STRING>
+ *
+ * Return Value:
+ * condition <BOOL>
+ *
+ * Example:
+ * [_player] call ace_wardrobe_fnc_addActions_condition
+ *
+ * Public: No
+ */
 
 params ["_player"];
 
diff --git a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
index 60fa1f9c0e0..95112dea49c 100644
--- a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to create the CM Option to switch to the "next" Variant of the current Version.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to create the CBA ContextMenu Option to switch to the (randomly choosen) next Variant of the current Version.
+ *
+ * Arguments:
+ * none
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [] call ace_wardrobe_fnc_addCM_nextvariant
+ *
+ * Public: No
+ */
 
 [
     "#ALL",                                     // filter items
diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
index 437d0a047f2..49785672c0e 100644
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ b/addons/wardrobe/functions/fnc_cache_clear.sqf
@@ -1,22 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to clear an entry from the  cache-database.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
-
-
-// Retrieve hashmap
+ * Author: OverlordZorn
+ * Function to clear an entry from the  cache-database.
+ *
+ * Arguments:
+ * 0: Key <STRING>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * ["myKey"] call ace_wardrobe_fnc_cache_clear
+ *
+ * Public: Yes
+ */
 
 params [ ["_key", "", [""]] ];
 
diff --git a/addons/wardrobe/functions/fnc_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
index 81f5ffdc858..de4b9aa979e 100644
--- a/addons/wardrobe/functions/fnc_cache_db.sqf
+++ b/addons/wardrobe/functions/fnc_cache_db.sqf
@@ -1,21 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* [Description]
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to retrieve the Cache Database (Hashmap).
+ *
+ * Arguments:
+ * none
+ *
+ * Return Value:
+ * Cache Database <HASHMAP>
+ *
+ * Example:
+ * [] call ace_wardrobe_fnc_cache_db
+ *
+ * Public: No
+ */
 
-// Retrieve hashmap
 
 private _map = missionNamespace getVariable [QGVAR(cache), "404"];
 
diff --git a/addons/wardrobe/functions/fnc_cache_get.sqf b/addons/wardrobe/functions/fnc_cache_get.sqf
index c95e3678013..da6a78399e3 100644
--- a/addons/wardrobe/functions/fnc_cache_get.sqf
+++ b/addons/wardrobe/functions/fnc_cache_get.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to retrieve a value from the database. returns "404" if not stored or, when provided will execute the alternative code and store said result.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * To retrieve a value from the database. returns "404" if not stored or, when provided, will execute the alternative code and return and store said result
+ *
+ * Arguments:
+ * 0: Key <STRING>
+ * 1: Code to run when there is no value stored <CODE> (optional)
+ *
+ * Return Value:
+ * Return <ANY> or "404" if no entry found and no code provided
+ * 
+ *
+ * Example:
+ * ["tag_loadout", { getUnitLoadout player }] call ace_wardrobe_fnc_cache_get
+ *
+ * Public: Yes
+ */
+
 
 params [ [ "_key", "", [""] ], [ "_else", "404", [{}] ] ];
 
diff --git a/addons/wardrobe/functions/fnc_cache_set.sqf b/addons/wardrobe/functions/fnc_cache_set.sqf
index 89fcd5d5e8a..cb10a50a8c3 100644
--- a/addons/wardrobe/functions/fnc_cache_set.sqf
+++ b/addons/wardrobe/functions/fnc_cache_set.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to store a value into under a key into the addons cache
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to store a value behind a key into the addons cache
+ *
+ * Arguments:
+ * 0: Key <STRING>
+ * 1: Value <ANY>
+ *
+ * Return Value:
+ * success <BOOL>
+ *
+ * Example:
+ * ['tag_myKey', ["some","data"]] call ace_wardrobe_fnc_cache_set
+ *
+ * Public: Yes
+ */
+
+
 
 params [ ["_key", "", [""] ], ["_value", "404"] ];
 
diff --git a/addons/wardrobe/functions/fnc_canModifyTo.sqf b/addons/wardrobe/functions/fnc_canModifyTo.sqf
index 033e4e4330f..8e7dfce0d88 100644
--- a/addons/wardrobe/functions/fnc_canModifyTo.sqf
+++ b/addons/wardrobe/functions/fnc_canModifyTo.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Check if the unit can modify from current to target. Checks and compares components.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Condition Check if the unit can modify from current variant to target variant. Checks and compares components.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Current Variant <Config>
+ * 2: Desired Variant <Config>
+ * 3: Cache Result of fnc_getitems_all <BOOL> (default: true)
+ *
+ * Return Value:
+ * The return value <BOOL>
+ *
+ * Example:
+ * [_unit, _cfg_origin, _cfg_target] call ace_wardrobe_fnc_canModifyTo
+ *
+ * Public: No
+ */
 
 params ["_unit", "_cfg_origin", "_cfg_target", ["_cache", true, [true]]];
 
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
index 03793f475f8..0f7dd2f23e7 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
@@ -1,20 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to request the clearing of the cache on closing of the menu
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
-// Cleanup Cache once the interaction menu is closed
+ * Author: OverlordZorn
+ * Function to request the clearing of the cache on closing of the menu
+ *
+ * Arguments:
+ * 0: The first argument <STRING>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * ["tag_myDataEntry"] call ace_wardrobe_fnc_clearOnClosed_InteractionMenu
+ *
+ * Public: yes
+ */
 
 params [ ["_key", "", [""]] ];
 
@@ -37,3 +37,5 @@ if (_queue isEqualTo "404") then {
 };
 
 _queue pushBackUnique _key;
+
+nil
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
index 3f904d73179..8e5e1794b8c 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
@@ -1,20 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to request the clearing of the cache on closing of the menu
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
-// Cleanup Cache once the inventory is closed
+ * Author: OverlordZorn
+ * Function to request the clearing of the cache once the Inventory Window gets closed.
+ *
+ * Arguments:
+ * 0: Key <STRING>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * ["tag_myKeyName"] call ace_wardrobe_fnc_clearOnClosed_Inventory
+ *
+ * Public: yes
+ */
 
 params [ ["_key", "", [""]] ];
 
@@ -33,3 +33,5 @@ if (_queue isEqualTo "404") then {
 };
 
 _queue pushBackUnique _key;
+
+nil
diff --git a/addons/wardrobe/functions/fnc_compare_components.sqf b/addons/wardrobe/functions/fnc_compare_components.sqf
index c5790375553..184b5c3a34a 100644
--- a/addons/wardrobe/functions/fnc_compare_components.sqf
+++ b/addons/wardrobe/functions/fnc_compare_components.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to compare the components of the current and target wearables.
-*
-* Arguments:
-*
-* Return Value:
-* Nested Array - [[missing components], [surplus components]]
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to compare the components of the current and target wearables.
+ *
+ * Arguments:
+ * 0: current variant <CONFIG>
+ * 1: desired variant <CONFIG>
+ *
+ * Return Value:
+ * Nested array <ARRAY>
+ * - Array of configs of missing components
+ * - Array of configs of surplus components
+ *
+ * Example:
+ * [_cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_compare_components
+ *
+ * Public: No
+ */
 
 params ["_cfg_origin", "_cfg_tgt"];
 
diff --git a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
index ecdf3c52a45..ebb98125793 100644
--- a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
+++ b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
+ *
+ * Arguments:
+ * none
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [] call ace_wardrobe_fnc_compare_container_maxLoad
+ *
+ * Public: yes
+ */
 
 // TODO
 
diff --git a/addons/wardrobe/functions/fnc_do_nextVariant.sqf b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
index 1f3460c0af1..dd7ab23312d 100644
--- a/addons/wardrobe/functions/fnc_do_nextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_do_nextVariant.sqf
@@ -1,19 +1,24 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to Request the Next Variant Context Menu Action.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Statement of CBA Context Menu Entry - Request the Next Variant.
+ *
+ * Arguments:
+ * 0: Player <OBJECT>
+ * 1: Container <OBJECT>
+ * 2: Classname <STRING>
+ * 3: Slot <STRING>
+ * 4: Arguments <ARRAY>
+ *
+ * Return Value:
+ * nothing
+ *
+ * Example:
+ * [_unit, _container, _item, _slot, _params] call ace_wardrobe_fnc_do_nextVariant
+ *
+ * Public: No
+ */
 
 params ["_unit", "_container", "_item", "_slot", "_params"];
 
@@ -21,20 +26,19 @@ private _current_cfg = [_item] call cba_fnc_getItemConfig;
 
 private _cfg_tgt = [ _current_cfg ] call FUNC(getNextVariant);
 
-if (_cfg_tgt isEqualTo false) exitWith { diag_log format ['[CVO](debug)(fn_do_nextVariant) "": %1', ""]; };
+if (_cfg_tgt isEqualTo false) exitWith {};
 
 private _canModifyTo = [_unit, _current_cfg, _cfg_tgt, false] call FUNC(canModifyTo);
 
 if !(_canModifyTo) exitWith {
-    // error hint to player: cannot switch to next variant, try again
-    // TODO: Stringtable XML
     [
-        ["Can not switch to:"],
+        [LLSTRING(cannotSwitchTo)],
         [getText (_cfg_tgt >> "displayName")],
-        ["missing components"],
+        [LLSTRING(missingComponents)],
         true
     ] call CBA_fnc_notify;
 }; 
 
-
 [_unit, _unit, [_current_cfg, _cfg_tgt], true] call FUNC(replace); 
+
+nil
diff --git a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
index b5d8c8d8514..6e889462bd5 100644
--- a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to activate the Wardrobe related CBA Context Menu Options
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * CBA Setting - On Setting Changed - Function to activate the Wardrobe related CBA Context Menu Options
+ *
+ * Arguments:
+ * 0: CBA Setting Value <BOOL>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [true] call ace_wardrobe_fnc_enable_contextMenu
+ *
+ * Public: No
+ */
 
 
 params [["_enable", true, [true]]];
diff --git a/addons/wardrobe/functions/fnc_getAction_Icon.sqf b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
index fcaedbce9e9..8cda6ab602a 100644
--- a/addons/wardrobe/functions/fnc_getAction_Icon.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Icon.sqf
@@ -1,21 +1,24 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This Function checks if the Target Item has an Alternative Picture for the Action, if not, it returns the picture property
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * This Function checks if the Target Item has an alternative Picture for the Action, if not, it returns the picture property
+ *
+ * Arguments:
+ * 0: Config of desired Variant <CONFIG>
+ *
+ * Return Value:
+ * Path to Icon or "" <STRING>
+ *
+ * Example:
+ * [_cfg] call ace_wardrobe_fnc_getAction_Icon
+ *
+ * Public: No
+ */
 
 params [ ["_cfg", configNull, [configNull] ] ];
 
+if (isNull _cfg) exitWith {};
+
 private _altDispIcon = getText (_cfg >> QADDON >> "alternativePicture");
 if (_altDispIcon isEqualTo "") then { getText (_cfg >> "picture") } else { _altDispIcon }
diff --git a/addons/wardrobe/functions/fnc_getAction_Name.sqf b/addons/wardrobe/functions/fnc_getAction_Name.sqf
index 07aa658ec52..679d39ee4b8 100644
--- a/addons/wardrobe/functions/fnc_getAction_Name.sqf
+++ b/addons/wardrobe/functions/fnc_getAction_Name.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This Function checks if the Target Item has an Alternative String for the Action, if not, it returns the displayName property
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * This Function checks if the Target Item has an Alternative String for the Action, if not, it returns the displayName property
+ *
+ * Arguments:
+ * 0: Desired Variant <CONFIG>
+ *
+ * Return Value:
+ * The return value <BOOL>
+ *
+ * Example:
+ * ['something', player] call ace_wardrobe_fnc_getAction_Name
+ *
+ * Public: No
+ */
 
 params [ ["_cfg", configNull, [configNull] ] ];
 
diff --git a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
index 1dedf396942..56c8239abe0 100644
--- a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
@@ -1,23 +1,25 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to retrieve all Wardrobe Items.
-*
-* Arguments:
-*
-* Return Value:
-* Nested Array of Classnames that have the wardrobe properties. One Entry per Cfg Group (currently just CfgWeapons)
-*
-* Example:
-* [] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Debug - Function to retrieve all existing Wardrobe items.
+ *
+ * Arguments:
+ * 0: Return as Config? <BOOL>
+ *
+ * Return Value:
+ * Array Wardobe Items, ether as Classname or as Config <ARRAY>
+ *
+ * Example:
+ * [true] call ace_wardrobe_fnc_getAllWardrobeItems;
+ * [this, flatten ([] call ace_wardrobe_fnc_getAllWardrobeItems)] call ace_arsenal_fnc_initBox;
+ *
+ * Public: Yes
+ */
+
 
 params [["_asConfig", false, [true]]];
 
-[
-    ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) apply { configName _x } },
-    ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) }    
-] select _asConfig
+private _return = ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) };
+
+if (_asConfig) then { _return apply { configName _x } } else { _return }
diff --git a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
index 7aa909cda22..9be9e65d03a 100644
--- a/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
+++ b/addons/wardrobe/functions/fnc_getCfgDataRandom.sqf
@@ -1,25 +1,28 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This function extracts data from a config property. If it is an Array, it will select a random entry from the array, otherwise it will simply return the provided data.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call cigs_wardrobe_fnc_getCfgDataRandom
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * This function extracts data from a config property. If it is an Array, it will select a random entry from the array, otherwise it will simply return the provided data.
+ *
+ * Arguments:
+ * 0: configPath <CONFIG>
+ *
+ * Return Value:
+ * Value <ANY>
+ *
+ * Example:
+ * [_cfg] call ace_wardrobe_fnc_getCfgDataRandom
+ *
+ * Public: yes
+ */
 
 params [
     [ "_cfg", configNull, [configNull] ]
 ];
 
 if (_cfg isEqualTo configNull) exitWith {nil};
+
 private _data = [_cfg] call BIS_fnc_getCfgData;
 if (_data isEqualType []) then { _data = selectRandom _data };
+
 _data
diff --git a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
index 52ebdac03ea..20aca66709d 100644
--- a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
+++ b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to return the data index based of the magazine ID
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * function to return the data index based of the magazine ID
+ *
+ * Arguments:
+ * 0: magazine ID <STRING>
+ *
+ * Return Value:
+ * The return value <BOOL>
+ *
+ * Example:
+ * [_magID] call ace_wardrobe_fnc_getIndexFromMagID
+ *
+ * Public: Yes
+ */
 
 params [
     ["_magazineID", "", [""] ]
diff --git a/addons/wardrobe/functions/fnc_getItems_all.sqf b/addons/wardrobe/functions/fnc_getItems_all.sqf
index 4c980f045ee..44166f9ce0c 100644
--- a/addons/wardrobe/functions/fnc_getItems_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_all.sqf
@@ -1,19 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Retrieves a list of items on the user - will be cached for the duration of the interaction.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Retrieves a list of all items of unit - can be cached for the duration of the ace interaction.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Cache Return? <BOOL>
+ *
+ * Return Value:
+ * All Items of the Unit <ARRAY>
+ *
+ * Example:
+ * [player, false] call ace_wardrobe_fnc_getItems_all
+ *
+ * Public: No
+ */
 
 params [
     ["_unit",   objNull,    [objNull]],
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
index 5706ea34f03..bbfef931543 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiableTo.sqf
@@ -1,19 +1,20 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to return an array the config of desired target items. Also checks if those items exist: CBA_fnc_getItemConfig returns configNull when item not found.
-*
-* Arguments:
-*
-* Return Value:
-* Array of Configs - Available Target configs
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to return an array the config of desired target items. Also checks if those items exist: CBA_fnc_getItemConfig returns configNull when item not found.
+ *
+ * Arguments:
+ * 0: Current Variant <Config>
+ *
+ * Return Value:
+ * Array of all possible variants as config <ARRAY>
+ *
+ * Example:
+ * [_cfg_current] call ace_wardrobe_fnc_getItems_modifiableTo
+ *
+ * Public: No
+ */
 
 params ["_cfg_current"];
 
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
index 2bc1ab1ac5c..b2947210596 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
@@ -1,19 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to retrieve modifiable items. Cached Array for the duration of the interaction menu.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to retrieve modifiable items of a unit. Can be cached for the duration of the interaction menu.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Cache Return? <BOOL>
+ *
+ * Return Value:
+ * modifiable Items of the Unit <ARRAY>
+ *
+ * Example:
+ * [player, false] call ace_wardrobe_fnc_getItems_modifiable_all
+ *
+ * Public: Yes
+ */
 
 params [
     ["_unit",   objNull,    [objNull]],
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
index 59df6c4c359..327277fe24c 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
@@ -1,19 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to retrieve currently worn, modifiable items. Cached Array for the duration of the interaction menu.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to retrieve currently worn, modifiable items. Return can be cached for the duration of the interaction menu.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Cache Return? <BOOL>
+ *
+ * Return Value:
+ * modifiable Items of the Unit <ARRAY>
+ *
+ * Example:
+ * [player, false] call ace_wardrobe_fnc_getItems_modifiable_current
+ *
+ * Public: Yes
+ */
 
 params [
     ["_unit",   objNull,    [objNull]],
diff --git a/addons/wardrobe/functions/fnc_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
index 34506224033..d0b221c84d7 100644
--- a/addons/wardrobe/functions/fnc_getMagIDs.sqf
+++ b/addons/wardrobe/functions/fnc_getMagIDs.sqf
@@ -1,19 +1,22 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to return the magazine ID's of certain magazines
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to return the magazine ID's of certain magazines
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Classname <STRING>
+ *
+ * Return Value:
+ * Strings of Magazines IDs <ARRAY>
+ *
+ * Example:
+ * [_unit, _className] call ace_wardrobe_fnc_getMagIDs;
+ *
+ * Public: No
+ */
+
 
 params [
     ["_unit",       objNull,    [objNull]       ],
diff --git a/addons/wardrobe/functions/fnc_getNextVariant.sqf b/addons/wardrobe/functions/fnc_getNextVariant.sqf
index 9340d186726..5ff9894fa3f 100644
--- a/addons/wardrobe/functions/fnc_getNextVariant.sqf
+++ b/addons/wardrobe/functions/fnc_getNextVariant.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to return cfg the next variant. the choosen variant will be added to a gvar of previous variants. the array of possible variants has been exhausted, it will remove all possible variants from the backlog and start new.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Context Menu - Return config the "next" variant - if multiple Variants are defined, it will choose randomly.
+ * Maintains a Histroy of the current and chosen variants as long as the Inventory is open.
+ * Already used variants from the History will be removed from the availabe options.
+ * Once all options have been exhausted, the history will be purged and start over.
+ *
+ * Arguments:
+ * 0: Current Variant <CONFIG>
+ *
+ * Return Value:
+ * Desired Variant <CONFIG>
+ *
+ * Example:
+ * [_cfg_current] call ace_wardrobe_fnc_getNextVariant
+ *
+ * Public: No
+ */
 
 
 params ["_cfg_current"];
@@ -45,7 +49,8 @@ private _remaining = _modifiableTo_cfg - _history_cfg;
 private _return = if (count _remaining > 0) then {
     selectRandom _remaining
 } else {
-    _history_cfg = []; // _history_cfg select { !(_x in _modifiableTo_cfg) };
+    // _history_cfg select { !(_x in _modifiableTo_cfg) };
+    _history_cfg = [];
     missionNamespace setVariable [QGVAR(variant_history_cfg), [] ];
     _history_cfg pushBackUnique _cfg_current;
     selectRandom _modifiableTo_cfg;
diff --git a/addons/wardrobe/functions/fnc_isModifiable.sqf b/addons/wardrobe/functions/fnc_isModifiable.sqf
index e4a824cf964..54d3ab4c9d4 100644
--- a/addons/wardrobe/functions/fnc_isModifiable.sqf
+++ b/addons/wardrobe/functions/fnc_isModifiable.sqf
@@ -1,19 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to check if the this item is modifiable - returns boolean
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to check if the provided wearable Item (Config) item is defined as a modifiable Wardrobe Item.
+ * Will not return true on fully inherited "ace_wardrobe" subclass
+ *
+ * Arguments:
+ * 0: Wearable Item <Config>
+ *
+ * Return Value:
+ * The return value <BOOL>
+ *
+ * Example:
+ * [_cfg] call ace_wardrobe_fnc_isModifiable
+ *
+ * Public: No
+ */
 
 params [
     ["_cfg",        configNull,         [configNull]       ]
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index b940831c938..450d9430eb7 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -1,19 +1,25 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* function to removes the modifiableItem and replaces it with the target item
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Ace Action Statement - Removes the modifiableItem and replaces it with the target item
+ *
+ * Arguments:
+ * 0: Action Target <OBJECT>
+ * 1: Action Player <OBJECT>
+ * 2: Action Params <ARRAY>
+ * - 0: Current Variant <CONFIG>
+ * - 0: Desired Variant <CONFIG>
+ * 3: Replace Now?  <BOOL>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * _this call ace_wardrobe_fnc_replace
+ *
+ * Public: No
+ */
 
 params ["_target", "_unit", "_actionParams", ["_replaceNow", false, [true]]];
 _actionParams params ["_cfg_origin", "_cfg_tgt"];
@@ -66,3 +72,5 @@ if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
 [ CBA_fnc_notify,      [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ],   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
+
+nil
diff --git a/addons/wardrobe/functions/fnc_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_facewear.sqf
index bc9fe45459d..3dcfcb4fa2f 100644
--- a/addons/wardrobe/functions/fnc_replace_facewear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_facewear.sqf
@@ -1,19 +1,22 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to replace a persons goggles/facewear.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to replace a persons goggles/facewear.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Current Variant <CONFIG>
+ * 2: Desired Variant <CONFIG>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [_player, _cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_replace_facewear
+ *
+ * Public: No
+ */
 
 params ["_player", "_cfg_origin", "_cfg_tgt"];
 removeGoggles _player;
diff --git a/addons/wardrobe/functions/fnc_replace_headgear.sqf b/addons/wardrobe/functions/fnc_replace_headgear.sqf
index dd30b6bf9ea..8b22d5ec403 100644
--- a/addons/wardrobe/functions/fnc_replace_headgear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_headgear.sqf
@@ -1,20 +1,27 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to replace a persons Headgear/Helmet slot.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to replace a persons Headgear/Helmet slot.
+ *
+ * Arguments:
+ * 0: Unit <OBJECT>
+ * 1: Current Variant <CONFIG>
+ * 2: Desired Variant <CONFIG>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [_player, _cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_replace_headgear
+ *
+ * Public: No
+ */
 
 params ["_player", "_cfg_origin", "_cfg_tgt"];
 removeHeadgear _player;
 _player addHeadgear configName _cfg_tgt;
+
+
+
+
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index ccda6137bdd..47d724a0d48 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -1,19 +1,23 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to replace a persons Uniform while maintaining the content of the uniform.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Function to replace a persons Uniform while maintaining the content of the uniform.
+ *
+ * Arguments:
+ * 0: Unit <Object>
+ * 1: Current Variant <CONFIG>
+ * 2: Desired Variant <CONFIG>
+ * 2: Type of Wearable Container <STRING>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [_player, _cfg_origin, _cfg_tgt, _case] call ace_wardrobe_fnc_replace_uniform
+ *
+ * Public: No
+ */
 
 params ["_player", "_cfg_origin", "_cfg_tgt", "_case"];
 
@@ -39,7 +43,7 @@ switch (_case) do {
     case "UNIFORM":  { _loadout # 0 # 3 set [0, configName _cfg_tgt]; };
     case "VEST":     { _loadout # 0 # 4 set [0, configName _cfg_tgt]; };
     case "BACKPACK": { _loadout # 0 # 5 set [0, configName _cfg_tgt]; };
-    default { diag_log format ['[CVO](debug)(fn_replace_uniform) Failed! - _case: %1', _case]; };
+    default { ERROR_1("Case undefined: %1",_case); };
 };
 
 // Apply new Loadout
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
index 490a1d57eae..8958ad1a1e8 100644
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ b/addons/wardrobe/functions/fnc_say3d.sqf
@@ -1,30 +1,40 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* Function to execute say3d globally - triggered as 3cba event.
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * CBA Event: "ace_wardrobe_eh_say3d"
+ * Function to use say3D
+ * If not defined otherwise, the Pitch will be randomised between 95% to 105% 
+ *
+ * Arguments:
+ * 0: Sound Source <OBJECT>
+ * 1: CfgSound Classname or Parameter Array <STRING|ARRAY>
+ * - 0: CfgSound Classname      <STRING>
+ * - 1: distance in meters      <NUMBER> (default: 50)
+ * - 2: pitch                   <NUMBER> (default: random from 0.95 to 1.05)
+ * - 3: is Speech               <BOOL>   (default: false)
+ * - 4: offset                  <NUMBER> (default: 0)
+ * - 4: Simulate Speed of Sound <BOOL>   (default: false)
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [player, "ace_horny_bonk"] call ace_wardrobe_fnc_say3d
+ *
+ * Public: No
+ */
 
 params [
-    ["_source",     objNull,    [objNull]   ],
-    ["_sound",      [""],        ["", []]   ]
+    ["_source", objNull, [objNull]   ],
+    ["_sound",  [""],    ["", []]   ]
 ];
 
 if (_sound isEqualType [] && {_sound#0 == ""} || {_sound isEqualType "" && {_sound == ""}}) exitWith {};
 
 _sound params [
 "_className",
-["_distance",        25,                [0]         ],
+["_distance",        50,                [0]         ],
 ["_pitch",           0.95 + random 0.1, [0]         ],
 ["_isSpeech",        false,             [false, 0]  ],
 ["_offSet",          0,                 [0]         ],
@@ -33,3 +43,5 @@ _sound params [
 
 
 _source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
+
+nil
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index 9437afb73f3..72d917aaeb4 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -1,19 +1,21 @@
 #include "../script_component.hpp"
 
 /*
-* Author: Zorn
-* This function sets the data-index for a magID
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
+ * Author: OverlordZorn
+ * Sets the data-index for a magID
+ *
+ * Arguments:
+ * 0: Magazine ID <STRING>
+ * 1: Index <NUMBER>
+ *
+ * Return Value:
+ * none
+ *
+ * Example:
+ * [_magID, _index] call ace_wardrobe_fnc_setIndexForMagID
+ *
+ * Public: No
+ */
 
 params [
     ["_magID",  "", [""] ],
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 12b8f41893f..785bfd2d19d 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -53,5 +53,13 @@
                 <English>Visor up</English>
             </Key>
         </Container>
+        <Container name="CBA Context Menu">
+            <Key ID="STR_ACE_Wardrobe_cannotSwitchTo">
+                <English>Cannot switch to</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_missingComponents">
+                <English>due to missing components</English>
+            </Key>
+        </Container>
     </Package>
 </Project>
\ No newline at end of file

From 93f785d441a3c948cf94e903d3c617ec44aa92c2 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 18:24:13 +0100
Subject: [PATCH 074/139] disabled - to be deleted later

---
 addons/wardrobe/CfgFunctions.hpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
index 041980f8351..20ab848e801 100644
--- a/addons/wardrobe/CfgFunctions.hpp
+++ b/addons/wardrobe/CfgFunctions.hpp
@@ -1,3 +1,4 @@
+/*
 class CfgFunctions
 {
     class ADDON
@@ -85,4 +86,5 @@ class CfgFunctions
             class getNextVariant {};
         };
     };
-};
\ No newline at end of file
+};
+*/
\ No newline at end of file

From 978e5cf6b1fc84b1c9c209c11ae18d95a8eef85d Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 18:28:13 +0100
Subject: [PATCH 075/139] WIP - Documentation

---
 addons/wardrobe/Baseclass.hpp             |   5 +-
 docs/wiki/framework/wardrobe-framework.md | 138 ++++++++++++++++++++++
 2 files changed, 141 insertions(+), 2 deletions(-)
 create mode 100644 docs/wiki/framework/wardrobe-framework.md

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index c2d070e179d..d968aa0e4b3 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -1,8 +1,9 @@
 #define CN_SOUND(base,dur) QUOTE(TRIPLES(ADDON,base,dur))
 
 class GVAR(base) {
+
     modifiableTo[] = {""};
-    // ## WIP ##
+
     // describes the components of the current item.
     // When the current wearable is being changed into something, that does not have these 
     components[] = {};
@@ -66,4 +67,4 @@ class GVAR(base_H_visor_down): GVAR(base) {
     sound_timing = 0;
 
     alternativeDisplayName = CSTRING(visorDown);
-};
\ No newline at end of file
+};
diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
new file mode 100644
index 00000000000..1f896f27adc
--- /dev/null
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -0,0 +1,138 @@
+---
+layout: wiki
+title: Wardrobe Framework
+description: Explains the wardrobe system and how to make a compat.
+group: framework
+order: 5
+parent: wiki
+mod: ace
+version:
+  major: 3
+  minor: 18
+  patch: 2
+---
+
+
+## 1. Overview
+
+## 2. Config
+
+- Only directly defined Subclasses will be taken into account. An fully inherited subclass will be ignored and will not provide an Interaction.
+
+## 2.1 Properties
+
+### 2.2 Base Classes
+
+#### 2.2.1 Base
+
+#### 2.2.2 Base Uniform Sleeves Up / Down
+
+#### 2.2.3 Base Uniform Gloves On / Off
+
+#### 2.2.4 Base Uniform Jacket Open / Closed
+
+#### 2.2.4 Base Helmet Visor Up / Down
+
+
+## 3. Examples
+
+### 3.1 Linear Example
+
+### 3.2 Advanced Example (Components)
+
+
+## 4. Sounds
+
+
+
+### 4.1 Integrated Sounds
+
+
+
+
+
+
+
+<!--- WIP - Formatting Examples below ~~~
+
+
+### 1.1 Adding a tag
+
+```cpp
+class ACE_Tags {
+    class yourTagClass {
+        displayName = "My Tag";  // Name of your tag being displayed in the interaction menu
+        requiredItem = "ACE_SpraypaintBlack";  // Required item to have in the inventory to be able to spray your tag (eg. `"ACE_SpraypaintBlack"`, `"ACE_SpraypaintRed"`, `"ACE_SpraypaintGreen"`, `"ACE_SpraypaintBlue"` or any custom item from `CfgWeapons`)
+        textures[] = {"path\to\texture1.paa", "path\to\texture2.paa"};  // List of texture variations (one is randomly selected when tagging)
+        materials[] = {"path\to\material.rvmat"}; // Optional: List of material variations (one is randomly selected). Keep empty if you don't need a custom material.
+        icon = "path\to\icon.paa";  // Icon being displayed in the interaction menu
+        tagModel = "UserTexture1m_F"; // Optional: The 3D Model that will be spawned with the texture on it, can either be CfgVehicles classname or P3D file path.
+    };
+};
+```
+
+
+## 2. Scripting
+
+### 2.1 Adding a tag
+
+`ace_tagging_fnc_addCustomTag`
+
+|    | Arguments | Type | Optional (default value) |
+| ---| --------- | ---- | ------------------------ |
+| 0  | Unique Identifier | String | Required |
+| 1  | Display Name | String | Required |
+| 2  | Required Item | String | Required |
+| 3  | Textures | Array | Required |
+| 4  | Icon | String | Optional (default: `""` - Default white point) |
+| 5  | Material Paths | Array | Optional (default: `[]` - No custom material) |
+| 6  | Tag Model | String | Optional (default: `"UserTexture1m_F"` - 1x1m texture surface) |
+| **R** | Successfully Added Tag | Boolean | Return value |
+
+#### 2.1.1 Example
+
+`["ace_victoryRed", "Victory Red", "ACE_SpraypaintRed", ["tagTexture1.paa", "tagTexture2.paa"], "icon.paa"] call ace_tagging_fnc_addCustomTag;`
+
+|    | Arguments | Explanation |
+| ---| --------- | ----------- |
+| 0  | `"ace_victoryRed"` | Unique identifier (similar to class name) |
+| 1  | `"Victory Red"` | Name of your tag being displayed in the interaction menu |
+| 2  | `"ACE_SpraypaintRed"` | Required item to have in the inventory to be able to spray your tag |
+| 3  | `["tagTexture1.paa", "tagTexture2.paa"]` | List of texture variants (one is randomly selected when tagging) |
+| 4  | `"icon.paa"` | Icon being displayed in the interaction menu |
+
+
+### 2.2 Tags in description.ext
+
+Tags can also be configured in description.ext like shown above.
+File Paths will be relative to your mission, if you want to define Tags inside description.ext but use Addon paths for `Texture`/`Material`/`TagModel` you need to prefix the path with `@`.
+
+This is how above config would look when using Addon paths from description.ext:
+
+```cpp
+class ACE_Tags {
+    class yourTagClass {
+        displayName = "My Tag";  // Name of your tag being displayed in the interaction menu
+        requiredItem = "ACE_SpraypaintBlack";  // Required item to have in the inventory to be able to spray your tag (eg. `"ACE_SpraypaintBlack"`, `"ACE_SpraypaintRed"`, `"ACE_SpraypaintGreen"`, `"ACE_SpraypaintBlue"` or any custom item from `CfgWeapons`)
+        textures[] = {"@path\to\texture1.paa", "@path\to\texture2.paa"};  // List of texture variations (one is randomly selected when tagging)
+        materials[] = {"@path\to\material.rvmat"}; // Optional: List of material variations (one is randomly selected). Keep empty if you don't need a custom material.
+        icon = "@path\to\icon.paa";  // Icon being displayed in the interaction menu
+        tagModel = "UserTexture1m_F"; // Optional: The 3D Model that will be spawned with the texture on it, can either be CfgVehicles classname or P3D file path.
+    };
+};
+```
+
+
+
+
+
+
+
+
+
+<div class="panel callout">
+    <h5>Note:</h5>
+    <p>This is just a guide to add tags using the framework. This is not a guide to make your own spray objects.</p>
+</div>
+
+--!>
\ No newline at end of file

From 4c2dad8cbb37ad5279a401b402f85d36357245ea Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 18:52:49 +0100
Subject: [PATCH 076/139] postInit -> XEH

---
 addons/wardrobe/CfgEventHandlers.hpp       |  7 ++++++-
 addons/wardrobe/XEH_PREP.hpp               |  1 -
 addons/wardrobe/XEH_postInit.sqf           |  3 +++
 addons/wardrobe/functions/fnc_postInit.sqf | 18 ------------------
 4 files changed, 9 insertions(+), 20 deletions(-)
 create mode 100644 addons/wardrobe/XEH_postInit.sqf
 delete mode 100644 addons/wardrobe/functions/fnc_postInit.sqf

diff --git a/addons/wardrobe/CfgEventHandlers.hpp b/addons/wardrobe/CfgEventHandlers.hpp
index 82da8b574b8..2f9c48aa546 100644
--- a/addons/wardrobe/CfgEventHandlers.hpp
+++ b/addons/wardrobe/CfgEventHandlers.hpp
@@ -1,6 +1,11 @@
-// No need to change anything here
 class Extended_PreInit_EventHandlers {
     class ADDON {
         init = QUOTE(call COMPILE_FILE(XEH_preInit));
     };
+};
+
+class Extended_PostInit_EventHandlers {
+    class ADDON {
+        init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
+    };
 };
\ No newline at end of file
diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index a2c61927671..af8f2e73336 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -1,4 +1,3 @@
-PREP(postInit);
 PREP(isModifiable);
 PREP(compare_components);
 PREP(canModifyTo);
diff --git a/addons/wardrobe/XEH_postInit.sqf b/addons/wardrobe/XEH_postInit.sqf
new file mode 100644
index 00000000000..3658433d5fe
--- /dev/null
+++ b/addons/wardrobe/XEH_postInit.sqf
@@ -0,0 +1,3 @@
+#include "script_component.hpp"
+
+[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;
diff --git a/addons/wardrobe/functions/fnc_postInit.sqf b/addons/wardrobe/functions/fnc_postInit.sqf
deleted file mode 100644
index ab84300a4e3..00000000000
--- a/addons/wardrobe/functions/fnc_postInit.sqf
+++ /dev/null
@@ -1,18 +0,0 @@
-#include "../script_component.hpp"
-
-/*
-* Author: Zorn
-* [Description]
-*
-* Arguments:
-*
-* Return Value:
-* None
-*
-* Example:
-* ['something', player] call prefix_component_fnc_functionname
-*
-* Public: No
-*/
-
-[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;

From 58cfa2566dd22140ad287e91f3fb9e3d89555a89 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 18:53:04 +0100
Subject: [PATCH 077/139] none -> None

---
 addons/wardrobe/functions/fnc_addCM_nextvariant.sqf           | 4 ++--
 addons/wardrobe/functions/fnc_cache_clear.sqf                 | 2 +-
 addons/wardrobe/functions/fnc_cache_db.sqf                    | 2 +-
 addons/wardrobe/functions/fnc_cache_get.sqf                   | 2 +-
 .../wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf  | 2 +-
 addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf     | 2 +-
 addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf   | 4 ++--
 addons/wardrobe/functions/fnc_enable_contextMenu.sqf          | 2 +-
 addons/wardrobe/functions/fnc_replace.sqf                     | 2 +-
 addons/wardrobe/functions/fnc_replace_facewear.sqf            | 2 +-
 addons/wardrobe/functions/fnc_replace_headgear.sqf            | 2 +-
 addons/wardrobe/functions/fnc_replace_uniform.sqf             | 2 +-
 addons/wardrobe/functions/fnc_say3d.sqf                       | 2 +-
 addons/wardrobe/functions/fnc_setIndexForMagID.sqf            | 2 +-
 14 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
index 95112dea49c..62ceb2dacf0 100644
--- a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
+++ b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
@@ -5,10 +5,10 @@
  * Function to create the CBA ContextMenu Option to switch to the (randomly choosen) next Variant of the current Version.
  *
  * Arguments:
- * none
+ * None
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [] call ace_wardrobe_fnc_addCM_nextvariant
diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
index 49785672c0e..8f6bd0b7133 100644
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ b/addons/wardrobe/functions/fnc_cache_clear.sqf
@@ -8,7 +8,7 @@
  * 0: Key <STRING>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * ["myKey"] call ace_wardrobe_fnc_cache_clear
diff --git a/addons/wardrobe/functions/fnc_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
index de4b9aa979e..0945178049c 100644
--- a/addons/wardrobe/functions/fnc_cache_db.sqf
+++ b/addons/wardrobe/functions/fnc_cache_db.sqf
@@ -5,7 +5,7 @@
  * Function to retrieve the Cache Database (Hashmap).
  *
  * Arguments:
- * none
+ * None
  *
  * Return Value:
  * Cache Database <HASHMAP>
diff --git a/addons/wardrobe/functions/fnc_cache_get.sqf b/addons/wardrobe/functions/fnc_cache_get.sqf
index da6a78399e3..9f43e97094c 100644
--- a/addons/wardrobe/functions/fnc_cache_get.sqf
+++ b/addons/wardrobe/functions/fnc_cache_get.sqf
@@ -6,7 +6,7 @@
  *
  * Arguments:
  * 0: Key <STRING>
- * 1: Code to run when there is no value stored <CODE> (optional)
+ * 1: Code to run when there is no value stored (optional) <CODE>
  *
  * Return Value:
  * Return <ANY> or "404" if no entry found and no code provided
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
index 0f7dd2f23e7..e795c710f0d 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
@@ -8,7 +8,7 @@
  * 0: The first argument <STRING>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * ["tag_myDataEntry"] call ace_wardrobe_fnc_clearOnClosed_InteractionMenu
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
index 8e5e1794b8c..63ce6cddfc1 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
@@ -8,7 +8,7 @@
  * 0: Key <STRING>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * ["tag_myKeyName"] call ace_wardrobe_fnc_clearOnClosed_Inventory
diff --git a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
index ebb98125793..c818edfdf6e 100644
--- a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
+++ b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
@@ -5,10 +5,10 @@
  * This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
  *
  * Arguments:
- * none
+ * None
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [] call ace_wardrobe_fnc_compare_container_maxLoad
diff --git a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
index 6e889462bd5..67f2d7f6221 100644
--- a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
@@ -8,7 +8,7 @@
  * 0: CBA Setting Value <BOOL>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [true] call ace_wardrobe_fnc_enable_contextMenu
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 450d9430eb7..84ccd4e7d52 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -13,7 +13,7 @@
  * 3: Replace Now?  <BOOL>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * _this call ace_wardrobe_fnc_replace
diff --git a/addons/wardrobe/functions/fnc_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_facewear.sqf
index 3dcfcb4fa2f..0d6eec65d1b 100644
--- a/addons/wardrobe/functions/fnc_replace_facewear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_facewear.sqf
@@ -10,7 +10,7 @@
  * 2: Desired Variant <CONFIG>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [_player, _cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_replace_facewear
diff --git a/addons/wardrobe/functions/fnc_replace_headgear.sqf b/addons/wardrobe/functions/fnc_replace_headgear.sqf
index 8b22d5ec403..5a3592b61c6 100644
--- a/addons/wardrobe/functions/fnc_replace_headgear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_headgear.sqf
@@ -10,7 +10,7 @@
  * 2: Desired Variant <CONFIG>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [_player, _cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_replace_headgear
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index 47d724a0d48..c67c247a3f0 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -11,7 +11,7 @@
  * 2: Type of Wearable Container <STRING>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [_player, _cfg_origin, _cfg_tgt, _case] call ace_wardrobe_fnc_replace_uniform
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
index 8958ad1a1e8..edb261dfa8a 100644
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ b/addons/wardrobe/functions/fnc_say3d.sqf
@@ -17,7 +17,7 @@
  * - 4: Simulate Speed of Sound <BOOL>   (default: false)
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [player, "ace_horny_bonk"] call ace_wardrobe_fnc_say3d
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index 72d917aaeb4..e24a9cfaf46 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -9,7 +9,7 @@
  * 1: Index <NUMBER>
  *
  * Return Value:
- * none
+ * None
  *
  * Example:
  * [_magID, _index] call ace_wardrobe_fnc_setIndexForMagID

From 835aec00fd056f6a5dc42d6bfb02d0cfe6f7f390 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Sat, 4 Jan 2025 19:21:36 +0100
Subject: [PATCH 078/139] Update addons/wardrobe/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
---
 addons/wardrobe/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 785bfd2d19d..5d7dc67ef74 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -9,7 +9,7 @@
         </Container>
         <Container name="CBA_Settings">
             <Key ID="STR_ACE_Wardrobe_set_enable_action">
-                <English>Enable ACE Interaction</English>
+                <English>ACE Interaction</English>
                 <German>Aktivieren ACE Interaction</German>
             </Key>
             <Key ID="STR_ACE_Wardrobe_set_enable_action_desc">

From cc3757c0ba5eb0651bdfb4c4d356d9aa00eec495 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Sat, 4 Jan 2025 19:22:24 +0100
Subject: [PATCH 079/139] Update addons/wardrobe/stringtable.xml

Co-authored-by: Grim <69561145+LinkIsGrim@users.noreply.github.com>
---
 addons/wardrobe/stringtable.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 5d7dc67ef74..babc3bd2d13 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -16,7 +16,7 @@
                 <English>When Enabled, will let the player use the Wardrobe related Ace Interactions.</English>
             </Key>
             <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu">
-                <English>Enable </English>
+                <English>CBA Context Menu</English>
                 <German>Aktiviere CBA Context Menu</German>
             </Key>
             <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu_desc">

From b9b90a86f2f8ea6a905f8fb6e0219194de61a467 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 19:36:34 +0100
Subject: [PATCH 080/139] Drop Unneeded Description

---
 addons/wardrobe/initSettings.inc.sqf | 4 ++--
 addons/wardrobe/stringtable.xml      | 6 ------
 2 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/addons/wardrobe/initSettings.inc.sqf b/addons/wardrobe/initSettings.inc.sqf
index c6869b5192b..d22a804bebc 100644
--- a/addons/wardrobe/initSettings.inc.sqf
+++ b/addons/wardrobe/initSettings.inc.sqf
@@ -1,7 +1,7 @@
 [
     QSET(enable_action),
     "CHECKBOX",
-    SETLSTRING(enable_action),
+    LSTRING(enable_action),
     [LSTRING(set_cat_main)],
     true,
     1,
@@ -12,7 +12,7 @@
 [
     QSET(enable_contextMenu),
     "CHECKBOX",
-    SETLSTRING(enable_contextMenu),
+    LSTRING(enable_contextMenu),
     [LSTRING(set_cat_main)],
     true,
     1,
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index babc3bd2d13..84f23ebba4e 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -12,16 +12,10 @@
                 <English>ACE Interaction</English>
                 <German>Aktivieren ACE Interaction</German>
             </Key>
-            <Key ID="STR_ACE_Wardrobe_set_enable_action_desc">
-                <English>When Enabled, will let the player use the Wardrobe related Ace Interactions.</English>
-            </Key>
             <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu">
                 <English>CBA Context Menu</English>
                 <German>Aktiviere CBA Context Menu</German>
             </Key>
-            <Key ID="STR_ACE_Wardrobe_set_enable_contexMenu_desc">
-                <English>When Enabled, will let the player use the Wardrobe related CBA Context Menu Options.&lt;br/&gt;Can be enabled at any time, but requires restart to disable. </English>
-            </Key>
         </Container>
         <Container name="Action">
             <Key ID="STR_ACE_Wardrobe_actionTitle">

From 4aea498b776d339578eb965ff580665c81103108 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sat, 4 Jan 2025 19:39:39 +0100
Subject: [PATCH 081/139] ACE_SpareBarrel - needs testing

---
 addons/wardrobe/functions/fnc_replace_uniform.sqf | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index c67c247a3f0..4983e92fa30 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -36,6 +36,10 @@ if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document" ] c
 if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad" ]  call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
 if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo" ]    call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
 
+// ACE Overheating
+private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
+if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+
 
 //// Replace Wearable
 // Change Wearable
@@ -54,3 +58,6 @@ switch (_case) do {
 if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) ); };
 if (_hasNotepad  isEqualType []) then { { [_x, _hasNotepad  # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"  ] call FUNC(getMagIDs) ); };
 if (_hasPhoto    isEqualType []) then { { [_x, _hasPhoto    # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"    ] call FUNC(getMagIDs) ); };
+
+// ACE Overheating
+if (_hasSpareBarrel isEqualType []) then { { [_x, _hasSpareBarrel # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) ); };

From e7781b26cf4a88c9bc6c2dbdd103430699c673d6 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Sat, 4 Jan 2025 23:15:58 +0100
Subject: [PATCH 082/139] Apply suggestions from code review
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 1f896f27adc..4f7d31b2e2a 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -17,7 +17,7 @@ version:
 
 ## 2. Config
 
-- Only directly defined Subclasses will be taken into account. An fully inherited subclass will be ignored and will not provide an Interaction.
+- Only directly defined Subclasses will be taken into account. A fully inherited subclass will be ignored and will not provide an Interaction.
 
 ## 2.1 Properties
 
@@ -104,8 +104,8 @@ class ACE_Tags {
 
 ### 2.2 Tags in description.ext
 
-Tags can also be configured in description.ext like shown above.
-File Paths will be relative to your mission, if you want to define Tags inside description.ext but use Addon paths for `Texture`/`Material`/`TagModel` you need to prefix the path with `@`.
+Tags can also be configured in `description.ext` like shown above.
+File Paths will be relative to your mission, if you want to define Tags inside `description.ext` but use Addon paths for `Texture`/`Material`/`TagModel` you need to prefix the path with `@`.
 
 This is how above config would look when using Addon paths from description.ext:
 

From 4b47a020988ef6af9e917a5a3cfa6dfdf074a10f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 00:23:28 +0100
Subject: [PATCH 083/139] cleanup

---
 addons/wardrobe/CfgFunctions.hpp              | 90 -------------------
 addons/wardrobe/Facewear.hpp                  | 28 +++---
 addons/wardrobe/XEH_PREP.hpp                  |  2 +-
 addons/wardrobe/XEH_postInit.sqf              |  2 +-
 addons/wardrobe/config.cpp                    |  1 -
 .../wardrobe/functions/fnc_getItems_all.sqf   |  4 +-
 .../functions/fnc_getItems_modifiable_all.sqf |  4 +-
 .../fnc_getItems_modifiable_current.sqf       |  4 +-
 addons/wardrobe/functions/fnc_getMagIDs.sqf   |  4 +-
 .../wardrobe/functions/fnc_isModifiable.sqf   |  2 +-
 .../functions/fnc_replace_uniform.sqf         | 16 ++--
 addons/wardrobe/functions/fnc_say3d.sqf       |  2 +
 .../functions/fnc_setIndexForMagID.sqf        |  4 +-
 13 files changed, 37 insertions(+), 126 deletions(-)
 delete mode 100644 addons/wardrobe/CfgFunctions.hpp

diff --git a/addons/wardrobe/CfgFunctions.hpp b/addons/wardrobe/CfgFunctions.hpp
deleted file mode 100644
index 20ab848e801..00000000000
--- a/addons/wardrobe/CfgFunctions.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
-class CfgFunctions
-{
-    class ADDON
-    {
-        class COMPONENT {
-            file = PATH_TO_FUNC;
-
-            class postInit { postInit = 1; };
-
-            class isModifiable {};
-            class compare_components {};
-            class canModifyTo {};
-        };
-
-        class ace_intel {
-            file = PATH_TO_FUNC_SUB(ace_intel);
-            class getMagIDs {};
-            class getIndexFromMagID {};
-            class setIndexForMagID {};
-        };
-
-        class getItems {
-            file = PATH_TO_FUNC_SUB(getItems);
-            class getItems_all {};
-            class getItems_modifiable_all {};
-            class getItems_modifiable_current {};
-            class getItems_modifiableTo {};
-            
-        };
-
-        class replace {
-            file = PATH_TO_FUNC_SUB(replace);
-
-            class replace {};
-            class replace_headgear {};
-            class replace_facewear {};
-            class replace_uniform  {};
-        };
-
-        class action {
-            file = PATH_TO_FUNC_SUB(action);
-
-            class addActions {};
-            class addActions_condition {};
-            class addActions_children {};
-            class getAction_Name {};
-            class getAction_Icon {};
-        };
-
-        class cache {
-            file = PATH_TO_FUNC_SUB(cache);
-
-            class cache_db {};
-            class cache_get {};
-            class cache_set {};
-            class cache_clear {};
-            class clearOnClosed_InteractionMenu {};
-            class clearOnClosed_Inventory {};
-        };
-
-        class config {
-            file = PATH_TO_FUNC_SUB(config);
-
-            class getCfgDataRandom {};
-        };
-
-        class debug {
-            file = PATH_TO_FUNC_SUB(debug);
-
-            class getAllWardrobeItems {};
-            class compare_container_maxLoad {};
-        };
-
-        class effects {
-            file = PATH_TO_FUNC_SUB(effects);
-
-            class say3d {};
-        };
-        class contextMenu {
-            file = PATH_TO_FUNC_SUB(contextMenu);
-
-            class enable_contextMenu {};
-            class addCM_nextvariant {};
-            class do_nextVariant {};
-            class getNextVariant {};
-        };
-    };
-};
-*/
\ No newline at end of file
diff --git a/addons/wardrobe/Facewear.hpp b/addons/wardrobe/Facewear.hpp
index ee800590004..bd6369769fd 100644
--- a/addons/wardrobe/Facewear.hpp
+++ b/addons/wardrobe/Facewear.hpp
@@ -37,19 +37,19 @@ class G_Shades_Black: None {
 class G_Balaclava_blk: None {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_lowprofile", "G_Balaclava_combat" };
-        components[] = {"G_Balaclava_blk"};
+        components[] = { "G_Balaclava_blk" };
     };
 };
 class G_Balaclava_combat: G_Balaclava_blk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_blk" };
-        components[] = {"G_Balaclava_blk","G_Combat"};
+        components[] = {"G_Balaclava_blk", "G_Combat"};
     };
 };
 class G_Balaclava_lowprofile: G_Balaclava_blk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_blk" };
-        components[] = {"G_Balaclava_blk","G_Lowprofile"};
+        components[] = { "G_Balaclava_blk", "G_Lowprofile" };
     };
 };
 
@@ -57,13 +57,13 @@ class G_Balaclava_lowprofile: G_Balaclava_blk {
 class G_Balaclava_TI_blk_F: None {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_G_blk_F" };
-        components[] = {"G_Balaclava_TI_blk_F"};
+        components[] = { "G_Balaclava_TI_blk_F" };
     };
 };
 class G_Balaclava_TI_G_blk_F: G_Balaclava_TI_blk_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_blk_F" };  
-        components[] = {"G_Balaclava_TI_blk_F","G_Combat"};
+        components[] = { "G_Balaclava_TI_blk_F", "G_Combat" };
     };
 };
 
@@ -71,13 +71,13 @@ class G_Balaclava_TI_G_blk_F: G_Balaclava_TI_blk_F {
 class G_Balaclava_TI_tna_F: G_Balaclava_TI_blk_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_G_tna_F" };
-        components[] = {"G_Balaclava_TI_tna_F"};
+        components[] = { "G_Balaclava_TI_tna_F" };
     };
 };
 class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Balaclava_TI_tna_F" };  
-        components[] = {"G_Balaclava_TI_tna_F","G_Combat"};
+        components[] = { "G_Balaclava_TI_tna_F", "G_Combat" };
     };
 };
 
@@ -85,26 +85,26 @@ class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
 class G_Bandanna_blk: G_Balaclava_blk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" };
-        components[] = {"G_Bandanna_blk"};
+        components[] = { "G_Bandanna_blk" };
     };
 };
 
 class G_Bandanna_shades: G_Bandanna_blk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Shades_Black" };  
-        components[] = {"G_Bandanna_blk", "G_Shades_Black"  };
+        components[] = { "G_Bandanna_blk", "G_Shades_Black" };
     };
 };
 class G_Bandanna_sport: G_Bandanna_shades {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Sport_Blackred" };
-        components[] = {"G_Bandanna_blk", "G_Sport_Blackred"};
+        components[] = { "G_Bandanna_blk", "G_Sport_Blackred" };
     };
 };
 class G_Bandanna_aviator: G_Bandanna_shades {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };       
-        components[] = {"G_Bandanna_blk", "G_Aviator"   };
+        components[] = { "G_Bandanna_blk", "G_Aviator" };
     };
 };
 
@@ -113,18 +113,18 @@ class G_Bandanna_aviator: G_Bandanna_shades {
 class G_EyeProtectors_F:  G_EyeProtectors_base_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
-        components[] = {"G_EyeProtectors_F"};
+        components[] = { "G_EyeProtectors_F" };
     };
 };
 class G_EyeProtectors_Earpiece_F: G_EyeProtectors_base_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" };
-        components[] = {"G_EyeProtectors_F", "G_WirelessEarpiece_F"};
+        components[] = { "G_EyeProtectors_F", "G_WirelessEarpiece_F" };
     };
 };
 class G_WirelessEarpiece_F:   G_WirelessEarpiece_base_F {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { "G_EyeProtectors_Earpiece_F" };               
-        components[] = {"G_WirelessEarpiece_F"};
+        components[] = { "G_WirelessEarpiece_F" };
     };
 };
diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index af8f2e73336..cfd103febdb 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -34,7 +34,7 @@ PREP(getCfgDataRandom);
 PREP(getAllWardrobeItems);
 PREP(compare_container_maxLoad);
 // Effects
-PREP(say3d);
+PREP(say3d); // TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
 // CBA Context Menu
 PREP(enable_contextMenu);
 PREP(addCM_nextvariant);
diff --git a/addons/wardrobe/XEH_postInit.sqf b/addons/wardrobe/XEH_postInit.sqf
index 3658433d5fe..c63f685fe03 100644
--- a/addons/wardrobe/XEH_postInit.sqf
+++ b/addons/wardrobe/XEH_postInit.sqf
@@ -1,3 +1,3 @@
 #include "script_component.hpp"
 
-[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;
+[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;  // TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index c01f8e87e1e..f275eb53fe7 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -20,7 +20,6 @@ class CfgPatches {
     };
 };
 
-#include "CfgFunctions.hpp"
 #include "CfgEventHandlers.hpp"
 
 #include "CfgVehicles.hpp"
diff --git a/addons/wardrobe/functions/fnc_getItems_all.sqf b/addons/wardrobe/functions/fnc_getItems_all.sqf
index 44166f9ce0c..29e6165e957 100644
--- a/addons/wardrobe/functions/fnc_getItems_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_all.sqf
@@ -18,8 +18,8 @@
  */
 
 params [
-    ["_unit",   objNull,    [objNull]],
-    ["_cache",    true,       [true]   ]
+    ["_unit", objNull, [objNull]],
+    ["_cache", true, [true]]
 ];
 
 
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
index b2947210596..021d56bd76d 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_all.sqf
@@ -18,8 +18,8 @@
  */
 
 params [
-    ["_unit",   objNull,    [objNull]],
-    ["_cache",    true,       [true]   ]
+    ["_unit", objNull, [objNull]],
+    ["_cache", true, [true]]
 ];
 
 
diff --git a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
index 327277fe24c..3d498395b55 100644
--- a/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
+++ b/addons/wardrobe/functions/fnc_getItems_modifiable_current.sqf
@@ -18,8 +18,8 @@
  */
 
 params [
-    ["_unit",   objNull,    [objNull]],
-    ["_cache",    true,       [true]   ]
+    ["_unit", objNull, [objNull]],
+    ["_cache", true, [true]]
 ];
 
 
diff --git a/addons/wardrobe/functions/fnc_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
index d0b221c84d7..a4d1f9af6bf 100644
--- a/addons/wardrobe/functions/fnc_getMagIDs.sqf
+++ b/addons/wardrobe/functions/fnc_getMagIDs.sqf
@@ -19,8 +19,8 @@
 
 
 params [
-    ["_unit",       objNull,    [objNull]       ],
-    ["_className",  "",         [""]            ]
+    ["_unit", objNull, [objNull]],
+    ["_className", "", [""]]
 ];
 
 if ( _className == "" || { _unit isEqualTo objNull } ) exitWith {};
diff --git a/addons/wardrobe/functions/fnc_isModifiable.sqf b/addons/wardrobe/functions/fnc_isModifiable.sqf
index 54d3ab4c9d4..9ca0fd3f256 100644
--- a/addons/wardrobe/functions/fnc_isModifiable.sqf
+++ b/addons/wardrobe/functions/fnc_isModifiable.sqf
@@ -18,7 +18,7 @@
  */
 
 params [
-    ["_cfg",        configNull,         [configNull]       ]
+    ["_cfg", configNull, [configNull]]
 ];
 
 
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index 4983e92fa30..758ffc3f737 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -29,12 +29,12 @@ private _loadout = [_player] call CBA_fnc_getLoadout;
 
 //// Handle Special Cases - Pre Replace
 // ACE Intel Items
-private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document"} > -1;
+private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document" } > -1;
 private _hasNotepad =  _magazineDetails findIf { _x#0 == "acex_intelitems_notepad" } > -1;
-private _hasPhoto =    _magazineDetails findIf { _x#0 == "acex_intelitems_photo"   } > -1;
-if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad" ]  call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo" ]    call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+private _hasPhoto =    _magazineDetails findIf { _x#0 == "acex_intelitems_photo" } > -1;
+if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document"] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad"]  call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo"]    call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
 
 // ACE Overheating
 private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
@@ -55,9 +55,9 @@ switch (_case) do {
 
 //// Handle Special Cases - Post Replace
 // ACE Intel Items
-if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document" ] call FUNC(getMagIDs) ); };
-if (_hasNotepad  isEqualType []) then { { [_x, _hasNotepad  # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"  ] call FUNC(getMagIDs) ); };
-if (_hasPhoto    isEqualType []) then { { [_x, _hasPhoto    # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"    ] call FUNC(getMagIDs) ); };
+if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document"] call FUNC(getMagIDs) ); };
+if (_hasNotepad isEqualType [])  then { { [_x, _hasNotepad # _forEachIndex]  call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"]  call FUNC(getMagIDs) ); };
+if (_hasPhoto isEqualType [])    then { { [_x, _hasPhoto # _forEachIndex]    call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"]    call FUNC(getMagIDs) ); };
 
 // ACE Overheating
 if (_hasSpareBarrel isEqualType []) then { { [_x, _hasSpareBarrel # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) ); };
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
index edb261dfa8a..df038d05764 100644
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ b/addons/wardrobe/functions/fnc_say3d.sqf
@@ -1,3 +1,5 @@
+// TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
+
 #include "../script_component.hpp"
 
 /*
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index e24a9cfaf46..a63a8690aff 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -18,8 +18,8 @@
  */
 
 params [
-    ["_magID",  "", [""] ],
-    ["_index",  0,  [0]  ]
+    ["_magID", "", [""]],
+    ["_index", 0, [0]]
 ];
 
 if (_index == -1) exitWith {};

From 769d746fd4e83e96a02b4c00279b8e93f8f55d9c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 02:59:30 +0100
Subject: [PATCH 084/139] fix

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

diff --git a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
index 56c8239abe0..38258a85c91 100644
--- a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
@@ -20,6 +20,6 @@
 
 params [["_asConfig", false, [true]]];
 
-private _return = ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) };
+private _return = flatten ( ["CfgWeapons", "CfgGlasses"] apply { ( QUOTE([_x] call FUNC(isModifiable)) configClasses (configFile >> _x) ) } );
 
-if (_asConfig) then { _return apply { configName _x } } else { _return }
+if (_asConfig) then { _return } else { _return apply { configName _x } }

From 972d9b9f74a400b4ca30a78eabe994d31efdc2a7 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 02:59:53 +0100
Subject: [PATCH 085/139] Compat for ace_spareBarrel

---
 addons/wardrobe/XEH_PREP.hpp                  |  2 ++
 addons/wardrobe/XEH_postInit.sqf              |  1 +
 .../functions/fnc_replace_uniform.sqf         | 10 ++++--
 .../fnc_spareBarrel_updateMagIDs.sqf          | 33 +++++++++++++++++++
 4 files changed, 44 insertions(+), 2 deletions(-)
 create mode 100644 addons/wardrobe/functions/fnc_spareBarrel_updateMagIDs.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index cfd103febdb..36286bec196 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -15,6 +15,8 @@ PREP(replace);
 PREP(replace_headgear);
 PREP(replace_facewear);
 PREP(replace_uniform);
+// Compat
+PREP(spareBarrel_updateMagIDs);
 // Ace Actions
 PREP(addActions);
 PREP(addActions_condition);
diff --git a/addons/wardrobe/XEH_postInit.sqf b/addons/wardrobe/XEH_postInit.sqf
index c63f685fe03..e71b70bd49e 100644
--- a/addons/wardrobe/XEH_postInit.sqf
+++ b/addons/wardrobe/XEH_postInit.sqf
@@ -1,3 +1,4 @@
 #include "script_component.hpp"
 
 [ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;  // TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
+[ QGVAR(EH_updateMagIDs), FUNC(spareBarrel_updateMagIDs) ] call CBA_fnc_addEventHandler;
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index 758ffc3f737..b44f1bba5f8 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -28,6 +28,7 @@ private _loadout = [_player] call CBA_fnc_getLoadout;
 
 
 //// Handle Special Cases - Pre Replace
+
 // ACE Intel Items
 private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document" } > -1;
 private _hasNotepad =  _magazineDetails findIf { _x#0 == "acex_intelitems_notepad" } > -1;
@@ -38,7 +39,7 @@ if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo"]    ca
 
 // ACE Overheating
 private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
-if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) };
 
 
 //// Replace Wearable
@@ -53,11 +54,16 @@ switch (_case) do {
 // Apply new Loadout
 [_player, _loadout] call CBA_fnc_setLoadout;
 
+
 //// Handle Special Cases - Post Replace
+
 // ACE Intel Items
 if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document"] call FUNC(getMagIDs) ); };
 if (_hasNotepad isEqualType [])  then { { [_x, _hasNotepad # _forEachIndex]  call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"]  call FUNC(getMagIDs) ); };
 if (_hasPhoto isEqualType [])    then { { [_x, _hasPhoto # _forEachIndex]    call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"]    call FUNC(getMagIDs) ); };
 
 // ACE Overheating
-if (_hasSpareBarrel isEqualType []) then { { [_x, _hasSpareBarrel # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) ); };
+if (_hasSpareBarrel isEqualType [] ) then {
+    private _SpareBarrel_new_MagIDs = [_player, "ACE_SpareBarrel"] call FUNC(getMagIDs);
+    [QGVAR(EH_updateMagIDs), [_hasSpareBarrel, _SpareBarrel_new_MagIDs]] call CBA_fnc_serverEvent;
+};
diff --git a/addons/wardrobe/functions/fnc_spareBarrel_updateMagIDs.sqf b/addons/wardrobe/functions/fnc_spareBarrel_updateMagIDs.sqf
new file mode 100644
index 00000000000..843c04bb009
--- /dev/null
+++ b/addons/wardrobe/functions/fnc_spareBarrel_updateMagIDs.sqf
@@ -0,0 +1,33 @@
+#include "../script_component.hpp"
+
+/*
+ * Author: OverlordZorn
+ * Function to update ACE Overheating's Serverside SpareBarrel DataBase with new MagIDs.
+ *
+ * Arguments:
+ * 0: old magIDs <ARRAY>
+ * 1: new magIDs <ARRAY>
+ *
+ * Return Value:
+ * The return value <BOOL>
+ *
+ * Example:
+ * [_old, _new] call ace_wardrobe_fnc_spareBarrel_updateMagIDs
+ *
+ * Public: No
+ */
+
+if (!isServer) exitWith {};
+
+params ["_old_magIDs", "_new_magIDs"];
+
+if (count _old_magIDs != count _new_magIDs) exitWith { ERROR_2("Not Equal Number of magID's provided: %1 - %2",_old_magIDs,_new_magIDs); systemChat "Errorrrrrrrrrrr"; };
+
+private _map = EGVAR(overheating,storedSpareBarrels);
+
+{
+    private _oldID = _x;
+    if !(_oldID in _map) then { continue };
+    _map set [ _new_magIDs # _forEachIndex , _map deleteAt _oldID ];
+
+} forEach _old_magIDs;
\ No newline at end of file

From 9a7f879b45222cd3f1b98a3e20215052ac32fbaf Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 03:02:30 +0100
Subject: [PATCH 086/139] Update launch.toml

---
 .hemtt/launch.toml | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index 22fa41bfa59..da7fee53370 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -45,6 +45,7 @@ workshop = [
 ]
 mission = "Wardrobe.VR"
 dlc = [
-    "Reaction Forces",
-    "Western Sahara"
+#    "Western Sahara",    
+#    "Reaction Forces"    
+#    "S.O.G. Prairie Fire"
 ]
\ No newline at end of file

From 82bb067e4a2aefcdc5507b4f14679b173d5ae8a5 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 19:21:15 +0100
Subject: [PATCH 087/139] remove fnc_say3d.sqf

---
 addons/wardrobe/XEH_PREP.hpp            |  2 -
 addons/wardrobe/XEH_postInit.sqf        | 16 +++++++-
 addons/wardrobe/functions/fnc_say3d.sqf | 49 -------------------------
 3 files changed, 15 insertions(+), 52 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_say3d.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index 36286bec196..e2bc8559567 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -35,8 +35,6 @@ PREP(getCfgDataRandom);
 // Debug
 PREP(getAllWardrobeItems);
 PREP(compare_container_maxLoad);
-// Effects
-PREP(say3d); // TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
 // CBA Context Menu
 PREP(enable_contextMenu);
 PREP(addCM_nextvariant);
diff --git a/addons/wardrobe/XEH_postInit.sqf b/addons/wardrobe/XEH_postInit.sqf
index e71b70bd49e..75fa2c87365 100644
--- a/addons/wardrobe/XEH_postInit.sqf
+++ b/addons/wardrobe/XEH_postInit.sqf
@@ -1,4 +1,18 @@
 #include "script_component.hpp"
 
-[ QGVAR(EH_say3d), FUNC(say3d) ] call CBA_fnc_addEventHandler;  // TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
 [ QGVAR(EH_updateMagIDs), FUNC(spareBarrel_updateMagIDs) ] call CBA_fnc_addEventHandler;
+
+[
+    QGVAR(EH_say3d),
+    {
+        params [["_source", objNull, [objNull]],["_sound",[""],["", []]]];
+        if (_sound isEqualType [] && {_sound#0 == ""} || {_sound isEqualType "" && {_sound == ""}}) exitWith {};
+        _sound params [
+            "_className",
+            ["_distance", 50, [0]],
+            ["_pitch", 0.95 + random 0.1, [0]]
+        ];
+        _source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
+        nil
+    }
+] call CBA_fnc_addEventHandler;
diff --git a/addons/wardrobe/functions/fnc_say3d.sqf b/addons/wardrobe/functions/fnc_say3d.sqf
deleted file mode 100644
index df038d05764..00000000000
--- a/addons/wardrobe/functions/fnc_say3d.sqf
+++ /dev/null
@@ -1,49 +0,0 @@
-// TO BE DELETED ONCE https://github.com/acemod/ACE3/pull/10619 has merged
-
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * CBA Event: "ace_wardrobe_eh_say3d"
- * Function to use say3D
- * If not defined otherwise, the Pitch will be randomised between 95% to 105% 
- *
- * Arguments:
- * 0: Sound Source <OBJECT>
- * 1: CfgSound Classname or Parameter Array <STRING|ARRAY>
- * - 0: CfgSound Classname      <STRING>
- * - 1: distance in meters      <NUMBER> (default: 50)
- * - 2: pitch                   <NUMBER> (default: random from 0.95 to 1.05)
- * - 3: is Speech               <BOOL>   (default: false)
- * - 4: offset                  <NUMBER> (default: 0)
- * - 4: Simulate Speed of Sound <BOOL>   (default: false)
- *
- * Return Value:
- * None
- *
- * Example:
- * [player, "ace_horny_bonk"] call ace_wardrobe_fnc_say3d
- *
- * Public: No
- */
-
-params [
-    ["_source", objNull, [objNull]   ],
-    ["_sound",  [""],    ["", []]   ]
-];
-
-if (_sound isEqualType [] && {_sound#0 == ""} || {_sound isEqualType "" && {_sound == ""}}) exitWith {};
-
-_sound params [
-"_className",
-["_distance",        50,                [0]         ],
-["_pitch",           0.95 + random 0.1, [0]         ],
-["_isSpeech",        false,             [false, 0]  ],
-["_offSet",          0,                 [0]         ],
-["_simSpeedOfSound", false,             [false]     ]
-];
-
-
-_source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
-
-nil

From e7e7f410e8ad148fb199d6e4edd4f68250f7905d Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Sun, 5 Jan 2025 19:36:05 +0100
Subject: [PATCH 088/139] remove unused variables

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

diff --git a/addons/wardrobe/XEH_postInit.sqf b/addons/wardrobe/XEH_postInit.sqf
index 75fa2c87365..cece4f6f968 100644
--- a/addons/wardrobe/XEH_postInit.sqf
+++ b/addons/wardrobe/XEH_postInit.sqf
@@ -12,7 +12,7 @@
             ["_distance", 50, [0]],
             ["_pitch", 0.95 + random 0.1, [0]]
         ];
-        _source say3D [_className, _distance, _pitch, _isSpeech, _offSet, _simSpeedOfSound];
+        _source say3D [_className, _distance, _pitch];
         nil
     }
 ] call CBA_fnc_addEventHandler;

From 848a00d18ff46885d25562d6848b7d4639c6926d Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 01:18:40 +0100
Subject: [PATCH 089/139] refactor: goggles as components

---
 addons/wardrobe/functions/fnc_replace.sqf | 25 ++++++++++++++++++-----
 1 file changed, 20 insertions(+), 5 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 84ccd4e7d52..9ce16bb7668 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -47,18 +47,34 @@ private _replaceCode = switch ( _typeNumber ) do {
 
 if (_replaceCode isEqualType false) exitWith { ERROR_2("typeNumber undefined: %1 - %2",_typeNumber,configName _cfg_origin); };
 
-[ _replaceCode,        [_unit, _cfg_origin, _cfg_tgt, _additionalParams ],  _duration * 1.0 ] call CBA_fnc_waitAndExecute;
+[ _replaceCode, [_unit, _cfg_origin, _cfg_tgt, _additionalParams ], _duration * 1.0 ] call CBA_fnc_waitAndExecute;
 
-// Remove / Add Missing/Surplus Items.
+//// Handle Components
+// Add Surplus
 [_cfg_origin, _cfg_tgt] call FUNC(compare_components) params ["_missing", "_surplus"];
 {
-    if (configName _cfg_tgt != _x) then { [_unit, _x, true] call CBA_fnc_addItem; };
+    if (configName _cfg_tgt != _x) then {
+        if ( isClass (configFile >> "CfgGlasses" >> _x) && { goggles _unit == "" } ) then {
+            _unit addGoggles _x;
+        } else {
+            [_unit, _x, true] call CBA_fnc_addItem;
+        };
+    };
 } forEach _surplus;   
+
+// Remove Missing
 {
-    if (configName _cfg_origin != _x) then { [_unit, _x] call CBA_fnc_removeItem; };
+    if (configName _cfg_origin != _x) then {
+
+        switch (true) do {
+            case (goggles _unit == _x): { removeGoggles _unit; };
+            default { [_unit, _x] call CBA_fnc_removeItem; };
+        };
+    };
 } forEach _missing;
 
 
+//// Handle Effects
 // Animation/Gestures
 [ _unit, getText (_cfg_tgt >> QADDON >> "gesture") ] call ace_common_fnc_doGesture;
 
@@ -67,7 +83,6 @@ private _sound_timing = getNumber (_cfg_tgt>> QADDON >> "sound_timing") max 0 mi
 private _sound = [_cfg_tgt >> QADDON >> "sound"] call FUNC(getCfgDataRandom);
 if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
 
-
 // Notification
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };

From 5ae5b57398118ab5338f128c23ab29bed87d568f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 01:18:57 +0100
Subject: [PATCH 090/139] remove whitespace

---
 addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 76571f73a82..c49da34f18a 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -10,7 +10,7 @@ class CfgWeapons {
     };
     class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION {
         class ace_wardrobe: EGVAR(wardrobe,base) {
-            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   };
+            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION" };
         };
     };
 

From d8900d6ddb459fda175af23847e5dec5af0fbeef Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 01:21:10 +0100
Subject: [PATCH 091/139] more compats

---
 .../compat_sog_wardrobe/CfgWardrobe.hpp       |  13 +-
 .../compat_sog_wardrobe/Facewear.hpp          | 103 +++++++++++
 .../compat_sog_wardrobe/Helmets.hpp           | 171 ++++++++++++++++++
 .../compat_sog_wardrobe/Pilothelmets.hpp      |  63 -------
 .../Uniforms.hpp                              |  67 ++++++-
 .../compat_sog_wardrobe_uniform_fix/readme.md |   5 +
 addons/wardrobe/Baseclass.hpp                 |  13 +-
 addons/wardrobe/config.cpp                    |   3 +-
 addons/wardrobe/stringtable.xml               |  12 ++
 9 files changed, 382 insertions(+), 68 deletions(-)
 create mode 100644 addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
 create mode 100644 addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp

diff --git a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
index 1516da1e51a..07abc3fea55 100644
--- a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
@@ -1,3 +1,5 @@
+
+
 class EGVAR(wardrobe,base);
 
 class EGVAR(wardrobe,base_H_visor_up);
@@ -6,14 +8,23 @@ class EGVAR(wardrobe,base_H_visor_down);
 class EGVAR(wardrobe,base_U_sleeves_up);
 class EGVAR(wardrobe,base_U_sleeves_down);
 
+class EGVAR(wardrobe,base_H_goggles_on);
+class EGVAR(wardrobe,base_H_goggles_off);
+
+
+
 class CfgWeapons {
     // Base Classes
     class vn_b_headgear_base;
     class vn_o_headgear_base;
 
-    #include "Pilothelmets.hpp"
+    #include "Helmets.hpp"
     #include "Booniehats.hpp"
     #include "Uniforms_B.hpp"
     #include "Uniforms_O.hpp"
 };
 
+
+class CfgGlasses {
+    #include "Facewear.hpp"
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
new file mode 100644
index 00000000000..a99810ffa00
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
@@ -0,0 +1,103 @@
+// Common Base
+class vn_glasses_base;
+
+
+// Scarf
+class vn_b_acc_rag_01: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_rag_02" };
+    };
+};
+class vn_b_acc_rag_02: vn_b_acc_rag_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_rag_01" };
+    };
+};
+
+
+// Towel
+class vn_b_acc_towel_01: vn_b_acc_rag_02 {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_towel_02" };
+    };
+};
+class vn_b_acc_towel_02: vn_b_acc_towel_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_towel_01" };
+    };
+};
+
+
+// Pilot Air Mask
+class vn_b_acc_ms22001_01: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_ms22001_02" };
+        alternativeDisplayName = ECSTRING(wardrobe,maskOn);
+    };
+};
+class vn_b_acc_ms22001_02: vn_b_acc_ms22001_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_acc_ms22001_01" };
+        alternativeDisplayName = ECSTRING(wardrobe,maskOff);
+    };
+};
+
+// Bandana + Aviators
+class vn_b_aviator: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_bandana_a" };
+        components[] = {"vn_b_aviator"};
+    };
+};
+
+class vn_o_bandana_b: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_bandana_a" };
+        components[] = {"vn_o_bandana_b"};
+    };
+};
+
+class vn_b_bandana_a: vn_o_bandana_b {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_b_aviator", "vn_o_bandana_b" };
+        components[] = {"vn_b_aviator", "vn_o_bandana_b"};
+    };
+};
+
+
+
+// US Combat Goggles, used by vn_b_helmet_m1_20_01 & vn_b_helmet_m1_20_02
+class vn_b_acc_goggles_01: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+
+// VN Pilot Glasses + Mask
+// Pilot Mask
+class vn_o_acc_km32_01: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_o_acc_goggles_03" };
+        components[] = {"vn_o_acc_km32_01"};
+    };
+};       
+// VN Crew Goggles
+class vn_o_acc_goggles_01: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        components[] = {"vn_o_acc_goggles_01"};
+    };
+};
+// Goggles
+class vn_o_acc_goggles_02: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_o_acc_goggles_03" };
+        components[] = {"vn_o_acc_goggles_02"};
+    };
+};
+// Goggles with Mask
+class vn_o_acc_goggles_03: vn_glasses_base {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02" };
+        components[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02"};
+    };
+};    
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
new file mode 100644
index 00000000000..bc5af5b4e8a
--- /dev/null
+++ b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
@@ -0,0 +1,171 @@
+// CfgWeapons
+
+
+// Macros
+#define CN01(side,var1,var2) vn_##side##_helmet_##var1##_01_##var2
+#define CN02(side,var1,var2) vn_##side##_helmet_##var1##_02_##var2
+
+
+#define HELMET_VARIANT(side,var1,var2)\
+class CN01(side,var1,var2): base_class_up {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {\
+        modifiableTo[] = { QUOTE(CN02(side,var1,var2)) };\
+    };\
+};\
+class CN02(side,var1,var2): base_class_dn {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
+        modifiableTo[] = { QUOTE(CN01(side,var1,var2)) };\
+    };\
+};
+
+
+// Base classes in CfgWeapons.hpp
+
+// Parent Version aph6 & svh4
+#define base_class_up vn_b_headgear_base
+#define base_class_dn vn_b_headgear_base
+HELMET_VARIANT(b,aph6,01)
+HELMET_VARIANT(b,svh4,01)
+
+// Child Version aph6
+#undef base_class_up
+#undef base_class_dn
+#define base_class_up CN01(b,aph6,01)
+#define base_class_dn CN02(b,aph6,01)
+
+HELMET_VARIANT(b,aph6,02)
+HELMET_VARIANT(b,aph6,03)
+HELMET_VARIANT(b,aph6,04)
+HELMET_VARIANT(b,aph6,05)
+
+// Child Version svh4
+#undef base_class_up
+#undef base_class_dn
+#define base_class_up CN01(b,svh4,01)
+#define base_class_dn CN02(b,svh4,01)
+
+HELMET_VARIANT(b,svh4,02)
+HELMET_VARIANT(b,svh4,03)
+HELMET_VARIANT(b,svh4,04)
+HELMET_VARIANT(b,svh4,05)
+HELMET_VARIANT(b,svh4,06)
+
+// Special Case zsh3
+class vn_o_helmet_zsh3_01: vn_o_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {
+        modifiableTo[] = { "vn_o_helmet_zsh3_02" };
+    }; 
+};
+class vn_o_helmet_zsh3_02: vn_o_helmet_zsh3_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {
+        modifiableTo[] = { "vn_o_helmet_zsh3_01" };
+    }; 
+};
+
+// Helmets with/without Goggles
+class vn_b_helmet_m1_01_01;
+class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_b_helmet_m1_20_01" };
+    };
+};
+class vn_b_helmet_m1_14_02: vn_b_helmet_m1_14_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_b_helmet_m1_20_02" };
+    };
+};
+
+class vn_b_helmet_m1_20_01 : vn_b_helmet_m1_14_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_b_helmet_m1_14_01" };
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+class vn_b_helmet_m1_20_02 : vn_b_helmet_m1_20_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_b_helmet_m1_14_02" };
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+
+
+//// VN Pilot Helmet
+// With Goggles
+class vn_o_helmet_shl61_01: vn_o_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_o_helmet_shl61_02" };
+        components[] = {"vn_o_acc_goggles_02"};
+    };
+};   
+// Without Goggles
+class vn_o_helmet_shl61_02: vn_o_helmet_shl61_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_o_helmet_shl61_01" };
+    };
+};
+
+
+// US Vic Crew Helmets
+class vn_b_helmet_t56_01_01: vn_b_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_b_helmet_t56_02_01" };
+    };
+};
+class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_b_helmet_t56_01_01" };
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+
+class vn_b_helmet_t56_01_02: vn_b_helmet_t56_01_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_b_helmet_t56_02_02" };
+    };
+};
+class vn_b_helmet_t56_02_02: vn_b_helmet_t56_02_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_b_helmet_t56_01_02" };
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+
+class vn_b_helmet_t56_01_03: vn_b_helmet_t56_01_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_b_helmet_t56_02_03" };
+    };
+};
+class vn_b_helmet_t56_02_03: vn_b_helmet_t56_02_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_b_helmet_t56_01_03" };
+        components[] = {"vn_b_acc_goggles_01"};
+    };
+};
+
+
+// VN Vic Crew Helmet   // 1 with goggles
+// vn_o_acc_goggles_01
+class vn_o_helmet_tsh3_01: vn_o_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_o_helmet_tsh3_02" };
+        components[] = {"vn_o_acc_goggles_01"};
+    };
+};
+class vn_o_helmet_tsh3_02: vn_o_helmet_tsh3_01 {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_o_helmet_tsh3_01" };
+    };
+};
+
+// VN Pith Helmet with Crew Goggles
+class vn_o_helmet_nva_01: vn_o_headgear_base {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+        modifiableTo[] = { "vn_o_helmet_nva_05" };
+    };
+};
+class vn_o_helmet_nva_05: vn_o_helmet_nva_01  {
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+        modifiableTo[] = { "vn_o_helmet_nva_01" };
+        components[] = {"vn_o_acc_goggles_02"};
+    };
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
deleted file mode 100644
index d31d288e4b7..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe/Pilothelmets.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// CfgWeapons
-
-
-// Macros
-#define CN01(side,var1,var2) vn_##side##_helmet_##var1##_01_##var2
-#define CN02(side,var1,var2) vn_##side##_helmet_##var1##_02_##var2
-
-
-#define HELMET_VARIANT(side,var1,var2)\
-class CN01(side,var1,var2): base_class_up {\
-    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {\
-        modifiableTo[] = { QUOTE(CN02(side,var1,var2)) };\
-    };\
-};\
-class CN02(side,var1,var2): base_class_dn {\
-    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
-        modifiableTo[] = { QUOTE(CN01(side,var1,var2)) };\
-    };\
-};
-
-
-// Base classes in CfgWeapons.hpp
-
-// Parent Version aph6 & svh4
-#define base_class_up vn_b_headgear_base
-#define base_class_dn vn_b_headgear_base
-HELMET_VARIANT(b,aph6,01)
-HELMET_VARIANT(b,svh4,01)
-
-// Child Version aph6
-#undef base_class_up
-#undef base_class_dn
-#define base_class_up CN01(b,aph6,01)
-#define base_class_dn CN02(b,aph6,01)
-
-HELMET_VARIANT(b,aph6,02)
-HELMET_VARIANT(b,aph6,03)
-HELMET_VARIANT(b,aph6,04)
-HELMET_VARIANT(b,aph6,05)
-
-// Child Version svh4
-#undef base_class_up
-#undef base_class_dn
-#define base_class_up CN01(b,svh4,01)
-#define base_class_dn CN02(b,svh4,01)
-
-HELMET_VARIANT(b,svh4,02)
-HELMET_VARIANT(b,svh4,03)
-HELMET_VARIANT(b,svh4,04)
-HELMET_VARIANT(b,svh4,05)
-HELMET_VARIANT(b,svh4,06)
-
-// Special Case zsh3
-class vn_o_helmet_zsh3_01: vn_o_headgear_base {
-    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up) {
-        modifiableTo[] = { "vn_o_helmet_zsh3_02" };
-    }; 
-};
-class vn_o_helmet_zsh3_02: vn_o_helmet_zsh3_01 {
-    class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {
-        modifiableTo[] = { "vn_o_helmet_zsh3_01" };
-    }; 
-};
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 10bc6521da1..c62a7c6f743 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -8,6 +8,11 @@ class className: vn_b_uniform_base {\
     };\
 };
 
+#define MASS(var)\
+class ItemInfo: ItemInfo {\
+    mass = var;\
+};
+
 class CfgWeapons {
     class vn_b_uniform_base;
 
@@ -21,4 +26,64 @@ class CfgWeapons {
     S_70(vn_b_uniform_macv_04_16)
     S_70(vn_b_uniform_macv_04_17)
     S_70(vn_b_uniform_macv_04_18)
-};
\ No newline at end of file
+
+
+    //// US Headgear
+    // Helmets with Combat Goggles
+    class vn_b_helmet_m1_14_01;
+
+    class vn_b_helmet_m1_20_01: vn_b_helmet_m1_14_01 {
+        MASS(12)
+    };
+    class vn_b_helmet_m1_20_02: vn_b_helmet_m1_20_01 {
+        MASS(12)
+    };
+
+    // Crew Helmets with Goggles
+    class vn_b_helmet_t56_01_01;
+    class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
+        MASS(12)
+    };
+
+    class vn_b_helmet_t56_02_02: vn_b_helmet_t56_02_01 {
+        MASS(12)
+    };
+
+    class vn_b_helmet_t56_02_03: vn_b_helmet_t56_02_01 {
+        MASS(12)
+    };
+
+    //// NVA Headgear
+    // NVA Gear usually has the Goggles Version be the parent version of the non-goggle version, meaning we have to "reset" the children to their previous mass.
+    class vn_o_headgear_base;
+    // NVA Pilot Helmet with Goggles
+    class vn_o_helmet_shl61_01: vn_o_headgear_base {
+        MASS(12)
+    };
+    class vn_o_helmet_shl61_02: vn_o_helmet_shl61_01 {
+        MASS(10)
+    };
+
+    // NVA Crew Helmet with Goggles
+    class vn_o_helmet_tsh3_01: vn_o_headgear_base {
+        MASS(12)
+    };
+    class vn_o_helmet_tsh3_02: vn_o_helmet_tsh3_01 {
+        MASS(10)
+    };
+
+    // NVA Pith helmet with Crew Goggles
+    class vn_o_helmet_nva_01;
+    class vn_o_helmet_nva_05: vn_o_helmet_nva_01 {
+        MASS(12)
+    };
+};
+
+
+class CfgGlasses {
+    // VN Pilot Goggles + Mask
+    class vn_glasses_base;
+    class vn_o_acc_goggles_03: vn_glasses_base {
+        mass = 4;
+    };
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
index 5a1967bfd3a..9eadffa1447 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
@@ -3,3 +3,8 @@ The problem is, that the rolled up version are both 1 lb (0.453 kg) lighter and
 
 If we would ignore this, the player would run into situations where they would lose items by simply rolling up their sleeves.
 To counter this, I increased the maxLoad of those items by 1 lb to be aligned with their counterpart.
+
+
+Addition:
+This also adjusts helmets with combat goggles due to a weight discrepancy.
+
diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index d968aa0e4b3..70cbb9feb75 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -38,7 +38,6 @@ class GVAR(base_U_gloves_off): GVAR(base) {
     alternativeDisplayName = CSTRING(glovesOff);
 };
 
-
 // Common Base Class for Uniforms who are open/closed in the front
 class GVAR(base_U_jacket_open): GVAR(base) {
     alternativeDisplayName = CSTRING(jacketOpen); 
@@ -47,7 +46,6 @@ class GVAR(base_U_jacket_closed): GVAR(base) {
     alternativeDisplayName = CSTRING(jacketClose);
 };
 
-
 // Common Base Class for Helmets with a Visor that can be flipped up or down
 class GVAR(base_H_visor_up): GVAR(base) {
     duration = 0.3;
@@ -68,3 +66,14 @@ class GVAR(base_H_visor_down): GVAR(base) {
 
     alternativeDisplayName = CSTRING(visorDown);
 };
+
+// Common Base Class for Headgear with goggles that can be used as a facewear item.
+class GVAR(base_H_goggles_on): GVAR(base) {
+    gesture ="GestureWipeFace";
+    alternativeDisplayName = CSTRING(gogglesOn);
+};
+
+class GVAR(base_H_goggles_off): GVAR(base) {
+    gesture ="GestureWipeFace";
+    alternativeDisplayName = CSTRING(gogglesOff);
+};
\ No newline at end of file
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index f275eb53fe7..cc109411521 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -11,7 +11,8 @@ class CfgPatches {
         requiredVersion = REQUIRED_VERSION;
 
         requiredAddons[] = {
-            "ace_interact_menu"
+            "ace_interact_menu",
+            "ace_goggles"
         };
         skipWhenMissingDependencies = 1;
 
diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index 84f23ebba4e..ceabd45898d 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -46,6 +46,18 @@
             <Key ID="STR_ACE_Wardrobe_visorUp">
                 <English>Visor up</English>
             </Key>
+            <Key ID="STR_ACE_Wardrobe_maskOn">
+                <English>Put mask on</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_maskOff">
+                <English>Take mask off</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_gogglesOn">
+                <English>Put goggles on</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_gogglesOff">
+                <English>Take goggles off</English>
+            </Key>
         </Container>
         <Container name="CBA Context Menu">
             <Key ID="STR_ACE_Wardrobe_cannotSwitchTo">

From 288a9e8e6bcd035be0116ca5a5bdf411af7649a3 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 10:43:48 +0100
Subject: [PATCH 092/139] getMagIDs -> CBA fnc.

---
 addons/wardrobe/XEH_PREP.hpp                  |  1 -
 addons/wardrobe/functions/fnc_getMagIDs.sqf   | 29 -------------------
 .../functions/fnc_replace_uniform.sqf         | 16 +++++-----
 3 files changed, 8 insertions(+), 38 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_getMagIDs.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index e2bc8559567..e050f7c9533 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -2,7 +2,6 @@ PREP(isModifiable);
 PREP(compare_components);
 PREP(canModifyTo);
 // ace_intel
-PREP(getMagIDs);
 PREP(getIndexFromMagID);
 PREP(setIndexForMagID);
 // getItems
diff --git a/addons/wardrobe/functions/fnc_getMagIDs.sqf b/addons/wardrobe/functions/fnc_getMagIDs.sqf
deleted file mode 100644
index a4d1f9af6bf..00000000000
--- a/addons/wardrobe/functions/fnc_getMagIDs.sqf
+++ /dev/null
@@ -1,29 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to return the magazine ID's of certain magazines
- *
- * Arguments:
- * 0: Unit <OBJECT>
- * 1: Classname <STRING>
- *
- * Return Value:
- * Strings of Magazines IDs <ARRAY>
- *
- * Example:
- * [_unit, _className] call ace_wardrobe_fnc_getMagIDs;
- *
- * Public: No
- */
-
-
-params [
-    ["_unit", objNull, [objNull]],
-    ["_className", "", [""]]
-];
-
-if ( _className == "" || { _unit isEqualTo objNull } ) exitWith {};
-
-toFixed 0;
-(magazinesAmmoFull _unit) apply { [_x#0, _x#-2, _x#-1] } select { _x#0 == _className } apply { format ["%1/%2", _x#1,_x#2] }
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_uniform.sqf
index b44f1bba5f8..8b6411074d0 100644
--- a/addons/wardrobe/functions/fnc_replace_uniform.sqf
+++ b/addons/wardrobe/functions/fnc_replace_uniform.sqf
@@ -33,13 +33,13 @@ private _loadout = [_player] call CBA_fnc_getLoadout;
 private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document" } > -1;
 private _hasNotepad =  _magazineDetails findIf { _x#0 == "acex_intelitems_notepad" } > -1;
 private _hasPhoto =    _magazineDetails findIf { _x#0 == "acex_intelitems_photo" } > -1;
-if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document"] call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad"]  call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo"]    call FUNC(getMagIDs) apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document"] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad"]  call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
+if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo"]    call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
 
 // ACE Overheating
 private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
-if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call FUNC(getMagIDs) };
+if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call CBA_fnc_getMagazineIndex };
 
 
 //// Replace Wearable
@@ -58,12 +58,12 @@ switch (_case) do {
 //// Handle Special Cases - Post Replace
 
 // ACE Intel Items
-if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document"] call FUNC(getMagIDs) ); };
-if (_hasNotepad isEqualType [])  then { { [_x, _hasNotepad # _forEachIndex]  call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"]  call FUNC(getMagIDs) ); };
-if (_hasPhoto isEqualType [])    then { { [_x, _hasPhoto # _forEachIndex]    call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"]    call FUNC(getMagIDs) ); };
+if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document"] call CBA_fnc_getMagazineIndex ); };
+if (_hasNotepad isEqualType [])  then { { [_x, _hasNotepad # _forEachIndex]  call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"]  call CBA_fnc_getMagazineIndex ); };
+if (_hasPhoto isEqualType [])    then { { [_x, _hasPhoto # _forEachIndex]    call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"]    call CBA_fnc_getMagazineIndex ); };
 
 // ACE Overheating
 if (_hasSpareBarrel isEqualType [] ) then {
-    private _SpareBarrel_new_MagIDs = [_player, "ACE_SpareBarrel"] call FUNC(getMagIDs);
+    private _SpareBarrel_new_MagIDs = [_player, "ACE_SpareBarrel"] call CBA_fnc_getMagazineIndex;
     [QGVAR(EH_updateMagIDs), [_hasSpareBarrel, _SpareBarrel_new_MagIDs]] call CBA_fnc_serverEvent;
 };

From 9a128e44c7ec1c298eefb0c09e7a9dfb35c4df90 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 10:44:33 +0100
Subject: [PATCH 093/139] added ace intel item

---
 .hemtt/missions/Wardrobe.VR/mission.sqm | 59 +++++++++++++++++++++----
 1 file changed, 51 insertions(+), 8 deletions(-)

diff --git a/.hemtt/missions/Wardrobe.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
index 7898931dbb7..de50d66b569 100644
--- a/.hemtt/missions/Wardrobe.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -8,14 +8,14 @@ class EditorData
 	toggles=517;
 	class ItemIDProvider
 	{
-		nextID=203;
+		nextID=204;
 	};
 	class Camera
 	{
-		pos[]={6.6224675,9.7580004,-22.782627};
-		dir[]={0.80753577,-0.42340663,0.4107419};
-		up[]={0.3774308,0.90591747,0.19197531};
-		aside[]={0.45338005,3.1408854e-07,-0.89136314};
+		pos[]={10.529591,7.5298214,-21.69327};
+		dir[]={0.82719439,-0.34348413,0.44482145};
+		up[]={0.30256075,0.93913782,0.16270162};
+		aside[]={0.47363219,2.9360672e-07,-0.8807708};
 	};
 };
 binarizationWanted=0;
@@ -27,13 +27,14 @@ addons[]=
 	"ace_ballistics",
 	"A3_Characters_F",
 	"A3_Soft_F_Exp_Offroad_02",
-	"A3_Weapons_F_Ammoboxes"
+	"A3_Weapons_F_Ammoboxes",
+	"ace_intelitems"
 };
 class AddonsMetaData
 {
 	class List
 	{
-		items=4;
+		items=5;
 		class Item0
 		{
 			className="A3_Weapons_F";
@@ -62,6 +63,13 @@ class AddonsMetaData
 			author="Bohemia Interactive";
 			url="https://www.arma3.com";
 		};
+		class Item4
+		{
+			className="ace_intelitems";
+			name="ACE3 - Intel Items";
+			author="ACE-Team";
+			url="https://ace3.acemod.org/";
+		};
 	};
 };
 dlcs[]=
@@ -73,6 +81,9 @@ class ScenarioData
 {
 	author="Overlord Zorn";
 };
+class CustomAttributes
+{
+};
 class Mission
 {
 	class Intel
@@ -96,7 +107,7 @@ class Mission
 	};
 	class Entities
 	{
-		items=5;
+		items=6;
 		class Item0
 		{
 			dataType="Object";
@@ -264,5 +275,37 @@ class Mission
 			id=202;
 			type="B_AssaultPack_blk";
 		};
+		class Item5
+		{
+			dataType="Object";
+			class PositionInfo
+			{
+				position[]={17.528999,5.0073819,-17.298};
+			};
+			side="Empty";
+			flags=4;
+			class Attributes
+			{
+			};
+			id=203;
+			type="acex_intelitems_document";
+			class CustomAttributes
+			{
+				class Attribute0
+				{
+					property="ace_intelitems_data";
+					expression="[_this, _value] call ace_intelitems_fnc_setObjectData";
+					class Value
+					{
+						class data
+						{
+							singleType="STRING";
+							value="Funny Bean Toast Man struck again.";
+						};
+					};
+				};
+				nAttributes=1;
+			};
+		};
 	};
 };

From d4f9e2fa8d53ce963663557401db7502135fbf71 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 10:50:55 +0100
Subject: [PATCH 094/139] condense replace functions

---
 addons/wardrobe/XEH_PREP.hpp                  |  5 ++--
 addons/wardrobe/functions/fnc_replace.sqf     | 10 +++----
 ..._uniform.sqf => fnc_replace_container.sqf} |  0
 .../functions/fnc_replace_headgear.sqf        | 27 -------------------
 ...ace_facewear.sqf => fnc_replace_other.sqf} | 15 ++++++++---
 5 files changed, 19 insertions(+), 38 deletions(-)
 rename addons/wardrobe/functions/{fnc_replace_uniform.sqf => fnc_replace_container.sqf} (100%)
 delete mode 100644 addons/wardrobe/functions/fnc_replace_headgear.sqf
 rename addons/wardrobe/functions/{fnc_replace_facewear.sqf => fnc_replace_other.sqf} (52%)

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index e050f7c9533..496773c2e5c 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -11,9 +11,8 @@ PREP(getItems_modifiable_current);
 PREP(getItems_modifiableTo);
 // Replace
 PREP(replace);
-PREP(replace_headgear);
-PREP(replace_facewear);
-PREP(replace_uniform);
+PREP(replace_other);
+PREP(replace_container);
 // Compat
 PREP(spareBarrel_updateMagIDs);
 // Ace Actions
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 9ce16bb7668..b57e6518aaf 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -32,14 +32,14 @@ if (_replaceNow) then { _duration = 0; };
 private _additionalParams = "";
 private _typeNumber = getNumber (_cfg_origin >> "ItemInfo" >> "type");
 private _replaceCode = switch ( _typeNumber ) do {
-    case TYPE_HEADGEAR: {                                 FUNC(replace_headgear) };
-    case TYPE_UNIFORM:  { _additionalParams = "UNIFORM";  FUNC(replace_uniform)  };
-    case TYPE_VEST:     { _additionalParams = "VEST";     FUNC(replace_uniform)  };
-    case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_uniform)  };
+    case TYPE_HEADGEAR: { _additionalParams = "HEADGEAR"; FUNC(replace_other) };
+    case TYPE_UNIFORM:  { _additionalParams = "UNIFORM";  FUNC(replace_container)  };
+    case TYPE_VEST:     { _additionalParams = "VEST";     FUNC(replace_container)  };
+    case TYPE_BACKPACK: { _additionalParams = "BACKPACK"; FUNC(replace_container)  };
     default {
         // CfgGlasses items do not have a ItemInfo Subclass and therefore, not TypeNumber.
         switch (true) do {
-            case (isClass (configFile >> "CfgGlasses" >> configName _cfg_origin)): { FUNC(replace_facewear) };
+            case (isClass (configFile >> "CfgGlasses" >> configName _cfg_origin)): { _additionalParams = "FACEWEAR"; FUNC(replace_other) };
             default { false };
         };
     };
diff --git a/addons/wardrobe/functions/fnc_replace_uniform.sqf b/addons/wardrobe/functions/fnc_replace_container.sqf
similarity index 100%
rename from addons/wardrobe/functions/fnc_replace_uniform.sqf
rename to addons/wardrobe/functions/fnc_replace_container.sqf
diff --git a/addons/wardrobe/functions/fnc_replace_headgear.sqf b/addons/wardrobe/functions/fnc_replace_headgear.sqf
deleted file mode 100644
index 5a3592b61c6..00000000000
--- a/addons/wardrobe/functions/fnc_replace_headgear.sqf
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to replace a persons Headgear/Helmet slot.
- *
- * Arguments:
- * 0: Unit <OBJECT>
- * 1: Current Variant <CONFIG>
- * 2: Desired Variant <CONFIG>
- *
- * Return Value:
- * None
- *
- * Example:
- * [_player, _cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_replace_headgear
- *
- * Public: No
- */
-
-params ["_player", "_cfg_origin", "_cfg_tgt"];
-removeHeadgear _player;
-_player addHeadgear configName _cfg_tgt;
-
-
-
-
diff --git a/addons/wardrobe/functions/fnc_replace_facewear.sqf b/addons/wardrobe/functions/fnc_replace_other.sqf
similarity index 52%
rename from addons/wardrobe/functions/fnc_replace_facewear.sqf
rename to addons/wardrobe/functions/fnc_replace_other.sqf
index 0d6eec65d1b..4d14fb3364b 100644
--- a/addons/wardrobe/functions/fnc_replace_facewear.sqf
+++ b/addons/wardrobe/functions/fnc_replace_other.sqf
@@ -18,6 +18,15 @@
  * Public: No
  */
 
-params ["_player", "_cfg_origin", "_cfg_tgt"];
-removeGoggles _player;
-_player addGoggles configName _cfg_tgt;
+params ["_player", "_cfg_origin", "_cfg_tgt", "_additionalParams"];
+
+switch (_additionalParams) do {
+    case "HEADGEAR": {
+        removeHeadgear _player;
+        _player addHeadgear configName _cfg_tgt;
+    };
+    case "FACEWEAR": {
+        removeGoggles _player;
+        _player addGoggles configName _cfg_tgt;
+    };
+};

From 8b42f502dca97004062b0bfb9111ccfb8bf75563 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 11:49:53 +0100
Subject: [PATCH 095/139] remove func(cache_db)

---
 addons/wardrobe/XEH_PREP.hpp                |  1 -
 addons/wardrobe/XEH_preInit.sqf             |  2 ++
 addons/wardrobe/functions/fnc_cache_db.sqf  | 27 ---------------------
 addons/wardrobe/functions/fnc_cache_get.sqf |  6 ++---
 addons/wardrobe/functions/fnc_cache_set.sqf |  4 +--
 5 files changed, 6 insertions(+), 34 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_cache_db.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index 496773c2e5c..106ba691918 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -22,7 +22,6 @@ PREP(addActions_children);
 PREP(getAction_Name);
 PREP(getAction_Icon);
 // Cache
-PREP(cache_db);
 PREP(cache_get);
 PREP(cache_set);
 PREP(cache_clear);
diff --git a/addons/wardrobe/XEH_preInit.sqf b/addons/wardrobe/XEH_preInit.sqf
index 894773534a4..6d5fd0a42f7 100644
--- a/addons/wardrobe/XEH_preInit.sqf
+++ b/addons/wardrobe/XEH_preInit.sqf
@@ -8,4 +8,6 @@ PREP_RECOMPILE_END;
 
 #include "initSettings.inc.sqf"
 
+missionNamespace setVariable [QGVAR(cache), createHashMap];
+
 ADDON = true;
diff --git a/addons/wardrobe/functions/fnc_cache_db.sqf b/addons/wardrobe/functions/fnc_cache_db.sqf
deleted file mode 100644
index 0945178049c..00000000000
--- a/addons/wardrobe/functions/fnc_cache_db.sqf
+++ /dev/null
@@ -1,27 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to retrieve the Cache Database (Hashmap).
- *
- * Arguments:
- * None
- *
- * Return Value:
- * Cache Database <HASHMAP>
- *
- * Example:
- * [] call ace_wardrobe_fnc_cache_db
- *
- * Public: No
- */
-
-
-private _map = missionNamespace getVariable [QGVAR(cache), "404"];
-
-if (_map isEqualTo "404") then {
-    _map = createHashMap;
-    missionNamespace setVariable [QGVAR(cache), _map];
-};
-
-_map
diff --git a/addons/wardrobe/functions/fnc_cache_get.sqf b/addons/wardrobe/functions/fnc_cache_get.sqf
index 9f43e97094c..ba8d74ae5a4 100644
--- a/addons/wardrobe/functions/fnc_cache_get.sqf
+++ b/addons/wardrobe/functions/fnc_cache_get.sqf
@@ -22,7 +22,7 @@
 params [ [ "_key", "", [""] ], [ "_else", "404", [{}] ] ];
 
 if (_else isEqualTo "404") then {
-    [] call FUNC(cache_db) getOrDefault [_key, "404"];
+    GVAR(cache) getOrDefault [_key, "404"];
 } else {
-    [] call FUNC(cache_db) getOrDefaultCall [_key, _else, true];
-};
+    GVAR(cache) getOrDefaultCall [_key, _else, true];
+};
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fnc_cache_set.sqf b/addons/wardrobe/functions/fnc_cache_set.sqf
index cb10a50a8c3..7640c9d7e3e 100644
--- a/addons/wardrobe/functions/fnc_cache_set.sqf
+++ b/addons/wardrobe/functions/fnc_cache_set.sqf
@@ -21,10 +21,8 @@
 
 params [ ["_key", "", [""] ], ["_value", "404"] ];
 
-private _db = [] call FUNC(cache_db);
-
 if (_value isEqualTo "404") exitWith { false };
 
-_db set [_key, _value];
+GVAR(cache) set [_key, _value];
 
 true

From 178e3be69be60734cea36a52511a44fe09f91c84 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 11:50:44 +0100
Subject: [PATCH 096/139] unused function

---
 addons/wardrobe/XEH_PREP.hpp                  |  1 -
 .../functions/fnc_clearOnClosed_Inventory.sqf | 37 -------------------
 2 files changed, 38 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index 106ba691918..ca5dc579fb3 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -26,7 +26,6 @@ PREP(cache_get);
 PREP(cache_set);
 PREP(cache_clear);
 PREP(clearOnClosed_InteractionMenu);
-PREP(clearOnClosed_Inventory);
 // Config
 PREP(getCfgDataRandom);
 // Debug
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
deleted file mode 100644
index 63ce6cddfc1..00000000000
--- a/addons/wardrobe/functions/fnc_clearOnClosed_Inventory.sqf
+++ /dev/null
@@ -1,37 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to request the clearing of the cache once the Inventory Window gets closed.
- *
- * Arguments:
- * 0: Key <STRING>
- *
- * Return Value:
- * None
- *
- * Example:
- * ["tag_myKeyName"] call ace_wardrobe_fnc_clearOnClosed_Inventory
- *
- * Public: yes
- */
-
-params [ ["_key", "", [""]] ];
-
-private _queue = missionNamespace getVariable [QGVAR(inventory_clear_queue), "404"];
-
-if (_queue isEqualTo "404") then {
-    
-    _queue = [];
-
-    player addEventHandler ["InventoryClosed", {
-        { [_x] call FUNC(cache_clear) } forEach ( missionNamespace getVariable [QGVAR(inventory_clear_queue), [] ] );
-        missionNamespace setVariable [QGVAR(inventory_clear_queue), nil ];
-        player removeEventHandler [_thisEvent, _thisEventhandler];
-    }];
-    missionNamespace setVariable [QGVAR(inventory_clear_queue), _queue];
-};
-
-_queue pushBackUnique _key;
-
-nil

From 5bb2eb7a2457c0abff82b05a90f257ea373151c9 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 11:53:06 +0100
Subject: [PATCH 097/139] macrofied

---
 .../functions/fnc_replace_container.sqf       | 18 ++++++----------
 addons/wardrobe/script_macros_wardrobe.hpp    | 21 ++++++++++++++++++-
 2 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_replace_container.sqf b/addons/wardrobe/functions/fnc_replace_container.sqf
index 8b6411074d0..9de67da85af 100644
--- a/addons/wardrobe/functions/fnc_replace_container.sqf
+++ b/addons/wardrobe/functions/fnc_replace_container.sqf
@@ -21,21 +21,16 @@
 
 params ["_player", "_cfg_origin", "_cfg_tgt", "_case"];
 
-
 toFixed 0;
 private _magazineDetails = (magazinesAmmoFull _player) apply { [_x#0, _x#-2, _x#-1] };
 private _loadout = [_player] call CBA_fnc_getLoadout;
 
 
 //// Handle Special Cases - Pre Replace
-
 // ACE Intel Items
-private _hasDocument = _magazineDetails findIf { _x#0 == "acex_intelitems_document" } > -1;
-private _hasNotepad =  _magazineDetails findIf { _x#0 == "acex_intelitems_notepad" } > -1;
-private _hasPhoto =    _magazineDetails findIf { _x#0 == "acex_intelitems_photo" } > -1;
-if (_hasDocument) then { _hasDocument = [_player, "acex_intelitems_document"] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasNotepad)  then { _hasNotepad  = [_player, "acex_intelitems_notepad"]  call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
-if (_hasPhoto)    then { _hasPhoto    = [_player, "acex_intelitems_photo"]    call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
+INTEL_PRE(_hasDocument,acex_intelitems_document)
+INTEL_PRE(_hasNotepad,acex_intelitems_notepad)
+INTEL_PRE(_hasPhoto,acex_intelitems_photo)
 
 // ACE Overheating
 private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
@@ -56,11 +51,10 @@ switch (_case) do {
 
 
 //// Handle Special Cases - Post Replace
-
 // ACE Intel Items
-if (_hasDocument isEqualType []) then { { [_x, _hasDocument # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_document"] call CBA_fnc_getMagazineIndex ); };
-if (_hasNotepad isEqualType [])  then { { [_x, _hasNotepad # _forEachIndex]  call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_notepad"]  call CBA_fnc_getMagazineIndex ); };
-if (_hasPhoto isEqualType [])    then { { [_x, _hasPhoto # _forEachIndex]    call FUNC(setIndexForMagID); } forEach ( [_player, "acex_intelitems_photo"]    call CBA_fnc_getMagazineIndex ); };
+INTEL_POST(_hasDocument,acex_intelitems_document)
+INTEL_POST(_hasNotepad,acex_intelitems_notepad)
+INTEL_POST(_hasPhoto,acex_intelitems_photo)
 
 // ACE Overheating
 if (_hasSpareBarrel isEqualType [] ) then {
diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
index 75236f0e046..df15fa4f94f 100644
--- a/addons/wardrobe/script_macros_wardrobe.hpp
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -15,4 +15,23 @@
 
 // Paths
 #define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
-#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
\ No newline at end of file
+#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
+
+
+// Config
+
+//// Adjust Weight of CfgWeapons Wearables.
+#define MASS(var)\
+class ItemInfo: ItemInfo {\
+    mass = var;\
+};
+
+
+// REPLACE
+#define INTEL_PRE(varName,className)\
+private varName = _magazineDetails findIf { _x#0 == QUOTE(className) } > -1;\
+if (varName) then { _hasDocument = [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
+
+#define INTEL_POST(varName,className)\
+if (varName isEqualType []) then { { [_x, varName # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex ); };
+

From 95bd7bc739265a5a4dfa763f951cd9ebaaaedaa0 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 11:53:25 +0100
Subject: [PATCH 098/139] fix inheritance

---
 addons/compat_ws/compat_ws_wardrobe/Turbans.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index ff8b091e736..791fc9e2531 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -28,7 +28,7 @@ class CN(04,COLOR): lxWS_H_turban_04_black {\
 
 
 #define COLORGROUP_SPECIAL(COLOR)\
-class CN(02,COLOR): lxWS_H_turban_02_black {\
+class CN(02,COLOR): lxWS_H_turban_02_green {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(03,COLOR) };\
     };\

From b29b601e98b6ed5d9ca1eaeb506430a7b1a0106f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 11:53:52 +0100
Subject: [PATCH 099/139] cleanup

---
 .../Uniforms.hpp                              |  5 --
 .../compat_ws_wardrobe/CfgWardrobe.hpp        | 68 ++++++++++++++++++-
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  | 10 +--
 addons/wardrobe/functions/fnc_replace.sqf     | 14 ++--
 4 files changed, 81 insertions(+), 16 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index c62a7c6f743..9bebdd2e2f3 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -8,11 +8,6 @@ class className: vn_b_uniform_base {\
     };\
 };
 
-#define MASS(var)\
-class ItemInfo: ItemInfo {\
-    mass = var;\
-};
-
 class CfgWeapons {
     class vn_b_uniform_base;
 
diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index c49da34f18a..8ad96b2bfc2 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -1,6 +1,21 @@
 class EGVAR(wardrobe,base);
+class EGVAR(wardrobe,base_H_goggles_on);
+class EGVAR(wardrobe,base_H_goggles_off);
+
+
+
+class CfgGlasses {
+    class G_Combat;
+    class G_Combat_lxWS: G_Combat {
+        class ace_wardrobe: EGVAR(wardrobe,base) {
+            components[] = {"G_Combat_lxWS"};
+        };
+    };
+};
 
 class CfgWeapons {
+    #include "Turbans.hpp"
+
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
     class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk {
@@ -14,5 +29,56 @@ class CfgWeapons {
         };
     };
 
-    #include "Turbans.hpp"
+    // Helmets
+    class HelmetBase;
+    class H_PASGT_basic_base_F;
+
+    //// RF Helmets with Glasses
+    class lxWS_H_PASGT_goggles_UN_F: HelmetBase {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+            modifiableTo[] = { "lxWS_H_PASGT_basic_UN_F" };
+            components[] = {"G_Combat_lxWS"};
+        };
+    };  
+    class lxWS_H_PASGT_goggles_black_F: lxWS_H_PASGT_goggles_UN_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+            modifiableTo[] = { "H_PASGT_basic_black_F" };
+            components[] = {"G_Combat_lxWS"};
+        };
+    };  
+    class lxWS_H_PASGT_goggles_olive_F: lxWS_H_PASGT_goggles_UN_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+            modifiableTo[] = { "H_PASGT_basic_olive_F" };
+            components[] = {"G_Combat_lxWS"};
+        };
+    };  
+    class lxWS_H_PASGT_goggles_white_F: lxWS_H_PASGT_goggles_UN_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
+            modifiableTo[] = { "H_PASGT_basic_white_F" };
+            components[] = {"G_Combat_lxWS"};
+        };
+    };  
+
+    // Without
+    class lxWS_H_PASGT_basic_UN_F: HelmetBase {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+            modifiableTo[] = { "lxWS_H_PASGT_goggles_UN_F" };
+        };
+    };
+    class H_PASGT_basic_black_F: H_PASGT_basic_base_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+            modifiableTo[] = { "lxWS_H_PASGT_goggles_black_F" };
+        };
+    };
+    class H_PASGT_basic_olive_F: H_PASGT_basic_base_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+            modifiableTo[] = { "lxWS_H_PASGT_goggles_olive_F" };
+        };
+    };
+    class H_PASGT_basic_white_F: H_PASGT_basic_base_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
+            modifiableTo[] = { "lxWS_H_PASGT_goggles_white_F" };
+        };
+    };
 };
+
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 791fc9e2531..1d9129d2062 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -89,28 +89,28 @@ class H_turban_02_mask_snake_lxws: H_turban_02_mask_black_lxws {
         components[] = {"H_bmask_snake_lxws"};
     };
 };
-class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws    {
+class H_turban_02_mask_hex_lxws: H_turban_02_mask_black_lxws {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws" };
         components[] = {"lxWS_H_bmask_hex"};
     };
 };
-class lxWS_H_turban_01_sand: lxWS_H_turban_01_black             {
+class lxWS_H_turban_01_sand: lxWS_H_turban_01_black {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(02,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
-class lxWS_H_turban_02_sand: lxWS_H_turban_02_black             {
+class lxWS_H_turban_02_sand: lxWS_H_turban_02_black {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(03,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
-class lxWS_H_turban_03_sand: lxWS_H_turban_03_black             {
+class lxWS_H_turban_03_sand: lxWS_H_turban_03_black {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(04,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
 };
-class lxWS_H_turban_04_sand: lxWS_H_turban_04_black             {
+class lxWS_H_turban_04_sand: lxWS_H_turban_04_black {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,sand), QCN(02,sand), QCN(03,sand), "H_turban_02_mask_snake_lxws", "H_turban_02_mask_hex_lxws" };
     };
diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index b57e6518aaf..5982d30236b 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -46,8 +46,7 @@ private _replaceCode = switch ( _typeNumber ) do {
 };
 
 if (_replaceCode isEqualType false) exitWith { ERROR_2("typeNumber undefined: %1 - %2",_typeNumber,configName _cfg_origin); };
-
-[ _replaceCode, [_unit, _cfg_origin, _cfg_tgt, _additionalParams ], _duration * 1.0 ] call CBA_fnc_waitAndExecute;
+[ _replaceCode, [_unit, _cfg_origin, _cfg_tgt, _additionalParams ], _duration] call CBA_fnc_waitAndExecute;
 
 //// Handle Components
 // Add Surplus
@@ -79,13 +78,18 @@ if (_replaceCode isEqualType false) exitWith { ERROR_2("typeNumber undefined: %1
 [ _unit, getText (_cfg_tgt >> QADDON >> "gesture") ] call ace_common_fnc_doGesture;
 
 // Plays Random Sound At the Beginning
-private _sound_timing = getNumber (_cfg_tgt>> QADDON >> "sound_timing") max 0 min 1;
 private _sound = [_cfg_tgt >> QADDON >> "sound"] call FUNC(getCfgDataRandom);
-if (_sound != "") then { [ CBA_fnc_globalEvent, [QGVAR(EH_say3d), [_unit, _sound]], _sound_timing * _duration ] call CBA_fnc_waitAndExecute; };
+if (_sound != "") then {
+    [
+        CBA_fnc_globalEvent,
+        [QGVAR(EH_say3d), [_unit,_sound]],
+        (getNumber (_cfg_tgt>> QADDON >> "sound_timing") max 0 min 1) * _duration
+    ] call CBA_fnc_waitAndExecute;
+};
 
 // Notification
 private _notify_img = getText (_cfg_tgt >> "picture");
 if !(".paa" in _notify_img) then { _notify_img = [_notify_img,"paa"] joinString "." };
-[ CBA_fnc_notify,      [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ],   _duration * 1.2 ] call CBA_fnc_waitAndExecute;
+[ CBA_fnc_notify, [[ _notify_img, 4], [getText (_cfg_tgt >> "displayName")], true ], _duration * 1.2 ] call CBA_fnc_waitAndExecute;
 
 nil

From 55183349acc6aa8b2a944b1815882791f803ef60 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 12:09:12 +0100
Subject: [PATCH 100/139] cleanup

---
 addons/wardrobe/XEH_PREP.hpp                  |  1 -
 addons/wardrobe/functions/fnc_addActions.sqf  | 21 ++++--------
 .../functions/fnc_addActions_children.sqf     | 22 ++++---------
 .../functions/fnc_addCM_nextvariant.sqf       | 32 -------------------
 .../functions/fnc_compare_components.sqf      | 13 +++++---
 .../fnc_compare_container_maxLoad.sqf         |  2 +-
 .../functions/fnc_enable_contextMenu.sqf      | 16 +++++++++-
 .../functions/fnc_getIndexFromMagID.sqf       |  4 +--
 .../functions/fnc_setIndexForMagID.sqf        |  2 +-
 9 files changed, 42 insertions(+), 71 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_addCM_nextvariant.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index ca5dc579fb3..cd8aec06557 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -33,6 +33,5 @@ PREP(getAllWardrobeItems);
 PREP(compare_container_maxLoad);
 // CBA Context Menu
 PREP(enable_contextMenu);
-PREP(addCM_nextvariant);
 PREP(do_nextVariant);
 PREP(getNextVariant);
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fnc_addActions.sqf b/addons/wardrobe/functions/fnc_addActions.sqf
index e31913e9208..3f781a81423 100644
--- a/addons/wardrobe/functions/fnc_addActions.sqf
+++ b/addons/wardrobe/functions/fnc_addActions.sqf
@@ -24,21 +24,14 @@ private _modifiableItems = [_unit] call FUNC(getItems_modifiable_current);
 private _actions = [];
 {
     private _cfg = _x#0;
-    private _className = configName _cfg;
-    private _params = [_cfg, _x#1];
-
     private _aceAction = [
-        _className                              // * 0: Action name <STRING>
-        ,getText (_cfg >> "displayName")        //  * 1: Name of the action shown in the menu <STRING>
-        ,getText (_cfg >> "picture")            //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
-        ,{}                                     //  * 3: Statement <CODE>
-        ,{true}                                 //  * 4: Condition <CODE>
-        ,FUNC(addActions_children)              //  * 5: Insert children code <CODE> (Optional)
-        ,_params                                //  * 6: Action parameters <ANY> (Optional)
-    //    ,[0,0,0]                              //  * 7: Position (Position array, Position code or Selection Name) <ARRAY>, <CODE> or <STRING> (Optional)
-    //    ,20                                   //  * 8: Distance <NUMBER> (Optional)
-    //    ,[false,false,false,false,false]      //  * 9: Other parameters [showDisabled,enableInside,canCollapse,runOnHover,doNotCheckLOS] <ARRAY> (Optional)
-    //    ,{}                                   //  * 10: Modifier function <CODE> (Optional)
+        configName _cfg,
+        getText (_cfg >> "displayName"),
+        getText (_cfg >> "picture"),
+        {},
+        {true},
+        FUNC(addActions_children),
+        [_cfg, _x#1]
     ] call ace_interact_menu_fnc_createAction;
     _actions pushBack [_aceAction, [], _target];
 
diff --git a/addons/wardrobe/functions/fnc_addActions_children.sqf b/addons/wardrobe/functions/fnc_addActions_children.sqf
index 5da634b9fd8..3f40fed0097 100644
--- a/addons/wardrobe/functions/fnc_addActions_children.sqf
+++ b/addons/wardrobe/functions/fnc_addActions_children.sqf
@@ -28,22 +28,14 @@ private _actions = [];
 
 {
     private _cfg_target = _x;
-    private _className_target = configName _cfg_target;
-
-    private _params = [_cfg_origin, _cfg_target];
-
     private _aceAction = [
-        _className_target                           //  * 0: Action name <STRING>
-        ,[_cfg_target] call FUNC(getAction_Name)    //  * 1: Name of the action shown in the menu <STRING>
-        ,[_cfg_target] call FUNC(getAction_Icon)    //  * 2: Icon <STRING> "\A3\ui_f\data\igui\cfg\simpleTasks\types\backpack_ca.paa"
-        ,FUNC(replace)                          //  * 3: Statement <CODE>
-        ,{true}                                 //  * 4: Condition <CODE>
-        ,{}                                     //  * 5: Insert children code <CODE> (Optional)
-        ,_params                                //  * 6: Action parameters <ANY> (Optional)
-    //    ,[0,0,0]                              //  * 7: Position (Position array, Position code or Selection Name) <ARRAY>, <CODE> or <STRING> (Optional)
-    //    ,20                                   //  * 8: Distance <NUMBER> (Optional)
-    //    ,[false,false,false,false,false]      //  * 9: Other parameters [showDisabled,enableInside,canCollapse,runOnHover,doNotCheckLOS] <ARRAY> (Optional)
-    //    ,{}                                   //  * 10: Modifier function <CODE> (Optional)
+        configName _cfg_target,
+        [_cfg_target] call FUNC(getAction_Name),
+        [_cfg_target] call FUNC(getAction_Icon),
+        FUNC(replace),
+        {true},
+        {},
+        [_cfg_origin, _cfg_target]
     ] call ace_interact_menu_fnc_createAction;
     _actions pushBack [_aceAction, [], _target];
 
diff --git a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf b/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
deleted file mode 100644
index 62ceb2dacf0..00000000000
--- a/addons/wardrobe/functions/fnc_addCM_nextvariant.sqf
+++ /dev/null
@@ -1,32 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to create the CBA ContextMenu Option to switch to the (randomly choosen) next Variant of the current Version.
- *
- * Arguments:
- * None
- *
- * Return Value:
- * None
- *
- * Example:
- * [] call ace_wardrobe_fnc_addCM_nextvariant
- *
- * Public: No
- */
-
-[
-    "#ALL",                                     // filter items
-    "CLOTHES",                                  // filter slots
-    "Switch to next Variant",                   // Display Name
-    [],                                         // Color
-    QPATHTOF(data\wardrobe_logo.paa),    // Icon
-    [
-        {true},                                 // Condition Enable action
-        {true}                                  // Condition Show Action
-    ],
-    FUNC(do_nextVariant),                       // statement
-    false,                                      // consume Item
-    []                                          // Params
-] call CBA_fnc_addItemContextMenuOption;
diff --git a/addons/wardrobe/functions/fnc_compare_components.sqf b/addons/wardrobe/functions/fnc_compare_components.sqf
index 184b5c3a34a..6271f1ffbc4 100644
--- a/addons/wardrobe/functions/fnc_compare_components.sqf
+++ b/addons/wardrobe/functions/fnc_compare_components.sqf
@@ -10,8 +10,8 @@
  *
  * Return Value:
  * Nested array <ARRAY>
- * - Array of configs of missing components
- * - Array of configs of surplus components
+ * - configs of missing components <ARRAY>
+ * - configs of surplus components <ARRAY>
  *
  * Example:
  * [_cfg_origin, _cfg_tgt] call ace_wardrobe_fnc_compare_components
@@ -26,7 +26,12 @@ private _needed  = getArray (_cfg_tgt    >> "ace_wardrobe" >> "components");
 
 private _missing = []; 
 
-{ if (_x in _current) then { _current = _current - [_x] } else { _missing pushBack _x }; } forEach _needed;
+{
+    if (_x in _current) then {
+        _current = _current - [_x]
+    } else {
+        _missing pushBack _x
+    };
+} forEach _needed;
 
-//[[missing components], [surplus components]]
 [_missing, _current]
diff --git a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
index c818edfdf6e..65c5d988dff 100644
--- a/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
+++ b/addons/wardrobe/functions/fnc_compare_container_maxLoad.sqf
@@ -2,7 +2,7 @@
 
 /*
  * Author: OverlordZorn
- * This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
+ * WIP - This function will compare the maxLoad of all modifiable Items with its modifiableTo Variants and will provide an RPT output.
  *
  * Arguments:
  * None
diff --git a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
index 67f2d7f6221..87410477159 100644
--- a/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
+++ b/addons/wardrobe/functions/fnc_enable_contextMenu.sqf
@@ -21,5 +21,19 @@ params [["_enable", true, [true]]];
 
 if (_enable && {!(missionNamespace getVariable [QGVAR(contextmenu_enabled), false])}) then {
     missionNamespace setVariable [QGVAR(contextmenu_enabled), true];
-    [] call FUNC(addCM_nextvariant);
+
+    [
+        "#ALL",
+        "CLOTHES",
+        "Switch to next Variant",
+        [],
+        QPATHTOF(data\wardrobe_logo.paa),
+        [
+            {true},
+            {true}
+        ],
+        FUNC(do_nextVariant),
+        false,
+        []
+    ] call CBA_fnc_addItemContextMenuOption;
 };
diff --git a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
index 20aca66709d..16a1b6e8d6f 100644
--- a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
+++ b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
@@ -20,6 +20,6 @@ params [
     ["_magazineID", "", [""] ]
 ];
 
-if !(_magazineID in allVariables ace_intelItems_intelMap) exitWith { -1 };
+if !(_magazineID in allVariables EGVAR(intelItems,intelMap)) exitWith { -1 };
 
-ace_intelItems_intelMap getVariable _magazineID
+EGVAR(intelItems,intelMap) getVariable _magazineID
diff --git a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
index a63a8690aff..187076ad39e 100644
--- a/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
+++ b/addons/wardrobe/functions/fnc_setIndexForMagID.sqf
@@ -24,4 +24,4 @@ params [
 
 if (_index == -1) exitWith {};
 
-ace_intelItems_intelMap setVariable [_magID, _index, true];
+EGVAR(intelItems,intelMap) setVariable [_magID, _index, true];

From e3b1aa04958de1e55adc296ff3e6103356d56434 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 14:35:30 +0100
Subject: [PATCH 101/139] remove fnc_db_clear

---
 addons/wardrobe/functions/fnc_cache_clear.sqf | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
index 8f6bd0b7133..ea00e831012 100644
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ b/addons/wardrobe/functions/fnc_cache_clear.sqf
@@ -19,6 +19,4 @@
 params [ ["_key", "", [""]] ];
 
 private _map = missionNamespace getVariable [QGVAR(cache), "404"];
-_map deleteAt _key;
-
-if (count _map == 0) then { missionNamespace setVariable [QGVAR(cache),nil] };
+_map deleteAt _key;
\ No newline at end of file

From 42e97af825a36b8e7e8190175336f294decad724 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 14:56:51 +0100
Subject: [PATCH 102/139] reduce fnc clear cache

---
 addons/wardrobe/XEH_PREP.hpp                  |  1 -
 addons/wardrobe/functions/fnc_cache_clear.sqf | 22 -------------------
 .../fnc_clearOnClosed_InteractionMenu.sqf     |  2 +-
 3 files changed, 1 insertion(+), 24 deletions(-)
 delete mode 100644 addons/wardrobe/functions/fnc_cache_clear.sqf

diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index cd8aec06557..d3277cea11f 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -24,7 +24,6 @@ PREP(getAction_Icon);
 // Cache
 PREP(cache_get);
 PREP(cache_set);
-PREP(cache_clear);
 PREP(clearOnClosed_InteractionMenu);
 // Config
 PREP(getCfgDataRandom);
diff --git a/addons/wardrobe/functions/fnc_cache_clear.sqf b/addons/wardrobe/functions/fnc_cache_clear.sqf
deleted file mode 100644
index ea00e831012..00000000000
--- a/addons/wardrobe/functions/fnc_cache_clear.sqf
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "../script_component.hpp"
-
-/*
- * Author: OverlordZorn
- * Function to clear an entry from the  cache-database.
- *
- * Arguments:
- * 0: Key <STRING>
- *
- * Return Value:
- * None
- *
- * Example:
- * ["myKey"] call ace_wardrobe_fnc_cache_clear
- *
- * Public: Yes
- */
-
-params [ ["_key", "", [""]] ];
-
-private _map = missionNamespace getVariable [QGVAR(cache), "404"];
-_map deleteAt _key;
\ No newline at end of file
diff --git a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
index e795c710f0d..f7e54eef1cf 100644
--- a/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
+++ b/addons/wardrobe/functions/fnc_clearOnClosed_InteractionMenu.sqf
@@ -27,7 +27,7 @@ if (_queue isEqualTo "404") then {
         {
             if (_this isNotEqualTo [1]) exitWith {};
 
-            { [_x] call FUNC(cache_clear) } forEach ( missionNamespace getVariable [QGVAR(menu_clear_queue), [] ] );
+            { GVAR(cache) deleteAt _x } forEach ( missionNamespace getVariable [QGVAR(menu_clear_queue), [] ] );
 
             missionNamespace setVariable [QGVAR(menu_clear_queue), nil ];
             [_thisType, _thisId] call CBA_fnc_removeEventHandler;

From 62553d9bea7bd00bc70aaf38a99c6a1b360d3044 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 15:57:28 +0100
Subject: [PATCH 103/139] ws compats - helmets

---
 .../compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp  | 15 ++++++++++++++-
 addons/compat_ws/compat_ws_wardrobe/Turbans.hpp   |  3 +++
 2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 8ad96b2bfc2..65562da4807 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -13,7 +13,17 @@ class CfgGlasses {
     };
 };
 
+
+
+
+
 class CfgWeapons {
+
+    class ItemCore;
+    class HelmetBase: ItemCore {
+        class ItemInfo;
+    };
+
     #include "Turbans.hpp"
 
     // Cap (Ion) Forward and Reversed
@@ -30,29 +40,32 @@ class CfgWeapons {
     };
 
     // Helmets
-    class HelmetBase;
     class H_PASGT_basic_base_F;
 
     //// RF Helmets with Glasses
     class lxWS_H_PASGT_goggles_UN_F: HelmetBase {
+        MASS(32)
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "lxWS_H_PASGT_basic_UN_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_black_F: lxWS_H_PASGT_goggles_UN_F {
+        MASS(32)
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_black_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_olive_F: lxWS_H_PASGT_goggles_UN_F {
+        MASS(32)
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_olive_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_white_F: lxWS_H_PASGT_goggles_UN_F {
+        MASS(32)
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_white_F" };
             components[] = {"G_Combat_lxWS"};
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 1d9129d2062..a1f41839dd2 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -47,6 +47,9 @@ class H_turban_02_mask_black_lxws: H_Shemag_khk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) };
         components[] = { "lxWS_H_bmask_base" };
+        ItemInfo: ItemInfo {
+            mass = 26;
+        };
     };
 };
 class lxWS_H_turban_01_black: H_Shemag_khk {

From cfce465bf088024aee9c861e55bfbedf521da7d5 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 15:57:44 +0100
Subject: [PATCH 104/139] # in macro -> select

---
 addons/wardrobe/script_macros_wardrobe.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
index df15fa4f94f..238c4a0429d 100644
--- a/addons/wardrobe/script_macros_wardrobe.hpp
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -29,9 +29,9 @@ class ItemInfo: ItemInfo {\
 
 // REPLACE
 #define INTEL_PRE(varName,className)\
-private varName = _magazineDetails findIf { _x#0 == QUOTE(className) } > -1;\
+private varName = _magazineDetails findIf { _x select 0 == QUOTE(className) } > -1;\
 if (varName) then { _hasDocument = [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
 
 #define INTEL_POST(varName,className)\
-if (varName isEqualType []) then { { [_x, varName # _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex ); };
+if (varName isEqualType []) then { { [_x, varName select _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex ); };
 

From 89119906094b1a9e11ebac29e8f9785e456f0f7e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 16:02:01 +0100
Subject: [PATCH 105/139] missing "class"

---
 addons/compat_ws/compat_ws_wardrobe/Turbans.hpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index a1f41839dd2..10dc9cd888b 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -47,7 +47,7 @@ class H_turban_02_mask_black_lxws: H_Shemag_khk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) };
         components[] = { "lxWS_H_bmask_base" };
-        ItemInfo: ItemInfo {
+        class ItemInfo: ItemInfo {
             mass = 26;
         };
     };

From 3a22a5c84a7b0b9700a73c2f7631d193b11552c8 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 16:06:23 +0100
Subject: [PATCH 106/139] Finetuning

---
 addons/wardrobe/Baseclass.hpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 70cbb9feb75..48ee0d77db2 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -48,7 +48,7 @@ class GVAR(base_U_jacket_closed): GVAR(base) {
 
 // Common Base Class for Helmets with a Visor that can be flipped up or down
 class GVAR(base_H_visor_up): GVAR(base) {
-    duration = 0.3;
+    duration = 0.25;
     gesture ="gestureNod";
 
     sound[] = {CN_SOUND(helmet_visor,05)};
@@ -58,7 +58,7 @@ class GVAR(base_H_visor_up): GVAR(base) {
 };
 
 class GVAR(base_H_visor_down): GVAR(base) {
-    duration = 0.3;
+    duration = 0.25;
     gesture ="gestureNod";
 
     sound[] = {CN_SOUND(helmet_visor,05)};

From fc2858dbc9a35ce35b2b2902df77cd308b2c46ab Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 18:51:09 +0100
Subject: [PATCH 107/139] added zeus module

---
 .hemtt/missions/Wardrobe.VR/mission.sqm | 113 +++++++++++++++++++++---
 1 file changed, 101 insertions(+), 12 deletions(-)

diff --git a/.hemtt/missions/Wardrobe.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
index de50d66b569..4744bbac503 100644
--- a/.hemtt/missions/Wardrobe.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -8,14 +8,14 @@ class EditorData
 	toggles=517;
 	class ItemIDProvider
 	{
-		nextID=204;
+		nextID=205;
 	};
 	class Camera
 	{
-		pos[]={10.529591,7.5298214,-21.69327};
-		dir[]={0.82719439,-0.34348413,0.44482145};
-		up[]={0.30256075,0.93913782,0.16270162};
-		aside[]={0.47363219,2.9360672e-07,-0.8807708};
+		pos[]={10.750697,7.5298214,-16.120056};
+		dir[]={0.78896397,-0.42873386,-0.44013983};
+		up[]={0.37441224,0.90343088,-0.20887361};
+		aside[]={-0.48718709,-1.4901161e-08,-0.87329757};
 	};
 };
 binarizationWanted=0;
@@ -26,15 +26,18 @@ addons[]=
 	"ace_realisticnames",
 	"ace_ballistics",
 	"A3_Characters_F",
+	"gm_characters_ge_characters",
+	"ace_compat_gm_wardrobe",
 	"A3_Soft_F_Exp_Offroad_02",
 	"A3_Weapons_F_Ammoboxes",
-	"ace_intelitems"
+	"ace_intelitems",
+	"A3_Modules_F_Curator_Curator"
 };
 class AddonsMetaData
 {
 	class List
 	{
-		items=5;
+		items=8;
 		class Item0
 		{
 			className="A3_Weapons_F";
@@ -57,23 +60,45 @@ class AddonsMetaData
 			url="https://ace3.acemod.org/";
 		};
 		class Item3
+		{
+			className="gm_characters_ge_characters";
+			name="gm_characters_ge_characters";
+			author="Global Mobilization";
+			url="global-mobilization.com";
+		};
+		class Item4
+		{
+			className="ace_compat_gm";
+			name="ACE3 - GM Compatibility";
+			author="ACE-Team";
+			url="https://ace3.acemod.org/";
+		};
+		class Item5
 		{
 			className="A3_Soft_F_Exp";
 			name="Arma 3 Apex - Unarmored Land Vehicles";
 			author="Bohemia Interactive";
 			url="https://www.arma3.com";
 		};
-		class Item4
+		class Item6
 		{
 			className="ace_intelitems";
 			name="ACE3 - Intel Items";
 			author="ACE-Team";
 			url="https://ace3.acemod.org/";
 		};
+		class Item7
+		{
+			className="A3_Modules_F_Curator";
+			name="Arma 3 Zeus Update - Scripted Modules";
+			author="Bohemia Interactive";
+			url="https://www.arma3.com";
+		};
 	};
 };
 dlcs[]=
 {
+	"gm",
 	"Expansion"
 };
 randomSeed=4540948;
@@ -81,9 +106,6 @@ class ScenarioData
 {
 	author="Overlord Zorn";
 };
-class CustomAttributes
-{
-};
 class Mission
 {
 	class Intel
@@ -107,7 +129,7 @@ class Mission
 	};
 	class Entities
 	{
-		items=6;
+		items=7;
 		class Item0
 		{
 			dataType="Object";
@@ -307,5 +329,72 @@ class Mission
 				nAttributes=1;
 			};
 		};
+		class Item6
+		{
+			dataType="Logic";
+			class PositionInfo
+			{
+				position[]={26,5,-20};
+				angles[]={0,4.6137218,0};
+			};
+			id=204;
+			type="ModuleCurator_F";
+			class CustomAttributes
+			{
+				class Attribute0
+				{
+					property="ModuleCurator_F_Owner";
+					expression="_this setVariable ['Owner',_value,true];";
+					class Value
+					{
+						class data
+						{
+							singleType="STRING";
+							value="";
+						};
+					};
+				};
+				class Attribute1
+				{
+					property="ModuleCurator_F_Forced";
+					expression="_this setVariable ['Forced',_value,true];";
+					class Value
+					{
+						class data
+						{
+							singleType="SCALAR";
+							value=0;
+						};
+					};
+				};
+				class Attribute2
+				{
+					property="ModuleCurator_F_Name";
+					expression="_this setVariable ['Name',_value,true];";
+					class Value
+					{
+						class data
+						{
+							singleType="STRING";
+							value="";
+						};
+					};
+				};
+				class Attribute3
+				{
+					property="ModuleCurator_F_Addons";
+					expression="_this setVariable ['Addons',_value,true];";
+					class Value
+					{
+						class data
+						{
+							singleType="SCALAR";
+							value=2;
+						};
+					};
+				};
+				nAttributes=4;
+			};
+		};
 	};
 };

From f260f7970095b679d631bd894118d5558e33c62e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 18:51:31 +0100
Subject: [PATCH 108/139] moar GM Compats

---
 .../compat_gm_wardrobe/CfgWardrobe.hpp        |  3 +
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  | 94 ++++++++++++++++++-
 2 files changed, 96 insertions(+), 1 deletion(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
index f8bd616392a..10c8f8d2da7 100644
--- a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
@@ -10,6 +10,9 @@ class EGVAR(wardrobe,base_U_sleeves_down);
 class EGVAR(wardrobe,base_U_gloves_on);
 class EGVAR(wardrobe,base_U_gloves_off);
 
+class EGVAR(wardrobe,base_H_goggles_on);
+class EGVAR(wardrobe,base_H_goggles_off);
+
 class CfgWeapons {
     #include "Helmets.hpp"
     #include "Uniforms.hpp"
diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index 36d42efd33c..7773741253a 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -35,4 +35,96 @@ class gm_ge_headgear_psh77_up_oli: gm_ge_headgear_psh77_up_base {
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up)   { 
         modifiableTo[] = { "gm_ge_headgear_psh77_down_oli" };
     };
-};
\ No newline at end of file
+};
+
+#define GM_Helmet_Glasses(classWith,classWithout,baseWith,baseWithout,goggles)\
+class classWith: baseWith {\
+    class ace_wardrobe : EGVAR(wardrobe,base_H_goggles_on) {\
+        modifiableTo[] = { QUOTE(classWithout) };\
+        components[] = { QUOTE(goggles) };\
+    };\
+    MASS(11)\
+};\
+class classWithout: baseWithout {\
+    class ace_wardrobe : EGVAR(wardrobe,base_H_goggles_off) {\
+        modifiableTo[] = { QUOTE(classWith) };\
+    };\
+};
+
+
+class gm_ge_headgear_m92_base;
+class gm_ge_headgear_m92_cover_base;
+
+class gm_ge_headgear_m92_glasses_base: gm_ge_headgear_m92_base {
+    class ItemInfo;
+};
+
+class gm_ge_headgear_m92_cover_glasses_base: gm_ge_headgear_m92_base {
+    class ItemInfo;
+};
+
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_win,gm_ge_headgear_m92_cover_win,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_oli,gm_ge_headgear_m92_cover_oli,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_blk,gm_ge_headgear_m92_cover_blk,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
+
+GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_trp,gm_ge_headgear_m92_trp,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses)
+GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_flk,gm_ge_headgear_m92_flk,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses)
+
+
+class gm_headgear_armored_base;
+class gm_ge_headgear_m38_72_base;
+class gm_ge_headgear_m38_72_goggles_base: gm_headgear_armored_base {
+    class ItemInfo;
+};
+GM_Helmet_Glasses(gm_ge_bgs_headgear_m38_72_goggles_bgr,gm_ge_bgs_headgear_m38_72_bgr,gm_ge_headgear_m38_72_goggles_base,gm_ge_headgear_m38_72_base,gm_ge_facewear_acidgoggles)
+
+// Caps with M62 Helmets
+// Base Classes
+class gm_ge_headgear_hat_base;
+
+class gm_ge_headgear_hat_80_base: gm_ge_headgear_hat_base {
+    class ItemInfo;
+};
+class gm_ge_headgear_sidecap_base;
+class gm_ge_headgear_sidecap_80_base: gm_ge_headgear_sidecap_base {
+    class ItemInfo;
+};
+
+// Helmet Only
+class gm_ge_headgear_m62_base;
+class gm_ge_headgear_m62_net: gm_ge_headgear_m62_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = {"gm_ge_headgear_hgm_ge_headgear_sidecap_80_m62_oliat_80_oli", "gm_ge_headgear_hat_80_m62_oli"};
+        components[] = {"gm_ge_headgear_m62_net"};
+    };
+};
+
+// Hats only
+class gm_ge_headgear_hat_80_oli: gm_ge_headgear_hat_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = {"gm_ge_headgear_hat_80_m62_oli"};
+        components[] = {"gm_ge_headgear_hat_80_oli"};
+    };
+};
+class gm_ge_headgear_sidecap_80_oli: gm_ge_headgear_sidecap_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = {"gm_ge_headgear_sidecap_80_m62_oli"};
+        components[] = {"gm_ge_headgear_sidecap_80_oli"};
+    };
+};
+
+// Hats + Helmets
+class gm_ge_headgear_hat_80_m62_oli: gm_ge_headgear_hat_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
+        components[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
+    };
+    MASS(20)
+};
+class gm_ge_headgear_sidecap_80_m62_oli: gm_ge_headgear_sidecap_80_base {
+    class ace_wardrobe : EGVAR(wardrobe,base) {
+        modifiableTo[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
+        components[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
+    };
+    MASS(20)
+};

From 39cca808dd40f43bac431d09328ffea947ce683c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 18:52:29 +0100
Subject: [PATCH 109/139] ln sort

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

diff --git a/addons/wardrobe/stringtable.xml b/addons/wardrobe/stringtable.xml
index ceabd45898d..98c59311ddc 100644
--- a/addons/wardrobe/stringtable.xml
+++ b/addons/wardrobe/stringtable.xml
@@ -28,12 +28,24 @@
             <Key ID="STR_ACE_Wardrobe_glovesOn">
                 <English>Wear gloves</English>
             </Key>
+            <Key ID="STR_ACE_Wardrobe_gogglesOff">
+                <English>Take goggles off</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_gogglesOn">
+                <English>Put goggles on</English>
+            </Key>
             <Key ID="STR_ACE_Wardrobe_jacketClose">
                 <English>Close Jacket</English>
             </Key>
             <Key ID="STR_ACE_Wardrobe_jacketOpen">
                 <English>Open Jacket</English>
             </Key>
+            <Key ID="STR_ACE_Wardrobe_maskOff">
+                <English>Take mask off</English>
+            </Key>
+            <Key ID="STR_ACE_Wardrobe_maskOn">
+                <English>Put mask on</English>
+            </Key>
             <Key ID="STR_ACE_Wardrobe_sleevesDown">
                 <English>Roll sleeves down</English>
             </Key>
@@ -46,18 +58,6 @@
             <Key ID="STR_ACE_Wardrobe_visorUp">
                 <English>Visor up</English>
             </Key>
-            <Key ID="STR_ACE_Wardrobe_maskOn">
-                <English>Put mask on</English>
-            </Key>
-            <Key ID="STR_ACE_Wardrobe_maskOff">
-                <English>Take mask off</English>
-            </Key>
-            <Key ID="STR_ACE_Wardrobe_gogglesOn">
-                <English>Put goggles on</English>
-            </Key>
-            <Key ID="STR_ACE_Wardrobe_gogglesOff">
-                <English>Take goggles off</English>
-            </Key>
         </Container>
         <Container name="CBA Context Menu">
             <Key ID="STR_ACE_Wardrobe_cannotSwitchTo">
@@ -68,4 +68,4 @@
             </Key>
         </Container>
     </Package>
-</Project>
\ No newline at end of file
+</Project>

From 68e0d519f4a2f061d87cec762b097bfa1bdc543c Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 19:16:36 +0100
Subject: [PATCH 110/139] fix mask turban mass config

---
 addons/compat_ws/compat_ws_wardrobe/Turbans.hpp | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 10dc9cd888b..48a23d42864 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -42,16 +42,18 @@ class CN(03,COLOR): lxWS_H_turban_03_black {\
 
 // BASECLASS
 class H_Shemag_khk;
+class HeadgearItem;
 
 class H_turban_02_mask_black_lxws: H_Shemag_khk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(01,black), QCN(02,black), QCN(03,black), QCN(04,black) };
         components[] = { "lxWS_H_bmask_base" };
-        class ItemInfo: ItemInfo {
-            mass = 26;
-        };
+    };
+    class ItemInfo: HeadgearItem {
+        mass = 26;
     };
 };
+
 class lxWS_H_turban_01_black: H_Shemag_khk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = { QCN(02,black), QCN(03,black), QCN(04,black), "H_turban_02_mask_black_lxws" };

From ae85d156f1589bdb24c7f5902128d83dd6e33579 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 19:59:18 +0100
Subject: [PATCH 111/139] fix base inheritances

---
 .../compat_sog_wardrobe/Booniehats.hpp        | 47 ++++++++++++-------
 .../Uniforms.hpp                              | 32 ++++++++++---
 2 files changed, 55 insertions(+), 24 deletions(-)

diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 4bffac40e10..14626adbeb6 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -8,6 +8,7 @@
 // 01 green 02 tiger 03 black 04 spray 05 tiger green 06 erdl brown 07 leopard 08 erdl
 // 09 gray <- Fuck this - inheritance is fucking horrible as fuck.
 
+
 // Macros
 #define CN(variation,color) vn_b_boonie_##variation##_##color
 #define QCN(variation,color) QUOTE(CN(variation,color))
@@ -78,22 +79,34 @@ CN_COLORS(05)
 // Base classes in CfgWeapons.hpp
 // 06-08 anzac
 
-#define BOONIE_ANZAC(VAR)\
-class CN(06,VAR): CN(02,01) {\
-    class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { QCN(07,VAR), QCN(08,VAR) };\
-    };\
-};\
-class CN(07,VAR): CN(06,VAR) {\
-    class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { QCN(06,VAR), QCN(08,VAR) };\
-    };\
-};\
-class CN(08,VAR): CN(06,VAR) {\
-    class ace_wardrobe: EGVAR(wardrobe,base) {\
-        modifiableTo[] = { QCN(06,VAR), QCN(07,VAR) };\
-    };\
+class CN(06,01): CN(02,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(07,01), QCN(08,01) };
+    };
+};
+class CN(07,01): CN(06,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(06,VAR), QCN(08,01) };
+    };
+};
+class CN(08,01): CN(06,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(06,01), QCN(07,01) };
+    };
 };
 
-BOONIE_ANZAC(01)
-BOONIE_ANZAC(02)
\ No newline at end of file
+class CN(06,02): CN(06,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(07,02), QCN(08,02) };
+    };
+};
+class CN(07,02): CN(06,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(06,02), QCN(08,02) };
+    };
+};
+class CN(08,02): CN(06,01) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
+        modifiableTo[] = { QCN(06,02), QCN(07,02) };
+    };
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 9bebdd2e2f3..99f7e28cb5e 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -1,5 +1,3 @@
-class ItemInfo;
-
 #define S_70(className)\
 class className: vn_b_uniform_base {\
     class ItemInfo: ItemInfo {\
@@ -9,7 +7,10 @@ class className: vn_b_uniform_base {\
 };
 
 class CfgWeapons {
-    class vn_b_uniform_base;
+	class Uniform_Base;
+	class vn_b_uniform_base: Uniform_Base {
+		class ItemInfo;
+	};
 
     S_70(vn_b_uniform_macv_04_01)
     S_70(vn_b_uniform_macv_04_02)
@@ -25,7 +26,10 @@ class CfgWeapons {
 
     //// US Headgear
     // Helmets with Combat Goggles
-    class vn_b_helmet_m1_14_01;
+    class vn_b_helmet_m1_01_01;
+	class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
+		class ItemInfo;
+	};
 
     class vn_b_helmet_m1_20_01: vn_b_helmet_m1_14_01 {
         MASS(12)
@@ -34,8 +38,12 @@ class CfgWeapons {
         MASS(12)
     };
 
+
     // Crew Helmets with Goggles
-    class vn_b_helmet_t56_01_01;
+    class vn_b_headgear_base;
+	class vn_b_helmet_t56_01_01: vn_b_headgear_base {
+		class ItemInfo;
+	};
     class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
         MASS(12)
     };
@@ -49,8 +57,14 @@ class CfgWeapons {
     };
 
     //// NVA Headgear
+
+
+
     // NVA Gear usually has the Goggles Version be the parent version of the non-goggle version, meaning we have to "reset" the children to their previous mass.
-    class vn_o_headgear_base;
+    class H_Booniehat_khk;
+	class vn_o_headgear_base: H_Booniehat_khk {
+		class ItemInfo;
+	};
     // NVA Pilot Helmet with Goggles
     class vn_o_helmet_shl61_01: vn_o_headgear_base {
         MASS(12)
@@ -67,8 +81,12 @@ class CfgWeapons {
         MASS(10)
     };
 
+
+
     // NVA Pith helmet with Crew Goggles
-    class vn_o_helmet_nva_01;
+	class vn_o_helmet_nva_01: vn_o_headgear_base {
+		class ItemInfo;
+	};
     class vn_o_helmet_nva_05: vn_o_helmet_nva_01 {
         MASS(12)
     };

From 0abd442ff328a0936b2b3d09a68b1da3e511de33 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 20:06:14 +0100
Subject: [PATCH 112/139] fix validation errors config

---
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  | 14 ++++----
 .../compat_rf_wardrobe/CfgWardrobe.hpp        | 12 +++++--
 .../Uniforms.hpp                              | 32 +++++++++----------
 3 files changed, 33 insertions(+), 25 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index 7773741253a..f65a423cb91 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -39,14 +39,14 @@ class gm_ge_headgear_psh77_up_oli: gm_ge_headgear_psh77_up_base {
 
 #define GM_Helmet_Glasses(classWith,classWithout,baseWith,baseWithout,goggles)\
 class classWith: baseWith {\
-    class ace_wardrobe : EGVAR(wardrobe,base_H_goggles_on) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {\
         modifiableTo[] = { QUOTE(classWithout) };\
         components[] = { QUOTE(goggles) };\
     };\
     MASS(11)\
 };\
 class classWithout: baseWithout {\
-    class ace_wardrobe : EGVAR(wardrobe,base_H_goggles_off) {\
+    class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {\
         modifiableTo[] = { QUOTE(classWith) };\
     };\
 };
@@ -93,7 +93,7 @@ class gm_ge_headgear_sidecap_80_base: gm_ge_headgear_sidecap_base {
 // Helmet Only
 class gm_ge_headgear_m62_base;
 class gm_ge_headgear_m62_net: gm_ge_headgear_m62_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_hgm_ge_headgear_sidecap_80_m62_oliat_80_oli", "gm_ge_headgear_hat_80_m62_oli"};
         components[] = {"gm_ge_headgear_m62_net"};
     };
@@ -101,13 +101,13 @@ class gm_ge_headgear_m62_net: gm_ge_headgear_m62_base {
 
 // Hats only
 class gm_ge_headgear_hat_80_oli: gm_ge_headgear_hat_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_hat_80_m62_oli"};
         components[] = {"gm_ge_headgear_hat_80_oli"};
     };
 };
 class gm_ge_headgear_sidecap_80_oli: gm_ge_headgear_sidecap_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_sidecap_80_m62_oli"};
         components[] = {"gm_ge_headgear_sidecap_80_oli"};
     };
@@ -115,14 +115,14 @@ class gm_ge_headgear_sidecap_80_oli: gm_ge_headgear_sidecap_80_base {
 
 // Hats + Helmets
 class gm_ge_headgear_hat_80_m62_oli: gm_ge_headgear_hat_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
         components[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
     };
     MASS(20)
 };
 class gm_ge_headgear_sidecap_80_m62_oli: gm_ge_headgear_sidecap_80_base {
-    class ace_wardrobe : EGVAR(wardrobe,base) {
+    class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
         components[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
     };
diff --git a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
index 1989d2e2ab8..fb1bac1fc20 100644
--- a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
@@ -14,8 +14,16 @@ class CfgWeapons
 
     // Cap (Ion) Forward and Reversed
     class lxWS_H_CapB_rvs_blk;
-    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk       { class ace_wardrobe: EGVAR(wardrobe,base) { modifiableTo[] = { "H_Cap_headphones_ion_lxws" }; }; };
-    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION { class ace_wardrobe: EGVAR(wardrobe,base) { modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   }; }; };    
+    class lxWS_H_CapB_rvs_blk_ION: lxWS_H_CapB_rvs_blk {
+        class ace_wardrobe: EGVAR(wardrobe,base) {
+            modifiableTo[] = { "H_Cap_headphones_ion_lxws" };
+        };
+    };
+    class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION {
+        class ace_wardrobe: EGVAR(wardrobe,base) {
+            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   };
+        };
+    };    
 };
 
 
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index 99f7e28cb5e..f7aa497ff4a 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -7,10 +7,10 @@ class className: vn_b_uniform_base {\
 };
 
 class CfgWeapons {
-	class Uniform_Base;
-	class vn_b_uniform_base: Uniform_Base {
-		class ItemInfo;
-	};
+    class Uniform_Base;
+    class vn_b_uniform_base: Uniform_Base {
+        class ItemInfo;
+    };
 
     S_70(vn_b_uniform_macv_04_01)
     S_70(vn_b_uniform_macv_04_02)
@@ -27,9 +27,9 @@ class CfgWeapons {
     //// US Headgear
     // Helmets with Combat Goggles
     class vn_b_helmet_m1_01_01;
-	class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
-		class ItemInfo;
-	};
+    class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
+        class ItemInfo;
+    };
 
     class vn_b_helmet_m1_20_01: vn_b_helmet_m1_14_01 {
         MASS(12)
@@ -41,9 +41,9 @@ class CfgWeapons {
 
     // Crew Helmets with Goggles
     class vn_b_headgear_base;
-	class vn_b_helmet_t56_01_01: vn_b_headgear_base {
-		class ItemInfo;
-	};
+    class vn_b_helmet_t56_01_01: vn_b_headgear_base {
+        class ItemInfo;
+    };
     class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
         MASS(12)
     };
@@ -62,9 +62,9 @@ class CfgWeapons {
 
     // NVA Gear usually has the Goggles Version be the parent version of the non-goggle version, meaning we have to "reset" the children to their previous mass.
     class H_Booniehat_khk;
-	class vn_o_headgear_base: H_Booniehat_khk {
-		class ItemInfo;
-	};
+    class vn_o_headgear_base: H_Booniehat_khk {
+        class ItemInfo;
+    };
     // NVA Pilot Helmet with Goggles
     class vn_o_helmet_shl61_01: vn_o_headgear_base {
         MASS(12)
@@ -84,9 +84,9 @@ class CfgWeapons {
 
 
     // NVA Pith helmet with Crew Goggles
-	class vn_o_helmet_nva_01: vn_o_headgear_base {
-		class ItemInfo;
-	};
+    class vn_o_helmet_nva_01: vn_o_headgear_base {
+        class ItemInfo;
+    };
     class vn_o_helmet_nva_05: vn_o_helmet_nva_01 {
         MASS(12)
     };

From a8a6526c97d676ac414a72bb6046383c70b270fe Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 22:00:22 +0100
Subject: [PATCH 113/139] Update mission.sqm

---
 .hemtt/missions/Wardrobe.VR/mission.sqm | 23 +++--------------------
 1 file changed, 3 insertions(+), 20 deletions(-)

diff --git a/.hemtt/missions/Wardrobe.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
index 4744bbac503..1010aff970d 100644
--- a/.hemtt/missions/Wardrobe.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -26,8 +26,6 @@ addons[]=
 	"ace_realisticnames",
 	"ace_ballistics",
 	"A3_Characters_F",
-	"gm_characters_ge_characters",
-	"ace_compat_gm_wardrobe",
 	"A3_Soft_F_Exp_Offroad_02",
 	"A3_Weapons_F_Ammoboxes",
 	"ace_intelitems",
@@ -37,7 +35,7 @@ class AddonsMetaData
 {
 	class List
 	{
-		items=8;
+		items=6;
 		class Item0
 		{
 			className="A3_Weapons_F";
@@ -60,34 +58,20 @@ class AddonsMetaData
 			url="https://ace3.acemod.org/";
 		};
 		class Item3
-		{
-			className="gm_characters_ge_characters";
-			name="gm_characters_ge_characters";
-			author="Global Mobilization";
-			url="global-mobilization.com";
-		};
-		class Item4
-		{
-			className="ace_compat_gm";
-			name="ACE3 - GM Compatibility";
-			author="ACE-Team";
-			url="https://ace3.acemod.org/";
-		};
-		class Item5
 		{
 			className="A3_Soft_F_Exp";
 			name="Arma 3 Apex - Unarmored Land Vehicles";
 			author="Bohemia Interactive";
 			url="https://www.arma3.com";
 		};
-		class Item6
+		class Item4
 		{
 			className="ace_intelitems";
 			name="ACE3 - Intel Items";
 			author="ACE-Team";
 			url="https://ace3.acemod.org/";
 		};
-		class Item7
+		class Item5
 		{
 			className="A3_Modules_F_Curator";
 			name="Arma 3 Zeus Update - Scripted Modules";
@@ -98,7 +82,6 @@ class AddonsMetaData
 };
 dlcs[]=
 {
-	"gm",
 	"Expansion"
 };
 randomSeed=4540948;

From 8f11e7b4e744a14fde68ce10e2100393502bd64e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Mon, 6 Jan 2025 22:01:50 +0100
Subject: [PATCH 114/139] Update launch.toml

---
 .hemtt/launch.toml | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index da7fee53370..5ce20c06f0f 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -37,7 +37,7 @@ workshop = [
 ]
 
 [Wardrobe]
-extends = "default"
+extends = "rhs"
 workshop = [
     "2369477168", # Advanced Developer Tools
     "1779063631", # ZEN
@@ -46,6 +46,7 @@ workshop = [
 mission = "Wardrobe.VR"
 dlc = [
 #    "Western Sahara",    
-#    "Reaction Forces"    
-#    "S.O.G. Prairie Fire"
+#    "Reaction Forces", 
+#    "S.O.G. Prairie Fire",
+#    "gm"
 ]
\ No newline at end of file

From 883e21ca9397e49430f00c48954efd478c49b213 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Tue, 7 Jan 2025 01:01:53 +0100
Subject: [PATCH 115/139] fixes

---
 addons/wardrobe/Baseclass.hpp | 2 +-
 addons/wardrobe/Facewear.hpp  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 48ee0d77db2..42d951adda5 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -30,7 +30,7 @@ class GVAR(base_U_sleeves_down): GVAR(base) {
     alternativeDisplayName = CSTRING(sleevesDown);
 };
 
-// Common Base Class for Uniforms with Sleeves Up/Down Variants
+// Common Base Class for Uniforms with Gloves On/Off Variants
 class GVAR(base_U_gloves_on): GVAR(base) {
     alternativeDisplayName = CSTRING(glovesOn); 
 };
diff --git a/addons/wardrobe/Facewear.hpp b/addons/wardrobe/Facewear.hpp
index bd6369769fd..75f4a68de40 100644
--- a/addons/wardrobe/Facewear.hpp
+++ b/addons/wardrobe/Facewear.hpp
@@ -84,7 +84,7 @@ class G_Balaclava_TI_G_tna_F: G_Balaclava_TI_tna_F {
 // Bandana, Black
 class G_Bandanna_blk: G_Balaclava_blk {
     class ace_wardrobe: EGVAR(wardrobe,base) {
-        modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_aviator" };
+        modifiableTo[] = { "G_Bandanna_aviator", "G_Bandanna_sport", "G_Bandanna_shades" };
         components[] = { "G_Bandanna_blk" };
     };
 };

From eab28a7c76c563b6aca13423db879f84cd05084f Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Tue, 7 Jan 2025 01:02:25 +0100
Subject: [PATCH 116/139] Update wardrobe-framework.md

---
 docs/wiki/framework/wardrobe-framework.md | 293 ++++++++++++++++------
 1 file changed, 223 insertions(+), 70 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 4f7d31b2e2a..7c5cb5541f1 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -8,131 +8,284 @@ parent: wiki
 mod: ace
 version:
   major: 3
-  minor: 18
-  patch: 2
+  minor: 20
+  patch: 0
 ---
 
 
 ## 1. Overview
 
-## 2. Config
-
-- Only directly defined Subclasses will be taken into account. A fully inherited subclass will be ignored and will not provide an Interaction.
-
-## 2.1 Properties
+The Wardrobe Addon gives the player the opportunity to change/modify their current wearables into different variants of these.
 
-### 2.2 Base Classes
-
-#### 2.2.1 Base
+For example, if a uniform has a normal variant and a "Rolled-Up Sleeves" variant, the player will be able to use ether an ACE Self Interaction or utilize the CBA Context Menu in their Inventory.
 
-#### 2.2.2 Base Uniform Sleeves Up / Down
+Since there is no common pattern in terms of class inheritence, not even within the same DLC, each possbile variant has to be defined within the classes config properties.
 
-#### 2.2.3 Base Uniform Gloves On / Off
+### 1.1 Components
 
-#### 2.2.4 Base Uniform Jacket Open / Closed
+Components are an optional assistance to define a group of variants where one or more variants have components that are merged into another.
+For example, Western Saharah comes with turbans in different variations. Those can be interchanged to and from each other without any restriction. But there are also the the variants which utilize the balistic facemasks. In this case, the balistic facemask would be defined as a component and the turban with the the facemask would also be defined having the ballistic facemask as a component.
 
-#### 2.2.4 Base Helmet Visor Up / Down
+If the player switches from the variant with the mask to a turban variant without a mask, the mask, being a component that is no longer needed, will be deposited into the players inventory (or on the floor when full) and the turban will be changed in to the desired variant.
 
+More examples can be found below.
 
-## 3. Examples
+### 1.2 Config Guidelines
 
-### 3.1 Linear Example
+- An Container (Uniform, Vest, Backpack) should never change its maxLoad, unless there is a really good reason for it. This will result in the loss of items.
+- Variants should never "magically" add/remove parts of themselves, unless its handled through a component.
+- There should not be a difference in weight between the different variants unless compoents get added/removed.
+  - For Example: `Mass of Helmet with Goggles = Mass of Helmet + Mass of Goggles.`
 
-### 3.2 Advanced Example (Components)
+## 2. Config
 
+Only directly defined Subclasses will be taken into account. A fully inherited subclass will be ignored and will not provide any interaction. The ace_wardrobe properties are to be found as a subclass of the item itself. Multiple base configs are designed at root of `configFile`.
 
-## 4. Sounds
+## 2.1 Properties
 
 
+| Class Property |  Data Type | Description |
+| -------------- |  ----------- | ----------- |
+| modifiableTo[] | Array of Classnames | possible Variants this item can be turned into. |
+| components[] | Array of Classnames  | Components the current variant contains within itself | 
+| sound[]  | Array of CfgSound Entries | to be chosen by random when the action is performed |
+| sound_timing | Number 0..1 | defines the point time relative to the duration when the sound is played |
+| gesture | String of Classname | Gesture to be played when the action is performed |
+| alternativePicture | String of path to icon | to be used instead of target variant picture |
+| alternativeDisplayName | String | Will be used instead of the target variants displayname |
+| duration | Number in seconds | Duration of action. Items are being replaced at the end. |
 
-### 4.1 Integrated Sounds
+### 2.2 Base Classes
 
+#### 2.2.1 Base
 
+```cpp
+// root of configFile
+class ace_wardrobe_base {
 
+    modifiableTo[] = {""};
 
+    components[] = {};
 
+    // Supports Multiple Sounds, will pick one by random.
+    sound[] = { "ace_wardrobe_fabric_06", "ace_wardrobe_fabric_07", "ace_wardrobe_fabric_16", "ace_wardrobe_fabric_20", "ace_wardrobe_fabric_25"};
+    sound_timing = 0;    // [0..1] 0 at the start of the action, 0.5 half way during the duration of the action - always, if completed or not. 1 at the end, only when completed.
 
+    // Gesture
+    gesture = "Gear";
 
-<!--- WIP - Formatting Examples below ~~~
+    // These will be read from the Target Class, so for example, the uniformclass with the rolled up sleaves, it should say "Roll Up Sleeves"
+    alternativePicture = "";
+    alternativeDisplayName = "";
 
+    duration = 1; // Minimum Value: 1 - Anything above will produce a progressbar.
+};
 
-### 1.1 Adding a tag
+```
 
+#### 2.2.2 Base Uniform Sleeves Up / Down
+Common Base Class for Uniforms with Sleeves Up/Down Variants
 ```cpp
-class ACE_Tags {
-    class yourTagClass {
-        displayName = "My Tag";  // Name of your tag being displayed in the interaction menu
-        requiredItem = "ACE_SpraypaintBlack";  // Required item to have in the inventory to be able to spray your tag (eg. `"ACE_SpraypaintBlack"`, `"ACE_SpraypaintRed"`, `"ACE_SpraypaintGreen"`, `"ACE_SpraypaintBlue"` or any custom item from `CfgWeapons`)
-        textures[] = {"path\to\texture1.paa", "path\to\texture2.paa"};  // List of texture variations (one is randomly selected when tagging)
-        materials[] = {"path\to\material.rvmat"}; // Optional: List of material variations (one is randomly selected). Keep empty if you don't need a custom material.
-        icon = "path\to\icon.paa";  // Icon being displayed in the interaction menu
-        tagModel = "UserTexture1m_F"; // Optional: The 3D Model that will be spawned with the texture on it, can either be CfgVehicles classname or P3D file path.
-    };
+class ace_wardrobe_base_U_sleeves_up: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(sleevesUp);  
+};
+class ace_wardrobe_base_U_sleeves_down: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(sleevesDown);
+};
+```
+#### 2.2.3 Base Uniform Gloves On / Off
+Common Base Class for Uniforms with Gloves On/Off Variants
+```cpp
+class ace_wardrobe_base_U_gloves_on: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(glovesOn); 
+};
+class ace_wardrobe_base_U_gloves_off: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(glovesOff);
+};
+```
+#### 2.2.4  Base Uniform Jacket Open / Closed
+Common Base Class for Uniforms who are open/closed in the front
+```cpp
+class ace_wardrobe_base_U_jacket_open: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(jacketOpen); 
+};
+class ace_wardrobe_base_U_jacket_closed: ace_wardrobe_base {
+    alternativeDisplayName = CSTRING(jacketClose);
 };
 ```
 
+#### 2.2.5 Base Helmet Visor Up / Down
+Common Base Class for Helmets with a Visor that can be flipped up or down.
+Here, the duration is carefully timed to be aligned with the "click" of the soun.
 
-## 2. Scripting
-
-### 2.1 Adding a tag
+```cpp
+class ace_wardrobe_base_H_visor_up: ace_wardrobe_base {
+    duration = 0.25;
+    gesture ="gestureNod";
 
-`ace_tagging_fnc_addCustomTag`
+    sound[] = {CN_SOUND(helmet_visor,05)};
+    sound_timing = 0;
 
-|    | Arguments | Type | Optional (default value) |
-| ---| --------- | ---- | ------------------------ |
-| 0  | Unique Identifier | String | Required |
-| 1  | Display Name | String | Required |
-| 2  | Required Item | String | Required |
-| 3  | Textures | Array | Required |
-| 4  | Icon | String | Optional (default: `""` - Default white point) |
-| 5  | Material Paths | Array | Optional (default: `[]` - No custom material) |
-| 6  | Tag Model | String | Optional (default: `"UserTexture1m_F"` - 1x1m texture surface) |
-| **R** | Successfully Added Tag | Boolean | Return value |
+    alternativeDisplayName = CSTRING(visorUp);
+};
 
-#### 2.1.1 Example
+class ace_wardrobe_base_H_visor_down: ace_wardrobe_base {
+    duration = 0.25;
+    gesture ="gestureNod";
 
-`["ace_victoryRed", "Victory Red", "ACE_SpraypaintRed", ["tagTexture1.paa", "tagTexture2.paa"], "icon.paa"] call ace_tagging_fnc_addCustomTag;`
+    sound[] = {"ace_wardrobe_05"};
+    sound_timing = 0;
 
-|    | Arguments | Explanation |
-| ---| --------- | ----------- |
-| 0  | `"ace_victoryRed"` | Unique identifier (similar to class name) |
-| 1  | `"Victory Red"` | Name of your tag being displayed in the interaction menu |
-| 2  | `"ACE_SpraypaintRed"` | Required item to have in the inventory to be able to spray your tag |
-| 3  | `["tagTexture1.paa", "tagTexture2.paa"]` | List of texture variants (one is randomly selected when tagging) |
-| 4  | `"icon.paa"` | Icon being displayed in the interaction menu |
+    alternativeDisplayName = CSTRING(visorDown);
+};
+```
+#### 2.2.6 Base Headgear with Goggles on / off
+Common Base Class for Headgear with goggles that can be used as a facewear item.
+```cpp
+class ace_wardrobe_base_H_goggles_on: ace_wardrobe_base {
+    gesture ="GestureWipeFace";
+    alternativeDisplayName = CSTRING(gogglesOn);
+};
 
+class ace_wardrobe_base_H_goggles_off: ace_wardrobe_base {
+    gesture ="GestureWipeFace";
+    alternativeDisplayName = CSTRING(gogglesOff);
+};
+```
 
-### 2.2 Tags in description.ext
 
-Tags can also be configured in `description.ext` like shown above.
-File Paths will be relative to your mission, if you want to define Tags inside `description.ext` but use Addon paths for `Texture`/`Material`/`TagModel` you need to prefix the path with `@`.
+## 3. Examples
 
-This is how above config would look when using Addon paths from description.ext:
+### 3.1 Linear Example
 
+- first, we import the wardrobe base classes `ace_wardrobe_base_U_sleeves_down` and `ace_wardrobe_base_U_sleeves_up` at the root of `configFile`.
+- The uniform we would like to configure is part of CfgWeapons and inherits from `Uniform_Base`.
+- Then we edit the desired classes and create the `ace_wardrobe` subclass by inheriting from the partent base classes.
+- Afterwards, we define which variants this class can be modified to.
+- This Example does not require the use of components since we're not adding or removing anything.
 ```cpp
-class ACE_Tags {
-    class yourTagClass {
-        displayName = "My Tag";  // Name of your tag being displayed in the interaction menu
-        requiredItem = "ACE_SpraypaintBlack";  // Required item to have in the inventory to be able to spray your tag (eg. `"ACE_SpraypaintBlack"`, `"ACE_SpraypaintRed"`, `"ACE_SpraypaintGreen"`, `"ACE_SpraypaintBlue"` or any custom item from `CfgWeapons`)
-        textures[] = {"@path\to\texture1.paa", "@path\to\texture2.paa"};  // List of texture variations (one is randomly selected when tagging)
-        materials[] = {"@path\to\material.rvmat"}; // Optional: List of material variations (one is randomly selected). Keep empty if you don't need a custom material.
-        icon = "@path\to\icon.paa";  // Icon being displayed in the interaction menu
-        tagModel = "UserTexture1m_F"; // Optional: The 3D Model that will be spawned with the texture on it, can either be CfgVehicles classname or P3D file path.
+// config.cpp
+class ace_wardrobe_base_U_sleeves_down;
+class ace_wardrobe_base_U_sleeves_up;
+
+class CfgWeapons {
+    class Uniform_Base;
+
+    // Sleeves Down Variant
+    class U_B_CTRG_1: Uniform_Base {
+        class ace_wardrobe: ace_wardrobe_base_U_sleeves_down {
+            modifiableTo[] = { "U_B_CTRG_3" };
+            components[] = {};
+        };
+    };
+
+    // Sleeves Up Variant
+    class U_B_CTRG_3: Uniform_Base {
+        class ace_wardrobe: ace_wardrobe_base_U_sleeves_up {
+            modifiableTo[] = { "U_B_CTRG_1" };
+            components[] = {};
+        };
     };
 };
 ```
+### 3.2 Complex Example with partial use of components
 
 
+```cpp
+// config.cpp
+class ace_wardrobe_base;
+
+class CfgWeapons {
+    // BASECLASS
+    class H_Shemag_khk;
+    
+    // WS Turban with Balistic Mask
+    class H_turban_02_mask_black_lxws: H_Shemag_khk {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black" };
+            components[] = { "lxWS_H_bmask_base" };
+        };
+    };
+    // WS Turban Variant 1
+    class lxWS_H_turban_01_black: H_Shemag_khk {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
+            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+        };
+    };
+    // WS Turban Variant 2
+    class lxWS_H_turban_02_black: lxWS_H_turban_01_black {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
+            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+        };
+    };
+    // WS Turban Variant 3
+    class lxWS_H_turban_03_black: lxWS_H_turban_01_black {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
+            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+        };
+    };
+    // WS Turban Variant 4
+    class lxWS_H_turban_04_black: lxWS_H_turban_01_black {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "H_turban_02_mask_black_lxws" };
+            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+        };
+    };
+};
 
+```
 
 
+### 3.3 Complex Example with thorough use of components
 
+```cpp
+// config.cpp
+class ace_wardrobe_base;
+
+class CfgGlasses {
+    class None;
+    class G_Balaclava_blk;
+    class G_Bandanna_shades;
+
+    // Aviator Sunglasses
+    class G_Aviator: None {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "G_Bandanna_aviator" };
+            components[] = {"G_Aviator"};
+        };
+    };
+    // Bandana, Black with Aviator Sunglasses
+    class G_Bandanna_aviator: G_Bandanna_shades {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "G_Bandanna_blk", "G_Aviator" };       
+            components[] = { "G_Bandanna_blk", "G_Aviator" };
+        };
+    };
+    // Bandana, Black
+    class G_Bandanna_blk: G_Balaclava_blk {
+        class ace_wardrobe: ace_wardrobe_base {
+            modifiableTo[] = { "G_Bandanna_aviator" };
+            components[] = { "G_Bandanna_blk" };
+        };
+    };
+};
+```
 
+## 4. Sounds
+
+The following CfgSounds classes are integrated in ace_wardrobe and are the default sounds for the `ace_wardrobe_base` and `ace_wardrobe_base_H_visor_up`/`ace_wardrobe_base_H_visor_down` base classes.
 
+### 4.1 Integrated Sounds
 
-<div class="panel callout">
-    <h5>Note:</h5>
-    <p>This is just a guide to add tags using the framework. This is not a guide to make your own spray objects.</p>
-</div>
+The number at the end of the classnames indicates the length of the file in 1/10th seconds.
+10 -> 1 sec, 15 -> 1.5sec, ...
 
---!>
\ No newline at end of file
+- `ace_wardrobe_fabric_06`
+- `ace_wardrobe_fabric_07`
+- `ace_wardrobe_fabric_16`
+- `ace_wardrobe_fabric_20`
+- `ace_wardrobe_fabric_25`
+- `ace_wardrobe_helmet_visor_05`
\ No newline at end of file

From afbb63e20775cfc2d975aab0fd8c7ae4a2fbf8fa Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Tue, 7 Jan 2025 02:03:20 +0100
Subject: [PATCH 117/139] revision docs

---
 docs/wiki/framework/wardrobe-framework.md | 27 +++++++++++++++--------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 7c5cb5541f1..0ad7cd88932 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -15,18 +15,18 @@ version:
 
 ## 1. Overview
 
-The Wardrobe Addon gives the player the opportunity to change/modify their current wearables into different variants of these.
+The Wardrobe Addon gives the player the opportunity to change/modify their current wearables into different variants.
 
-For example, if a uniform has a normal variant and a "Rolled-Up Sleeves" variant, the player will be able to use ether an ACE Self Interaction or utilize the CBA Context Menu in their Inventory.
+For example, if a uniform has a normal variant and a "Rolled-Up Sleeves" variant, the player will be able to use ether an ACE Self Interaction or the CBA Context Menu in the Inventory.
 
-Since there is no common pattern in terms of class inheritence, not even within the same DLC, each possbile variant has to be defined within the classes config properties.
+Since there is no reliable, common pattern in terms of class inheritence, not even within the same DLC, each possbile variant has to be defined individually within the classes config properties.
 
 ### 1.1 Components
 
-Components are an optional assistance to define a group of variants where one or more variants have components that are merged into another.
-For example, Western Saharah comes with turbans in different variations. Those can be interchanged to and from each other without any restriction. But there are also the the variants which utilize the balistic facemasks. In this case, the balistic facemask would be defined as a component and the turban with the the facemask would also be defined having the ballistic facemask as a component.
+Components are an optional assistance to define a group of variants where a variant is made of one or more components.
+For example, a bandanna with sunglasses would have the the bandanna and the sunglasses as components, while the bandanna and sunglasses themself only have themselves as a component.
 
-If the player switches from the variant with the mask to a turban variant without a mask, the mask, being a component that is no longer needed, will be deposited into the players inventory (or on the floor when full) and the turban will be changed in to the desired variant.
+If the player switches from a variant with more components to a variant with less components, the surplus components will be deposited in their inventory. Vise Versa, if the player wants to change from a variant with less components to a variant with more components, they are required to have the missing components in their inventory, which will be removed on conversion.
 
 More examples can be found below.
 
@@ -274,11 +274,15 @@ class CfgGlasses {
 };
 ```
 
-## 4. Sounds
+## 4. Addon Settings
+
+
+
+## 5. Sounds
 
 The following CfgSounds classes are integrated in ace_wardrobe and are the default sounds for the `ace_wardrobe_base` and `ace_wardrobe_base_H_visor_up`/`ace_wardrobe_base_H_visor_down` base classes.
 
-### 4.1 Integrated Sounds
+### 5.1 Integrated Sounds
 
 The number at the end of the classnames indicates the length of the file in 1/10th seconds.
 10 -> 1 sec, 15 -> 1.5sec, ...
@@ -288,4 +292,9 @@ The number at the end of the classnames indicates the length of the file in 1/10
 - `ace_wardrobe_fabric_16`
 - `ace_wardrobe_fabric_20`
 - `ace_wardrobe_fabric_25`
-- `ace_wardrobe_helmet_visor_05`
\ No newline at end of file
+- `ace_wardrobe_helmet_visor_05`
+
+## 6. Compatibility
+Currently, ace_IntelItems and ace_overheating (spare barrels) are being directly supported.
+
+If an addon or mod utilizes a magazines magazineID to handle additional data about an items carried by the player, then the process of modifying a wearable container (uniform, vest, backpack) to another variant will result in new magazineIDs for all magazines on the player.

From ea825087b459af38f1e4b7943d6d6a4dae75d083 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Wed, 8 Jan 2025 18:18:03 +0100
Subject: [PATCH 118/139] Update addons/compat_rf/compat_rf_wardrobe/config.cpp

Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
---
 .../compat_rf/compat_rf_wardrobe/config.cpp   | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/addons/compat_rf/compat_rf_wardrobe/config.cpp b/addons/compat_rf/compat_rf_wardrobe/config.cpp
index 717c785aa98..8039ddb493e 100644
--- a/addons/compat_rf/compat_rf_wardrobe/config.cpp
+++ b/addons/compat_rf/compat_rf_wardrobe/config.cpp
@@ -3,22 +3,19 @@
 class CfgPatches {
     class SUBADDON {
         name = COMPONENT_NAME;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {
             "ace_wardrobe",
             "RF_Data_Loadorder"
         };
         skipWhenMissingDependencies = 1;
-
-        requiredVersion = REQUIRED_VERSION;
-       
-        units[] = {};
-        weapons[] = {};
+        author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+        VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
     };
 };
 

From 16a5edfad4f10ce065d8c94c0f9dd81f7b9c5851 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 8 Jan 2025 19:16:34 +0100
Subject: [PATCH 119/139] common structure

---
 .../compat_gm/compat_gm_wardrobe/config.cpp   | 21 ++++++++----------
 .../compat_sog/compat_sog_wardrobe/config.cpp | 19 +++++++---------
 .../config.cpp                                | 21 ++++++++----------
 .../compat_ws/compat_ws_wardrobe/config.cpp   | 22 ++++++++-----------
 4 files changed, 35 insertions(+), 48 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/config.cpp b/addons/compat_gm/compat_gm_wardrobe/config.cpp
index f7e9cf6f46e..1045ac7f1b5 100644
--- a/addons/compat_gm/compat_gm_wardrobe/config.cpp
+++ b/addons/compat_gm/compat_gm_wardrobe/config.cpp
@@ -3,23 +3,20 @@
 class CfgPatches {
     class SUBADDON {
         name = COMPONENT_NAME;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {
             "ace_wardrobe",
             "gm_core"
         };
         skipWhenMissingDependencies = 1;
-
-        requiredVersion = REQUIRED_VERSION;
-       
-        units[] = {};
-        weapons[] = {};
+        author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+        VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
     };
 };
 
-#include "CfgWardrobe.hpp"
\ No newline at end of file
+#include "CfgWardrobe.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe/config.cpp b/addons/compat_sog/compat_sog_wardrobe/config.cpp
index 4c152d8ca84..108f13ae1be 100644
--- a/addons/compat_sog/compat_sog_wardrobe/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe/config.cpp
@@ -3,22 +3,19 @@
 class CfgPatches {
     class SUBADDON {
         name = COMPONENT_NAME;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {
             "ace_wardrobe",
             "vn_data_f"
         };
         skipWhenMissingDependencies = 1;
-
-        requiredVersion = REQUIRED_VERSION;
-       
-        units[] = {};
-        weapons[] = {};
+        author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+        VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
     };
 };
 
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
index 7e28c9dc177..fa521d4051d 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
@@ -3,23 +3,20 @@
 class CfgPatches {
     class SUBADDON {
         name = COMPONENT_NAME;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {
             "ace_wardrobe",
             "vn_data_f"
         };
         skipWhenMissingDependencies = 1;
-
-        requiredVersion = REQUIRED_VERSION;
-       
-        units[] = {};
-        weapons[] = {};
+        author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+        VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
     };
 };
 
-#include "Uniforms.hpp"
\ No newline at end of file
+#include "Uniforms.hpp"
diff --git a/addons/compat_ws/compat_ws_wardrobe/config.cpp b/addons/compat_ws/compat_ws_wardrobe/config.cpp
index cf96156b57e..f5df153e6a4 100644
--- a/addons/compat_ws/compat_ws_wardrobe/config.cpp
+++ b/addons/compat_ws/compat_ws_wardrobe/config.cpp
@@ -3,24 +3,20 @@
 class CfgPatches {
     class SUBADDON {
         name = COMPONENT_NAME;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
+        units[] = {};
+        weapons[] = {};
+        requiredVersion = REQUIRED_VERSION;
         requiredAddons[] = {
             "ace_wardrobe",
             "Characters_f_lxWS_headgear"
         };
         skipWhenMissingDependencies = 1;
-
-        requiredVersion = REQUIRED_VERSION;
-       
-        units[] = {};
-        weapons[] = {};
+        author = ECSTRING(common,ACETeam);
+        authors[] = {"OverlordZorn [CVO]"};
+        url = ECSTRING(main,URL);
+        VERSION_CONFIG;
+        addonRootClass = QUOTE(ADDON);
     };
 };
 
-
-#include "CfgWardrobe.hpp"
\ No newline at end of file
+#include "CfgWardrobe.hpp"

From 0b88f00d6f96c5b7126ce7eda9bd2da062d41eab Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 8 Jan 2025 19:28:20 +0100
Subject: [PATCH 120/139] restructure .hpp's

---
 .../compat_rf_wardrobe/CfgWardrobe.hpp        | 97 ++++++++++++++++++-
 .../compat_rf/compat_rf_wardrobe/Helmets.hpp  | 24 -----
 .../compat_rf/compat_rf_wardrobe/Uniforms.hpp | 23 -----
 .../compat_rf_wardrobe/script_component.hpp   |  2 +-
 4 files changed, 93 insertions(+), 53 deletions(-)
 delete mode 100644 addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
 delete mode 100644 addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp

diff --git a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
index fb1bac1fc20..10ae7cb65aa 100644
--- a/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/CfgWardrobe.hpp
@@ -8,8 +8,97 @@ class EGVAR(wardrobe,base_H_visor_down);
 
 class CfgWeapons
 {
-    #include "Helmets.hpp"
-    #include "Uniforms.hpp"
+    //// Helmets
+    // Macros
+    #define CN(color) H_HelmetHeavy_##color##_RF
+    #define CN_VU(color) H_HelmetHeavy_VisorUp_##color##_RF
+
+    #define HELMET_VARIANT(color)\
+    class CN(color): H_HelmetHeavy_Black_RF {\
+        class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
+            modifiableTo[] = { QUOTE(CN_VU(color)) };\
+        };\
+    };\
+    class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF {\
+        class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){\
+            modifiableTo[] = { QUOTE(CN(color)) };\
+        };\
+    }
+    
+    // Base Classes
+    class H_HelmetAggressor_F;
+
+    class H_HelmetHeavy_Black_RF: H_HelmetAggressor_F {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {
+            modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" };
+        };
+    };
+    class H_HelmetHeavy_VisorUp_Black_RF: H_HelmetHeavy_Black_RF {
+        class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){
+            modifiableTo[] = { "H_HelmetHeavy_Black_RF" };
+        };
+    };
+    // Variants
+    HELMET_VARIANT(Hex);
+    HELMET_VARIANT(GHex);
+    HELMET_VARIANT(Sand);
+    HELMET_VARIANT(Olive);
+    HELMET_VARIANT(White);
+    
+    //// Uniforms
+    class Uniform_Base;
+
+    // Macros
+    #define UNIFORM_BASE(class1,class2)\
+    class class1: Uniform_Base {\
+        class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
+            modifiableTo[] = { QUOTE(class2) };\
+        };\
+    };\
+    class class2: Uniform_Base {\
+        class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
+            modifiableTo[] = { QUOTE(class1) };\
+        };\
+    }
+
+    // Sleeves up/down
+    UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF);
+    UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF);
+
+
+    // Pilot Jackets
+    class U_C_PilotJacket_black_RF: Uniform_Base {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) {
+            modifiableTo[] = { "U_C_PilotJacket_open_black_RF" };
+        };
+    };
+    class U_C_PilotJacket_open_black_RF: U_C_PilotJacket_black_RF {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) {
+            modifiableTo[] = { "U_C_PilotJacket_black_RF" };
+        };
+    };
+
+    class U_C_PilotJacket_brown_RF: U_C_PilotJacket_black_RF {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) {
+            modifiableTo[] = { "U_C_PilotJacket_open_brown_RF" };
+        };
+    };
+    class U_C_PilotJacket_open_brown_RF: U_C_PilotJacket_brown_RF {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) {
+            modifiableTo[] = { "U_C_PilotJacket_brown_RF" };
+        };
+    };
+
+    class U_C_PilotJacket_lbrown_RF: U_C_PilotJacket_black_RF  {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) {
+            modifiableTo[] = { "U_C_PilotJacket_open_lbrown_RF" };
+        };
+    };
+    class U_C_PilotJacket_open_lbrown_RF: U_C_PilotJacket_lbrown_RF {
+        class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) {
+            modifiableTo[] = { "U_C_PilotJacket_lbrown_RF" };
+        };
+    };
 
 
     // Cap (Ion) Forward and Reversed
@@ -21,9 +110,7 @@ class CfgWeapons
     };
     class H_Cap_headphones_ion_lxws: lxWS_H_CapB_rvs_blk_ION {
         class ace_wardrobe: EGVAR(wardrobe,base) {
-            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION"   };
+            modifiableTo[] = { "lxWS_H_CapB_rvs_blk_ION" };
         };
     };    
 };
-
-
diff --git a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp b/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
deleted file mode 100644
index 9691347d687..00000000000
--- a/addons/compat_rf/compat_rf_wardrobe/Helmets.hpp
+++ /dev/null
@@ -1,24 +0,0 @@
-// CfgWeapons
-
-// Macros
-#define CN(color) H_HelmetHeavy_##color##_RF
-#define CN_VU(color) H_HelmetHeavy_VisorUp_##color##_RF
-
-
-#define HELMET_VARIANT(color)\
-class CN(color): H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { QUOTE(CN_VU(color)) }; }; };\
-class CN_VU(color): H_HelmetHeavy_VisorUp_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { QUOTE(CN(color)) }; }; };\
-
-
-// Base Classes
-class H_HelmetAggressor_F;
-
-class H_HelmetHeavy_Black_RF: H_HelmetAggressor_F { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) { modifiableTo[] = { "H_HelmetHeavy_VisorUp_Black_RF" }; }; };
-class H_HelmetHeavy_VisorUp_Black_RF: H_HelmetHeavy_Black_RF { class ace_wardrobe: EGVAR(wardrobe,base_H_visor_up){ modifiableTo[] = { "H_HelmetHeavy_Black_RF" }; }; };
-
-// Variants
-HELMET_VARIANT(Hex)
-HELMET_VARIANT(GHex)
-HELMET_VARIANT(Sand)
-HELMET_VARIANT(Olive)
-HELMET_VARIANT(White)
\ No newline at end of file
diff --git a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp b/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
deleted file mode 100644
index dae2da7e4e8..00000000000
--- a/addons/compat_rf/compat_rf_wardrobe/Uniforms.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-// CfgWeapons
-
-class Uniform_Base;
-
-// Macros
-#define UNIFORM_BASE(class1,class2)\
-class class1: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) { modifiableTo[] = { QUOTE(class2) }; }; };\
-class class2: Uniform_Base { class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) { modifiableTo[] = { QUOTE(class1) }; }; };
-
-// Simple Variants
-UNIFORM_BASE(U_C_FirefighterFatigues_RF,U_C_FirefighterFatigues_RolledUp_RF)
-UNIFORM_BASE(U_BG_Guerrilla_6_1,U_BG_Guerrilla_RF)
-
-
-// Pilot Jackets
-class U_C_PilotJacket_black_RF: Uniform_Base             { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_black_RF" };    }; };
-class U_C_PilotJacket_open_black_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_black_RF" };         }; };
-
-class U_C_PilotJacket_brown_RF: U_C_PilotJacket_black_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_brown_RF" };    }; };
-class U_C_PilotJacket_open_brown_RF: U_C_PilotJacket_brown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_brown_RF" };         }; };
-
-class U_C_PilotJacket_lbrown_RF: U_C_PilotJacket_black_RF  { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_closed) { modifiableTo[] = { "U_C_PilotJacket_open_lbrown_RF" }; }; };
-class U_C_PilotJacket_open_lbrown_RF: U_C_PilotJacket_lbrown_RF { class ace_wardrobe: EGVAR(wardrobe,base_U_jacket_open) { modifiableTo[] = { "U_C_PilotJacket_lbrown_RF" };      }; };
diff --git a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
index 67ddb91ef0a..33ff700f410 100644
--- a/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
+++ b/addons/compat_rf/compat_rf_wardrobe/script_component.hpp
@@ -2,4 +2,4 @@
 #define SUBCOMPONENT_BEAUTIFIED Wardrobe
 #include "..\script_component.hpp"
 
-#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"

From 152d5831e3686b3d1c379ec671354f0ae1e1e77e Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 8 Jan 2025 19:29:01 +0100
Subject: [PATCH 121/139] fix macro's (;) and linebreaks.

---
 .../compat_gm_wardrobe/CfgWardrobe.hpp        |  1 -
 .../compat_gm/compat_gm_wardrobe/Helmets.hpp  | 20 ++--
 .../compat_gm/compat_gm_wardrobe/Uniforms.hpp |  4 -
 .../compat_sog_wardrobe/Booniehats.hpp        | 10 +-
 .../compat_sog_wardrobe/Facewear.hpp          |  2 +-
 .../compat_sog_wardrobe/Helmets.hpp           | 28 +++---
 .../compat_sog_wardrobe/Uniforms_B.hpp        | 50 +++++-----
 .../compat_sog_wardrobe/Uniforms_O.hpp        | 96 +++++++++----------
 .../Uniforms.hpp                              | 42 ++++----
 .../compat_ws_wardrobe/CfgWardrobe.hpp        | 13 +--
 .../compat_ws/compat_ws_wardrobe/Turbans.hpp  | 18 ++--
 .../functions/fnc_replace_container.sqf       | 12 +--
 addons/wardrobe/script_macros_wardrobe.hpp    | 26 ++---
 13 files changed, 155 insertions(+), 167 deletions(-)

diff --git a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
index 10c8f8d2da7..704f461fcfa 100644
--- a/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/CfgWardrobe.hpp
@@ -17,4 +17,3 @@ class CfgWeapons {
     #include "Helmets.hpp"
     #include "Uniforms.hpp"
 };
-
diff --git a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
index f65a423cb91..06b7fea1f5a 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Helmets.hpp
@@ -43,13 +43,13 @@ class classWith: baseWith {\
         modifiableTo[] = { QUOTE(classWithout) };\
         components[] = { QUOTE(goggles) };\
     };\
-    MASS(11)\
+    MASS(11);\
 };\
 class classWithout: baseWithout {\
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {\
         modifiableTo[] = { QUOTE(classWith) };\
     };\
-};
+}
 
 
 class gm_ge_headgear_m92_base;
@@ -63,12 +63,12 @@ class gm_ge_headgear_m92_cover_glasses_base: gm_ge_headgear_m92_base {
     class ItemInfo;
 };
 
-GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_win,gm_ge_headgear_m92_cover_win,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
-GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_oli,gm_ge_headgear_m92_cover_oli,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
-GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_blk,gm_ge_headgear_m92_cover_blk,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses)
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_win,gm_ge_headgear_m92_cover_win,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses);
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_oli,gm_ge_headgear_m92_cover_oli,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses);
+GM_Helmet_Glasses(gm_ge_headgear_m92_cover_glasses_blk,gm_ge_headgear_m92_cover_blk,gm_ge_headgear_m92_cover_glasses_base,gm_ge_headgear_m92_cover_base,gm_ge_facewear_dustglasses);
 
-GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_trp,gm_ge_headgear_m92_trp,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses)
-GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_flk,gm_ge_headgear_m92_flk,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses)
+GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_trp,gm_ge_headgear_m92_trp,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses);
+GM_Helmet_Glasses(gm_ge_headgear_m92_glasses_flk,gm_ge_headgear_m92_flk,gm_ge_headgear_m92_glasses_base,gm_ge_headgear_m92_base,gm_ge_facewear_dustglasses);
 
 
 class gm_headgear_armored_base;
@@ -76,7 +76,7 @@ class gm_ge_headgear_m38_72_base;
 class gm_ge_headgear_m38_72_goggles_base: gm_headgear_armored_base {
     class ItemInfo;
 };
-GM_Helmet_Glasses(gm_ge_bgs_headgear_m38_72_goggles_bgr,gm_ge_bgs_headgear_m38_72_bgr,gm_ge_headgear_m38_72_goggles_base,gm_ge_headgear_m38_72_base,gm_ge_facewear_acidgoggles)
+GM_Helmet_Glasses(gm_ge_bgs_headgear_m38_72_goggles_bgr,gm_ge_bgs_headgear_m38_72_bgr,gm_ge_headgear_m38_72_goggles_base,gm_ge_headgear_m38_72_base,gm_ge_facewear_acidgoggles);
 
 // Caps with M62 Helmets
 // Base Classes
@@ -119,12 +119,12 @@ class gm_ge_headgear_hat_80_m62_oli: gm_ge_headgear_hat_80_base {
         modifiableTo[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
         components[] = {"gm_ge_headgear_hat_80_oli","gm_ge_headgear_m62_net"};
     };
-    MASS(20)
+    MASS(20);
 };
 class gm_ge_headgear_sidecap_80_m62_oli: gm_ge_headgear_sidecap_80_base {
     class ace_wardrobe: EGVAR(wardrobe,base) {
         modifiableTo[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
         components[] = {"gm_ge_headgear_sidecap_80_oli","gm_ge_headgear_m62_net"};
     };
-    MASS(20)
+    MASS(20);
 };
diff --git a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
index c8857364a5e..6a548d214e6 100644
--- a/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
+++ b/addons/compat_gm/compat_gm_wardrobe/Uniforms.hpp
@@ -150,8 +150,6 @@ class gm_ge_uniform_soldier_rolled_90_flk: gm_ge_uniform_soldier_90_base {
 };
 
 
-
-
 // Gloves
 
 class gm_gc_uniform_soldier_80_base;
@@ -214,5 +212,3 @@ class gm_xx_uniform_soldier_bdu_nogloves_80_oli: gm_ge_army_uniform_soldier_bdu_
         modifiableTo[] = { "gm_xx_uniform_soldier_bdu_80_oli", "gm_xx_uniform_soldier_bdu_rolled_80_oli" };
     };
 };
-
-
diff --git a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
index 14626adbeb6..9cc5a49843c 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Booniehats.hpp
@@ -68,12 +68,12 @@ class CN(05,CAMO): CN(02,CAMO) {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(01,CAMO), QCN(02,CAMO), QCN(03,CAMO), QCN(04,CAMO) };\
     };\
-};
+}
 
-CN_COLORS(02)
-CN_COLORS(03)
-CN_COLORS(04)
-CN_COLORS(05)
+CN_COLORS(02);
+CN_COLORS(03);
+CN_COLORS(04);
+CN_COLORS(05);
 
 
 // Base classes in CfgWeapons.hpp
diff --git a/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
index a99810ffa00..65435cbde80 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
@@ -100,4 +100,4 @@ class vn_o_acc_goggles_03: vn_glasses_base {
         modifiableTo[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02" };
         components[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02"};
     };
-};    
\ No newline at end of file
+};
diff --git a/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
index bc5af5b4e8a..9f1fb7b961a 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
@@ -16,7 +16,7 @@ class CN02(side,var1,var2): base_class_dn {\
     class ace_wardrobe: EGVAR(wardrobe,base_H_visor_down) {\
         modifiableTo[] = { QUOTE(CN01(side,var1,var2)) };\
     };\
-};
+}
 
 
 // Base classes in CfgWeapons.hpp
@@ -24,8 +24,8 @@ class CN02(side,var1,var2): base_class_dn {\
 // Parent Version aph6 & svh4
 #define base_class_up vn_b_headgear_base
 #define base_class_dn vn_b_headgear_base
-HELMET_VARIANT(b,aph6,01)
-HELMET_VARIANT(b,svh4,01)
+HELMET_VARIANT(b,aph6,01);
+HELMET_VARIANT(b,svh4,01);
 
 // Child Version aph6
 #undef base_class_up
@@ -33,10 +33,10 @@ HELMET_VARIANT(b,svh4,01)
 #define base_class_up CN01(b,aph6,01)
 #define base_class_dn CN02(b,aph6,01)
 
-HELMET_VARIANT(b,aph6,02)
-HELMET_VARIANT(b,aph6,03)
-HELMET_VARIANT(b,aph6,04)
-HELMET_VARIANT(b,aph6,05)
+HELMET_VARIANT(b,aph6,02);
+HELMET_VARIANT(b,aph6,03);
+HELMET_VARIANT(b,aph6,04);
+HELMET_VARIANT(b,aph6,05);
 
 // Child Version svh4
 #undef base_class_up
@@ -44,11 +44,15 @@ HELMET_VARIANT(b,aph6,05)
 #define base_class_up CN01(b,svh4,01)
 #define base_class_dn CN02(b,svh4,01)
 
-HELMET_VARIANT(b,svh4,02)
-HELMET_VARIANT(b,svh4,03)
-HELMET_VARIANT(b,svh4,04)
-HELMET_VARIANT(b,svh4,05)
-HELMET_VARIANT(b,svh4,06)
+HELMET_VARIANT(b,svh4,02);
+HELMET_VARIANT(b,svh4,03);
+HELMET_VARIANT(b,svh4,04);
+HELMET_VARIANT(b,svh4,05);
+HELMET_VARIANT(b,svh4,06);
+
+#undef base_class_up
+#undef base_class_dn
+
 
 // Special Case zsh3
 class vn_o_helmet_zsh3_01: vn_o_headgear_base {
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index 72e41a9b087..b7252fac4e5 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -13,7 +13,7 @@ class class2: vn_b_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { QUOTE(class1) };\
     };\
-};
+}
 
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
 #define B_U_PAIR(div,down,up,camo) UNIFORM_BASE_B(B_U(div,down,camo),B_U(div,up,camo))
@@ -21,23 +21,23 @@ class class2: vn_b_uniform_base {\
 
 // Simple Variants
 // ACZAC
-UNIFORM_BASE_B(vn_b_uniform_aus_01_01,vn_b_uniform_aus_02_01)
-UNIFORM_BASE_B(vn_b_uniform_aus_03_01,vn_b_uniform_aus_04_01)
-UNIFORM_BASE_B(vn_b_uniform_aus_05_01,vn_b_uniform_aus_06_01)
-UNIFORM_BASE_B(vn_b_uniform_aus_07_01,vn_b_uniform_aus_08_01)
-UNIFORM_BASE_B(vn_b_uniform_aus_09_01,vn_b_uniform_aus_10_01)
+UNIFORM_BASE_B(vn_b_uniform_aus_01_01,vn_b_uniform_aus_02_01);
+UNIFORM_BASE_B(vn_b_uniform_aus_03_01,vn_b_uniform_aus_04_01);
+UNIFORM_BASE_B(vn_b_uniform_aus_05_01,vn_b_uniform_aus_06_01);
+UNIFORM_BASE_B(vn_b_uniform_aus_07_01,vn_b_uniform_aus_08_01);
+UNIFORM_BASE_B(vn_b_uniform_aus_09_01,vn_b_uniform_aus_10_01);
 
 // NZ
-UNIFORM_BASE_B(vn_b_uniform_NZ_01_01,vn_b_uniform_NZ_02_01)
-UNIFORM_BASE_B(vn_b_uniform_NZ_03_01,vn_b_uniform_NZ_04_01)
-UNIFORM_BASE_B(vn_b_uniform_NZ_05_01,vn_b_uniform_NZ_06_01)
+UNIFORM_BASE_B(vn_b_uniform_NZ_01_01,vn_b_uniform_NZ_02_01);
+UNIFORM_BASE_B(vn_b_uniform_NZ_03_01,vn_b_uniform_NZ_04_01);
+UNIFORM_BASE_B(vn_b_uniform_NZ_05_01,vn_b_uniform_NZ_06_01);
 
 // SEAL STUFF
-UNIFORM_BASE_B(vn_b_uniform_seal_01_01,vn_b_uniform_seal_02_01)
-UNIFORM_BASE_B(vn_b_uniform_seal_01_02,vn_b_uniform_seal_02_02)
-UNIFORM_BASE_B(vn_b_uniform_seal_01_05,vn_b_uniform_seal_02_05)
-UNIFORM_BASE_B(vn_b_uniform_seal_01_06,vn_b_uniform_seal_02_06)
-UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07)
+UNIFORM_BASE_B(vn_b_uniform_seal_01_01,vn_b_uniform_seal_02_01);
+UNIFORM_BASE_B(vn_b_uniform_seal_01_02,vn_b_uniform_seal_02_02);
+UNIFORM_BASE_B(vn_b_uniform_seal_01_05,vn_b_uniform_seal_02_05);
+UNIFORM_BASE_B(vn_b_uniform_seal_01_06,vn_b_uniform_seal_02_06);
+UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07);
 
 // MACV
 #define OLIVE_FIELD 01
@@ -53,16 +53,16 @@ UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07)
 
 // macv 05 and 04 have inconsistency between them -> different uniform maxLoad. This likely will cause the player to loose items when the uniform is filled to the brim. Difference is 1lb which translates to 16~17x ace bandages or 1x 1l blood
 #define B_U_PAIR_SET(camo)\
-B_U_PAIR(macv,02,03,camo)\
+B_U_PAIR(macv,02,03,camo);\
 B_U_PAIR(macv,05,04,camo)
 
-B_U_PAIR_SET(TIGER)
-B_U_PAIR_SET(TIGER_GREEN)
-B_U_PAIR_SET(ERDL)
-B_U_PAIR_SET(ERDL_BROWN)
-B_U_PAIR_SET(OLIVE)
-B_U_PAIR_SET(OLIVE_FIELD)
-B_U_PAIR_SET(LEOPARD)
-B_U_PAIR_SET(LIZARD)
-B_U_PAIR_SET(BDQ)
-B_U_PAIR_SET(FROG)
+B_U_PAIR_SET(TIGER);
+B_U_PAIR_SET(TIGER_GREEN);
+B_U_PAIR_SET(ERDL);
+B_U_PAIR_SET(ERDL_BROWN);
+B_U_PAIR_SET(OLIVE);
+B_U_PAIR_SET(OLIVE_FIELD);
+B_U_PAIR_SET(LEOPARD);
+B_U_PAIR_SET(LIZARD);
+B_U_PAIR_SET(BDQ);
+B_U_PAIR_SET(FROG);
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
index b411ab0c7f5..f4b20fca32e 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_O.hpp
@@ -10,13 +10,13 @@ class class2: vn_o_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { QUOTE(class1) };\
     };\
-};
+}
 
 // OPFOR
 
 // NVA Sailors
-UNIFORM_BASE_O(vn_o_uniform_nva_navy_01,vn_o_uniform_nva_navy_03)
-UNIFORM_BASE_O(vn_o_uniform_nva_navy_02,vn_o_uniform_nva_navy_04)
+UNIFORM_BASE_O(vn_o_uniform_nva_navy_01,vn_o_uniform_nva_navy_03);
+UNIFORM_BASE_O(vn_o_uniform_nva_navy_02,vn_o_uniform_nva_navy_04);
 
 // NVA_Army_AA_BB
 // brown: 01,02 03,04 | GREEN: 01..12
@@ -26,23 +26,23 @@ UNIFORM_BASE_O(vn_o_uniform_nva_navy_02,vn_o_uniform_nva_navy_04)
 #define GREEN_FIELD 04
 #define O_U_NVA_ARMY(var,camo) vn_o_uniform_nva_army_##var##_##camo
 #define O_U_NVA_ARMY_PAIR(down,up,camo) UNIFORM_BASE_O(O_U_NVA_ARMY(down,camo),O_U_NVA_ARMY(up,camo))
-O_U_NVA_ARMY_PAIR(01,02,BROWN)
-O_U_NVA_ARMY_PAIR(03,04,BROWN)
-O_U_NVA_ARMY_PAIR(01,02,BROWN_FIELD)
-O_U_NVA_ARMY_PAIR(03,04,BROWN_FIELD)
+O_U_NVA_ARMY_PAIR(01,02,BROWN);
+O_U_NVA_ARMY_PAIR(03,04,BROWN);
+O_U_NVA_ARMY_PAIR(01,02,BROWN_FIELD);
+O_U_NVA_ARMY_PAIR(03,04,BROWN_FIELD);
 
-O_U_NVA_ARMY_PAIR(01,02,GREEN)
-O_U_NVA_ARMY_PAIR(03,04,GREEN)
-O_U_NVA_ARMY_PAIR(05,06,GREEN)
-O_U_NVA_ARMY_PAIR(07,08,GREEN)
-O_U_NVA_ARMY_PAIR(09,10,GREEN)
-O_U_NVA_ARMY_PAIR(11,12,GREEN)
-O_U_NVA_ARMY_PAIR(01,02,GREEN_FIELD)
-O_U_NVA_ARMY_PAIR(03,04,GREEN_FIELD)
-O_U_NVA_ARMY_PAIR(05,06,GREEN_FIELD)
-O_U_NVA_ARMY_PAIR(07,08,GREEN_FIELD)
-O_U_NVA_ARMY_PAIR(09,10,GREEN_FIELD)
-O_U_NVA_ARMY_PAIR(11,12,GREEN_FIELD)
+O_U_NVA_ARMY_PAIR(01,02,GREEN);
+O_U_NVA_ARMY_PAIR(03,04,GREEN);
+O_U_NVA_ARMY_PAIR(05,06,GREEN);
+O_U_NVA_ARMY_PAIR(07,08,GREEN);
+O_U_NVA_ARMY_PAIR(09,10,GREEN);
+O_U_NVA_ARMY_PAIR(11,12,GREEN);
+O_U_NVA_ARMY_PAIR(01,02,GREEN_FIELD);
+O_U_NVA_ARMY_PAIR(03,04,GREEN_FIELD);
+O_U_NVA_ARMY_PAIR(05,06,GREEN_FIELD);
+O_U_NVA_ARMY_PAIR(07,08,GREEN_FIELD);
+O_U_NVA_ARMY_PAIR(09,10,GREEN_FIELD);
+O_U_NVA_ARMY_PAIR(11,12,GREEN_FIELD);
 
 // PL ARMY
 #define DARK 11
@@ -52,42 +52,42 @@ O_U_NVA_ARMY_PAIR(11,12,GREEN_FIELD)
 #define O_U_PL_ARMY(var,camo) vn_o_uniform_pl_army_##var##_##camo
 #define O_U_PL_ARMY_PAIR(down,up,camo) UNIFORM_BASE_O(O_U_PL_ARMY(down,camo),O_U_PL_ARMY(up,camo))
 
-O_U_PL_ARMY_PAIR(01,02,DARK)
-O_U_PL_ARMY_PAIR(03,04,DARK)
-O_U_PL_ARMY_PAIR(01,02,DARK_FIELD)
-O_U_PL_ARMY_PAIR(03,04,DARK_FIELD)
-O_U_PL_ARMY_PAIR(01,02,LIGHT)
-O_U_PL_ARMY_PAIR(03,04,LIGHT)
-O_U_PL_ARMY_PAIR(01,02,LIGHT_FIELD)
-O_U_PL_ARMY_PAIR(03,04,LIGHT_FIELD)
+O_U_PL_ARMY_PAIR(01,02,DARK);
+O_U_PL_ARMY_PAIR(03,04,DARK);
+O_U_PL_ARMY_PAIR(01,02,DARK_FIELD);
+O_U_PL_ARMY_PAIR(03,04,DARK_FIELD);
+O_U_PL_ARMY_PAIR(01,02,LIGHT);
+O_U_PL_ARMY_PAIR(03,04,LIGHT);
+O_U_PL_ARMY_PAIR(01,02,LIGHT_FIELD);
+O_U_PL_ARMY_PAIR(03,04,LIGHT_FIELD);
 
 
 #define O_U(div,var,camo) vn_o_uniform_##div##_##var##_##camo
 #define O_U_PAIR(div,down,up,camo) UNIFORM_BASE_O(O_U(div,down,camo),O_U(div,up,camo))
 // VC MF
 #define VC_MF 07
-O_U_PAIR(vc_mf,01,02,VC_MF)
-O_U_PAIR(vc_mf,03,04,VC_MF)
-O_U_PAIR(vc_mf,09,10,VC_MF)
-O_U_PAIR(vc_mf,11,12,VC_MF)
+O_U_PAIR(vc_mf,01,02,VC_MF);
+O_U_PAIR(vc_mf,03,04,VC_MF);
+O_U_PAIR(vc_mf,09,10,VC_MF);
+O_U_PAIR(vc_mf,11,12,VC_MF);
 
 // VC REG
-O_U_PAIR(vc_reg,11,12,08)
-O_U_PAIR(vc_reg,11,12,09)
-O_U_PAIR(vc_reg,11,12,10)
+O_U_PAIR(vc_reg,11,12,08);
+O_U_PAIR(vc_reg,11,12,09);
+O_U_PAIR(vc_reg,11,12,10);
 
 // VC BLACK 01 BLACK_WHITE 02 GREY_TAN 03 BLUE 04 WHITE_BLACK 05 BLUE_WHITE 06 BLUE_GREY 07
-O_U_PAIR(vc,01,02,01)
-O_U_PAIR(vc,03,04,01)
-O_U_PAIR(vc,01,02,02)
-O_U_PAIR(vc,03,04,02)
-O_U_PAIR(vc,01,02,03)
-O_U_PAIR(vc,03,04,03)
-O_U_PAIR(vc,01,02,04)
-O_U_PAIR(vc,03,04,04)
-O_U_PAIR(vc,01,02,05)
-O_U_PAIR(vc,03,04,05)
-O_U_PAIR(vc,01,02,06)
-O_U_PAIR(vc,03,04,06)
-O_U_PAIR(vc,01,02,07)
-O_U_PAIR(vc,03,04,07)
+O_U_PAIR(vc,01,02,01);
+O_U_PAIR(vc,03,04,01);
+O_U_PAIR(vc,01,02,02);
+O_U_PAIR(vc,03,04,02);
+O_U_PAIR(vc,01,02,03);
+O_U_PAIR(vc,03,04,03);
+O_U_PAIR(vc,01,02,04);
+O_U_PAIR(vc,03,04,04);
+O_U_PAIR(vc,01,02,05);
+O_U_PAIR(vc,03,04,05);
+O_U_PAIR(vc,01,02,06);
+O_U_PAIR(vc,03,04,06);
+O_U_PAIR(vc,01,02,07);
+O_U_PAIR(vc,03,04,07);
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
index f7aa497ff4a..592d502d4e3 100644
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
@@ -4,7 +4,7 @@ class className: vn_b_uniform_base {\
         containerClass = "Supply70";\
         mass = 70;\
     };\
-};
+}
 
 class CfgWeapons {
     class Uniform_Base;
@@ -12,16 +12,16 @@ class CfgWeapons {
         class ItemInfo;
     };
 
-    S_70(vn_b_uniform_macv_04_01)
-    S_70(vn_b_uniform_macv_04_02)
-    S_70(vn_b_uniform_macv_04_05)
-    S_70(vn_b_uniform_macv_04_06)
-    S_70(vn_b_uniform_macv_04_07)
-    S_70(vn_b_uniform_macv_04_08)
-    S_70(vn_b_uniform_macv_04_15)
-    S_70(vn_b_uniform_macv_04_16)
-    S_70(vn_b_uniform_macv_04_17)
-    S_70(vn_b_uniform_macv_04_18)
+    S_70(vn_b_uniform_macv_04_01);
+    S_70(vn_b_uniform_macv_04_02);
+    S_70(vn_b_uniform_macv_04_05);
+    S_70(vn_b_uniform_macv_04_06);
+    S_70(vn_b_uniform_macv_04_07);
+    S_70(vn_b_uniform_macv_04_08);
+    S_70(vn_b_uniform_macv_04_15);
+    S_70(vn_b_uniform_macv_04_16);
+    S_70(vn_b_uniform_macv_04_17);
+    S_70(vn_b_uniform_macv_04_18);
 
 
     //// US Headgear
@@ -32,10 +32,10 @@ class CfgWeapons {
     };
 
     class vn_b_helmet_m1_20_01: vn_b_helmet_m1_14_01 {
-        MASS(12)
+        MASS(12);
     };
     class vn_b_helmet_m1_20_02: vn_b_helmet_m1_20_01 {
-        MASS(12)
+        MASS(12);
     };
 
 
@@ -45,15 +45,15 @@ class CfgWeapons {
         class ItemInfo;
     };
     class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
-        MASS(12)
+        MASS(12);
     };
 
     class vn_b_helmet_t56_02_02: vn_b_helmet_t56_02_01 {
-        MASS(12)
+        MASS(12);
     };
 
     class vn_b_helmet_t56_02_03: vn_b_helmet_t56_02_01 {
-        MASS(12)
+        MASS(12);
     };
 
     //// NVA Headgear
@@ -67,18 +67,18 @@ class CfgWeapons {
     };
     // NVA Pilot Helmet with Goggles
     class vn_o_helmet_shl61_01: vn_o_headgear_base {
-        MASS(12)
+        MASS(12);
     };
     class vn_o_helmet_shl61_02: vn_o_helmet_shl61_01 {
-        MASS(10)
+        MASS(10);
     };
 
     // NVA Crew Helmet with Goggles
     class vn_o_helmet_tsh3_01: vn_o_headgear_base {
-        MASS(12)
+        MASS(12);
     };
     class vn_o_helmet_tsh3_02: vn_o_helmet_tsh3_01 {
-        MASS(10)
+        MASS(10);
     };
 
 
@@ -88,7 +88,7 @@ class CfgWeapons {
         class ItemInfo;
     };
     class vn_o_helmet_nva_05: vn_o_helmet_nva_01 {
-        MASS(12)
+        MASS(12);
     };
 };
 
diff --git a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
index 65562da4807..bab07ff8f04 100644
--- a/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/CfgWardrobe.hpp
@@ -3,7 +3,6 @@ class EGVAR(wardrobe,base_H_goggles_on);
 class EGVAR(wardrobe,base_H_goggles_off);
 
 
-
 class CfgGlasses {
     class G_Combat;
     class G_Combat_lxWS: G_Combat {
@@ -14,9 +13,6 @@ class CfgGlasses {
 };
 
 
-
-
-
 class CfgWeapons {
 
     class ItemCore;
@@ -44,28 +40,28 @@ class CfgWeapons {
 
     //// RF Helmets with Glasses
     class lxWS_H_PASGT_goggles_UN_F: HelmetBase {
-        MASS(32)
+        MASS(32);
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "lxWS_H_PASGT_basic_UN_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_black_F: lxWS_H_PASGT_goggles_UN_F {
-        MASS(32)
+        MASS(32);
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_black_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_olive_F: lxWS_H_PASGT_goggles_UN_F {
-        MASS(32)
+        MASS(32);
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_olive_F" };
             components[] = {"G_Combat_lxWS"};
         };
     };  
     class lxWS_H_PASGT_goggles_white_F: lxWS_H_PASGT_goggles_UN_F {
-        MASS(32)
+        MASS(32);
         class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
             modifiableTo[] = { "H_PASGT_basic_white_F" };
             components[] = {"G_Combat_lxWS"};
@@ -94,4 +90,3 @@ class CfgWeapons {
         };
     };
 };
-
diff --git a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
index 48a23d42864..e071106faa2 100644
--- a/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
+++ b/addons/compat_ws/compat_ws_wardrobe/Turbans.hpp
@@ -24,7 +24,7 @@ class CN(04,COLOR): lxWS_H_turban_04_black {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(01,COLOR), QCN(02,COLOR), QCN(03,COLOR) };\
     };\
-};
+}
 
 
 #define COLORGROUP_SPECIAL(COLOR)\
@@ -37,7 +37,7 @@ class CN(03,COLOR): lxWS_H_turban_03_black {\
     class ace_wardrobe: EGVAR(wardrobe,base) {\
         modifiableTo[] = { QCN(02,COLOR) };\
     };\
-};
+}
 
 
 // BASECLASS
@@ -76,15 +76,15 @@ class lxWS_H_turban_04_black: lxWS_H_turban_01_black {
 };
 
 // VARIATIONS
-COLORGROUP(blue)
-COLORGROUP(blue_una)
-COLORGROUP(green)
-COLORGROUP(red)
-COLORGROUP(gray)
-COLORGROUP(yellow)
+COLORGROUP(blue);
+COLORGROUP(blue_una);
+COLORGROUP(green);
+COLORGROUP(red);
+COLORGROUP(gray);
+COLORGROUP(yellow);
 
 // Special Variations
-COLORGROUP_SPECIAL(green_pattern)
+COLORGROUP_SPECIAL(green_pattern);
 
 
 // Super Special Manual blabla
diff --git a/addons/wardrobe/functions/fnc_replace_container.sqf b/addons/wardrobe/functions/fnc_replace_container.sqf
index 9de67da85af..797c3025ce9 100644
--- a/addons/wardrobe/functions/fnc_replace_container.sqf
+++ b/addons/wardrobe/functions/fnc_replace_container.sqf
@@ -28,9 +28,9 @@ private _loadout = [_player] call CBA_fnc_getLoadout;
 
 //// Handle Special Cases - Pre Replace
 // ACE Intel Items
-INTEL_PRE(_hasDocument,acex_intelitems_document)
-INTEL_PRE(_hasNotepad,acex_intelitems_notepad)
-INTEL_PRE(_hasPhoto,acex_intelitems_photo)
+INTEL_PRE(_hasDocument,acex_intelitems_document);
+INTEL_PRE(_hasNotepad,acex_intelitems_notepad);
+INTEL_PRE(_hasPhoto,acex_intelitems_photo);
 
 // ACE Overheating
 private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
@@ -52,9 +52,9 @@ switch (_case) do {
 
 //// Handle Special Cases - Post Replace
 // ACE Intel Items
-INTEL_POST(_hasDocument,acex_intelitems_document)
-INTEL_POST(_hasNotepad,acex_intelitems_notepad)
-INTEL_POST(_hasPhoto,acex_intelitems_photo)
+INTEL_POST(_hasDocument,acex_intelitems_document);
+INTEL_POST(_hasNotepad,acex_intelitems_notepad);
+INTEL_POST(_hasPhoto,acex_intelitems_photo);
 
 // ACE Overheating
 if (_hasSpareBarrel isEqualType [] ) then {
diff --git a/addons/wardrobe/script_macros_wardrobe.hpp b/addons/wardrobe/script_macros_wardrobe.hpp
index 238c4a0429d..d145ef346d9 100644
--- a/addons/wardrobe/script_macros_wardrobe.hpp
+++ b/addons/wardrobe/script_macros_wardrobe.hpp
@@ -9,29 +9,23 @@
 // LSTRING for cba Settings
 #define SETLSTRING(key) [LSTRING(DOUBLES(set,key)),LSTRING(TRIPLES(set,key,desc))]
 
+// QOL
 #define QQ(var1) QUOTE(QUOTE(var1))
-
 #define QADDON QUOTE(ADDON)
 
-// Paths
-#define PATH_TO_FUNC QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions)
-#define PATH_TO_FUNC_SUB(var1) QUOTE(\MAINPREFIX\PREFIX\addons\COMPONENT\functions\var1)
-
-
-// Config
-
-//// Adjust Weight of CfgWeapons Wearables.
-#define MASS(var)\
-class ItemInfo: ItemInfo {\
-    mass = var;\
-};
-
 
 // REPLACE
 #define INTEL_PRE(varName,className)\
 private varName = _magazineDetails findIf { _x select 0 == QUOTE(className) } > -1;\
-if (varName) then { _hasDocument = [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } };
+if (varName) then { _hasDocument = [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex apply { [_x] call FUNC(getIndexFromMagID) } }
 
 #define INTEL_POST(varName,className)\
-if (varName isEqualType []) then { { [_x, varName select _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex ); };
+if (varName isEqualType []) then { { [_x, varName select _forEachIndex] call FUNC(setIndexForMagID); } forEach ( [_player, QUOTE(className)] call CBA_fnc_getMagazineIndex ); }
 
+
+// Config
+//// Adjust Weight of CfgWeapons Wearables.
+#define MASS(var)\
+class ItemInfo: ItemInfo {\
+    mass = var;\
+}

From 4310f978629fc6c746a52ae459ef0e8fae1d7b49 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 8 Jan 2025 19:31:50 +0100
Subject: [PATCH 122/139] EOF new line

---
 addons/wardrobe/Baseclass.hpp        | 2 +-
 addons/wardrobe/CfgEventHandlers.hpp | 2 +-
 addons/wardrobe/CfgWardrobe.hpp      | 4 ++--
 addons/wardrobe/XEH_PREP.hpp         | 2 +-
 addons/wardrobe/config.cpp           | 2 +-
 addons/wardrobe/data/attribution.md  | 3 ++-
 addons/wardrobe/script_component.hpp | 2 +-
 7 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/addons/wardrobe/Baseclass.hpp b/addons/wardrobe/Baseclass.hpp
index 42d951adda5..0ba855dd7f4 100644
--- a/addons/wardrobe/Baseclass.hpp
+++ b/addons/wardrobe/Baseclass.hpp
@@ -76,4 +76,4 @@ class GVAR(base_H_goggles_on): GVAR(base) {
 class GVAR(base_H_goggles_off): GVAR(base) {
     gesture ="GestureWipeFace";
     alternativeDisplayName = CSTRING(gogglesOff);
-};
\ No newline at end of file
+};
diff --git a/addons/wardrobe/CfgEventHandlers.hpp b/addons/wardrobe/CfgEventHandlers.hpp
index 2f9c48aa546..b777f210098 100644
--- a/addons/wardrobe/CfgEventHandlers.hpp
+++ b/addons/wardrobe/CfgEventHandlers.hpp
@@ -8,4 +8,4 @@ class Extended_PostInit_EventHandlers {
     class ADDON {
         init = QUOTE(call COMPILE_SCRIPT(XEH_postInit));
     };
-};
\ No newline at end of file
+};
diff --git a/addons/wardrobe/CfgWardrobe.hpp b/addons/wardrobe/CfgWardrobe.hpp
index b1740e5a47d..b7de9e608b9 100644
--- a/addons/wardrobe/CfgWardrobe.hpp
+++ b/addons/wardrobe/CfgWardrobe.hpp
@@ -1,8 +1,8 @@
+
 class CfgWeapons {
     #include "Uniforms.hpp"
 };
 
-
 class CfgGlasses {
     #include "Facewear.hpp"
-};
\ No newline at end of file
+};
diff --git a/addons/wardrobe/XEH_PREP.hpp b/addons/wardrobe/XEH_PREP.hpp
index d3277cea11f..417a9cc8cb4 100644
--- a/addons/wardrobe/XEH_PREP.hpp
+++ b/addons/wardrobe/XEH_PREP.hpp
@@ -33,4 +33,4 @@ PREP(compare_container_maxLoad);
 // CBA Context Menu
 PREP(enable_contextMenu);
 PREP(do_nextVariant);
-PREP(getNextVariant);
\ No newline at end of file
+PREP(getNextVariant);
diff --git a/addons/wardrobe/config.cpp b/addons/wardrobe/config.cpp
index cc109411521..966dd4a903e 100644
--- a/addons/wardrobe/config.cpp
+++ b/addons/wardrobe/config.cpp
@@ -28,4 +28,4 @@ class CfgPatches {
 
 #include "Baseclass.hpp"
 
-#include "CfgWardrobe.hpp"
\ No newline at end of file
+#include "CfgWardrobe.hpp"
diff --git a/addons/wardrobe/data/attribution.md b/addons/wardrobe/data/attribution.md
index ffd4622c6b6..417747726ff 100644
--- a/addons/wardrobe/data/attribution.md
+++ b/addons/wardrobe/data/attribution.md
@@ -9,4 +9,5 @@ helmet_visor_05
 Click of a Motorcycle Helmet Visor
  by rylandbrooks
  https://freesound.org/s/328103/
- License: Creative Commons 0
\ No newline at end of file
+ License: Creative Commons 0
+ 
\ No newline at end of file
diff --git a/addons/wardrobe/script_component.hpp b/addons/wardrobe/script_component.hpp
index 3bfe0fd2d46..907b02485b8 100644
--- a/addons/wardrobe/script_component.hpp
+++ b/addons/wardrobe/script_component.hpp
@@ -15,4 +15,4 @@
 #endif
 
 #include "\z\ace\addons\main\script_macros.hpp"
-#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file
+#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"

From 15227e8b8f1b0cebab0d99c6a3ab4fe44e021864 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Wed, 8 Jan 2025 19:32:03 +0100
Subject: [PATCH 123/139] macro;

---
 addons/wardrobe/CfgSounds.hpp | 16 ++++++++--------
 addons/wardrobe/Uniforms.hpp  | 15 +++++++--------
 2 files changed, 15 insertions(+), 16 deletions(-)

diff --git a/addons/wardrobe/CfgSounds.hpp b/addons/wardrobe/CfgSounds.hpp
index 72a856caed6..8fd5d3b4ed7 100644
--- a/addons/wardrobe/CfgSounds.hpp
+++ b/addons/wardrobe/CfgSounds.hpp
@@ -6,15 +6,15 @@ class GVAR(DOUBLES(base,dur)) {\
     titles[] = { 0, "" };\
     forceTitles = 0;\
     titlesStructured = 0;\
-};
+}
 
 class CfgSounds {
     sounds[] = {};
-    ENTRY(fabric,06)
-    ENTRY(fabric,07)
-    ENTRY(fabric,16)
-    ENTRY(fabric,20)
-    ENTRY(fabric,25)
+    ENTRY(fabric,06);
+    ENTRY(fabric,07);
+    ENTRY(fabric,16);
+    ENTRY(fabric,20);
+    ENTRY(fabric,25);
 
-    ENTRY(helmet_visor,05)
-};
\ No newline at end of file
+    ENTRY(helmet_visor,05);
+};
diff --git a/addons/wardrobe/Uniforms.hpp b/addons/wardrobe/Uniforms.hpp
index 511fba3b967..f40cc377517 100644
--- a/addons/wardrobe/Uniforms.hpp
+++ b/addons/wardrobe/Uniforms.hpp
@@ -12,20 +12,19 @@ class class2: Uniform_Base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
         modifiableTo[] = { QUOTE(class1) };\
     };\
-};
+}
 
 
 // Vanilla CTRG Uniform
-UNIFORM_BASE(U_B_CTRG_1,U_B_CTRG_3)
+UNIFORM_BASE(U_B_CTRG_1,U_B_CTRG_3);
 
 // AAF Fatigues
-UNIFORM_BASE(U_I_CombatUniform,U_I_CombatUniform_shortsleeve)
+UNIFORM_BASE(U_I_CombatUniform,U_I_CombatUniform_shortsleeve);
 
 // APEX CTRG Uniforms
-UNIFORM_BASE(U_B_CTRG_Soldier_F,U_B_CTRG_Soldier_3_F)
-UNIFORM_BASE(U_B_CTRG_Soldier_Arid_F,U_B_CTRG_Soldier_3_Arid_F)
-UNIFORM_BASE(U_B_CTRG_Soldier_urb_1_F,U_B_CTRG_Soldier_urb_3_F)
+UNIFORM_BASE(U_B_CTRG_Soldier_F,U_B_CTRG_Soldier_3_F);
+UNIFORM_BASE(U_B_CTRG_Soldier_Arid_F,U_B_CTRG_Soldier_3_Arid_F);
+UNIFORM_BASE(U_B_CTRG_Soldier_urb_1_F,U_B_CTRG_Soldier_urb_3_F);
 
 // Contact - LDF Fatigues
-UNIFORM_BASE(U_I_E_Uniform_01_F,U_I_E_Uniform_01_shortsleeve_F)
-
+UNIFORM_BASE(U_I_E_Uniform_01_F,U_I_E_Uniform_01_shortsleeve_F);

From 45a1fb64460d19161df233273ed75fb1f06d9f52 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Thu, 9 Jan 2025 18:42:15 +0100
Subject: [PATCH 124/139] merged uniform fix into sog compat

Since there appeared to be more items which needed some sort of config adjustment, might as well merge these into the normal compats as well
---
 .hemtt/launch.toml                            |   2 +-
 .hemtt/missions/Wardrobe.VR/mission.sqm       |   3 +
 .../compat_sog_wardrobe/CfgWardrobe.hpp       |   8 +-
 .../compat_sog_wardrobe/Facewear.hpp          |   3 +-
 .../compat_sog_wardrobe/Helmets.hpp           |  18 +++-
 .../compat_sog_wardrobe/Uniforms_B.hpp        |  34 +++++-
 .../Uniforms.hpp                              | 102 ------------------
 .../config.cpp                                |  22 ----
 .../compat_sog_wardrobe_uniform_fix/readme.md |  10 --
 .../script_component.hpp                      |   5 -
 10 files changed, 57 insertions(+), 150 deletions(-)
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
 delete mode 100644 addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp

diff --git a/.hemtt/launch.toml b/.hemtt/launch.toml
index 5ce20c06f0f..f6880a315ce 100644
--- a/.hemtt/launch.toml
+++ b/.hemtt/launch.toml
@@ -47,6 +47,6 @@ mission = "Wardrobe.VR"
 dlc = [
 #    "Western Sahara",    
 #    "Reaction Forces", 
-#    "S.O.G. Prairie Fire",
+    "S.O.G. Prairie Fire",
 #    "gm"
 ]
\ No newline at end of file
diff --git a/.hemtt/missions/Wardrobe.VR/mission.sqm b/.hemtt/missions/Wardrobe.VR/mission.sqm
index 1010aff970d..d3ab289f354 100644
--- a/.hemtt/missions/Wardrobe.VR/mission.sqm
+++ b/.hemtt/missions/Wardrobe.VR/mission.sqm
@@ -89,6 +89,9 @@ class ScenarioData
 {
 	author="Overlord Zorn";
 };
+class CustomAttributes
+{
+};
 class Mission
 {
 	class Intel
diff --git a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
index 07abc3fea55..0c7ea554e95 100644
--- a/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/CfgWardrobe.hpp
@@ -15,8 +15,12 @@ class EGVAR(wardrobe,base_H_goggles_off);
 
 class CfgWeapons {
     // Base Classes
+    class H_Booniehat_khk;
     class vn_b_headgear_base;
-    class vn_o_headgear_base;
+    class vn_o_headgear_base: H_Booniehat_khk {
+        class ItemInfo;
+    };
+
 
     #include "Helmets.hpp"
     #include "Booniehats.hpp"
@@ -27,4 +31,4 @@ class CfgWeapons {
 
 class CfgGlasses {
     #include "Facewear.hpp"
-};
+};
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
index 65435cbde80..a042b76cd65 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Facewear.hpp
@@ -100,4 +100,5 @@ class vn_o_acc_goggles_03: vn_glasses_base {
         modifiableTo[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02" };
         components[] = { "vn_o_acc_km32_01", "vn_o_acc_goggles_02"};
     };
-};
+    mass = 4;
+};
\ No newline at end of file
diff --git a/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
index 9f1fb7b961a..f08c966fae7 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Helmets.hpp
@@ -19,7 +19,10 @@ class CN02(side,var1,var2): base_class_dn {\
 }
 
 
-// Base classes in CfgWeapons.hpp
+class vn_b_helmet_m1_01_01: vn_b_headgear_base {
+    class ItemInfo;
+};
+
 
 // Parent Version aph6 & svh4
 #define base_class_up vn_b_headgear_base
@@ -67,11 +70,11 @@ class vn_o_helmet_zsh3_02: vn_o_helmet_zsh3_01 {
 };
 
 // Helmets with/without Goggles
-class vn_b_helmet_m1_01_01;
 class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
         modifiableTo[] = { "vn_b_helmet_m1_20_01" };
     };
+    
 };
 class vn_b_helmet_m1_14_02: vn_b_helmet_m1_14_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
@@ -84,12 +87,14 @@ class vn_b_helmet_m1_20_01 : vn_b_helmet_m1_14_01 {
         modifiableTo[] = { "vn_b_helmet_m1_14_01" };
         components[] = {"vn_b_acc_goggles_01"};
     };
+    MASS(12);
 };
 class vn_b_helmet_m1_20_02 : vn_b_helmet_m1_20_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
         modifiableTo[] = { "vn_b_helmet_m1_14_02" };
         components[] = {"vn_b_acc_goggles_01"};
     };
+    MASS(12);
 };
 
 
@@ -100,12 +105,13 @@ class vn_o_helmet_shl61_01: vn_o_headgear_base {
         modifiableTo[] = { "vn_o_helmet_shl61_02" };
         components[] = {"vn_o_acc_goggles_02"};
     };
+    MASS(12);
 };   
 // Without Goggles
 class vn_o_helmet_shl61_02: vn_o_helmet_shl61_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
         modifiableTo[] = { "vn_o_helmet_shl61_01" };
-    };
+    };MASS(10);
 };
 
 
@@ -114,12 +120,14 @@ class vn_b_helmet_t56_01_01: vn_b_headgear_base {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
         modifiableTo[] = { "vn_b_helmet_t56_02_01" };
     };
+    class ItemInfo;
 };
 class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
         modifiableTo[] = { "vn_b_helmet_t56_01_01" };
         components[] = {"vn_b_acc_goggles_01"};
     };
+    MASS(12);
 };
 
 class vn_b_helmet_t56_01_02: vn_b_helmet_t56_01_01 {
@@ -132,6 +140,7 @@ class vn_b_helmet_t56_02_02: vn_b_helmet_t56_02_01 {
         modifiableTo[] = { "vn_b_helmet_t56_01_02" };
         components[] = {"vn_b_acc_goggles_01"};
     };
+    MASS(12);
 };
 
 class vn_b_helmet_t56_01_03: vn_b_helmet_t56_01_01 {
@@ -144,6 +153,7 @@ class vn_b_helmet_t56_02_03: vn_b_helmet_t56_02_01 {
         modifiableTo[] = { "vn_b_helmet_t56_01_03" };
         components[] = {"vn_b_acc_goggles_01"};
     };
+    MASS(12);
 };
 
 
@@ -166,10 +176,12 @@ class vn_o_helmet_nva_01: vn_o_headgear_base {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_off) {
         modifiableTo[] = { "vn_o_helmet_nva_05" };
     };
+    class ItemInfo;
 };
 class vn_o_helmet_nva_05: vn_o_helmet_nva_01  {
     class ace_wardrobe: EGVAR(wardrobe,base_H_goggles_on) {
         modifiableTo[] = { "vn_o_helmet_nva_01" };
         components[] = {"vn_o_acc_goggles_02"};
     };
+    MASS(12);
 };
diff --git a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
index b7252fac4e5..d062edb7a53 100644
--- a/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
+++ b/addons/compat_sog/compat_sog_wardrobe/Uniforms_B.hpp
@@ -1,8 +1,19 @@
 // CfgWeapons
 
-class vn_b_uniform_base;
+class Uniform_Base;
+class vn_b_uniform_base: Uniform_Base {
+    class ItemInfo;
+};
+
 
 // Macros
+#define ITEMINFO_FIX()\
+class ItemInfo: ItemInfo {\
+    containerClass = "Supply70";\
+    mass = 70;\
+}
+
+
 #define UNIFORM_BASE_B(class1,class2)\
 class class1: vn_b_uniform_base {\
     class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
@@ -15,9 +26,24 @@ class class2: vn_b_uniform_base {\
     };\
 }
 
+#define UNIFORM_BASE_B_ITEMINFO_FIX(class1,class2)\
+class class1: vn_b_uniform_base {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_down) {\
+        modifiableTo[] = { QUOTE(class2) };\
+    };\
+};\
+class class2: vn_b_uniform_base {\
+    class ace_wardrobe: EGVAR(wardrobe,base_U_sleeves_up) {\
+        modifiableTo[] = { QUOTE(class1) };\
+    };\
+    ITEMINFO_FIX();\
+}
+
 #define B_U(div,var,camo) vn_b_uniform_##div##_##var##_##camo
 #define B_U_PAIR(div,down,up,camo) UNIFORM_BASE_B(B_U(div,down,camo),B_U(div,up,camo))
 
+#define B_U_PAIR_FIX(div,down,up,camo) UNIFORM_BASE_B_ITEMINFO_FIX(B_U(div,down,camo),B_U(div,up,camo))
+
 
 // Simple Variants
 // ACZAC
@@ -54,15 +80,15 @@ UNIFORM_BASE_B(vn_b_uniform_seal_01_07,vn_b_uniform_seal_02_07);
 // macv 05 and 04 have inconsistency between them -> different uniform maxLoad. This likely will cause the player to loose items when the uniform is filled to the brim. Difference is 1lb which translates to 16~17x ace bandages or 1x 1l blood
 #define B_U_PAIR_SET(camo)\
 B_U_PAIR(macv,02,03,camo);\
-B_U_PAIR(macv,05,04,camo)
+B_U_PAIR_FIX(macv,05,04,camo)
 
+B_U_PAIR_SET(OLIVE_FIELD);
 B_U_PAIR_SET(TIGER);
 B_U_PAIR_SET(TIGER_GREEN);
-B_U_PAIR_SET(ERDL);
 B_U_PAIR_SET(ERDL_BROWN);
 B_U_PAIR_SET(OLIVE);
-B_U_PAIR_SET(OLIVE_FIELD);
 B_U_PAIR_SET(LEOPARD);
+B_U_PAIR_SET(ERDL);
 B_U_PAIR_SET(LIZARD);
 B_U_PAIR_SET(BDQ);
 B_U_PAIR_SET(FROG);
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
deleted file mode 100644
index 592d502d4e3..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/Uniforms.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-#define S_70(className)\
-class className: vn_b_uniform_base {\
-    class ItemInfo: ItemInfo {\
-        containerClass = "Supply70";\
-        mass = 70;\
-    };\
-}
-
-class CfgWeapons {
-    class Uniform_Base;
-    class vn_b_uniform_base: Uniform_Base {
-        class ItemInfo;
-    };
-
-    S_70(vn_b_uniform_macv_04_01);
-    S_70(vn_b_uniform_macv_04_02);
-    S_70(vn_b_uniform_macv_04_05);
-    S_70(vn_b_uniform_macv_04_06);
-    S_70(vn_b_uniform_macv_04_07);
-    S_70(vn_b_uniform_macv_04_08);
-    S_70(vn_b_uniform_macv_04_15);
-    S_70(vn_b_uniform_macv_04_16);
-    S_70(vn_b_uniform_macv_04_17);
-    S_70(vn_b_uniform_macv_04_18);
-
-
-    //// US Headgear
-    // Helmets with Combat Goggles
-    class vn_b_helmet_m1_01_01;
-    class vn_b_helmet_m1_14_01: vn_b_helmet_m1_01_01 {
-        class ItemInfo;
-    };
-
-    class vn_b_helmet_m1_20_01: vn_b_helmet_m1_14_01 {
-        MASS(12);
-    };
-    class vn_b_helmet_m1_20_02: vn_b_helmet_m1_20_01 {
-        MASS(12);
-    };
-
-
-    // Crew Helmets with Goggles
-    class vn_b_headgear_base;
-    class vn_b_helmet_t56_01_01: vn_b_headgear_base {
-        class ItemInfo;
-    };
-    class vn_b_helmet_t56_02_01: vn_b_helmet_t56_01_01 {
-        MASS(12);
-    };
-
-    class vn_b_helmet_t56_02_02: vn_b_helmet_t56_02_01 {
-        MASS(12);
-    };
-
-    class vn_b_helmet_t56_02_03: vn_b_helmet_t56_02_01 {
-        MASS(12);
-    };
-
-    //// NVA Headgear
-
-
-
-    // NVA Gear usually has the Goggles Version be the parent version of the non-goggle version, meaning we have to "reset" the children to their previous mass.
-    class H_Booniehat_khk;
-    class vn_o_headgear_base: H_Booniehat_khk {
-        class ItemInfo;
-    };
-    // NVA Pilot Helmet with Goggles
-    class vn_o_helmet_shl61_01: vn_o_headgear_base {
-        MASS(12);
-    };
-    class vn_o_helmet_shl61_02: vn_o_helmet_shl61_01 {
-        MASS(10);
-    };
-
-    // NVA Crew Helmet with Goggles
-    class vn_o_helmet_tsh3_01: vn_o_headgear_base {
-        MASS(12);
-    };
-    class vn_o_helmet_tsh3_02: vn_o_helmet_tsh3_01 {
-        MASS(10);
-    };
-
-
-
-    // NVA Pith helmet with Crew Goggles
-    class vn_o_helmet_nva_01: vn_o_headgear_base {
-        class ItemInfo;
-    };
-    class vn_o_helmet_nva_05: vn_o_helmet_nva_01 {
-        MASS(12);
-    };
-};
-
-
-class CfgGlasses {
-    // VN Pilot Goggles + Mask
-    class vn_glasses_base;
-    class vn_o_acc_goggles_03: vn_glasses_base {
-        mass = 4;
-    };
-};
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
deleted file mode 100644
index fa521d4051d..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/config.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-#include "script_component.hpp"
-
-class CfgPatches {
-    class SUBADDON {
-        name = COMPONENT_NAME;
-        units[] = {};
-        weapons[] = {};
-        requiredVersion = REQUIRED_VERSION;
-        requiredAddons[] = {
-            "ace_wardrobe",
-            "vn_data_f"
-        };
-        skipWhenMissingDependencies = 1;
-        author = ECSTRING(common,ACETeam);
-        authors[] = {"OverlordZorn [CVO]"};
-        url = ECSTRING(main,URL);
-        VERSION_CONFIG;
-        addonRootClass = QUOTE(ADDON);
-    };
-};
-
-#include "Uniforms.hpp"
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
deleted file mode 100644
index 9eadffa1447..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/readme.md
+++ /dev/null
@@ -1,10 +0,0 @@
-The uniforms addressed in this sub-addon are the "sleeves rolled up" version of their "sleeves rolled down" counterpart.
-The problem is, that the rolled up version are both 1 lb (0.453 kg) lighter and can carry 1 lb less. 
-
-If we would ignore this, the player would run into situations where they would lose items by simply rolling up their sleeves.
-To counter this, I increased the maxLoad of those items by 1 lb to be aligned with their counterpart.
-
-
-Addition:
-This also adjusts helmets with combat goggles due to a weight discrepancy.
-
diff --git a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp b/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
deleted file mode 100644
index 845da92a822..00000000000
--- a/addons/compat_sog/compat_sog_wardrobe_uniform_fix/script_component.hpp
+++ /dev/null
@@ -1,5 +0,0 @@
-#define SUBCOMPONENT wardrobe_uniform_fix
-#define SUBCOMPONENT_BEAUTIFIED Wardrobe
-#include "..\script_component.hpp"
-
-#include "\z\ace\addons\wardrobe\script_macros_wardrobe.hpp"
\ No newline at end of file

From 8a7707c5839dd19bc3d5d5c35dfab0f893386180 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:49:56 +0100
Subject: [PATCH 125/139] Update
 addons/wardrobe/functions/fnc_replace_other.sqf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/functions/fnc_replace_other.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/functions/fnc_replace_other.sqf b/addons/wardrobe/functions/fnc_replace_other.sqf
index 4d14fb3364b..92797622476 100644
--- a/addons/wardrobe/functions/fnc_replace_other.sqf
+++ b/addons/wardrobe/functions/fnc_replace_other.sqf
@@ -2,7 +2,7 @@
 
 /*
  * Author: OverlordZorn
- * Function to replace a persons goggles/facewear.
+ * Function to replace a person's goggles/facewear.
  *
  * Arguments:
  * 0: Unit <OBJECT>

From d2bcdc73aba81ed6aa0e9051ed2ff03db9d7bb7b Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:50:09 +0100
Subject: [PATCH 126/139] Update docs/wiki/framework/wardrobe-framework.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 0ad7cd88932..99a6324bfeb 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -19,7 +19,7 @@ The Wardrobe Addon gives the player the opportunity to change/modify their curre
 
 For example, if a uniform has a normal variant and a "Rolled-Up Sleeves" variant, the player will be able to use ether an ACE Self Interaction or the CBA Context Menu in the Inventory.
 
-Since there is no reliable, common pattern in terms of class inheritence, not even within the same DLC, each possbile variant has to be defined individually within the classes config properties.
+Since there is no reliable, common pattern in terms of class inheritance, not even within the same DLC, each possible variant has to be defined individually within the classes' config properties.
 
 ### 1.1 Components
 

From 2dd976008b325c8633f966d3aa75aeabbf28e61e Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:50:19 +0100
Subject: [PATCH 127/139] Update docs/wiki/framework/wardrobe-framework.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 99a6324bfeb..0a73a5c579b 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -32,7 +32,7 @@ More examples can be found below.
 
 ### 1.2 Config Guidelines
 
-- An Container (Uniform, Vest, Backpack) should never change its maxLoad, unless there is a really good reason for it. This will result in the loss of items.
+- A Container (Uniform, Vest, Backpack) should never change its `maxLoad`, unless there is a really good reason for it. This will result in the loss of items.
 - Variants should never "magically" add/remove parts of themselves, unless its handled through a component.
 - There should not be a difference in weight between the different variants unless compoents get added/removed.
   - For Example: `Mass of Helmet with Goggles = Mass of Helmet + Mass of Goggles.`

From 93ee1aae51266956b9c0f42d9b0ef27518f20046 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:50:29 +0100
Subject: [PATCH 128/139] Update docs/wiki/framework/wardrobe-framework.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 0a73a5c579b..fc78ee29ddc 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -39,7 +39,7 @@ More examples can be found below.
 
 ## 2. Config
 
-Only directly defined Subclasses will be taken into account. A fully inherited subclass will be ignored and will not provide any interaction. The ace_wardrobe properties are to be found as a subclass of the item itself. Multiple base configs are designed at root of `configFile`.
+Only directly defined Subclasses will be taken into account. A fully inherited subclass will be ignored and will not provide any interaction. The `ace_wardrobe` properties are to be found as a subclass of the item itself. Multiple base configs are designed at root of `configFile`.
 
 ## 2.1 Properties
 

From 313ca2d5592a09b71bdd8b76a3fa61e6375a9762 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:50:40 +0100
Subject: [PATCH 129/139] Update docs/wiki/framework/wardrobe-framework.md
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index fc78ee29ddc..d8a8af7033d 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -46,14 +46,14 @@ Only directly defined Subclasses will be taken into account. A fully inherited s
 
 | Class Property |  Data Type | Description |
 | -------------- |  ----------- | ----------- |
-| modifiableTo[] | Array of Classnames | possible Variants this item can be turned into. |
-| components[] | Array of Classnames  | Components the current variant contains within itself | 
-| sound[]  | Array of CfgSound Entries | to be chosen by random when the action is performed |
-| sound_timing | Number 0..1 | defines the point time relative to the duration when the sound is played |
-| gesture | String of Classname | Gesture to be played when the action is performed |
-| alternativePicture | String of path to icon | to be used instead of target variant picture |
-| alternativeDisplayName | String | Will be used instead of the target variants displayname |
-| duration | Number in seconds | Duration of action. Items are being replaced at the end. |
+| `modifiableTo[]` | Array of Classnames | possible Variants this item can be turned into. |
+| `components[]` | Array of Classnames  | Components the current variant contains within itself | 
+| `sound[]` | Array of CfgSound Entries | to be chosen by random when the action is performed |
+| `sound_timing` | Number 0..1 | defines the point time relative to the duration when the sound is played |
+| `gesture` | String of Classname | Gesture to be played when the action is performed |
+| `alternativePicture` | String of path to icon | to be used instead of target variant picture |
+| `alternativeDisplayName` | String | Will be used instead of the target variants displayname |
+| `duration` | Number in seconds | Duration of action. Items are being replaced at the end. |
 
 ### 2.2 Base Classes
 

From d7b0b292a9e5bb777bddb14f2d32514cfa80eb73 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:50:48 +0100
Subject: [PATCH 130/139] Update
 addons/wardrobe/functions/fnc_replace_container.sqf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/functions/fnc_replace_container.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/functions/fnc_replace_container.sqf b/addons/wardrobe/functions/fnc_replace_container.sqf
index 797c3025ce9..baffd697ec0 100644
--- a/addons/wardrobe/functions/fnc_replace_container.sqf
+++ b/addons/wardrobe/functions/fnc_replace_container.sqf
@@ -33,7 +33,7 @@ INTEL_PRE(_hasNotepad,acex_intelitems_notepad);
 INTEL_PRE(_hasPhoto,acex_intelitems_photo);
 
 // ACE Overheating
-private _hasSpareBarrel = _magazineDetails findIf { _x#0 == "ACE_SpareBarrel" } > -1;
+private _hasSpareBarrel = _magazineDetails findIf { _x#0 isEqualTo "ACE_SpareBarrel" } > -1;
 if (_hasSpareBarrel) then { _hasSpareBarrel = [_player, "ACE_SpareBarrel" ] call CBA_fnc_getMagazineIndex };
 
 

From fee0715e36821943a83f996e04c4441466df1d1f Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:51:03 +0100
Subject: [PATCH 131/139] Update addons/wardrobe/functions/fnc_replace.sqf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/functions/fnc_replace.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/functions/fnc_replace.sqf b/addons/wardrobe/functions/fnc_replace.sqf
index 5982d30236b..df489586bcf 100644
--- a/addons/wardrobe/functions/fnc_replace.sqf
+++ b/addons/wardrobe/functions/fnc_replace.sqf
@@ -10,7 +10,7 @@
  * 2: Action Params <ARRAY>
  * - 0: Current Variant <CONFIG>
  * - 0: Desired Variant <CONFIG>
- * 3: Replace Now?  <BOOL>
+ * 3: Replace Now? <BOOL> (default: false)
  *
  * Return Value:
  * None

From b7268078da6d15ba825eba4a2c07556876ee319b Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:52:53 +0100
Subject: [PATCH 132/139] applying @rautamiekka magic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/functions/fnc_getIndexFromMagID.sqf | 2 +-
 docs/wiki/framework/wardrobe-framework.md           | 8 ++++----
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
index 16a1b6e8d6f..f70989ddd89 100644
--- a/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
+++ b/addons/wardrobe/functions/fnc_getIndexFromMagID.sqf
@@ -8,7 +8,7 @@
  * 0: magazine ID <STRING>
  *
  * Return Value:
- * The return value <BOOL>
+ * The return value <NUMBER>
  *
  * Example:
  * [_magID] call ace_wardrobe_fnc_getIndexFromMagID
diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index d8a8af7033d..55802769237 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -199,7 +199,7 @@ class CfgWeapons {
     // BASECLASS
     class H_Shemag_khk;
     
-    // WS Turban with Balistic Mask
+    // WS Turban with Ballistic Mask
     class H_turban_02_mask_black_lxws: H_Shemag_khk {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black" };
@@ -280,7 +280,7 @@ class CfgGlasses {
 
 ## 5. Sounds
 
-The following CfgSounds classes are integrated in ace_wardrobe and are the default sounds for the `ace_wardrobe_base` and `ace_wardrobe_base_H_visor_up`/`ace_wardrobe_base_H_visor_down` base classes.
+The following `CfgSounds` classes are integrated in `ace_wardrobe` and are the default sounds for the `ace_wardrobe_base` and `ace_wardrobe_base_H_visor_up`/`ace_wardrobe_base_H_visor_down` base classes.
 
 ### 5.1 Integrated Sounds
 
@@ -295,6 +295,6 @@ The number at the end of the classnames indicates the length of the file in 1/10
 - `ace_wardrobe_helmet_visor_05`
 
 ## 6. Compatibility
-Currently, ace_IntelItems and ace_overheating (spare barrels) are being directly supported.
+Currently, `ace_IntelItems` and `ace_overheating` (spare barrels) are being directly supported.
 
-If an addon or mod utilizes a magazines magazineID to handle additional data about an items carried by the player, then the process of modifying a wearable container (uniform, vest, backpack) to another variant will result in new magazineIDs for all magazines on the player.
+If an addon or mod utilizes a magazine's `magazineID` to handle additional data about items carried by the player, then the process of modifying a wearable container (uniform, vest, backpack) to another variant will result in new `magazineID`s for all magazines on the player.

From b4f035c67a1e3d55b573e294088ab65917c004b5 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:53:16 +0100
Subject: [PATCH 133/139] Update
 addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
index 38258a85c91..82809a400e0 100644
--- a/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
+++ b/addons/wardrobe/functions/fnc_getAllWardrobeItems.sqf
@@ -5,7 +5,7 @@
  * Debug - Function to retrieve all existing Wardrobe items.
  *
  * Arguments:
- * 0: Return as Config? <BOOL>
+ * 0: Return as Config? <BOOL> (default: false)
  *
  * Return Value:
  * Array Wardobe Items, ether as Classname or as Config <ARRAY>

From 482cd16f534d2556472966d888b715101eb784a7 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Fri, 10 Jan 2025 19:55:11 +0100
Subject: [PATCH 134/139] more rautamiekka magic
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Co-authored-by: Jouni Järvinen <rautamiekka@users.noreply.github.com>
---
 docs/wiki/framework/wardrobe-framework.md | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 55802769237..b5c5296a38c 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -158,11 +158,11 @@ class ace_wardrobe_base_H_goggles_off: ace_wardrobe_base {
 
 ### 3.1 Linear Example
 
-- first, we import the wardrobe base classes `ace_wardrobe_base_U_sleeves_down` and `ace_wardrobe_base_U_sleeves_up` at the root of `configFile`.
-- The uniform we would like to configure is part of CfgWeapons and inherits from `Uniform_Base`.
-- Then we edit the desired classes and create the `ace_wardrobe` subclass by inheriting from the partent base classes.
+- First, we import the wardrobe base classes `ace_wardrobe_base_U_sleeves_down` and `ace_wardrobe_base_U_sleeves_up` at the root of `configFile`.
+- The uniform we would like to configure is part of `CfgWeapons` and inherits from `Uniform_Base`.
+- Then we edit the desired classes and create the `ace_wardrobe` subclass by inheriting from the parent base classes.
 - Afterwards, we define which variants this class can be modified to.
-- This Example does not require the use of components since we're not adding or removing anything.
+- This example does not require the use of components since we're not adding or removing anything.
 ```cpp
 // config.cpp
 class ace_wardrobe_base_U_sleeves_down;
@@ -188,7 +188,7 @@ class CfgWeapons {
     };
 };
 ```
-### 3.2 Complex Example with partial use of components
+### 3.2 Complex example with partial use of components
 
 
 ```cpp

From d5631b90f90f1db72b6081ad508c5720fe4500b2 Mon Sep 17 00:00:00 2001
From: OverlordZorn <dennisAzorn@gmail.com>
Date: Fri, 10 Jan 2025 20:00:43 +0100
Subject: [PATCH 135/139] rephrase comment

---
 docs/wiki/framework/wardrobe-framework.md | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index b5c5296a38c..7a7033f8e5e 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -210,28 +210,28 @@ class CfgWeapons {
     class lxWS_H_turban_01_black: H_Shemag_khk {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
         };
     };
     // WS Turban Variant 2
     class lxWS_H_turban_02_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
         };
     };
     // WS Turban Variant 3
     class lxWS_H_turban_03_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
         };
     };
     // WS Turban Variant 4
     class lxWS_H_turban_04_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not required to be defined since it empty array get inherited from the base parent.
+            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
         };
     };
 };

From 65b7a2cf18836e5947e0f26742794b0da43da909 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 13 Jan 2025 20:34:58 +0100
Subject: [PATCH 136/139] Update docs/wiki/framework/wardrobe-framework.md

Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 7a7033f8e5e..4de00fa805c 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -210,7 +210,7 @@ class CfgWeapons {
     class lxWS_H_turban_01_black: H_Shemag_khk {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
+            components[] = { }; // not needed when empty - only shown as an example for how/when to use components
         };
     };
     // WS Turban Variant 2

From 3b1d7c4fe70507e672741a5a5060926cea3519ab Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 13 Jan 2025 20:35:05 +0100
Subject: [PATCH 137/139] Update docs/wiki/framework/wardrobe-framework.md

Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 4de00fa805c..11e82e30865 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -231,7 +231,7 @@ class CfgWeapons {
     class lxWS_H_turban_04_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_03_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
+            components[] = { }; // not needed when empty - only shown as an example for how/when to use components
         };
     };
 };

From 9e19841d39374edf97360b03fc43731902b0f8cf Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 13 Jan 2025 20:35:14 +0100
Subject: [PATCH 138/139] Update docs/wiki/framework/wardrobe-framework.md

Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index 11e82e30865..e4a05b98239 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -224,7 +224,7 @@ class CfgWeapons {
     class lxWS_H_turban_03_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_02_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
+            components[] = { }; // not needed when empty - only shown as an example for how/when to use components
         };
     };
     // WS Turban Variant 4

From 945191b217267221f7ff549a88830676af3917e1 Mon Sep 17 00:00:00 2001
From: OverlordZorn <56258612+OverlordZorn@users.noreply.github.com>
Date: Mon, 13 Jan 2025 20:35:21 +0100
Subject: [PATCH 139/139] Update docs/wiki/framework/wardrobe-framework.md

Co-authored-by: Mike-MF <TyroneMF@hotmail.com>
---
 docs/wiki/framework/wardrobe-framework.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/wiki/framework/wardrobe-framework.md b/docs/wiki/framework/wardrobe-framework.md
index e4a05b98239..fda3f4ff1a7 100644
--- a/docs/wiki/framework/wardrobe-framework.md
+++ b/docs/wiki/framework/wardrobe-framework.md
@@ -217,7 +217,7 @@ class CfgWeapons {
     class lxWS_H_turban_02_black: lxWS_H_turban_01_black {
         class ace_wardrobe: ace_wardrobe_base {
             modifiableTo[] = { "lxWS_H_turban_01_black", "lxWS_H_turban_03_black", "lxWS_H_turban_04_black", "H_turban_02_mask_black_lxws" };
-            components[] = { }; // not needed when empty - only shown as an examlpe for how/when to use components
+            components[] = { }; // not needed when empty - only shown as an example for how/when to use components
         };
     };
     // WS Turban Variant 3