Порт на игру 3.4: замок ячеек, бросок на пустое место окна, проверка версии (#79)
- 3.4 убрала XUiC_ContainerStandardControls.ToggleLockMode: замок при обыске крысой/волком и у сумки волка запрещается в сеттере UserLockMode. - 3.4 кладёт предмет, брошенный на пустое место окна, прямо в ящик/мешок/ рюкзак (dropItemToGrid) мимо запертых ячеек - при обыске отказ. - GameVersionGuard: мод собран под 3.4. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
945b03dfea
commit
a747f5aa8d
+42
-1
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Замок ячеек при обыске не включается. В 3.4 ToggleLockMode нет: замок - свойство UserLockMode, кнопка -
|
||||
/// XUiC_ButtonSelectable (её подсветку снимаем, иначе кнопка осталась бы «нажатой»).</summary>
|
||||
[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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>3.4: предмет, брошенный на пустое место окна (не в ячейку), игра кладёт прямо в ящик, мешок или рюкзак
|
||||
/// (dropItemToGrid) - мимо запертых ячеек. При обыске - отказ, предмет остаётся в руке.</summary>
|
||||
[HarmonyPatch]
|
||||
public static class Patch_DropItemToGrid
|
||||
{
|
||||
static System.Collections.Generic.IEnumerable<System.Reflection.MethodBase> 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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Щелчок по запертой ячейке контейнера - отказ «рюкзак полон».</summary>
|
||||
[HarmonyPatch(typeof(XUiC_ItemStack), nameof(XUiC_ItemStack.Update))]
|
||||
public static class Patch_ItemStack_Update
|
||||
|
||||
Reference in New Issue
Block a user