using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = "")]
[assembly: AssemblyCompany("LC_Optim")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyDescription("Source moment")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LC_Optim")]
[assembly: AssemblyTitle("LC_Optim")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace LC_Optim;
[BepInPlugin("mnc.fixcentipedelag", "FixCentipedeLag", "2023.12.7")]
public class Plugin : BaseUnityPlugin
{
private Harmony thisHarmony;
private static Dictionary<int, ulong> instanceMap = new Dictionary<int, ulong>();
private static ulong deadtimer = 100uL;
private static ManualLogSource Log;
private static ConfigEntry<bool> configShowDebug;
private static void Debug(object data, LogLevel logLevel = 16)
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
if (configShowDebug.Value)
{
Log.Log(logLevel, data);
}
}
private void Awake()
{
//IL_0026: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Expected O, but got Unknown
//IL_005a: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Expected O, but got Unknown
configShowDebug = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "Enable debug printing", true, "Enabling this will show debug info in console, e.g. when a new centipede gets tracked or removed.");
thisHarmony = new Harmony("mnc.fixcentipedelag");
thisHarmony.Patch((MethodBase)typeof(CentipedeAI).GetMethod("DoAIInterval"), new HarmonyMethod(typeof(Plugin), "RemoveLagCentipede", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
Debug("Registered the patch method", (LogLevel)4);
Log = ((BaseUnityPlugin)this).Logger;
}
public static void RemoveLagCentipede(CentipedeAI __instance)
{
if (((EnemyAI)__instance).TargetClosestPlayer(1.5f, false, 70f))
{
return;
}
int instanceID = ((Object)__instance).GetInstanceID();
ulong num = (ulong)Time.frameCount;
if (!instanceMap.ContainsKey(instanceID))
{
instanceMap.Add(instanceID, num);
Debug($"Tracked {instanceID}", (LogLevel)16);
return;
}
ulong num2 = instanceMap[instanceID];
if (num - num2 <= deadtimer)
{
((EnemyAI)__instance).KillEnemy(true);
instanceMap.Remove(instanceID);
Debug($"Removed centipede at {instanceID}", (LogLevel)16);
}
else
{
instanceMap[instanceID] = num;
}
}
public void OnDestroy()
{
thisHarmony.UnpatchSelf();
}
}
internal class PluginMetadata
{
public const string PLUGIN_GUID = "mnc.fixcentipedelag";
public const string PLUGIN_NAME = "FixCentipedeLag";
public const string PLUGIN_VERSION = "2023.12.7";
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "LC_Optim";
public const string PLUGIN_NAME = "LC_Optim";
public const string PLUGIN_VERSION = "1.0.0";
}