using System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.IO; 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 BlueGentle.Configuration; using GameNetcodeStuff; using Gearmasteri.BlueGentle.NetcodePatcher; using LethalLib.Modules; using Microsoft.CodeAnalysis; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; [assembly: UnityAPICompatibilityVersion("2022.3.62f3", new string[] { "UnityEngine.CoreModule:6503E8CDF1A95D43A6F6700B950B862DBC66B629", "UnityEngine.AudioModule:3905046837BE277D45470E574F6622F7444FD262", "UnityEngine.PhysicsModule:ACC9726B217ADE09A40ECC5F0B4EB3C651F0E4D3", "UnityEngine.AssetBundleModule:E497ADE001168DE11E2FB800C276D6B79B2EFF52", "UnityEngine.AIModule:692A2553AC914AE4629136FB0596BB498B769FA0", "UnityEngine.AnimationModule:43D6DE488041A9F7350F23F6B69650AA49410D0B" })] [assembly: AssemblyTitle("Gearmasteri.BlueGentle")] [assembly: AssemblyProduct("BlueGentle")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyCompany("Gearmasteri.BlueGentle")] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: CompilationRelaxations(8)] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: NetcodePatchedAssembly] [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; } } [AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)] [Embedded] [CompilerGenerated] internal sealed class NullableContextAttribute : Attribute { public readonly byte Flag; public NullableContextAttribute(byte P_0) { Flag = P_0; } } [Embedded] [CompilerGenerated] [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 BlueGentle { internal class AutoBoombox : MonoBehaviour { private void Start() { ((MonoBehaviour)this).StartCoroutine(Play()); } private IEnumerator Play() { BoomboxItem bm = ((Component)this).GetComponent(); yield return (object)new WaitForSeconds(3f); bm.isPlayingMusic = true; } } internal class BlueGentleAI : EnemyAI, INoiseListener { private enum State { SearchingForPlayer, Looking, ChasingPlayer } public Transform turnCompass = null; public Transform Head = null; public Vector3 RandLook1; public Vector3 RandLook2; public Transform Looker = null; public AudioSource AlarmSFX = null; public GameObject Laser = null; public GameObject Bomb = null; public Transform firepoint = null; public AudioClip MeleeSFX = null; public AudioClip DONTGOHOUSE = null; public static BlueGentleAI AlarmPlayer; private float timeSinceHittingLocalPlayer; private float lookTimer; private float RandLookInterval = 4f; private float RandLookTimer; private float WaitCD; private float LaserRate = 0.25f; private float shootTimer; private float BurstRate = 3f; private float burstTimer; private int burstShots = 5; private int burstShotsMax = 5; private float SprintTimer = 2.5f; private float IgnoreRange = 100f; private bool Sprinting = false; private List IgnorePoints = new List(); private Vector3 LastTargetPos; private Vector3 TargetVelocity; private NetworkVariable LookerPos = new NetworkVariable(default(Vector3), (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)0); private const float HeadLookLerpSpeed = 1f; [Conditional("DEBUG")] private void LogIfDebugBuild(string text) { Plugin.Logger.LogInfo((object)text); } public override void Start() { //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).Start(); timeSinceHittingLocalPlayer = 0f; base.currentBehaviourStateIndex = 0; ((EnemyAI)this).StartSearch(((Component)this).transform.position, (AISearchRoutine)null); AlarmSFX.Play(); AlarmSFX.Stop(); EntranceTeleport[] array = Object.FindObjectsOfType(); foreach (EntranceTeleport val in array) { IgnorePoints.Add(((Component)val).transform.position); } IgnorePoints.Add(Vector3.zero); } public override void Update() { //IL_013c: Unknown result type (might be due to invalid IL or missing references) //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_00fa: Unknown result type (might be due to invalid IL or missing references) //IL_023e: Unknown result type (might be due to invalid IL or missing references) //IL_0243: Unknown result type (might be due to invalid IL or missing references) //IL_015f: Unknown result type (might be due to invalid IL or missing references) //IL_01cb: Unknown result type (might be due to invalid IL or missing references) //IL_01dc: Unknown result type (might be due to invalid IL or missing references) //IL_01f1: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).Update(); HandleLooking(); if (WaitCD > 0f) { WaitCD -= Time.deltaTime; } timeSinceHittingLocalPlayer += Time.deltaTime; if (base.agent.speed > 1f) { NavMeshAgent agent = base.agent; agent.speed -= Time.deltaTime * 75f; } if (base.agent.speed < 0f) { base.agent.speed = 0f; } int currentBehaviourStateIndex = base.currentBehaviourStateIndex; if ((Object)(object)base.targetPlayer != (Object)null && currentBehaviourStateIndex == 2) { PredictPlayer(); base.creatureAnimator.SetBool("Looking", false); if ((Object)(object)AlarmPlayer == (Object)null) { AlarmPlayer = this; PlayAlarmClientRpc(new NetworkObjectReference(((NetworkBehaviour)this).NetworkObject), Value: true); } if (((NetworkBehaviour)this).IsServer) { HandleShooting(); } } if (currentBehaviourStateIndex == 0) { base.creatureAnimator.SetBool("Looking", false); LastTargetPos = Vector3.zero; if ((Object)(object)AlarmPlayer == (Object)(object)this) { PlayAlarmClientRpc(new NetworkObjectReference(((NetworkBehaviour)this).NetworkObject), Value: false); AlarmPlayer = null; } RandLookInterval = 4f; if (base.agent.remainingDistance <= 5f && !base.agent.pathPending && (Object)(object)base.currentSearch.currentTargetNode != (Object)null) { base.agent.Warp(base.agent.destination); if (Vector3.Distance(((Component)this).transform.position, base.currentSearch.currentTargetNode.transform.position) < 2f) { lookTimer = 2.5f; ((EnemyAI)this).SwitchToBehaviourClientRpc(1); } } } if (currentBehaviourStateIndex == 1) { base.creatureAnimator.SetBool("Looking", true); LastTargetPos = Vector3.zero; lookTimer -= Time.deltaTime; RandLookInterval = 1f; if (lookTimer <= 0f) { ((EnemyAI)this).SwitchToBehaviourClientRpc(0); } } } public void ShootLaser() { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0066: Unknown result type (might be due to invalid IL or missing references) //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Unknown result type (might be due to invalid IL or missing references) Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(Random.Range(-1f, 1f), Random.Range(-1f, 1f), Random.Range(-1f, 1f)); Vector3 val2 = firepoint.forward + val / 10f; Vector3 normalized = ((Vector3)(ref val2)).normalized; GameObject val3 = Object.Instantiate(Laser, firepoint.position, Quaternion.LookRotation(normalized)); NetworkObject component = val3.GetComponent(); component.Spawn(false); val3.GetComponent().Init(normalized); } public bool ShootBomb(Vector3 Target, float MaxVel) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002c: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0057: Unknown result type (might be due to invalid IL or missing references) //IL_0078: 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_007e: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) Vector3 val = Vector3.zero; float power = 0f; for (int i = 0; (float)i <= MaxVel; i++) { power = i; val = CalculateVelocity(firepoint.position, Target, i); if (val != Vector3.zero) { break; } } if (val == Vector3.zero) { return false; } GameObject val2 = Object.Instantiate(Bomb, firepoint.position, Quaternion.LookRotation(val)); NetworkObject component = val2.GetComponent(); component.Spawn(false); val2.GetComponent().Init(val, power); return true; } public void RandomLook() { //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) RandLookTimer = 0f; Vector3 val = default(Vector3); ((Vector3)(ref val))..ctor(Random.Range(RandLook1.x, RandLook2.x), Random.Range(RandLook1.y, RandLook2.y), Random.Range(RandLook1.z, RandLook2.z)); LookerPos.Value = ((Component)this).transform.position + val; } public override void DoAIInterval() { //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0106: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).DoAIInterval(); if (StartOfRound.Instance.allPlayersDead) { return; } switch (base.currentBehaviourStateIndex) { case 0: if (FoundClosestPlayerInRange(75f, 75f)) { ((EnemyAI)this).StopSearch(base.currentSearch, true); ((EnemyAI)this).SwitchToBehaviourClientRpc(2); } break; case 1: if (FoundClosestPlayerInRange(150f, 150f)) { ((EnemyAI)this).SwitchToBehaviourClientRpc(2); } break; case 2: if (!TargetClosestPlayerInAnyCase() || Vector3.Distance(((Component)this).transform.position, ((Component)base.targetPlayer.gameplayCamera).transform.position) > 200f || !PointAvailable(((Component)base.targetPlayer.gameplayCamera).transform.position)) { base.creatureSFX.PlayOneShot(DONTGOHOUSE); ((EnemyAI)this).StartSearch(((Component)this).transform.position, (AISearchRoutine)null); ((EnemyAI)this).SwitchToBehaviourClientRpc(0); } else { ((EnemyAI)this).SetDestinationToPosition(((Component)base.targetPlayer.gameplayCamera).transform.position, false); } break; } } private bool FoundClosestPlayerInRange(float range, float senseRange) { //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0064: 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) ((EnemyAI)this).TargetClosestPlayer(1.5f, true, 70f, false, false, true); if ((Object)(object)base.targetPlayer == (Object)null) { ((EnemyAI)this).TargetClosestPlayer(1.5f, false, 70f, false, false, true); range = senseRange; } return (Object)(object)base.targetPlayer != (Object)null && Vector3.Distance(((Component)this).transform.position, ((Component)base.targetPlayer).transform.position) < range && PointAvailable(((Component)base.targetPlayer).transform.position); } private bool TargetClosestPlayerInAnyCase() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) base.mostOptimalDistance = 2000f; base.targetPlayer = null; for (int i = 0; i < StartOfRound.Instance.connectedPlayersAmount + 1; i++) { float num = Vector3.Distance(((Component)this).transform.position, ((Component)StartOfRound.Instance.allPlayerScripts[i]).transform.position); if (num < base.mostOptimalDistance) { base.mostOptimalDistance = num; base.targetPlayer = StartOfRound.Instance.allPlayerScripts[i]; } } return (Object)(object)base.targetPlayer != (Object)null; } public override void OnCollideWithPlayer(Collider other) { //IL_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: 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) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) if (!(timeSinceHittingLocalPlayer < 1f)) { PlayerControllerB val = ((EnemyAI)this).MeetsStandardPlayerCollisionConditions(other, false, false); if ((Object)(object)val != (Object)null) { timeSinceHittingLocalPlayer = 0f; Vector3 val2 = ((Component)this).transform.forward * 50f + Vector3.up * 10f; val.DamagePlayer(25, true, true, (CauseOfDeath)8, 0, false, val2); val.externalForceAutoFade += val2; base.creatureSFX.PlayOneShot(MeleeSFX); } } } private void HandleLooking() { //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) ((Component)Looker).transform.position = Vector3.Lerp(((Component)Looker).transform.position, LookerPos.Value, Time.deltaTime * 10f); Head.LookAt(Looker.position); if (RandLookTimer < RandLookInterval) { RandLookTimer += Time.deltaTime; } else { RandomLook(); } } private Vector3 Predict(float Speed) { //IL_0011: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0028: Unknown result type (might be due to invalid IL or missing references) //IL_0033: 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_003b: Unknown result type (might be due to invalid IL or missing references) //IL_0040: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_0047: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) Vector3 position = ((Component)base.targetPlayer.gameplayCamera).transform.position; Vector3 val = position - firepoint.position; float num = ((Vector3)(ref val)).magnitude / Speed; return position + TargetVelocity * num; } private void PredictPlayer() { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0039: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_00ba: Unknown result type (might be due to invalid IL or missing references) //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: Unknown result type (might be due to invalid IL or missing references) //IL_00f0: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_0090: Unknown result type (might be due to invalid IL or missing references) //IL_0095: Unknown result type (might be due to invalid IL or missing references) //IL_009c: Unknown result type (might be due to invalid IL or missing references) if (LastTargetPos == Vector3.zero) { LastTargetPos = ((Component)base.targetPlayer).transform.position; } TargetVelocity = (((Component)base.targetPlayer).transform.position - LastTargetPos) / Time.deltaTime; LastTargetPos = ((Component)base.targetPlayer).transform.position; if ((Object)(object)Looker != (Object)null && ((NetworkBehaviour)this).IsServer) { Vector3 value = Predict(250f); LookerPos.Value = value; } turnCompass.LookAt(((Component)base.targetPlayer.gameplayCamera).transform.position); ((Component)this).transform.rotation = Quaternion.Lerp(((Component)this).transform.rotation, Quaternion.Euler(0f, turnCompass.eulerAngles.y, 0f), 4f * Time.deltaTime); } private void HandleShooting() { //IL_01d1: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) shootTimer += Time.deltaTime; burstTimer += Time.deltaTime; if (burstTimer >= BurstRate) { if (burstShots <= 0) { burstShots = burstShotsMax; burstTimer = 0f; } else if (shootTimer >= LaserRate && (Object)(object)base.targetPlayer != (Object)null) { ShootLaser(); shootTimer = 0f; burstShots--; } } SprintTimer -= Time.deltaTime; if (!((Object)(object)base.targetPlayer != (Object)null)) { return; } if (base.targetPlayer.inVehicleAnimation) { if (!(SprintTimer <= 0f)) { return; } if (Sprinting) { Sprinting = false; SprintTimer = 3f; if (!ShootBomb(Predict(33f), 100f)) { Sprinting = true; base.creatureAnimator.SetBool("Stopped", false); SprintTimer = 5f; } } else { Sprinting = true; SprintTimer = 5f; } } else { if (!(SprintTimer <= 0f)) { return; } if (Sprinting) { Sprinting = false; base.creatureAnimator.SetBool("Stopped", true); SprintTimer = 3f; if (!ShootBomb(Predict(33f), 100f)) { Sprinting = true; base.creatureAnimator.SetBool("Stopped", false); SprintTimer = 5f; } } else { Sprinting = true; base.creatureAnimator.SetBool("Stopped", false); SprintTimer = 5f; } } } private Vector3 CalculateVelocity(Vector3 origin, Vector3 target, float speed) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000b: Unknown result type (might be due to invalid IL or missing references) //IL_0016: Unknown result type (might be due to invalid IL or missing references) //IL_0021: Unknown result type (might be due to invalid IL or missing references) //IL_0030: 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_009d: Unknown result type (might be due to invalid IL or missing references) //IL_00a9: Unknown result type (might be due to invalid IL or missing references) //IL_00ae: Unknown result type (might be due to invalid IL or missing references) //IL_00c0: Unknown result type (might be due to invalid IL or missing references) //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_00c6: Unknown result type (might be due to invalid IL or missing references) Vector3 val = target - origin; Vector3 val2 = default(Vector3); ((Vector3)(ref val2))..ctor(val.x, 0f, val.z); float y = val.y; float magnitude = ((Vector3)(ref val2)).magnitude; float num = Mathf.Abs(Physics.gravity.y); float num2 = speed * speed; float num3 = num2 * num2; float num4 = num3 - num * (num * magnitude * magnitude + 2f * y * num2); if (num4 < 0f) { return Vector3.zero; } float num5 = Mathf.Atan((num2 + Mathf.Sqrt(num4)) / (num * magnitude)); Vector3 result = ((Vector3)(ref val2)).normalized * speed * Mathf.Cos(num5); result.y = speed * Mathf.Sin(num5); return result; } public bool PointAvailable(Vector3 point) { //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001a: Unknown result type (might be due to invalid IL or missing references) foreach (Vector3 ignorePoint in IgnorePoints) { if (Vector3.Distance(point, ignorePoint) < IgnoreRange) { return false; } } return true; } [ClientRpc] public void PlayAlarmClientRpc(NetworkObjectReference Gentle, bool Value) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00c2: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: 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_0098: Unknown result type (might be due to invalid IL or missing references) //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00b2: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val2 = default(ClientRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(2455955201u, val2, (RpcDelivery)0); ((FastBufferWriter)(ref val)).WriteValueSafe(ref Gentle, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val)).WriteValueSafe(ref Value, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val, 2455955201u, val2, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; NetworkObject val3 = default(NetworkObject); if (((NetworkObjectReference)(ref Gentle)).TryGet(ref val3, (NetworkManager)null)) { BlueGentleAI component = ((Component)val3).GetComponent(); if (Value) { component.AlarmSFX.Play(); AlarmPlayer = component; } else { component.AlarmSFX.Stop(); AlarmPlayer = null; } } } protected override void __initializeVariables() { if (LookerPos == null) { throw new Exception("BlueGentleAI.LookerPos cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)LookerPos).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)LookerPos, "LookerPos"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)LookerPos); ((EnemyAI)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2455955201u, new RpcReceiveHandler(__rpc_handler_2455955201), "PlayAlarmClientRpc"); ((EnemyAI)this).__initializeRpcs(); } private static void __rpc_handler_2455955201(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_004a: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_006a: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkObjectReference gentle = default(NetworkObjectReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref gentle, default(ForNetworkSerializable)); bool value = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref value, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((BlueGentleAI)(object)target).PlayAlarmClientRpc(gentle, value); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "BlueGentleAI"; } } internal class BlueGentleAnimEvents : MonoBehaviour { public BlueGentleAI ai = null; public AudioClip stepSFX = null; public AudioClip turnSFXA = null; public AudioClip turnSFXB = null; public void StepSFX() { ((EnemyAI)ai).creatureSFX.PlayOneShot(stepSFX); } public void Step() { ((EnemyAI)ai).agent.speed = 25f; } public void TurnA() { ((EnemyAI)ai).creatureSFX.PlayOneShot(turnSFXA); } public void TurnB() { ((EnemyAI)ai).creatureSFX.PlayOneShot(turnSFXB); } } internal class FreeCruiser : MonoBehaviour { public Transform CarPoint = null; public GameObject CarPref = null; private void Update() { VehicleController val = Object.FindObjectOfType(); if ((Object)(object)val != (Object)null && ((Behaviour)val).enabled) { ((Component)this).gameObject.SetActive(false); } } public void Spawn() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) NetworkObject component = Object.Instantiate(CarPref, CarPoint.position, CarPoint.rotation).GetComponent(); component.Spawn(false); ((Component)component).GetComponent().hasBeenSpawned = true; } } internal class GentleBomb : NetworkBehaviour { public GameObject explosionPrefab = null; public AudioSource audioSource = null; private float lifeTime = 30f; private bool Armed = false; private float ArmTimer = 0.5f; public void Init(Vector3 dir, float power) { //IL_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_004d: Unknown result type (might be due to invalid IL or missing references) ((Component)this).GetComponent().velocity = ((Vector3)(ref dir)).normalized * power; ((Component)this).GetComponent().angularVelocity = new Vector3(Random.Range(-5f, 5f), Random.Range(-5f, 5f), Random.Range(-5f, 5f)); } private void Start() { audioSource.PlayOneShot(audioSource.clip); } public override void OnNetworkSpawn() { if (((NetworkBehaviour)this).IsServer) { ((MonoBehaviour)this).Invoke("DestroySelf", lifeTime); } } private void Update() { if (((NetworkBehaviour)this).IsServer && !Armed) { ArmTimer -= Time.deltaTime; if (ArmTimer <= 0f) { Armed = true; } } } private void OnCollisionEnter(Collision collision) { //IL_0026: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) if (Armed && ((NetworkBehaviour)this).IsServer) { OnHit(((Component)this).transform.position, Vector3.up); } } private void OnHit(Vector3 pos, Vector3 normal) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) SpawnExplosionClientRpc(pos, normal); DestroySelf(); } [ClientRpc] private void SpawnExplosionClientRpc(Vector3 pos, Vector3 normal) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val2 = default(ClientRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(705956110u, val2, (RpcDelivery)0); ((FastBufferWriter)(ref val)).WriteValueSafe(ref pos); ((FastBufferWriter)(ref val)).WriteValueSafe(ref normal); ((NetworkBehaviour)this).__endSendClientRpc(ref val, 705956110u, val2, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; Object.Instantiate(explosionPrefab, pos, ((Component)this).transform.rotation); } } } private void DestroySelf() { if ((Object)(object)((NetworkBehaviour)this).NetworkObject != (Object)null && ((NetworkBehaviour)this).NetworkObject.IsSpawned) { ((NetworkBehaviour)this).NetworkObject.Despawn(true); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(705956110u, new RpcReceiveHandler(__rpc_handler_705956110), "SpawnExplosionClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_705956110(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 pos = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref pos); Vector3 normal = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref normal); target.__rpc_exec_stage = (__RpcExecStage)1; ((GentleBomb)(object)target).SpawnExplosionClientRpc(pos, normal); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "GentleBomb"; } } internal class GentleLaser : NetworkBehaviour { public GameObject explosionPrefab = null; public AudioSource audioSource = null; public LayerMask collisionMask; private Vector3 direction; private float lifeTime = 5f; private float speed = 250f; public void Init(Vector3 dir) { //IL_0004: Unknown result type (might be due to invalid IL or missing references) //IL_0009: Unknown result type (might be due to invalid IL or missing references) direction = ((Vector3)(ref dir)).normalized; } private void Start() { audioSource.PlayOneShot(audioSource.clip); } public override void OnNetworkSpawn() { if (((NetworkBehaviour)this).IsServer) { ((MonoBehaviour)this).Invoke("DestroySelf", lifeTime); } } private void Update() { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0032: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_006a: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0075: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_0050: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)this).IsServer) { float num = speed * Time.deltaTime; RaycastHit val = default(RaycastHit); if (Physics.Raycast(((Component)this).transform.position, direction, ref val, num, LayerMask.op_Implicit(collisionMask))) { OnHit(((RaycastHit)(ref val)).point, ((RaycastHit)(ref val)).normal); return; } Transform transform = ((Component)this).transform; transform.position += direction * num; } } private void OnHit(Vector3 pos, Vector3 normal) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0003: Unknown result type (might be due to invalid IL or missing references) SpawnExplosionClientRpc(pos, normal); DestroySelf(); } [ClientRpc] private void SpawnExplosionClientRpc(Vector3 pos, Vector3 normal) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00a6: Unknown result type (might be due to invalid IL or missing references) //IL_00b0: 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_0096: Unknown result type (might be due to invalid IL or missing references) //IL_00db: 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) //IL_00ee: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager != null && networkManager.IsListening) { if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val2 = default(ClientRpcParams); FastBufferWriter val = ((NetworkBehaviour)this).__beginSendClientRpc(1770224960u, val2, (RpcDelivery)0); ((FastBufferWriter)(ref val)).WriteValueSafe(ref pos); ((FastBufferWriter)(ref val)).WriteValueSafe(ref normal); ((NetworkBehaviour)this).__endSendClientRpc(ref val, 1770224960u, val2, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; Object.Instantiate(explosionPrefab, pos, ((Component)this).transform.rotation); } } } private void DestroySelf() { if ((Object)(object)((NetworkBehaviour)this).NetworkObject != (Object)null && ((NetworkBehaviour)this).NetworkObject.IsSpawned) { ((NetworkBehaviour)this).NetworkObject.Despawn(true); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(1770224960u, new RpcReceiveHandler(__rpc_handler_1770224960), "SpawnExplosionClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_1770224960(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0043: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0052: Unknown result type (might be due to invalid IL or missing references) //IL_0061: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { Vector3 pos = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref pos); Vector3 normal = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref normal); target.__rpc_exec_stage = (__RpcExecStage)1; ((GentleLaser)(object)target).SpawnExplosionClientRpc(pos, normal); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "GentleLaser"; } } internal class GentleLaserExplosion : NetworkBehaviour { public AudioSource audioSource = null; public float radius = 6f; public float power = 200f; public int Damage = 10; public ScreenShakeType shakeType = (ScreenShakeType)0; private void Start() { //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_01c8: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_01fa: Unknown result type (might be due to invalid IL or missing references) //IL_00be: Unknown result type (might be due to invalid IL or missing references) //IL_00c9: Unknown result type (might be due to invalid IL or missing references) //IL_00ce: Unknown result type (might be due to invalid IL or missing references) //IL_00d3: Unknown result type (might be due to invalid IL or missing references) //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00f5: Unknown result type (might be due to invalid IL or missing references) //IL_0100: Unknown result type (might be due to invalid IL or missing references) //IL_010a: Unknown result type (might be due to invalid IL or missing references) //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_011e: Unknown result type (might be due to invalid IL or missing references) //IL_012d: Unknown result type (might be due to invalid IL or missing references) //IL_0138: Unknown result type (might be due to invalid IL or missing references) //IL_014b: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Unknown result type (might be due to invalid IL or missing references) //IL_0157: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) //IL_0167: Unknown result type (might be due to invalid IL or missing references) //IL_016c: Unknown result type (might be due to invalid IL or missing references) //IL_0171: Unknown result type (might be due to invalid IL or missing references) //IL_017e: Unknown result type (might be due to invalid IL or missing references) //IL_018f: Unknown result type (might be due to invalid IL or missing references) //IL_0194: Unknown result type (might be due to invalid IL or missing references) //IL_0199: Unknown result type (might be due to invalid IL or missing references) //IL_019e: Unknown result type (might be due to invalid IL or missing references) //IL_01a0: Unknown result type (might be due to invalid IL or missing references) //IL_01a5: Unknown result type (might be due to invalid IL or missing references) audioSource.PlayOneShot(audioSource.clip); Collider[] array = Physics.OverlapSphere(((Component)this).transform.position, radius); Collider[] array2 = array; foreach (Collider val in array2) { if ((Object)(object)((Component)val).gameObject.GetComponent() != (Object)null) { ((Component)val).gameObject.GetComponent().AddExplosionForce(power, ((Component)this).transform.position, radius, 1.5f, (ForceMode)1); } if ((Object)(object)((Component)val).gameObject.GetComponent() != (Object)null) { PlayerControllerB component = ((Component)val).gameObject.GetComponent(); Vector3 val2 = Vector3.Normalize(((Component)component.gameplayCamera).transform.position - ((Component)this).transform.position) * (power / 2f) / Vector3.Distance(((Component)component.gameplayCamera).transform.position, ((Component)this).transform.position); component.DamagePlayer(Damage, false, true, (CauseOfDeath)3, 0, false, val2); float num = Vector3.Distance(((Component)component).transform.position, ((Component)this).transform.position); Vector3 val3 = Vector3.Normalize(((Component)component).transform.position + Vector3.up * num - ((Component)this).transform.position) / (num * 0.35f) * (power / 4f); component.externalForceAutoFade += val3; } } float num2 = Vector3.Distance(((Component)GameNetworkManager.Instance.localPlayerController).transform.position, ((Component)this).transform.position); if (num2 < radius * 3f) { HUDManager.Instance.ShakeCamera(shakeType); } killSelf(); } private IEnumerator killSelf() { yield return (object)new WaitForSeconds(1f); if ((Object)(object)((NetworkBehaviour)this).NetworkObject != (Object)null && ((NetworkBehaviour)this).NetworkObject.IsSpawned) { ((NetworkBehaviour)this).NetworkObject.Despawn(true); } } protected override void __initializeVariables() { ((NetworkBehaviour)this).__initializeVariables(); } protected override void __initializeRpcs() { ((NetworkBehaviour)this).__initializeRpcs(); } protected internal override string __getTypeName() { return "GentleLaserExplosion"; } } internal class Lava : MonoBehaviour { private PlayerControllerB LocalPlayer = null; private float CD = 1f; private void Update() { //IL_0062: Unknown result type (might be due to invalid IL or missing references) //IL_0067: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00d8: Unknown result type (might be due to invalid IL or missing references) if ((Object)(object)LocalPlayer == (Object)null) { LocalPlayer = GameNetworkManager.Instance.localPlayerController; return; } if (CD > 0f) { CD -= Time.deltaTime; return; } Ray val = default(Ray); ((Ray)(ref val))..ctor(((Component)LocalPlayer.thisPlayerBody).transform.position + Vector3.up, -Vector3.up); RaycastHit val2 = default(RaycastHit); if (Physics.Raycast(val, ref val2, 6f, StartOfRound.Instance.walkableSurfacesMask, (QueryTriggerInteraction)1) && (Object)(object)((Component)((RaycastHit)(ref val2)).collider).gameObject == (Object)(object)((Component)this).gameObject) { LocalPlayer.DamagePlayer(10, true, true, (CauseOfDeath)13, 0, false, default(Vector3)); CD = 0.5f; } } } internal class NoMagnet : MonoBehaviour { private VehicleController car = null; private void Update() { if ((Object)(object)car == (Object)null) { car = ((Component)this).GetComponent(); } else { car.magnetedToShip = false; } } } [BepInPlugin("Gearmasteri.BlueGentle", "BlueGentle", "1.0.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class Plugin : BaseUnityPlugin { internal static ManualLogSource Logger; public static AssetBundle? ModAssets; internal static PluginConfig BoundConfig { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; BoundConfig = new PluginConfig(((BaseUnityPlugin)this).Config); InitializeNetworkBehaviours(); string path = "modassets"; ModAssets = AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(((BaseUnityPlugin)this).Info.Location), path)); if ((Object)(object)ModAssets == (Object)null) { Logger.LogError((object)"Failed to load custom assets."); return; } EnemyType val = ModAssets.LoadAsset("BlueGentleObj"); TerminalNode val2 = ModAssets.LoadAsset("BlueGentleTN"); TerminalKeyword val3 = ModAssets.LoadAsset("BlueGentleTK"); NetworkPrefabs.RegisterNetworkPrefab(val.enemyPrefab); NetworkPrefabs.RegisterNetworkPrefab(ModAssets.LoadAsset("Laser")); NetworkPrefabs.RegisterNetworkPrefab(ModAssets.LoadAsset("GentleBomb")); NetworkPrefabs.RegisterNetworkPrefab(ModAssets.LoadAsset("GarnCruiser")); Enemies.RegisterEnemy(val, BoundConfig.SpawnWeight.Value, (LevelTypes)(-1), val2, val3); Logger.LogInfo((object)"Plugin Gearmasteri.BlueGentle is loaded!"); } private static void InitializeNetworkBehaviours() { 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.Invoke(null, null); } } } } } public static class PluginInfo { public const string PLUGIN_GUID = "Gearmasteri.BlueGentle"; public const string PLUGIN_NAME = "BlueGentle"; public const string PLUGIN_VERSION = "1.0.0"; } } namespace BlueGentle.Configuration { public class PluginConfig { public ConfigEntry SpawnWeight; public PluginConfig(ConfigFile cfg) { SpawnWeight = cfg.Bind("General", "Spawn weight", 20, "The spawn chance weight for BlueGentle, relative to other existing enemies.\nGoes up from 0, lower is more rare, 100 and up is very common."); ClearUnusedEntries(cfg); } private void ClearUnusedEntries(ConfigFile cfg) { PropertyInfo property = ((object)cfg).GetType().GetProperty("OrphanedEntries", BindingFlags.Instance | BindingFlags.NonPublic); Dictionary dictionary = (Dictionary)property.GetValue(cfg, null); dictionary.Clear(); cfg.Save(); } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy(); NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedIEquatable(); } } } namespace Gearmasteri.BlueGentle.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }