using System; using System.Collections.Generic; using System.Diagnostics; using System.Reflection; using System.Reflection.Emit; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Logging; using HarmonyLib; using Microsoft.CodeAnalysis; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("youxia173")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.3.0.0")] [assembly: AssemblyInformationalVersion("0.3.0+b02efc09f3835ce2693f5095018ede642711958e")] [assembly: AssemblyProduct("youxia173.GhostPing")] [assembly: AssemblyTitle("GhostPing")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.3.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Embedded] internal sealed class EmbeddedAttribute : Attribute { } } namespace System.Runtime.CompilerServices { [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)] internal sealed class NullableAttribute : Attribute { public readonly byte[] NullableFlags; public NullableAttribute(byte P_0) { NullableFlags = new byte[1] { P_0 }; } public NullableAttribute(byte[] P_0) { NullableFlags = P_0; } } [CompilerGenerated] [Embedded] [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [CompilerGenerated] [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 BepInEx { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class BepInAutoPluginAttribute : Attribute { public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace BepInEx.Preloader.Core.Patching { [AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)] [Conditional("CodeGeneration")] internal sealed class PatcherAutoPluginAttribute : Attribute { public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null) { } } } namespace GhostPing { [BepInPlugin("youxia173.GhostPing", "GhostPing", "0.3.0")] public class Plugin : BaseUnityPlugin { public const string Id = "youxia173.GhostPing"; internal static ManualLogSource Log { get; private set; } public static string Name => "GhostPing"; public static string Version => "0.3.0"; private void Awake() { Log = ((BaseUnityPlugin)this).Logger; Log.LogInfo((object)("Plugin " + Name + " " + Version + " is loaded!")); Harmony.CreateAndPatchAll(typeof(GhostPingPatches), ((BaseUnityPlugin)this).Info.Metadata.GUID); } } internal static class GhostPingPatches { [HarmonyPatch(/*Could not decode attribute arguments.*/)] [HarmonyPrefix] private static bool CanPing_IgnoreDeath(PointPinger __instance, ref bool __result) { __result = !Traverse.Create((object)__instance).Property("inCooldown", (object[])null).GetValue(); return false; } [HarmonyPatch(typeof(PointPinger), "ReceivePoint_Rpc")] [HarmonyTranspiler] private static IEnumerable ReceivePoint_SkipVisibilityCull(IEnumerable instructions) { //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00b8: Expected O, but got Unknown //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Expected O, but got Unknown List list = new List(instructions); for (int i = 0; i < list.Count - 2; i++) { if (!(list[i].opcode != OpCodes.Ldc_R4) && list[i].operand is float num && num == 0f) { CodeInstruction val = list[i + 1]; if ((!(val.opcode != OpCodes.Bgt_Un_S) || !(val.opcode != OpCodes.Bgt_Un)) && !(list[i + 2].opcode != OpCodes.Ret)) { object operand = val.operand; list[i] = new CodeInstruction(OpCodes.Pop, (object)null); list[i + 1] = new CodeInstruction(OpCodes.Br_S, operand); list.RemoveAt(i + 2); Plugin.Log.LogInfo((object)"ReceivePoint_Rpc: visibility early-return removed (stack-safe)"); break; } } } return list; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } }