using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; using Unity.Netcode; using UnityEngine; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("KnifeSpawner")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("KnifeSpawner")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("82ae3210-1d5e-4c09-b9db-8ec6a562b7bd")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")] [assembly: AssemblyVersion("1.0.0.0")] [BepInPlugin("com.goofytheboy.knifespawner", "KnifeSpawner", "1.0.0")] public class KnifeSpawnerMod : BaseUnityPlugin { private void Awake() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) new Harmony("com.goofytheboy.knifespawner").PatchAll(); ((BaseUnityPlugin)this).Logger.LogInfo((object)"KnifeSpawner by Goofytheboy loaded!"); } } public class KnifeSpawnHandler : MonoBehaviour { private Component playerComponent; private void Start() { playerComponent = ((IEnumerable)((Component)this).GetComponents()).FirstOrDefault((Func)((Component c) => ((object)c).GetType().Name == "PlayerControllerB")); } private void Update() { if (!((Object)(object)playerComponent == (Object)null)) { PropertyInfo property = ((object)playerComponent).GetType().GetProperty("IsOwner", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); bool flag = false; if (property != null && property.GetValue(playerComponent) is bool flag2) { flag = flag2; } if (flag && Keyboard.current != null && ((ButtonControl)Keyboard.current.kKey).wasPressedThisFrame) { SpawnKnifeForMe(); } } } private void SpawnKnifeForMe() { //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: 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_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) List list = StartOfRound.Instance?.allItemsList?.itemsList; if (list == null) { return; } Item val = ((IEnumerable)list).FirstOrDefault((Func)((Item i) => i.itemName.ToLower().Contains("knife"))); if ((Object)(object)val == (Object)null) { Debug.Log((object)"[KnifeSpawner] Knife not found in item list!"); return; } Component obj = playerComponent; Vector3? obj2; if (obj == null) { obj2 = null; } else { Transform transform = obj.transform; obj2 = ((transform != null) ? new Vector3?(transform.position) : null); } Vector3 val2 = (Vector3)(((??)obj2) ?? ((Component)this).transform.position); GameObject val3 = Object.Instantiate(val.spawnPrefab, val2, Quaternion.identity); NetworkObject component = val3.GetComponent(); if ((Object)(object)component != (Object)null) { NetworkManager singleton = NetworkManager.Singleton; if ((Object)(object)singleton != (Object)null && singleton.IsServer) { try { component.Spawn(false); } catch { } } } Debug.Log((object)"[KnifeSpawner] Knife spawned!"); } } [HarmonyPatch] internal class PatchPlayerStart { private static MethodBase TargetMethod() { Type type = AccessTools.TypeByName("PlayerControllerB"); if (type == null) { return null; } return type.GetMethod("Start", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); } private static void Postfix(object __instance) { Component val = (Component)((__instance is Component) ? __instance : null); if ((Object)(object)val != (Object)null) { val.gameObject.AddComponent(); } } }