Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Harmony/Harmony_Bag.cs
Nathaniel Cosford e06f2bd282 Add All Mods
2025-05-29 23:33:28 +09:30

55 lines
2.0 KiB
C#

namespace Harmony.EntityPlayerRebirth
{
internal class BagPatches
{
public static int numSlots = 50;
public static MethodInfo checkBagAssigned = AccessTools.Method(typeof(Bag), "checkBagAssigned", new Type[] { typeof(int) });
public static MethodInfo onBackpackChanged = AccessTools.Method(typeof(Bag), "onBackpackChanged", new Type[] { });
[HarmonyPatch(typeof(Bag))]
[HarmonyPatch("GetSlots")]
public class GetSlots
{
private static bool Prefix(Bag __instance, ref ItemStack[] __result, ref global::EntityAlive ___entity, ref ItemStack[] ___items)
{
if (___entity.Spawned)
{
float additionalRows = ___entity.Buffs.GetCustomVar("$BackpackCapacityIncrease");
if (additionalRows > 0)
{
numSlots = numSlots + (int)additionalRows;
}
}
checkBagAssigned.Invoke(__instance, new object[] { numSlots });
__result = ___items;
return false;
}
}
[HarmonyPatch(typeof(Bag))]
[HarmonyPatch("SetSlots")]
public class SetSlots
{
private static bool Prefix(Bag __instance, ItemStack[] _slots, ref global::EntityAlive ___entity, ref ItemStack[] ___items, ref XUiEvent_BackpackItemsChangedInternal ___OnBackpackItemsChangedInternal)
{
if (___entity.Spawned)
{
float additionalRows = ___entity.Buffs.GetCustomVar("$BackpackCapacityIncrease");
if (additionalRows > 0)
{
numSlots = numSlots + (int)additionalRows;
}
}
checkBagAssigned.Invoke(__instance, new object[] { numSlots });
___items = _slots;
onBackpackChanged.Invoke(__instance, new object[] { });
return false;
}
}
}
}