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 Strange Doors v1.1.0
Doors.dll
Decompiled 2 months agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; using Photon.Pun; using UnityEngine; using UnityEngine.Networking; [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: AssemblyCompany("Omniscye")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("Doors")] [assembly: AssemblyTitle("Doors")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] [AttributeUsage(AttributeTargets.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 StrangeDoors { [BepInPlugin("Omniscye.StrangeDoors", "StrangeDoors", "1.6.0")] public class StrangeDoorsPlugin : BaseUnityPlugin { [HarmonyPatch(typeof(LevelGenerator), "GenerateDone")] private static class LevelGenDonePatch { [HarmonyPostfix] private static void Postfix() { if (!((Object)(object)Instance == (Object)null)) { HasTriggeredThisLevel = false; Instance.StopCoroutineSafe("MimicArmRoutine"); ((MonoBehaviour)Instance).StartCoroutine(Instance.MimicArmRoutine()); } } } [CompilerGenerated] private sealed class <MimicArmRoutine>d__19 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public StrangeDoorsPlugin <>4__this; private float <elapsed>5__1; private PhysGrabHinge[] <allHinges>5__2; private List<PhysGrabHinge> <candidates>5__3; private PhysGrabHinge[] <>s__4; private int <>s__5; private PhysGrabHinge <h>5__6; private PhysGrabObject <pgo>5__7; private int <seed>5__8; private List<int> <ids>5__9; private float <chance>5__10; private float <roll>5__11; private int <i>5__12; private PhotonView <pv>5__13; private int <id>5__14; private PhysGrabHinge <target>5__15; private uint <best>5__16; private int <i>5__17; private uint <h>5__18; private PhotonView <pv>5__19; private string <idStr>5__20; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <MimicArmRoutine>d__19(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <allHinges>5__2 = null; <candidates>5__3 = null; <>s__4 = null; <h>5__6 = null; <pgo>5__7 = null; <ids>5__9 = null; <pv>5__13 = null; <target>5__15 = null; <pv>5__19 = null; <idStr>5__20 = null; <>1__state = -2; } private bool MoveNext() { //IL_044a: Unknown result type (might be due to invalid IL or missing references) //IL_0454: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <elapsed>5__1 = 0f; break; case 1: <>1__state = -1; <elapsed>5__1 += 0.25f; <allHinges>5__2 = null; <candidates>5__3 = null; break; } if (<elapsed>5__1 < 8f) { <allHinges>5__2 = Object.FindObjectsOfType<PhysGrabHinge>(); <candidates>5__3 = new List<PhysGrabHinge>(); <>s__4 = <allHinges>5__2; for (<>s__5 = 0; <>s__5 < <>s__4.Length; <>s__5++) { <h>5__6 = <>s__4[<>s__5]; if (!((Object)(object)<h>5__6 == (Object)null) && ((Component)<h>5__6).gameObject.activeInHierarchy && ((Behaviour)<h>5__6).isActiveAndEnabled) { <pgo>5__7 = ((Component)<h>5__6).GetComponent<PhysGrabObject>(); if (!((Object)(object)<pgo>5__7 == (Object)null) && (!((Object)(object)<pgo>5__7.rb == (Object)null) || !((Object)(object)((Component)<h>5__6).GetComponent<Rigidbody>() == (Object)null))) { <candidates>5__3.Add(<h>5__6); <pgo>5__7 = null; <h>5__6 = null; } } } <>s__4 = null; if (<candidates>5__3.Count > 0) { <seed>5__8 = 1469598107; <ids>5__9 = new List<int>(<candidates>5__3.Count); <i>5__12 = 0; while (<i>5__12 < <candidates>5__3.Count) { <pv>5__13 = ((Component)<candidates>5__3[<i>5__12]).GetComponent<PhotonView>(); <id>5__14 = (((Object)(object)<pv>5__13 != (Object)null) ? <pv>5__13.ViewID : ((Object)<candidates>5__3[<i>5__12]).GetInstanceID()); <ids>5__9.Add(<id>5__14); <seed>5__8 = (<seed>5__8 * 16777619) ^ <id>5__14; <pv>5__13 = null; <i>5__12++; } <chance>5__10 = Mathf.Clamp01(DoorChance.Value); <roll>5__11 = ToUnitFloat(<seed>5__8); if (!(<roll>5__11 <= <chance>5__10)) { Logger.LogInfo((object)$"[StrangeDoor] Roll {<roll>5__11:0.00} > {<chance>5__10:0.00}. None selected."); return false; } <target>5__15 = null; <best>5__16 = uint.MaxValue; <i>5__17 = 0; while (<i>5__17 < <candidates>5__3.Count) { <h>5__18 = Hash32((uint)(<ids>5__9[<i>5__17] ^ <seed>5__8)); if (<h>5__18 < <best>5__16) { <best>5__16 = <h>5__18; <target>5__15 = <candidates>5__3[<i>5__17]; } <i>5__17++; } if ((Object)(object)<target>5__15 != (Object)null) { if ((Object)(object)((Component)<target>5__15).GetComponent<MimicController>() == (Object)null) { ((Component)<target>5__15).gameObject.AddComponent<MimicController>(); <pv>5__19 = ((Component)<target>5__15).GetComponent<PhotonView>(); <idStr>5__20 = (((Object)(object)<pv>5__19 != (Object)null) ? <pv>5__19.ViewID.ToString() : "noPV"); Logger.LogInfo((object)("[StrangeDoor] Armed: " + ((Object)((Component)<target>5__15).gameObject).name + " (ViewID=" + <idStr>5__20 + ")")); <pv>5__19 = null; <idStr>5__20 = null; } return false; } <target>5__15 = null; <ids>5__9 = null; } <>2__current = (object)new WaitForSeconds(0.25f); <>1__state = 1; return true; } Logger.LogInfo((object)"[StrangeDoor] None found."); 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 ConfigEntry<float> DoorChance; public static ConfigEntry<float> WaveDuration; public static ConfigEntry<float> FlipDuration; public static bool HasTriggeredThisLevel; internal static StrangeDoorsPlugin Instance { get; private set; } internal static ManualLogSource Logger => Instance._logger; private ManualLogSource _logger => ((BaseUnityPlugin)this).Logger; internal Harmony? Harmony { get; set; } private void Awake() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Expected O, but got Unknown //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bb: Expected O, but got Unknown //IL_00c0: Expected O, but got Unknown Instance = this; ((Object)((Component)this).gameObject).hideFlags = (HideFlags)61; DoorChance = ((BaseUnityPlugin)this).Config.Bind<float>("General", "DoorChance", 0.05f, new ConfigDescription("Chance for a single door to trigger.", (AcceptableValueBase)(object)new AcceptableValueRange<float>(0f, 1f), Array.Empty<object>())); WaveDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Effects", "WaveDuration", 3f, "Wave duration."); FlipDuration = ((BaseUnityPlugin)this).Config.Bind<float>("Effects", "FlipDuration", 40f, "Flip duration."); if (Harmony == null) { Harmony val = new Harmony(((BaseUnityPlugin)this).Info.Metadata.GUID); Harmony val2 = val; Harmony = val; } Harmony.PatchAll(); Logger.LogInfo((object)$"{((BaseUnityPlugin)this).Info.Metadata.GUID} v{((BaseUnityPlugin)this).Info.Metadata.Version} loaded."); } private void StopCoroutineSafe(string routineName) { try { ((MonoBehaviour)this).StopCoroutine(routineName); } catch { } } [IteratorStateMachine(typeof(<MimicArmRoutine>d__19))] private IEnumerator MimicArmRoutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <MimicArmRoutine>d__19(0) { <>4__this = this }; } private static float ToUnitFloat(int x) { return (float)((uint)x & 0x7FFFFFFFu) / 2.1474836E+09f; } private static uint Hash32(uint x) { x ^= x >> 17; x *= 3982152891u; x ^= x >> 11; x *= 2890668881u; x ^= x >> 15; x *= 830770091; x ^= x >> 14; return x; } } public class MimicEffectPlayer : MonoBehaviour { private struct AshParticle { public Vector2 position; public Vector2 velocity; public float size; public Color color; } [CompilerGenerated] private sealed class <FlipTimerRoutine>d__17 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public MimicEffectPlayer <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <FlipTimerRoutine>d__17(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_0036: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(<>4__this.flipDuration); <>1__state = 1; return true; case 1: <>1__state = -1; <>4__this.RevertEffect(); 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 <LoadAndPlayMusic>d__27 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public MimicEffectPlayer <>4__this; private string <folderPath>5__1; private string <songPath>5__2; private string <url>5__3; private UnityWebRequest <www>5__4; private AudioClip <clip>5__5; private GameObject <musicObj>5__6; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <LoadAndPlayMusic>d__27(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { int num = <>1__state; if (num == -3 || num == 1) { try { } finally { <>m__Finally1(); } } <folderPath>5__1 = null; <songPath>5__2 = null; <url>5__3 = null; <www>5__4 = null; <clip>5__5 = null; <musicObj>5__6 = null; <>1__state = -2; } private bool MoveNext() { //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Invalid comparison between Unknown and I4 //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Expected O, but got Unknown try { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <folderPath>5__1 = Path.GetDirectoryName(((BaseUnityPlugin)StrangeDoorsPlugin.Instance).Info.Location); <songPath>5__2 = Path.Combine(<folderPath>5__1, "upsidedown.ogg"); if (!File.Exists(<songPath>5__2)) { StrangeDoorsPlugin.Logger.LogWarning((object)("Music not found: " + <songPath>5__2)); return false; } <url>5__3 = "file://" + <songPath>5__2; <www>5__4 = UnityWebRequestMultimedia.GetAudioClip(<url>5__3, (AudioType)14); <>1__state = -3; <>2__current = <www>5__4.SendWebRequest(); <>1__state = 1; return true; case 1: <>1__state = -3; if ((int)<www>5__4.result == 1) { <clip>5__5 = DownloadHandlerAudioClip.GetContent(<www>5__4); if ((Object)(object)<clip>5__5 != (Object)null) { if ((Object)(object)<>4__this.musicSource == (Object)null) { <musicObj>5__6 = new GameObject("StrangeDoorMusic"); <musicObj>5__6.transform.SetParent(((Component)<>4__this).transform); <>4__this.musicSource = <musicObj>5__6.AddComponent<AudioSource>(); <musicObj>5__6 = null; } <>4__this.musicSource.clip = <clip>5__5; <>4__this.musicSource.volume = 1f; <>4__this.musicSource.loop = false; <>4__this.musicSource.Play(); StrangeDoorsPlugin.Logger.LogInfo((object)"Music Playing."); } <clip>5__5 = null; } else { StrangeDoorsPlugin.Logger.LogError((object)("Failed to load music: " + <www>5__4.error)); } <>m__Finally1(); <www>5__4 = null; return false; } } catch { //try-fault ((IDisposable)this).Dispose(); throw; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } private void <>m__Finally1() { <>1__state = -1; if (<www>5__4 != null) { ((IDisposable)<www>5__4).Dispose(); } } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } private Camera cam; private AudioSource musicSource; private bool isWaving; private bool isFlipped; private float waveTimer; private float waveDuration; private float flipDuration; private float originalFOV; private Texture2D redTexture; private Texture2D particleTexture; private List<AshParticle> particles = new List<AshParticle>(); private int particleCount = 120; private void Start() { //IL_0031: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0057: 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: Expected O, but got Unknown //IL_0083: Unknown result type (might be due to invalid IL or missing references) cam = ((Component)this).GetComponent<Camera>(); if ((Object)(object)cam != (Object)null) { originalFOV = cam.fieldOfView; } redTexture = new Texture2D(1, 1); redTexture.SetPixel(0, 0, new Color(1f, 0f, 0f, 0.35f)); redTexture.Apply(); particleTexture = new Texture2D(1, 1); particleTexture.SetPixel(0, 0, Color.white); particleTexture.Apply(); } public void TriggerSequence(float w, float f) { if (!isWaving && !isFlipped) { waveDuration = w; flipDuration = f; waveTimer = 0f; isWaving = true; StrangeDoorsPlugin.Logger.LogInfo((object)"[StrangeDoorEffect] Start"); } } private void Update() { //IL_00a6: 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_00af: 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_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d9: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)cam == (Object)null) { return; } if (isWaving) { waveTimer += Time.deltaTime; float num = waveTimer / waveDuration; float num2 = Mathf.Lerp(1f, 10f, num); float num3 = Mathf.Lerp(0f, 20f, num); float num4 = Mathf.Sin(Time.time * 10f) * num2; float num5 = Mathf.Cos(Time.time * 5f) * num3; Transform transform = ((Component)cam).transform; Quaternion localRotation = ((Component)cam).transform.localRotation; float x = ((Quaternion)(ref localRotation)).eulerAngles.x; localRotation = ((Component)cam).transform.localRotation; transform.localRotation = Quaternion.Euler(x, ((Quaternion)(ref localRotation)).eulerAngles.y, num4); cam.fieldOfView = originalFOV + num5; if (waveTimer >= waveDuration) { isWaving = false; ApplyFlip(); } } if (isFlipped) { UpdateParticles(); } } private void ApplyFlip() { //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_0036: 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_0050: 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_0062: Unknown result type (might be due to invalid IL or missing references) isFlipped = true; StrangeDoorsPlugin.Logger.LogInfo((object)"[StrangeDoorEffect] Flip"); Transform transform = ((Component)cam).transform; Quaternion localRotation = ((Component)cam).transform.localRotation; float x = ((Quaternion)(ref localRotation)).eulerAngles.x; localRotation = ((Component)cam).transform.localRotation; transform.localRotation = Quaternion.Euler(x, ((Quaternion)(ref localRotation)).eulerAngles.y, 0f); cam.fieldOfView = originalFOV; SpawnParticles(); ((MonoBehaviour)this).StartCoroutine(FlipTimerRoutine()); ((MonoBehaviour)this).StartCoroutine(LoadAndPlayMusic()); } [IteratorStateMachine(typeof(<FlipTimerRoutine>d__17))] private IEnumerator FlipTimerRoutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <FlipTimerRoutine>d__17(0) { <>4__this = this }; } private void RevertEffect() { //IL_0057: 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_005f: 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) //IL_0079: 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_008b: Unknown result type (might be due to invalid IL or missing references) StrangeDoorsPlugin.Logger.LogInfo((object)"[StrangeDoorEffect] Revert"); isFlipped = false; particles.Clear(); if ((Object)(object)cam != (Object)null) { cam.ResetProjectionMatrix(); Transform transform = ((Component)cam).transform; Quaternion localRotation = ((Component)cam).transform.localRotation; float x = ((Quaternion)(ref localRotation)).eulerAngles.x; localRotation = ((Component)cam).transform.localRotation; transform.localRotation = Quaternion.Euler(x, ((Quaternion)(ref localRotation)).eulerAngles.y, 0f); } GL.invertCulling = false; if ((Object)(object)musicSource != (Object)null) { musicSource.Stop(); } Object.Destroy((Object)(object)this); } private void OnPreCull() { //IL_002f: 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_0035: 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_004f: 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_005b: Unknown result type (might be due to invalid IL or missing references) if (isFlipped && (Object)(object)cam != (Object)null) { cam.ResetProjectionMatrix(); Matrix4x4 projectionMatrix = cam.projectionMatrix; projectionMatrix *= Matrix4x4.Scale(new Vector3(1f, -1f, 1f)); cam.projectionMatrix = projectionMatrix; } } private void OnPreRender() { if (isFlipped) { GL.invertCulling = true; } } private void OnPostRender() { if (isFlipped) { GL.invertCulling = false; } } private void OnGUI() { //IL_0017: 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) if (isFlipped) { GUI.depth = -1000; GUI.color = Color.white; GUI.DrawTexture(new Rect(0f, 0f, (float)Screen.width, (float)Screen.height), (Texture)(object)redTexture); DrawParticles(); } } private void SpawnParticles() { particles.Clear(); for (int i = 0; i < particleCount; i++) { particles.Add(CreateParticle()); } } private AshParticle CreateParticle() { //IL_0028: 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_002d: 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_0047: 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_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) Color color = (Color)((Random.value > 0.4f) ? Color.black : new Color(0.8f, 0f, 0f, 0.9f)); AshParticle result = default(AshParticle); result.position = new Vector2(Random.value, Random.value); result.velocity = new Vector2(Random.Range(-0.05f, 0.05f), Random.Range(-0.05f, 0.05f)); result.size = Random.Range(2f, 6f); result.color = color; return result; } private void UpdateParticles() { //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) //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_003e: 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_0094: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: 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_011d: 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 < particles.Count; i++) { AshParticle value = particles[i]; ref Vector2 position = ref value.position; position += value.velocity * Time.deltaTime; if (value.position.x < 0f) { value.position.x += 1f; } if (value.position.x > 1f) { value.position.x -= 1f; } if (value.position.y < 0f) { value.position.y += 1f; } if (value.position.y > 1f) { value.position.y -= 1f; } ref Vector2 position2 = ref value.position; position2 += new Vector2(Random.Range(-0.001f, 0.001f), Random.Range(-0.001f, 0.001f)); particles[i] = value; } } private void DrawParticles() { //IL_002f: 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_004d: 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_0096: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)particleTexture == (Object)null) { return; } foreach (AshParticle particle in particles) { GUI.color = particle.color; GUI.DrawTexture(new Rect(particle.position.x * (float)Screen.width, particle.position.y * (float)Screen.height, particle.size, particle.size), (Texture)(object)particleTexture); } GUI.color = Color.white; } [IteratorStateMachine(typeof(<LoadAndPlayMusic>d__27))] private IEnumerator LoadAndPlayMusic() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <LoadAndPlayMusic>d__27(0) { <>4__this = this }; } } public class MimicController : MonoBehaviourPun { [CompilerGenerated] private sealed class <WaitForReady>d__4 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public MimicController <>4__this; private float <t>5__1; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <WaitForReady>d__4(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { switch (<>1__state) { default: return false; case 0: <>1__state = -1; <t>5__1 = 0f; break; case 1: <>1__state = -1; <t>5__1 += Time.deltaTime; break; } if (<t>5__1 < 6f) { if ((Object)(object)<>4__this.physObject == (Object)null) { <>4__this.physObject = ((Component)<>4__this).GetComponent<PhysGrabObject>(); } if ((Object)(object)<>4__this.physObject != (Object)null && ((Object)(object)<>4__this.physObject.rb != (Object)null || (Object)(object)((Component)<>4__this).GetComponent<Rigidbody>() != (Object)null)) { <>4__this.ready = true; StrangeDoorsPlugin.Logger.LogInfo((object)("[StrangeDoor] Controller ready: " + ((Object)((Component)<>4__this).gameObject).name)); return false; } <>2__current = null; <>1__state = 1; return true; } Object.Destroy((Object)(object)<>4__this); 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(); } } private PhysGrabHinge hinge; private PhysGrabObject physObject; private bool ready; private void Start() { hinge = ((Component)this).GetComponent<PhysGrabHinge>(); physObject = ((Component)this).GetComponent<PhysGrabObject>(); ((MonoBehaviour)this).StartCoroutine(WaitForReady()); } [IteratorStateMachine(typeof(<WaitForReady>d__4))] private IEnumerator WaitForReady() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <WaitForReady>d__4(0) { <>4__this = this }; } private void Update() { if (!ready) { return; } if (Input.GetKeyDown((KeyCode)282)) { StrangeDoorsPlugin.Logger.LogInfo((object)"[StrangeDoor] Manual Trigger"); TryTrigger(force: true); } else { if (StrangeDoorsPlugin.HasTriggeredThisLevel || (Object)(object)physObject == (Object)null || (!physObject.grabbed && !physObject.grabbedLocal && (physObject.playerGrabbing == null || physObject.playerGrabbing.Count <= 0))) { return; } if (physObject.playerGrabbing != null && physObject.playerGrabbing.Count > 0) { foreach (PhysGrabber item in physObject.playerGrabbing) { if ((Object)(object)item.playerAvatar != (Object)null && item.playerAvatar.isLocal) { TryTrigger(); break; } } return; } if (physObject.grabbedLocal) { TryTrigger(); } } } private void TryTrigger(bool force = false) { if (StrangeDoorsPlugin.HasTriggeredThisLevel && !force) { return; } StrangeDoorsPlugin.HasTriggeredThisLevel = true; StrangeDoorsPlugin.Logger.LogInfo((object)"[StrangeDoor] Triggered"); if ((Object)(object)Camera.main != (Object)null) { MimicEffectPlayer mimicEffectPlayer = ((Component)Camera.main).GetComponent<MimicEffectPlayer>(); if ((Object)(object)mimicEffectPlayer == (Object)null) { mimicEffectPlayer = ((Component)Camera.main).gameObject.AddComponent<MimicEffectPlayer>(); } mimicEffectPlayer.TriggerSequence(StrangeDoorsPlugin.WaveDuration.Value, StrangeDoorsPlugin.FlipDuration.Value); } else { StrangeDoorsPlugin.Logger.LogWarning((object)"[StrangeDoor] No Main Camera found."); } } } }