The BepInEx console will not appear when launching like it does for other games on Thunderstore. This is normal (and helps prevent crashes during startup). You can turn it back on in your BepInEx.cfg file.
Decompiled source of CorruptPEAK v1.1.0
BepInEx/plugins/CorruptPEAK.dll
Decompiled 5 days agousing System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Configuration; using ExitGames.Client.Photon; using Microsoft.CodeAnalysis; using Photon.Pun; using Photon.Realtime; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] [assembly: AssemblyCompany("CorruptPEAK")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyDescription("CorruptPEAK")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0+c8c2184997c36cda6dcc33270a5f8f443cee17da")] [assembly: AssemblyProduct("CorruptPEAK")] [assembly: AssemblyTitle("CorruptPEAK")] [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.Module, AllowMultiple = false, Inherited = false)] internal sealed class RefSafetyRulesAttribute : Attribute { public readonly int Version; public RefSafetyRulesAttribute(int P_0) { Version = P_0; } } } namespace CorruptPEAK { public class CustomPropCheck : MonoBehaviourPunCallbacks { public override void OnJoinedRoom() { ((MonoBehaviourPunCallbacks)this).OnJoinedRoom(); Player[] playerListOthers = PhotonNetwork.PlayerListOthers; foreach (Player val in playerListOthers) { if (((Dictionary<object, object>)(object)val.CustomProperties).ContainsKey((object)"CRPTPEAK") && !PhotonNetwork.IsMasterClient) { if (val.IsMasterClient) { Notifications.SendOnce("<color=blue>[ CorruptPEAK ] : The host is using CorruptPEAK!</color>"); } else { Notifications.SendOnce("<color=blue>[ CorruptPEAK ] : Another player is using CorruptPEAK!</color>"); } } if (((Dictionary<object, object>)(object)val.CustomProperties).ContainsKey((object)"CRPTPEAK") && PhotonNetwork.IsMasterClient) { Notifications.SendOnce("<color=blue>[ CorruptPEAK ] : Another user is using CorruptPEAK!</color>"); } } } } internal class Notifications { private static readonly HashSet<string> sentMessages = new HashSet<string>(); public static void SendOnce(string message) { if (!sentMessages.Contains(message) && TrySend(message)) { sentMessages.Add(message); } } public static void Reset(string message) { sentMessages.Remove(message); } public static void ResetAll() { sentMessages.Clear(); } private static bool TrySend(string message) { PlayerConnectionLog val = Object.FindFirstObjectByType<PlayerConnectionLog>(); if ((Object)(object)val == (Object)null) { return false; } MethodInfo method = typeof(PlayerConnectionLog).GetMethod("AddMessage", BindingFlags.Instance | BindingFlags.NonPublic); if (method != null) { method.Invoke(val, new object[1] { message }); return true; } Debug.LogWarning((object)"AddMessage method not found on PlayerConnectionLog."); return false; } } [BepInPlugin("com.zbytek.CorruptPEAK", "CorruptPEAK", "1.1.0")] public class Plugin : BaseUnityPlugin { public static bool readyToPlay = false; public static ConfigEntry<bool> AntiCrashEnabled; public static float CorruptionIntensity = 0.0001f; public static ConfigEntry<float> CorruptionIncreaseRate; public static ConfigEntry<float> AntiCrashLimit; public static ConfigEntry<bool> CorruptRenderers; public static ConfigEntry<bool> CorruptAudio; public static ConfigEntry<bool> CorruptParticles; public static ConfigEntry<bool> CorruptTransforms; public static ConfigEntry<bool> CorruptMeshes; public static ConfigEntry<bool> ShouldCorruptLightmaps; public static ConfigEntry<bool> CorruptRandomValues; public static ConfigEntry<bool> WelcomeAccepted; public static bool corruptionStarted = false; public static bool litthecampfiresostopcorruption = false; private List<AudioClip> AllAudioClips = new List<AudioClip>(); private bool Init; public bool alreadysent = false; private Random rng = new Random(); private void Awake() { AntiCrashEnabled = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "AntiCrashEnabled", true, "makes ur game quit before it dies"); AntiCrashLimit = ((BaseUnityPlugin)this).Config.Bind<float>("General", "AntiCrashLimit", 20f, "corruption intensity to quit your game at"); CorruptionIncreaseRate = ((BaseUnityPlugin)this).Config.Bind<float>("Corruption", "CorruptionIncreaseRate", 0.0001f, "how fast the corruption increases"); CorruptRenderers = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptRenderers", true, "makes it so that colors break"); CorruptAudio = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptAudio", true, "makes it so that audio values change"); CorruptParticles = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptParticles", true, "changes particle system values"); CorruptTransforms = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptTransforms", false, "makes it so things randomly get bigger or smaller"); CorruptMeshes = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptMeshes", true, "makes it so any editable mesh can be edited randomly"); ShouldCorruptLightmaps = ((BaseUnityPlugin)this).Config.Bind<bool>("Corruption Options", "CorruptLightmaps", true, "makes it so the lighting breaks"); CorruptRandomValues = ((BaseUnityPlugin)this).Config.Bind<bool>("Dangerous", "CorruptRandomValues", false, "THIS IS DANGEROUS, PLEASE USE AT YOUR OWN WILL!!! randomizes values in basically any object in the scene, might go faster than the increase rate cuz i suck at coding"); } private void Update() { if (readyToPlay && corruptionStarted) { CorruptionIntensity = Mathf.Clamp(CorruptionIntensity + CorruptionIncreaseRate.Value * Time.deltaTime, 0f, 500f); } if (CorruptionIntensity > AntiCrashLimit.Value && AntiCrashEnabled.Value) { MessageBox(IntPtr.Zero, "Hey your game is about to crash so its also about to quit so bye", "AntiCrash", 0u); Application.Quit(); } } public void LateUpdate() { //IL_0044: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Expected O, but got Unknown if (PhotonNetwork.InRoom) { corruptionStarted = true; readyToPlay = true; } if (readyToPlay && corruptionStarted && PhotonNetwork.InRoom) { if (!alreadysent) { Hashtable val = new Hashtable(); val[(object)"CRPTPEAK"] = true; PhotonNetwork.LocalPlayer.SetCustomProperties(val, (Hashtable)null, (WebFlags)null); Notifications.SendOnce("<color=blue>[ CorruptPEAK ] : Corruption Has Begun. </color>"); alreadysent = true; } if (!Init && (Object)(object)Player.localPlayer != (Object)null) { FindAllAudioClips(); Init = true; } if (Random.value < CorruptionIntensity * 0.1f) { CorruptScene(); } } } private void FindAllAudioClips() { AudioClip[] array = Resources.FindObjectsOfTypeAll<AudioClip>(); foreach (AudioClip item in array) { if (!AllAudioClips.Contains(item)) { AllAudioClips.Add(item); } } } private void CorruptScene() { if (CorruptRenderers.Value) { Renderer[] array = Object.FindObjectsOfType<Renderer>(); foreach (Renderer renderer in array) { if (Random.value < CorruptionIntensity) { CorruptRenderer(renderer); } } } if (CorruptAudio.Value) { AudioSource[] array2 = Object.FindObjectsOfType<AudioSource>(); foreach (AudioSource src in array2) { if (Random.value < CorruptionIntensity) { CorruptAudioSource(src); } } } if (CorruptParticles.Value) { ParticleSystem[] array3 = Object.FindObjectsOfType<ParticleSystem>(); foreach (ParticleSystem ps in array3) { if (Random.value < CorruptionIntensity) { CorruptParticleSystem(ps); } } } if (CorruptTransforms.Value) { Transform[] array4 = Object.FindObjectsOfType<Transform>(); foreach (Transform tr in array4) { if (Random.value < CorruptionIntensity) { CorruptTransform(tr); } } } if (!CorruptRandomValues.Value) { return; } MonoBehaviour[] array5 = Object.FindObjectsOfType<MonoBehaviour>(); List<MonoBehaviour> list = new List<MonoBehaviour>(); MonoBehaviour[] array6 = array5; foreach (MonoBehaviour val in array6) { string text = ((object)val).GetType().Name.ToLowerInvariant(); if (!text.Contains("photon")) { list.Add(val); } } int num = Math.Min(127, list.Count); for (int n = 0; n < num; n++) { int index = rng.Next(list.Count); MonoBehaviour obj = list[index]; CorruptFields(obj); list.RemoveAt(index); } } private void CorruptFields(MonoBehaviour obj) { Type type = ((object)obj).GetType(); FieldInfo[] fields = type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo[] array = fields; foreach (FieldInfo fieldInfo in array) { if (fieldInfo.IsInitOnly) { continue; } Type fieldType = fieldInfo.FieldType; try { if (fieldType == typeof(int)) { fieldInfo.SetValue(obj, rng.Next(-1000, 1000)); } else if (fieldType == typeof(float)) { float num = (float)(rng.NextDouble() * 2000.0 - 1000.0); if (rng.NextDouble() < 0.1) { num = float.NaN; } fieldInfo.SetValue(obj, num); } else if (fieldType == typeof(bool)) { fieldInfo.SetValue(obj, rng.Next(2) == 0); } else if (fieldType == typeof(string)) { fieldInfo.SetValue(obj, RandomString(rng.Next(3, 10))); } } catch { } } } private string RandomString(int length) { char[] array = new char[length]; for (int i = 0; i < length; i++) { array[i] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!?"[rng.Next("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!?".Length)]; } return new string(array); } private void CorruptRenderer(Renderer renderer) { //IL_0018: 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) Material material = renderer.material; if (material.HasProperty("_Color")) { material.color = Random.ColorHSV(); } if (material.HasProperty("_MainTex") && (Object)(object)material.mainTexture != (Object)null) { material.mainTextureScale = new Vector2(Random.Range(0.5f, 2f), Random.Range(0.5f, 2f)); } MeshFilter component = ((Component)renderer).GetComponent<MeshFilter>(); if (Object.op_Implicit((Object)(object)component) && Object.op_Implicit((Object)(object)component.mesh) && component.mesh.isReadable) { CorruptMesh(component.mesh); } } private void CorruptAudioSource(AudioSource src) { src.pitch = Random.Range(0f, 100f); src.volume = Random.Range(0f, 1f); if (AllAudioClips.Count > 0) { src.clip = AllAudioClips[Random.Range(0, AllAudioClips.Count)]; } } private void CorruptParticleSystem(ParticleSystem ps) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_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_002b: Unknown result type (might be due to invalid IL or missing references) MainModule main = ps.main; ((MainModule)(ref main)).startSize = MinMaxCurve.op_Implicit(Random.Range(0.1f, 5f)); ((MainModule)(ref main)).startColor = MinMaxGradient.op_Implicit(Random.ColorHSV()); } private void CorruptTransform(Transform tr) { //IL_0003: 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) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00b7: Unknown result type (might be due to invalid IL or missing references) tr.position += Random.insideUnitSphere * CorruptionIntensity * 2f; tr.rotation = Quaternion.Euler(Random.Range(0f, 360f), Random.Range(0f, 360f), Random.Range(0f, 360f)); tr.localScale = new Vector3(tr.localScale.x * Random.Range(0.5f, 1.5f), tr.localScale.y * Random.Range(0.5f, 1.5f), tr.localScale.z * Random.Range(0.5f, 1.5f)); } private void CorruptMesh(Mesh mesh) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) Vector3[] vertices = mesh.vertices; for (int i = 0; i < vertices.Length; i++) { if (Random.value < CorruptionIntensity) { ref Vector3 reference = ref vertices[i]; reference += Random.insideUnitSphere * CorruptionIntensity; } } mesh.vertices = vertices; mesh.RecalculateNormals(); mesh.RecalculateBounds(); } [DllImport("user32.dll", CharSet = CharSet.Auto)] private static extern int MessageBox(IntPtr hWnd, string text, string caption, uint type); } }