using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyTitle("BackpackMod")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("BackpackMod")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("7ad4216f-36aa-47ca-8593-088115c7694b")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace BackpackModNamespace;
[BepInPlugin("com.Nyoh.backpack", "Backpack Mod", "1.0.1")]
public class BackpackMod : BaseUnityPlugin
{
[HarmonyPatch(typeof(PlayerAvatar), "Update")]
private class Patch_PlayerAvatar_Update
{
private static void Postfix(PlayerAvatar __instance)
{
//IL_007a: Unknown result type (might be due to invalid IL or missing references)
//IL_0096: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)__instance == (Object)null)
{
return;
}
bool flag = false;
if (FI_isLocal != null)
{
flag = (bool)FI_isLocal.GetValue(__instance);
}
else if ((Object)(object)__instance.photonView != (Object)null)
{
flag = __instance.photonView.IsMine;
}
if (!flag)
{
return;
}
PhysGrabber physGrabber = __instance.physGrabber;
if (!((Object)(object)physGrabber == (Object)null))
{
if (Input.GetKeyDown(KeyStore.Value))
{
TryStore(physGrabber);
}
if (Input.GetKeyDown(KeyDrop.Value))
{
TryDrop(__instance);
}
}
}
private static void TryStore(PhysGrabber grabber)
{
PhysGrabObject val = null;
if (FI_grabbedPhys != null)
{
object? value = FI_grabbedPhys.GetValue(grabber);
val = (PhysGrabObject)((value is PhysGrabObject) ? value : null);
}
if ((Object)(object)val == (Object)null && (Object)(object)grabber.physGrabPoint != (Object)null && grabber.physGrabPoint.childCount > 0)
{
Transform child = grabber.physGrabPoint.GetChild(0);
val = ((Component)child).GetComponent<PhysGrabObject>();
}
if ((Object)(object)val == (Object)null)
{
Log.LogWarning((object)"Nenhum item segurado para guardar!");
}
else if (Stored.Count >= MaxItems.Value)
{
Log.LogWarning((object)("Mochila cheia! (" + Stored.Count + "/" + MaxItems.Value + ")"));
}
else
{
Stored.Insert(0, val);
((Component)val).gameObject.SetActive(false);
grabber.ReleaseObject(0, 0.1f);
Log.LogInfo((object)("Guardado: " + ((Object)val).name + " → Total: " + Stored.Count));
}
}
private static void TryDrop(PlayerAvatar avatar)
{
//IL_009b: Unknown result type (might be due to invalid IL or missing references)
//IL_008e: Unknown result type (might be due to invalid IL or missing references)
//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
//IL_00b2: Unknown result type (might be due to invalid IL or missing references)
//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
//IL_00bc: Unknown result type (might be due to invalid IL or missing references)
//IL_00c6: Unknown result type (might be due to invalid IL or missing references)
//IL_00cb: Unknown result type (might be due to invalid IL or missing references)
//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Unknown result type (might be due to invalid IL or missing references)
//IL_012e: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_0134: Unknown result type (might be due to invalid IL or missing references)
//IL_0100: Unknown result type (might be due to invalid IL or missing references)
//IL_0105: Unknown result type (might be due to invalid IL or missing references)
//IL_010f: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Unknown result type (might be due to invalid IL or missing references)
//IL_0119: Unknown result type (might be due to invalid IL or missing references)
//IL_015d: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
if (Stored.Count == 0)
{
Log.LogWarning((object)"Mochila vazia!");
return;
}
PhysGrabObject val = Stored[0];
Stored.RemoveAt(0);
if ((Object)(object)val == (Object)null)
{
Log.LogWarning((object)"Item null removido da mochila!");
return;
}
Camera val2 = Camera.main;
if ((Object)(object)val2 == (Object)null)
{
val2 = ((Component)avatar).GetComponentInChildren<Camera>();
}
Vector3 val3 = (((Object)(object)val2 != (Object)null) ? ((Component)val2).transform.forward : ((Component)avatar).transform.forward);
Vector3 val4 = ((Component)avatar).transform.position + val3 * 1.6f + Vector3.up * 1f;
RaycastHit val5 = default(RaycastHit);
if (Physics.Raycast(val4 + Vector3.up * 0.5f, Vector3.down, ref val5, 10f))
{
val4 = ((RaycastHit)(ref val5)).point + Vector3.up * 0.2f;
}
((Component)val).transform.position = val4;
((Component)val).transform.rotation = Quaternion.LookRotation(val3, Vector3.up);
((Component)val).gameObject.SetActive(true);
Rigidbody val6 = default(Rigidbody);
if (((Component)val).TryGetComponent<Rigidbody>(ref val6))
{
val6.velocity = Vector3.zero;
val6.angularVelocity = Vector3.zero;
}
Log.LogInfo((object)("Soltou: " + ((Object)val).name + " → Restam: " + Stored.Count));
}
}
public static ManualLogSource Log;
public static ConfigEntry<KeyCode> KeyStore;
public static ConfigEntry<KeyCode> KeyDrop;
public static ConfigEntry<int> MaxItems;
private static readonly List<PhysGrabObject> Stored = new List<PhysGrabObject>();
private static FieldInfo FI_grabbedPhys;
private static FieldInfo FI_isLocal;
private void Awake()
{
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_007c: Expected O, but got Unknown
//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
//IL_00be: Expected O, but got Unknown
Log = ((BaseUnityPlugin)this).Logger;
KeyStore = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "Store Key", (KeyCode)102, "Store item");
KeyDrop = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Controls", "Drop Key", (KeyCode)122, "Drop last item");
MaxItems = ((BaseUnityPlugin)this).Config.Bind<int>("Settings", "Max Items", 30, new ConfigDescription("Maximum items", (AcceptableValueBase)(object)new AcceptableValueRange<int>(1, 60), Array.Empty<object>()));
FI_grabbedPhys = AccessTools.Field(typeof(PhysGrabber), "grabbedPhysGrabObject");
FI_isLocal = AccessTools.Field(typeof(PlayerAvatar), "isLocal");
Harmony val = new Harmony("com.Nyoh.backpack");
val.PatchAll();
Log.LogInfo((object)"BackpackMod v1.0.1 loaded! F = guardar | Z = soltar");
}
}