private void Unsubscribe()
{
//Unsubscribe(nameof(OnCorpsePopulate));
Unsubscribe(nameof(OnLootSpawn));
Unsubscribe(nameof(OnCollectiblePickup));
Unsubscribe(nameof(OnItemUnwrap));
Unsubscribe(nameof(OnQuarryToggled));
Unsubscribe(nameof(OnPreDispenserGather));
Unsubscribe(nameof(OnPreDispenserBonus));
// No need to unpatch harmony for these hooks
//OnExcavatorProduceResources
HarmonyInstance.Unpatch(AccessTools.Method(typeof(ExcavatorArm), "ProduceResources"), HarmonyPatchType.Prefix, HarmonyId);
//OnResourceDispenserStart
HarmonyInstance.Unpatch(AccessTools.Method(typeof(ResourceDispenser), "Start"), HarmonyPatchType.Prefix, HarmonyId);
//OnCorpseApplyLoot2
HarmonyInstance.Unpatch(AccessTools.Method(typeof(State_Dead), "StartRagdoll"), HarmonyPatchType.Transpiler, HarmonyId);
//OnCorpseApplyLoot
// ReSharper disable once RedundantNameQualifier
HarmonyInstance.Unpatch(AccessTools.Method(typeof(global::HumanNPC), "ApplyLoot"), HarmonyPatchType.Prefix, HarmonyId);
HarmonyInstance.Unpatch(AccessTools.Method(typeof(ScarecrowNPC), "ApplyLoot"), HarmonyPatchType.Prefix, HarmonyId);
// WAGONS
//OnTrainWagonLootSpawn
//HarmonyInstance.Unpatch(AccessTools.Method(typeof(TrainCarUnloadable), "FillWithLoot"), HarmonyPatchType.Prefix, HarmoniId);
//OnTrainWagonOreLevel
//HarmonyInstance.Unpatch(AccessTools.Method(typeof(TrainCarUnloadable), "GetOrePercent"), HarmonyPatchType.Prefix, HarmoniId);
UpdateStackingSubscriptions(true);
UpdateConfigSubscriptions(true);
}
private void UpdateStackingSubscriptions(bool unsubscribe = false)
{
// Always remove harmony patches to prevent duplicates
HarmonyInstance.Unpatch(AccessTools.Method(typeof(ItemContainer), "QuickIndustrialPreCheck"), HarmonyPatchType.Prefix, HarmonyId);
//HarmonyInstance.Unpatch(AccessTools.Method(typeof(Item), "MoveToContainer"), HarmonyPatchType.Prefix, HarmonyId);
HarmonyInstance.Unpatch(AccessTools.Method(typeof(ItemDefinition), "get_craftingStackable"), HarmonyPatchType.Prefix, HarmonyId);
if (stackSizeController.Enabled && !unsubscribe)
{
Subscribe(nameof(CanStackItem));
Subscribe(nameof(OnItemStacked));
Subscribe(nameof(OnItemSplit));
Subscribe(nameof(CanCombineDroppedItem));
HarmonyInstance.Patch(AccessTools.Method(typeof(ItemContainer), "QuickIndustrialPreCheck"), AccessTools.Method(typeof(ItemContainer_QuickIndustrialPreCheck), nameof(ItemContainer_QuickIndustrialPreCheck.Prefix)));
//HarmonyInstance.Patch(AccessTools.Method(typeof(Item), "MoveToContainer"), AccessTools.Method(typeof(Item_MoveToContainer), "Prefix"));
HarmonyInstance.Patch(AccessTools.Method(typeof(ItemDefinition), "get_craftingStackable"), AccessTools.Method(typeof(ItemDefinition_CraftingStackable), nameof(ItemDefinition_CraftingStackable.Prefix)));
}
else
{
Unsubscribe(nameof(CanStackItem));
Unsubscribe(nameof(OnItemStacked));
Unsubscribe(nameof(OnItemSplit));
Unsubscribe(nameof(CanCombineDroppedItem));
}
}
© 2023 Quttera Ltd. All rights reserved.