using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalCompanyInputUtils.Api; using LethalConfig; using LethalConfig.ConfigItems; using LethalConfig.ConfigItems.Options; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; using UnityEngine.InputSystem; using UnityEngine.InputSystem.Controls; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("LeadMeOut")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.1.0")] [assembly: AssemblyInformationalVersion("1.0.1")] [assembly: AssemblyProduct("LeadMeOut")] [assembly: AssemblyTitle("LeadMeOut")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.1.0")] [module: UnverifiableCode] namespace LeadMeOut; public class ExitFinder { private struct PathResult { public List Points; public bool IsLockedDoor; } private bool isActive; private Transform mainEntranceTarget; private List fireExitTargets = new List(); private List mainEntranceSegments = new List(); private List mainEntranceDiamonds = new List(); private List mainEntranceShapes = new List(); private GameObject mainEntranceRoot; private List> fireExitSegmentSets = new List>(); private List> fireExitDiamondSets = new List>(); private List> fireExitShapeSets = new List>(); private List fireExitRoots = new List(); private GameObject compassOverlayRoot; private RectTransform mainEntrancePip; private RectTransform fireExitPip; private float updateInterval = 0.1f; private float updateTimer = 999f; private float pulseTimer; private bool wasInsideFactory; private Vector3 smoothedPlayerPos = Vector3.zero; private bool smoothedPosInitialized; private float smoothSpeed = 8f; private int bezierSteps = 12; private NavigationMode lastNavMode; private const string COMPASS_PATH = "Systems/UI/Canvas/IngamePlayerHUD"; private const float COMPASS_WIDTH = 500f; private const float COMPASS_HEIGHT_UI = 36.39f; private const float COMPASS_ANCHOR_X = 0f; private const float COMPASS_ANCHOR_Y = -28f; private const float COMPASS_FOV = 240f; private const float COMPASS_VERTICAL_OFFSET = 12f; private const float COMPASS_FADE_ZONE = 0.15f; private const float COMPASS_HIDE_MARGIN = 5f; public void Toggle() { PlayerControllerB localPlayer = GetLocalPlayer(); bool flag = (Object)(object)localPlayer != (Object)null && localPlayer.isInsideFactory; if (Plugin.AutoEnableOnEntry.Value && flag && isActive) { isActive = false; Plugin.Logger.LogInfo((object)"LeadMeOut: Temporarily disabled by hotkey."); ClearAll(); return; } if (!flag) { Plugin.Logger.LogInfo((object)"LeadMeOut: Not inside facility, ignoring toggle."); return; } isActive = !isActive; Plugin.Logger.LogInfo((object)("LeadMeOut: " + (isActive ? "ON" : "OFF"))); if (isActive) { smoothedPosInitialized = false; FindExits(); if (Plugin.NavMode.Value == NavigationMode.CompassMode) { CreateCompassOverlay(); } else { CreateLineRoots(); } } else { ClearAll(); } } public void Tick(float deltaTime) { //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00e2: Unknown result type (might be due to invalid IL or missing references) //IL_00eb: 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_00cc: 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) PlayerControllerB localPlayer = GetLocalPlayer(); if ((Object)(object)localPlayer != (Object)null) { bool isInsideFactory = localPlayer.isInsideFactory; if (!wasInsideFactory && isInsideFactory && Plugin.AutoEnableOnEntry.Value && !isActive) { Plugin.Logger.LogInfo((object)"LeadMeOut: Auto-enabling on facility entry."); isActive = true; smoothedPosInitialized = false; FindExits(); if (Plugin.NavMode.Value == NavigationMode.CompassMode) { CreateCompassOverlay(); } else { CreateLineRoots(); } } if (wasInsideFactory && !isInsideFactory && isActive) { Plugin.Logger.LogInfo((object)"LeadMeOut: Player left facility, clearing."); isActive = false; ClearAll(); } wasInsideFactory = isInsideFactory; if (isActive) { Vector3 position = ((Component)localPlayer).transform.position; if (!smoothedPosInitialized) { smoothedPlayerPos = position; smoothedPosInitialized = true; } else { smoothedPlayerPos = Vector3.Lerp(smoothedPlayerPos, position, deltaTime * smoothSpeed); } } } if (isActive && Plugin.NavMode.Value != lastNavMode) { lastNavMode = Plugin.NavMode.Value; ClearAll(); FindExits(); if (lastNavMode == NavigationMode.CompassMode) { CreateCompassOverlay(); } else { CreateLineRoots(); } } if (!isActive) { return; } pulseTimer += deltaTime; updateTimer += deltaTime; if (updateTimer >= updateInterval) { updateTimer = 0f; if (Plugin.NavMode.Value == NavigationMode.CompassMode) { UpdateCompassOverlay(); } else { UpdatePaths(); } } } private PlayerControllerB GetLocalPlayer() { GameNetworkManager instance = GameNetworkManager.Instance; if ((Object)(object)instance != (Object)null && (Object)(object)instance.localPlayerController != (Object)null) { return instance.localPlayerController; } return null; } private void FindExits() { //IL_0063: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) mainEntranceTarget = null; fireExitTargets.Clear(); GameObject[] array = Object.FindObjectsOfType(); foreach (GameObject val in array) { if (((Object)val).name.Contains("EntranceTeleportA") && ((Object)val).name.Contains("Clone")) { mainEntranceTarget = val.transform; Plugin.Logger.LogInfo((object)$"LeadMeOut: Main entrance at {val.transform.position}"); } if (((Object)val).name.Contains("EntranceTeleportB") && ((Object)val).name.Contains("Clone")) { fireExitTargets.Add(val.transform); Plugin.Logger.LogInfo((object)$"LeadMeOut: Fire exit #{fireExitTargets.Count} at {val.transform.position}"); } } Plugin.Logger.LogInfo((object)$"LeadMeOut: Found {fireExitTargets.Count} fire exit(s)."); } private void CreateCompassOverlay() { //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_01b8: 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_00fc: Unknown result type (might be due to invalid IL or missing references) //IL_0101: 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_010b: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0158: 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_0162: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_0182: Unknown result type (might be due to invalid IL or missing references) ClearCompassOverlay(); GameObject val = GameObject.Find("Systems/UI/Canvas/IngamePlayerHUD"); if ((Object)(object)val == (Object)null) { Plugin.Logger.LogInfo((object)"LeadMeOut: Could not find HUD canvas path."); return; } compassOverlayRoot = new GameObject("LeadMeOut_CompassOverlay"); compassOverlayRoot.transform.SetParent(val.transform, false); compassOverlayRoot.AddComponent(); RectTransform obj = compassOverlayRoot.AddComponent(); obj.anchorMin = new Vector2(0.5f, 0f); obj.anchorMax = new Vector2(0.5f, 0f); obj.anchoredPosition = new Vector2(0f, 20.39f); obj.sizeDelta = new Vector2(500f, 36.39f); compassOverlayRoot.transform.SetAsLastSibling(); ShowLinesPreset value = Plugin.ShowLines.Value; if ((Object)(object)mainEntranceTarget != (Object)null && value != ShowLinesPreset.FireExitsOnly) { Color color = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.MainEntranceColorPreset.Value, Plugin.MainEntranceCustomColor.Value, Color.green)); float width = Plugin.ResolvePipWidth(Plugin.MainEntranceLineWidth.Value); mainEntrancePip = CreatePip(compassOverlayRoot, color, width); } if (fireExitTargets.Count > 0 && value != ShowLinesPreset.MainEntranceOnly) { Color color2 = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.FireExitColorPreset.Value, Plugin.FireExitCustomColor.Value, Color.red)); float width2 = Plugin.ResolvePipWidth(Plugin.FireExitLineWidth.Value); fireExitPip = CreatePip(compassOverlayRoot, color2, width2); } RectTransform component = compassOverlayRoot.GetComponent(); Plugin.Logger.LogInfo((object)$"LeadMeOut: Compass overlay created. Parent={((Object)val).name} anchorPos={component.anchoredPosition} size={component.sizeDelta} siblingIndex={compassOverlayRoot.transform.GetSiblingIndex()}"); } private RectTransform CreatePip(GameObject parent, Color color, float width) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Expected O, but got Unknown //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_003f: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0069: 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) //IL_008e: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject("Pip"); val.transform.SetParent(parent.transform, false); RectTransform obj = val.AddComponent(); obj.sizeDelta = new Vector2(width, 18f); obj.anchorMin = new Vector2(0.5f, 0.5f); obj.anchorMax = new Vector2(0.5f, 0.5f); obj.pivot = new Vector2(0.5f, 0.5f); obj.anchoredPosition = new Vector2(0f, 0f); ((Graphic)val.AddComponent()).color = color; Plugin.Logger.LogDebug((object)"LeadMeOut: Pip created as Image"); return obj; } private void UpdateCompassOverlay() { //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_0164: Unknown result type (might be due to invalid IL or missing references) //IL_0169: Unknown result type (might be due to invalid IL or missing references) //IL_016e: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01bb: Unknown result type (might be due to invalid IL or missing references) //IL_01c0: Unknown result type (might be due to invalid IL or missing references) //IL_01c1: Unknown result type (might be due to invalid IL or missing references) //IL_021e: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0228: Unknown result type (might be due to invalid IL or missing references) //IL_022d: Unknown result type (might be due to invalid IL or missing references) //IL_024e: Unknown result type (might be due to invalid IL or missing references) //IL_0258: Unknown result type (might be due to invalid IL or missing references) //IL_026f: Unknown result type (might be due to invalid IL or missing references) //IL_0280: Unknown result type (might be due to invalid IL or missing references) //IL_0285: Unknown result type (might be due to invalid IL or missing references) //IL_0286: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)compassOverlayRoot == (Object)null) { return; } PlayerControllerB localPlayer = GetLocalPlayer(); if ((Object)(object)localPlayer == (Object)null) { return; } Transform val = ((Component)localPlayer).transform.Find("ScavengerModel/metarig/CameraContainer"); float num = (((Object)(object)val != (Object)null) ? val.eulerAngles.y : ((Component)localPlayer).transform.eulerAngles.y); Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(Mathf.Sin(num * ((float)Math.PI / 180f)), 0f, Mathf.Cos(num * ((float)Math.PI / 180f))); ShowLinesPreset value = Plugin.ShowLines.Value; Plugin.Logger.LogDebug((object)$"LeadMeOut: UpdateCompass - forward={val2}, mainPip={(Object)(object)mainEntrancePip != (Object)null}, firePip={(Object)(object)fireExitPip != (Object)null}, mainTarget={(Object)(object)mainEntranceTarget != (Object)null}, fireCount={fireExitTargets.Count}, showLines={Plugin.ShowLines.Value}"); if ((Object)(object)mainEntrancePip != (Object)null && (Object)(object)mainEntranceTarget != (Object)null) { ((Component)mainEntrancePip).gameObject.SetActive(value != ShowLinesPreset.FireExitsOnly); if (value != ShowLinesPreset.FireExitsOnly) { Color color = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.MainEntranceColorPreset.Value, Plugin.MainEntranceCustomColor.Value, Color.green)); float num2 = Plugin.ResolvePipWidth(Plugin.MainEntranceLineWidth.Value); mainEntrancePip.sizeDelta = new Vector2(num2, mainEntrancePip.sizeDelta.y); UpdatePipPosition(mainEntrancePip, ((Component)localPlayer).transform.position, mainEntranceTarget.position, val2, color); } } if ((Object)(object)fireExitPip != (Object)null && fireExitTargets.Count > 0) { ((Component)fireExitPip).gameObject.SetActive(value != ShowLinesPreset.MainEntranceOnly); if (value != ShowLinesPreset.MainEntranceOnly) { Color color2 = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.FireExitColorPreset.Value, Plugin.FireExitCustomColor.Value, Color.red)); float num3 = Plugin.ResolvePipWidth(Plugin.FireExitLineWidth.Value); fireExitPip.sizeDelta = new Vector2(num3, fireExitPip.sizeDelta.y); UpdatePipPosition(fireExitPip, ((Component)localPlayer).transform.position, fireExitTargets[0].position, val2, color2); } } } private void UpdatePipPosition(RectTransform pip, Vector3 playerPos, Vector3 targetPos, Vector3 forward, Color color) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0031: Unknown result type (might be due to invalid IL or missing references) //IL_008b: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0132: Unknown result type (might be due to invalid IL or missing references) try { Vector3 val = targetPos - playerPos; val.y = 0f; if (((Vector3)(ref val)).magnitude < 0.01f) { return; } ((Vector3)(ref val)).Normalize(); float num = Vector3.SignedAngle(forward, val, Vector3.up); float num2 = 120f; float num3 = Mathf.Abs(num); if (num3 > num2 + 5f) { ((Component)pip).gameObject.SetActive(false); return; } ((Component)pip).gameObject.SetActive(true); float num4 = Mathf.Clamp(num, 0f - num2, num2) / num2 * 250f; pip.anchoredPosition = new Vector2(num4, 0f); float num5 = 1f; float num6 = num3 / num2; float num7 = 0.85f; if (num6 > num7) { num5 = Mathf.InverseLerp(1f, num7, num6); num5 = Mathf.Clamp01(num5); } Plugin.Logger.LogDebug((object)$"LeadMeOut: PipPos angle={num:F1} xPos={num4:F1} alpha={num5:F2} active={((Component)pip).gameObject.activeSelf}"); Image componentInChildren = ((Component)pip).GetComponentInChildren(); if ((Object)(object)componentInChildren != (Object)null) { Color color2 = color; color2.a = num5; ((Graphic)componentInChildren).color = color2; } } catch (Exception ex) { Plugin.Logger.LogInfo((object)("LeadMeOut: PipPos exception: " + ex.Message)); } } private void ClearCompassOverlay() { if ((Object)(object)compassOverlayRoot != (Object)null) { Object.Destroy((Object)(object)compassOverlayRoot); compassOverlayRoot = null; } mainEntrancePip = null; fireExitPip = null; } private void CreateLineRoots() { //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Expected O, but got Unknown ClearLineRoots(); ShowLinesPreset value = Plugin.ShowLines.Value; if ((Object)(object)mainEntranceTarget != (Object)null && value != ShowLinesPreset.FireExitsOnly) { mainEntranceRoot = new GameObject("LeadMeOut_MainLine"); Object.DontDestroyOnLoad((Object)(object)mainEntranceRoot); } if (value != ShowLinesPreset.MainEntranceOnly) { for (int i = 0; i < fireExitTargets.Count; i++) { GameObject val = new GameObject($"LeadMeOut_FireLine_{i}"); Object.DontDestroyOnLoad((Object)(object)val); fireExitRoots.Add(val); fireExitSegmentSets.Add(new List()); fireExitDiamondSets.Add(new List()); fireExitShapeSets.Add(new List()); } } updateTimer = 999f; } private void UpdatePaths() { //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: 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_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0118: 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_01cc: Unknown result type (might be due to invalid IL or missing references) //IL_01ba: Unknown result type (might be due to invalid IL or missing references) //IL_01c5: Unknown result type (might be due to invalid IL or missing references) //IL_01ce: Unknown result type (might be due to invalid IL or missing references) //IL_01d2: Unknown result type (might be due to invalid IL or missing references) //IL_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) if (!smoothedPosInitialized) { return; } ShowLinesPreset value = Plugin.ShowLines.Value; Color color = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.MainEntranceColorPreset.Value, Plugin.MainEntranceCustomColor.Value, Color.green)); LineStyle value2 = Plugin.MainEntranceLineStyle.Value; float width = Plugin.ResolveWidth(Plugin.MainEntranceLineWidth.Value); Color val = Plugin.ApplyBrightness(Plugin.ResolveColor(Plugin.FireExitColorPreset.Value, Plugin.FireExitCustomColor.Value, Color.red)); LineStyle value3 = Plugin.FireExitLineStyle.Value; float width2 = Plugin.ResolveWidth(Plugin.FireExitLineWidth.Value); float num = 0.18f; if ((Object)(object)mainEntranceRoot != (Object)null && (Object)(object)mainEntranceTarget != (Object)null && value != ShowLinesPreset.FireExitsOnly) { mainEntranceRoot.SetActive(true); PathResult? path = GetPath(smoothedPlayerPos, mainEntranceTarget.position); if (path.HasValue) { RenderPath(mainEntranceRoot, mainEntranceSegments, mainEntranceDiamonds, mainEntranceShapes, path.Value.Points, color, value2, width, 0f, 0f, mainEntranceTarget.position, path.Value.IsLockedDoor); } else { HideSegments(mainEntranceSegments); HideShapes(mainEntranceShapes); } } else if ((Object)(object)mainEntranceRoot != (Object)null) { mainEntranceRoot.SetActive(false); } if (value != ShowLinesPreset.MainEntranceOnly) { for (int i = 0; i < fireExitTargets.Count && i < fireExitRoots.Count; i++) { fireExitRoots[i].SetActive(true); float lateralOffset = num * (float)(i + 1); Color color2 = ((i == 0) ? val : DarkenColor(val, 0.15f * (float)i)); PathResult? path2 = GetPath(smoothedPlayerPos, fireExitTargets[i].position); if (path2.HasValue) { RenderPath(fireExitRoots[i], fireExitSegmentSets[i], fireExitDiamondSets[i], fireExitShapeSets[i], path2.Value.Points, color2, value3, width2, lateralOffset, 0f, fireExitTargets[i].position, path2.Value.IsLockedDoor); continue; } HideSegments(fireExitSegmentSets[i]); HideShapes(fireExitShapeSets[i]); } return; } foreach (GameObject fireExitRoot in fireExitRoots) { if ((Object)(object)fireExitRoot != (Object)null) { fireExitRoot.SetActive(false); } } } private Color DarkenColor(Color c, float amount) { //IL_0000: 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_001a: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0085: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) if (c.r < 0.05f && c.g < 0.05f && c.b < 0.05f) { return new Color(Mathf.Min(1f, c.r + amount), Mathf.Min(1f, c.g + amount), Mathf.Min(1f, c.b + amount), c.a); } return new Color(Mathf.Max(0f, c.r - amount), Mathf.Max(0f, c.g - amount), Mathf.Max(0f, c.b - amount), c.a); } private PathResult? GetPath(Vector3 from, Vector3 to) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0032: 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_0057: Expected O, but got Unknown //IL_0059: 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) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Invalid comparison between Unknown and I4 //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Unknown result type (might be due to invalid IL or missing references) //IL_009f: 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_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) NavMeshHit val = default(NavMeshHit); bool num = NavMesh.SamplePosition(from, ref val, 15f, -1); NavMeshHit val2 = default(NavMeshHit); bool flag = NavMesh.SamplePosition(to, ref val2, 15f, -1); if (!flag) { flag = NavMesh.SamplePosition(to, ref val2, 30f, -1); } if (!flag) { flag = NavMesh.SamplePosition(to, ref val2, 50f, -1); } if (!num || !flag) { return null; } NavMeshPath val3 = new NavMeshPath(); NavMesh.CalculatePath(((NavMeshHit)(ref val)).position, ((NavMeshHit)(ref val2)).position, -1, val3); bool flag2 = (int)val3.status > 0; List list; if (val3.corners.Length >= 2) { list = new List(val3.corners); list[0] = from; if (flag2) { list.Add(to); } } else { list = new List { from, to }; flag2 = true; } List list2 = SmoothPath(CenterCorners(list.ToArray())); for (int i = 0; i < list2.Count; i++) { list2[i] += Vector3.up * 0.1f; } float num2 = Plugin.ResolveRenderDistance(Plugin.RenderDistance.Value); if (num2 < float.MaxValue && !flag2) { list2 = CullByDistance(list2, from, num2); } if (list2.Count < 2) { return null; } PathResult value = default(PathResult); value.Points = list2; value.IsLockedDoor = flag2; return value; } private List CullByDistance(List points, Vector3 origin, float maxDist) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) List list = new List(); float num = 0f; list.Add(points[0]); for (int i = 1; i < points.Count; i++) { num += Vector3.Distance(points[i - 1], points[i]); if (num > maxDist) { float num2 = num - maxDist; float num3 = Vector3.Distance(points[i - 1], points[i]); float num4 = 1f - num2 / num3; list.Add(Vector3.Lerp(points[i - 1], points[i], num4)); break; } list.Add(points[i]); } return list; } private void RenderPath(GameObject root, List segments, List diamonds, List shapes, List points, Color color, LineStyle style, float width, float lateralOffset, float phaseOffset, Vector3 targetPos, bool isLockedDoor = false) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0112: Unknown result type (might be due to invalid IL or missing references) if (isLockedDoor) { float num = Mathf.Sin(pulseTimer * 4f) * 0.5f + 0.5f; float num2 = Mathf.Lerp(0.3f, 1f, num); ((Color)(ref color))..ctor(color.r * num2, color.g * num2, color.b * num2, color.a); } if (lateralOffset != 0f) { points = ApplyLateralOffset(points, lateralOffset); } if (style == LineStyle.Arrow || style == LineStyle.Triangle || style == LineStyle.Diamond || style == LineStyle.Heart || style == LineStyle.Pawprint) { HideSegments(segments); HideSegments(diamonds); RenderShapes(root, shapes, points, color, style, width, targetPos); return; } HideShapes(shapes); float dashLength; float gapLength; if (style == LineStyle.Dotted) { dashLength = width; gapLength = width * 8f + 0.2f; } else { dashLength = 0.4f; gapLength = 0.35f; } List<(Vector3, Vector3)> dashes = ((style == LineStyle.Solid) ? BuildSolid(points) : BuildDashes(points, dashLength, gapLength, phaseOffset)); UpdateLineSegments(root, segments, dashes, color, width); if (style == LineStyle.Dotted) { UpdateDiamonds(root, diamonds, dashes, color, width); } else { HideSegments(diamonds); } } private void RenderShapes(GameObject root, List shapes, List points, Color color, LineStyle style, float width, Vector3 targetPos) { //IL_00c6: 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_00ef: Unknown result type (might be due to invalid IL or missing references) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0139: Unknown result type (might be due to invalid IL or missing references) //IL_0146: Unknown result type (might be due to invalid IL or missing references) float num = ((style != LineStyle.Heart && style != LineStyle.Pawprint) ? (width * 20f + 0.6f) : (width * 12f + 0.4f)); if (num < 0.05f) { num = 0.05f; } List<(Vector3, Vector3)> shapePlacements = GetShapePlacements(points, num); for (int i = 0; i < shapes.Count; i++) { if (i < shapePlacements.Count) { shapes[i].SetActive(true); MeshFilter component = shapes[i].GetComponent(); if ((Object)(object)component != (Object)null) { component.mesh = (Mesh)(style switch { LineStyle.Pawprint => BuildPawprintMesh(), LineStyle.Diamond => BuildDiamondMesh(), LineStyle.Triangle => BuildTriangleMesh(), LineStyle.Arrow => BuildArrowMesh(), _ => BuildHeartMesh(), }); } ApplyShapeTransform(shapes[i], shapePlacements[i].Item1, shapePlacements[i].Item2, width); ((Renderer)shapes[i].GetComponent()).material.color = color; } else { shapes[i].SetActive(false); } } for (int j = shapes.Count; j < shapePlacements.Count; j++) { GameObject val = CreateShapeMesh(root, style, color, width); ApplyShapeTransform(val, shapePlacements[j].Item1, shapePlacements[j].Item2, width); shapes.Add(val); } } private List<(Vector3 pos, Vector3 dir)> GetShapePlacements(List points, float spacing) { //IL_002b: 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_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_0051: Unknown result type (might be due to invalid IL or missing references) //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_005c: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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) List<(Vector3, Vector3)> list = new List<(Vector3, Vector3)>(); int num = 200; float num2 = spacing * 0.5f; for (int i = 1; i < points.Count; i++) { if (list.Count >= num) { break; } Vector3 val = points[i - 1]; Vector3 val2 = points[i]; float num3 = Vector3.Distance(val, val2); if (num3 < 0.001f) { continue; } Vector3 val3 = val2 - val; Vector3 normalized = ((Vector3)(ref val3)).normalized; float num4 = 0f; while (num4 < num3 && list.Count < num) { float num5 = spacing - num2; if (num4 + num5 <= num3) { num4 += num5; list.Add((val + normalized * num4, normalized)); num2 = 0f; } else { num2 += num3 - num4; num4 = num3; } } } return list; } private void ApplyShapeTransform(GameObject shape, Vector3 pos, Vector3 dir, float width) { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //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) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) shape.transform.position = pos; if (dir != Vector3.zero) { shape.transform.rotation = Quaternion.LookRotation(dir, Vector3.up); } float num = width * 6f; shape.transform.localScale = new Vector3(num, num, num); } private GameObject CreateShapeMesh(GameObject root, LineStyle style, Color color, float width) { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Expected O, but got Unknown //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Expected O, but got Unknown GameObject val = new GameObject("Shape"); val.transform.SetParent(root.transform); MeshFilter val2 = val.AddComponent(); MeshRenderer obj = val.AddComponent(); val2.mesh = (Mesh)(style switch { LineStyle.Pawprint => BuildPawprintMesh(), LineStyle.Diamond => BuildDiamondMesh(), LineStyle.Triangle => BuildTriangleMesh(), LineStyle.Arrow => BuildArrowMesh(), _ => BuildHeartMesh(), }); Material val3 = new Material(Shader.Find("HDRP/Unlit")); val3.color = color; ((Renderer)obj).material = val3; ((Renderer)obj).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)obj).receiveShadows = false; return val; } private Mesh BuildArrowMesh() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) Mesh val = new Mesh(); Vector3[] vertices = (Vector3[])(object)new Vector3[7] { new Vector3(-0.15f, 0f, -0.5f), new Vector3(0.15f, 0f, -0.5f), new Vector3(0.15f, 0f, 0.1f), new Vector3(-0.15f, 0f, 0.1f), new Vector3(-0.35f, 0f, 0.1f), new Vector3(0.35f, 0f, 0.1f), new Vector3(0f, 0f, 0.5f) }; val.vertices = vertices; val.triangles = new int[18] { 0, 1, 2, 0, 2, 3, 4, 5, 6, 2, 1, 0, 3, 2, 0, 6, 5, 4 }; val.RecalculateNormals(); return val; } private Mesh BuildTriangleMesh() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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) Mesh val = new Mesh(); val.vertices = (Vector3[])(object)new Vector3[3] { new Vector3(0f, 0f, 0.5f), new Vector3(-0.5f, 0f, -0.4f), new Vector3(0.5f, 0f, -0.4f) }; val.triangles = new int[6] { 0, 1, 2, 2, 1, 0 }; val.RecalculateNormals(); return val; } private Mesh BuildHeartMesh() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) Mesh val = new Mesh(); int num = 20; List list = new List(); List list2 = new List(); list.Add(new Vector3(0f, 0f, 0f)); for (int i = 0; i <= num; i++) { float num2 = (float)i / (float)num * (float)Math.PI * 2f; float num3 = 0.4f * Mathf.Pow(Mathf.Sin(num2), 3f); float num4 = 0.4f * (0.8125f * Mathf.Cos(num2) - 0.3125f * Mathf.Cos(2f * num2) - 0.125f * Mathf.Cos(3f * num2) - 0.0625f * Mathf.Cos(4f * num2)); list.Add(new Vector3(num3, 0f, num4)); } int num5 = num; for (int j = 1; j <= num5; j++) { list2.Add(0); list2.Add(j); list2.Add((j >= num5) ? 1 : (j + 1)); } int count = list2.Count; for (int k = 0; k < count; k += 3) { list2.Add(list2[k + 2]); list2.Add(list2[k + 1]); list2.Add(list2[k]); } val.vertices = list.ToArray(); val.triangles = list2.ToArray(); val.RecalculateNormals(); return val; } private Mesh BuildDiamondMesh() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Expected O, but got Unknown //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0054: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0074: Unknown result type (might be due to invalid IL or missing references) Mesh val = new Mesh(); val.vertices = (Vector3[])(object)new Vector3[4] { new Vector3(0f, 0f, 0.6f), new Vector3(0.28f, 0f, 0f), new Vector3(0f, 0f, -0.6f), new Vector3(-0.28f, 0f, 0f) }; val.triangles = new int[12] { 0, 1, 2, 0, 2, 3, 2, 1, 0, 3, 2, 0 }; val.RecalculateNormals(); return val; } private Mesh BuildPawprintMesh() { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown Mesh val = new Mesh(); List verts = new List(); List tris = new List(); int circleSegments = 12; AddEllipse(0f, -0.15f, 0.22f, 0.22f); AddEllipse(-0.1f, 0.22f, 0.09f, 0.11f); AddEllipse(0.1f, 0.22f, 0.09f, 0.11f); AddEllipse(-0.24f, 0.08f, 0.08f, 0.1f); AddEllipse(0.24f, 0.08f, 0.08f, 0.1f); val.vertices = verts.ToArray(); val.triangles = tris.ToArray(); val.RecalculateNormals(); return val; void AddEllipse(float cx, float cz, float rx, float rz) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_006e: Unknown result type (might be due to invalid IL or missing references) int count = verts.Count; verts.Add(new Vector3(cx, 0f, cz)); int count2 = verts.Count; for (int i = 0; i < circleSegments; i++) { float num = (float)i / (float)circleSegments * (float)Math.PI * 2f; verts.Add(new Vector3(cx + rx * Mathf.Cos(num), 0f, cz + rz * Mathf.Sin(num))); } for (int j = 0; j < circleSegments; j++) { int item = count2 + j; int item2 = count2 + (j + 1) % circleSegments; tris.Add(count); tris.Add(item); tris.Add(item2); tris.Add(count); tris.Add(item2); tris.Add(item); } } } private List<(Vector3, Vector3)> BuildSolid(List points) { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) List<(Vector3, Vector3)> list = new List<(Vector3, Vector3)>(); for (int i = 1; i < points.Count; i++) { list.Add((points[i - 1], points[i])); } return list; } private List<(Vector3, Vector3)> BuildDashes(List points, float dashLength, float gapLength, float phaseOffset) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_005f: 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_0068: 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_006f: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) List<(Vector3, Vector3)> list = new List<(Vector3, Vector3)>(); float num = phaseOffset % (dashLength + gapLength); bool flag = num < dashLength; float num2 = (flag ? (dashLength - num) : (gapLength - (num - dashLength))); for (int i = 1; i < points.Count; i++) { Vector3 val = points[i - 1]; Vector3 val2 = points[i]; float num3 = Vector3.Distance(val, val2); float num4 = 0f; while (num4 < num3) { float num5 = Mathf.Min(num2, num3 - num4); Vector3 item = Vector3.Lerp(val, val2, num4 / num3); Vector3 item2 = Vector3.Lerp(val, val2, (num4 + num5) / num3); if (flag) { list.Add((item, item2)); } num4 += num5; num2 -= num5; if (num2 <= 0.001f) { flag = !flag; num2 = (flag ? dashLength : gapLength); } } } return list; } private void UpdateLineSegments(GameObject root, List segments, List<(Vector3 start, Vector3 end)> dashes, Color color, float width) { //IL_0048: 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) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: 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_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) for (int i = 0; i < segments.Count; i++) { if (i < dashes.Count) { ((Component)segments[i]).gameObject.SetActive(true); segments[i].startWidth = width; segments[i].endWidth = width; segments[i].startColor = color; segments[i].endColor = color; ((Renderer)segments[i]).material.color = color; segments[i].SetPosition(0, dashes[i].start); segments[i].SetPosition(1, dashes[i].end); } else { ((Component)segments[i]).gameObject.SetActive(false); } } for (int j = segments.Count; j < dashes.Count; j++) { GameObject val = new GameObject($"Seg_{j}"); val.transform.SetParent(root.transform); LineRenderer val2 = val.AddComponent(); SetupLineRenderer(val2, color, width); val2.SetPosition(0, dashes[j].start); val2.SetPosition(1, dashes[j].end); segments.Add(val2); } } private void UpdateDiamonds(GameObject root, List diamonds, List<(Vector3 start, Vector3 end)> dashes, Color color, float width) { //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_00de: 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_0100: 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_0109: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Unknown result type (might be due to invalid IL or missing references) //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0122: 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_012e: Unknown result type (might be due to invalid IL or missing references) //IL_0188: Unknown result type (might be due to invalid IL or missing references) //IL_018d: Unknown result type (might be due to invalid IL or missing references) //IL_01a8: Unknown result type (might be due to invalid IL or missing references) //IL_01b9: 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_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01d5: Unknown result type (might be due to invalid IL or missing references) //IL_01da: Unknown result type (might be due to invalid IL or missing references) //IL_01e8: Unknown result type (might be due to invalid IL or missing references) //IL_01f5: Unknown result type (might be due to invalid IL or missing references) //IL_0202: 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_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0216: Unknown result type (might be due to invalid IL or missing references) //IL_0218: 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_0224: Unknown result type (might be due to invalid IL or missing references) //IL_0231: Unknown result type (might be due to invalid IL or missing references) //IL_0233: Unknown result type (might be due to invalid IL or missing references) //IL_023a: Unknown result type (might be due to invalid IL or missing references) //IL_023f: Unknown result type (might be due to invalid IL or missing references) float[] array = new float[3] { 22.5f, 45f, 158.5f }; int count = dashes.Count; int num = count * array.Length; for (int i = 0; i < diamonds.Count; i++) { if (i < num) { int index = i % count; float num2 = array[i / count]; Vector3 val = (dashes[index].start + dashes[index].end) * 0.5f; Vector3 val2 = Quaternion.Euler(0f, num2, 0f) * (dashes[index].end - dashes[index].start); ((Component)diamonds[i]).gameObject.SetActive(true); diamonds[i].startWidth = width; diamonds[i].endWidth = width; diamonds[i].startColor = color; diamonds[i].endColor = color; ((Renderer)diamonds[i]).material.color = color; diamonds[i].SetPosition(0, val - val2 * 0.5f); diamonds[i].SetPosition(1, val + val2 * 0.5f); } else { ((Component)diamonds[i]).gameObject.SetActive(false); } } for (int j = diamonds.Count; j < num; j++) { int index2 = j % count; float num3 = array[j / count]; GameObject val3 = new GameObject($"Diamond_{j}"); val3.transform.SetParent(root.transform); LineRenderer val4 = val3.AddComponent(); SetupLineRenderer(val4, color, width); Vector3 val5 = (dashes[index2].start + dashes[index2].end) * 0.5f; Vector3 val6 = Quaternion.Euler(0f, num3, 0f) * (dashes[index2].end - dashes[index2].start); val4.SetPosition(0, val5 - val6 * 0.5f); val4.SetPosition(1, val5 + val6 * 0.5f); diamonds.Add(val4); } } private void SetupLineRenderer(LineRenderer lr, Color color, float width) { //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) ((Renderer)lr).material = new Material(Shader.Find("HDRP/Unlit")); ((Renderer)lr).material.color = color; lr.startColor = color; lr.endColor = color; lr.startWidth = width; lr.endWidth = width; lr.useWorldSpace = true; lr.positionCount = 2; ((Renderer)lr).shadowCastingMode = (ShadowCastingMode)0; ((Renderer)lr).receiveShadows = false; } private List ApplyLateralOffset(List points, float offset) { //IL_0020: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_002e: 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_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_003c: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0068: Unknown result type (might be due to invalid IL or missing references) //IL_0048: 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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_006f: 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_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0079: 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) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_009b: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) List list = new List(points.Count); Vector3 val7 = default(Vector3); for (int i = 0; i < points.Count; i++) { Vector3 val; Vector3 val2; if (i <= 0) { val = Vector3.zero; } else { val2 = points[i] - points[i - 1]; val = ((Vector3)(ref val2)).normalized; } Vector3 val3 = val; Vector3 val4; if (i >= points.Count - 1) { val4 = Vector3.zero; } else { val2 = points[i + 1] - points[i]; val4 = ((Vector3)(ref val2)).normalized; } Vector3 val5 = val4; val2 = val3 + val5; Vector3 val6 = ((Vector3)(ref val2)).normalized; if (val6 == Vector3.zero) { val6 = ((val3 != Vector3.zero) ? val3 : val5); } ((Vector3)(ref val7))..ctor(0f - val6.z, 0f, val6.x); list.Add(points[i] + val7 * offset); } return list; } private void HideSegments(List segments) { foreach (LineRenderer segment in segments) { if ((Object)(object)segment != (Object)null) { ((Component)segment).gameObject.SetActive(false); } } } private void HideShapes(List shapes) { foreach (GameObject shape in shapes) { if ((Object)(object)shape != (Object)null) { shape.SetActive(false); } } } private Vector3[] CenterCorners(Vector3[] corners) { //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_002b: 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_0040: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: 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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: 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) //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) if (corners.Length < 3) { return corners; } Vector3[] array = (Vector3[])(object)new Vector3[corners.Length]; array[0] = corners[0]; array[corners.Length - 1] = corners[^1]; for (int i = 1; i < corners.Length - 1; i++) { Vector3 forward = corners[i + 1] - corners[i - 1]; forward.y = 0f; if (((Vector3)(ref forward)).sqrMagnitude < 0.001f) { array[i] = corners[i]; continue; } ((Vector3)(ref forward)).Normalize(); if (Mathf.Abs(corners[i + 1].y - corners[i - 1].y) > 0.75f) { array[i] = corners[i]; } else { array[i] = CenterInCorridor(corners[i], forward); } } return array; } private Vector3 CenterInCorridor(Vector3 point, Vector3 forward) { //IL_0000: Unknown result type (might be due to invalid IL or missing references) //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_0048: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_009c: 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) Vector3 val = Vector3.Cross(Vector3.up, forward); Vector3 normalized = ((Vector3)(ref val)).normalized; float num = 3f; float num2 = 3f; NavMeshHit val2 = default(NavMeshHit); if (NavMesh.Raycast(point, point + normalized * 3f, ref val2, -1)) { num = ((NavMeshHit)(ref val2)).distance; } NavMeshHit val3 = default(NavMeshHit); if (NavMesh.Raycast(point, point - normalized * 3f, ref val3, -1)) { num2 = ((NavMeshHit)(ref val3)).distance; } float num3 = (num - num2) * 0.5f; NavMeshHit val4 = default(NavMeshHit); if (NavMesh.SamplePosition(point + normalized * num3, ref val4, 0.5f, -1)) { return ((NavMeshHit)(ref val4)).position; } return point; } private List SmoothPath(Vector3[] corners) { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_0046: 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_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005e: Unknown result type (might be due to invalid IL or missing references) //IL_00de: Unknown result type (might be due to invalid IL or missing references) //IL_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0094: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) List list = new List(); if (corners.Length < 2) { list.AddRange(corners); return list; } list.Add(corners[0]); for (int i = 1; i < corners.Length - 1; i++) { Vector3 val = Vector3.Lerp(corners[i], corners[i - 1], 0.5f); Vector3 val2 = Vector3.Lerp(corners[i], corners[i + 1], 0.5f); for (int j = 0; j <= bezierSteps; j++) { float num = (float)j / (float)bezierSteps; float num2 = 1f - num; list.Add(num2 * num2 * val + 2f * num2 * num * corners[i] + num * num * val2); } } list.Add(corners[^1]); return list; } private void ClearLineRoots() { if ((Object)(object)mainEntranceRoot != (Object)null) { Object.Destroy((Object)(object)mainEntranceRoot); mainEntranceRoot = null; } mainEntranceSegments.Clear(); mainEntranceDiamonds.Clear(); mainEntranceShapes.Clear(); foreach (GameObject fireExitRoot in fireExitRoots) { if ((Object)(object)fireExitRoot != (Object)null) { Object.Destroy((Object)(object)fireExitRoot); } } fireExitRoots.Clear(); fireExitSegmentSets.Clear(); fireExitDiamondSets.Clear(); fireExitShapeSets.Clear(); } private void ClearAll() { ClearLineRoots(); ClearCompassOverlay(); mainEntranceTarget = null; fireExitTargets.Clear(); } } public class LeadMeOutInputActions : LcInputActions { [InputAction("/l", Name = "Toggle Exit Markers")] public InputAction ToggleKey { get; set; } } public class SolidColorGraphic : Graphic { public override Material defaultMaterial => Canvas.GetDefaultCanvasMaterial(); protected override void OnPopulateMesh(VertexHelper vh) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: 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_002e: 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_0038: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) //IL_0052: 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_006e: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) //IL_009a: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_00bb: Unknown result type (might be due to invalid IL or missing references) vh.Clear(); Rect rect = ((Graphic)this).rectTransform.rect; UIVertex val = default(UIVertex); val.uv0 = Vector4.op_Implicit(Vector2.zero); val.color = Color32.op_Implicit(((Graphic)this).color); val.position = new Vector3(((Rect)(ref rect)).xMin, ((Rect)(ref rect)).yMin); vh.AddVert(val); val.position = new Vector3(((Rect)(ref rect)).xMin, ((Rect)(ref rect)).yMax); vh.AddVert(val); val.position = new Vector3(((Rect)(ref rect)).xMax, ((Rect)(ref rect)).yMax); vh.AddVert(val); val.position = new Vector3(((Rect)(ref rect)).xMax, ((Rect)(ref rect)).yMin); vh.AddVert(val); vh.AddTriangle(0, 1, 2); vh.AddTriangle(2, 3, 0); } } public class LeadMeOutRunner : MonoBehaviour { private void Awake() { Plugin.Logger.LogInfo((object)"LeadMeOut: Runner Awake."); } private void Start() { Plugin.Logger.LogInfo((object)"LeadMeOut: Runner Start."); } private void Update() { if (Plugin.InputActions != null && Plugin.InputActions.ToggleKey.WasPressedThisFrame()) { Plugin.Logger.LogInfo((object)"LeadMeOut: Toggle via InputUtils."); Plugin.ExitFinderInstance?.Toggle(); } else if (Keyboard.current != null && ((ButtonControl)Keyboard.current.lKey).wasPressedThisFrame) { Plugin.Logger.LogInfo((object)"LeadMeOut: Toggle via raw keyboard."); Plugin.ExitFinderInstance?.Toggle(); } Plugin.ExitFinderInstance?.Tick(Time.deltaTime); } } public static class LethalConfigHelper { public static void Register() { //IL_0005: Unknown result type (might be due to invalid IL or missing references) //IL_000a: 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_0021: Expected O, but got Unknown //IL_002b: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Expected O, but got Unknown //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) //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_006d: Expected O, but got Unknown //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0093: Expected O, but got Unknown //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0098: Expected O, but got Unknown //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_00bd: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Expected O, but got Unknown //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Expected O, but got Unknown //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: Expected O, but got Unknown //IL_00f9: Unknown result type (might be due to invalid IL or missing references) //IL_00fe: Unknown result type (might be due to invalid IL or missing references) //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Expected O, but got Unknown //IL_011f: 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_012f: Unknown result type (might be due to invalid IL or missing references) //IL_013b: Expected O, but got Unknown //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014a: Unknown result type (might be due to invalid IL or missing references) //IL_0155: Unknown result type (might be due to invalid IL or missing references) //IL_0161: Expected O, but got Unknown //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0166: Expected O, but got Unknown //IL_016b: Unknown result type (might be due to invalid IL or missing references) //IL_0170: Unknown result type (might be due to invalid IL or missing references) //IL_017b: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Expected O, but got Unknown //IL_0191: Unknown result type (might be due to invalid IL or missing references) //IL_0196: 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_01ad: Expected O, but got Unknown //IL_01b7: Unknown result type (might be due to invalid IL or missing references) //IL_01bc: Unknown result type (might be due to invalid IL or missing references) //IL_01c7: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Expected O, but got Unknown //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_01e2: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_01f9: Expected O, but got Unknown //IL_01f4: Unknown result type (might be due to invalid IL or missing references) //IL_01fe: Expected O, but got Unknown LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.NavMode, new EnumDropDownOptions { Name = "Navigation Mode", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.ShowLines, new EnumDropDownOptions { Name = "Show Lines", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.RenderDistance, new EnumDropDownOptions { Name = "Render Distance", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)new BoolCheckBoxConfigItem(Plugin.AutoEnableOnEntry, new BoolCheckBoxOptions { Name = "Auto-Enable On Entry", RequiresRestart = false })); ConfigEntry brightness = Plugin.Brightness; IntSliderOptions val = new IntSliderOptions { Name = "Brightness (%)" }; ((BaseRangeOptions)val).Min = 20; ((BaseRangeOptions)val).Max = 100; ((BaseOptions)val).RequiresRestart = false; LethalConfigManager.AddConfigItem((BaseConfigItem)new IntSliderConfigItem(brightness, val)); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.MainEntranceLineStyle, new EnumDropDownOptions { Name = "Main Entrance - Line Style", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.MainEntranceLineWidth, new EnumDropDownOptions { Name = "Main Entrance - Line Width", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.MainEntranceColorPreset, new EnumDropDownOptions { Name = "Main Entrance - Color", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)new TextInputFieldConfigItem(Plugin.MainEntranceCustomColor, new TextInputFieldOptions { Name = "Main Entrance - Custom Hex", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.FireExitLineStyle, new EnumDropDownOptions { Name = "Fire Exit - Line Style", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.FireExitLineWidth, new EnumDropDownOptions { Name = "Fire Exit - Line Width", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)(object)new EnumDropDownConfigItem(Plugin.FireExitColorPreset, new EnumDropDownOptions { Name = "Fire Exit - Color", RequiresRestart = false })); LethalConfigManager.AddConfigItem((BaseConfigItem)new TextInputFieldConfigItem(Plugin.FireExitCustomColor, new TextInputFieldOptions { Name = "Fire Exit - Custom Hex", RequiresRestart = false })); } } [HarmonyPatch(typeof(NetworkManager))] internal static class NetworkPrefabPatch { private static readonly string MOD_GUID = "LeadMeOut"; [HarmonyPostfix] [HarmonyPatch("SetSingleton")] private static void RegisterPrefab() { //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Expected O, but got Unknown //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) GameObject val = new GameObject(MOD_GUID + " Prefab"); ((Object)val).hideFlags = (HideFlags)(((Object)val).hideFlags | 0x3D); Object.DontDestroyOnLoad((Object)(object)val); NetworkObject obj = val.AddComponent(); typeof(NetworkObject).GetField("GlobalObjectIdHash", BindingFlags.Instance | BindingFlags.NonPublic).SetValue(obj, GetHash(MOD_GUID)); NetworkManager.Singleton.PrefabHandler.AddNetworkPrefab(val); static uint GetHash(string value) { return value?.Aggregate(17u, (uint current, char c) => (current * 31) ^ c) ?? 0; } } } public enum LineStyle { Solid, Dashed, Dotted, Arrow, Triangle, Diamond, Heart, Pawprint } public enum LineColorPreset { Green, Red, Cyan, Magenta, Yellow, White, Blue, Orange, Purple, Black, Custom } public enum LineWidthPreset { Hairline, Thin, Standard, Heavy, Thiccc } public enum ShowLinesPreset { ShowBoth, MainEntranceOnly, FireExitsOnly } public enum NavigationMode { LinearMode, CompassMode } public enum RenderDistancePreset { Short, Medium, Long, Full } [BepInPlugin("LeadMeOut", "LeadMeOut", "1.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; internal static LeadMeOutInputActions InputActions; internal static ExitFinder ExitFinderInstance; internal static ConfigEntry MainEntranceLineStyle; internal static ConfigEntry MainEntranceLineWidth; internal static ConfigEntry MainEntranceColorPreset; internal static ConfigEntry MainEntranceCustomColor; internal static ConfigEntry FireExitLineStyle; internal static ConfigEntry FireExitLineWidth; internal static ConfigEntry FireExitColorPreset; internal static ConfigEntry FireExitCustomColor; internal static ConfigEntry NavMode; internal static ConfigEntry ShowLines; internal static ConfigEntry RenderDistance; internal static ConfigEntry AutoEnableOnEntry; internal static ConfigEntry Brightness; private static GameObject runnerObject; private void Awake() { //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_01d6: Unknown result type (might be due to invalid IL or missing references) //IL_01e0: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Logger.LogInfo((object)"Plugin LeadMeOut is loaded!"); new Harmony("LeadMeOut").PatchAll(); MainEntranceLineStyle = ((BaseUnityPlugin)this).Config.Bind("Main Entrance", "LineStyle", LineStyle.Solid, "Line style for the main entrance path.\nStyle options do not affect Compass mode."); MainEntranceLineWidth = ((BaseUnityPlugin)this).Config.Bind("Main Entrance", "LineWidth", LineWidthPreset.Standard, "Line width for the main entrance path."); MainEntranceColorPreset = ((BaseUnityPlugin)this).Config.Bind("Main Entrance", "Color", LineColorPreset.Green, "Color of the main entrance line."); MainEntranceCustomColor = ((BaseUnityPlugin)this).Config.Bind("Main Entrance", "CustomHex", "#00FF00", "Custom hex color for main entrance. Only used when Color is set to Custom."); FireExitLineStyle = ((BaseUnityPlugin)this).Config.Bind("Fire Exit", "LineStyle", LineStyle.Solid, "Line style for the fire exit path.\nStyle options do not affect Compass mode."); FireExitLineWidth = ((BaseUnityPlugin)this).Config.Bind("Fire Exit", "LineWidth", LineWidthPreset.Standard, "Line width for the fire exit path."); FireExitColorPreset = ((BaseUnityPlugin)this).Config.Bind("Fire Exit", "Color", LineColorPreset.Red, "Color of the fire exit line."); FireExitCustomColor = ((BaseUnityPlugin)this).Config.Bind("Fire Exit", "CustomHex", "#FF0000", "Custom hex color for fire exit. Only used when Color is set to Custom."); NavMode = ((BaseUnityPlugin)this).Config.Bind("Behavior", "NavigationMode", NavigationMode.LinearMode, "LinearMode shows navigational path lines on the floor.\nCompassMode overlays directional markers on the HUD compass.\nLine Style options only affect Linear Mode and do not affect Compass Mode."); ShowLines = ((BaseUnityPlugin)this).Config.Bind("Behavior", "ShowLines", ShowLinesPreset.ShowBoth, "Choose which exit lines to show."); RenderDistance = ((BaseUnityPlugin)this).Config.Bind("Behavior", "RenderDistance", RenderDistancePreset.Medium, "How far ahead the path line renders. Short=15, Medium=30, Long=50, Full=unlimited."); AutoEnableOnEntry = ((BaseUnityPlugin)this).Config.Bind("Behavior", "AutoEnableOnEntry", false, "Automatically show lines when entering a facility. Hotkey toggles navigation off/on."); Brightness = ((BaseUnityPlugin)this).Config.Bind("Behavior", "Brightness", 80, new ConfigDescription("Brightness of exit markers (lines and compass pips). Enter a value between 20 and 100.", (AcceptableValueBase)(object)new AcceptableValueRange(20, 100), Array.Empty())); if (Chainloader.PluginInfos.ContainsKey("ainavt.lc.lethalconfig")) { LethalConfigHelper.Register(); Logger.LogInfo((object)"LeadMeOut: LethalConfig registered."); } InputActions = new LeadMeOutInputActions(); ((LcInputActions)InputActions).Enable(); ExitFinderInstance = new ExitFinder(); SceneManager.sceneLoaded += OnSceneLoaded; Logger.LogInfo((object)"LeadMeOut: Waiting for scene to create runner."); } private static void OnSceneLoaded(Scene scene, LoadSceneMode mode) { //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_0037: Expected O, but got Unknown Logger.LogInfo((object)("LeadMeOut: Scene loaded - " + ((Scene)(ref scene)).name)); if ((Object)(object)runnerObject == (Object)null) { runnerObject = new GameObject("LeadMeOut_Runner"); runnerObject.AddComponent(); Object.DontDestroyOnLoad((Object)(object)runnerObject); Logger.LogInfo((object)"LeadMeOut: Runner created."); } } internal static Color ResolveColor(LineColorPreset preset, string customHex, Color fallback) { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_005b: 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_0085: Unknown result type (might be due to invalid IL or missing references) //IL_009a: 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_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00df: Unknown result type (might be due to invalid IL or missing references) //IL_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: 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) switch (preset) { case LineColorPreset.Green: return new Color(0f, 1f, 0f); case LineColorPreset.Red: return new Color(1f, 0f, 0f); case LineColorPreset.Cyan: return new Color(0f, 0.94f, 1f); case LineColorPreset.Magenta: return new Color(1f, 0.01f, 0.74f); case LineColorPreset.Yellow: return new Color(0.88f, 1f, 0f); case LineColorPreset.White: return Color.white; case LineColorPreset.Blue: return new Color(0f, 0.37f, 1f); case LineColorPreset.Orange: return new Color(1f, 0.5f, 0f); case LineColorPreset.Purple: return new Color(0.51f, 0f, 1f); case LineColorPreset.Black: return Color.black; case LineColorPreset.Custom: { Color result = default(Color); if (ColorUtility.TryParseHtmlString(customHex, ref result)) { return result; } return fallback; } default: return fallback; } } internal static float ResolveRenderDistance(RenderDistancePreset preset) { return preset switch { RenderDistancePreset.Short => 15f, RenderDistancePreset.Medium => 30f, RenderDistancePreset.Long => 50f, RenderDistancePreset.Full => float.MaxValue, _ => 30f, }; } internal static float ResolveWidth(LineWidthPreset preset) { return preset switch { LineWidthPreset.Hairline => 0.0125f, LineWidthPreset.Thin => 0.025f, LineWidthPreset.Standard => 0.05f, LineWidthPreset.Heavy => 0.1f, LineWidthPreset.Thiccc => 0.2f, _ => 0.05f, }; } internal static float ResolvePipWidth(LineWidthPreset preset) { return preset switch { LineWidthPreset.Hairline => 0.5f, LineWidthPreset.Thin => 1f, LineWidthPreset.Standard => 2f, LineWidthPreset.Heavy => 5f, LineWidthPreset.Thiccc => 8f, _ => 2f, }; } internal static Color ApplyBrightness(Color c) { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_002b: 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_0039: Unknown result type (might be due to invalid IL or missing references) float num = (float)Mathf.Clamp(Brightness.Value, 20, 100) / 100f; return new Color(c.r * num, c.g * num, c.b * num, c.a); } } public static class MyPluginInfo { public const string PLUGIN_GUID = "LeadMeOut"; public const string PLUGIN_NAME = "LeadMeOut"; public const string PLUGIN_VERSION = "1.0.1"; }