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 ModPsychose v2.0.0
ModPsychose.dll
Decompiled 4 months agousing System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using BepInEx; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using Unity.Netcode; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("ModPsychose")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("ModPsychose")] [assembly: AssemblyCopyright("Copyright © 2026")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("09bab297-43ec-412f-ae27-64e343a8dd69")] [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 ModPsychose; [BepInPlugin("Utilisateur.ModPsychose", "Psychose (DOBBY EDITION)", "2.0.0")] public class ModPsychoseBase : BaseUnityPlugin { private const string modGUID = "Utilisateur.ModPsychose"; private const string modName = "Psychose (DOBBY EDITION)"; private const string modVersion = "2.0.0"; private readonly Harmony harmony = new Harmony("Utilisateur.ModPsychose"); public static ManualLogSource mls; public static float minDelai = 60f; public static float maxDelai = 180f; private void Awake() { mls = Logger.CreateLogSource("Utilisateur.ModPsychose"); mls.LogInfo((object)">>> MOD PSYCHOSE 2.0 : DOBBY EST PRET <<<"); harmony.PatchAll(); } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] public class PatchParanoiaAudio { private static float timerAudio = 0f; private static float prochainSon = 30f; [HarmonyPostfix] private static void JouerSonFantome(PlayerControllerB __instance) { //IL_00d8: Unknown result type (might be due to invalid IL or missing references) //IL_00e3: 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_00f2: 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_00fb: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)__instance).IsOwner || __instance.isPlayerDead || !__instance.isInsideFactory) { return; } timerAudio += Time.deltaTime; if (!(timerAudio >= prochainSon)) { return; } timerAudio = 0f; prochainSon = Random.Range(ModPsychoseBase.minDelai, ModPsychoseBase.maxDelai); int[] array = new int[2] { 3, 4 }; int num = array[Random.Range(0, array.Length)]; if (StartOfRound.Instance.footstepSurfaces.Length > num) { AudioClip[] clips = StartOfRound.Instance.footstepSurfaces[num].clips; if (clips != null && clips.Length != 0) { AudioClip val = clips[Random.Range(0, clips.Length)]; Vector3 val2 = ((Component)__instance).transform.position - ((Component)__instance).transform.forward * 1.5f; AudioSource.PlayClipAtPoint(val, val2, 1.2f); ModPsychoseBase.mls.LogInfo((object)"PSYCHOSE : Bruit de pas joué !"); } } } } [HarmonyPatch(typeof(HUDManager), "Update")] public class PatchParanoiaVisuelle { private static float timerVisuel = 0f; private static float prochainVisuel = 60f; [HarmonyPostfix] private static void GlitchRadar(HUDManager __instance) { if ((Object)(object)GameNetworkManager.Instance.localPlayerController == (Object)null) { return; } timerVisuel += Time.deltaTime; if (!(timerVisuel >= prochainVisuel)) { return; } timerVisuel = 0f; prochainVisuel = Random.Range(ModPsychoseBase.minDelai, ModPsychoseBase.maxDelai); int num = Random.Range(0, 1000); string playerUsername = GameNetworkManager.Instance.localPlayerController.playerUsername; if (num == 0) { __instance.DisplayTip("MAITRE...", "DOBBY, ATTAQUE !!", true, false, "LC_Tip1"); ModPsychoseBase.mls.LogInfo((object)"PSYCHOSE : DOBBY A ATTAQUÉ !"); } else if (num < 50) { __instance.DisplayTip("...", "DERRIERE TOI " + playerUsername.ToUpper() + " !!!", true, false, "LC_Tip1"); } else if (num < 500) { string text = "COEQUIPIER"; List<string> list = new List<string>(); PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (val.isPlayerControlled && (Object)(object)val != (Object)(object)GameNetworkManager.Instance.localPlayerController) { list.Add(val.playerUsername); } } if (list.Count > 0) { text = list[Random.Range(0, list.Count)]; } string[] array = new string[12] { "ERREUR COMBINAISON", "NIVEAU OXYGENE CRITIQUE", "BATTERIE FAIBLE", "SIGNAL NON IDENTIFIE", "SIGNES VITAUX " + text.ToUpper() + " : CRITIQUE", text.ToUpper() + " : ARRET CARDIAQUE", "CONNEXION PERDUE : " + text.ToUpper(), "NE RESPIRE PAS", "ILS SONT LA", "CACHE TOI", "NE CLIGNE PAS DES YEUX", "COURS" }; string text2 = array[Random.Range(0, array.Length)]; string text3 = ((text2.Length < 15) ? "..." : "SYSTEME"); __instance.DisplayTip(text3, text2, true, false, "LC_Tip1"); } else { HUDManager.Instance.ShakeCamera((ScreenShakeType)1); } } } [HarmonyPatch(typeof(PlayerControllerB), "Update")] public class PatchVoixDesMorts { private static float timerVoix = 0f; private static float prochainCri = 120f; [HarmonyPostfix] private static void JouerCriLointain(PlayerControllerB __instance) { //IL_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008d: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: 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_00aa: Unknown result type (might be due to invalid IL or missing references) //IL_00b1: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00bf: Unknown result type (might be due to invalid IL or missing references) if (!((NetworkBehaviour)__instance).IsOwner || !__instance.isInsideFactory || __instance.isPlayerDead) { return; } timerVoix += Time.deltaTime; if (timerVoix >= prochainCri) { timerVoix = 0f; prochainCri = Random.Range(ModPsychoseBase.minDelai, ModPsychoseBase.maxDelai); AudioClip playerJumpSFX = StartOfRound.Instance.playerJumpSFX; if ((Object)(object)playerJumpSFX != (Object)null) { Vector3 position = ((Component)__instance).transform.position; Vector3 onUnitSphere = Random.onUnitSphere; Vector3 position2 = position + ((Vector3)(ref onUnitSphere)).normalized * 10f; GameObject val = new GameObject("SonFantome"); val.transform.position = position2; AudioSource val2 = val.AddComponent<AudioSource>(); val2.clip = playerJumpSFX; val2.volume = 1f; val2.spatialBlend = 1f; val2.maxDistance = 25f; val2.rolloffMode = (AudioRolloffMode)1; val2.pitch = Random.Range(0.6f, 1.4f); val2.Play(); Object.Destroy((Object)(object)val, playerJumpSFX.length + 1f); ModPsychoseBase.mls.LogInfo((object)$"PSYCHOSE : Voix jouée (Pitch: {val2.pitch}) !"); } } } }