using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
using LegaFusionCore.Behaviours.Addons;
using LegaFusionCore.NetcodePatcher;
using LegaFusionCore.Patches;
using Microsoft.CodeAnalysis;
using Unity.Netcode;
using UnityEngine;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("LegaFusionCore")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("LegaFusionCore")]
[assembly: AssemblyCopyright("Copyright © 2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("7dc7a313-3468-48ad-8189-4f22764cd9ee")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("EasyTextEffects")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
[module: NetcodePatchedAssembly]
internal class <Module>
{
static <Module>()
{
}
}
namespace Microsoft.CodeAnalysis
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
internal sealed class EmbeddedAttribute : Attribute
{
}
}
namespace System.Runtime.CompilerServices
{
[CompilerGenerated]
[Microsoft.CodeAnalysis.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 LegaFusionCore
{
[BepInPlugin("Lega.LegaFusionCore", "Lega Fusion Core", "1.0.0")]
public class LegaFusionCore : BaseUnityPlugin
{
private const string modGUID = "Lega.LegaFusionCore";
private const string modName = "Lega Fusion Core";
private const string modVersion = "1.0.0";
private readonly Harmony harmony = new Harmony("Lega.LegaFusionCore");
internal static ManualLogSource mls;
public void Awake()
{
mls = Logger.CreateLogSource("LegaFusionCore");
NetcodePatcher();
harmony.PatchAll(typeof(GrabbableObjectPatch));
}
private static void NetcodePatcher()
{
Type[] types = Assembly.GetExecutingAssembly().GetTypes();
Type[] array = types;
foreach (Type type in array)
{
MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
MethodInfo[] array2 = methods;
foreach (MethodInfo methodInfo in array2)
{
object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
if (customAttributes.Length != 0 && !methodInfo.ContainsGenericParameters)
{
methodInfo.Invoke(null, null);
}
}
}
}
}
public class LFCUtilities
{
public static void SetAddonComponent<T>(GrabbableObject grabbableObject, string addonName) where T : AddonComponent
{
T val = ((Component)grabbableObject).gameObject.AddComponent<T>();
val.hasAddon = true;
val.addonName = addonName;
ScanNodeProperties componentInChildren = ((Component)grabbableObject).gameObject.GetComponentInChildren<ScanNodeProperties>();
if ((Object)(object)componentInChildren != (Object)null)
{
componentInChildren.subText = componentInChildren.subText + ((componentInChildren.subText != null) ? "\n" : "") + "Addon: " + addonName;
}
}
}
public static class MyPluginInfo
{
public const string PLUGIN_GUID = "LegaFusionCore";
public const string PLUGIN_NAME = "LegaFusionCore";
public const string PLUGIN_VERSION = "1.0.0";
}
}
namespace LegaFusionCore.Patches
{
internal class GrabbableObjectPatch
{
[HarmonyPatch(typeof(GrabbableObject), "SetControlTipsForItem")]
[HarmonyPostfix]
private static void SetAddonToolTip(ref GrabbableObject __instance)
{
AddonComponent component = ((Component)__instance).gameObject.GetComponent<AddonComponent>();
if (!((Object)(object)component == (Object)null) && component.hasAddon && component.toolTip != null)
{
HUDManager.Instance.ChangeControlTipMultiple(__instance.itemProperties.toolTips.Concat(new <>z__ReadOnlyArray<string>(new string[1] { component.toolTip })).ToArray(), true, __instance.itemProperties);
}
}
[HarmonyPatch(typeof(GrabbableObject), "SetScrapValue")]
[HarmonyPostfix]
private static void SetAddonScanNode(ref GrabbableObject __instance)
{
AddonComponent component = ((Component)__instance).gameObject.GetComponent<AddonComponent>();
if (!((Object)(object)component == (Object)null) && component.hasAddon)
{
ScanNodeProperties componentInChildren = ((Component)__instance).gameObject.GetComponentInChildren<ScanNodeProperties>();
if ((Object)(object)componentInChildren != (Object)null)
{
componentInChildren.subText = componentInChildren.subText + ((componentInChildren.subText != null) ? "\n" : "") + "Addon: " + component.addonName;
}
}
}
}
}
namespace LegaFusionCore.Behaviours.Addons
{
public abstract class AddonComponent : MonoBehaviour
{
public bool hasAddon;
public string addonName;
public string toolTip;
public bool onCooldown;
public virtual void ActivateSpecialAbility()
{
}
public void StartCooldown(int cooldown)
{
if (!onCooldown)
{
onCooldown = true;
((MonoBehaviour)this).StartCoroutine(StartCooldownCoroutine(cooldown));
}
}
public IEnumerator StartCooldownCoroutine(int cooldown)
{
while (cooldown > 0)
{
yield return (object)new WaitForSecondsRealtime(1f);
cooldown--;
SetCooldownTipsForItem(cooldown);
}
onCooldown = false;
}
public void SetCooldownTipsForItem(int timeLeft)
{
GrabbableObject componentInParent = ((Component)this).GetComponentInParent<GrabbableObject>();
if (!((Object)(object)componentInParent == (Object)null) && !((Object)(object)componentInParent.playerHeldBy == (Object)null) && !componentInParent.isPocketed && !((Object)(object)componentInParent.playerHeldBy != (Object)(object)GameNetworkManager.Instance.localPlayerController))
{
string text = ((timeLeft > 0) ? $"[On cooldown: {timeLeft}]" : "");
HUDManager.Instance.ChangeControlTipMultiple(componentInParent.itemProperties.toolTips.Concat(new <>z__ReadOnlyArray<string>(new string[1] { text })).ToArray(), true, componentInParent.itemProperties);
}
}
public void RemoveAddon()
{
GrabbableObject componentInParent = ((Component)this).GetComponentInParent<GrabbableObject>();
if ((Object)(object)componentInParent == (Object)null)
{
return;
}
ScanNodeProperties componentInChildren = ((Component)componentInParent).gameObject.GetComponentInChildren<ScanNodeProperties>();
if ((Object)(object)componentInChildren == (Object)null)
{
return;
}
string[] array = new string[2]
{
"\nAddon: " + addonName,
"Addon: " + addonName
};
string[] array2 = array;
foreach (string text in array2)
{
int num = componentInChildren.subText.IndexOf(text);
if (num >= 0)
{
componentInChildren.subText = componentInChildren.subText.Remove(num, text.Length);
break;
}
}
hasAddon = false;
addonName = null;
}
}
public class AddonProp<T> : PhysicsProp where T : AddonComponent
{
public virtual AddonTargetDatabase.AddonTargetType TargetType { get; }
public override void ItemActivate(bool used, bool buttonDown = true)
{
//IL_002a: Unknown result type (might be due to invalid IL or missing references)
//IL_003f: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_00e7: Unknown result type (might be due to invalid IL or missing references)
((GrabbableObject)this).ItemActivate(used, buttonDown);
RaycastHit val = default(RaycastHit);
if (!buttonDown || (Object)(object)((GrabbableObject)this).playerHeldBy == (Object)null || !Physics.Raycast(new Ray(((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.position, ((Component)((GrabbableObject)this).playerHeldBy.gameplayCamera).transform.forward), ref val, 3f, 832))
{
return;
}
GrabbableObject component = ((Component)((RaycastHit)(ref val)).transform).GetComponent<GrabbableObject>();
if ((Object)(object)component == (Object)null)
{
return;
}
if (!IsValidForItem(component.itemProperties?.itemName))
{
HUDManager.Instance.DisplayTip("Impossible action", "This addon cannot be assigned to this item", false, false, "LC_Tip1");
return;
}
AddonComponent component2 = ((Component)component).GetComponent<AddonComponent>();
if ((Object)(object)component2 != (Object)null && component2.hasAddon)
{
HUDManager.Instance.DisplayTip("Impossible action", "This item already has an addon", false, false, "LC_Tip1");
}
else
{
SetAddonServerRpc(NetworkObjectReference.op_Implicit(((Component)component).GetComponent<NetworkObject>()));
}
}
public bool IsValidForItem(string itemName)
{
bool flag = !string.IsNullOrEmpty(itemName);
bool flag2 = flag;
if (flag2)
{
flag2 = TargetType switch
{
AddonTargetDatabase.AddonTargetType.ALL => true,
AddonTargetDatabase.AddonTargetType.FLASHLIGHT => AddonTargetDatabase.flashlightNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.KNIFE => AddonTargetDatabase.knifeNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.SHOVEL => AddonTargetDatabase.shovelNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.SPRAY_PAINT => AddonTargetDatabase.sprayPaintNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.WALKIE_TALKIE => AddonTargetDatabase.walkieTalkieNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.BOOMBOX => AddonTargetDatabase.boomboxNames.Contains(itemName),
AddonTargetDatabase.AddonTargetType.SHOTGUN => AddonTargetDatabase.shotgunNames.Contains(itemName),
_ => false,
};
}
return flag2;
}
[ServerRpc(RequireOwnership = false)]
private void SetAddonServerRpc(NetworkObjectReference obj)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost))
{
ServerRpcParams val = default(ServerRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(809120191u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
((NetworkBehaviour)this).__endSendServerRpc(ref val2, 809120191u, val, (RpcDelivery)0);
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost))
{
SetAddonClientRpc(obj);
}
}
}
[ClientRpc]
private void SetAddonClientRpc(NetworkObjectReference obj)
{
//IL_0024: Unknown result type (might be due to invalid IL or missing references)
//IL_002e: Invalid comparison between Unknown and I4
//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
//IL_00b1: Invalid comparison between Unknown and I4
//IL_005f: Unknown result type (might be due to invalid IL or missing references)
//IL_0068: Unknown result type (might be due to invalid IL or missing references)
//IL_006d: Unknown result type (might be due to invalid IL or missing references)
//IL_007d: Unknown result type (might be due to invalid IL or missing references)
//IL_0083: Unknown result type (might be due to invalid IL or missing references)
//IL_0097: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager;
if (networkManager == null || !networkManager.IsListening)
{
return;
}
if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 2 && (networkManager.IsServer || networkManager.IsHost))
{
ClientRpcParams val = default(ClientRpcParams);
FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4040658861u, val, (RpcDelivery)0);
((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(ref obj, default(ForNetworkSerializable));
((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4040658861u, val, (RpcDelivery)0);
}
NetworkObject val3 = default(NetworkObject);
if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 2 && (networkManager.IsClient || networkManager.IsHost) && ((NetworkObjectReference)(ref obj)).TryGet(ref val3, (NetworkManager)null))
{
GrabbableObject componentInChildren = ((Component)val3).gameObject.GetComponentInChildren<GrabbableObject>();
if (!((Object)(object)componentInChildren == (Object)null))
{
LFCUtilities.SetAddonComponent<T>(componentInChildren, ((GrabbableObject)this).itemProperties.itemName);
((GrabbableObject)this).DestroyObjectInHand(((GrabbableObject)this).playerHeldBy);
}
}
}
protected override void __initializeVariables()
{
((PhysicsProp)this).__initializeVariables();
}
[RuntimeInitializeOnLoadMethod]
internal static void InitializeRPCS_AddonProp`1()
{
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_001b: Expected O, but got Unknown
//IL_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0036: Expected O, but got Unknown
NetworkManager.__rpc_func_table.Add(809120191u, new RpcReceiveHandler(AddonProp<>.__rpc_handler_809120191));
NetworkManager.__rpc_func_table.Add(4040658861u, new RpcReceiveHandler(AddonProp<>.__rpc_handler_4040658861));
}
private static void __rpc_handler_809120191(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
NetworkObjectReference addonServerRpc = default(NetworkObjectReference);
((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref addonServerRpc, default(ForNetworkSerializable));
target.__rpc_exec_stage = (__RpcExecStage)1;
((AddonProp<>)(object)target).SetAddonServerRpc(addonServerRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
private static void __rpc_handler_4040658861(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams)
{
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
//IL_0044: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Unknown result type (might be due to invalid IL or missing references)
//IL_005e: Unknown result type (might be due to invalid IL or missing references)
NetworkManager networkManager = target.NetworkManager;
if (networkManager != null && networkManager.IsListening)
{
NetworkObjectReference addonClientRpc = default(NetworkObjectReference);
((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref addonClientRpc, default(ForNetworkSerializable));
target.__rpc_exec_stage = (__RpcExecStage)2;
((AddonProp<>)(object)target).SetAddonClientRpc(addonClientRpc);
target.__rpc_exec_stage = (__RpcExecStage)0;
}
}
[MethodImpl(MethodImplOptions.NoInlining)]
protected internal override string __getTypeName()
{
return "AddonProp`1";
}
}
public static class AddonTargetDatabase
{
public enum AddonTargetType
{
ALL,
FLASHLIGHT,
KNIFE,
SHOVEL,
SPRAY_PAINT,
WALKIE_TALKIE,
BOOMBOX,
SHOTGUN
}
public static readonly List<string> flashlightNames = new List<string>(2) { "Pro-flashlight", "Flashlight" };
public static readonly List<string> knifeNames = new List<string>(2) { "Kitchen Knife", "Poison Dagger" };
public static readonly List<string> shovelNames = new List<string>(1) { "Shovel" };
public static readonly List<string> sprayPaintNames = new List<string>(1) { "Spray Paint" };
public static readonly List<string> walkieTalkieNames = new List<string>(1) { "Walkie-Talkie" };
public static readonly List<string> boomboxNames = new List<string>(1) { "Boombox" };
public static readonly List<string> shotgunNames = new List<string>(1) { "Shotgun" };
}
}
namespace System.Runtime.CompilerServices
{
[AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)]
internal sealed class IgnoresAccessChecksToAttribute : Attribute
{
public IgnoresAccessChecksToAttribute(string assemblyName)
{
}
}
}
internal sealed class <>z__ReadOnlyArray<T> : IEnumerable, ICollection, IList, IEnumerable<T>, IReadOnlyCollection<T>, IReadOnlyList<T>, ICollection<T>, IList<T>
{
int ICollection.Count => _items.Length;
bool ICollection.IsSynchronized => false;
object ICollection.SyncRoot => this;
object IList.this[int index]
{
get
{
return _items[index];
}
set
{
throw new NotSupportedException();
}
}
bool IList.IsFixedSize => true;
bool IList.IsReadOnly => true;
int IReadOnlyCollection<T>.Count => _items.Length;
T IReadOnlyList<T>.this[int index] => _items[index];
int ICollection<T>.Count => _items.Length;
bool ICollection<T>.IsReadOnly => true;
T IList<T>.this[int index]
{
get
{
return _items[index];
}
set
{
throw new NotSupportedException();
}
}
public <>z__ReadOnlyArray(T[] items)
{
_items = items;
}
IEnumerator IEnumerable.GetEnumerator()
{
return ((IEnumerable)_items).GetEnumerator();
}
void ICollection.CopyTo(Array array, int index)
{
((ICollection)_items).CopyTo(array, index);
}
int IList.Add(object value)
{
throw new NotSupportedException();
}
void IList.Clear()
{
throw new NotSupportedException();
}
bool IList.Contains(object value)
{
return ((IList)_items).Contains(value);
}
int IList.IndexOf(object value)
{
return ((IList)_items).IndexOf(value);
}
void IList.Insert(int index, object value)
{
throw new NotSupportedException();
}
void IList.Remove(object value)
{
throw new NotSupportedException();
}
void IList.RemoveAt(int index)
{
throw new NotSupportedException();
}
IEnumerator<T> IEnumerable<T>.GetEnumerator()
{
return ((IEnumerable<T>)_items).GetEnumerator();
}
void ICollection<T>.Add(T item)
{
throw new NotSupportedException();
}
void ICollection<T>.Clear()
{
throw new NotSupportedException();
}
bool ICollection<T>.Contains(T item)
{
return ((ICollection<T>)_items).Contains(item);
}
void ICollection<T>.CopyTo(T[] array, int arrayIndex)
{
((ICollection<T>)_items).CopyTo(array, arrayIndex);
}
bool ICollection<T>.Remove(T item)
{
throw new NotSupportedException();
}
int IList<T>.IndexOf(T item)
{
return ((IList<T>)_items).IndexOf(item);
}
void IList<T>.Insert(int index, T item)
{
throw new NotSupportedException();
}
void IList<T>.RemoveAt(int index)
{
throw new NotSupportedException();
}
}
namespace LegaFusionCore.NetcodePatcher
{
[AttributeUsage(AttributeTargets.Module)]
internal class NetcodePatchedAssemblyAttribute : Attribute
{
}
}