Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of Parallax v0.1.6
NoteBoxz.ParallaxMod.dll
Decompiled 7 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using System.Text; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalModDataLib.Attributes; using Microsoft.CodeAnalysis; using NoteBoxz.ParallaxMod.NetcodePatcher; using NotezyLib.Utils; using Unity.Netcode; using UnityEngine; using UnityEngine.Events; using UnityEngine.InputSystem; using UnityEngine.Rendering; using UnityEngine.SceneManagement; using UnityEngine.VFX; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("LethalLevelLoader")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")] [assembly: IgnoresAccessChecksTo("Unity.Services.QoS")] [assembly: IgnoresAccessChecksTo("Unity.Services.Relay")] [assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")] [assembly: IgnoresAccessChecksTo("Unity.Timeline")] [assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")] [assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")] [assembly: IgnoresAccessChecksTo("UnityEngine.UI")] [assembly: AssemblyCompany("NoteBoxz.ParallaxMod")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("0.1.6.0")] [assembly: AssemblyInformationalVersion("0.1.6")] [assembly: AssemblyProduct("ParallaxMod")] [assembly: AssemblyTitle("NoteBoxz.ParallaxMod")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.1.6.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = 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; } } } namespace ParallaxMod { [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInPlugin("NoteBoxz.ParallaxMod", "ParallaxMod", "0.1.6")] public class ParallaxMod : BaseUnityPlugin { private readonly string targetSceneName = "NotezLevel1Parallax"; private bool isPatchActive = false; [ModData(/*Could not decode attribute arguments.*/)] public static bool VistedParallax; [ModData(/*Could not decode attribute arguments.*/)] public static bool GotParaTip; public static ParallaxMod Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } internal static Harmony? PermanentHarmony { get; set; } internal static Harmony? DynamicHarmony { get; set; } internal static AssetBundle assetBundle { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; Instance = this; Patch(); NetcodePatcher(); SceneManager.sceneLoaded += OnSceneLoaded; SceneManager.sceneUnloaded += OnSceneUnloaded; LoadAssetBundle(); Logger.LogInfo((object)"NoteBoxz.ParallaxMod v0.1.6 has loaded!"); } internal static void LoadAssetBundle() { string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); if (directoryName == null) { throw new InvalidOperationException("Unable to determine assembly location."); } string text = Path.Combine(directoryName, "parallaxspeicalassets"); assetBundle = AssetBundle.LoadFromFile(text); if ((Object)(object)assetBundle == (Object)null) { throw new InvalidOperationException("Failed to load AssetBundle."); } } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Expected O, but got Unknown if (!(((Scene)(ref scene)).name == targetSceneName) || isPatchActive) { return; } if (DynamicHarmony == null) { DynamicHarmony = new Harmony("NoteBoxz.ParallaxMod.dynamic"); } IEnumerable<Type> enumerable = from t in Assembly.GetExecutingAssembly().GetTypes() where t.Namespace == "ParallaxMod.MoonPatches" select t; foreach (Type item in enumerable) { DynamicHarmony.PatchAll(item); } isPatchActive = true; Logger.LogInfo((object)("Dynamic patches applied for " + targetSceneName)); } private void OnSceneUnloaded(Scene scene) { if (((Scene)(ref scene)).name == targetSceneName && isPatchActive) { CleanUpBeforeUnPatch(); Harmony? dynamicHarmony = DynamicHarmony; if (dynamicHarmony != null) { dynamicHarmony.UnpatchSelf(); } isPatchActive = false; Logger.LogInfo((object)("Dynamic patches removed for " + targetSceneName)); } } internal static void Patch() { //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) //IL_0018: Expected O, but got Unknown if (PermanentHarmony == null) { PermanentHarmony = new Harmony("NoteBoxz.ParallaxMod.permanent"); } Logger.LogDebug((object)"Patching permanent patches..."); IEnumerable<Type> enumerable = from t in Assembly.GetExecutingAssembly().GetTypes() where t.Namespace == "ParallaxMod.Patches" select t; foreach (Type item in enumerable) { PermanentHarmony.PatchAll(item); Logger.LogDebug((object)("Patched permanent type: " + item.Name)); } Logger.LogDebug((object)"Finished patching!"); } private void CleanUpBeforeUnPatch() { } internal static void Unpatch() { Logger.LogDebug((object)"Unpatching all patches..."); Harmony? permanentHarmony = PermanentHarmony; if (permanentHarmony != null) { permanentHarmony.UnpatchSelf(); } Harmony? dynamicHarmony = DynamicHarmony; if (dynamicHarmony != null) { dynamicHarmony.UnpatchSelf(); } Logger.LogDebug((object)"Finished unpatching!"); } private void NetcodePatcher() { Type[] types = Assembly.GetExecutingAssembly().GetTypes(); Type[] array = types; foreach (Type type in array) { MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array2 = methods; foreach (MethodInfo methodInfo in array2) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } [RequireComponent(typeof(MeshFilter))] public class MeshNoiseDistorter : MonoBehaviour { public float noiseScale = 1f; public float distortionStrength = 0.1f; public float animationSpeed = 1f; public Vector3 noiseOffset; public bool useCulling = true; private Mesh originalMesh = null; private Vector3[] originalVertices = (Vector3[])(object)new Vector3[0]; private Vector3[] distortedVertices = (Vector3[])(object)new Vector3[0]; private MeshFilter meshFilter = null; private Renderer meshRenderer = null; private bool isVisible = true; private void Start() { meshFilter = ((Component)this).GetComponent<MeshFilter>(); meshRenderer = ((Component)this).GetComponent<Renderer>(); originalMesh = meshFilter.mesh; originalVertices = originalMesh.vertices; distortedVertices = (Vector3[])(object)new Vector3[originalVertices.Length]; } private void Update() { //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_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0091: 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_00cc: 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) //IL_0107: 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_0139: Unknown result type (might be due to invalid IL or missing references) //IL_013e: Unknown result type (might be due to invalid IL or missing references) //IL_0148: 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_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0151: Unknown result type (might be due to invalid IL or missing references) //IL_0172: Unknown result type (might be due to invalid IL or missing references) //IL_0178: Expected O, but got Unknown //IL_01ca: Unknown result type (might be due to invalid IL or missing references) //IL_01cf: 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_01e4: Unknown result type (might be due to invalid IL or missing references) //IL_01e9: Unknown result type (might be due to invalid IL or missing references) //IL_01ee: Unknown result type (might be due to invalid IL or missing references) if (useCulling) { bool flag = meshRenderer.isVisible; if (flag != isVisible || flag) { isVisible = flag; if (!isVisible) { return; } } else if (!isVisible) { return; } } for (int i = 0; i < originalVertices.Length; i++) { Vector3 val = originalVertices[i]; float num = Mathf.PerlinNoise((val.x + noiseOffset.x) * noiseScale, (val.y + noiseOffset.y) * noiseScale); float num2 = Mathf.PerlinNoise((val.y + noiseOffset.y) * noiseScale, (val.z + noiseOffset.z) * noiseScale); float num3 = Mathf.PerlinNoise((val.z + noiseOffset.z) * noiseScale, (val.x + noiseOffset.x) * noiseScale); Vector3 val2 = new Vector3(num, num2, num3) * distortionStrength; distortedVertices[i] = val + val2; } Mesh val3 = new Mesh(); val3.vertices = distortedVertices; val3.triangles = originalMesh.triangles; val3.normals = originalMesh.normals; val3.uv = originalMesh.uv; meshFilter.mesh = val3; noiseOffset += Vector3.one * animationSpeed * Time.deltaTime; } private void OnDisable() { if ((Object)(object)meshFilter != (Object)null) { meshFilter.mesh = originalMesh; } } private void OnBecameVisible() { isVisible = true; } private void OnBecameInvisible() { isVisible = false; } } public enum ParallaxDimention { None, Red, Blue } public class ParallaxDimentionVisibilty : MonoBehaviour { public class VisibilityStateTracker { private Renderer renderer; private bool wasDimensionDisabled = false; public VisibilityStateTracker(Renderer source) { renderer = source; } public void DisableForDimension() { wasDimensionDisabled = renderer.enabled; if (wasDimensionDisabled) { renderer.enabled = false; } } public void EnableForDimension() { if (wasDimensionDisabled) { renderer.enabled = true; wasDimensionDisabled = false; } } } private class ColliderStateTracker { private Collider? collider3D; private Collider2D? collider2D; private bool wasDimensionDisabled = false; public ColliderStateTracker(Collider collider) { collider3D = collider; } public ColliderStateTracker(Collider2D collider) { collider2D = collider; } public void DisableForDimension() { if ((Object)(object)collider3D != (Object)null) { wasDimensionDisabled = collider3D.enabled; if (wasDimensionDisabled) { collider3D.enabled = false; } } else if ((Object)(object)collider2D != (Object)null) { wasDimensionDisabled = ((Behaviour)collider2D).enabled; if (wasDimensionDisabled) { ((Behaviour)collider2D).enabled = false; } } } public void EnableForDimension() { if (wasDimensionDisabled) { if ((Object)(object)collider3D != (Object)null) { collider3D.enabled = true; } else if ((Object)(object)collider2D != (Object)null) { ((Behaviour)collider2D).enabled = true; } wasDimensionDisabled = false; } } } private class AudioSourceStateTracker { private AudioSource audioSource; private bool wasDimensionDisabled = false; private bool wasInitiallyMuted = false; public AudioSourceStateTracker(AudioSource source) { audioSource = source; } public void DisableForDimension() { wasDimensionDisabled = ((Behaviour)audioSource).enabled; if (wasDimensionDisabled) { audioSource.mute = true; } } public void EnableForDimension() { if (wasDimensionDisabled) { wasInitiallyMuted = audioSource.mute; audioSource.mute = !wasInitiallyMuted; wasDimensionDisabled = false; } } } private class LayerStateTracker { private GameObject targetObject; private int originalLayer; private int dimensionLayer; public LayerStateTracker(GameObject obj, int dimLayer) { targetObject = obj; originalLayer = obj.layer; dimensionLayer = dimLayer; } public void DisableForDimension() { if ((Object)(object)targetObject != (Object)null) { targetObject.layer = dimensionLayer; } } public void EnableForDimension() { if ((Object)(object)targetObject != (Object)null) { targetObject.layer = originalLayer; } } } [Tooltip("The dimension this object belongs to")] public ParallaxDimention Dimention = ParallaxDimention.None; [Tooltip("The layer to use when object should be hidden in another dimension")] public int DimentionLayer = 23; [Tooltip("Should colliders be disabled in other dimensions")] public bool DisableCollidersInOtherDimensions = true; [Tooltip("Should audio sources be disabled in other dimensions")] public bool DisableAudioInOtherDimensions = true; [SerializeField] [HideInInspector] private bool isHidden = false; [HideInInspector] public List<Renderer> ExtraRenderers = new List<Renderer>(); public UnityEvent OnBecameVisibleInDimension = new UnityEvent(); public UnityEvent OnBecameHiddenInDimension = new UnityEvent(); private List<LayerStateTracker> trackedLayers = new List<LayerStateTracker>(); private List<ColliderStateTracker> trackedColliders = new List<ColliderStateTracker>(); private List<AudioSourceStateTracker> trackedAudioSources = new List<AudioSourceStateTracker>(); private ParallaxMoonController? parallaxController; private void Start() { parallaxController = ParallaxMoonController.Instance; CacheLayers(); CacheColliders(); CacheAudioSources(); UpdateVisibility(); } private void CacheLayers() { trackedLayers.Clear(); Renderer[] components = ((Component)this).GetComponents<Renderer>(); foreach (Renderer val in components) { trackedLayers.Add(new LayerStateTracker(((Component)val).gameObject, DimentionLayer)); } Renderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<Renderer>(); foreach (Renderer val2 in componentsInChildren) { if ((Object)(object)((Component)val2).gameObject != (Object)(object)((Component)this).gameObject) { trackedLayers.Add(new LayerStateTracker(((Component)val2).gameObject, DimentionLayer)); } } foreach (Renderer extraRenderer in ExtraRenderers) { if ((Object)(object)extraRenderer != (Object)null) { trackedLayers.Add(new LayerStateTracker(((Component)extraRenderer).gameObject, DimentionLayer)); } } } private void CacheColliders() { trackedColliders.Clear(); Collider[] components = ((Component)this).GetComponents<Collider>(); foreach (Collider collider in components) { trackedColliders.Add(new ColliderStateTracker(collider)); } Collider2D[] components2 = ((Component)this).GetComponents<Collider2D>(); foreach (Collider2D collider2 in components2) { trackedColliders.Add(new ColliderStateTracker(collider2)); } Collider[] componentsInChildren = ((Component)this).GetComponentsInChildren<Collider>(); foreach (Collider val in componentsInChildren) { if ((Object)(object)((Component)val).gameObject != (Object)(object)((Component)this).gameObject) { trackedColliders.Add(new ColliderStateTracker(val)); } } Collider2D[] componentsInChildren2 = ((Component)this).GetComponentsInChildren<Collider2D>(); foreach (Collider2D val2 in componentsInChildren2) { if ((Object)(object)((Component)val2).gameObject != (Object)(object)((Component)this).gameObject) { trackedColliders.Add(new ColliderStateTracker(val2)); } } } private void CacheAudioSources() { trackedAudioSources.Clear(); AudioSource[] components = ((Component)this).GetComponents<AudioSource>(); foreach (AudioSource source in components) { trackedAudioSources.Add(new AudioSourceStateTracker(source)); } AudioSource[] componentsInChildren = ((Component)this).GetComponentsInChildren<AudioSource>(); foreach (AudioSource val in componentsInChildren) { if ((Object)(object)((Component)val).gameObject != (Object)(object)((Component)this).gameObject) { trackedAudioSources.Add(new AudioSourceStateTracker(val)); } } } private void LateUpdate() { if (!((Object)(object)parallaxController == (Object)null)) { UpdateVisibility(); if ((Object)(object)parallaxController == (Object)null) { Object.Destroy((Object)(object)this); } } } private void UpdateVisibility() { if ((Object)(object)parallaxController == (Object)null) { return; } bool flag = parallaxController.CurrentDimention != Dimention; if (flag == isHidden) { return; } if (((Object)((Component)this).gameObject).name.Contains("Player")) { ParallaxMod.Logger.LogInfo((object)$"Updating visibility for {((Object)((Component)this).gameObject).name}. Current Dimension: {parallaxController.CurrentDimention}, Object Dimension: {Dimention}, Should be hidden: {flag}"); } if (flag) { if (((Object)((Component)this).gameObject).name.Contains("Player")) { ParallaxMod.Logger.LogInfo((object)$"Hiding {((Object)((Component)this).gameObject).name} in dimension {parallaxController.CurrentDimention}"); } HideInOtherDimension(); OnBecameHiddenInDimension.Invoke(); } else { RestoreVisibility(); OnBecameVisibleInDimension.Invoke(); } isHidden = flag; } private void HideInOtherDimension() { foreach (LayerStateTracker trackedLayer in trackedLayers) { trackedLayer.DisableForDimension(); } if (DisableCollidersInOtherDimensions) { foreach (ColliderStateTracker trackedCollider in trackedColliders) { trackedCollider.DisableForDimension(); } } if (!DisableAudioInOtherDimensions) { return; } foreach (AudioSourceStateTracker trackedAudioSource in trackedAudioSources) { trackedAudioSource.DisableForDimension(); } } private void RestoreVisibility() { foreach (LayerStateTracker trackedLayer in trackedLayers) { try { trackedLayer.EnableForDimension(); } catch (Exception arg) { ParallaxMod.Logger.LogError((object)$"Failed to restore layer visibility for {trackedLayer}: {arg}"); } } if (DisableCollidersInOtherDimensions) { foreach (ColliderStateTracker trackedCollider in trackedColliders) { try { trackedCollider.EnableForDimension(); } catch (Exception arg2) { ParallaxMod.Logger.LogError((object)$"Failed to restore collider visibility for {trackedCollider}: {arg2}"); } } } if (!DisableAudioInOtherDimensions) { return; } foreach (AudioSourceStateTracker trackedAudioSource in trackedAudioSources) { try { trackedAudioSource.EnableForDimension(); } catch (Exception arg3) { ParallaxMod.Logger.LogError((object)$"Failed to restore audio visibility for {trackedAudioSource}: {arg3}"); } } } private void OnEnable() { UpdateVisibility(); } public void OnDestroy() { if (isHidden) { RestoreVisibility(); } } } public class ParallaxEntranceTeleport : MonoBehaviour { public ParallaxDimention Dimention = ParallaxDimention.None; public ParallaxDimentionVisibilty Vis = null; public ParallaxDimentionVisibilty VisIndoor = null; public EntranceTeleport OutdoorTeleport = null; public EntranceTeleport IndoorTeleport = null; public void Awake() { ParallaxMod.Logger.LogMessage((object)$"ParallaxEntranceTeleport: Awake for {OutdoorTeleport.entranceId} in {Dimention}"); Vis.Dimention = Dimention; } public void Update() { Vis.Dimention = Dimention; if ((Object)(object)VisIndoor != (Object)null) { VisIndoor.Dimention = Dimention; } } public void FindIndoorTeleport() { if ((Object)(object)IndoorTeleport != (Object)null) { return; } EntranceTeleport[] array = Object.FindObjectsOfType<EntranceTeleport>(); foreach (EntranceTeleport val in array) { if (!((Object)(object)val == (Object)(object)OutdoorTeleport) && !val.isEntranceToBuilding && val.entranceId == OutdoorTeleport.entranceId) { IndoorTeleport = val; break; } } if ((Object)(object)IndoorTeleport == (Object)null) { ParallaxMod.Logger.LogWarning((object)$"ParallaxEntranceTeleport: Could not find indoor teleport for {OutdoorTeleport.entranceId}"); } else { AddVisToTeleports(); } } public void AddVisToTeleports() { //IL_000d: 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) GameObject val = TryFindDoorModel(((Component)IndoorTeleport).transform.position); if ((Object)(object)val == (Object)null) { ParallaxMod.Logger.LogFatal((object)$"ParallaxEntranceTeleport: Could not find door model near Indoor Teleport {IndoorTeleport.entranceId} at {((Component)IndoorTeleport).transform.position}"); Object.Destroy((Object)(object)Vis); Object.Destroy((Object)(object)this); } else { VisIndoor = ((Component)IndoorTeleport).gameObject.AddComponent<ParallaxDimentionVisibilty>(); VisIndoor.ExtraRenderers.AddRange(val.GetComponentsInChildren<Renderer>()); VisIndoor.Dimention = Dimention; ParallaxMod.Logger.LogMessage((object)$"ParallaxEntranceTeleport: Added ParallaxDimentionVisibilty to Indoor Teleport {IndoorTeleport.entranceId} for {Dimention}"); } } public GameObject TryFindDoorModel(Vector3 Pos) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) List<GameObject> list = Object.FindObjectsOfType<GameObject>().ToList(); list.Sort(delegate(GameObject a, GameObject b) { //IL_0007: 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_001e: 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) float num = Vector3.Distance(a.transform.position, Pos); float value = Vector3.Distance(b.transform.position, Pos); return num.CompareTo(value); }); foreach (GameObject item in list) { string text = SplitByCapitalization(((Object)item).name).ToLowerInvariant(); if (text.Contains("fire")) { return item; } } return null; static string SplitByCapitalization(string input) { if (string.IsNullOrEmpty(input)) { return ""; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(input[0]); for (int i = 1; i < input.Length; i++) { if (char.IsUpper(input[i]) && !char.IsWhiteSpace(input[i - 1])) { stringBuilder.Append(' '); } stringBuilder.Append(input[i]); } return stringBuilder.ToString(); } } } public class ParallaxGrabableObject : MonoBehaviour { public ParallaxDimention Dimention = ParallaxDimention.None; public ParallaxDimentionVisibilty DimentionVisibilty = null; public GrabbableObject ItemScript = null; private bool PrevLethalMinSettings; private object? pikminItemSettings; private FieldInfo? excludeFromGetItemsCheckField; private void Start() { //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_003a: Expected O, but got Unknown DimentionVisibilty.OnBecameHiddenInDimension.AddListener(new UnityAction(OnBecomeHidden)); DimentionVisibilty.OnBecameVisibleInDimension.AddListener(new UnityAction(OnBecomeVisible)); if ((Object)(object)ItemScript.playerHeldBy != (Object)null) { Dimention = ParallaxMoonController.Instance.PlayerDimentions[ItemScript.playerHeldBy]; } } public void Update() { DimentionVisibilty.Dimention = Dimention; } private void OnBecomeHidden() { if (Chainloader.PluginInfos.ContainsKey("NoteBoxz.LethalMin")) { LETHALMIN_DISABLESETTINGS(); } } private void OnBecomeVisible() { if (Chainloader.PluginInfos.ContainsKey("NoteBoxz.LethalMin")) { LETHALMIN_RESTORESETTINGS(); } } public void LETHALMIN_DISABLESETTINGS() { try { if (pikminItemSettings == null) { pikminItemSettings = ((Component)ItemScript).GetComponent("PikminItemSettings"); if (pikminItemSettings == null) { Debug.LogWarning((object)"PikminItemSettings component not found on ItemScript"); return; } Type type = pikminItemSettings.GetType(); excludeFromGetItemsCheckField = type.GetField("ExcludeFromGetItemsCheck", BindingFlags.Instance | BindingFlags.Public); if (excludeFromGetItemsCheckField == null) { Debug.LogWarning((object)"ExcludeFromGetItemsCheck field not found in PikminItemSettings"); return; } PrevLethalMinSettings = (bool)excludeFromGetItemsCheckField.GetValue(pikminItemSettings); } if (excludeFromGetItemsCheckField != null && pikminItemSettings != null) { excludeFromGetItemsCheckField.SetValue(pikminItemSettings, true); } } catch (Exception ex) { Debug.LogError((object)("Error in LETHALMIN_DISABLESETTINGS: " + ex.Message)); } } public void LETHALMIN_RESTORESETTINGS() { try { if (excludeFromGetItemsCheckField != null && pikminItemSettings != null) { excludeFromGetItemsCheckField.SetValue(pikminItemSettings, PrevLethalMinSettings); } } catch (Exception ex) { Debug.LogError((object)("Error in LETHALMIN_RESTORESETTINGS: " + ex.Message)); } } } public class ParallaxMoonController : NetworkBehaviour { [CompilerGenerated] private sealed class <DelayedTip>d__13 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ParallaxMoonController <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DelayedTip>d__13(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; if (!ParallaxMod.VistedParallax) { HUDManager.Instance.DisplayTip("Welcome to Parallax!", "You can change your dimension by going through the rifts scattered around the map.", false, false, "LC_Tip1"); } ParallaxMod.VistedParallax = true; <>4__this.ChangeDimention(ParallaxDimention.None, StartOfRound.Instance.localPlayerController); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <SendScrapToRandomDimensions>d__10 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ParallaxMoonController <>4__this; private ParallaxGrabableObject[] <list>5__1; private int <RedCount>5__2; private int <BlueCount>5__3; private int <NoneCount>5__4; private ParallaxGrabableObject[] <>s__5; private int <>s__6; private ParallaxGrabableObject <scrap>5__7; private int <randomValue>5__8; private ParallaxGrabableObject[] <>s__9; private int <>s__10; private ParallaxGrabableObject <scrap>5__11; private NetworkObjectReference <netObjRef>5__12; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <SendScrapToRandomDimensions>d__10(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <list>5__1 = null; <>s__5 = null; <scrap>5__7 = null; <>s__9 = null; <scrap>5__11 = null; <>1__state = -2; } private bool MoveNext() { //IL_0220: Unknown result type (might be due to invalid IL or missing references) //IL_0225: 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_024d: Unknown result type (might be due to invalid IL or missing references) //IL_0257: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <list>5__1 = Object.FindObjectsOfType<ParallaxGrabableObject>(); <RedCount>5__2 = 0; <BlueCount>5__3 = 0; <NoneCount>5__4 = 0; <>s__5 = <list>5__1; for (<>s__6 = 0; <>s__6 < <>s__5.Length; <>s__6++) { <scrap>5__7 = <>s__5[<>s__6]; if (!<scrap>5__7.ItemScript.isInShipRoom && <scrap>5__7.ItemScript.isInFactory) { <randomValue>5__8 = Random.Range(0, 100); if (<randomValue>5__8 < 45) { <scrap>5__7.Dimention = ParallaxDimention.Red; <RedCount>5__2++; } else if (<randomValue>5__8 < 90) { <scrap>5__7.Dimention = ParallaxDimention.Blue; <BlueCount>5__3++; } else { <scrap>5__7.Dimention = ParallaxDimention.None; <NoneCount>5__4++; } ParallaxMod.Logger.LogDebug((object)$"Assigned scrap {((Object)<scrap>5__7).name} to dimension {<scrap>5__7.Dimention}"); <scrap>5__7 = null; } } <>s__5 = null; if (!((NetworkBehaviour)<>4__this).IsServer) { return false; } ParallaxMod.Logger.LogDebug((object)$"Scrap Dimension Assignment Complete: Red={<RedCount>5__2}, Blue={<BlueCount>5__3}, None={<NoneCount>5__4}. Syncing to clients..."); <>s__9 = <list>5__1; <>s__10 = 0; break; case 1: <>1__state = -1; <scrap>5__11 = null; <>s__10++; break; } if (<>s__10 < <>s__9.Length) { <scrap>5__11 = <>s__9[<>s__10]; <netObjRef>5__12 = new NetworkObjectReference(((Component)<scrap>5__11.ItemScript).GetComponent<NetworkObject>()); <>4__this.SyncScrapDimentionClientRpc(<netObjRef>5__12, <scrap>5__11.Dimention); <>2__current = (object)new WaitForSeconds(0.05f); <>1__state = 1; return true; } <>s__9 = null; return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <SpawnRiftsRoutine>d__12 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ParallaxMoonController <>4__this; private int <OutdoorRifts>5__1; private int <IndoorRifts>5__2; private int <i>5__3; private int <i>5__4; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <SpawnRiftsRoutine>d__12(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0063: Expected O, but got Unknown //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <OutdoorRifts>5__1 = Random.Range(5, 15); <i>5__3 = 0; goto IL_0084; case 1: <>1__state = -1; <i>5__3++; goto IL_0084; case 2: { <>1__state = -1; <i>5__4++; break; } IL_0084: if (<i>5__3 < <OutdoorRifts>5__1) { <>4__this.SpawnRift(); <>2__current = (object)new WaitForSeconds(0.1f); <>1__state = 1; return true; } <IndoorRifts>5__2 = Random.Range(10, 25); <i>5__4 = 0; break; } if (<i>5__4 < <IndoorRifts>5__2) { <>4__this.SpawnRift(Indoor: true); <>2__current = (object)new WaitForSeconds(0.1f); <>1__state = 2; return true; } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static ParallaxMoonController Instance; public GameObject RiftPrefab = null; public ParallaxDimention CurrentDimention = ParallaxDimention.None; public Dictionary<PlayerControllerB, ParallaxDimention> PlayerDimentions = new Dictionary<PlayerControllerB, ParallaxDimention>(); public List<ParallaxRift> Rifts = new List<ParallaxRift>(); public float RiftSpawnInterval = 4f; private float RiftSpawnTimer = 0f; private void Awake() { Instance = this; } public void Start() { //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { PlayerDimentions[val] = ParallaxDimention.None; ParallaxPlayer parallaxPlayer = ((Component)val).gameObject.AddComponent<ParallaxPlayer>(); parallaxPlayer.playerController = val; } GrabbableObject[] array = Object.FindObjectsOfType<GrabbableObject>(); foreach (GrabbableObject val2 in array) { if ((Object)(object)((Component)val2).GetComponentInChildren<ParallaxGrabableObject>() == (Object)null) { ParallaxGrabableObject parallaxGrabableObject = ((Component)val2).gameObject.AddComponent<ParallaxGrabableObject>(); ParallaxDimentionVisibilty dimentionVisibilty = ((Component)val2).gameObject.AddComponent<ParallaxDimentionVisibilty>(); parallaxGrabableObject.DimentionVisibilty = dimentionVisibilty; parallaxGrabableObject.ItemScript = val2; } } ((UnityEvent)StartOfRound.Instance.StartNewRoundEvent).AddListener(new UnityAction(OnNewRoundStarted)); RiftPrefab = ParallaxMod.assetBundle.LoadAsset<GameObject>("Assets/LethalCompany/Mods/ParallaxMod/Prefabs/Rift.prefab"); } private void OnNewRoundStarted() { if (((NetworkBehaviour)this).IsServer) { ((MonoBehaviour)this).StartCoroutine(SendScrapToRandomDimensions()); ((MonoBehaviour)this).StartCoroutine(SpawnRiftsRoutine()); } ((MonoBehaviour)this).StartCoroutine(DelayedTip()); } [IteratorStateMachine(typeof(<SendScrapToRandomDimensions>d__10))] private IEnumerator SendScrapToRandomDimensions() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <SendScrapToRandomDimensions>d__10(0) { <>4__this = this }; } [ClientRpc] public void SyncScrapDimentionClientRpc(NetworkObjectReference scrapRef, ParallaxDimention dimention) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Invalid comparison between Unknown and I4 //IL_005f: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_009e: 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_00f7: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(492679783u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref scrapRef, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref dimention, default(ForEnums)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 492679783u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; NetworkObject val3 = default(NetworkObject); if (((NetworkObjectReference)(ref scrapRef)).TryGet(ref val3, (NetworkManager)null)) { GrabbableObject component = ((Component)val3).GetComponent<GrabbableObject>(); if ((Object)(object)component != (Object)null) { ParallaxGrabableObject component2 = ((Component)component).GetComponent<ParallaxGrabableObject>(); if ((Object)(object)component2 != (Object)null) { component2.Dimention = dimention; ParallaxMod.Logger.LogDebug((object)$"Synchronized scrap {((Object)component).name} to dimension {dimention} on client."); } else { ParallaxMod.Logger.LogWarning((object)("Scrap " + ((Object)component).name + " does not have ParallaxDimentionVisibilty component.")); } } else { ParallaxMod.Logger.LogWarning((object)"NetworkObject is not a GrabbableObject."); } } else { ParallaxMod.Logger.LogWarning((object)"Failed to resolve NetworkObjectReference."); } } [IteratorStateMachine(typeof(<SpawnRiftsRoutine>d__12))] private IEnumerator SpawnRiftsRoutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <SpawnRiftsRoutine>d__12(0) { <>4__this = this }; } [IteratorStateMachine(typeof(<DelayedTip>d__13))] private IEnumerator DelayedTip() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DelayedTip>d__13(0) { <>4__this = this }; } public void Update() { if (((NetworkBehaviour)this).IsServer) { RiftSpawnTimer += Time.deltaTime; if (RiftSpawnTimer >= RiftSpawnInterval) { RiftSpawnTimer = 0f; RiftSpawnInterval = Random.Range(10f, 20f); SpawnRift(Random.value > 0.5f); } } } public void SpawnRift(bool Indoor = false) { //IL_0010: 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_0087: 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_009e: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0126: Unknown result type (might be due to invalid IL or missing references) Scene sceneByName = SceneManager.GetSceneByName(RoundManager.Instance.currentLevel.sceneName); GameObject val = (Indoor ? GameObject.FindGameObjectsWithTag("AINode")[Random.Range(0, GameObject.FindGameObjectsWithTag("AINode").Length - 1)] : GameObject.FindGameObjectsWithTag("OutsideAINode")[Random.Range(0, GameObject.FindGameObjectsWithTag("OutsideAINode").Length - 1)]); if ((Object)(object)val == (Object)null) { ParallaxMod.Logger.LogWarning((object)"No valid rift spawn points found."); return; } GameObject val2 = Object.Instantiate<GameObject>(RiftPrefab, val.transform.position, val.transform.rotation); SceneManager.MoveGameObjectToScene(val2, sceneByName); val2.GetComponent<NetworkObject>().Spawn(false); val2.GetComponent<ParallaxRift>().SetDimentionServerRpc((ParallaxDimention)Random.Range(0, 3)); if (Rifts.Count > 50) { ((NetworkBehaviour)Rifts[0]).NetworkObject.Despawn(true); Rifts.RemoveAt(0); ParallaxMod.Logger.LogInfo((object)"Despawned oldest rift to maintain limit."); } ManualLogSource logger = ParallaxMod.Logger; Vector3 position = val2.transform.position; logger.LogDebug((object)("Spawned new rift at " + ((object)(Vector3)(ref position)).ToString())); } public override void OnDestroy() { ((NetworkBehaviour)this).OnDestroy(); ParallaxMod.Logger.LogInfo((object)"ParallaxMoonController is being destroyed. Cleaning up..."); Object.Destroy((Object)(object)((Component)ParallaxPortalFX.instance.PortalVFX).gameObject); ParallaxDimentionVisibilty[] array = Object.FindObjectsOfType<ParallaxDimentionVisibilty>(); foreach (ParallaxDimentionVisibilty parallaxDimentionVisibilty in array) { Object.Destroy((Object)(object)parallaxDimentionVisibilty); } ParallaxGrabableObject[] array2 = Object.FindObjectsOfType<ParallaxGrabableObject>(); foreach (ParallaxGrabableObject parallaxGrabableObject in array2) { Object.Destroy((Object)(object)parallaxGrabableObject); } ParallaxPlayer[] array3 = Object.FindObjectsOfType<ParallaxPlayer>(); foreach (ParallaxPlayer parallaxPlayer in array3) { Object.Destroy((Object)(object)parallaxPlayer); } ParallaxRift[] array4 = Object.FindObjectsOfType<ParallaxRift>(); foreach (ParallaxRift parallaxRift in array4) { if (((NetworkBehaviour)this).IsServer) { ((NetworkBehaviour)parallaxRift).NetworkObject.Despawn(true); } } } [ServerRpc(RequireOwnership = false)] public void ChangeDimentionServerRpc(ParallaxDimention newDimention, ulong playerId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_005f: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_00e9: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2902152007u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref newDimention, default(ForEnums)); BytePacker.WriteValueBitPacked(val2, playerId); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2902152007u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB playerByClientId = PlayerUtils.GetPlayerByClientId(playerId); if (playerByClientId != null) { ChangeDimentionClientRpc(newDimention, playerId); } } } [ClientRpc] public void ChangeDimentionClientRpc(ParallaxDimention newDimention, ulong playerId) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_005f: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: Unknown result type (might be due to invalid IL or missing references) //IL_008c: 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_00e9: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3459425519u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref newDimention, default(ForEnums)); BytePacker.WriteValueBitPacked(val2, playerId); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3459425519u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB playerByClientId = PlayerUtils.GetPlayerByClientId(playerId); if (playerByClientId != null) { ChangeDimention(newDimention, playerByClientId); } } } public void ChangeDimention(ParallaxDimention newDimention, PlayerControllerB player) { ParallaxMod.Logger.LogMessage((object)$"Player {player.playerUsername} changing dimention to {newDimention}"); if (((NetworkBehaviour)player).IsOwner) { ParallaxPortalFX.instance.TranitionToDimention(newDimention); CurrentDimention = newDimention; if (!ParallaxMod.GotParaTip && newDimention != 0) { HUDManager.Instance.DisplayTip("Dimensions", "Only items and fire exits are affect by dimensions. Players and Enemies are unaffected.", false, false, "LC_Tip1"); ParallaxMod.GotParaTip = true; } } PlayerDimentions[player] = newDimention; GrabbableObject[] itemSlots = player.ItemSlots; foreach (GrabbableObject val in itemSlots) { if (!((Object)(object)val == (Object)null) && (Object)(object)((Component)val).GetComponentInChildren<ParallaxGrabableObject>() != (Object)null) { ((Component)val).GetComponentInChildren<ParallaxGrabableObject>().Dimention = newDimention; } } ((Component)player).GetComponent<ParallaxPlayer>().UpdateDimention(newDimention); } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(492679783u, new RpcReceiveHandler(__rpc_handler_492679783), "SyncScrapDimentionClientRpc"); ((NetworkBehaviour)this).__registerRpc(2902152007u, new RpcReceiveHandler(__rpc_handler_2902152007), "ChangeDimentionServerRpc"); ((NetworkBehaviour)this).__registerRpc(3459425519u, new RpcReceiveHandler(__rpc_handler_3459425519), "ChangeDimentionClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_492679783(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: 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_004a: 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_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkObjectReference scrapRef = default(NetworkObjectReference); ((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref scrapRef, default(ForNetworkSerializable)); ParallaxDimention dimention = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref dimention, default(ForEnums)); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxMoonController)(object)target).SyncScrapDimentionClientRpc(scrapRef, dimention); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2902152007(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: 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_003e: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ParallaxDimention newDimention = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref newDimention, default(ForEnums)); ulong playerId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref playerId); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxMoonController)(object)target).ChangeDimentionServerRpc(newDimention, playerId); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3459425519(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: 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_003e: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ParallaxDimention newDimention = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref newDimention, default(ForEnums)); ulong playerId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref playerId); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxMoonController)(object)target).ChangeDimentionClientRpc(newDimention, playerId); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ParallaxMoonController"; } } public class ParallaxPlayer : MonoBehaviour { public PlayerControllerB playerController = null; public ParallaxDimention Dimention = ParallaxDimention.None; public Dictionary<Renderer, Dictionary<Material, Color>> OriginalMaterials = new Dictionary<Renderer, Dictionary<Material, Color>>(); public InputAction QuickSwitchAction = null; public InputAction QuickSwitchAction1 = null; public InputAction QuickSwitchAction2 = null; private void Start() { //IL_005f: Unknown result type (might be due to invalid IL or missing references) Renderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<Renderer>(); foreach (Renderer val in componentsInChildren) { Material[] materials = val.materials; foreach (Material val2 in materials) { if (!OriginalMaterials.ContainsKey(val)) { OriginalMaterials[val] = new Dictionary<Material, Color>(); } OriginalMaterials[val][val2] = val2.color; } } } private void LateUpdate() { } public void UpdateDimention(ParallaxDimention newDimention) { //IL_002a: 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) Dimention = newDimention; switch (newDimention) { case ParallaxDimention.None: ResetMaterials(); break; case ParallaxDimention.Red: SetMaterialColors(Color.red); break; case ParallaxDimention.Blue: SetMaterialColors(Color.blue); break; } } public void SetMaterialColors(Color color) { //IL_0028: Unknown result type (might be due to invalid IL or missing references) Renderer[] componentsInChildren = ((Component)this).GetComponentsInChildren<Renderer>(); foreach (Renderer val in componentsInChildren) { Material[] materials = val.materials; foreach (Material val2 in materials) { val2.color = color; } } } public void ResetMaterials() { //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: 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) foreach (KeyValuePair<Renderer, Dictionary<Material, Color>> originalMaterial in OriginalMaterials) { Renderer key = originalMaterial.Key; foreach (KeyValuePair<Material, Color> item in originalMaterial.Value) { Material key2 = item.Key; Color value = item.Value; key2.color = value; } } } public void OnDestroy() { ResetMaterials(); } } public class ParallaxPortalFX : MonoBehaviour { [CompilerGenerated] private sealed class <DelayedParenting>d__16 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ParallaxPortalFX <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DelayedParenting>d__16(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Expected O, but got Unknown //IL_0084: 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) switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForEndOfFrame(); <>1__state = 1; return true; case 1: <>1__state = -1; ((Component)<>4__this.PortalVFX).transform.SetParent(((Component)StartOfRound.Instance.localPlayerController.gameplayCamera).transform); ((Component)<>4__this.PortalVFX).transform.localPosition = new Vector3(0f, 0f, 1f); ((Component)<>4__this.PortalVFX).transform.localRotation = Quaternion.Euler(0f, 0f, 0f); <>4__this.PortalVFX.Reinit(); <>4__this.PortalVFX.Stop(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class <DoPortalEffect>d__20 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public ParallaxDimention dimention; public ParallaxPortalFX <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoPortalEffect>d__20(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0037: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>4__this.PortalVFX.Play(); <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; <>4__this.PortalVFX.Stop(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public static ParallaxPortalFX instance; public Volume RedDimentionFX = null; public Volume BlueDimentionFX = null; public Volume NoneDimentionFX = null; public Volume TransitionFX = null; public VolumeProfile RedTransitionProfile = null; public VolumeProfile BlueTransitionProfile = null; public VolumeProfile NoneTransitionProfile = null; public Animator TransitionAnim = null; public VisualEffect PortalVFX = null; public AudioSource PortalSFX = null; public ParallaxDimention CurrentDimention = ParallaxDimention.None; private bool AutoVolSetPaused = true; private bool firstTravel = true; private void Awake() { if (!Application.isEditor) { instance = this; } } private void Start() { if (!Application.isEditor) { ((MonoBehaviour)this).StartCoroutine(DelayedParenting()); RedDimentionFX.weight = 0f; BlueDimentionFX.weight = 0f; NoneDimentionFX.weight = 0f; } } [IteratorStateMachine(typeof(<DelayedParenting>d__16))] private IEnumerator DelayedParenting() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DelayedParenting>d__16(0) { <>4__this = this }; } private void LateUpdate() { if ((Object)(object)ParallaxMoonController.Instance != (Object)null) { CurrentDimention = ParallaxMoonController.Instance.CurrentDimention; } if (!AutoVolSetPaused) { switch (CurrentDimention) { case ParallaxDimention.None: RedDimentionFX.weight = 0f; BlueDimentionFX.weight = 0f; NoneDimentionFX.weight = 1f; break; case ParallaxDimention.Red: RedDimentionFX.weight = 1f; BlueDimentionFX.weight = 0f; NoneDimentionFX.weight = 0f; break; case ParallaxDimention.Blue: RedDimentionFX.weight = 0f; BlueDimentionFX.weight = 1f; NoneDimentionFX.weight = 0f; break; } } } public void TranitionToDimention(ParallaxDimention dimention) { PortalSFX.Play(); AutoVolSetPaused = true; RedDimentionFX.weight = 0f; BlueDimentionFX.weight = 0f; NoneDimentionFX.weight = 0f; switch (dimention) { case ParallaxDimention.None: TransitionFX.profile = NoneTransitionProfile; if (firstTravel) { firstTravel = false; TransitionAnim.Play("TransitionToGrayFirst"); } else { TransitionAnim.Play("TransitionToGray"); } break; case ParallaxDimention.Red: TransitionFX.profile = RedTransitionProfile; TransitionAnim.Play("TransitionToRed"); break; case ParallaxDimention.Blue: TransitionFX.profile = BlueTransitionProfile; TransitionAnim.Play("TransitionToBlue"); break; } ((MonoBehaviour)this).Invoke("EndTransition", 0.5f); ((MonoBehaviour)this).StartCoroutine(DoPortalEffect(dimention)); } public void EndTransition() { AutoVolSetPaused = false; } [IteratorStateMachine(typeof(<DoPortalEffect>d__20))] private IEnumerator DoPortalEffect(ParallaxDimention dimention) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoPortalEffect>d__20(0) { <>4__this = this, dimention = dimention }; } [ContextMenu("EditorDebugSwitch")] public void EditorDebugSwitch() { CurrentDimention = (ParallaxDimention)((int)(CurrentDimention + 1) % 3); TranitionToDimention((ParallaxDimention)((int)(CurrentDimention + 1) % 3)); } } public class ParallaxRift : NetworkBehaviour { public bool Ready = true; public ParallaxDimention Dimention = ParallaxDimention.Red; public Renderer Rend = null; public AudioSource SFX = null; public Animator Anim = null; public Color NonePortalColor = new Color(0.5f, 0.5f, 0.5f, 0.25f); public Color RedPortalColor = new Color(1f, 0f, 0f, 0.25f); public Color BluePortalColor = new Color(0f, 0f, 1f, 0.25f); private void Awake() { ParallaxMoonController.Instance.Rifts.Add(this); } private void Update() { //IL_0018: Unknown result type (might be due to invalid IL or missing references) //IL_001d: 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_003c: 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_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_0061: 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_008f: Unknown result type (might be due to invalid IL or missing references) //IL_0095: 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_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_00e9: 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_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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_0111: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) Anim.SetBool("Ready", Ready); Color val = Color.white; switch (Dimention) { case ParallaxDimention.Red: val = RedPortalColor; break; case ParallaxDimention.Blue: val = BluePortalColor; break; case ParallaxDimention.None: val = NonePortalColor; break; } Rend.material.color = val; Rend.material.SetColor("_TransmittanceColor", val); Rend.material.SetColor("_EmissiveColor", val * 2f); if ((Object)(object)StartOfRound.Instance != (Object)null && (Object)(object)StartOfRound.Instance.localPlayerController != (Object)null) { Vector3 val2 = ((Component)StartOfRound.Instance.localPlayerController).transform.position - ((Component)this).transform.position; val2.y = 0f; Quaternion val3 = Quaternion.LookRotation(val2); ((Component)this).transform.rotation = Quaternion.Slerp(((Component)this).transform.rotation, val3, Time.deltaTime * 25f); } } [ServerRpc] public void SetDimentionServerRpc(ParallaxDimention NewDimention) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f7: Invalid comparison between Unknown and I4 //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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) //IL_00b3: 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_00c9: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1513333524u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref NewDimention, default(ForEnums)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1513333524u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; SetDimentionClientRpc(NewDimention); } } [ClientRpc] public void SetDimentionClientRpc(ParallaxDimention NewDimention) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Invalid comparison between Unknown and I4 //IL_005f: 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_007d: Unknown result type (might be due to invalid IL or missing references) //IL_0083: 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_00dc: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2323583756u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref NewDimention, default(ForEnums)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2323583756u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; Dimention = NewDimention; } } } public void OnTriggerEnter(Collider other) { if (!Ready || !((Component)other).CompareTag("Player")) { return; } PlayerControllerB componentInChildren = ((Component)other).GetComponentInChildren<PlayerControllerB>(); if (!((Object)(object)componentInChildren == (Object)null) && ((NetworkBehaviour)componentInChildren).IsOwner) { ParallaxDimention targetDimention = ParallaxDimention.None; if (ParallaxMoonController.Instance.CurrentDimention != Dimention) { targetDimention = Dimention; } UsePortalServerRpc(((NetworkBehaviour)componentInChildren).OwnerClientId, targetDimention); } } [ServerRpc(RequireOwnership = false)] public void UsePortalServerRpc(ulong playerId, ParallaxDimention TargetDimention) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_005f: 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_0071: 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_0090: 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_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0181: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(983522424u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerId); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref TargetDimention, default(ForEnums)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 983522424u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ParallaxMod.Logger.LogInfo((object)$"Rift (server): Player {playerId} is using portal to {TargetDimention}"); if (Object.op_Implicit((Object)(object)PlayerUtils.GetPlayerByClientId(playerId))) { UsePortalClientRpc(playerId, TargetDimention); GameObject val3 = ((Random.value > 0.5f) ? GameObject.FindGameObjectsWithTag("AINode")[Random.Range(0, GameObject.FindGameObjectsWithTag("AINode").Length - 1)] : GameObject.FindGameObjectsWithTag("OutsideAINode")[Random.Range(0, GameObject.FindGameObjectsWithTag("OutsideAINode").Length - 1)]); MoveRiftClientRpc(val3.transform.position); } else { ParallaxMod.Logger.LogError((object)$"Rift: Player {playerId} not found!"); } } } [ClientRpc] public void UsePortalClientRpc(ulong playerId, ParallaxDimention TargetDimention) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Invalid comparison between Unknown and I4 //IL_005f: 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_0071: 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_0090: 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_00e9: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1172661352u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, playerId); ((FastBufferWriter)(ref val2)).WriteValueSafe<ParallaxDimention>(ref TargetDimention, default(ForEnums)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1172661352u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB playerByClientId = PlayerUtils.GetPlayerByClientId(playerId); if (!((Object)(object)playerByClientId == (Object)null)) { ParallaxMod.Logger.LogInfo((object)$"Rift: Player {playerByClientId.playerUsername} is using portal to {TargetDimention}"); Ready = false; SFX.Play(); Anim.SetTrigger("Use"); ParallaxMoonController.Instance.ChangeDimention(TargetDimention, playerByClientId); ((MonoBehaviour)this).Invoke("ResetRift", 7f); } } } [ClientRpc] public void MoveRiftClientRpc(Vector3 NewPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Invalid comparison between Unknown and I4 //IL_005f: 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_0089: 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_00da: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4239616031u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref NewPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4239616031u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ((Component)this).transform.position = NewPosition; } } } public void ResetRift() { Ready = true; } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1513333524u, new RpcReceiveHandler(__rpc_handler_1513333524), "SetDimentionServerRpc"); ((NetworkBehaviour)this).__registerRpc(2323583756u, new RpcReceiveHandler(__rpc_handler_2323583756), "SetDimentionClientRpc"); ((NetworkBehaviour)this).__registerRpc(983522424u, new RpcReceiveHandler(__rpc_handler_983522424), "UsePortalServerRpc"); ((NetworkBehaviour)this).__registerRpc(1172661352u, new RpcReceiveHandler(__rpc_handler_1172661352), "UsePortalClientRpc"); ((NetworkBehaviour)this).__registerRpc(4239616031u, new RpcReceiveHandler(__rpc_handler_4239616031), "MoveRiftClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_1513333524(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //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_0029: 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_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00ab: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { ParallaxDimention dimentionServerRpc = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref dimentionServerRpc, default(ForEnums)); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxRift)(object)target).SetDimentionServerRpc(dimentionServerRpc); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2323583756(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_002f: 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_0044: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ParallaxDimention dimentionClientRpc = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref dimentionClientRpc, default(ForEnums)); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxRift)(object)target).SetDimentionClientRpc(dimentionClientRpc); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_983522424(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: 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_0042: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ulong playerId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref playerId); ParallaxDimention targetDimention = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref targetDimention, default(ForEnums)); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxRift)(object)target).UsePortalServerRpc(playerId, targetDimention); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1172661352(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: 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_0042: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { ulong playerId = default(ulong); ByteUnpacker.ReadValueBitPacked(reader, ref playerId); ParallaxDimention targetDimention = default(ParallaxDimention); ((FastBufferReader)(ref reader)).ReadValueSafe<ParallaxDimention>(ref targetDimention, default(ForEnums)); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxRift)(object)target).UsePortalClientRpc(playerId, targetDimention); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4239616031(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0036: 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_0050: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 newPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref newPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((ParallaxRift)(object)target).MoveRiftClientRpc(newPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "ParallaxRift"; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "NoteBoxz.ParallaxMod"; public const string PLUGIN_NAME = "ParallaxMod"; public const string PLUGIN_VERSION = "0.1.6"; } } namespace ParallaxMod.MoonPatches { [HarmonyPatch(typeof(GrabbableObject))] public class GrabbableObjectPatch { [HarmonyPatch("Start")] [HarmonyPostfix] private static void StartPostfix(GrabbableObject __instance) { if (!((Object)(object)ParallaxMoonController.Instance == (Object)null) && !((Object)(object)((Component)__instance).GetComponentInChildren<ParallaxGrabableObject>() != (Object)null)) { ParallaxGrabableObject parallaxGrabableObject = ((Component)__instance).gameObject.AddComponent<ParallaxGrabableObject>(); ParallaxDimentionVisibilty dimentionVisibilty = ((Component)__instance).gameObject.AddComponent<ParallaxDimentionVisibilty>(); parallaxGrabableObject.DimentionVisibilty = dimentionVisibilty; parallaxGrabableObject.ItemScript = __instance; ParallaxMod.Logger.LogInfo((object)("Added ParallaxDimentionVisibilty to " + ((Object)((Component)__instance).gameObject).name)); } } } [HarmonyPatch(typeof(PlayerControllerB))] public class PlayerControllerBPatch { } [HarmonyPatch(typeof(RoundManager))] public class RoundManagerPatch { [HarmonyPatch("SetExitIDs")] [HarmonyPostfix] private static void SetExitIDsPostfix(RoundManager __instance) { if (!((Object)(object)ParallaxMoonController.Instance == (Object)null)) { ParallaxEntranceTeleport[] array = Object.FindObjectsOfType<ParallaxEntranceTeleport>(); foreach (ParallaxEntranceTeleport parallaxEntranceTeleport in array) { parallaxEntranceTeleport.FindIndoorTeleport(); } } } } } namespace ParallaxMod.Patches { [HarmonyPatch(typeof(GameNetworkManager))] public class GameNetworkManagerPatch { public static bool HasRegistred; [HarmonyPatch("Start")] [HarmonyPostfix] private static void StartPostfix(GameNetworkManager __instance) { if (HasRegistred) { ParallaxMod.Logger.LogWarning((object)"ParallaxMod: Already registered prefabs to Network."); return; } GameObject[] array = ParallaxMod.assetBundle.LoadAllAssets<GameObject>(); foreach (GameObject val in array) { if (!((Object)(object)val.GetComponent<NetworkObject>() == (Object)null) && ((Behaviour)val.GetComponent<NetworkObject>()).enabled) { ((Component)__instance).GetComponent<NetworkManager>().AddNetworkPrefab(val); ParallaxMod.Logger.LogInfo((object)("Registered Prefab to Network: " + ((Object)val).name)); } } HasRegistred = true; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace NoteBoxz.ParallaxMod.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }