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 PiggyVarietyMod;
using SCPCBDunGen.NetcodePatcher;
using Unity.Netcode;
using UnityEngine;
using UnityEngine.AI;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")]
[assembly: IgnoresAccessChecksTo("Assembly-CSharp")]
[assembly: IgnoresAccessChecksTo("ClientNetworkTransform")]
[assembly: IgnoresAccessChecksTo("DissonanceVoip")]
[assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")]
[assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")]
[assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")]
[assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")]
[assembly: IgnoresAccessChecksTo("Unity.Burst")]
[assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")]
[assembly: IgnoresAccessChecksTo("Unity.Collections")]
[assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem")]
[assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")]
[assembly: IgnoresAccessChecksTo("Unity.Jobs")]
[assembly: IgnoresAccessChecksTo("Unity.Mathematics")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")]
[assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")]
[assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")]
[assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")]
[assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Configuration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Device")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Environments.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Internal")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Networking")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Registration")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Scheduler")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Telemetry")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Core.Threading")]
[assembly: IgnoresAccessChecksTo("Unity.Services.QoS")]
[assembly: IgnoresAccessChecksTo("Unity.Services.Relay")]
[assembly: IgnoresAccessChecksTo("Unity.TextMeshPro")]
[assembly: IgnoresAccessChecksTo("Unity.Timeline")]
[assembly: IgnoresAccessChecksTo("Unity.VisualEffectGraph.Runtime")]
[assembly: IgnoresAccessChecksTo("UnityEngine.ARModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.NVIDIAModule")]
[assembly: IgnoresAccessChecksTo("UnityEngine.UI")]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("SCPCBDunGen")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("4.4.0.0")]
[assembly: AssemblyInformationalVersion("4.4.0")]
[assembly: AssemblyProduct("SCPCBDunGen")]
[assembly: AssemblyTitle("SCPCBDunGen")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("4.4.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.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
internal sealed class NullableAttribute : Attribute
{
public readonly byte[] NullableFlags;
public NullableAttribute(byte P_0)
{
NullableFlags = new byte[1] { P_0 };
}
public NullableAttribute(byte[] P_0)
{
NullableFlags = P_0;
}
}
[CompilerGenerated]
[Microsoft.CodeAnalysis.Embedded]
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
internal sealed class NullableContextAttribute : Attribute
{
public readonly byte Flag;
public NullableContextAttribute(byte P_0)
{
Flag = P_0;
}
}
[CompilerGenerated]
[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 <ConvertPlayerMaskedWaitForSpawn>b__0()
{
return Time.realtimeSinceStartup - fStartTime > 20f || ((NetworkObjectReference)(ref netObjRefMasked)).TryGet(ref netObjMasked, (NetworkManager)null);
}
internal bool <ConvertPlayerMaskedWaitForSpawn>b__1()
{
return Time.realtimeSinceStartup - fStartTime > 20f || ((NetworkBehaviourReference)(ref netBehaviourRefPlayer)).TryGet(ref netBehaviourPlayer, (NetworkManager)null);
}
internal bool <ConvertPlayerMaskedWaitForSpawn>b__2()
{
return Time.realtimeSinceStartup - fStartTime > 20f || (Object)(object)playerController.deadBody != (Object)null;
}
}
[CompilerGenerated]
private sealed class <ConversionProcess>d__38 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public SCP914Converter <>4__this;
private List<NetworkObjectReference> <lNetworkObjectReferences>5__1;
private List<int> <lScrapValues>5__2;
private bool <bChargeBatteries>5__3;
private BoxCollider <InputCollider>5__4;
private Collider[] <inputObjects>5__5;
private Collider[] <>s__6;
private int <>s__7;
private Collider <collider>5__8;
private GameObject <gameObject>5__9;
private GrabbableObject <grabbable>5__10;
private PlayerControllerB <playerController>5__11;
private EnemyAI <enemy>5__12;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <ConversionProcess>d__38(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<lNetworkObjectReferences>5__1 = null;
<lScrapValues>5__2 = null;
<InputCollider>5__4 = null;
<inputObjects>5__5 = null;
<>s__6 = null;
<collider>5__8 = null;
<gameObject>5__9 = null;
<grabbable>5__10 = null;
<playerController>5__11 = null;
<enemy>5__12 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0045: Unknown result type (might be due to invalid IL or missing references)
//IL_004f: Expected O, but got Unknown
//IL_0187: Unknown result type (might be due to invalid IL or missing references)
//IL_019c: Unknown result type (might be due to invalid IL or missing references)
//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
//IL_01ac: Unknown result type (might be due to invalid IL or missing references)
//IL_01b6: Unknown result type (might be due to invalid IL or missing references)
//IL_03ea: Unknown result type (might be due to invalid IL or missing references)
//IL_03f4: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>4__this.RefineAudioSrc.Play();
<>2__current = (object)new WaitForSeconds(7f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
if ((Object)(object)<>4__this.roundManager == (Object)null)
{
SCPCBDunGen.Logger.LogInfo((object)"Getting round manager");
<>4__this.roundManager = Object.FindObjectOfType<RoundManager>();
if ((Object)(object)<>4__this.roundManager == (Object)null)
{
SCPCBDunGen.Logger.LogError((object)"Failed to find round manager.");
return false;
}
}
if ((Object)(object)<>4__this.ScrapTransform == (Object)null)
{
SCP914Converter sCP914Converter = <>4__this;
GameObject obj = GameObject.FindGameObjectWithTag("MapPropsContainer");
sCP914Converter.ScrapTransform = ((obj != null) ? obj.transform : null);
if ((Object)(object)<>4__this.ScrapTransform == (Object)null)
{
SCPCBDunGen.Logger.LogError((object)"SCPCB Failed to find props container.");
return false;
}
}
<lNetworkObjectReferences>5__1 = new List<NetworkObjectReference>();
<lScrapValues>5__2 = new List<int>();
<bChargeBatteries>5__3 = <>4__this.iCurrentState > 1;
<InputCollider>5__4 = <>4__this.InputStore;
if ((Object)(object)<InputCollider>5__4 == (Object)null)
{
SCPCBDunGen.Logger.LogError((object)"Failed to get input store collider.");
return false;
}
<inputObjects>5__5 = Physics.OverlapBox(<InputCollider>5__4.center + ((Component)<InputCollider>5__4).gameObject.transform.position, <InputCollider>5__4.size / 2f);
SCPCBDunGen.Logger.LogInfo((object)$"Contained item count: {<inputObjects>5__5.Length}");
<>s__6 = <inputObjects>5__5;
for (<>s__7 = 0; <>s__7 < <>s__6.Length; <>s__7++)
{
<collider>5__8 = <>s__6[<>s__7];
<gameObject>5__9 = ((Component)<collider>5__8).gameObject;
SCPCBDunGen.Logger.LogInfo((object)("Converting " + ((Object)<gameObject>5__9).name));
<grabbable>5__10 = <gameObject>5__9.GetComponent<GrabbableObject>();
if ((Object)(object)<grabbable>5__10 != (Object)null)
{
SCPCBDunGen.Logger.LogInfo((object)"Converting item.");
<>4__this.ConvertItem(<lNetworkObjectReferences>5__1, <lScrapValues>5__2, <grabbable>5__10);
}
else
{
<playerController>5__11 = <gameObject>5__9.GetComponent<PlayerControllerB>();
if ((Object)(object)<playerController>5__11 != (Object)null)
{
SCPCBDunGen.Logger.LogInfo((object)"Converting player.");
<>4__this.ConvertPlayer(<playerController>5__11);
}
else
{
<enemy>5__12 = <gameObject>5__9.GetComponentInParent<EnemyAI>();
if ((Object)(object)<enemy>5__12 != (Object)null)
{
SCPCBDunGen.Logger.LogInfo((object)"Converting enemy.");
<>4__this.ConvertEnemy(<lNetworkObjectReferences>5__1, <lScrapValues>5__2, <enemy>5__12);
}
else
{
SCPCBDunGen.Logger.LogWarning((object)("Unidentified object: " + ((Object)<gameObject>5__9).name + ". Not converting."));
<gameObject>5__9 = null;
<grabbable>5__10 = null;
<playerController>5__11 = null;
<enemy>5__12 = null;
<collider>5__8 = null;
}
}
}
}
<>s__6 = null;
SCPCBDunGen.Logger.LogInfo((object)"Finished spawning scrap, syncing with clients");
<>4__this.SpawnItemsClientRpc(<lNetworkObjectReferences>5__1.ToArray(), <lScrapValues>5__2.ToArray(), <bChargeBatteries>5__3);
<>2__current = (object)new WaitForSeconds(7f);
<>1__state = 2;
return true;
case 2:
<>1__state = -1;
<>4__this.RefineFinishClientRpc();
<>4__this.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 <ConvertPlayerMaskedWaitForSpawn>d__47 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public NetworkObjectReference netObjRefMasked;
public NetworkBehaviourReference netBehaviourRefPlayer;
public SCP914Converter <>4__this;
private <>c__DisplayClass47_0 <>8__1;
private MaskedPlayerEnemy <maskedPlayerEnemy>5__2;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <ConvertPlayerMaskedWaitForSpawn>d__47(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>8__1 = null;
<maskedPlayerEnemy>5__2 = null;
<>1__state = -2;
}
private bool MoveNext()
{
//IL_004b: Unknown result type (might be due to invalid IL or missing references)
//IL_0050: Unknown result type (might be due to invalid IL or missing references)
//IL_005c: 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)
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00ab: Expected O, but got Unknown
//IL_00cd: Unknown result type (might be due to invalid IL or missing references)
//IL_00d7: Expected O, but got Unknown
//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
//IL_0102: Expected O, but got Unknown
//IL_012f: Unknown result type (might be due to invalid IL or missing references)
//IL_0139: 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<bool>)(() => 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<bool>)(() => 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<bool>)(() => 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>5__2 = ((Component)<>8__1.netObjMasked).GetComponent<MaskedPlayerEnemy>();
<maskedPlayerEnemy>5__2.mimickingPlayer = <>8__1.playerController;
<maskedPlayerEnemy>5__2.SetSuit(<>8__1.playerController.currentSuitID);
((EnemyAI)<maskedPlayerEnemy>5__2).SetEnemyOutside(false);
<>8__1.playerController.redirectToEnemy = (EnemyAI)(object)<maskedPlayerEnemy>5__2;
<maskedPlayerEnemy>5__2 = null;
}
}
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<Item, List<Item>>[] arItemMappings = new Dictionary<Item, List<Item>>[5]
{
new Dictionary<Item, List<Item>>(),
new Dictionary<Item, List<Item>>(),
new Dictionary<Item, List<Item>>(),
new Dictionary<Item, List<Item>>(),
new Dictionary<Item, List<Item>>()
};
private Dictionary<EnemyType, List<EnemyType>>[] arEnemyMappings = new Dictionary<EnemyType, List<EnemyType>>[5]
{
new Dictionary<EnemyType, List<EnemyType>>(),
new Dictionary<EnemyType, List<EnemyType>>(),
new Dictionary<EnemyType, List<EnemyType>>(),
new Dictionary<EnemyType, List<EnemyType>>(),
new Dictionary<EnemyType, List<EnemyType>>()
};
private Dictionary<Item, List<EnemyType>>[] arItemEnemyMappings = new Dictionary<Item, List<EnemyType>>[5]
{
new Dictionary<Item, List<EnemyType>>(),
new Dictionary<Item, List<EnemyType>>(),
new Dictionary<Item, List<EnemyType>>(),
new Dictionary<Item, List<EnemyType>>(),
new Dictionary<Item, List<EnemyType>>()
};
private Dictionary<EnemyType, List<Item>>[] arEnemyItemMappings = new Dictionary<EnemyType, List<Item>>[5]
{
new Dictionary<EnemyType, List<Item>>(),
new Dictionary<EnemyType, List<Item>>(),
new Dictionary<EnemyType, List<Item>>(),
new Dictionary<EnemyType, List<Item>>(),
new Dictionary<EnemyType, List<Item>>()
};
private int iCurrentState = 0;
private bool bActive = false;
private Transform ScrapTransform;
private RoundManager roundManager;
private StartOfRound StartOfRound;
private EnemyType MaskedType;
public void AddConversion(SCP914Setting setting, Item itemInput, List<Item> lItemOutputs)
{
Dictionary<Item, List<Item>> 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<EnemyType> lEnemyOutputs)
{
Dictionary<EnemyType, List<EnemyType>> 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<EnemyType> lEnemyOutputs)
{
Dictionary<Item, List<EnemyType>> 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<Item> lItemOutputs)
{
Dictionary<EnemyType, List<Item>> dictionary = arEnemyItemMappings[(int)setting];
if (dictionary.TryGetValue(enemyInput, out var value))
{
value.AddRange(lItemOutputs);
}
else
{
arEnemyItemMappings[(int)setting].Add(enemyInput, lItemOutputs);
}
}
private Dictionary<Item, List<Item>> GetItemMapping()
{
return arItemMappings[iCurrentState];
}
private Dictionary<EnemyType, List<EnemyType>> GetEnemyMapping()
{
return arEnemyMappings[iCurrentState];
}
private Dictionary<Item, List<EnemyType>> GetItemEnemyMapping()
{
return arItemEnemyMappings[iCurrentState];
}
private Dictionary<EnemyType, List<Item>> GetEnemyItemMapping()
{
return arEnemyItemMappings[iCurrentState];
}
private Vector3 GetRandomNavMeshPositionInCollider(Collider collider)
{
//IL_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: 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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_006c: Unknown result type (might be due to invalid IL or missing references)
//IL_0071: Unknown result type (might be due to invalid IL or missing references)
//IL_0074: Unknown result type (might be due to invalid IL or missing references)
//IL_0086: 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_00a6: Unknown result type (might be due to invalid IL or missing references)
//IL_009c: Unknown result type (might be due to invalid IL or missing references)
//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
//IL_00aa: 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_0002: Unknown result type (might be due to invalid IL or missing references)
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
//IL_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0011: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//IL_0019: 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_002c: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: Unknown result type (might be due to invalid IL or missing references)
//IL_0066: Unknown result type (might be due to invalid IL or missing references)
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_00e6: Unknown result type (might be due to invalid IL or missing references)
//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
//IL_00f3: 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)
//IL_011d: 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<bool>(ref flag, default(ForPrimitives));
if (flag)
{
((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkObjectReference>(arNetworkObjectReferences, default(ForNetworkSerializable));
}
bool flag2 = arScrapValues != null;
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag2, default(ForPrimitives));
if (flag2)
{
((FastBufferWriter)(ref val2)).WriteValueSafe<int>(arScrapValues, default(ForPrimitives));
}
((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(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<GrabbableObject>();
if (component.itemProperties.isScrap)
{
component.SetScrapValue(arScrapValues[i]);
}
if (component.itemProperties.requiresBattery)
{
component.insertedBattery.charge = (bChargeBattery ? 1f : 0f);
}
}
}
}
[IteratorStateMachine(typeof(<ConversionProcess>d__38))]
private IEnumerator ConversionProcess()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <ConversionProcess>d__38(0)
{
<>4__this = this
};
}
private void ConvertItemToItem(List<NetworkObjectReference> lNetworkObjectReferences, List<int> lScrapValues, GrabbableObject grabbable)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: 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_00c5: Unknown result type (might be due to invalid IL or missing references)
//IL_0084: 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_01ca: 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 List<Item> 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<GameObject>(val4.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform);
val2 = val.GetComponent<NetworkObject>();
val3 = val.GetComponent<GrabbableObject>();
}
}
else
{
SCPCBDunGen.Logger.LogInfo((object)"No conversion, making new item copy with new scrap value");
val = Object.Instantiate<GameObject>(grabbable.itemProperties.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform);
val2 = val.GetComponent<NetworkObject>();
val3 = val.GetComponent<GrabbableObject>();
}
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<GrabbableObject>();
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_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_001c: 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<NetworkObjectReference> lNetworkObjectReferences, List<int> lScrapValues, GrabbableObject grabbable)
{
if (grabbable.isHeld)
{
return;
}
SCPCBDunGen.Logger.LogInfo((object)("Found grabbable item " + ((Object)grabbable.itemProperties).name));
Dictionary<Item, List<Item>> itemMapping = GetItemMapping();
Dictionary<Item, List<EnemyType>> 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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
//IL_0122: 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<NetworkBehaviourReference>(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_010e: Unknown result type (might be due to invalid IL or missing references)
//IL_0114: Expected O, but got Unknown
//IL_0115: 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)
//IL_0125: 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<NetworkBehaviourReference>(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));
}
}
[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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
//IL_012a: Unknown result type (might be due to invalid IL or missing references)
//IL_0130: 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<NetworkBehaviourReference>(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_0167: Unknown result type (might be due to invalid IL or missing references)
//IL_016d: 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<NetworkBehaviourReference>(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<StartOfRound>();
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_00f9: Unknown result type (might be due to invalid IL or missing references)
//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
//IL_0101: Unknown result type (might be due to invalid IL or missing references)
if ((Object)(object)StartOfRound == (Object)null)
{
StartOfRound = Object.FindObjectOfType<StartOfRound>();
if ((Object)(object)StartOfRound == (Object)null)
{
SCPCBDunGen.Logger.LogError((object)"Failed to find StartOfRound.");
return;
}
}
List<int> list = new List<int>();
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(<ConvertPlayerMaskedWaitForSpawn>d__47))]
private IEnumerator ConvertPlayerMaskedWaitForSpawn(NetworkObjectReference netObjRefMasked, NetworkBehaviourReference netBehaviourRefPlayer)
{
//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)
//IL_0015: Unknown result type (might be due to invalid IL or missing references)
//IL_0016: Unknown result type (might be due to invalid IL or missing references)
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <ConvertPlayerMaskedWaitForSpawn>d__47(0)
{
<>4__this = this,
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_0129: Unknown result type (might be due to invalid IL or missing references)
//IL_012f: Expected O, but got Unknown
//IL_0130: 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_0140: Unknown result type (might be due to invalid IL or missing references)
//IL_016a: Unknown result type (might be due to invalid IL or missing references)
//IL_016b: 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<NetworkObjectReference>(ref netObjRefMasked, default(ForNetworkSerializable));
((FastBufferWriter)(ref val2)).WriteValueSafe<NetworkBehaviourReference>(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));
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_0032: Unknown result type (might be due to invalid IL or missing references)
//IL_0038: Expected O, but got Unknown
//IL_0039: Unknown result type (might be due to invalid IL or missing references)
//IL_0043: 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_016f: Unknown result type (might be due to invalid IL or missing references)
//IL_017c: Unknown result type (might be due to invalid IL or missing references)
//IL_0181: Unknown result type (might be due to invalid IL or missing references)
//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
//IL_01f6: 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));
if ((Object)(object)StartOfRound == (Object)null)
{
StartOfRound = Object.FindObjectOfType<StartOfRound>();
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<MaskedPlayerEnemy>();
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_001f: 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_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_0058: Unknown result type (might be due to invalid IL or missing references)
//IL_0062: 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_00a7: 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)
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_011b: Unknown result type (might be due to invalid IL or missing references)
//IL_0121: Expected O, but got Unknown
//IL_0122: 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)
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<NetworkBehaviourReference>(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_0016: 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_002d: Unknown result type (might be due to invalid IL or missing references)
//IL_002f: Unknown result type (might be due to invalid IL or missing references)
//IL_0030: Unknown result type (might be due to invalid IL or missing references)
//IL_003d: 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_000f: Unknown result type (might be due to invalid IL or missing references)
//IL_0014: Unknown result type (might be due to invalid IL or missing references)
//IL_0063: 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_0083: Unknown result type (might be due to invalid IL or missing references)
Dictionary<EnemyType, List<EnemyType>> 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);
bool flag = false;
}
MoveEnemy(enemy, randomNavMeshPositionInCollider);
}
private void ConvertEnemyToItem(List<NetworkObjectReference> lNetworkObjectReferences, List<int> lScrapValues, EnemyAI enemy)
{
//IL_0008: Unknown result type (might be due to invalid IL or missing references)
//IL_000d: Unknown result type (might be due to invalid IL or missing references)
//IL_00cf: 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_00d8: Unknown result type (might be due to invalid IL or missing references)
//IL_0093: Unknown result type (might be due to invalid IL or missing references)
//IL_0094: Unknown result type (might be due to invalid IL or missing references)
//IL_01c6: 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 List<Item> 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<GameObject>(val4.spawnPrefab, randomPositionInCollider, Quaternion.identity, ScrapTransform);
val2 = val.GetComponent<NetworkObject>();
val3 = val.GetComponent<GrabbableObject>();
}
}
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<GrabbableObject>();
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<NetworkObjectReference> lNetworkObjectReferences, List<int> lScrapValues, EnemyAI enemy)
{
//IL_0098: 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_00a1: Unknown result type (might be due to invalid IL or missing references)
Dictionary<EnemyType, List<Item>> enemyItemMapping = GetEnemyItemMapping();
Dictionary<EnemyType, List<EnemyType>> enemyMapping = GetEnemyMapping();
if (GetEnemyMapping().TryGetValue(enemy.enemyType, out List<EnemyType> _))
{
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<bool>(ref flag, default(ForPrimitives));
NetworkObjectReference[] arNetworkObjectReferences = null;
if (flag)
{
((FastBufferReader)(ref reader)).ReadValueSafe<NetworkObjectReference>(ref arNetworkObjectReferences, default(ForNetworkSerializable));
}
bool flag2 = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag2, default(ForPrimitives));
int[] arScrapValues = null;
if (flag2)
{
((FastBufferReader)(ref reader)).ReadValueSafe<int>(ref arScrapValues, default(ForPrimitives));
}
bool bChargeBattery = default(bool);
((FastBufferReader)(ref reader)).ReadValueSafe<bool>(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<NetworkBehaviourReference>(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<NetworkBehaviourReference>(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<NetworkBehaviourReference>(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<NetworkBehaviourReference>(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<NetworkObjectReference>(ref netObjRefMasked, default(ForNetworkSerializable));
NetworkBehaviourReference netBehaviourRefPlayer = default(NetworkBehaviourReference);
((FastBufferReader)(ref reader)).ReadValueSafe<NetworkBehaviourReference>(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<NetworkBehaviourReference>(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 <DoorToggleButtonUsable>d__15 : IEnumerator<object>, IEnumerator, IDisposable
{
private int <>1__state;
private object <>2__current;
public SCPDoorMover <>4__this;
object IEnumerator<object>.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
object IEnumerator.Current
{
[DebuggerHidden]
get
{
return <>2__current;
}
}
[DebuggerHidden]
public <DoorToggleButtonUsable>d__15(int <>1__state)
{
this.<>1__state = <>1__state;
}
[DebuggerHidden]
void IDisposable.Dispose()
{
<>1__state = -2;
}
private bool MoveNext()
{
//IL_0031: Unknown result type (might be due to invalid IL or missing references)
//IL_003b: Expected O, but got Unknown
//IL_005d: Unknown result type (might be due to invalid IL or missing references)
//IL_0067: Expected O, but got Unknown
switch (<>1__state)
{
default:
return false;
case 0:
<>1__state = -1;
<>2__current = (object)new WaitForSeconds(1f);
<>1__state = 1;
return true;
case 1:
<>1__state = -1;
<>4__this.bDoorWaiting = false;
<>2__current = (object)new WaitForSeconds(1f);
<>1__state = 2;
return true;
case 2:
<>1__state = -1;
<>4__this.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<AudioClip> doorAudioClips;
public AudioClip doorAudioClipFast;
public AudioSource doorSFXSource;
public InteractTrigger ButtonA;
public InteractTrigger ButtonB;
private bool bDoorOpen = false;
private bool bDoorWaiting = false;
private List<EnemyAICollisionDetect> EnemiesInCollider = new List<EnemyAICollisionDetect>();
private void OnTriggerEnter(Collider other)
{
if (!((Object)(object)NetworkManager.Singleton == (Object)null) && ((NetworkBehaviour)this).IsServer && ((Component)other).CompareTag("Enemy"))
{
EnemyAICollisionDetect component = ((Component)other).GetComponent<EnemyAICollisionDetect>();
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<EnemyAICollisionDetect>();
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(<DoorToggleButtonUsable>d__15))]
private IEnumerator DoorToggleButtonUsable()
{
//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
return new <DoorToggleButtonUsable>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: Inv