The BepInEx console will not appear when launching like it does for other games on Thunderstore (you can turn it back on in your BepInEx.cfg file). If your PEAK crashes on startup, add -dx12 to your launch parameters.
Decompiled source of PoisonShuffle v1.1.0
PoisonShuffle.dll
Decompiled 3 months 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 BepInEx; using Photon.Pun; using UnityEngine; using UnityEngine.SceneManagement; using Zorro.Core; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("PoisonShuffle")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("PoisonShuffle")] [assembly: AssemblyCopyright("Copyright © 2025")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("48c13e53-847c-4952-ad1a-63c73fc11bb4")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyVersion("1.0.0.0")] namespace PoisonShuffle; [BepInPlugin("com.hiccup.poisonshuffle", "Random Poison Shuffle", "1.0.0")] public class Plugin : BaseUnityPlugin { private bool _alreadyShuffled; private void Awake() { Debug.Log((object)"[PoisonShuffle] plugin loaded"); Object.DontDestroyOnLoad((Object)(object)((Component)this).gameObject); SceneManager.sceneLoaded += OnSceneLoaded; } private void OnDestroy() { SceneManager.sceneLoaded -= OnSceneLoaded; } private void OnSceneLoaded(Scene scene, LoadSceneMode _) { if (!_alreadyShuffled && !(((Scene)(ref scene)).name != "Level_11")) { _alreadyShuffled = true; ItemDatabase instance = SingletonAsset<ItemDatabase>.Instance; int num = ((!PhotonNetwork.InRoom || string.IsNullOrEmpty(PhotonNetwork.CurrentRoom.Name)) ? DateTime.Now.GetHashCode() : PhotonNetwork.CurrentRoom.Name.GetHashCode()); Debug.Log((object)$"[PoisonShuffle] Using seed {num}"); Random rng = new Random(num); ShufflePoison(rng, instance); } } private static void ShufflePoison(Random rng, ItemDatabase db) { //IL_0037: 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_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01c9: Unknown result type (might be due to invalid IL or missing references) foreach (KeyValuePair<ushort, Item> item in db.itemLookup) { Item value = item.Value; if ((Object)(object)value == (Object)null) { continue; } bool flag = ((Enum)value.itemTags).HasFlag((Enum)(object)(ItemTags)4); bool flag2 = ((Enum)value.itemTags).HasFlag((Enum)(object)(ItemTags)8); if (!flag && !flag2) { continue; } bool flag3 = rng.NextDouble() < 0.5; Action_InflictPoison val = ((Component)value).GetComponent<Action_InflictPoison>(); if (flag3) { if (!Object.op_Implicit((Object)(object)val)) { val = ((Component)value).gameObject.AddComponent<Action_InflictPoison>(); val.inflictionTime = Random.Range(2f, 5f); val.poisonPerSecond = Random.Range(0.015f, 0.075f); val.delay = Random.Range(0f, 5f); } ((Behaviour)val).enabled = true; ((ItemAction)val).OnConsumed = true; Debug.Log((object)("[PoisonShuffle] " + ((Object)value).name + " set **POISONOUS**")); } else { if (Object.op_Implicit((Object)(object)val)) { ((Behaviour)val).enabled = false; } Debug.Log((object)("[PoisonShuffle] " + ((Object)value).name + " set safe")); } } Item[] array = Object.FindObjectsOfType<Item>(); foreach (Item val2 in array) { if ((Object)(object)val2 == (Object)null) { continue; } bool flag4 = ((Enum)val2.itemTags).HasFlag((Enum)(object)(ItemTags)4); bool flag5 = ((Enum)val2.itemTags).HasFlag((Enum)(object)(ItemTags)8); if (!flag4 && !flag5) { continue; } bool flag6 = rng.NextDouble() < 0.5; Action_InflictPoison val3 = ((Component)val2).GetComponent<Action_InflictPoison>(); if (flag6) { if (!Object.op_Implicit((Object)(object)val3)) { val3 = ((Component)val2).gameObject.AddComponent<Action_InflictPoison>(); val3.inflictionTime = Random.Range(2f, 5f); val3.poisonPerSecond = Random.Range(0.015f, 0.075f); val3.delay = Random.Range(0f, 5f); } ((Behaviour)val3).enabled = true; ((ItemAction)val3).OnConsumed = true; Debug.Log((object)("[PoisonShuffle] " + ((Object)val2).name + " instance set **POISONOUS**")); } else { if (Object.op_Implicit((Object)(object)val3)) { ((Behaviour)val3).enabled = false; } Debug.Log((object)("[PoisonShuffle] " + ((Object)val2).name + " instance set safe")); } } } }