Load ammo preset will pull from equipment
This commit is contained in:
52
Patches/LoadMagPresetsPatch.cs
Normal file
52
Patches/LoadMagPresetsPatch.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using Aki.Reflection.Patching;
|
||||||
|
using EFT.InventoryLogic;
|
||||||
|
using HarmonyLib;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace UIFixes
|
||||||
|
{
|
||||||
|
public class LoadMagPresetsPatch : ModulePatch
|
||||||
|
{
|
||||||
|
protected override MethodBase GetTargetMethod()
|
||||||
|
{
|
||||||
|
Type type = AccessTools.Method(typeof(ISession), nameof(ISession.SaveMagBuild)).GetParameters()[0].ParameterType;
|
||||||
|
return AccessTools.Method(type, "smethod_0");
|
||||||
|
}
|
||||||
|
|
||||||
|
// This method returns a list of places to search for ammo. For whatever reason, it only looks
|
||||||
|
// in equipment if stash + sorting table are not present.
|
||||||
|
// Can't just add equipment because that includes equipped slots and it likes to pull the chambered bullet out of equipped guns
|
||||||
|
[PatchPostfix]
|
||||||
|
public static void Postfix(Inventory inventory, List<LootItemClass> __result)
|
||||||
|
{
|
||||||
|
if (!__result.Contains(inventory.Equipment))
|
||||||
|
{
|
||||||
|
var vest = inventory.Equipment.GetSlot(EquipmentSlot.TacticalVest);
|
||||||
|
if (vest.ContainedItem is LootItemClass vestLootItem)
|
||||||
|
{
|
||||||
|
__result.Add(vestLootItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
var pockets = inventory.Equipment.GetSlot(EquipmentSlot.Pockets);
|
||||||
|
if (pockets.ContainedItem is LootItemClass pocketsLootItem)
|
||||||
|
{
|
||||||
|
__result.Add(pocketsLootItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
var backpack = inventory.Equipment.GetSlot(EquipmentSlot.Backpack);
|
||||||
|
if (backpack.ContainedItem is LootItemClass backpackLootItem)
|
||||||
|
{
|
||||||
|
__result.Add(backpackLootItem);
|
||||||
|
}
|
||||||
|
|
||||||
|
var secureContainer = inventory.Equipment.GetSlot(EquipmentSlot.SecuredContainer);
|
||||||
|
if (secureContainer.ContainedItem is LootItemClass secureContainerLootItem)
|
||||||
|
{
|
||||||
|
__result.Add(secureContainerLootItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -44,6 +44,7 @@ namespace UIFixes
|
|||||||
new FocusTradeQuantityPatch().Enable();
|
new FocusTradeQuantityPatch().Enable();
|
||||||
RememberRepairerPatches.Enable();
|
RememberRepairerPatches.Enable();
|
||||||
new GridWindowButtonsPatch().Enable();
|
new GridWindowButtonsPatch().Enable();
|
||||||
|
new LoadMagPresetsPatch().Enable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool InRaid()
|
public static bool InRaid()
|
||||||
|
|||||||
Reference in New Issue
Block a user