using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; using System.Linq; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using BepInEx; using BepInEx.Bootstrap; using BepInEx.Configuration; using BepInEx.Logging; using GameNetcodeStuff; using HarmonyLib; using LethalLevelLoader; using Microsoft.CodeAnalysis; using Newtonsoft.Json; using SCPCBDunGen.NetcodePatcher; using SCPCBDunGen.Patches; using Unity.Netcode; using UnityEngine; using UnityEngine.AI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("SCPCBDunGen")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("4.5.0.0")] [assembly: AssemblyInformationalVersion("4.5.0+ed29ccdcac4bb0f63ee8806ed9e8336784a79957")] [assembly: AssemblyProduct("SCPCBDunGen")] [assembly: AssemblyTitle("SCPCBDunGen")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("4.5.0.0")] [module: UnverifiableCode] [module: RefSafetyRules(11)] [module: NetcodePatchedAssembly] 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 SCPCBDunGen { public class SCP914Converter : NetworkBehaviour { public enum SCP914Setting { ROUGH, COARSE, ONETOONE, FINE, VERYFINE } [CompilerGenerated] private sealed class <>c__DisplayClass47_0 { public float fStartTime; public NetworkObjectReference netObjRefMasked; public NetworkObject netObjMasked; public NetworkBehaviourReference netBehaviourRefPlayer; public NetworkBehaviour netBehaviourPlayer; public PlayerControllerB playerController; internal bool b__0() { if (!(Time.realtimeSinceStartup - fStartTime > 20f)) { return ((NetworkObjectReference)(ref netObjRefMasked)).TryGet(ref netObjMasked, (NetworkManager)null); } return true; } internal bool b__1() { if (!(Time.realtimeSinceStartup - fStartTime > 20f)) { return ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref netBehaviourPlayer, (NetworkManager)null); } return true; } internal bool b__2() { if (!(Time.realtimeSinceStartup - fStartTime > 20f)) { return (Object)(object)playerController.deadBody != (Object)null; } return true; } } [CompilerGenerated] private sealed class d__38 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public SCP914Converter <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__38(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_003a: Unknown result type (might be due to invalid IL or missing references) //IL_0044: Expected O, but got Unknown //IL_0120: Unknown result type (might be due to invalid IL or missing references) //IL_0131: Unknown result type (might be due to invalid IL or missing references) //IL_0136: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_0289: Unknown result type (might be due to invalid IL or missing references) //IL_0293: Expected O, but got Unknown int num = <>1__state; SCP914Converter sCP914Converter = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; sCP914Converter.RefineAudioSrc.Play(); <>2__current = (object)new WaitForSeconds(7f); <>1__state = 1; return true; case 1: { <>1__state = -1; if ((Object)(object)sCP914Converter.roundManager == (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Getting round manager"); sCP914Converter.roundManager = Object.FindObjectOfType(); if ((Object)(object)sCP914Converter.roundManager == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to find round manager."); return false; } } if ((Object)(object)sCP914Converter.ScrapTransform == (Object)null) { GameObject obj = GameObject.FindGameObjectWithTag("MapPropsContainer"); sCP914Converter.ScrapTransform = ((obj != null) ? obj.transform : null); if ((Object)(object)sCP914Converter.ScrapTransform == (Object)null) { SCPCBDunGen.Logger.LogError((object)"SCPCB Failed to find props container."); return false; } } List list = new List(); List list2 = new List(); bool bChargeBattery = sCP914Converter.iCurrentState > 1; BoxCollider inputStore = sCP914Converter.InputStore; if ((Object)(object)inputStore == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get input store collider."); return false; } Collider[] array = Physics.OverlapBox(inputStore.center + ((Component)inputStore).gameObject.transform.position, inputStore.size / 2f); SCPCBDunGen.Logger.LogInfo((object)$"Contained item count: {array.Length}"); Collider[] array2 = array; foreach (Collider val in array2) { GameObject gameObject = ((Component)val).gameObject; SCPCBDunGen.Logger.LogInfo((object)("Converting " + ((Object)gameObject).name)); GrabbableObject component = gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Converting item."); sCP914Converter.ConvertItem(list, list2, component); continue; } PlayerControllerB component2 = gameObject.GetComponent(); if ((Object)(object)component2 != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Converting player."); sCP914Converter.ConvertPlayer(component2); continue; } EnemyAI componentInParent = gameObject.GetComponentInParent(); if ((Object)(object)componentInParent != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Converting enemy."); sCP914Converter.ConvertEnemy(list, list2, componentInParent); } else { SCPCBDunGen.Logger.LogWarning((object)("Unidentified object: " + ((Object)gameObject).name + ". Not converting.")); } } SCPCBDunGen.Logger.LogInfo((object)"Finished spawning scrap, syncing with clients"); sCP914Converter.SpawnItemsClientRpc(list.ToArray(), list2.ToArray(), bChargeBattery); <>2__current = (object)new WaitForSeconds(7f); <>1__state = 2; return true; } case 2: <>1__state = -1; sCP914Converter.RefineFinishClientRpc(); sCP914Converter.bActive = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [CompilerGenerated] private sealed class d__47 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public NetworkObjectReference netObjRefMasked; public NetworkBehaviourReference netBehaviourRefPlayer; private <>c__DisplayClass47_0 <>8__1; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__47(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>8__1 = null; <>1__state = -2; } private bool MoveNext() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: 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_004e: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0097: Expected O, but got Unknown //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Expected O, but got Unknown //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: Expected O, but got Unknown //IL_0118: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Expected O, but got Unknown switch (<>1__state) { default: return false; case 0: <>1__state = -1; <>8__1 = new <>c__DisplayClass47_0(); <>8__1.netObjRefMasked = netObjRefMasked; <>8__1.netBehaviourRefPlayer = netBehaviourRefPlayer; <>8__1.netObjMasked = null; <>8__1.netBehaviourPlayer = null; <>8__1.fStartTime = Time.realtimeSinceStartup; <>2__current = (object)new WaitUntil((Func)(() => Time.realtimeSinceStartup - <>8__1.fStartTime > 20f || ((NetworkObjectReference)(ref <>8__1.netObjRefMasked)).TryGet(ref <>8__1.netObjMasked, (NetworkManager)null))); <>1__state = 1; return true; case 1: <>1__state = -1; <>2__current = (object)new WaitUntil((Func)(() => Time.realtimeSinceStartup - <>8__1.fStartTime > 20f || ((NetworkBehaviourReference)(ref <>8__1.netBehaviourRefPlayer)).TryGet(ref <>8__1.netBehaviourPlayer, (NetworkManager)null))); <>1__state = 2; return true; case 2: <>1__state = -1; <>8__1.playerController = (PlayerControllerB)<>8__1.netBehaviourPlayer; if ((Object)(object)<>8__1.playerController.deadBody == (Object)null) { <>2__current = (object)new WaitUntil((Func)(() => Time.realtimeSinceStartup - <>8__1.fStartTime > 20f || (Object)(object)<>8__1.playerController.deadBody != (Object)null)); <>1__state = 3; return true; } break; case 3: <>1__state = -1; break; } if ((Object)(object)<>8__1.playerController.deadBody != (Object)null) { <>8__1.playerController.deadBody.DeactivateBody(false); if ((Object)(object)<>8__1.netObjMasked != (Object)null) { MaskedPlayerEnemy component = ((Component)<>8__1.netObjMasked).GetComponent(); component.mimickingPlayer = <>8__1.playerController; component.SetSuit(<>8__1.playerController.currentSuitID); ((EnemyAI)component).SetEnemyOutside(false); <>8__1.playerController.redirectToEnemy = (EnemyAI)(object)component; } } return false; } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public BoxCollider InputStore; public Collider colliderOutput; public InteractTrigger SettingKnobTrigger; public GameObject SettingKnobPivot; public AudioSource SettingKnobSoundSrc; public InteractTrigger ActivateTrigger; public AudioSource ActivateAudioSrc; public AudioSource RefineAudioSrc; public Animator DoorIn; public Animator DoorOut; private readonly (SCP914Setting, float)[] SCP914SettingRotations = new(SCP914Setting, float)[5] { (SCP914Setting.ROUGH, 90f), (SCP914Setting.COARSE, 45f), (SCP914Setting.ONETOONE, 0f), (SCP914Setting.FINE, -45f), (SCP914Setting.VERYFINE, -90f) }; private Dictionary>[] arItemMappings = new Dictionary>[5] { new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>() }; private Dictionary>[] arEnemyMappings = new Dictionary>[5] { new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>() }; private Dictionary>[] arItemEnemyMappings = new Dictionary>[5] { new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>() }; private Dictionary>[] arEnemyItemMappings = new Dictionary>[5] { new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>(), new Dictionary>() }; private int iCurrentState; private bool bActive; private Transform ScrapTransform; private RoundManager roundManager; private StartOfRound StartOfRound; private EnemyType MaskedType; public void AddConversion(SCP914Setting setting, Item itemInput, List lItemOutputs) { Dictionary> dictionary = arItemMappings[(int)setting]; if (dictionary.TryGetValue(itemInput, out var value)) { value.AddRange(lItemOutputs); } else { arItemMappings[(int)setting].Add(itemInput, lItemOutputs); } } public void AddConversion(SCP914Setting setting, EnemyType enemyInput, List lEnemyOutputs) { Dictionary> dictionary = arEnemyMappings[(int)setting]; if (dictionary.TryGetValue(enemyInput, out var value)) { value.AddRange(lEnemyOutputs); } else { arEnemyMappings[(int)setting].Add(enemyInput, lEnemyOutputs); } } public void AddConversion(SCP914Setting setting, Item itemInput, List lEnemyOutputs) { Dictionary> dictionary = arItemEnemyMappings[(int)setting]; if (dictionary.TryGetValue(itemInput, out var value)) { value.AddRange(lEnemyOutputs); } else { arItemEnemyMappings[(int)setting].Add(itemInput, lEnemyOutputs); } } public void AddConversion(SCP914Setting setting, EnemyType enemyInput, List lItemOutputs) { Dictionary> dictionary = arEnemyItemMappings[(int)setting]; if (dictionary.TryGetValue(enemyInput, out var value)) { value.AddRange(lItemOutputs); } else { arEnemyItemMappings[(int)setting].Add(enemyInput, lItemOutputs); } } private Dictionary> GetItemMapping() { return arItemMappings[iCurrentState]; } private Dictionary> GetEnemyMapping() { return arEnemyMappings[iCurrentState]; } private Dictionary> GetItemEnemyMapping() { return arItemEnemyMappings[iCurrentState]; } private Dictionary> GetEnemyItemMapping() { return arEnemyItemMappings[iCurrentState]; } private Vector3 GetRandomNavMeshPositionInCollider(Collider collider) { //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_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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) //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_002b: 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_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0073: Unknown result type (might be due to invalid IL or missing references) //IL_0085: 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_0097: Unknown result type (might be due to invalid IL or missing references) Bounds bounds = collider.bounds; Vector3 center = ((Bounds)(ref bounds)).center; bounds = collider.bounds; float x = ((Bounds)(ref bounds)).extents.x; bounds = collider.bounds; float num = Math.Min(x, ((Bounds)(ref bounds)).extents.z); center.x += Random.Range(0f - num, num); center.z += Random.Range(0f - num, num); ref float y = ref center.y; float num2 = y; bounds = collider.bounds; y = num2 - ((Bounds)(ref bounds)).extents.y / 2f; NavMeshHit val = default(NavMeshHit); if (NavMesh.SamplePosition(center, ref val, 5f, -1)) { return ((NavMeshHit)(ref val)).position; } return center; } private Vector3 GetRandomPositionInCollider(Collider collider) { //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_0009: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: 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) //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_002b: 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) Bounds bounds = collider.bounds; Vector3 center = ((Bounds)(ref bounds)).center; bounds = collider.bounds; float x = ((Bounds)(ref bounds)).extents.x; bounds = collider.bounds; float num = Math.Min(x, ((Bounds)(ref bounds)).extents.z); center.x += Random.Range(0f - num, num); center.z += Random.Range(0f - num, num); return center; } [ServerRpc(RequireOwnership = false)] public void TurnStateServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2627837757u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2627837757u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; int iNewState = (iCurrentState + 1) % 5; TurnStateClientRpc(iNewState); } } } [ClientRpc] public void TurnStateClientRpc(int iNewState) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0089: 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_00e5: Unknown result type (might be due to invalid IL or missing references) //IL_00ea: Unknown result type (might be due to invalid IL or missing references) //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_011c: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(301590527u, val, (RpcDelivery)0); BytePacker.WriteValueBitPacked(val2, iNewState); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 301590527u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; iCurrentState = iNewState; Quaternion rotation = SettingKnobPivot.transform.rotation; Vector3 eulerAngles = ((Quaternion)(ref rotation)).eulerAngles; eulerAngles.z = SCP914SettingRotations[iCurrentState].Item2; SettingKnobPivot.transform.rotation = Quaternion.Euler(eulerAngles); SettingKnobSoundSrc.Play(); } } } [ServerRpc(RequireOwnership = false)] public void ActivateServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(1051910848u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 1051910848u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (!bActive) { bActive = true; ActivateClientRpc(); ((MonoBehaviour)this).StartCoroutine(ConversionProcess()); } } } [ClientRpc] public void ActivateClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3833341719u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3833341719u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ActivateTrigger.interactable = false; SettingKnobTrigger.interactable = false; ActivateAudioSrc.Play(); DoorIn.SetBoolString("open", false); DoorOut.SetBoolString("open", false); } } } [ClientRpc] public void RefineFinishClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4143732333u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4143732333u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ActivateTrigger.interactable = true; SettingKnobTrigger.interactable = true; DoorIn.SetBoolString("open", true); DoorOut.SetBoolString("open", true); } } } [ClientRpc] public void SpawnItemsClientRpc(NetworkObjectReference[] arNetworkObjectReferences, int[] arScrapValues, bool bChargeBattery) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0147: 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_0088: Unknown result type (might be due to invalid IL or missing references) //IL_008e: Unknown result type (might be due to invalid IL or missing references) //IL_0172: 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_00d9: Unknown result type (might be due to invalid IL or missing references) //IL_00ac: 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_0113: Unknown result type (might be due to invalid IL or missing references) //IL_0119: 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_00f7: Unknown result type (might be due to invalid IL or missing references) //IL_00fd: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4044311993u, val, (RpcDelivery)0); bool flag = arNetworkObjectReferences != null; ((FastBufferWriter)(ref val2)).WriteValueSafe(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe(arNetworkObjectReferences, default(ForNetworkSerializable)); } bool flag2 = arScrapValues != null; ((FastBufferWriter)(ref val2)).WriteValueSafe(ref flag2, default(ForPrimitives)); if (flag2) { ((FastBufferWriter)(ref val2)).WriteValueSafe(arScrapValues, default(ForPrimitives)); } ((FastBufferWriter)(ref val2)).WriteValueSafe(ref bChargeBattery, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4044311993u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; NetworkObject val3 = default(NetworkObject); for (int i = 0; i < arNetworkObjectReferences.Length; i++) { SCPCBDunGen.Logger.LogInfo((object)$"Item conversion scrap value {i}: {arScrapValues[i]}"); if (((NetworkObjectReference)(ref arNetworkObjectReferences[i])).TryGet(ref val3, (NetworkManager)null)) { GrabbableObject component = ((Component)val3).GetComponent(); if (component.itemProperties.isScrap) { component.SetScrapValue(arScrapValues[i]); } if (component.itemProperties.requiresBattery) { component.insertedBattery.charge = (bChargeBattery ? 1f : 0f); } } } } [IteratorStateMachine(typeof(d__38))] private IEnumerator ConversionProcess() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__38(0) { <>4__this = this }; } private void ConvertItemToItem(List lNetworkObjectReferences, List lScrapValues, GrabbableObject grabbable) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_00b3: 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_0077: 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_019e: Unknown result type (might be due to invalid IL or missing references) Vector3 randomPositionInCollider = GetRandomPositionInCollider(colliderOutput); GameObject val = null; NetworkObject val2 = null; GrabbableObject val3 = null; if (GetItemMapping().TryGetValue(grabbable.itemProperties, out var value)) { SCPCBDunGen.Logger.LogInfo((object)"Mapping found"); Item val4 = value[roundManager.AnomalyRandom.Next(value.Count)]; if ((Object)(object)val4 != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Conversion found"); val = Object.Instantiate(val4.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform); val2 = val.GetComponent(); val3 = val.GetComponent(); } } else { SCPCBDunGen.Logger.LogInfo((object)"No conversion, making new item copy with new scrap value"); val = Object.Instantiate(grabbable.itemProperties.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform); val2 = val.GetComponent(); val3 = val.GetComponent(); } SCPCBDunGen.Logger.LogInfo((object)"Preprocessing done"); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Conversion was null, item is intended to be destroyed in process."); return; } Item itemProperties = val3.itemProperties; if (itemProperties.isScrap) { SCPCBDunGen.Logger.LogInfo((object)"Item is scrap or null, generating a copy with new value"); GrabbableObject component = val.GetComponent(); int num = (int)((float)roundManager.AnomalyRandom.Next(itemProperties.minValue, itemProperties.maxValue) * roundManager.scrapValueMultiplier); component.SetScrapValue(num); SCPCBDunGen.Logger.LogInfo((object)$"new scrap value: {num}"); lScrapValues.Add(num); } else { SCPCBDunGen.Logger.LogInfo((object)"Item is not scrap, adding empty scrap value"); lScrapValues.Add(0); } val2.Spawn(true); lNetworkObjectReferences.Add(NetworkObjectReference.op_Implicit(val2)); } private void ConvertItemToEnemy(GrabbableObject grabbable, EnemyType enemyType) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Unknown result type (might be due to invalid IL or missing references) Vector3 randomNavMeshPositionInCollider = GetRandomNavMeshPositionInCollider(colliderOutput); roundManager.SpawnEnemyGameObject(randomNavMeshPositionInCollider, 0f, -1, enemyType); } private void ConvertItem(List lNetworkObjectReferences, List lScrapValues, GrabbableObject grabbable) { if (grabbable.isHeld) { return; } SCPCBDunGen.Logger.LogInfo((object)("Found grabbable item " + ((Object)grabbable.itemProperties).name)); Dictionary> itemMapping = GetItemMapping(); Dictionary> itemEnemyMapping = GetItemEnemyMapping(); if (itemEnemyMapping.TryGetValue(grabbable.itemProperties, out var value)) { if (roundManager.AnomalyRandom.Next(2) == 0 && itemMapping.ContainsKey(grabbable.itemProperties)) { ConvertItemToItem(lNetworkObjectReferences, lScrapValues, grabbable); } else { ConvertItemToEnemy(grabbable, value[roundManager.AnomalyRandom.Next(value.Count)]); } } else { ConvertItemToItem(lNetworkObjectReferences, lScrapValues, grabbable); } Object.Destroy((Object)(object)((Component)grabbable).gameObject); } [ClientRpc] private void ConvertPlayerTeleportClientRpc(NetworkBehaviourReference netBehaviourRefPlayer, Vector3 vPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_011c: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(3018499267u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref vPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 3018499267u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; val4.TeleportPlayer(vPosition, false, 0f, false, true); } } [ClientRpc] private void ConvertPlayerKillClientRpc(NetworkBehaviourReference netBehaviourRefPlayer) { //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_00dc: Unknown result type (might be due to invalid IL or missing references) //IL_0108: Unknown result type (might be due to invalid IL or missing references) //IL_010e: Expected O, but got Unknown //IL_010f: Unknown result type (might be due to invalid IL or missing references) //IL_0119: Unknown result type (might be due to invalid IL or missing references) //IL_011f: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1252059581u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1252059581u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; val4.KillPlayer(Vector3.zero, true, (CauseOfDeath)6, 0, default(Vector3), false); } } [ClientRpc] private void ConvertPlayerAlterHealthClientRpc(NetworkBehaviourReference netBehaviourRefPlayer, int iHealthDelta) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_0124: Unknown result type (might be due to invalid IL or missing references) //IL_012a: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(527346026u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); BytePacker.WriteValueBitPacked(val2, iHealthDelta); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 527346026u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; val4.DamagePlayer(iHealthDelta, true, true, (CauseOfDeath)8, 0, false, default(Vector3)); } } [ClientRpc] private void ConvertPlayerRandomSkinClientRpc(NetworkBehaviourReference netBehaviourRefPlayer, int iSuitID) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_008c: Unknown result type (might be due to invalid IL or missing references) //IL_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0152: Expected O, but got Unknown NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1669287785u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); BytePacker.WriteValueBitPacked(val2, iSuitID); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1669287785u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; if ((Object)(object)StartOfRound == (Object)null) { StartOfRound = Object.FindObjectOfType(); if ((Object)(object)StartOfRound == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to find StartOfRound."); return; } } NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; int num = 0; foreach (UnlockableItem unlockable in StartOfRound.unlockablesList.unlockables) { if ((Object)(object)unlockable.suitMaterial != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)$"Found suit at index {num}"); } num++; } UnlockableItem val5 = StartOfRound.unlockablesList.unlockables[iSuitID]; if (val5 == null) { SCPCBDunGen.Logger.LogError((object)$"Invalid suit ID: {iSuitID}"); return; } Material suitMaterial = val5.suitMaterial; ((Renderer)val4.thisPlayerModel).material = suitMaterial; ((Renderer)val4.thisPlayerModelLOD1).material = suitMaterial; ((Renderer)val4.thisPlayerModelLOD2).material = suitMaterial; ((Renderer)val4.thisPlayerModelArms).material = suitMaterial; val4.currentSuitID = iSuitID; } private void ConvertPlayerRandomSkin(PlayerControllerB playerController) { //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: 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) if ((Object)(object)StartOfRound == (Object)null) { StartOfRound = Object.FindObjectOfType(); if ((Object)(object)StartOfRound == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to find StartOfRound."); return; } } List list = new List(); int num = 0; foreach (UnlockableItem unlockable in StartOfRound.unlockablesList.unlockables) { if ((Object)(object)unlockable.suitMaterial != (Object)null && num != playerController.currentSuitID) { list.Add(num); } num++; } int count = list.Count; if (count == 0) { SCPCBDunGen.Logger.LogError((object)"No suits to swap to found."); return; } int index = roundManager.AnomalyRandom.Next(0, count); NetworkBehaviourReference netBehaviourRefPlayer = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController); ConvertPlayerRandomSkinClientRpc(netBehaviourRefPlayer, list[index]); } [IteratorStateMachine(typeof(d__47))] private IEnumerator ConvertPlayerMaskedWaitForSpawn(NetworkObjectReference netObjRefMasked, NetworkBehaviourReference netBehaviourRefPlayer) { //IL_0007: 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_000e: 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) //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__47(0) { netObjRefMasked = netObjRefMasked, netBehaviourRefPlayer = netBehaviourRefPlayer }; } [ClientRpc] private void ConvertPlayerMaskedClientRpc(NetworkObjectReference netObjRefMasked, NetworkBehaviourReference netBehaviourRefPlayer) { //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) //IL_0123: Unknown result type (might be due to invalid IL or missing references) //IL_0129: Expected O, but got Unknown //IL_012a: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_015d: Unknown result type (might be due to invalid IL or missing references) //IL_015e: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(358260797u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netObjRefMasked, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 358260797u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; val4.KillPlayer(Vector3.zero, true, (CauseOfDeath)5, 0, default(Vector3), false); if ((Object)(object)val4.deadBody != (Object)null) { val4.deadBody.DeactivateBody(false); } ((MonoBehaviour)this).StartCoroutine(ConvertPlayerMaskedWaitForSpawn(netObjRefMasked, netBehaviourRefPlayer)); } private void ConvertPlayerMasked(NetworkBehaviourReference netBehaviourRefPlayer, Vector3 vMaskedPosition) { //IL_0027: Unknown result type (might be due to invalid IL or missing references) //IL_002d: Expected O, but got Unknown //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003e: Unknown result type (might be due to invalid IL or missing references) //IL_013a: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_01b0: Unknown result type (might be due to invalid IL or missing references) //IL_01b1: Unknown result type (might be due to invalid IL or missing references) NetworkBehaviour val = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val, (NetworkManager)null); if ((Object)(object)val == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val2 = (PlayerControllerB)val; val2.KillPlayer(Vector3.zero, true, (CauseOfDeath)5, 0, default(Vector3), false); if ((Object)(object)StartOfRound == (Object)null) { StartOfRound = Object.FindObjectOfType(); if ((Object)(object)StartOfRound == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to find StartOfRound."); return; } } if ((Object)(object)MaskedType == (Object)null) { SelectableLevel val3 = Array.Find(StartOfRound.levels, (SelectableLevel x) => x.PlanetName == "8 Titan"); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get Titan level data."); return; } MaskedType = val3.Enemies.Find((SpawnableEnemyWithRarity x) => x.enemyType.enemyName == "Masked")?.enemyType; if ((Object)(object)MaskedType == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get masked enemy type."); return; } } NetworkObjectReference netObjRefMasked = roundManager.SpawnEnemyGameObject(vMaskedPosition, 0f, -1, MaskedType); NetworkObject val4 = default(NetworkObject); if (((NetworkObjectReference)(ref netObjRefMasked)).TryGet(ref val4, (NetworkManager)null)) { SCPCBDunGen.Logger.LogInfo((object)"Got network object for mask enemy"); MaskedPlayerEnemy component = ((Component)val4).GetComponent(); component.SetSuit(val2.currentSuitID); component.mimickingPlayer = val2; ((EnemyAI)component).SetEnemyOutside(false); val2.redirectToEnemy = (EnemyAI)(object)component; if ((Object)(object)val2.deadBody != (Object)null) { val2.deadBody.DeactivateBody(false); } } ConvertPlayerMaskedClientRpc(netObjRefMasked, netBehaviourRefPlayer); } private void ConvertPlayer(PlayerControllerB playerController) { //IL_001d: 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_0024: 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_002b: 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_004f: 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_0069: 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) //IL_0091: Unknown result type (might be due to invalid IL or missing references) SCPCBDunGen.Logger.LogInfo((object)"Player detected, doing player conversion"); SCP914Setting sCP914Setting = (SCP914Setting)iCurrentState; Vector3 randomNavMeshPositionInCollider = GetRandomNavMeshPositionInCollider(colliderOutput); NetworkBehaviourReference netBehaviourRefPlayer = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController); ConvertPlayerTeleportClientRpc(netBehaviourRefPlayer, randomNavMeshPositionInCollider); switch (sCP914Setting) { case SCP914Setting.ROUGH: ConvertPlayerKillClientRpc(netBehaviourRefPlayer); break; case SCP914Setting.COARSE: ConvertPlayerAlterHealthClientRpc(netBehaviourRefPlayer, 50); break; case SCP914Setting.ONETOONE: ConvertPlayerRandomSkin(playerController); break; case SCP914Setting.FINE: ConvertPlayerAlterHealthClientRpc(netBehaviourRefPlayer, -50); break; case SCP914Setting.VERYFINE: if (!playerController.AllowPlayerDeath()) { SCPCBDunGen.Logger.LogInfo((object)"Refined player with Very Fine, but player death is prevented. Doing nothing."); } else { ConvertPlayerMasked(NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)playerController), randomNavMeshPositionInCollider); } break; default: SCPCBDunGen.Logger.LogError((object)"Invalid SCP 914 setting when attempting to convert player."); break; } } [ClientRpc] private void TeleportEnemyClientRpc(NetworkBehaviourReference netBehaviourRefEnemy, Vector3 vPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2839432350u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefEnemy, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref vPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2839432350u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefEnemy)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get enemy AI."); return; } EnemyAI val4 = (EnemyAI)val3; val4.serverPosition = vPosition; } } private void MoveEnemy(EnemyAI enemy, Vector3 NavPosition) { //IL_0015: Unknown result type (might be due to invalid IL or missing references) //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) //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_003a: Unknown result type (might be due to invalid IL or missing references) SCPCBDunGen.Logger.LogInfo((object)$"No conversions for enemy: {enemy.enemyType.enemyName}. Teleporting to {NavPosition}"); NetworkBehaviourReference netBehaviourRefEnemy = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)enemy); TeleportEnemyClientRpc(netBehaviourRefEnemy, NavPosition); enemy.agent.Warp(NavPosition); enemy.SyncPositionToClients(); if (iCurrentState == 0) { enemy.KillEnemyOnOwnerClient(false); } } private void ConvertEnemyToEnemy(EnemyAI enemy) { //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: 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_004f: 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) Dictionary> enemyMapping = GetEnemyMapping(); Vector3 randomNavMeshPositionInCollider = GetRandomNavMeshPositionInCollider(colliderOutput); if (enemyMapping.TryGetValue(enemy.enemyType, out var value) && value.Count != 0) { EnemyType val = value[roundManager.AnomalyRandom.Next(value.Count)]; roundManager.SpawnEnemyGameObject(randomNavMeshPositionInCollider, 0f, -1, val); Object.Destroy((Object)(object)((Component)enemy).gameObject); } MoveEnemy(enemy, randomNavMeshPositionInCollider); } private void ConvertEnemyToItem(List lNetworkObjectReferences, List lScrapValues, EnemyAI enemy) { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_000c: 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_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c3: Unknown result type (might be due to invalid IL or missing references) //IL_0082: 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_0195: Unknown result type (might be due to invalid IL or missing references) Vector3 randomPositionInCollider = GetRandomPositionInCollider(colliderOutput); GameObject val = null; NetworkObject val2 = null; GrabbableObject val3 = null; if (GetEnemyItemMapping().TryGetValue(enemy.enemyType, out var value)) { SCPCBDunGen.Logger.LogInfo((object)"Mapping found"); Item val4 = value[roundManager.AnomalyRandom.Next(value.Count)]; Object.Destroy((Object)(object)((Component)enemy).gameObject); if ((Object)(object)val4 != (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Conversion found"); val = Object.Instantiate(val4.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform); val2 = val.GetComponent(); val3 = val.GetComponent(); } } else { SCPCBDunGen.Logger.LogInfo((object)"No conversion, teleporting enemy"); Vector3 randomNavMeshPositionInCollider = GetRandomNavMeshPositionInCollider(colliderOutput); MoveEnemy(enemy, randomNavMeshPositionInCollider); } SCPCBDunGen.Logger.LogInfo((object)"Preprocessing done"); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"Conversion was null, item is intended to be destroyed in process."); return; } Item itemProperties = val3.itemProperties; if (itemProperties.isScrap) { SCPCBDunGen.Logger.LogInfo((object)"Item is scrap or null, generating a copy with new value"); GrabbableObject component = val.GetComponent(); int num = (int)((float)roundManager.AnomalyRandom.Next(itemProperties.minValue, itemProperties.maxValue) * roundManager.scrapValueMultiplier); component.SetScrapValue(num); SCPCBDunGen.Logger.LogInfo((object)$"new scrap value: {num}"); lScrapValues.Add(num); } else { SCPCBDunGen.Logger.LogInfo((object)"Item is not scrap, adding empty scrap value"); lScrapValues.Add(0); } val2.Spawn(true); lNetworkObjectReferences.Add(NetworkObjectReference.op_Implicit(val2)); } private void ConvertEnemy(List lNetworkObjectReferences, List lScrapValues, EnemyAI enemy) { //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_008a: Unknown result type (might be due to invalid IL or missing references) Dictionary> enemyItemMapping = GetEnemyItemMapping(); Dictionary> enemyMapping = GetEnemyMapping(); if (GetEnemyMapping().TryGetValue(enemy.enemyType, out var _)) { if (roundManager.AnomalyRandom.Next(2) == 0 && GetEnemyItemMapping().ContainsKey(enemy.enemyType)) { ConvertEnemyToItem(lNetworkObjectReferences, lScrapValues, enemy); } else { ConvertEnemyToEnemy(enemy); } } else if (GetEnemyItemMapping().ContainsKey(enemy.enemyType)) { ConvertEnemyToItem(lNetworkObjectReferences, lScrapValues, enemy); } else { Vector3 randomNavMeshPositionInCollider = GetRandomNavMeshPositionInCollider(colliderOutput); MoveEnemy(enemy, randomNavMeshPositionInCollider); } Object.Destroy((Object)(object)((Component)enemy).gameObject); } 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 //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown //IL_00ed: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: Expected O, but got Unknown //IL_0109: Unknown result type (might be due to invalid IL or missing references) //IL_0118: Expected O, but got Unknown //IL_0125: Unknown result type (might be due to invalid IL or missing references) //IL_0134: Expected O, but got Unknown //IL_0141: Unknown result type (might be due to invalid IL or missing references) //IL_0150: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(2627837757u, new RpcReceiveHandler(__rpc_handler_2627837757), "TurnStateServerRpc"); ((NetworkBehaviour)this).__registerRpc(301590527u, new RpcReceiveHandler(__rpc_handler_301590527), "TurnStateClientRpc"); ((NetworkBehaviour)this).__registerRpc(1051910848u, new RpcReceiveHandler(__rpc_handler_1051910848), "ActivateServerRpc"); ((NetworkBehaviour)this).__registerRpc(3833341719u, new RpcReceiveHandler(__rpc_handler_3833341719), "ActivateClientRpc"); ((NetworkBehaviour)this).__registerRpc(4143732333u, new RpcReceiveHandler(__rpc_handler_4143732333), "RefineFinishClientRpc"); ((NetworkBehaviour)this).__registerRpc(4044311993u, new RpcReceiveHandler(__rpc_handler_4044311993), "SpawnItemsClientRpc"); ((NetworkBehaviour)this).__registerRpc(3018499267u, new RpcReceiveHandler(__rpc_handler_3018499267), "ConvertPlayerTeleportClientRpc"); ((NetworkBehaviour)this).__registerRpc(1252059581u, new RpcReceiveHandler(__rpc_handler_1252059581), "ConvertPlayerKillClientRpc"); ((NetworkBehaviour)this).__registerRpc(527346026u, new RpcReceiveHandler(__rpc_handler_527346026), "ConvertPlayerAlterHealthClientRpc"); ((NetworkBehaviour)this).__registerRpc(1669287785u, new RpcReceiveHandler(__rpc_handler_1669287785), "ConvertPlayerRandomSkinClientRpc"); ((NetworkBehaviour)this).__registerRpc(358260797u, new RpcReceiveHandler(__rpc_handler_358260797), "ConvertPlayerMaskedClientRpc"); ((NetworkBehaviour)this).__registerRpc(2839432350u, new RpcReceiveHandler(__rpc_handler_2839432350), "TeleportEnemyClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_2627837757(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).TurnStateServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_301590527(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0036: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { int iNewState = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref iNewState); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).TurnStateClientRpc(iNewState); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1051910848(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ActivateServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3833341719(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ActivateClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4143732333(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).RefineFinishClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4044311993(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_0074: Unknown result type (might be due to invalid IL or missing references) //IL_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0058: 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_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: 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_00f0: 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_00a3: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref flag, default(ForPrimitives)); NetworkObjectReference[] arNetworkObjectReferences = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref arNetworkObjectReferences, default(ForNetworkSerializable)); } bool flag2 = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref flag2, default(ForPrimitives)); int[] arScrapValues = null; if (flag2) { ((FastBufferReader)(ref reader)).ReadValueSafe(ref arScrapValues, default(ForPrimitives)); } bool bChargeBattery = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref bChargeBattery, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).SpawnItemsClientRpc(arNetworkObjectReferences, arScrapValues, bChargeBattery); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_3018499267(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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); Vector3 vPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref vPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ConvertPlayerTeleportClientRpc(netBehaviourRefPlayer, vPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1252059581(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) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ConvertPlayerKillClientRpc(netBehaviourRefPlayer); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_527346026(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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); int iHealthDelta = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref iHealthDelta); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ConvertPlayerAlterHealthClientRpc(netBehaviourRefPlayer, iHealthDelta); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1669287785(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_003e: Unknown result type (might be due to invalid IL or missing references) //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: Unknown result type (might be due to invalid IL or missing references) //IL_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); int iSuitID = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref iSuitID); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ConvertPlayerRandomSkinClientRpc(netBehaviourRefPlayer, iSuitID); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_358260797(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_006e: 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 netObjRefMasked = default(NetworkObjectReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netObjRefMasked, default(ForNetworkSerializable)); NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).ConvertPlayerMaskedClientRpc(netObjRefMasked, netBehaviourRefPlayer); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2839432350(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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefEnemy = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefEnemy, default(ForNetworkSerializable)); Vector3 vPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref vPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCP914Converter)(object)target).TeleportEnemyClientRpc(netBehaviourRefEnemy, vPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "SCP914Converter"; } } public class SCPDoorMover : NetworkBehaviour { [CompilerGenerated] private sealed class d__15 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public SCPDoorMover <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__15(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_002f: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Expected O, but got Unknown //IL_0056: Unknown result type (might be due to invalid IL or missing references) //IL_0060: Expected O, but got Unknown int num = <>1__state; SCPDoorMover sCPDoorMover = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; sCPDoorMover.bDoorWaiting = false; <>2__current = (object)new WaitForSeconds(1f); <>1__state = 2; return true; case 2: <>1__state = -1; sCPDoorMover.EnableDoorButtonClientRpc(); return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public NavMeshObstacle navObstacle; public Animator doors; public List doorAudioClips; public AudioClip doorAudioClipFast; public AudioSource doorSFXSource; public InteractTrigger ButtonA; public InteractTrigger ButtonB; private bool bDoorOpen; private bool bDoorWaiting; private List EnemiesInCollider = new List(); private void OnTriggerEnter(Collider other) { if (!((Object)(object)NetworkManager.Singleton == (Object)null) && ((NetworkBehaviour)this).IsServer && ((Component)other).CompareTag("Enemy")) { EnemyAICollisionDetect component = ((Component)other).GetComponent(); if (!((Object)(object)component == (Object)null)) { SCPCBDunGen.Logger.LogInfo((object)("Enemy entered trigger: " + ((Object)component.mainScript.enemyType).name)); EnemiesInCollider.Add(component); } } } private void OnTriggerExit(Collider other) { if (!((Object)(object)NetworkManager.Singleton == (Object)null) && ((NetworkBehaviour)this).IsServer && ((Component)other).CompareTag("Enemy")) { EnemyAICollisionDetect component = ((Component)other).GetComponent(); if (!((Object)(object)component == (Object)null) && !EnemiesInCollider.Remove(component)) { SCPCBDunGen.Logger.LogWarning((object)"Enemy left door trigger but somehow wasn't detected in trigger entry."); } } } private void Update() { if ((Object)(object)NetworkManager.Singleton == (Object)null || !((NetworkBehaviour)this).IsServer || bDoorOpen || bDoorWaiting || EnemiesInCollider.Count == 0) { return; } SCPCBDunGen.Logger.LogInfo((object)"Enemy attempting to open door..."); float num = 0f; foreach (EnemyAICollisionDetect item in EnemiesInCollider) { EnemyAI mainScript = item.mainScript; if (!mainScript.isEnemyDead) { SCPCBDunGen.Logger.LogInfo((object)$"Enemy {((Object)mainScript.enemyType).name} with open mult {mainScript.openDoorSpeedMultiplier}"); float val = mainScript.openDoorSpeedMultiplier; if (((Object)mainScript.enemyType).name == "MaskedPlayerEnemy") { val = 1f; } if (((Object)mainScript.enemyType).name == "Crawler") { val = 2f; } num = Math.Max(num, val); } } SCPCBDunGen.Logger.LogInfo((object)$"Highest multiplier is {num}."); if (num != 0f) { SCPCBDunGen.Logger.LogInfo((object)"Door being opened."); if (num > 1.5f) { OpenDoorFastServerRpc(); } else { ToggleDoorServerRpc(); } } } [ServerRpc] public void OpenDoorFastServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_00dc: Invalid comparison between Unknown and I4 //IL_0107: Unknown result type (might be due to invalid IL or missing references) //IL_00a5: 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_00b3: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { if (((NetworkBehaviour)this).OwnerClientId != networkManager.LocalClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(289563691u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 289563691u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; SCPCBDunGen.Logger.LogInfo((object)"Opening door fast [SERVER]."); bDoorWaiting = true; bDoorOpen = true; ((Behaviour)navObstacle).enabled = false; OpenDoorFastClientRpc(); ((MonoBehaviour)this).StartCoroutine(DoorToggleButtonUsable()); } } [ClientRpc] public void OpenDoorFastClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1678254293u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1678254293u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; SCPCBDunGen.Logger.LogInfo((object)"Opening door fast [CLIENT]."); bDoorWaiting = true; bDoorOpen = true; ButtonA.interactable = false; ButtonB.interactable = false; ((Behaviour)navObstacle).enabled = false; doorSFXSource.PlayOneShot(doorAudioClipFast); doors.SetTrigger("openfast"); } } } [IteratorStateMachine(typeof(d__15))] private IEnumerator DoorToggleButtonUsable() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__15(0) { <>4__this = this }; } [ServerRpc(RequireOwnership = false)] public void ToggleDoorServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(40313670u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 40313670u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (!bDoorWaiting) { bool flag = !bDoorOpen; string text = (flag ? "opening" : "closing"); SCPCBDunGen.Logger.LogInfo((object)("Door is " + text + ".")); bDoorWaiting = true; bDoorOpen = flag; ((Behaviour)navObstacle).enabled = !flag; ToggleDoorClientRpc(bDoorOpen); ((MonoBehaviour)this).StartCoroutine(DoorToggleButtonUsable()); } } } [ClientRpc] public void ToggleDoorClientRpc(bool _bDoorOpen) { //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_00dc: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(659555206u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref _bDoorOpen, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 659555206u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; bDoorOpen = _bDoorOpen; ButtonA.interactable = false; ButtonB.interactable = false; ((Behaviour)navObstacle).enabled = !_bDoorOpen; doorSFXSource.PlayOneShot(doorAudioClips[Random.Range(0, doorAudioClips.Count)]); doors.SetTrigger(bDoorOpen ? "open" : "close"); } } } [ClientRpc] public void EnableDoorButtonClientRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1538705838u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1538705838u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ButtonA.interactable = true; ButtonB.interactable = 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 //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(289563691u, new RpcReceiveHandler(__rpc_handler_289563691), "OpenDoorFastServerRpc"); ((NetworkBehaviour)this).__registerRpc(1678254293u, new RpcReceiveHandler(__rpc_handler_1678254293), "OpenDoorFastClientRpc"); ((NetworkBehaviour)this).__registerRpc(40313670u, new RpcReceiveHandler(__rpc_handler_40313670), "ToggleDoorServerRpc"); ((NetworkBehaviour)this).__registerRpc(659555206u, new RpcReceiveHandler(__rpc_handler_659555206), "ToggleDoorClientRpc"); ((NetworkBehaviour)this).__registerRpc(1538705838u, new RpcReceiveHandler(__rpc_handler_1538705838), "EnableDoorButtonClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_289563691(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: 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_0076: 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) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } } else { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPDoorMover)(object)target).OpenDoorFastServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1678254293(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPDoorMover)(object)target).OpenDoorFastClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_40313670(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPDoorMover)(object)target).ToggleDoorServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_659555206(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_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref flag, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPDoorMover)(object)target).ToggleDoorClientRpc(flag); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1538705838(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPDoorMover)(object)target).EnableDoorButtonClientRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "SCPDoorMover"; } } public struct SCP914Conversion { public string ItemName; public List RoughResults { get; set; } public List CoarseResults { get; set; } public List OneToOneResults { get; set; } public List FineResults { get; set; } public List VeryFineResults { get; set; } } public class SCP914ConversionSet : KeyedCollection { protected override string GetKeyForItem(SCP914Conversion conversion) { return conversion.ItemName; } } [BepInPlugin("SCPCBDunGen", "SCPCBDunGen", "4.5.0")] [BepInDependency(/*Could not decode attribute arguments.*/)] [BepInDependency(/*Could not decode attribute arguments.*/)] public class SCPCBDunGen : BaseUnityPlugin { public static AssetBundle SCPCBAssets; private static Harmony harmony; public SCP914ConversionSet SCP914Conversions = new SCP914ConversionSet(); public static SCPCBDunGen Instance { get; private set; } internal static ManualLogSource Logger { get; private set; } private void Awake() { //IL_0284: Expected O, but got Unknown //IL_009e: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown //IL_00c5: Unknown result type (might be due to invalid IL or missing references) //IL_00cf: Expected O, but got Unknown Logger = ((BaseUnityPlugin)this).Logger; Instance = this; NetcodePatcher(); string directoryName = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); SCPCBAssets = AssetBundle.LoadFromFile(Path.Combine(directoryName, "scpcb_dungeon")); if ((Object)(object)SCPCBAssets == (Object)null) { Logger.LogError((object)"Failed to load SCPCB Dungeon assets."); return; } ExtendedDungeonFlow val = SCPCBAssets.LoadAsset("assets/Mods/SCP/data/SCPCBDunGenExtFlow.asset"); if ((Object)(object)val == (Object)null) { Logger.LogError((object)"Failed to load SCP:CB Extended Dungeon Flow."); return; } ConfigEntry val2 = ((BaseUnityPlugin)this).Config.Bind("General", "Default914Recipes", true, new ConfigDescription("If false, any custom 914 Json files named \"default.json\" will be ignored (i.e. the default 914 config will not be loaded).\nSome custom 914 implementations may want to fully override the default settings, in which case this can be set to false.", (AcceptableValueBase)null, Array.Empty())); ConfigEntry val3 = ((BaseUnityPlugin)this).Config.Bind("Mod Compatibility", "PiggysVarietyMod", true, new ConfigDescription("If Piggys Variety Mod is present and this setting is enabled, tesla gates can spawn in the SCP Foundation.\nWARNING: Ensure this value matches across all clients or desync will occur.", (AcceptableValueBase)null, Array.Empty())); if (val3.Value && Chainloader.PluginInfos.ContainsKey("Piggy.PiggyVarietyMod")) { CompatPVM(val); } PatchedContent.RegisterExtendedDungeonFlow(val); foreach (string item in DiscoverConfiguredRecipeFiles()) { if (!val2.Value && Path.GetFileName(item) == "default.json") { continue; } StreamReader streamReader = new StreamReader(item); string text = streamReader.ReadToEnd(); try { List list = JsonConvert.DeserializeObject>(text); foreach (SCP914Conversion item2 in list) { if (SCP914Conversions.Contains(item2.ItemName.ToLowerInvariant())) { SCP914Conversions[item2.ItemName].RoughResults.AddRange(item2.RoughResults); SCP914Conversions[item2.ItemName].CoarseResults.AddRange(item2.CoarseResults); SCP914Conversions[item2.ItemName].OneToOneResults.AddRange(item2.OneToOneResults); SCP914Conversions[item2.ItemName].FineResults.AddRange(item2.FineResults); SCP914Conversions[item2.ItemName].VeryFineResults.AddRange(item2.VeryFineResults); } else { SCP914Conversions.Add(item2); } } Logger.LogInfo((object)("Registed SCP 914 json file successfully: " + item)); } catch (JsonException val4) { JsonException val5 = val4; Logger.LogError((object)("Failed to deserialize file: " + item + ". Exception: " + ((Exception)(object)val5).Message)); } } StartHarmonyPatching(); Logger.LogInfo((object)"SCPCBDunGen v4.5.0 has loaded!"); } [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] private static void CompatPVM(ExtendedDungeonFlow SCPExtendedFlow) { Logger.LogInfo((object)"PiggysVarietyMod detected and compatibility layer enabled! Adding tesla gate room."); GameObject val = SCPCBAssets.LoadAsset("assets/Mods/SCP/prefabs/Rooms/LC/SCPHallTesla.prefab"); Transform val2 = val.transform.Find("TeslaSpawn"); SpawnSyncedObject val3 = ((Component)val2).gameObject.AddComponent(); val3.spawnPrefab = null; SCPExtendedFlow.DungeonFlow.Lines.First().DungeonArchetypes.First().TileSets.First().AddTile(val, 1f, 1f); } private IEnumerable DiscoverConfiguredRecipeFiles() { return from filePath in (from pluginDirectory in Directory.GetDirectories(Paths.PluginPath) select Path.Join(pluginDirectory.AsSpan(), "badhamknibbs-scp914-recipes".AsSpan())).Where(Directory.Exists).SelectMany(Directory.GetFiles) where Path.GetExtension(filePath) == ".json" select filePath; } internal static void StartHarmonyPatching() { //IL_001b: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Expected O, but got Unknown Logger.LogDebug((object)"Patching..."); if (harmony == null) { harmony = new Harmony("SCPCBDunGen"); harmony.PatchAll(typeof(RoundManagerPatch)); } Logger.LogDebug((object)"Finished Patching!"); } private 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.Invoke(null, null); } } } } } public class SCPCBElevNuclearManager : NetworkBehaviour { [CompilerGenerated] private sealed class d__26 : IEnumerator, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public SCPCBElevNuclearManager <>4__this; object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public d__26(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Expected O, but got Unknown //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0069: Expected O, but got Unknown //IL_00b9: Unknown result type (might be due to invalid IL or missing references) //IL_00bf: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Unknown result type (might be due to invalid IL or missing references) //IL_00ca: Unknown result type (might be due to invalid IL or missing references) //IL_00d4: Unknown result type (might be due to invalid IL or missing references) //IL_0348: Unknown result type (might be due to invalid IL or missing references) //IL_0352: Expected O, but got Unknown //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_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01dd: Unknown result type (might be due to invalid IL or missing references) //IL_0271: Unknown result type (might be due to invalid IL or missing references) //IL_0276: Unknown result type (might be due to invalid IL or missing references) //IL_017f: Unknown result type (might be due to invalid IL or missing references) //IL_0184: Unknown result type (might be due to invalid IL or missing references) //IL_0187: Unknown result type (might be due to invalid IL or missing references) //IL_0189: Unknown result type (might be due to invalid IL or missing references) //IL_0200: Unknown result type (might be due to invalid IL or missing references) //IL_0205: Unknown result type (might be due to invalid IL or missing references) //IL_0211: Unknown result type (might be due to invalid IL or missing references) //IL_0223: Unknown result type (might be due to invalid IL or missing references) //IL_0225: Unknown result type (might be due to invalid IL or missing references) //IL_029c: Unknown result type (might be due to invalid IL or missing references) //IL_02a0: Unknown result type (might be due to invalid IL or missing references) //IL_02a6: Unknown result type (might be due to invalid IL or missing references) //IL_02ae: Unknown result type (might be due to invalid IL or missing references) //IL_02b3: Unknown result type (might be due to invalid IL or missing references) //IL_02c6: Unknown result type (might be due to invalid IL or missing references) //IL_02d9: Unknown result type (might be due to invalid IL or missing references) //IL_02de: Unknown result type (might be due to invalid IL or missing references) //IL_02e1: Unknown result type (might be due to invalid IL or missing references) //IL_02e3: Unknown result type (might be due to invalid IL or missing references) //IL_02f1: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; SCPCBElevNuclearManager sCPCBElevNuclearManager = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <>2__current = (object)new WaitForSeconds(1f); <>1__state = 1; return true; case 1: <>1__state = -1; sCPCBElevNuclearManager.ElevatorMoveSFXClientRpc(sCPCBElevNuclearManager.IsAtTop); <>2__current = (object)new WaitForSeconds(10f); <>1__state = 2; return true; case 2: { <>1__state = -1; BoxCollider val = (sCPCBElevNuclearManager.IsAtTop ? sCPCBElevNuclearManager.TeleporterTop : sCPCBElevNuclearManager.TeleporterBot); SCPCBDunGen.Logger.LogInfo((object)"** BEGINNING ELEVATOR TELEPORT SEQUENCE **"); List list = new List(); List list2 = new List(); List list3 = new List(); Collider[] array = Physics.OverlapBox(((Component)val).transform.position + val.center, val.size / 2f); Collider[] array2 = array; foreach (Collider val2 in array2) { GameObject gameObject = ((Component)val2).gameObject; GrabbableObject component = gameObject.GetComponent(); if ((Object)(object)component != (Object)null) { if (list2.Contains(component)) { SCPCBDunGen.Logger.LogWarning((object)"Tried to teleport item twice! Skipping."); continue; } list2.Add(component); SCPCBDunGen.Logger.LogInfo((object)("Teleporting grabbable " + ((Object)gameObject).name)); Vector3 targetFloorPosition = component.targetFloorPosition; targetFloorPosition.y += (sCPCBElevNuclearManager.IsAtTop ? (-15.36f) : 15.36f); NetworkBehaviourReference netBehaviourRefItem = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)component); sCPCBElevNuclearManager.TeleportItemClientRpc(netBehaviourRefItem, targetFloorPosition); continue; } PlayerControllerB component2 = gameObject.GetComponent(); if ((Object)(object)component2 != (Object)null) { if (list.Contains(component2)) { SCPCBDunGen.Logger.LogWarning((object)"Tried to teleport player twice! Skipping."); continue; } list.Add(component2); Vector3 position = ((Component)component2).transform.position; position.y += (sCPCBElevNuclearManager.IsAtTop ? (-15.36f) : 15.36f); NetworkBehaviourReference netBehaviourRefPlayer = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)component2); SCPCBDunGen.Logger.LogInfo((object)$"Teleporting player to {position}"); sCPCBElevNuclearManager.TeleportPlayerClientRpc(netBehaviourRefPlayer, position); continue; } EnemyAI componentInParent = gameObject.GetComponentInParent(); if ((Object)(object)componentInParent != (Object)null) { if (list3.Contains(componentInParent)) { SCPCBDunGen.Logger.LogWarning((object)"Tried to teleport enemy twice! Skipping."); continue; } list3.Add(componentInParent); Vector3 serverPosition = componentInParent.serverPosition; serverPosition.y += (sCPCBElevNuclearManager.IsAtTop ? (-15.36f) : 15.36f); Vector3 navMeshPosition = RoundManager.Instance.GetNavMeshPosition(serverPosition, default(NavMeshHit), 5f, -1); SCPCBDunGen.Logger.LogInfo((object)$"Teleporting enemy {((Object)gameObject).name} to {navMeshPosition}"); NetworkBehaviourReference netBehaviourRefPlayer2 = NetworkBehaviourReference.op_Implicit((NetworkBehaviour)(object)componentInParent); sCPCBElevNuclearManager.TeleportEnemyClientRpc(netBehaviourRefPlayer2, navMeshPosition); componentInParent.agent.Warp(navMeshPosition); componentInParent.SyncPositionToClients(); } else { SCPCBDunGen.Logger.LogInfo((object)("Object with no elevator handling: " + ((Object)gameObject).name + ", skipping.")); } } sCPCBElevNuclearManager.ElevatorDingClientRpc(!sCPCBElevNuclearManager.IsAtTop); <>2__current = (object)new WaitForSeconds(1f); <>1__state = 3; return true; } case 3: <>1__state = -1; sCPCBElevNuclearManager.FinishClientRpc(!sCPCBElevNuclearManager.IsAtTop); sCPCBElevNuclearManager.IsAtTop = !sCPCBElevNuclearManager.IsAtTop; sCPCBElevNuclearManager.Active = false; return false; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } public BoxCollider TeleporterTop; public BoxCollider TeleporterBot; public InteractTrigger ButtonTopIn; public InteractTrigger ButtonTopOut; public InteractTrigger ButtonBotIn; public InteractTrigger ButtonBotOut; public AudioSource ElevatorDingTop; public AudioSource ElevatorDingBot; public AudioSource ElevatorMoveSFXTop; public AudioSource ElevatorMoveSFXBot; public AudioSource DoorSFXTop; public AudioSource DoorSFXBot; public Animator DoorTop; public Animator DoorBot; private bool IsAtTop = true; private bool Active; private const float TeleDistanceMagic = 15.36f; private void DisableAllButtons() { ButtonTopIn.interactable = false; ButtonTopOut.interactable = false; ButtonBotIn.interactable = false; ButtonBotOut.interactable = false; } [ServerRpc(RequireOwnership = false)] public void ActivateServerRpc() { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_007c: Unknown result type (might be due to invalid IL or missing references) //IL_00c1: 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)base.__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(4240829023u, val, (RpcDelivery)0); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 4240829023u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; if (!Active) { Active = true; ActivateClientRpc(IsAtTop); ((MonoBehaviour)this).StartCoroutine(ConversionProcess()); } } } [ClientRpc] public void ElevatorDingClientRpc(bool DingTop) { //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_00dc: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2883897837u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref DingTop, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2883897837u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; AudioSource val3 = (DingTop ? ElevatorDingTop : ElevatorDingBot); val3.Play(); } } } [ClientRpc] public void ElevatorMoveSFXClientRpc(bool SFXTop) { //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_00dc: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2269153112u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref SFXTop, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2269153112u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; AudioSource val3 = (SFXTop ? ElevatorMoveSFXTop : ElevatorMoveSFXBot); val3.Play(); } } } [ClientRpc] public void FinishClientRpc(bool OpeningTop) { //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_00dc: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1202315323u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref OpeningTop, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1202315323u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; ButtonTopOut.interactable = !OpeningTop; ButtonTopIn.interactable = true; ButtonBotOut.interactable = OpeningTop; ButtonBotIn.interactable = true; DoorTop.SetBoolString("open", OpeningTop); DoorBot.SetBoolString("open", !OpeningTop); } } } [ClientRpc] public void ActivateClientRpc(bool DoorClosingTop) { //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_00dc: 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 val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(603419875u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref DoorClosingTop, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 603419875u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; DisableAllButtons(); DoorTop.SetBoolString("open", false); DoorBot.SetBoolString("open", false); AudioSource val3 = (DoorClosingTop ? DoorSFXTop : DoorSFXBot); val3.Play(); } } } [ClientRpc] private void TeleportItemClientRpc(NetworkBehaviourReference netBehaviourRefItem, Vector3 vPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2122057875u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefItem, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref vPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2122057875u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefItem)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get grabbable."); return; } GrabbableObject val4 = (GrabbableObject)val3; val4.targetFloorPosition = vPosition; } } [ClientRpc] private void TeleportPlayerClientRpc(NetworkBehaviourReference netBehaviourRefPlayer, Vector3 vPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_011c: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2927398326u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref vPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2927398326u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get player controller."); return; } PlayerControllerB val4 = (PlayerControllerB)val3; val4.TeleportPlayer(vPosition, false, 0f, false, true); } } [ClientRpc] private void TeleportEnemyClientRpc(NetworkBehaviourReference netBehaviourRefPlayer, Vector3 vPosition) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00b4: Unknown result type (might be due to invalid IL or missing references) //IL_00be: 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_00a4: Unknown result type (might be due to invalid IL or missing references) //IL_00e9: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_011b: Expected O, but got Unknown //IL_011c: Unknown result type (might be due to invalid IL or missing references) //IL_011d: 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)base.__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(4193820142u, val, (RpcDelivery)0); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); ((FastBufferWriter)(ref val2)).WriteValueSafe(ref vPosition); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 4193820142u, val, (RpcDelivery)0); } if ((int)base.__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { base.__rpc_exec_stage = (__RpcExecStage)0; NetworkBehaviour val3 = null; ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref val3, (NetworkManager)null); if ((Object)(object)val3 == (Object)null) { SCPCBDunGen.Logger.LogError((object)"Failed to get enemy AI."); return; } EnemyAI val4 = (EnemyAI)val3; val4.serverPosition = vPosition; } } [IteratorStateMachine(typeof(d__26))] private IEnumerator ConversionProcess() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new d__26(0) { <>4__this = this }; } 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 //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_0038: Expected O, but got Unknown //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0054: Expected O, but got Unknown //IL_0061: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Expected O, but got Unknown //IL_007d: Unknown result type (might be due to invalid IL or missing references) //IL_008c: Expected O, but got Unknown //IL_0099: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Expected O, but got Unknown //IL_00b5: Unknown result type (might be due to invalid IL or missing references) //IL_00c4: Expected O, but got Unknown //IL_00d1: Unknown result type (might be due to invalid IL or missing references) //IL_00e0: Expected O, but got Unknown ((NetworkBehaviour)this).__registerRpc(4240829023u, new RpcReceiveHandler(__rpc_handler_4240829023), "ActivateServerRpc"); ((NetworkBehaviour)this).__registerRpc(2883897837u, new RpcReceiveHandler(__rpc_handler_2883897837), "ElevatorDingClientRpc"); ((NetworkBehaviour)this).__registerRpc(2269153112u, new RpcReceiveHandler(__rpc_handler_2269153112), "ElevatorMoveSFXClientRpc"); ((NetworkBehaviour)this).__registerRpc(1202315323u, new RpcReceiveHandler(__rpc_handler_1202315323), "FinishClientRpc"); ((NetworkBehaviour)this).__registerRpc(603419875u, new RpcReceiveHandler(__rpc_handler_603419875), "ActivateClientRpc"); ((NetworkBehaviour)this).__registerRpc(2122057875u, new RpcReceiveHandler(__rpc_handler_2122057875), "TeleportItemClientRpc"); ((NetworkBehaviour)this).__registerRpc(2927398326u, new RpcReceiveHandler(__rpc_handler_2927398326), "TeleportPlayerClientRpc"); ((NetworkBehaviour)this).__registerRpc(4193820142u, new RpcReceiveHandler(__rpc_handler_4193820142), "TeleportEnemyClientRpc"); ((NetworkBehaviour)this).__initializeRpcs(); } private static void __rpc_handler_4240829023(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0029: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).ActivateServerRpc(); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2883897837(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_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool dingTop = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref dingTop, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).ElevatorDingClientRpc(dingTop); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2269153112(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_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool sFXTop = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref sFXTop, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).ElevatorMoveSFXClientRpc(sFXTop); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1202315323(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_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool openingTop = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref openingTop, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).FinishClientRpc(openingTop); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_603419875(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_005e: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool doorClosingTop = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe(ref doorClosingTop, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).ActivateClientRpc(doorClosingTop); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2122057875(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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefItem = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefItem, default(ForNetworkSerializable)); Vector3 vPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref vPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).TeleportItemClientRpc(netBehaviourRefItem, vPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2927398326(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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); Vector3 vPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref vPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).TeleportPlayerClientRpc(netBehaviourRefPlayer, vPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_4193820142(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_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005c: 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_006f: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference); ((FastBufferReader)(ref reader)).ReadValueSafe(ref netBehaviourRefPlayer, default(ForNetworkSerializable)); Vector3 vPosition = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref vPosition); target.__rpc_exec_stage = (__RpcExecStage)1; ((SCPCBElevNuclearManager)(object)target).TeleportEnemyClientRpc(netBehaviourRefPlayer, vPosition); target.__rpc_exec_stage = (__RpcExecStage)0; } } protected internal override string __getTypeName() { return "SCPCBElevNuclearManager"; } } public static class MyPluginInfo { public const string PLUGIN_GUID = "SCPCBDunGen"; public const string PLUGIN_NAME = "SCPCBDunGen"; public const string PLUGIN_VERSION = "4.5.0"; } } namespace SCPCBDunGen.Patches { [HarmonyPatch(typeof(RoundManager))] public static class RoundManagerPatch { [HarmonyPatch("SpawnScrapInLevel")] [HarmonyPostfix] public static void SpawnScrapInLevel_Postfix(RoundManager __instance) { SetItemSpawnPoints(__instance); SCP914Configuration(__instance); } internal static void SetItemSpawnPoints(RoundManager rm) { if (!(((Object)rm.dungeonGenerator.Generator.DungeonFlow).name == "SCPFlow")) { return; } StartOfRound instance = StartOfRound.Instance; if ((Object)(object)instance == (Object)null) { SCPCBDunGen.Logger.LogError((object)"StartOfRound instance is null."); return; } Item val = instance.allItemsList.itemsList.Find((Item x) => ((Object)x).name == "BottleBin"); if ((Object)(object)val == (Object)null) { SCPCBDunGen.Logger.LogError((object)"BottleBin not found. Scrap may spawn incorrectly."); return; } Item val2 = instance.allItemsList.itemsList.Find((Item x) => ((Object)x).name == "FancyCup"); ItemGroup spawnableItems = val.spawnPositionTypes.Find((ItemGroup x) => ((Object)x).name == "GeneralItemClass"); ItemGroup val3 = val.spawnPositionTypes.Find((ItemGroup x) => ((Object)x).name == "TabletopItems"); ItemGroup val4 = (ItemGroup)((!((Object)(object)val2 == (Object)null)) ? ((object)val2.spawnPositionTypes.Find((ItemGroup x) => ((Object)x).name == "SmallItems")) : ((object)val3)); ItemGroup spawnableItems2 = val4; int num = 0; int num2 = 0; int num3 = 0; RandomScrapSpawn[] array = Object.FindObjectsOfType(); foreach (RandomScrapSpawn val5 in array) { switch (((Object)val5.spawnableItems).name) { case "SmallItems": val5.spawnableItems = spawnableItems2; num3++; break; case "TabletopItems": val5.spawnableItems = val3; num2++; break; case "GeneralItemClass": val5.spawnableItems = spawnableItems; num++; break; } } SCPCBDunGen.Logger.LogInfo((object)$"Scrap replacement: General={num}, Tabletop={num2}, Small={num3}"); if (num + num2 + num3 < 10) { SCPCBDunGen.Logger.LogWarning((object)"Low scrap count detected."); } } internal static void SCP914Configuration(RoundManager rm) { if (!(((Object)rm.dungeonGenerator.Generator.DungeonFlow).name == "SCPFlow")) { return; } SCP914Converter sCP914Converter = Object.FindObjectOfType(); if ((Object)(object)sCP914Converter == (Object)null) { SCPCBDunGen.Logger.LogInfo((object)"No SCP-914 room found in this level."); return; } List itemsList = StartOfRound.Instance.allItemsList.itemsList; if (itemsList.Count == 0) { SCPCBDunGen.Logger.LogError((object)"Item list empty in StartOfRound."); return; } foreach (SCP914Conversion sCP914Conversion in SCPCBDunGen.Instance.SCP914Conversions) { AddConversions(sCP914Converter, itemsList, sCP914Conversion.ItemName, sCP914Conversion.RoughResults, sCP914Conversion.CoarseResults, sCP914Conversion.OneToOneResults, sCP914Conversion.FineResults, sCP914Conversion.VeryFineResults); } } public static void AddConversions(SCP914Converter converter, List allItems, string itemName, IEnumerable rough, IEnumerable coarse, IEnumerable oneToOne, IEnumerable fine, IEnumerable veryFine) { string key = itemName.ToLowerInvariant(); IEnumerable[] array = new IEnumerable[5] { rough, coarse, oneToOne, fine, veryFine }; if (key.StartsWith("!")) { string enemyNameLower = key.Substring(1); ExtendedEnemyType val = PatchedContent.ExtendedEnemyTypes.Find((ExtendedEnemyType e) => e.EnemyType.enemyName.ToLowerInvariant() == enemyNameLower); if ((Object)(object)val == (Object)null) { SCPCBDunGen.Logger.LogError((object)("Enemy not found for SCP914 conversion: " + enemyNameLower)); return; } { foreach (object value in Enum.GetValues(typeof(SCP914Converter.SCP914Setting))) { SCP914Converter.SCP914Setting sCP914Setting = (SCP914Converter.SCP914Setting)value; List list = new List(); List list2 = new List(); foreach (string item in array[(int)sCP914Setting]) { string t2 = item.ToLowerInvariant(); if (t2 == "*") { list2.Add(null); } else if (t2 == "@") { list2.Add(val.EnemyType); } else if (t2.StartsWith("!")) { string enemyTarget2 = t2.Substring(1); ExtendedEnemyType val2 = PatchedContent.ExtendedEnemyTypes.Find((ExtendedEnemyType e) => e.EnemyType.enemyName.ToLowerInvariant() == enemyTarget2); if ((Object)(object)val2 != (Object)null) { list2.Add(val2.EnemyType); } else { SCPCBDunGen.Logger.LogWarning((object)("Enemy '" + enemyTarget2 + "' not found (conversion ignored).")); } } else { Item val3 = allItems.Find((Item i) => i.itemName.ToLowerInvariant() == t2); if ((Object)(object)val3 != (Object)null) { list.Add(val3); } else { SCPCBDunGen.Logger.LogWarning((object)("Item '" + t2 + "' not found (conversion ignored).")); } } } if (list.Count > 0) { converter.AddConversion(sCP914Setting, val.EnemyType, list); } if (list2.Count > 0) { converter.AddConversion(sCP914Setting, val.EnemyType, list2); } } return; } } Item val4 = allItems.Find((Item i) => i.itemName.ToLowerInvariant() == key); if ((Object)(object)val4 == (Object)null) { SCPCBDunGen.Logger.LogError((object)("Item not found for SCP914 conversion: " + itemName)); return; } foreach (object value2 in Enum.GetValues(typeof(SCP914Converter.SCP914Setting))) { SCP914Converter.SCP914Setting sCP914Setting2 = (SCP914Converter.SCP914Setting)value2; List list3 = new List(); List list4 = new List(); foreach (string item2 in array[(int)sCP914Setting2]) { string t = item2.ToLowerInvariant(); if (t == "*") { list3.Add(null); } else if (t == "@") { list3.Add(val4); } else if (t.StartsWith("!")) { string enemyTarget = t.Substring(1); ExtendedEnemyType val5 = PatchedContent.ExtendedEnemyTypes.Find((ExtendedEnemyType e) => e.EnemyType.enemyName.ToLowerInvariant() == enemyTarget); if ((Object)(object)val5 != (Object)null) { list4.Add(val5.EnemyType); } else { SCPCBDunGen.Logger.LogWarning((object)("Enemy '" + enemyTarget + "' not found (conversion ignored).")); } } else { Item val6 = allItems.Find((Item i) => i.itemName.ToLowerInvariant() == t); if ((Object)(object)val6 != (Object)null) { list3.Add(val6); } else { SCPCBDunGen.Logger.LogWarning((object)("Item '" + t + "' not found (conversion ignored).")); } } } if (list3.Count > 0) { converter.AddConversion(sCP914Setting2, val4, list3); } if (list4.Count > 0) { converter.AddConversion(sCP914Setting2, val4, list4); } } } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { } } } namespace SCPCBDunGen.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }