diff --git a/Patches/ReloadInPlacePatches.cs b/Patches/ReloadInPlacePatches.cs index 5e1e2eb..1d6dbce 100644 --- a/Patches/ReloadInPlacePatches.cs +++ b/Patches/ReloadInPlacePatches.cs @@ -112,8 +112,8 @@ public static class ReloadInPlacePatches [PatchPrefix] public static bool Prefix(Player.FirearmController __instance, MagazineClass magazine, ItemAddressClass gridItemAddress) { - // If gridItemAddress isn't null, it already found a place for the current mag, so let it run - if (gridItemAddress != null || !Settings.SwapMags.Value) + // If gridItemAddress isn't null, it already found a place for the current mag, so let it run (unless always swap is enabled) + if (!Settings.SwapMags.Value || (gridItemAddress != null && !Settings.AlwaysSwapMags.Value)) { return true; } diff --git a/Settings.cs b/Settings.cs index 9d4d002..cc77978 100644 --- a/Settings.cs +++ b/Settings.cs @@ -82,6 +82,7 @@ internal class Settings public static ConfigEntry ShowMultiSelectDebug { get; set; } // Advanced public static ConfigEntry SwapItems { get; set; } public static ConfigEntry SwapMags { get; set; } + public static ConfigEntry AlwaysSwapMags { get; set; } public static ConfigEntry SwapImpossibleContainers { get; set; } public static ConfigEntry ReorderGrids { get; set; } public static ConfigEntry SynchronizeStashScrolling { get; set; } @@ -406,7 +407,16 @@ internal class Settings "Reload Magazines In-Place", true, new ConfigDescription( - "When reloading a weapon with a magazine, swap locations with the new magazine (if possible)", + "When reloading a weapon with a magazine, swap locations with the new magazine if necessary (and possible)", + null, + new ConfigurationManagerAttributes { }))); + + configEntries.Add(AlwaysSwapMags = config.Bind( + InventorySection, + "Always Reload Magazines In-Place", + false, + new ConfigDescription( + "Always reload magazines in-place, even if there's space not to. Note that in-place reloads are slower.", null, new ConfigurationManagerAttributes { })));