diff --git a/addons/repair/ACE_Repair.hpp b/addons/repair/ACE_Repair.hpp
index 219945003d..a8aac18690 100644
--- a/addons/repair/ACE_Repair.hpp
+++ b/addons/repair/ACE_Repair.hpp
@@ -8,7 +8,7 @@ class ACE_Repair {
             requiredEngineer = QGVAR(engineerSetting_Wheel);
             repairingTime = 10;
             repairingTimeSelfCoef = 1;
-            items[] = {"ToolKit"};
+            items = QGVAR(wheelRepairRequiredItems);
             condition = QUOTE(call FUNC(canReplaceWheel));
             itemConsumed = 0;
 
@@ -35,6 +35,7 @@ class ACE_Repair {
             requiredEngineer = 0;
             repairingTime = 15;
             callbackSuccess = QUOTE(call FUNC(doRepair));
+            items[] = {"ToolKit"};
         };
         class RepairTrack: MiscRepair {
             displayName = CSTRING(Repairing);
diff --git a/addons/repair/ACE_Settings.hpp b/addons/repair/ACE_Settings.hpp
index fc3f063fb1..22e68ce3e9 100644
--- a/addons/repair/ACE_Settings.hpp
+++ b/addons/repair/ACE_Settings.hpp
@@ -68,4 +68,13 @@ class ACE_Settings {
         value = 1;
         category = ECSTRING(OptionsMenu,CategoryLogistics);
     };
+    class GVAR(wheelRepairRequiredItems) {
+        displayName = CSTRING(wheelRepairRequiredItems_name);
+        description = CSTRING(wheelRepairRequiredItems_description);
+        category = ECSTRING(OptionsMenu,CategoryLogistics);
+        typeName = "SCALAR";
+        value = 0;
+        values[] = {"None", "ToolKit"};
+        _values[] = {{}, {"ToolKit"}};
+    };
 };
diff --git a/addons/repair/CfgVehicles.hpp b/addons/repair/CfgVehicles.hpp
index e9ca5258ba..83d44592ce 100644
--- a/addons/repair/CfgVehicles.hpp
+++ b/addons/repair/CfgVehicles.hpp
@@ -97,6 +97,15 @@ class CfgVehicles {
                 typeName = "BOOL";
                 defaultValue = 1;
             };
+            class wheelRepairRequiredItems {
+                displayName = CSTRING(wheelRepairRequiredItems_name);
+                description = CSTRING(wheelRepairRequiredItems_description);
+                typeName = "NUMBER";
+                class values {
+                    class None { name = "None"; value = 0;  default = 1;};
+                    class ToolKit { name = "ToolKit"; value = 1; };
+                };
+            };
         };
         class ModuleDescription {
             description = CSTRING(moduleDescription);
diff --git a/addons/repair/functions/fnc_canRepair.sqf b/addons/repair/functions/fnc_canRepair.sqf
index bb44a3dcd4..8fb2a4938e 100644
--- a/addons/repair/functions/fnc_canRepair.sqf
+++ b/addons/repair/functions/fnc_canRepair.sqf
@@ -21,7 +21,7 @@
 params ["_caller", "_target", "_hitPoint", "_className"];
 TRACE_4("params",_caller,_target,_hitPoint,_className);
 
-private ["_config", "_engineerRequired", "_items", "_locations", "_return", "_condition", "_vehicleStateCondition"];
+private ["_config", "_engineerRequired", "_items", "_locations", "_return", "_condition", "_vehicleStateCondition", "_settingName", "_settingItemsArray"];
 
 _config = (ConfigFile >> "ACE_Repair" >> "Actions" >> _className);
 if !(isClass _config) exitwith {false}; // or go for a default?
@@ -38,7 +38,17 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then {
 };
 if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitwith {false};
 
-_items = getArray (_config >> "items");
+//Items can be an array of required items or a string to a ACE_Setting array
+_items = if (isArray (_config >> "items")) then {
+    getArray (_config >> "items");
+} else {
+    _settingName = getText (_config >> "items");
+    _settingItemsArray = getArray (configFile >> "ACE_Settings" >> _settingName >> "_values");
+    if ((isNil _settingName) || {(missionNamespace getVariable _settingName) >= (count _settingItemsArray)}) exitWith {
+        ERROR("bad setting"); ["BAD"]
+    };
+    _settingItemsArray select (missionNamespace getVariable _settingName);
+};
 if (count _items > 0 && {!([_caller, _items] call FUNC(hasItems))}) exitwith {false};
 
 _return = true;
diff --git a/addons/repair/functions/fnc_moduleRepairSettings.sqf b/addons/repair/functions/fnc_moduleRepairSettings.sqf
index aad1e7a8d1..98ff354662 100644
--- a/addons/repair/functions/fnc_moduleRepairSettings.sqf
+++ b/addons/repair/functions/fnc_moduleRepairSettings.sqf
@@ -33,4 +33,6 @@ if (!isServer) exitWith {};
 
 [_logic, QGVAR(addSpareParts), "addSpareParts"] call EFUNC(common,readSettingFromModule);
 
+[_logic, QGVAR(wheelRepairRequiredItems), "wheelRepairRequiredItems"] call EFUNC(common,readSettingFromModule);
+
 ACE_LOGINFO("Repair Module Initialized.");
diff --git a/addons/repair/functions/fnc_repair.sqf b/addons/repair/functions/fnc_repair.sqf
index 4fa1c2d903..fd3b4f032b 100644
--- a/addons/repair/functions/fnc_repair.sqf
+++ b/addons/repair/functions/fnc_repair.sqf
@@ -21,7 +21,7 @@
 params ["_caller", "_target", "_hitPoint", "_className"];
 TRACE_4("params",_calller,_target,_hitPoint,_className);
 
-private["_callbackProgress", "_callerAnim", "_calller", "_condition", "_config", "_consumeItems", "_displayText", "_engineerRequired", "_iconDisplayed", "_items", "_locations", "_repairTime", "_repairTimeConfig", "_return", "_usersOfItems", "_vehicleStateCondition", "_wpn"];
+private["_callbackProgress", "_callerAnim", "_calller", "_condition", "_config", "_consumeItems", "_displayText", "_engineerRequired", "_iconDisplayed", "_items", "_locations", "_repairTime", "_repairTimeConfig", "_return", "_usersOfItems", "_vehicleStateCondition", "_wpn", "_settingName", "_settingItemsArray"];
 
 _config = (ConfigFile >> "ACE_Repair" >> "Actions" >> _className);
 if !(isClass _config) exitwith {false}; // or go for a default?
@@ -37,7 +37,18 @@ _engineerRequired = if (isNumber (_config >> "requiredEngineer")) then {
 };
 if !([_caller, _engineerRequired] call FUNC(isEngineer)) exitwith {false};
 if (isEngineOn _target) exitwith {false};
-_items = getArray (_config >> "items");
+
+//Items can be an array of required items or a string to a ACE_Setting array
+_items = if (isArray (_config >> "items")) then {
+    getArray (_config >> "items");
+} else {
+    _settingName = getText (_config >> "items");
+    _settingItemsArray = getArray (configFile >> "ACE_Settings" >> _settingName >> "_values");
+    if ((isNil _settingName) || {(missionNamespace getVariable _settingName) >= (count _settingItemsArray)}) exitWith {
+        ERROR("bad setting"); ["BAD"]
+    };
+    _settingItemsArray select (missionNamespace getVariable _settingName);
+};
 if (count _items > 0 && {!([_caller, _items] call FUNC(hasItems))}) exitwith {false};
 
 _return = true;
diff --git a/addons/repair/stringtable.xml b/addons/repair/stringtable.xml
index 77687ae9cc..8de9b07d90 100644
--- a/addons/repair/stringtable.xml
+++ b/addons/repair/stringtable.xml
@@ -901,5 +901,11 @@
             <Polish>Ilość wybranych części zamiennych.</Polish>
             <Portuguese>Número de partes sobressalentes.</Portuguese>
         </Key>
+        <Key ID="STR_ACE_Repair_wheelRepairRequiredItems_name">
+            <English>Wheel repair requirements</English>
+        </Key>
+        <Key ID="STR_ACE_Repair_wheelRepairRequiredItems_description">
+            <English>Items required to remove/replace wheels</English>
+        </Key>
     </Package>
 </Project>