using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using System.Text.RegularExpressions;
using BepInEx;
using GameNetcodeStuff;
using HarmonyLib;
using LethalCompanyMenu.MainMenu.Patch;
using LethalCompanyMenu.MainMenu.Stuff;
using Microsoft.CodeAnalysis;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyProduct("NIKO Mod Menu")]
[assembly: AssemblyTitle("NIKO Mod Menu")]
[assembly: AssemblyDescription("This Is NIKO Mod Menu\rMade By discord.gg/nikomods/notfishvr")]
[assembly: AssemblyCompany("NIKO Mods")]
[assembly: AssemblyCopyright("Copyright © 2023 NIKO Mods")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: ComVisible(false)]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: AssemblyInformationalVersion("1.0")]
[assembly: AssemblyTrademark("NIKO Mods")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
internal sealed class RefSafetyRulesAttribute : Attribute
{
public readonly int Version;
public RefSafetyRulesAttribute(int P_0)
{
Version = P_0;
}
}
}
internal static class RandomExtensionsHelpers
{
public static void Shuffle<T>(this Random rng, T[] array)
{
int num = array.Length;
while (num > 1)
{
int num2 = rng.Next(num--);
T val = array[num];
array[num] = array[num2];
array[num2] = val;
}
}
}
namespace LethalCompanyMenu.MainMenu
{
[BepInPlugin("lethalcompany.GUI", "notfishvr", "1.0.0")]
internal class MainGUI : BaseUnityPlugin
{
[CompilerGenerated]
private static class <>O
{
public static WindowFunction <0>__OnGUI;
}
public static bool Doonce = false;
internal static bool nightVision;
internal static bool enableGod;
public Texture2D button;
public Texture2D buttonHovered;
public Texture2D buttonActive;
public Texture2D windowBackground;
public Texture2D textArea;
public Texture2D textAreaHovered;
public Texture2D textAreaActive;
public Texture2D box;
public GameObject directionalLightClone;
public PlayerControllerHandler playerControllerHandler;
public static PlayerManager _playerManager;
public Dictionary<Type, List<Component>> objectCache = new Dictionary<Type, List<Component>>();
public bool joining = false;
public bool shouldSpawnEnemy;
public AudioReverbTrigger currentAudioTrigger;
public KeyCode toggleKey = (KeyCode)277;
public int numberDeadLastRound;
public static bool Cursorlock = false;
public int SpeedSelection = 0;
public static GameObject pointer;
public string[] SpeedOptions = new string[5] { "Slow", "Default", "Fast", "Super Fast", "FASTTTTTTTS" };
public float[] SpeedValues = new float[5] { 5f, 7.5f, 15f, 17.5f, 20f };
public float Speed = 1.7f;
internal static bool playerManagerEnabled = false;
public string guiSelectedEnemy;
public static bool hasGUISynced;
public Random random = new Random();
public float cacheRefreshInterval = 1.5f;
public int enemyCount = 0;
public bool addMoney = false;
public static RoundManager currentRound;
public string logs = "Logs (Only shows player deaths for now):\n";
public static SelectableLevel currentLevel;
public static Rect GUIRect = new Rect(0f, 0f, 540f, 240f);
public static int selectedTab = 0;
public static readonly string[] tabNames = new string[6] { "Self Tab", "Server Tab", "Visuals Tab", "Host", "Player List", "Settings" };
public bool[] TogglePlayerList = new bool[999];
public bool[] ToggleSelf = new bool[999];
public bool[] ToggleServer = new bool[999];
public bool[] ToggleVisuals = new bool[999];
public bool[] ToggleHost = new bool[999];
public bool toggled = true;
public PlayerControllerB selectedPlayer;
internal static float nightVisionIntensity;
internal static float nightVisionRange;
internal static Color nightVisionColor;
public float toggleDelay = 0.5f;
public float lastToggleTime;
public Vector2 scrollPosition = Vector2.zero;
private static MainGUI _instance;
public static MainGUI Instance => _instance;
private void DrawSelfTab()
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
scrollPosition = GUILayout.BeginScrollView(scrollPosition, Array.Empty<GUILayoutOption>());
ToggleSelf[1] = ToggleButton("No Fog", ToggleSelf[1]);
ToggleSelf[2] = ToggleButton("Night Vision", ToggleSelf[2]);
ToggleSelf[3] = ToggleButton("God Mode", ToggleSelf[3]);
ToggleSelf[4] = ToggleButton("Speed", ToggleSelf[4]);
ToggleSelf[5] = ToggleButton("Fly", ToggleSelf[5]);
ToggleSelf[6] = ToggleButton("No Weight", ToggleSelf[6]);
ToggleSelf[7] = ToggleButton("No Fall Damage", ToggleSelf[7]);
ToggleSelf[8] = ToggleButton("Loot Through Walls", ToggleSelf[8]);
ToggleSelf[9] = ToggleButton("Invisibility", ToggleSelf[9]);
GUILayout.EndScrollView();
}
private void DrawServerTab()
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
scrollPosition = GUILayout.BeginScrollView(scrollPosition, Array.Empty<GUILayoutOption>());
ToggleServer[1] = ToggleButton("Enemy Cant Be Spawned", ToggleServer[1]);
ToggleServer[2] = ToggleButton("Gets All Scrap", ToggleServer[2]);
ToggleServer[3] = ToggleButton("Never Lose Scrap", ToggleServer[3]);
GUILayout.EndScrollView();
}
private void DrawVisualsTab()
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
scrollPosition = GUILayout.BeginScrollView(scrollPosition, Array.Empty<GUILayoutOption>());
ToggleVisuals[1] = ToggleButton("Object ESP", ToggleVisuals[1]);
ToggleVisuals[2] = ToggleButton("Player ESP", ToggleVisuals[2]);
ToggleVisuals[3] = ToggleButton("Enemy ESP", ToggleVisuals[3]);
GUILayout.EndScrollView();
}
private void DrawHostTab()
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0012: Unknown result type (might be due to invalid IL or missing references)
scrollPosition = GUILayout.BeginScrollView(scrollPosition, Array.Empty<GUILayoutOption>());
ToggleHost[1] = ToggleButton("Revive all players", ToggleHost[1]);
ToggleHost[2] = ToggleButton("Spawn enemy on localpos", ToggleHost[2]);
GUILayout.EndScrollView();
}
private void DrawPlayerListTab()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
//IL_00f0: Unknown result type (might be due to invalid IL or missing references)
//IL_012d: Unknown result type (might be due to invalid IL or missing references)
_instance.scrollPosition = GUILayout.BeginScrollView(_instance.scrollPosition, Array.Empty<GUILayoutOption>());
int num = 1;
PlayerControllerB[] array = Object.FindObjectsOfType<PlayerControllerB>();
foreach (PlayerControllerB val in array)
{
string playerUsername = val.playerUsername;
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
GUILayout.Label("Player " + num + ": " + playerUsername, Array.Empty<GUILayoutOption>());
if (GUILayout.Button("i", (GUILayoutOption[])(object)new GUILayoutOption[2]
{
GUILayout.Width(20f),
GUILayout.Height(20f)
}))
{
selectedPlayer = val;
playerManagerEnabled = true;
}
GUILayout.EndHorizontal();
if (playerManagerEnabled && (Object)(object)selectedPlayer == (Object)(object)val)
{
if (GUILayout.Button("Kill", Array.Empty<GUILayoutOption>()))
{
selectedPlayer.DamagePlayerFromOtherClientServerRpc(int.MaxValue, Vector3.zero, -1);
}
if (GUILayout.Button("TP", Array.Empty<GUILayoutOption>()))
{
((Component)GameNetworkManager.Instance.localPlayerController).transform.position = ((Component)selectedPlayer).transform.position;
}
if (GUILayout.Button("Back", Array.Empty<GUILayoutOption>()))
{
selectedPlayer = null;
playerManagerEnabled = false;
}
}
num++;
}
GUILayout.EndScrollView();
}
private void DrawSettingsTab()
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_001a: Unknown result type (might be due to invalid IL or missing references)
_instance.scrollPosition = GUILayout.BeginScrollView(_instance.scrollPosition, Array.Empty<GUILayoutOption>());
GUILayout.Label("Speed: " + SpeedOptions[SpeedSelection], Array.Empty<GUILayoutOption>());
SpeedSelection = (int)GUILayout.HorizontalSlider((float)SpeedSelection, 0f, (float)(SpeedOptions.Length - 1), Array.Empty<GUILayoutOption>());
Speed = SpeedValues[SpeedSelection];
GUILayout.EndScrollView();
}
public void Update()
{
GUIToggleCheck();
_playerManager.UpdatePlayers();
playerControllerHandler.Update();
}
private void OnGUI()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
//IL_0070: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004a: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Expected O, but got Unknown
GUI.skin = (GUISkin)(((object)GUI.skin) ?? ((object)new GUISkin()));
UpdateStyles();
Update();
if (toggled)
{
Rect gUIRect = GUIRect;
object obj = <>O.<0>__OnGUI;
if (obj == null)
{
WindowFunction val = OnGUI;
<>O.<0>__OnGUI = val;
obj = (object)val;
}
GUIRect = GUI.Window(69, gUIRect, (WindowFunction)obj, "Lethal Company GUI | Toggle: " + ((object)(KeyCode)(ref toggleKey)).ToString());
}
}
public static void OnGUI(int windowId)
{
//IL_002b: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
GUILayout.BeginArea(new Rect(10f, 10f, ((Rect)(ref GUIRect)).width - 20f, ((Rect)(ref GUIRect)).height - 20f));
GUILayout.Space(10f);
DrawTabButtons();
if (selectedTab == 0)
{
_instance.DrawSelfTab();
}
else if (selectedTab == 1)
{
_instance.DrawServerTab();
}
else if (selectedTab == 2)
{
_instance.DrawVisualsTab();
}
else if (selectedTab == 3)
{
_instance.DrawHostTab();
}
else if (selectedTab == 4)
{
_instance.DrawPlayerListTab();
}
else if (selectedTab == 5)
{
_instance.DrawSettingsTab();
}
GUILayout.EndArea();
GUI.DragWindow(new Rect(0f, 0f, ((Rect)(ref GUIRect)).width, 20f));
}
private void GUIToggleCheck()
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
if (UnityInput.Current.GetKey(toggleKey) && Time.time - lastToggleTime >= toggleDelay)
{
toggled = !toggled;
lastToggleTime = Time.time;
}
}
private static void DrawTabButtons()
{
GUILayout.BeginHorizontal(Array.Empty<GUILayoutOption>());
for (int i = 0; i < tabNames.Length; i++)
{
if (selectedTab == i)
{
GUIStyle val = Instance.CreateButtonStyle(Instance.buttonActive, Instance.buttonHovered, Instance.buttonActive);
if (GUILayout.Button(tabNames[i], val, Array.Empty<GUILayoutOption>()))
{
selectedTab = i;
}
}
else
{
GUIStyle val2 = Instance.CreateButtonStyle(Instance.button, Instance.buttonHovered, Instance.buttonActive);
if (GUILayout.Button(tabNames[i], val2, Array.Empty<GUILayoutOption>()))
{
selectedTab = i;
}
}
}
GUILayout.EndHorizontal();
}
private bool ToggleButton(string text, bool toggle)
{
GUIStyle val = CreateButtonStyle(toggle ? buttonActive : button, buttonHovered, buttonActive);
if (GUILayout.Button(text, val, Array.Empty<GUILayoutOption>()))
{
return !toggle;
}
return toggle;
}
private void Awake()
{
//IL_0029: Unknown result type (might be due to invalid IL or missing references)
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0099: Unknown result type (might be due to invalid IL or missing references)
//IL_00b5: 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_00ed: Unknown result type (might be due to invalid IL or missing references)
_playerManager = new PlayerManager();
playerControllerHandler = new PlayerControllerHandler();
_instance = this;
button = CreateTexture(new Color32((byte)64, (byte)64, (byte)64, byte.MaxValue));
buttonHovered = CreateTexture(new Color32((byte)75, (byte)75, (byte)75, byte.MaxValue));
buttonActive = CreateTexture(new Color32((byte)100, (byte)100, (byte)100, byte.MaxValue));
windowBackground = CreateTexture(new Color32((byte)30, (byte)30, (byte)30, byte.MaxValue));
textArea = CreateTexture(new Color32((byte)64, (byte)64, (byte)64, byte.MaxValue));
textAreaHovered = CreateTexture(new Color32((byte)75, (byte)75, (byte)75, byte.MaxValue));
textAreaActive = CreateTexture(new Color32((byte)100, (byte)100, (byte)100, byte.MaxValue));
box = CreateTexture(new Color32((byte)40, (byte)40, (byte)40, byte.MaxValue));
}
private void UpdateStyles()
{
GUI.skin.button = CreateButtonStyle(button, buttonHovered, buttonActive);
GUI.skin.window = CreateWindowStyle(windowBackground);
GUI.skin.textArea = CreateTextFieldStyle(textArea, textAreaHovered, textAreaActive);
GUI.skin.textField = CreateTextFieldStyle(textArea, textAreaHovered, textAreaActive);
GUI.skin.box = CreateBoxStyle(box);
}
public Texture2D CreateTexture(Color32 color)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Expected O, but got Unknown
//IL_000c: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
Texture2D val = new Texture2D(1, 1);
val.SetPixel(0, 0, Color32.op_Implicit(color));
val.Apply();
return val;
}
public GUIStyle CreateButtonStyle(Texture2D normal, Texture2D hover, Texture2D active)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
GUIStyle val = new GUIStyle(GUI.skin.button);
val.normal.background = normal;
val.hover.background = hover;
val.active.background = active;
val.normal.textColor = Color.white;
val.hover.textColor = Color.white;
val.active.textColor = Color.white;
return val;
}
public GUIStyle CreateWindowStyle(Texture2D background)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_0042: Unknown result type (might be due to invalid IL or missing references)
GUIStyle val = new GUIStyle(GUI.skin.window);
val.normal.background = background;
val.onNormal.background = background;
val.normal.textColor = Color.white;
val.onNormal.textColor = Color.white;
return val;
}
public GUIStyle CreateTextFieldStyle(Texture2D normal, Texture2D hover, Texture2D active)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007e: Unknown result type (might be due to invalid IL or missing references)
GUIStyle val = new GUIStyle(GUI.skin.textField);
val.normal.background = normal;
val.hover.background = hover;
val.active.background = active;
val.focused.background = active;
val.normal.textColor = Color.white;
val.hover.textColor = Color.white;
val.active.textColor = Color.white;
val.focused.textColor = Color.white;
return val;
}
public GUIStyle CreateBoxStyle(Texture2D normal)
{
//IL_000b: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Expected O, but got Unknown
//IL_003e: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_0060: Unknown result type (might be due to invalid IL or missing references)
GUIStyle val = new GUIStyle(GUI.skin.box);
val.normal.background = normal;
val.hover.background = normal;
val.active.background = normal;
val.normal.textColor = Color.white;
val.hover.textColor = Color.white;
val.active.textColor = Color.white;
return val;
}
public static bool WorldToScreen(Camera camera, Vector3 world, out Vector3 screen)
{
//IL_0003: Unknown result type (might be due to invalid IL or missing references)
//IL_0004: Unknown result type (might be due to invalid IL or missing references)
//IL_0009: Unknown result type (might be due to invalid IL or missing references)
screen = camera.WorldToViewportPoint(world);
screen.x *= Screen.width;
screen.y *= Screen.height;
screen.y = (float)Screen.height - screen.y;
return screen.z > 0f;
}
}
[BepInPlugin("com.notfishvr.lethalcompany", "notfishvr", "1.0.0")]
public class Loader : BaseUnityPlugin
{
public void FixedUpdate()
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002a: Expected O, but got Unknown
Awake();
if (!Object.op_Implicit((Object)(object)GameObject.Find("Loader")))
{
GameObject val = new GameObject("Loader");
val.AddComponent<LocalPlayer>();
val.AddComponent<MainGUI>();
}
}
private void Awake()
{
try
{
string path = Paths.ConfigPath + "/BepInEx.cfg";
string input = File.ReadAllText(path);
input = Regex.Replace(input, "HideManagerGameObject = .+", "HideManagerGameObject = true");
File.WriteAllText(path, input);
}
catch (Exception)
{
}
}
}
}
namespace LethalCompanyMenu.MainMenu.Patch
{
public class ReflectionUtil
{
private const BindingFlags privateInst = BindingFlags.Instance | BindingFlags.NonPublic;
private const BindingFlags privateStatic = BindingFlags.Static | BindingFlags.NonPublic;
private const BindingFlags privateField = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField;
private const BindingFlags privateProp = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetProperty;
private const BindingFlags privateMethod = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod;
private const BindingFlags staticField = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField;
private const BindingFlags staticProp = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetProperty;
private const BindingFlags staticMethod = BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod;
private object @object { get; }
private Type type { get; }
private ReflectionUtil(object obj)
{
@object = obj;
type = obj.GetType();
}
private T? GetValue<T>(string variableName, BindingFlags flags)
{
try
{
return (T)type.GetField(variableName, flags).GetValue(@object);
}
catch (InvalidCastException)
{
return default(T);
}
}
private T? GetProperty<T>(string propertyName, BindingFlags flags)
{
try
{
return (T)type.GetProperty(propertyName, flags).GetValue(@object);
}
catch (InvalidCastException)
{
return default(T);
}
}
private ReflectionUtil SetValue(string variableName, object value, BindingFlags flags)
{
try
{
type.GetField(variableName, flags).SetValue(@object, value);
return this;
}
catch (Exception)
{
return null;
}
}
private ReflectionUtil SetProperty(string propertyName, object value, BindingFlags flags)
{
try
{
type.GetProperty(propertyName, flags).SetValue(@object, value);
return this;
}
catch (Exception)
{
return null;
}
}
private T? Invoke<T>(string methodName, BindingFlags flags, params object[] args)
{
try
{
return (T)type.GetMethod(methodName, flags).Invoke(@object, args);
}
catch (InvalidCastException)
{
return default(T);
}
}
private T? GetValue<T>(string fieldName, bool isStatic = false, bool isProperty = false)
{
BindingFlags flags = ((!isProperty) ? (isStatic ? (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField) : (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField)) : (isStatic ? (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetProperty) : (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetProperty)));
return isProperty ? GetProperty<T>(fieldName, flags) : GetValue<T>(fieldName, flags);
}
public ReflectionUtil SetValue(string fieldName, object value, bool isStatic = false, bool isProperty = false)
{
BindingFlags flags = ((!isProperty) ? (isStatic ? (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetField) : (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetField)) : (isStatic ? (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.GetProperty) : (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.GetProperty)));
return isProperty ? SetProperty(fieldName, value, flags) : SetValue(fieldName, value, flags);
}
private T? Invoke<T>(string methodName, bool isStatic = false, params object[] args)
{
return Invoke<T>(methodName, isStatic ? (BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.InvokeMethod) : (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.InvokeMethod), args);
}
public object GetValue(string fieldName, bool isStatic = false, bool isProperty = false)
{
return GetValue<object>(fieldName, isStatic, isProperty);
}
public ReflectionUtil Invoke(string methodName, bool isStatic = false, params object[] args)
{
return Invoke<object>(methodName, isStatic, args)?.Reflect();
}
public ReflectionUtil Invoke(string methodName, params object[] args)
{
return Invoke<object>(methodName, isStatic: false, args)?.Reflect();
}
public static ReflectionUtil GetReflection(object obj)
{
return new ReflectionUtil(obj);
}
}
public static class ReflectorExtensions
{
public static ReflectionUtil Reflect(this object obj)
{
return ReflectionUtil.GetReflection(obj);
}
}
}
namespace LethalCompanyMenu.MainMenu.Stuff
{
public class PlayerManager : MonoBehaviour
{
private List<PlayerControllerB> _players = new List<PlayerControllerB>();
private void Start()
{
UpdatePlayers();
}
public void UpdatePlayers()
{
_players.Clear();
if (!LocalPlayer.IsValid())
{
FindLocalPlayer();
}
_players.AddRange(Object.FindObjectsOfType<PlayerControllerB>());
_players.RemoveAll((PlayerControllerB player) => !IsValidPlayer(player));
}
private void FindLocalPlayer()
{
PlayerControllerB[] array = Object.FindObjectsOfType<PlayerControllerB>();
PlayerControllerB[] array2 = array;
foreach (PlayerControllerB val in array2)
{
if ((Object)(object)val != (Object)null && val.isPlayerControlled && ((NetworkBehaviour)val).IsOwner)
{
LocalPlayer.localPlayer = new LocalPlayer(val);
break;
}
}
}
private bool IsValidPlayer(PlayerControllerB player)
{
return (Object)(object)player != (Object)null && (Object)(object)player != (Object)(object)LocalPlayer.localPlayer?.PlayerController && (Object)(object)((Component)player).gameObject != (Object)null && player.playerSteamId != 0;
}
public IEnumerable<PlayerControllerB> GetPlayers()
{
return _players;
}
}
public class LocalPlayer : MonoBehaviour
{
public static LocalPlayer localPlayer;
public PlayerControllerB PlayerController { get; set; }
public LocalPlayer(PlayerControllerB playerController)
{
PlayerController = playerController;
}
public static bool IsValid()
{
return (Object)(object)localPlayer != (Object)null && (Object)(object)localPlayer.PlayerController != (Object)null && (Object)(object)((Component)localPlayer.PlayerController).gameObject != (Object)null && localPlayer.PlayerController.isPlayerControlled;
}
}
public class PlayerControllerHandler
{
internal class Weight
{
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerControllerB), "Update")]
public static void WeightUpdate(PlayerControllerB __instance)
{
if (!((Object)(object)LocalPlayer.localPlayer.PlayerController == (Object)null) && __instance.playerClientId == LocalPlayer.localPlayer.PlayerController.playerClientId)
{
__instance.carryWeight = (MainGUI.Instance.ToggleSelf[6] ? 1f : GetHeldWeight(__instance));
}
}
private static float GetHeldWeight(PlayerControllerB player)
{
float num = 1f;
if (player.ItemSlots == null)
{
return num;
}
GrabbableObject[] itemSlots = player.ItemSlots;
foreach (GrabbableObject val in itemSlots)
{
if (!((Object)(object)val == (Object)null) && !((Object)(object)val.itemProperties == (Object)null))
{
num += Mathf.Clamp(val.itemProperties.weight - 1f, 0f, 10f);
}
}
return num;
}
}
internal class NoFallDamage
{
[HarmonyPatch(typeof(PlayerControllerB), "PlayerHitGroundEffects")]
public static bool NoFallDamagePatch(PlayerControllerB __instance)
{
if (MainGUI.Instance.ToggleSelf[7])
{
__instance.takingFallDamage = false;
LocalPlayer.localPlayer.PlayerController.twoHanded = false;
}
return true;
}
}
internal class EnemyCannotBeSpawned
{
[HarmonyPostfix]
[HarmonyPatch(typeof(RoundManager), "EnemyCannotBeSpawned")]
public static bool EnemyCannotBeSpawnedPatch()
{
if (MainGUI.Instance.ToggleServer[1])
{
return false;
}
return true;
}
}
internal class InteractThroughWalls
{
[HarmonyPostfix]
[HarmonyPatch(typeof(PlayerControllerB), "LateUpdate")]
public static void InteractThroughWallsPatch(PlayerControllerB __instance)
{
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0051: Unknown result type (might be due to invalid IL or missing references)
//IL_0056: Unknown result type (might be due to invalid IL or missing references)
if (MainGUI.Instance.ToggleSelf[8])
{
__instance.grabDistance = 10000f;
LayerMask val = LayerMask.op_Implicit(LayerMask.GetMask(new string[1] { "Props" }));
val = LayerMask.op_Implicit(LayerMask.GetMask(new string[2] { "Props", "InteractableObject" }));
typeof(PlayerControllerB).GetField("interactableObjectsMask", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).SetValue(__instance, ((LayerMask)(ref val)).value);
}
else
{
typeof(PlayerControllerB).GetField("interactableObjectsMask", BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).SetValue(__instance, 832);
}
}
}
public static GrabbableObject[] grabbableObjectsUsed = (GrabbableObject[])(object)new GrabbableObject[0];
public void NeverLoseScrap()
{
if (MainGUI.Instance.ToggleServer[3] && StartOfRound.Instance.allPlayersDead)
{
StartOfRound.Instance.allPlayersDead = false;
}
}
public void Invisibility()
{
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_0033: Unknown result type (might be due to invalid IL or missing references)
//IL_0049: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
if (!((Object)(object)LocalPlayer.localPlayer == (Object)null) && MainGUI.Instance.ToggleSelf[9])
{
Vector3 val = (StartOfRound.Instance.shipHasLanded ? StartOfRound.Instance.notSpawnedPosition.position : Vector3.zero);
LocalPlayer.localPlayer.Reflect().Invoke("UpdatePlayerPositionServerRpc", val, true, false, false, true);
}
}
public void SetLocalPlayerHealth(int health = int.MaxValue)
{
if ((Object)(object)LocalPlayer.localPlayer.PlayerController != (Object)null && LocalPlayer.localPlayer.PlayerController.isPlayerControlled && ((NetworkBehaviour)LocalPlayer.localPlayer.PlayerController).IsOwner)
{
LocalPlayer.localPlayer.PlayerController.health = health;
}
}
public void Fly()
{
//IL_0057: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_0072: Unknown result type (might be due to invalid IL or missing references)
//IL_0092: Unknown result type (might be due to invalid IL or missing references)
//IL_00bd: 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_00d4: Unknown result type (might be due to invalid IL or missing references)
//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_0124: 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_013b: Unknown result type (might be due to invalid IL or missing references)
//IL_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_0160: Unknown result type (might be due to invalid IL or missing references)
//IL_018b: Unknown result type (might be due to invalid IL or missing references)
//IL_019b: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: Unknown result type (might be due to invalid IL or missing references)
//IL_01f1: Unknown result type (might be due to invalid IL or missing references)
//IL_0201: Unknown result type (might be due to invalid IL or missing references)
//IL_0207: Unknown result type (might be due to invalid IL or missing references)
//IL_020c: Unknown result type (might be due to invalid IL or missing references)
//IL_022c: Unknown result type (might be due to invalid IL or missing references)
//IL_025a: Unknown result type (might be due to invalid IL or missing references)
//IL_026a: Unknown result type (might be due to invalid IL or missing references)
//IL_0271: Unknown result type (might be due to invalid IL or missing references)
//IL_0276: Unknown result type (might be due to invalid IL or missing references)
//IL_0296: Unknown result type (might be due to invalid IL or missing references)
float num = MainGUI.Instance.Speed * Time.deltaTime;
PlayerControllerB playerController = LocalPlayer.localPlayer.PlayerController;
if (UnityInput.Current.GetKey((KeyCode)304))
{
num *= 2.2f;
}
if (UnityInput.Current.GetKey((KeyCode)119))
{
Transform transform = ((Component)playerController.playerRigidbody).transform;
transform.position += ((Component)playerController.playerGlobalHead).transform.forward * num;
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
if (UnityInput.Current.GetKey((KeyCode)97))
{
Transform transform2 = ((Component)playerController.playerRigidbody).transform;
transform2.position += ((Component)playerController.playerGlobalHead).transform.right * (0f - num);
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
if (UnityInput.Current.GetKey((KeyCode)115))
{
Transform transform3 = ((Component)playerController.playerRigidbody).transform;
transform3.position += ((Component)playerController.playerGlobalHead).transform.forward * (0f - num);
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
if (UnityInput.Current.GetKey((KeyCode)100))
{
Transform transform4 = ((Component)playerController.playerRigidbody).transform;
transform4.position += ((Component)playerController.playerGlobalHead).transform.right * num;
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
if (UnityInput.Current.GetKey((KeyCode)32))
{
Transform transform5 = ((Component)playerController.playerRigidbody).transform;
transform5.position += ((Component)playerController.playerGlobalHead).transform.up * num;
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
if (UnityInput.Current.GetKey((KeyCode)306))
{
Transform transform6 = ((Component)playerController.playerRigidbody).transform;
transform6.position += ((Component)playerController.playerGlobalHead).transform.up * (0f - num);
playerController.playerRigidbody.velocity = new Vector3(0f, 0f, 0f);
}
}
public void Speed()
{
LocalPlayer.localPlayer.PlayerController.isSpeedCheating = false;
LocalPlayer.localPlayer.PlayerController.sprintTime = 2.1474836E+09f;
LocalPlayer.localPlayer.PlayerController.sprintMeter = 2.1474836E+09f;
LocalPlayer.localPlayer.PlayerController.movementSpeed = 10f;
LocalPlayer.localPlayer.PlayerController.isExhausted = false;
}
public void Update()
{
//IL_03bb: Unknown result type (might be due to invalid IL or missing references)
//IL_03c2: Expected O, but got Unknown
//IL_04e7: Unknown result type (might be due to invalid IL or missing references)
//IL_044c: Unknown result type (might be due to invalid IL or missing references)
//IL_030a: Unknown result type (might be due to invalid IL or missing references)
//IL_0566: Unknown result type (might be due to invalid IL or missing references)
//IL_056d: Expected O, but got Unknown
//IL_0592: Unknown result type (might be due to invalid IL or missing references)
//IL_04fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0505: Unknown result type (might be due to invalid IL or missing references)
//IL_0516: Unknown result type (might be due to invalid IL or missing references)
//IL_045f: Unknown result type (might be due to invalid IL or missing references)
//IL_0466: Unknown result type (might be due to invalid IL or missing references)
//IL_0477: Unknown result type (might be due to invalid IL or missing references)
//IL_05a9: Unknown result type (might be due to invalid IL or missing references)
//IL_05b0: Unknown result type (might be due to invalid IL or missing references)
//IL_05c1: Unknown result type (might be due to invalid IL or missing references)
if (MainGUI.Instance.ToggleSelf[1])
{
MainGUI.nightVision = true;
GameObject val = GameObject.Find("Systems");
if ((Object)(object)val == (Object)null)
{
return;
}
((Component)val.transform.Find("Rendering").Find("VolumeMain")).gameObject.SetActive(!MainGUI.nightVision);
}
else
{
MainGUI.nightVision = false;
}
if (MainGUI.Instance.ToggleSelf[2])
{
GameObject val2 = GameObject.Find("Environment");
if ((Object)(object)val2 != (Object)null)
{
Transform val3 = val2.transform.Find("TestRoom");
if ((Object)(object)val3 != (Object)null)
{
Transform val4 = ((Component)val3).transform.Find("Directional Light Test");
if ((Object)(object)val4 != (Object)null)
{
if ((Object)(object)MainGUI.Instance.directionalLightClone == (Object)null)
{
MainGUI.Instance.directionalLightClone = Object.Instantiate<GameObject>(((Component)val4).gameObject);
MainGUI.Instance.directionalLightClone.transform.parent = val2.transform;
MainGUI.Instance.directionalLightClone.SetActive(true);
}
else
{
MainGUI.Instance.directionalLightClone.SetActive(!MainGUI.Instance.directionalLightClone.activeSelf);
}
}
}
}
}
if (MainGUI.Instance.ToggleSelf[3])
{
SetLocalPlayerHealth();
}
if (MainGUI.Instance.ToggleSelf[4])
{
Speed();
}
if (MainGUI.Instance.ToggleSelf[5])
{
Fly();
}
if (MainGUI.Instance.ToggleSelf[6])
{
Weight.WeightUpdate(LocalPlayer.localPlayer.PlayerController);
}
if (MainGUI.Instance.ToggleSelf[7])
{
NoFallDamage.NoFallDamagePatch(LocalPlayer.localPlayer.PlayerController);
}
if (MainGUI.Instance.ToggleSelf[8])
{
InteractThroughWalls.InteractThroughWallsPatch(LocalPlayer.localPlayer.PlayerController);
}
if (MainGUI.Instance.ToggleSelf[9])
{
Invisibility();
}
if (MainGUI.Instance.ToggleServer[1])
{
EnemyCannotBeSpawned.EnemyCannotBeSpawnedPatch();
}
if (MainGUI.Instance.ToggleServer[2])
{
GrabbableObject[] array = Object.FindObjectsOfType<GrabbableObject>();
MainGUI.Instance.random.Shuffle(array);
GrabbableObject[] array2 = array;
foreach (GrabbableObject val5 in array2)
{
if (val5.grabbable && !((Object)(object)val5.playerHeldBy != (Object)null) && !((Object)(object)val5 == (Object)null) && !grabbableObjectsUsed.Contains(val5) && val5.itemProperties.isScrap && !val5.isInElevator)
{
LocalPlayer.localPlayer.PlayerController.TeleportPlayer(((Component)val5).transform.position, false, 0f, false, true);
InteractTrigger component = ((Component)val5).GetComponent<InteractTrigger>();
if ((Object)(object)component != (Object)null)
{
Debug.Log((object)"Found interact trigger");
}
grabbableObjectsUsed = grabbableObjectsUsed.Append(val5).ToArray();
break;
}
}
}
if (MainGUI.Instance.ToggleServer[3])
{
NeverLoseScrap();
}
if (MainGUI.Instance.ToggleVisuals[1])
{
Object[] array3 = Object.FindObjectsOfType(typeof(GrabbableObject));
for (int j = 0; j < array3.Length; j++)
{
GrabbableObject val6 = (GrabbableObject)array3[j];
string text = "Object";
if ((Object)(object)val6.itemProperties != (Object)null)
{
if (val6.itemProperties.itemName != null)
{
text = val6.itemProperties.itemName;
}
int creditsWorth = val6.itemProperties.creditsWorth;
text = text + " (" + val6.itemProperties.creditsWorth + ")";
}
if (MainGUI.WorldToScreen(GameNetworkManager.Instance.localPlayerController.gameplayCamera, ((Component)val6).transform.position, out var screen))
{
GUI.Label(new Rect(screen.x, screen.y, 100f, 25f), text);
}
}
}
if (MainGUI.Instance.ToggleVisuals[2])
{
PlayerControllerB[] array4 = Object.FindObjectsOfType<PlayerControllerB>();
foreach (PlayerControllerB val7 in array4)
{
string playerUsername = val7.playerUsername;
if (MainGUI.WorldToScreen(GameNetworkManager.Instance.localPlayerController.gameplayCamera, ((Component)val7.playerGlobalHead).transform.position, out var screen2))
{
GUI.Label(new Rect(screen2.x, screen2.y, 100f, 25f), playerUsername);
}
}
}
if (MainGUI.Instance.ToggleVisuals[3])
{
Object[] array5 = Object.FindObjectsOfType(typeof(EnemyAI));
for (int l = 0; l < array5.Length; l++)
{
EnemyAI val8 = (EnemyAI)array5[l];
string enemyName = val8.enemyType.enemyName;
if (MainGUI.WorldToScreen(GameNetworkManager.Instance.localPlayerController.gameplayCamera, ((Component)val8).transform.position, out var screen3))
{
GUI.Label(new Rect(screen3.x, screen3.y, 100f, 100f), enemyName);
}
}
}
if (MainGUI.Instance.ToggleHost[1])
{
StartOfRound val9 = Object.FindObjectOfType<StartOfRound>();
if ((Object)(object)val9 != (Object)null)
{
val9.ReviveDeadPlayers();
val9.PlayerHasRevivedServerRpc();
val9.AllPlayersHaveRevivedClientRpc();
MainGUI.Instance.ToggleHost[1] = false;
}
}
if (MainGUI.Instance.ToggleHost[2])
{
RoundManager val10 = Object.FindObjectOfType<RoundManager>();
SpawnEnemyClass.SpawnEnemyWithConfigManager("ForestGiant");
SpawnableEnemyWithRarity enemy = val10.currentLevel.OutsideEnemies[Random.Range(0, val10.currentLevel.OutsideEnemies.Count)];
SpawnEnemyClass.SpawnEnemyAtLocalPlayer(enemy, 3);
MainGUI.Instance.ToggleHost[2] = false;
}
}
}
internal class SpawnEnemyClass
{
public static void SpawnEnemyWithConfigManager(string enemyName)
{
RoundManager val = Object.FindObjectOfType<RoundManager>();
bool flag = false;
foreach (SpawnableEnemyWithRarity enemy in val.currentLevel.Enemies)
{
if (enemy.enemyType.enemyName.ToLower().Contains(enemyName.ToLower()))
{
try
{
flag = true;
string enemyName2 = enemy.enemyType.enemyName;
SpawnEnemy(enemy, 1, inside: true);
}
catch
{
}
break;
}
}
if (flag)
{
return;
}
foreach (SpawnableEnemyWithRarity outsideEnemy in val.currentLevel.OutsideEnemies)
{
if (outsideEnemy.enemyType.enemyName.ToLower().Contains(enemyName.ToLower()))
{
try
{
flag = true;
string enemyName3 = outsideEnemy.enemyType.enemyName;
SpawnEnemy(outsideEnemy, 1, inside: false);
break;
}
catch (Exception)
{
break;
}
}
}
}
public static void SpawnEnemy(SpawnableEnemyWithRarity enemy, int amount, bool inside)
{
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
//IL_00ec: Unknown result type (might be due to invalid IL or missing references)
//IL_00fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Unknown result type (might be due to invalid IL or missing references)
//IL_0106: Unknown result type (might be due to invalid IL or missing references)
//IL_0108: Unknown result type (might be due to invalid IL or missing references)
//IL_010d: Unknown result type (might be due to invalid IL or missing references)
//IL_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_012b: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: Unknown result type (might be due to invalid IL or missing references)
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0061: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
//IL_006b: Unknown result type (might be due to invalid IL or missing references)
RoundManager val = Object.FindObjectOfType<RoundManager>();
if (inside)
{
try
{
for (int i = 0; i < amount; i++)
{
val.SpawnEnemyOnServer(((Component)LocalPlayer.localPlayer.PlayerController).transform.position, 0f, val.currentLevel.Enemies.IndexOf(enemy));
GameObject val2 = Object.Instantiate<GameObject>(enemy.enemyType.enemyPrefab, ((Component)LocalPlayer.localPlayer.PlayerController).transform.position, Quaternion.Euler(Vector3.zero));
}
return;
}
catch
{
return;
}
}
for (int j = 0; j < amount; j++)
{
GameObject enemyPrefab = val.currentLevel.OutsideEnemies[val.currentLevel.OutsideEnemies.IndexOf(enemy)].enemyType.enemyPrefab;
GameObject[] array = GameObject.FindGameObjectsWithTag("OutsideAINode");
Vector3 position = array[Random.Range(0, array.Length - 1)].transform.position;
Vector3 position2 = ((Component)LocalPlayer.localPlayer.PlayerController).transform.position;
GameObject val3 = Object.Instantiate<GameObject>(enemyPrefab, position, Quaternion.Euler(Vector3.zero));
val3.GetComponentInChildren<NetworkObject>().Spawn(true);
GameObject val4 = Object.Instantiate<GameObject>(enemyPrefab, position2, Quaternion.Euler(Vector3.zero));
val4.GetComponentInChildren<NetworkObject>().Spawn(true);
}
}
public static void SpawnEnemyAtLocalPlayer(SpawnableEnemyWithRarity enemy, int amount)
{
//IL_0053: Unknown result type (might be due to invalid IL or missing references)
//IL_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0059: Unknown result type (might be due to invalid IL or missing references)
//IL_00f1: Unknown result type (might be due to invalid IL or missing references)
//IL_00f6: Unknown result type (might be due to invalid IL or missing references)
//IL_00fb: Unknown result type (might be due to invalid IL or missing references)
//IL_0173: Unknown result type (might be due to invalid IL or missing references)
//IL_017d: Unknown result type (might be due to invalid IL or missing references)
//IL_01a5: Unknown result type (might be due to invalid IL or missing references)
//IL_01a7: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01ae: Unknown result type (might be due to invalid IL or missing references)
//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
//IL_01e6: Unknown result type (might be due to invalid IL or missing references)
//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
//IL_01fd: Unknown result type (might be due to invalid IL or missing references)
//IL_0203: Unknown result type (might be due to invalid IL or missing references)
//IL_020b: Unknown result type (might be due to invalid IL or missing references)
//IL_021f: Unknown result type (might be due to invalid IL or missing references)
//IL_0236: Unknown result type (might be due to invalid IL or missing references)
RoundManager val = Object.FindObjectOfType<RoundManager>();
if ((Object)(object)val == (Object)null || (Object)(object)LocalPlayer.localPlayer == (Object)null || (Object)(object)LocalPlayer.localPlayer.PlayerController == (Object)null)
{
return;
}
Vector3 position = ((Component)LocalPlayer.localPlayer.PlayerController).transform.position;
NavMeshHit val2 = default(NavMeshHit);
if (!NavMesh.SamplePosition(position, ref val2, 10f, -1))
{
return;
}
for (int i = 0; i < amount; i++)
{
int num = val.currentLevel.OutsideEnemies.IndexOf(enemy);
if (num == -1)
{
continue;
}
EnemyType enemyType = val.currentLevel.OutsideEnemies[num].enemyType;
if ((Object)(object)enemyType == (Object)null)
{
continue;
}
GameObject enemyPrefab = enemyType.enemyPrefab;
if ((Object)(object)enemyPrefab == (Object)null)
{
continue;
}
GameObject val3 = Object.Instantiate<GameObject>(enemyPrefab, ((NavMeshHit)(ref val2)).position, Quaternion.Euler(Vector3.zero));
if (!((Object)(object)val3 == (Object)null))
{
NetworkObject componentInChildren = val3.GetComponentInChildren<NetworkObject>();
if (!((Object)(object)componentInChildren == (Object)null))
{
componentInChildren.Spawn(true);
MethodInfo method = typeof(RoundManager).GetMethod("__beginSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic);
MethodInfo method2 = typeof(RoundManager).GetMethod("__endSendClientRpc", BindingFlags.Instance | BindingFlags.NonPublic);
ClientRpcParams val4 = default(ClientRpcParams);
val4.Send = new ClientRpcSendParams
{
TargetClientIds = new List<ulong> { LocalPlayer.localPlayer.PlayerController.playerClientId }
};
ClientRpcParams val5 = val4;
ServerRpcParams val6 = default(ServerRpcParams);
FastBufferWriter val7 = (FastBufferWriter)method.Invoke(val, new object[3] { 46494176u, val5, 0 });
((FastBufferWriter)(ref val7)).WriteValueSafe(ref position);
((FastBufferWriter)(ref val7)).WriteValueSafe<int>(ref num, default(ForPrimitives));
BytePacker.WriteValueBitPacked(val7, 1);
method2.Invoke(val, new object[4]
{
val7,
46494176u,
val6,
(object)(RpcDelivery)0
});
}
}
}
}
}
}