using System; using System.Collections; using System.Diagnostics; using System.IO; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using BlackMagicAPI.Managers; using BlackMagicAPI.Modules.Spells; using BlackMagicAPI.Network; using UnityEngine; using UnityEngine.Networking; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("ImGonnaCome")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("ImGonnaCome")] [assembly: AssemblyTitle("ImGonnaCome")] [assembly: AssemblyVersion("1.0.0.0")] namespace ImGonnaCome; public class ImGonnaComeData : SpellData { public override string Name => "Im Gonna Come"; public override float Cooldown => 20f; public override Color GlowColor => Color.white; public override string[] SubNames => new string[5] { "I'm Gonna Come", "Im Gonna Come", "Gonna Come", "White Missile", "Come" }; public override bool CanSpawnInTeamChest => false; public override bool DebugForceSpawn => false; } public class ImGonnaComeLogic : SpellLogic { private const int SPELL_SIGNATURE = 1229407034; private const float EYE_HEIGHT = 1.6f; private const int MISSILE_COUNT = 5; private static GameObject _fireballGO; private static GameObject _missileGO; private static Material _particleMat; private Vector3 _customFireballImpact; public override bool CastSpell(PlayerMovement caster, PageController page, Vector3 spawnPos, Vector3 viewDir, int level) { return true; } public override void WriteData(DataWriter writer, PageController page, PlayerMovement caster, Vector3 spawnPos, Vector3 viewDir, int level) { //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) writer.Write(1229407034); writer.Write(spawnPos.x); writer.Write(spawnPos.y); writer.Write(spawnPos.z); writer.Write(viewDir.x); writer.Write(viewDir.y); writer.Write(viewDir.z); } public override void SyncData(object[] values) { //IL_0061: 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) if (((SpellLogic)this).IsPrefab) { return; } try { if (values.Length >= 7 && Convert.ToInt32(values[0]) == 1229407034) { Vector3 castOrigin = default(Vector3); ((Vector3)(ref castOrigin))..ctor(Convert.ToSingle(values[1]), Convert.ToSingle(values[2]), Convert.ToSingle(values[3])); Vector3 castDir = default(Vector3); ((Vector3)(ref castDir))..ctor(Convert.ToSingle(values[4]), Convert.ToSingle(values[5]), Convert.ToSingle(values[6])); ((MonoBehaviour)this).StartCoroutine(CastSequence(castOrigin, castDir)); } } catch (Exception ex) { Debug.LogError((object)("[ImGonnaCome] SyncData: " + ex.Message)); } } public override void OnPrefabCreatedAutomatically(GameObject prefab) { try { TryFindPrefabs(); if ((Object)(object)_particleMat == (Object)null) { ParticleSystemRenderer[] array = Object.FindObjectsOfType(); foreach (ParticleSystemRenderer val in array) { if ((Object)(object)((Renderer)val).sharedMaterial != (Object)null) { _particleMat = ((Renderer)val).sharedMaterial; break; } } } Debug.Log((object)("[ImGonnaCome] fireball=" + (((Object)(object)_fireballGO != (Object)null) ? ((Object)_fireballGO).name : "null") + " missile=" + (((Object)(object)_missileGO != (Object)null) ? ((Object)_missileGO).name : "null"))); } catch (Exception ex) { Debug.LogWarning((object)("[ImGonnaCome] OnPrefab: " + ex.Message)); } } private static void TryFindPrefabs() { PageController[] array = Resources.FindObjectsOfTypeAll(); for (int i = 0; i < array.Length; i++) { GameObject spellprefab = array[i].spellprefab; if (!((Object)(object)spellprefab == (Object)null)) { if ((Object)(object)_fireballGO == (Object)null && (Object)(object)spellprefab.GetComponent("FireballController") != (Object)null) { _fireballGO = spellprefab; } if ((Object)(object)_missileGO == (Object)null && (Object)(object)spellprefab.GetComponent("MagicMissleController") != (Object)null) { _missileGO = spellprefab; } if ((Object)(object)_fireballGO != (Object)null && (Object)(object)_missileGO != (Object)null) { return; } } } Object[] array2; if ((Object)(object)_fireballGO == (Object)null) { Type type = FindTypeByName("FireballController"); if (type != null) { array2 = Resources.FindObjectsOfTypeAll(type); foreach (Object obj in array2) { Component val = (Component)(object)((obj is Component) ? obj : null); if ((Object)(object)val != (Object)null) { _fireballGO = val.gameObject; break; } } } } if (!((Object)(object)_missileGO == (Object)null)) { return; } Type type2 = FindTypeByName("MagicMissleController"); if (!(type2 != null)) { return; } array2 = Resources.FindObjectsOfTypeAll(type2); foreach (Object obj2 in array2) { Component val2 = (Component)(object)((obj2 is Component) ? obj2 : null); if ((Object)(object)val2 != (Object)null) { _missileGO = val2.gameObject; break; } } } private static Type FindTypeByName(string name) { Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies(); foreach (Assembly assembly in assemblies) { try { Type[] types = assembly.GetTypes(); foreach (Type type in types) { if (type.Name == name) { return type; } } } catch { } } return null; } private IEnumerator CastSequence(Vector3 castOrigin, Vector3 castDir) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) castDir = ((Vector3)(ref castDir)).normalized; Transform casterTf = FindNearestPlayer(castOrigin); ((MonoBehaviour)this).StartCoroutine(ShowAnnouncement(casterTf, castOrigin)); string directoryName = Path.GetDirectoryName(typeof(ImGonnaComeLogic).Assembly.Location); string wavPath = Path.Combine(directoryName, "Sounds", "ImGonnaCome.wav"); string text = "file:///" + wavPath.Replace('\\', '/'); UnityWebRequest req = UnityWebRequestMultimedia.GetAudioClip(text, (AudioType)20); yield return req.SendWebRequest(); if ((int)req.result == 1) { GameObject val = new GameObject("IGCAudio"); AudioSource val2 = val.AddComponent(); val2.spatialBlend = 0f; val2.volume = 1f; val2.clip = DownloadHandlerAudioClip.GetContent(req); val2.Play(); Object.Destroy((Object)val, val2.clip.length + 1f); } else { Debug.LogWarning((object)("[ImGonnaCome] Audio: " + req.error + " | " + wavPath)); } req.Dispose(); if ((Object)(object)_fireballGO == (Object)null || (Object)(object)_missileGO == (Object)null) { TryFindPrefabs(); } if ((Object)(object)_particleMat == (Object)null) { ParticleSystemRenderer[] array = Object.FindObjectsOfType(); foreach (ParticleSystemRenderer val3 in array) { if ((Object)(object)((Renderer)val3).sharedMaterial != (Object)null) { _particleMat = ((Renderer)val3).sharedMaterial; break; } } } Vector3 val4 = (((Object)(object)casterTf != (Object)null) ? casterTf.position : castOrigin) + Vector3.up * 1.6f + castDir * 2.2f; Vector3 impactPos; if ((Object)(object)_fireballGO != (Object)null) { GameObject fbGo = Object.Instantiate(_fireballGO, val4, Quaternion.LookRotation(castDir)); RecolorToWhite(fbGo); MonoBehaviour[] components = fbGo.GetComponents(); foreach (MonoBehaviour val5 in components) { if (((object)val5).GetType().Name == "FireballController") { Object.Destroy((Object)(object)val5); break; } } Rigidbody val6 = fbGo.GetComponent(); if ((Object)(object)val6 == (Object)null) { val6 = fbGo.AddComponent(); } val6.isKinematic = false; val6.useGravity = true; val6.velocity = castDir * 22f; val6.drag = 0.05f; float waited = 0f; Vector3 lastPos = val4; while ((Object)(object)fbGo != (Object)null && waited < 9f) { lastPos = fbGo.transform.position; if (waited > 0.4f) { bool flag = false; Collider[] array2 = Physics.OverlapSphere(lastPos, 0.45f); foreach (Collider val7 in array2) { if (!val7.isTrigger && !((Object)(object)((Component)val7).gameObject == (Object)(object)fbGo) && !((Object)(object)((Component)val7).GetComponent("PlayerMovement") != (Object)null)) { flag = true; break; } } if (flag) { break; } } waited += Time.deltaTime; yield return null; } impactPos = lastPos; if ((Object)(object)fbGo != (Object)null) { Object.Destroy((Object)(object)fbGo); } } else { yield return ((MonoBehaviour)this).StartCoroutine(FireCustomFireball(val4, castDir)); impactPos = _customFireballImpact; } ((MonoBehaviour)this).StartCoroutine(SpawnWhiteExplosion(impactPos)); ((MonoBehaviour)this).StartCoroutine(SpawnGroundFlames(impactPos)); yield return (object)new WaitForSeconds(0.12f); Transform target = FindNearestPlayer(impactPos, (casterTf != null) ? ((Component)casterTf).gameObject : null); for (int i = 0; i < 5; i++) { Vector3 pos = impactPos + new Vector3(Random.Range(-1.2f, 1.2f), 0.2f, Random.Range(-1.2f, 1.2f)); if ((Object)(object)_missileGO != (Object)null) { ((MonoBehaviour)this).StartCoroutine(LaunchGameMissileUp(pos, target)); } else { ((MonoBehaviour)this).StartCoroutine(LaunchCustomMissileUp(pos, target)); } yield return (object)new WaitForSeconds(0.09f); } } private IEnumerator FireCustomFireball(Vector3 start, Vector3 dir) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) _customFireballImpact = start + dir * 50f; GameObject root = new GameObject("IGCFireball"); root.transform.position = start; Rigidbody obj = root.AddComponent(); obj.useGravity = true; obj.isKinematic = false; obj.drag = 0.08f; obj.velocity = dir * 22f; obj.interpolation = (RigidbodyInterpolation)1; GameObject val = new GameObject("Core"); val.transform.SetParent(root.transform, false); ParticleSystem obj2 = val.AddComponent(); MainModule main = obj2.main; ((MainModule)(ref main)).loop = true; ((MainModule)(ref main)).duration = 999f; ((MainModule)(ref main)).startLifetime = new MinMaxCurve(0.08f, 0.14f); ((MainModule)(ref main)).startSpeed = new MinMaxCurve(0.3f, 1.2f); ((MainModule)(ref main)).startSize = new MinMaxCurve(0.3f, 0.7f); ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white, new Color(0.95f, 0.95f, 0.95f, 1f)); ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main)).maxParticles = 300; EmissionModule emission = obj2.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(200f); ShapeModule shape = obj2.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)0; ((ShapeModule)(ref shape)).radius = 0.05f; if ((Object)(object)_particleMat != (Object)null) { ((Renderer)val.GetComponent()).sharedMaterial = _particleMat; } GameObject val2 = new GameObject("Trail"); val2.transform.SetParent(root.transform, false); ParticleSystem obj3 = val2.AddComponent(); MainModule main2 = obj3.main; ((MainModule)(ref main2)).loop = true; ((MainModule)(ref main2)).duration = 999f; ((MainModule)(ref main2)).startLifetime = new MinMaxCurve(0.3f, 0.7f); ((MainModule)(ref main2)).startSpeed = new MinMaxCurve(0.2f, 0.8f); ((MainModule)(ref main2)).startSize = new MinMaxCurve(0.15f, 0.5f); ((MainModule)(ref main2)).startColor = new MinMaxGradient(new Color(1f, 1f, 1f, 0.9f), new Color(0.8f, 0.8f, 0.8f, 0.25f)); ((MainModule)(ref main2)).gravityModifier = new MinMaxCurve(0.15f); ((MainModule)(ref main2)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main2)).maxParticles = 200; EmissionModule emission2 = obj3.emission; ((EmissionModule)(ref emission2)).rateOverTime = MinMaxCurve.op_Implicit(80f); ShapeModule shape2 = obj3.shape; ((ShapeModule)(ref shape2)).shapeType = (ParticleSystemShapeType)0; ((ShapeModule)(ref shape2)).radius = 0.25f; if ((Object)(object)_particleMat != (Object)null) { ((Renderer)val2.GetComponent()).sharedMaterial = _particleMat; } Light lt = root.AddComponent(); lt.type = (LightType)2; lt.color = Color.white; lt.intensity = 18f; lt.range = 18f; float elapsed = 0f; while (elapsed < 12f && (Object)(object)root != (Object)null) { if ((Object)(object)lt != (Object)null) { lt.intensity = 18f + Random.Range(-2f, 2f); } if (elapsed > 0.2f) { Collider[] array = Physics.OverlapSphere(root.transform.position, 0.4f); foreach (Collider val3 in array) { if (!val3.isTrigger && !((Object)(object)((Component)val3).gameObject == (Object)(object)root) && !((Object)(object)((Component)val3).GetComponent("PlayerMovement") != (Object)null)) { _customFireballImpact = root.transform.position; Object.Destroy((Object)(object)root); yield break; } } } elapsed += Time.deltaTime; yield return null; } if ((Object)(object)root != (Object)null) { _customFireballImpact = root.transform.position; Object.Destroy((Object)(object)root); } } private IEnumerator SpawnGroundFlames(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) RaycastHit val = default(RaycastHit); if (Physics.Raycast(pos + Vector3.up * 2f, Vector3.down, ref val, 10f)) { pos = ((RaycastHit)(ref val)).point; } GameObject go = new GameObject("IGCFlames"); go.transform.position = pos; go.transform.rotation = Quaternion.Euler(-90f, 0f, 0f); ParticleSystem ps = go.AddComponent(); MainModule main = ps.main; ((MainModule)(ref main)).duration = 7f; ((MainModule)(ref main)).loop = true; ((MainModule)(ref main)).startLifetime = new MinMaxCurve(1f, 2.5f); ((MainModule)(ref main)).startSpeed = new MinMaxCurve(0.5f, 3f); ((MainModule)(ref main)).startSize = new MinMaxCurve(0.1f, 0.6f); ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white, new Color(0.88f, 0.88f, 1f, 0.8f)); ((MainModule)(ref main)).gravityModifier = new MinMaxCurve(-0.12f); ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main)).maxParticles = 300; EmissionModule emission = ps.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(55f); ShapeModule shape = ps.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)10; ((ShapeModule)(ref shape)).radius = 2.8f; if ((Object)(object)_particleMat != (Object)null) { ((Renderer)go.GetComponent()).sharedMaterial = _particleMat; } Light lt = go.AddComponent(); lt.type = (LightType)2; lt.color = Color.white; lt.intensity = 8f; lt.range = 10f; float elapsed2 = 0f; while (elapsed2 < 5f && (Object)(object)go != (Object)null) { elapsed2 += Time.deltaTime; yield return null; } elapsed2 = 0f; while (elapsed2 < 1.5f && (Object)(object)go != (Object)null) { EmissionModule emission2 = ps.emission; ((EmissionModule)(ref emission2)).rateOverTime = MinMaxCurve.op_Implicit(Mathf.Lerp(55f, 0f, elapsed2 / 1.5f)); if ((Object)(object)lt != (Object)null) { lt.intensity = Mathf.Lerp(8f, 0f, elapsed2 / 1.5f); } elapsed2 += Time.deltaTime; yield return null; } if ((Object)(object)go != (Object)null) { Object.Destroy((Object)(object)go); } } private IEnumerator LaunchGameMissileUp(Vector3 pos, Transform target) { //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) GameObject mg = Object.Instantiate(_missileGO, pos, Quaternion.identity); RecolorToWhite(mg); Rigidbody component = mg.GetComponent(); if ((Object)(object)component != (Object)null) { component.isKinematic = false; component.velocity = new Vector3(Random.Range(-2.5f, 2.5f), Random.Range(10f, 16f), Random.Range(-2.5f, 2.5f)); } yield return (object)new WaitForSeconds(0.55f); if ((Object)(object)mg == (Object)null) { yield break; } RecolorToWhite(mg); MonoBehaviour val = null; MonoBehaviour[] components = mg.GetComponents(); foreach (MonoBehaviour val2 in components) { if (((object)val2).GetType().Name == "MagicMissleController") { val = val2; break; } } if (!((Object)(object)val == (Object)null)) { BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; FieldInfo field = ((object)val).GetType().GetField("MissleTarget", bindingAttr); if (field != null && (Object)(object)target != (Object)null) { field.SetValue(val, ((Component)target).gameObject); } FieldInfo field2 = ((object)val).GetType().GetField("desiredHomingMissleVelocity", bindingAttr); if (field2 != null) { field2.SetValue(val, 18f); } val.StartCoroutine("SpawnMissles"); } } private IEnumerator LaunchCustomMissileUp(Vector3 pos, Transform target) { //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) GameObject go = new GameObject("IGCMissile"); go.transform.position = pos; Rigidbody rb = go.AddComponent(); rb.useGravity = true; rb.velocity = new Vector3(Random.Range(-2f, 2f), Random.Range(10f, 16f), Random.Range(-2f, 2f)); ParticleSystem obj = go.AddComponent(); MainModule main = obj.main; ((MainModule)(ref main)).loop = true; ((MainModule)(ref main)).duration = 999f; ((MainModule)(ref main)).startLifetime = new MinMaxCurve(0.08f, 0.15f); ((MainModule)(ref main)).startSpeed = new MinMaxCurve(0.2f, 0.6f); ((MainModule)(ref main)).startSize = new MinMaxCurve(0.06f, 0.18f); ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white, new Color(0.85f, 0.85f, 0.85f, 0.8f)); ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main)).maxParticles = 80; EmissionModule emission = obj.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(90f); ShapeModule shape = obj.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)0; ((ShapeModule)(ref shape)).radius = 0.02f; if ((Object)(object)_particleMat != (Object)null) { ((Renderer)go.GetComponent()).sharedMaterial = _particleMat; } Light obj2 = go.AddComponent(); obj2.type = (LightType)2; obj2.color = Color.white; obj2.intensity = 6f; obj2.range = 5f; yield return (object)new WaitForSeconds(0.5f); if ((Object)(object)go == (Object)null) { yield break; } Object.Destroy((Object)(object)rb); float elapsed = 0f; while (elapsed < 8f && (Object)(object)go != (Object)null) { if ((Object)(object)target != (Object)null) { Vector3 val = target.position + Vector3.up * 0.8f; go.transform.position = Vector3.MoveTowards(go.transform.position, val, 16f * Time.deltaTime); if (Vector3.Distance(go.transform.position, val) < 0.4f) { break; } } elapsed += Time.deltaTime; yield return null; } if ((Object)(object)go != (Object)null) { Object.Destroy((Object)(object)go); } } private IEnumerator SpawnWhiteExplosion(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) GameObject go = new GameObject("IGCExplosion"); go.transform.position = pos; ParticleSystem val = go.AddComponent(); MainModule main = val.main; ((MainModule)(ref main)).duration = 0.15f; ((MainModule)(ref main)).loop = false; ((MainModule)(ref main)).startLifetime = new MinMaxCurve(0.4f, 0.9f); ((MainModule)(ref main)).startSpeed = new MinMaxCurve(6f, 18f); ((MainModule)(ref main)).startSize = new MinMaxCurve(0.2f, 0.7f); ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white, new Color(0.88f, 0.88f, 0.88f, 0.9f)); ((MainModule)(ref main)).gravityModifier = new MinMaxCurve(0.25f); ((MainModule)(ref main)).simulationSpace = (ParticleSystemSimulationSpace)1; ((MainModule)(ref main)).maxParticles = 100; EmissionModule emission = val.emission; ((EmissionModule)(ref emission)).rateOverTime = MinMaxCurve.op_Implicit(0f); ((EmissionModule)(ref emission)).SetBursts((Burst[])(object)new Burst[1] { new Burst(0f, (short)60, (short)90, 1, 0.01f) }); ShapeModule shape = val.shape; ((ShapeModule)(ref shape)).shapeType = (ParticleSystemShapeType)0; ((ShapeModule)(ref shape)).radius = 0.4f; if ((Object)(object)_particleMat != (Object)null) { ((Renderer)go.GetComponent()).sharedMaterial = _particleMat; } GameObject val2 = new GameObject("Flash"); val2.transform.SetParent(go.transform, false); Light lt = val2.AddComponent(); lt.type = (LightType)2; lt.color = Color.white; lt.intensity = 70f; lt.range = 32f; float t = 0f; while (t < 0.5f) { if (Object.op_Implicit((Object)(object)lt)) { lt.intensity = Mathf.Lerp(70f, 0f, t / 0.5f); } t += Time.deltaTime; yield return null; } Object.Destroy((Object)(object)go); } private static void RecolorToWhite(GameObject go) { //IL_0019: 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_00ae: 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_00ce: 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_00ee: 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_0044: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)go == (Object)null) { return; } Light[] componentsInChildren = go.GetComponentsInChildren(true); for (int i = 0; i < componentsInChildren.Length; i++) { componentsInChildren[i].color = Color.white; } ParticleSystem[] componentsInChildren2 = go.GetComponentsInChildren(true); for (int i = 0; i < componentsInChildren2.Length; i++) { MainModule main = componentsInChildren2[i].main; ((MainModule)(ref main)).startColor = new MinMaxGradient(Color.white, new Color(0.85f, 0.85f, 0.85f, 0.8f)); } Renderer[] componentsInChildren3 = go.GetComponentsInChildren(true); foreach (Renderer val in componentsInChildren3) { try { val.material.SetColor("_BaseColor", Color.white); val.material.SetColor("_Color", Color.white); val.material.SetColor("_EmissiveColor", Color.white * 2f); val.material.SetColor("_EmissionColor", Color.white * 2f); val.material.EnableKeyword("_EMISSION"); } catch { } } Component[] componentsInChildren4 = go.GetComponentsInChildren(true); foreach (Component val2 in componentsInChildren4) { if ((Object)(object)val2 == (Object)null || ((object)val2).GetType().Name != "LocalVolumetricFog") { continue; } try { BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic; FieldInfo field = ((object)val2).GetType().GetField("parameters", bindingAttr); if (field != null) { object value = field.GetValue(val2); FieldInfo fieldInfo = value?.GetType().GetField("albedo", bindingAttr); if (fieldInfo != null) { fieldInfo.SetValue(value, Color.white); field.SetValue(val2, value); } } } catch { } } } private IEnumerator ShowAnnouncement(Transform casterTf, Vector3 fallback) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) GameObject go = new GameObject("IGCText"); TextMesh obj = go.AddComponent(); obj.text = "I'm Gonna Come!"; obj.fontSize = 200; obj.characterSize = 0.032f; obj.color = Color.white; obj.anchor = (TextAnchor)4; obj.alignment = (TextAlignment)1; Light obj2 = go.AddComponent(); obj2.type = (LightType)2; obj2.color = Color.white; obj2.intensity = 60f; obj2.range = 30f; float elapsed = 0f; while (elapsed < 3f) { go.transform.position = (((Object)(object)casterTf != (Object)null) ? casterTf.position : fallback) + Vector3.up * 3.2f; if ((Object)(object)Camera.main != (Object)null) { go.transform.rotation = Quaternion.LookRotation(((Component)Camera.main).transform.forward); } elapsed += Time.deltaTime; yield return null; } Object.Destroy((Object)(object)go); } private static Transform FindNearestPlayer(Vector3 pos, GameObject exclude = null) { //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) Transform result = null; float num = float.MaxValue; Object[] array = Object.FindObjectsOfType(typeof(PlayerMovement)); foreach (Object obj in array) { PlayerMovement val = (PlayerMovement)(object)((obj is PlayerMovement) ? obj : null); if (!((Object)(object)val == (Object)null) && !((Object)(object)((Component)val).gameObject == (Object)(object)exclude)) { float num2 = Vector3.Distance(((Component)val).transform.position, pos); if (num2 < num) { num = num2; result = ((Component)val).transform; } } } return result; } } [BepInPlugin("com.thewargod_ares.imgonnacome", "ImGonnaCome", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { public const string GUID = "com.thewargod_ares.imgonnacome"; public const string NAME = "ImGonnaCome"; public const string VERSION = "1.0.0"; private void Awake() { BlackMagicManager.RegisterSpell((BaseUnityPlugin)(object)this, typeof(ImGonnaComeData), typeof(ImGonnaComeLogic)); ((BaseUnityPlugin)this).Logger.LogInfo((object)"[ImGonnaCome] Loaded."); } }