diff --git a/HarmonySrc/GameVersionGuard.cs b/HarmonySrc/GameVersionGuard.cs
index 8ecfe59..a994ac7 100644
--- a/HarmonySrc/GameVersionGuard.cs
+++ b/HarmonySrc/GameVersionGuard.cs
@@ -29,10 +29,10 @@ namespace NecromancerTome
///
public static class GameVersionGuard
{
- /// Под какую версию собран мод: Major и десяток Minor (3.3.x = 3 и 3; сборка 1.4.x была под 3.2).
+ /// Под какую версию собран мод: Major и десяток Minor (3.4.x = 3 и 4; 1.5-1.6 были под 3.3, 1.4.x - под 3.2).
public const int SupportedMajor = 3;
- public const int SupportedMinorTens = 3;
- public const string SupportedText = "3.3";
+ public const int SupportedMinorTens = 4;
+ public const string SupportedText = "3.4";
private static bool? supported;
diff --git a/HarmonySrc/RatLoot.cs b/HarmonySrc/RatLoot.cs
index aa8bc1c..51f96df 100644
--- a/HarmonySrc/RatLoot.cs
+++ b/HarmonySrc/RatLoot.cs
@@ -487,7 +487,6 @@ namespace NecromancerTome
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveFillAndSmart));
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveFillStacks));
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveSmart));
- yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.ToggleLockMode));
}
public static bool Prefix(XUiC_ContainerStandardControls __instance, System.Reflection.MethodBase __originalMethod)
@@ -504,6 +503,48 @@ namespace NecromancerTome
}
}
+ /// Замок ячеек при обыске не включается. В 3.4 ToggleLockMode нет: замок - свойство UserLockMode, кнопка -
+ /// XUiC_ButtonSelectable (её подсветку снимаем, иначе кнопка осталась бы «нажатой»).
+ [HarmonyPatch(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.UserLockMode), MethodType.Setter)]
+ public static class Patch_UserLockMode
+ {
+ public static bool Prefix(XUiC_ContainerStandardControls __instance, bool value)
+ {
+ if (!value || !Viewing)
+ {
+ return true;
+ }
+ if (__instance.btnToggleLockMode != null)
+ {
+ __instance.btnToggleLockMode.IsSelected = false;
+ }
+ return false;
+ }
+ }
+
+ /// 3.4: предмет, брошенный на пустое место окна (не в ячейку), игра кладёт прямо в ящик, мешок или рюкзак
+ /// (dropItemToGrid) - мимо запертых ячеек. При обыске - отказ, предмет остаётся в руке.
+ [HarmonyPatch]
+ public static class Patch_DropItemToGrid
+ {
+ static System.Collections.Generic.IEnumerable TargetMethods()
+ {
+ yield return AccessTools.Method(typeof(XUiC_LootContainer), nameof(XUiC_LootContainer.dropItemToGrid));
+ yield return AccessTools.Method(typeof(XUiC_BagContainer), nameof(XUiC_BagContainer.dropItemToGrid));
+ yield return AccessTools.Method(typeof(XUiC_Backpack), nameof(XUiC_Backpack.dropItemToGrid));
+ }
+
+ public static bool Prefix()
+ {
+ if (!Viewing)
+ {
+ return true;
+ }
+ Deny();
+ return false;
+ }
+ }
+
/// Щелчок по запертой ячейке контейнера - отказ «рюкзак полон».
[HarmonyPatch(typeof(XUiC_ItemStack), nameof(XUiC_ItemStack.Update))]
public static class Patch_ItemStack_Update
diff --git a/HarmonySrc/WolfBag.cs b/HarmonySrc/WolfBag.cs
index d61e2f3..9510eaa 100644
--- a/HarmonySrc/WolfBag.cs
+++ b/HarmonySrc/WolfBag.cs
@@ -690,7 +690,6 @@ namespace NecromancerTome
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveFillAndSmart));
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveFillStacks));
yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.MoveSmart));
- yield return AccessTools.Method(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.ToggleLockMode));
}
public static bool Prefix(XUiC_ContainerStandardControls __instance)
@@ -699,6 +698,24 @@ namespace NecromancerTome
}
}
+ /// Замок ячеек у сумки волка не включается (в 3.4 вместо ToggleLockMode - свойство UserLockMode).
+ [HarmonyPatch(typeof(XUiC_ContainerStandardControls), nameof(XUiC_ContainerStandardControls.UserLockMode), MethodType.Setter)]
+ public static class Patch_ContainerStandardControls_UserLockMode_WolfBag
+ {
+ public static bool Prefix(XUiC_ContainerStandardControls __instance, bool value)
+ {
+ if (!value || !WolfBagControls.Blocked(__instance))
+ {
+ return true;
+ }
+ if (__instance.btnToggleLockMode != null)
+ {
+ __instance.btnToggleLockMode.IsSelected = false;
+ }
+ return false;
+ }
+ }
+
/// Кнопка замка видна по привязке {hasslotlocks} - у волка её нет.
[HarmonyPatch(typeof(XUiC_BagContainer), nameof(XUiC_BagContainer.GetBindingValueInternal))]
public static class Patch_BagContainer_Binding_WolfBag
diff --git a/NecromancerHarmony.dll b/NecromancerHarmony.dll
index 83c2228..6bd7861 100644
Binary files a/NecromancerHarmony.dll and b/NecromancerHarmony.dll differ
diff --git a/NecromancerHarmony.pdb b/NecromancerHarmony.pdb
index 9ff5a04..16ac0dc 100644
Binary files a/NecromancerHarmony.pdb and b/NecromancerHarmony.pdb differ