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 NoEnemyDespawn v1.0.0
plugins/NoEnemyDespawn.dll
Decompiled a year agousing System; using System.Collections; using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using HarmonyLib; 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.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: AssemblyCompany("NoEnemyDespawn")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("NoEnemyDespawn")] [assembly: AssemblyTitle("NoEnemyDespawn")] [assembly: AssemblyVersion("1.0.0.0")] namespace NoEnemyDespawn; [BepInPlugin("pleasure.zone.noenemydespawn", "NoEnemyDespawn", "1.0.0")] public class Plugin : BaseUnityPlugin { private void Awake() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Expected O, but got Unknown ((BaseUnityPlugin)this).Logger.LogInfo((object)"NoEnemyDespawn loaded"); Harmony val = new Harmony("pleasure.zone.noenemydespawn"); val.PatchAll(); } } [HarmonyPatch(typeof(EnemyParent), "Logic")] public class EnemyDespawnPrevention { [HarmonyPrefix] private static bool Prefix(ref IEnumerator __result, ref EnemyParent __instance) { __result = Logic(__instance); return false; } private static IEnumerator Logic(EnemyParent instance) { FieldInfo spawnedField = AccessTools.Field(typeof(EnemyParent), "Spawned"); FieldInfo playerCloseField = AccessTools.Field(typeof(EnemyParent), "playerClose"); AccessTools.Field(typeof(EnemyParent), "Enemy"); FieldInfo pauseTimerField = AccessTools.Field(typeof(EnemyParent), "spawnedTimerPauseTimer"); FieldInfo despawnedTimerField = AccessTools.Field(typeof(EnemyParent), "DespawnedTimer"); FieldInfo spawnedTimerField = AccessTools.Field(typeof(EnemyParent), "SpawnedTimer"); FieldInfo debugDespawnCloseField = AccessTools.Field(typeof(EnemyDirector), "debugDespawnClose"); MethodInfo spawnMethod = AccessTools.Method(typeof(EnemyParent), "Spawn", (Type[])null, (Type[])null); instance.Despawn(); despawnedTimerField.SetValue(instance, Random.Range(2f, 5f)); while (true) { bool spawned = (bool)spawnedField.GetValue(instance); _ = (bool)playerCloseField.GetValue(instance); float spawnedTimer = (float)spawnedTimerField.GetValue(instance); float pauseTimer = (float)pauseTimerField.GetValue(instance); float despawnedTimer = (float)despawnedTimerField.GetValue(instance); _ = (bool)debugDespawnCloseField.GetValue(EnemyDirector.instance); if (spawned) { if (!(spawnedTimer <= 0f) && pauseTimer > 0f) { pauseTimerField.SetValue(instance, pauseTimer - Time.deltaTime); } } else if (despawnedTimer <= 0f) { spawnMethod.Invoke(instance, new object[0]); } else { despawnedTimerField.SetValue(instance, despawnedTimer - Time.deltaTime); } yield return null; } } } public class PluginInfo { public const string id = "pleasure.zone.noenemydespawn"; public const string name = "NoEnemyDespawn"; public const string version = "1.0.0"; }