Please disclose if your mod was created primarily using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of PandoraEnemy v0.0.1
BepInEx/plugins/PandoraEnemy/com.github.xuuxiaolan.pandoraenemy.dll
Decompiled a month agousing System; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; 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.Logging; using CodeRebirthLib; using CodeRebirthLib.AssetManagement; using CodeRebirthLib.ContentManagement; using CodeRebirthLib.Extensions; using CodeRebirthLib.Util.INetworkSerializables; using CodeRebirthLib.Util.Pathfinding; using GameNetcodeStuff; using IL.GameNetcodeStuff; using Microsoft.CodeAnalysis; using Mono.Cecil.Cil; using MonoMod.Cil; using On; using On.GameNetcodeStuff; using PandoraEnemy.Content.Enemies; using PandoraEnemy.Patches; using Unity.Netcode; using Unity.Netcode.Components; using UnityEngine; using UnityEngine.AI; using UnityEngine.Events; using UnityEngine.InputSystem; using com.github.xuuxiaolan.pandoraenemy.NetcodePatcher; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: IgnoresAccessChecksTo("AmazingAssets.TerrainToMesh")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp-firstpass")] [assembly: IgnoresAccessChecksTo("Assembly-CSharp")] [assembly: IgnoresAccessChecksTo("ClientNetworkTransform")] [assembly: IgnoresAccessChecksTo("com.olegknyazev.softmask")] [assembly: IgnoresAccessChecksTo("DissonanceVoip")] [assembly: IgnoresAccessChecksTo("EasyTextEffects")] [assembly: IgnoresAccessChecksTo("Facepunch Transport for Netcode for GameObjects")] [assembly: IgnoresAccessChecksTo("Facepunch.Steamworks.Win64")] [assembly: IgnoresAccessChecksTo("Unity.AI.Navigation")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging")] [assembly: IgnoresAccessChecksTo("Unity.Animation.Rigging.DocCodeExamples")] [assembly: IgnoresAccessChecksTo("Unity.Burst")] [assembly: IgnoresAccessChecksTo("Unity.Burst.Unsafe")] [assembly: IgnoresAccessChecksTo("Unity.Collections")] [assembly: IgnoresAccessChecksTo("Unity.Collections.LowLevel.ILSupport")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem")] [assembly: IgnoresAccessChecksTo("Unity.InputSystem.ForUI")] [assembly: IgnoresAccessChecksTo("Unity.Jobs")] [assembly: IgnoresAccessChecksTo("Unity.Mathematics")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.Common")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.MetricTypes")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStats")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Component")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Configuration")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsMonitor.Implementation")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetStatsReporting")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkProfiler.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Multiplayer.Tools.NetworkSolutionInterface")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Components")] [assembly: IgnoresAccessChecksTo("Unity.Netcode.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.Networking.Transport")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Csg")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.KdTree")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Poly2Tri")] [assembly: IgnoresAccessChecksTo("Unity.ProBuilder.Stl")] [assembly: IgnoresAccessChecksTo("Unity.Profiling.Core")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.Core.ShaderLibrary")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Config.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.HighDefinition.Runtime")] [assembly: IgnoresAccessChecksTo("Unity.RenderPipelines.ShaderGraph.ShaderGraphLibrary")] [assembly: IgnoresAccessChecksTo("Unity.Services.Authentication")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Analytics")] [assembly: IgnoresAccessChecksTo("Unity.Services.Core.Components")] [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: AssemblyCompany("com.github.xuuxiaolan.pandoraenemy")] [assembly: AssemblyConfiguration("Release")] [assembly: AssemblyFileVersion("0.0.1.0")] [assembly: AssemblyInformationalVersion("0.0.1+10c78aa5ce042f9f6a67bae58f752956f043e00d")] [assembly: AssemblyProduct("PandoraEnemy")] [assembly: AssemblyTitle("com.github.xuuxiaolan.pandoraenemy")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("0.0.1.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 PandoraEnemy { public class PandoraAdditionalPlayerData : MonoBehaviour { private static Dictionary<PlayerControllerB, PandoraAdditionalPlayerData> _playerData = new Dictionary<PlayerControllerB, PandoraAdditionalPlayerData>(); public float OverrideSinkingValue; public PandoraEnemyAI inAnimationWithPandora; public static PandoraAdditionalPlayerData GetOrCreate(PlayerControllerB player) { if (_playerData.TryGetValue(player, out PandoraAdditionalPlayerData value)) { return value; } value = ((Component)player).gameObject.AddComponent<PandoraAdditionalPlayerData>(); _playerData[player] = value; return value; } } [BepInPlugin("com.github.xuuxiaolan.pandoraenemy", "PandoraEnemy", "0.0.1")] [BepInDependency(/*Could not decode attribute arguments.*/)] public class PandoraEnemy : BaseUnityPlugin { internal static ManualLogSource Logger { get; private set; } public static CRMod Mod { get; private set; } private void Awake() { Logger = ((BaseUnityPlugin)this).Logger; NetcodePatcher(); AssetBundle val = CRLib.LoadBundle(Assembly.GetExecutingAssembly(), "pandoracontentassets"); Mod = CRLib.RegisterMod((BaseUnityPlugin)(object)this, val); Mod.Logger = Logger; SinkingPatches.Init(); SpacebarMinigamePatches.Init(); Mod.RegisterContentHandlers(); Logger.LogInfo((object)"com.github.xuuxiaolan.pandoraenemy v0.0.1 has loaded!"); } private void NetcodePatcher() { IEnumerable<Type> loadableTypes = AssemblyExtensions.GetLoadableTypes(Assembly.GetExecutingAssembly()); foreach (Type item in loadableTypes) { if (item.IsNested) { continue; } MethodInfo[] methods = item.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); MethodInfo[] array = methods; foreach (MethodInfo methodInfo in array) { object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false); if (customAttributes.Length != 0) { methodInfo.Invoke(null, null); } } } } } public static class MyPluginInfo { public const string PLUGIN_GUID = "com.github.xuuxiaolan.pandoraenemy"; public const string PLUGIN_NAME = "PandoraEnemy"; public const string PLUGIN_VERSION = "0.0.1"; } } namespace PandoraEnemy.Patches { internal static class SinkingPatches { [CompilerGenerated] private static class <>O { public static Manipulator <0>__OverrideSinkingValue; public static hook_Awake <1>__AddAdditionalPlayerData; public static hook_PlayerIsTargetable <2>__NotTargetableWhenInAnimationWithPandora; } [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static hook_DamagePlayerFromOtherClientClientRpc <>9__0_0; public static Func<Instruction, bool> <>9__3_0; public static Func<Instruction, bool> <>9__3_1; public static Func<Instruction, bool> <>9__3_2; public static Func<Instruction, bool> <>9__3_3; public static Func<Instruction, bool> <>9__3_4; public static Func<Instruction, bool> <>9__3_5; public static Func<Instruction, bool> <>9__3_6; public static Action<PlayerControllerB> <>9__3_7; internal void <Init>b__0_0(orig_DamagePlayerFromOtherClientClientRpc orig, PlayerControllerB self, int amount, Vector3 direction, int hit, int healthAmount) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) if ((int)((NetworkBehaviour)self).__rpc_exec_stage != 2) { orig.Invoke(self, amount, direction, hit, healthAmount); return; } PandoraEnemy.Logger.LogDebug((object)("PullPlayerOutOfGroundPound " + self.playerUsername)); PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(self); if (Object.op_Implicit((Object)(object)orCreate.inAnimationWithPandora)) { orCreate.inAnimationWithPandora.PlayerIsHitInGroundPound(self); return; } PandoraEnemy.Logger.LogDebug((object)"not pandora"); orig.Invoke(self, amount, direction, hit, healthAmount); } internal bool <OverrideSinkingValue>b__3_0(Instruction i) { return ILPatternMatchingExt.MatchLdarg(i, 0); } internal bool <OverrideSinkingValue>b__3_1(Instruction i) { return ILPatternMatchingExt.MatchLdfld<PlayerControllerB>(i, "sinkingValue"); } internal bool <OverrideSinkingValue>b__3_2(Instruction i) { float num = default(float); return ILPatternMatchingExt.MatchLdcR4(i, ref num); } internal bool <OverrideSinkingValue>b__3_3(Instruction i) { ILLabel val = default(ILLabel); return ILPatternMatchingExt.MatchBgt(i, ref val); } internal bool <OverrideSinkingValue>b__3_4(Instruction i) { return ILPatternMatchingExt.MatchLdarg(i, 0); } internal bool <OverrideSinkingValue>b__3_5(Instruction i) { return ILPatternMatchingExt.MatchLdfld<PlayerControllerB>(i, "isUnderwater"); } internal bool <OverrideSinkingValue>b__3_6(Instruction i) { ILLabel val = default(ILLabel); return ILPatternMatchingExt.MatchBrfalse(i, ref val); } internal void <OverrideSinkingValue>b__3_7(PlayerControllerB self) { float overrideSinkingValue = PandoraAdditionalPlayerData.GetOrCreate(self).OverrideSinkingValue; if (overrideSinkingValue != 0f) { self.sinkingValue = overrideSinkingValue; } } } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) //IL_003b: Expected O, but got Unknown //IL_0054: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_005f: Expected O, but got Unknown //IL_0074: Unknown result type (might be due to invalid IL or missing references) //IL_0079: Unknown result type (might be due to invalid IL or missing references) //IL_007f: Expected O, but got Unknown object obj = <>O.<0>__OverrideSinkingValue; if (obj == null) { Manipulator val = OverrideSinkingValue; <>O.<0>__OverrideSinkingValue = val; obj = (object)val; } PlayerControllerB.Update += (Manipulator)obj; object obj2 = <>O.<1>__AddAdditionalPlayerData; if (obj2 == null) { hook_Awake val2 = AddAdditionalPlayerData; <>O.<1>__AddAdditionalPlayerData = val2; obj2 = (object)val2; } PlayerControllerB.Awake += (hook_Awake)obj2; object obj3 = <>c.<>9__0_0; if (obj3 == null) { hook_DamagePlayerFromOtherClientClientRpc val3 = delegate(orig_DamagePlayerFromOtherClientClientRpc orig, PlayerControllerB self, int amount, Vector3 direction, int hit, int healthAmount) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Invalid comparison between Unknown and I4 //IL_000c: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) if ((int)((NetworkBehaviour)self).__rpc_exec_stage != 2) { orig.Invoke(self, amount, direction, hit, healthAmount); } else { PandoraEnemy.Logger.LogDebug((object)("PullPlayerOutOfGroundPound " + self.playerUsername)); PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(self); if (Object.op_Implicit((Object)(object)orCreate.inAnimationWithPandora)) { orCreate.inAnimationWithPandora.PlayerIsHitInGroundPound(self); } else { PandoraEnemy.Logger.LogDebug((object)"not pandora"); orig.Invoke(self, amount, direction, hit, healthAmount); } } }; <>c.<>9__0_0 = val3; obj3 = (object)val3; } PlayerControllerB.DamagePlayerFromOtherClientClientRpc += (hook_DamagePlayerFromOtherClientClientRpc)obj3; object obj4 = <>O.<2>__NotTargetableWhenInAnimationWithPandora; if (obj4 == null) { hook_PlayerIsTargetable val4 = NotTargetableWhenInAnimationWithPandora; <>O.<2>__NotTargetableWhenInAnimationWithPandora = val4; obj4 = (object)val4; } EnemyAI.PlayerIsTargetable += (hook_PlayerIsTargetable)obj4; } private static bool NotTargetableWhenInAnimationWithPandora(orig_PlayerIsTargetable orig, EnemyAI self, PlayerControllerB playerscript, bool cannotbeinship, bool overrideinsidefactorycheck) { PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(playerscript); if (orig.Invoke(self, playerscript, cannotbeinship, overrideinsidefactorycheck)) { return !Object.op_Implicit((Object)(object)orCreate.inAnimationWithPandora); } return false; } private static void AddAdditionalPlayerData(orig_Awake orig, PlayerControllerB self) { orig.Invoke(self); } private static void OverrideSinkingValue(ILContext il) { //IL_0001: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Expected O, but got Unknown //IL_0103: Unknown result type (might be due to invalid IL or missing references) ILCursor val = new ILCursor(il); float num = default(float); ILLabel val3 = default(ILLabel); ILLabel val2 = default(ILLabel); val.GotoNext(new Func<Instruction, bool>[7] { (Instruction i) => ILPatternMatchingExt.MatchLdarg(i, 0), (Instruction i) => ILPatternMatchingExt.MatchLdfld<PlayerControllerB>(i, "sinkingValue"), (Instruction i) => ILPatternMatchingExt.MatchLdcR4(i, ref num), (Instruction i) => ILPatternMatchingExt.MatchBgt(i, ref val3), (Instruction i) => ILPatternMatchingExt.MatchLdarg(i, 0), (Instruction i) => ILPatternMatchingExt.MatchLdfld<PlayerControllerB>(i, "isUnderwater"), (Instruction i) => ILPatternMatchingExt.MatchBrfalse(i, ref val2) }); val.Emit(OpCodes.Ldarg_0); val.EmitDelegate<Action<PlayerControllerB>>((Action<PlayerControllerB>)delegate(PlayerControllerB self) { float overrideSinkingValue = PandoraAdditionalPlayerData.GetOrCreate(self).OverrideSinkingValue; if (overrideSinkingValue != 0f) { self.sinkingValue = overrideSinkingValue; } }); } } internal static class SpacebarMinigamePatches { [CompilerGenerated] private static class <>O { public static hook_Jump_performed <0>__JumpPeformed; } internal static void Init() { //IL_0010: Unknown result type (might be due to invalid IL or missing references) //IL_0015: Unknown result type (might be due to invalid IL or missing references) //IL_001b: Expected O, but got Unknown object obj = <>O.<0>__JumpPeformed; if (obj == null) { hook_Jump_performed val = JumpPeformed; <>O.<0>__JumpPeformed = val; obj = (object)val; } PlayerControllerB.Jump_performed += (hook_Jump_performed)obj; } private static void JumpPeformed(orig_Jump_performed orig, PlayerControllerB self, CallbackContext context) { //IL_0032: Unknown result type (might be due to invalid IL or missing references) if (((NetworkBehaviour)self).IsOwner && self.isPlayerControlled) { PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(self); if (Object.op_Implicit((Object)(object)orCreate.inAnimationWithPandora)) { orCreate.inAnimationWithPandora.LocalPlayerPerformsJump(); return; } } orig.Invoke(self, context); } } } namespace PandoraEnemy.Content { public class PandoraContentHandler : ContentHandler<PandoraContentHandler> { public PandoraContentHandler(CRMod mod) : base(mod) { DefaultBundle val = default(DefaultBundle); ((ContentHandler)this).RegisterContent<DefaultBundle>("pandoraassets", ref val, false); } } } namespace PandoraEnemy.Content.Enemies { [RequireComponent(typeof(AudioSource))] public class HeartbeatAudioHandler : MonoBehaviour { [SerializeField] private float _baseTimer = 15f; [SerializeField] private float _volumeLerpRate = 14f; [SerializeField] private List<AudioClip> _clips = new List<AudioClip>(); private float _currentInterval; private float _currentTime; private float _targetVolume; private float _targetInterval; private AudioSource _source; private Random _random = new Random(); internal bool IsRunning { get; set; } = true; public void Focus() { _targetVolume = 1f; } public void Unfocus() { _targetVolume = 0f; } public void SetInterval(float interval) { _targetInterval = interval; } private void Start() { _source = ((Component)this).GetComponent<AudioSource>(); _currentInterval = _baseTimer; if (_clips.Count == 0) { _clips.Add(_source.clip); } } private void Update() { if (IsRunning) { _currentTime += Time.deltaTime; _currentInterval = Mathf.Lerp(_currentInterval, _targetInterval, Time.deltaTime * _volumeLerpRate); _source.volume = Mathf.Lerp(_source.volume, _targetVolume, Time.deltaTime * _volumeLerpRate); if (_currentTime >= _currentInterval) { PandoraEnemy.Logger.LogDebug((object)"play heartbeat audio"); _currentTime = 0f; _source.PlayOneShot(RandomExtensions.NextItem<AudioClip>(_random, (IList<AudioClip>)_clips)); } } } } [RequireComponent(typeof(SmartAgentNavigator))] [RequireComponent(typeof(Animator))] [RequireComponent(typeof(NetworkAnimator))] [RequireComponent(typeof(NetworkTransform))] [RequireComponent(typeof(Collider))] public class PandoraBaseEnemyAI : EnemyAI { internal PlayerControllerB? previousTargetPlayer; [Header("Required Components")] [SerializeField] internal NetworkAnimator creatureNetworkAnimator; [SerializeField] internal SmartAgentNavigator smartAgentNavigator; [Header("Inherited Fields")] [SerializeField] private AudioClip[] _hitBodySounds = Array.Empty<AudioClip>(); [SerializeField] private AudioClip _spawnSound; internal Random _enemyRandom = new Random(); private static int _randomNumberForRandomThings; public override void Start() { ((EnemyAI)this).Start(); _enemyRandom = new Random(StartOfRound.Instance.randomMapSeed + 69 + _randomNumberForRandomThings); _randomNumberForRandomThings++; if ((Object)(object)_spawnSound != (Object)null) { base.creatureVoice.PlayOneShot(_spawnSound); } smartAgentNavigator.OnUseEntranceTeleport.AddListener((UnityAction<bool>)((EnemyAI)this).SetEnemyOutside); smartAgentNavigator.SetAllValues(base.isOutside); } public override void HitEnemy(int force = 1, PlayerControllerB? playerWhoHit = null, bool playHitSFX = false, int hitID = -1) { ((EnemyAI)this).HitEnemy(force, playerWhoHit, playHitSFX, hitID); if (!base.isEnemyDead && playHitSFX && _hitBodySounds.Length != 0) { base.creatureSFX.PlayOneShot(_hitBodySounds[_enemyRandom.Next(_hitBodySounds.Length)]); } } protected override void __initializeVariables() { ((EnemyAI)this).__initializeVariables(); } protected override void __initializeRpcs() { ((EnemyAI)this).__initializeRpcs(); } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PandoraBaseEnemyAI"; } } public class PandoraEnemyAI : PandoraBaseEnemyAI { public enum PandoraState { Idle, Attacking, Chasing, Death } public enum NextAttack { GroundPound, TeleportRandomly, TeleportOrSwapPlayers } [CompilerGenerated] private sealed class <DoDeathStuffAfterDeath>d__47 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PandoraEnemyAI <>4__this; private float <timeElapsed>5__2; private bool <gotRidOfExtras>5__3; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoDeathStuffAfterDeath>d__47(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0079: 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_009e: Expected O, but got Unknown //IL_00e1: 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_0104: Unknown result type (might be due to invalid IL or missing references) //IL_01d3: Unknown result type (might be due to invalid IL or missing references) //IL_01d8: Unknown result type (might be due to invalid IL or missing references) //IL_01ed: Unknown result type (might be due to invalid IL or missing references) //IL_0240: Unknown result type (might be due to invalid IL or missing references) //IL_024c: Unknown result type (might be due to invalid IL or missing references) //IL_0252: Unknown result type (might be due to invalid IL or missing references) //IL_0254: Unknown result type (might be due to invalid IL or missing references) //IL_0265: 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) int num = <>1__state; PandoraEnemyAI pandoraEnemyAI = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; if (((NetworkBehaviour)pandoraEnemyAI).IsOwner) { pandoraEnemyAI._currentState.Value = PandoraState.Death; } if (((NetworkBehaviour)pandoraEnemyAI).IsServer) { ((EnemyAI)pandoraEnemyAI).creatureAnimator.SetBool(IsDeadAnimation, true); } ((Component)pandoraEnemyAI._deathParticleSystem).transform.SetParent((Transform)null, true); ((Component)pandoraEnemyAI._deathParticleSystem).transform.position = ((Component)pandoraEnemyAI).transform.position; pandoraEnemyAI._deathParticleSystem.Play(); <>2__current = (object)new WaitForSeconds(1.5f); <>1__state = 1; return true; case 1: <>1__state = -1; <timeElapsed>5__2 = 0f; <gotRidOfExtras>5__3 = false; break; case 2: <>1__state = -1; break; } if (<timeElapsed>5__2 < 6f) { foreach (Material deathMaterial in pandoraEnemyAI._deathMaterials) { Color color = deathMaterial.GetColor("_DissolvePos"); color.g += Time.deltaTime / 2f; deathMaterial.SetColor("_DissolvePos", color); } <timeElapsed>5__2 += Time.deltaTime; if (!<gotRidOfExtras>5__3 && <timeElapsed>5__2 >= 2.5f) { foreach (Material extraMaterial in pandoraEnemyAI._extraMaterials) { extraMaterial.SetColor("_BaseColor", Color.clear); } } <>2__current = null; <>1__state = 2; return true; } foreach (Material deathMaterial2 in pandoraEnemyAI._deathMaterials) { Color color2 = deathMaterial2.GetColor("_DissolvePos"); color2.g = 1f; deathMaterial2.SetColor("_DissolvePos", color2); } ((EnemyAI)pandoraEnemyAI).EnableEnemyMesh(false, true); ((EnemyAI)pandoraEnemyAI).creatureVoice.PlayOneShot(((EnemyAI)pandoraEnemyAI).dieSFX); if (!((NetworkBehaviour)pandoraEnemyAI).IsServer) { return false; } RoundManager.Instance.SpawnEnemyGameObject(RoundManager.Instance.GetRandomNavMeshPositionInRadiusSpherical(((Component)pandoraEnemyAI).transform.position, 100f, default(NavMeshHit)), -1f, -1, ((EnemyAI)pandoraEnemyAI).enemyType); ((NetworkBehaviour)pandoraEnemyAI).NetworkObject.Despawn(true); 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 <DoGroundPoundSinking>d__39 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PlayerControllerB player; public PandoraEnemyAI <>4__this; public float duration; public float waitDuration; private float <t>5__2; private PandoraAdditionalPlayerData <playerData>5__3; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoGroundPoundSinking>d__39(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <playerData>5__3 = null; <>1__state = -2; } private bool MoveNext() { //IL_00b3: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: Expected O, but got Unknown //IL_014c: Unknown result type (might be due to invalid IL or missing references) //IL_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015c: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; PandoraEnemyAI pandoraEnemyAI = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <t>5__2 = 0f; <playerData>5__3 = PandoraAdditionalPlayerData.GetOrCreate(player); <playerData>5__3.inAnimationWithPandora = pandoraEnemyAI; goto IL_009e; case 1: <>1__state = -1; <playerData>5__3.OverrideSinkingValue = <t>5__2 / duration * 0.5f; goto IL_009e; case 2: <>1__state = -1; <t>5__2 = 0f; break; case 3: { <>1__state = -1; <playerData>5__3.OverrideSinkingValue = <t>5__2 / duration * 0.5f + 0.5f; break; } IL_009e: if (<t>5__2 < duration) { <t>5__2 += Time.deltaTime; <>2__current = null; <>1__state = 1; return true; } <>2__current = (object)new WaitForSeconds(waitDuration); <>1__state = 2; return true; } if (<t>5__2 < duration) { <t>5__2 += Time.deltaTime; <>2__current = null; <>1__state = 3; return true; } if (((NetworkBehaviour)player).IsOwner) { GameNetworkManager.Instance.localPlayerController.KillPlayer(Vector3.zero, false, (CauseOfDeath)5, 0, default(Vector3)); if (pandoraEnemyAI._mashMinigameCoroutine != null) { ((MonoBehaviour)pandoraEnemyAI).StopCoroutine(pandoraEnemyAI._mashMinigameCoroutine); pandoraEnemyAI._mashMinigameCoroutine = null; } } <playerData>5__3.inAnimationWithPandora = null; <playerData>5__3.OverrideSinkingValue = 0f; 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 <DoHeartbeatAudioFocusCheck>d__28 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float interval; public PandoraEnemyAI <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoHeartbeatAudioFocusCheck>d__28(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0059: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; PandoraEnemyAI pandoraEnemyAI = <>4__this; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; float num2 = Vector3.Distance(((Component)GameNetworkManager.Instance.localPlayerController).transform.position, ((Component)pandoraEnemyAI).transform.position); if (num2 < pandoraEnemyAI._startHeartbeatDistance && pandoraEnemyAI.CanSeePlayer(GameNetworkManager.Instance.localPlayerController)) { pandoraEnemyAI._heartbeatAudio.Focus(); pandoraEnemyAI._heartbeatAudio.IsRunning = true; } else { pandoraEnemyAI._heartbeatAudio.Unfocus(); pandoraEnemyAI._heartbeatAudio.IsRunning = false; } } else { <>1__state = -1; } <>2__current = (object)new WaitForSeconds(interval); <>1__state = 1; return true; } 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 <DoSpaceMashMinigame>d__58 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PandoraEnemyAI <>4__this; public int requiredJumps; private PlayerControllerB <localPlayer>5__2; private PandoraAdditionalPlayerData <playerData>5__3; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoSpaceMashMinigame>d__58(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <localPlayer>5__2 = null; <playerData>5__3 = null; <>1__state = -2; } private bool MoveNext() { int num = <>1__state; PandoraEnemyAI pandoraEnemyAI = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; <localPlayer>5__2 = GameNetworkManager.Instance.localPlayerController; <playerData>5__3 = PandoraAdditionalPlayerData.GetOrCreate(<localPlayer>5__2); <playerData>5__3.inAnimationWithPandora = pandoraEnemyAI; pandoraEnemyAI._currentJumpsThisMinigame = 0; <localPlayer>5__2.disableMoveInput = true; PandoraEnemy.Logger.LogDebug((object)$"started space mash minigame. requiredJumps = {requiredJumps}"); break; case 1: <>1__state = -1; break; } if (pandoraEnemyAI._currentJumpsThisMinigame < requiredJumps) { <>2__current = null; <>1__state = 1; return true; } PandoraEnemy.Logger.LogDebug((object)"broke out!"); <localPlayer>5__2.disableMoveInput = false; <playerData>5__3.OverrideSinkingValue = 0f; <playerData>5__3.inAnimationWithPandora = null; pandoraEnemyAI._mashMinigameCoroutine = null; if (pandoraEnemyAI._sinkingCoroutine != null) { ((MonoBehaviour)pandoraEnemyAI).StopCoroutine(pandoraEnemyAI._sinkingCoroutine); pandoraEnemyAI._sinkingCoroutine = null; } pandoraEnemyAI.PlayerBeatMashMinigameServerRPC(PlayerControllerReference.op_Implicit(<localPlayer>5__2)); 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 <DoStaringCheck>d__27 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public float interval; public PandoraEnemyAI <>4__this; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <DoStaringCheck>d__27(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002f: Expected O, but got Unknown //IL_0059: Unknown result type (might be due to invalid IL or missing references) //IL_0117: Unknown result type (might be due to invalid IL or missing references) //IL_0122: Unknown result type (might be due to invalid IL or missing references) //IL_0127: Unknown result type (might be due to invalid IL or missing references) //IL_012c: Unknown result type (might be due to invalid IL or missing references) //IL_013d: Unknown result type (might be due to invalid IL or missing references) //IL_0147: Unknown result type (might be due to invalid IL or missing references) //IL_014d: Unknown result type (might be due to invalid IL or missing references) int num = <>1__state; PandoraEnemyAI pandoraEnemyAI = <>4__this; if (num != 0) { if (num != 1) { return false; } <>1__state = -1; PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; if (!localPlayerController.isPlayerDead) { if (localPlayerController.HasLineOfSightToPosition(((EnemyAI)pandoraEnemyAI).eye.position, 30f, 60, -1f)) { pandoraEnemyAI._stareTimer += interval; } else { pandoraEnemyAI._stareTimer -= interval; } if (pandoraEnemyAI._stareTimer < 0f) { pandoraEnemyAI._stareTimer = 0f; } float num2 = pandoraEnemyAI._stareTimer / 15f; float num3 = 0.35f; float num4 = 2.5f; float num5 = Mathf.Clamp01(num2); num5 = Mathf.SmoothStep(0f, 1f, num5); num5 *= num5; pandoraEnemyAI._heartbeatAudio.SetInterval(Mathf.Lerp(num4, num3, num5)); if (num2 >= 1f) { Vector3 val = ((Component)localPlayerController).transform.position - ((Component)pandoraEnemyAI).transform.position; val.y = 0f; localPlayerController.KillPlayer(((Vector3)(ref val)).normalized, true, (CauseOfDeath)0, 0, default(Vector3)); if (pandoraEnemyAI._mashMinigameCoroutine != null) { ((MonoBehaviour)pandoraEnemyAI).StopCoroutine(pandoraEnemyAI._mashMinigameCoroutine); pandoraEnemyAI._mashMinigameCoroutine = null; } pandoraEnemyAI._stareTimer = 0f; } if (pandoraEnemyAI._stareTimer > 10f && pandoraEnemyAI._timeSinceLastFearFromStaring > 30f) { pandoraEnemyAI._timeSinceLastFearFromStaring = 0f; localPlayerController.JumpToFearLevel(0.5f, true); } } } else { <>1__state = -1; } <>2__current = (object)new WaitForSeconds(interval); <>1__state = 1; return true; } 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 <TeleportAndWanderingRoutine>d__43 : IEnumerator<object>, IEnumerator, IDisposable { private int <>1__state; private object <>2__current; public PandoraEnemyAI <>4__this; private Vector3 <randomNavmeshPosition>5__2; object IEnumerator<object>.Current { [DebuggerHidden] get { return <>2__current; } } object IEnumerator.Current { [DebuggerHidden] get { return <>2__current; } } [DebuggerHidden] public <TeleportAndWanderingRoutine>d__43(int <>1__state) { this.<>1__state = <>1__state; } [DebuggerHidden] void IDisposable.Dispose() { <>1__state = -2; } private bool MoveNext() { //IL_0051: Unknown result type (might be due to invalid IL or missing references) //IL_005b: Expected O, but got Unknown //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_0099: 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_00a7: Unknown result type (might be due to invalid IL or missing references) //IL_00a8: Unknown result type (might be due to invalid IL or missing references) //IL_00ad: Unknown result type (might be due to invalid IL or missing references) //IL_011a: Unknown result type (might be due to invalid IL or missing references) //IL_012b: Unknown result type (might be due to invalid IL or missing references) //IL_00cc: Unknown result type (might be due to invalid IL or missing references) //IL_00d6: Expected O, but got Unknown int num = <>1__state; PandoraEnemyAI CS$<>8__locals0 = <>4__this; switch (num) { default: return false; case 0: <>1__state = -1; CS$<>8__locals0.smartAgentNavigator.StartSearchRoutine(50f); <>2__current = (object)new WaitForSeconds(Random.Range(30f, 60f)); <>1__state = 1; return true; case 1: { <>1__state = -1; Vector3 position = RoundManager.Instance.insideAINodes[Random.Range(0, RoundManager.Instance.insideAINodes.Length)].transform.position; <randomNavmeshPosition>5__2 = RoundManager.Instance.GetRandomNavMeshPositionInRadius(position, 3f, default(NavMeshHit)); if (CS$<>8__locals0._currentState.Value != 0) { <>2__current = (object)new WaitUntil((Func<bool>)(() => CS$<>8__locals0._currentState.Value == PandoraState.Idle)); <>1__state = 2; return true; } goto IL_00fd; } case 2: <>1__state = -1; <>2__current = null; <>1__state = 3; return true; case 3: <>1__state = -1; goto IL_00fd; case 4: { <>1__state = -1; CS$<>8__locals0._TeleportAndWanderingRoutine = ((MonoBehaviour)CS$<>8__locals0).StartCoroutine(CS$<>8__locals0.TeleportAndWanderingRoutine()); return false; } IL_00fd: CS$<>8__locals0.smartAgentNavigator.StopSearchRoutine(); CS$<>8__locals0.smartAgentNavigator.StopAgent(); ((Component)CS$<>8__locals0).transform.position = <randomNavmeshPosition>5__2; ((EnemyAI)CS$<>8__locals0).agent.Warp(<randomNavmeshPosition>5__2); <>2__current = null; <>1__state = 4; return true; } } bool IEnumerator.MoveNext() { //ILSpy generated this explicit interface implementation from .override directive in MoveNext return this.MoveNext(); } [DebuggerHidden] void IEnumerator.Reset() { throw new NotSupportedException(); } } [SerializeField] private AnimationClip _deathAnimation; [SerializeField] private HeartbeatAudioHandler _heartbeatAudio; [SerializeField] private ParticleSystem _deathParticleSystem; [SerializeField] private float _startHeartbeatDistance = 15f; private Coroutine? _TeleportAndWanderingRoutine; private List<PlayerControllerB> _playersSeenOverLifetime = new List<PlayerControllerB>(); private NextAttack _nextAttack; private static readonly int IsDeadAnimation = Animator.StringToHash("IsDead"); private static readonly int RunSpeedAnimation = Animator.StringToHash("RunSpeedFloat"); private static readonly int RandomIdleAnimation = Animator.StringToHash("randomIdle"); private static readonly int ArmsRaisedAnimation = Animator.StringToHash("armsRaised"); private NetworkVariable<PandoraState> _currentState = new NetworkVariable<PandoraState>(PandoraState.Idle, (NetworkVariableReadPermission)0, (NetworkVariableWritePermission)1); private float _giveUpTimer; private float _stareTimer; private float _timeSinceLastFearFromStaring = 999f; private float _timeSinceLastAttack = 999f; private int _currentJumpsThisMinigame; private List<Material> _deathMaterials = new List<Material>(); private List<Material> _extraMaterials = new List<Material>(); private Coroutine _sinkingCoroutine; private Coroutine _heartbeatCheckCoroutine; private Coroutine _mashMinigameCoroutine; private List<PlayerControllerB> _playersTrappedThisAttack = new List<PlayerControllerB>(); [SerializeField] private float _minTeleportSeparation = 25f; [SerializeField] private int _teleportAttempts = 30; private readonly HashSet<ulong> _teleportTrappedClientIds = new HashSet<ulong>(); public override void Start() { base.Start(); SkinnedMeshRenderer[] skinnedMeshRenderers = ((EnemyAI)this).skinnedMeshRenderers; foreach (SkinnedMeshRenderer val in skinnedMeshRenderers) { Material[] materials = ((Renderer)val).materials; foreach (Material val2 in materials) { if (val2.HasProperty("_DissolvePos")) { _deathMaterials.Add(val2); } else { _extraMaterials.Add(val2); } } } _TeleportAndWanderingRoutine = ((MonoBehaviour)this).StartCoroutine(TeleportAndWanderingRoutine()); _heartbeatCheckCoroutine = ((MonoBehaviour)this).StartCoroutine(DoHeartbeatAudioFocusCheck()); ((MonoBehaviour)this).StartCoroutine(DoStaringCheck()); _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); } public override void Update() { ((EnemyAI)this).Update(); if (_heartbeatAudio.IsRunning && GameNetworkManager.Instance.localPlayerController.isPlayerDead) { _heartbeatAudio.IsRunning = false; } _timeSinceLastFearFromStaring += Time.deltaTime; } [IteratorStateMachine(typeof(<DoStaringCheck>d__27))] private IEnumerator DoStaringCheck(float interval = 0.1f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoStaringCheck>d__27(0) { <>4__this = this, interval = interval }; } [IteratorStateMachine(typeof(<DoHeartbeatAudioFocusCheck>d__28))] private IEnumerator DoHeartbeatAudioFocusCheck(float interval = 2f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoHeartbeatAudioFocusCheck>d__28(0) { <>4__this = this, interval = interval }; } public override void DoAIInterval() { //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) ((EnemyAI)this).DoAIInterval(); if (StartOfRound.Instance.allPlayersDead || ((EnemyAI)this).isEnemyDead) { return; } if (((NetworkBehaviour)this).IsHost) { Animator creatureAnimator = ((EnemyAI)this).creatureAnimator; int runSpeedAnimation = RunSpeedAnimation; Vector3 velocity = ((EnemyAI)this).agent.velocity; creatureAnimator.SetFloat(runSpeedAnimation, ((Vector3)(ref velocity)).magnitude / 3f); } _timeSinceLastAttack += ((EnemyAI)this).AIIntervalTime; PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (!((Object)(object)val == (Object)null) && !val.isPlayerDead && val.isPlayerControlled && !_playersSeenOverLifetime.Contains(val) && CanSeePlayer(val)) { _playersSeenOverLifetime.Add(val); HUDManager.Instance.DisplayTip("Pandora", "Pandora sees player: " + val.playerUsername + " for the first time", false, false, "LC_Tip1"); } } switch (_currentState.Value) { case PandoraState.Idle: DoIdle(); break; case PandoraState.Attacking: DoAttacking(); break; case PandoraState.Chasing: DoChasing(); break; case PandoraState.Death: DoDeath(); break; } } private bool CanSeePlayer(PlayerControllerB player) { //IL_0006: 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_0036: Unknown result type (might be due to invalid IL or missing references) //IL_0041: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_004e: Unknown result type (might be due to invalid IL or missing references) //IL_0053: Unknown result type (might be due to invalid IL or missing references) //IL_005a: 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) float num = Vector3.Distance(((EnemyAI)this).eye.position, ((Component)player.gameplayCamera).transform.position); if (num > 20f) { return false; } Vector3 val = ((Component)player.gameplayCamera).transform.position - ((EnemyAI)this).eye.position; Vector3 normalized = ((Vector3)(ref val)).normalized; RaycastHit val2 = default(RaycastHit); return !Physics.Raycast(((EnemyAI)this).eye.position, normalized, ref val2, num, StartOfRound.Instance.collidersAndRoomMaskAndDefault, (QueryTriggerInteraction)1); } private void DoIdle() { _giveUpTimer -= ((EnemyAI)this).AIIntervalTime; if (_giveUpTimer < 0f) { TeleportAndResetSearchRoutine(); _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); } else if (TryGetClosestChaseTarget(out ((EnemyAI)this).targetPlayer)) { _currentState.Value = PandoraState.Chasing; _timeSinceLastAttack = 30f; ChooseNextAttack(); smartAgentNavigator.StopSearchRoutine(); smartAgentNavigator.StopAgent(); _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); HUDManager.Instance.DisplayTip("Pandora", "Pandora begins chasing player: " + ((EnemyAI)this).targetPlayer.playerUsername, false, false, "LC_Tip1"); } } private bool TryPickFarTeleport(PlayerControllerB player, out Vector3 pos, out float yRot) { //IL_0001: 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_001a: 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_004f: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Unknown result type (might be due to invalid IL or missing references) //IL_005d: 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_0071: Unknown result type (might be due to invalid IL or missing references) //IL_0076: Unknown result type (might be due to invalid IL or missing references) //IL_0077: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_00bd: 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_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00cd: Unknown result type (might be due to invalid IL or missing references) //IL_00d2: Unknown result type (might be due to invalid IL or missing references) //IL_0086: Unknown result type (might be due to invalid IL or missing references) //IL_008d: Unknown result type (might be due to invalid IL or missing references) //IL_009f: Unknown result type (might be due to invalid IL or missing references) //IL_00a0: Unknown result type (might be due to invalid IL or missing references) pos = default(Vector3); yRot = player.targetYRot; Vector3 position = ((Component)player).transform.position; for (int i = 0; i < _teleportAttempts; i++) { Vector3 position2 = RoundManager.Instance.insideAINodes[_enemyRandom.Next(0, RoundManager.Instance.insideAINodes.Length)].transform.position; Vector3 randomNavMeshPositionInBoxPredictable = RoundManager.Instance.GetRandomNavMeshPositionInBoxPredictable(position2, 10f, default(NavMeshHit), _enemyRandom, -1, 1f); if (!(Vector3.Distance(randomNavMeshPositionInBoxPredictable, position) < _minTeleportSeparation) && !(Vector3.Distance(randomNavMeshPositionInBoxPredictable, ((Component)this).transform.position) < 10f)) { pos = randomNavMeshPositionInBoxPredictable; return true; } } pos = RoundManager.Instance.GetRandomNavMeshPositionInRadiusSpherical(position, 60f, default(NavMeshHit)); return true; } private bool TryGetClosestChaseTarget([NotNullWhen(true)] out PlayerControllerB? player) { //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) player = null; float num = 99999f; PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (!((Object)(object)val == (Object)null) && !val.isPlayerDead && val.isPlayerControlled && CanSeePlayer(val)) { float num2 = Vector3.Distance(((Component)this).transform.position, ((Component)val).transform.position); if (!(num2 > num)) { player = val; num = num2; } } } return Object.op_Implicit((Object)(object)player); } private void DoChasing() { //IL_00ed: 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_010e: Unknown result type (might be due to invalid IL or missing references) _giveUpTimer -= ((EnemyAI)this).AIIntervalTime; if (_giveUpTimer < 0f) { _currentState.Value = PandoraState.Idle; TeleportAndResetSearchRoutine(); _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); return; } if (TryGetClosestChaseTarget(out PlayerControllerB player) && (Object)(object)player != (Object)(object)((EnemyAI)this).targetPlayer) { ((EnemyAI)this).targetPlayer = player; _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); HUDManager.Instance.DisplayTip("Pandora", "Pandora swapped to chasing player: " + ((EnemyAI)this).targetPlayer.playerUsername, false, false, "LC_Tip1"); } if (CanSeePlayer(((EnemyAI)this).targetPlayer)) { _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); } smartAgentNavigator.DoPathingToDestination(((Component)((EnemyAI)this).targetPlayer).transform.position); float num = Vector3.Distance(((Component)this).transform.position, ((Component)((EnemyAI)this).targetPlayer).transform.position); float num2 = ((_nextAttack == NextAttack.GroundPound) ? 2f : 4f); if (num < num2 && _timeSinceLastAttack >= 30f) { _currentState.Value = PandoraState.Attacking; _playersTrappedThisAttack.Clear(); PandoraEnemy.Logger.LogDebug((object)"beginning attack animation"); smartAgentNavigator.StopAgent(); creatureNetworkAnimator.SetTrigger(ArmsRaisedAnimation, true); if (_nextAttack == NextAttack.GroundPound) { BeginSinkingClientRPC(PlayerControllerReference.op_Implicit(((EnemyAI)this).targetPlayer)); return; } List<PlayerControllerB> playersNearby = GetPlayersNearby(); TrapPlayersForTeleportAttack(playersNearby); } } private void ChooseNextAttack() { List<NextAttack> list = new List<NextAttack>(2) { NextAttack.TeleportRandomly, NextAttack.GroundPound }; if (TeleportAndSwapIsValid()) { list.Add(NextAttack.TeleportOrSwapPlayers); } _nextAttack = RandomExtensions.NextItem<NextAttack>(_enemyRandom, (IList<NextAttack>)list); PandoraEnemy.Logger.LogDebug((object)$"out of {list.Count} possible attack(s). chose attack: {_nextAttack}"); } private void DoAttacking() { if (_nextAttack == NextAttack.GroundPound) { return; } foreach (PlayerControllerB item in GetPlayersNearby()) { if (!_playersTrappedThisAttack.Contains(item)) { _playersTrappedThisAttack.Add(item); _teleportTrappedClientIds.Add(item.actualClientId); SetTeleportTrappedClientRPC(PlayerControllerReference.op_Implicit(item), trapped: true); } } } [IteratorStateMachine(typeof(<DoGroundPoundSinking>d__39))] private IEnumerator DoGroundPoundSinking(PlayerControllerB player, float duration = 2f, float waitDuration = 5f) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoGroundPoundSinking>d__39(0) { <>4__this = this, player = player, duration = duration, waitDuration = waitDuration }; } public void PlayerIsHitInGroundPound(PlayerControllerB player) { if (_nextAttack == NextAttack.GroundPound) { PandoraEnemy.Logger.LogDebug((object)("player " + player.playerUsername + " was hit while in animation. cancelling sinking")); PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(player); orCreate.OverrideSinkingValue = 0f; orCreate.inAnimationWithPandora = null; player.disableMoveInput = false; ((MonoBehaviour)this).StopCoroutine(_sinkingCoroutine); _sinkingCoroutine = null; if (_mashMinigameCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(_mashMinigameCoroutine); _mashMinigameCoroutine = null; } } } private List<PlayerControllerB> GetPlayersNearby(float radius = 10f) { return StartOfRound.Instance.allPlayerScripts.Where((PlayerControllerB player) => !player.isPlayerDead && player.isPlayerControlled && Vector3.Distance(((Component)player).transform.position, ((Component)this).transform.position) <= radius).ToList(); } private void DoDeath() { } [IteratorStateMachine(typeof(<TeleportAndWanderingRoutine>d__43))] private IEnumerator TeleportAndWanderingRoutine() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <TeleportAndWanderingRoutine>d__43(0) { <>4__this = this }; } public void FinishAttack() { if (!((NetworkBehaviour)this).IsOwner) { return; } PandoraEnemy.Logger.LogDebug((object)"finishAttack()"); List<PlayerControllerB> playersNearby = GetPlayersNearby(); _giveUpTimer = RandomExtensions.NextFloat(_enemyRandom, 25f, 35f); _currentState.Value = PandoraState.Idle; _timeSinceLastAttack = 0f; if (playersNearby.Count == 0) { TeleportAndResetSearchRoutine(); return; } switch (_nextAttack) { case NextAttack.TeleportRandomly: PerformRandomTeleport(playersNearby); break; case NextAttack.TeleportOrSwapPlayers: PerformSwapTeleport(playersNearby); break; default: throw new ArgumentOutOfRangeException(); case NextAttack.GroundPound: break; } if (_nextAttack != 0) { UntrapPlayersAfterTeleportAttack(); } TeleportAndResetSearchRoutine(); } public override void HitEnemy(int force = 1, PlayerControllerB? playerWhoHit = null, bool playHitSFX = false, int hitID = -1) { if (_currentState.Value == PandoraState.Attacking) { return; } base.HitEnemy(force, playerWhoHit, playHitSFX, hitID); if (!((EnemyAI)this).isEnemyDead) { ((EnemyAI)this).enemyHP = ((EnemyAI)this).enemyHP - force; if (((EnemyAI)this).enemyHP <= 0 && ((NetworkBehaviour)this).IsOwner) { ((EnemyAI)this).KillEnemyOnOwnerClient(false); } } } public override void KillEnemy(bool destroy = false) { ((EnemyAI)this).KillEnemy(destroy); ((MonoBehaviour)this).StopAllCoroutines(); PlayerControllerB localPlayerController = GameNetworkManager.Instance.localPlayerController; PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(localPlayerController); localPlayerController.disableMoveInput = false; orCreate.OverrideSinkingValue = 0f; orCreate.inAnimationWithPandora = null; ((MonoBehaviour)this).StartCoroutine(DoDeathStuffAfterDeath()); smartAgentNavigator.StopSearchRoutine(); smartAgentNavigator.StopAgent(); } [IteratorStateMachine(typeof(<DoDeathStuffAfterDeath>d__47))] private IEnumerator DoDeathStuffAfterDeath() { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoDeathStuffAfterDeath>d__47(0) { <>4__this = this }; } private void TeleportAndResetSearchRoutine() { //IL_0038: Unknown result type (might be due to invalid IL or missing references) //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_00dd: Unknown result type (might be due to invalid IL or missing references) //IL_00cb: Unknown result type (might be due to invalid IL or missing references) //IL_00d0: Unknown result type (might be due to invalid IL or missing references) //IL_0078: Unknown result type (might be due to invalid IL or missing references) //IL_0080: Unknown result type (might be due to invalid IL or missing references) smartAgentNavigator.StopSearchRoutine(); smartAgentNavigator.StopAgent(); Vector3 position = RoundManager.Instance.insideAINodes[Random.Range(0, RoundManager.Instance.insideAINodes.Length)].transform.position; bool flag = false; while (!flag) { bool flag2 = true; PlayerControllerB[] allPlayerScripts = StartOfRound.Instance.allPlayerScripts; foreach (PlayerControllerB val in allPlayerScripts) { if (!val.isPlayerDead && val.isPlayerControlled && val.isInsideFactory && Vector3.Distance(position, ((Component)val).transform.position) < 8f) { flag2 = false; break; } } if (flag2) { flag = true; } else { position = RoundManager.Instance.insideAINodes[Random.Range(0, RoundManager.Instance.insideAINodes.Length)].transform.position; } } ((EnemyAI)this).agent.Warp(position); PandoraEnemy.Logger.LogDebug((object)"pandora teleports away"); smartAgentNavigator.StartSearchRoutine(50f); } private bool TeleportAndSwapIsValid() { return _playersSeenOverLifetime.Select((PlayerControllerB it) => !it.isPlayerDead && it.isPlayerControlled).Count() >= 2; } private void PerformRandomTeleport(List<PlayerControllerB> players) { //IL_0025: Unknown result type (might be due to invalid IL or missing references) foreach (PlayerControllerB player in players) { if (TryPickFarTeleport(player, out var pos, out var yRot)) { TeleportPlayerServerRPC(PlayerControllerReference.op_Implicit(player), pos, yRot); } } } private void PerformSwapTeleport(List<PlayerControllerB> players) { //IL_0097: Unknown result type (might be due to invalid IL or missing references) //IL_00a2: Unknown result type (might be due to invalid IL or missing references) //IL_00ec: Unknown result type (might be due to invalid IL or missing references) //IL_0115: Unknown result type (might be due to invalid IL or missing references) //IL_0160: Unknown result type (might be due to invalid IL or missing references) //IL_0165: Unknown result type (might be due to invalid IL or missing references) //IL_0176: Unknown result type (might be due to invalid IL or missing references) if (_playersSeenOverLifetime.Count((PlayerControllerB it) => !it.isPlayerDead && it.isPlayerControlled) < 2) { return; } List<PlayerControllerB> list = _playersSeenOverLifetime.Where((PlayerControllerB it) => !it.isPlayerDead && it.isPlayerControlled).ToList(); List<(PlayerControllerB, Vector3, float)> list2 = new List<(PlayerControllerB, Vector3, float)>(); foreach (PlayerControllerB player in players) { PlayerControllerB val; do { val = RandomExtensions.NextItem<PlayerControllerB>(_enemyRandom, (IList<PlayerControllerB>)list); } while ((Object)(object)val == (Object)(object)player || Vector3.Distance(((Component)val).transform.position, ((Component)player).transform.position) < _minTeleportSeparation); PandoraEnemy.Logger.LogDebug((object)("Swapping " + player.playerUsername + " with " + val.playerUsername)); list.Remove(val); list2.Add((player, ((Component)val).transform.position, val.targetYRot)); if (!players.Contains(val)) { list2.Add((val, ((Component)player).transform.position, player.targetYRot)); } } foreach (var (val2, position, yRot) in list2) { TeleportPlayerServerRPC(PlayerControllerReference.op_Implicit(val2), position, yRot); } } [ServerRpc] private void TeleportPlayerServerRPC(PlayerControllerReference player, Vector3 position, float yRot) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_0145: Unknown result type (might be due to invalid IL or missing references) //IL_014f: Invalid comparison between Unknown and I4 //IL_017a: 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_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_00ce: 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_007a: Unknown result type (might be due to invalid IL or missing references) //IL_0084: Invalid comparison between Unknown and I4 //IL_011b: Unknown result type (might be due to invalid IL or missing references) //IL_0121: Unknown result type (might be due to invalid IL or missing references) //IL_0135: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00f8: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.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(2838982378u, val, (RpcDelivery)0); bool flag = player != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref player, default(ForNetworkSerializable)); } ((FastBufferWriter)(ref val2)).WriteValueSafe(ref position); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref yRot, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2838982378u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; TeleportPlayerClientRPC(player, position, yRot); } } [ClientRpc] private void TeleportPlayerClientRPC(PlayerControllerReference playerRef, Vector3 position, float yRot) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00ff: Unknown result type (might be due to invalid IL or missing references) //IL_0109: 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_0134: Unknown result type (might be due to invalid IL or missing references) //IL_00d5: Unknown result type (might be due to invalid IL or missing references) //IL_00db: Unknown result type (might be due to invalid IL or missing references) //IL_00ef: 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_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_0192: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(163295284u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } ((FastBufferWriter)(ref val2)).WriteValueSafe(ref position); ((FastBufferWriter)(ref val2)).WriteValueSafe<float>(ref yRot, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 163295284u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = PlayerControllerReference.op_Implicit(playerRef); PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(val3); if ((Object)(object)val3 == (Object)(object)GameNetworkManager.Instance.localPlayerController) { if (_mashMinigameCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(_mashMinigameCoroutine); _mashMinigameCoroutine = null; } val3.disableMoveInput = false; } val3.velocityLastFrame = Vector3.zero; val3.averageVelocity = 0f; val3.TeleportPlayer(position, true, yRot, false, true); orCreate.inAnimationWithPandora = null; } [ClientRpc] private void BeginSinkingClientRPC(PlayerControllerReference playerRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(445249911u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 445249911u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = PlayerControllerReference.op_Implicit(playerRef); _sinkingCoroutine = ((MonoBehaviour)this).StartCoroutine(DoGroundPoundSinking(PlayerControllerReference.op_Implicit(playerRef))); if ((Object)(object)val3 == (Object)(object)GameNetworkManager.Instance.localPlayerController) { _mashMinigameCoroutine = ((MonoBehaviour)this).StartCoroutine(DoSpaceMashMinigame(30)); } } } [ServerRpc(RequireOwnership = false)] private void PlayerBeatMashMinigameServerRPC(PlayerControllerReference playerRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsClient || networkManager.IsHost)) { ServerRpcParams val = default(ServerRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendServerRpc(2924807977u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } ((NetworkBehaviour)this).__endSendServerRpc(ref val2, 2924807977u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsServer || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerBeatMashMinigameClientRPC(playerRef); } } [ClientRpc] private void PlayerBeatMashMinigameClientRPC(PlayerControllerReference playerRef) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00d7: Unknown result type (might be due to invalid IL or missing references) //IL_00e1: 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_010c: Unknown result type (might be due to invalid IL or missing references) //IL_00c7: 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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2622230991u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2622230991u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = PlayerControllerReference.op_Implicit(playerRef); if (!((Object)(object)val3 == (Object)(object)GameNetworkManager.Instance.localPlayerController)) { PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(val3); orCreate.OverrideSinkingValue = 0f; orCreate.inAnimationWithPandora = null; if (_sinkingCoroutine != null) { ((MonoBehaviour)this).StopCoroutine(_sinkingCoroutine); _sinkingCoroutine = null; } } } [ClientRpc] private void BeginMashMinigameClientRPC(PlayerControllerReference playerRef, int requiredJumps) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00e4: Unknown result type (might be due to invalid IL or missing references) //IL_00ee: 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_0119: Unknown result type (might be due to invalid IL or missing references) //IL_00bc: 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_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) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(1267405687u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } BytePacker.WriteValueBitPacked(val2, requiredJumps); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 1267405687u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage == 1 && (networkManager.IsClient || networkManager.IsHost)) { ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = PlayerControllerReference.op_Implicit(playerRef); if (!((Object)(object)val3 != (Object)(object)GameNetworkManager.Instance.localPlayerController)) { _mashMinigameCoroutine = ((MonoBehaviour)this).StartCoroutine(DoSpaceMashMinigame(requiredJumps)); } } } [IteratorStateMachine(typeof(<DoSpaceMashMinigame>d__58))] private IEnumerator DoSpaceMashMinigame(int requiredJumps) { //yield-return decompiler failed: Unexpected instruction in Iterator.Dispose() return new <DoSpaceMashMinigame>d__58(0) { <>4__this = this, requiredJumps = requiredJumps }; } internal void LocalPlayerPerformsJump() { _currentJumpsThisMinigame++; } [ClientRpc] private void SetTeleportTrappedClientRPC(PlayerControllerReference playerRef, bool trapped) { //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Invalid comparison between Unknown and I4 //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_00fc: 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_0127: Unknown result type (might be due to invalid IL or missing references) //IL_00c8: 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_00e2: 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_0156: Unknown result type (might be due to invalid IL or missing references) //IL_015b: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = ((NetworkBehaviour)this).NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 && (networkManager.IsServer || networkManager.IsHost)) { ClientRpcParams val = default(ClientRpcParams); FastBufferWriter val2 = ((NetworkBehaviour)this).__beginSendClientRpc(2124096682u, val, (RpcDelivery)0); bool flag = playerRef != null; ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref flag, default(ForPrimitives)); if (flag) { ((FastBufferWriter)(ref val2)).WriteValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } ((FastBufferWriter)(ref val2)).WriteValueSafe<bool>(ref trapped, default(ForPrimitives)); ((NetworkBehaviour)this).__endSendClientRpc(ref val2, 2124096682u, val, (RpcDelivery)0); } if ((int)((NetworkBehaviour)this).__rpc_exec_stage != 1 || (!networkManager.IsClient && !networkManager.IsHost)) { return; } ((NetworkBehaviour)this).__rpc_exec_stage = (__RpcExecStage)0; PlayerControllerB val3 = PlayerControllerReference.op_Implicit(playerRef); if (!((Object)(object)val3 == (Object)null)) { PandoraAdditionalPlayerData orCreate = PandoraAdditionalPlayerData.GetOrCreate(val3); if (trapped) { orCreate.inAnimationWithPandora = this; val3.disableMoveInput = true; val3.velocityLastFrame = Vector3.zero; val3.averageVelocity = 0f; } else { orCreate.inAnimationWithPandora = null; val3.disableMoveInput = false; } } } private void TrapPlayersForTeleportAttack(List<PlayerControllerB> players) { _teleportTrappedClientIds.Clear(); foreach (PlayerControllerB player in players) { if (!((Object)(object)player == (Object)null) && !player.isPlayerDead && player.isPlayerControlled) { _teleportTrappedClientIds.Add(player.actualClientId); SetTeleportTrappedClientRPC(PlayerControllerReference.op_Implicit(player), trapped: true); } } } private void UntrapPlayersAfterTeleportAttack() { foreach (ulong clientId in _teleportTrappedClientIds) { PlayerControllerB val = ((IEnumerable<PlayerControllerB>)StartOfRound.Instance.allPlayerScripts).FirstOrDefault((Func<PlayerControllerB, bool>)((PlayerControllerB x) => (Object)(object)x != (Object)null && x.actualClientId == clientId)); if ((Object)(object)val != (Object)null) { SetTeleportTrappedClientRPC(PlayerControllerReference.op_Implicit(val), trapped: false); } } _teleportTrappedClientIds.Clear(); } protected override void __initializeVariables() { if (_currentState == null) { throw new Exception("PandoraEnemyAI._currentState cannot be null. All NetworkVariableBase instances must be initialized."); } ((NetworkVariableBase)_currentState).Initialize((NetworkBehaviour)(object)this); ((NetworkBehaviour)this).__nameNetworkVariable((NetworkVariableBase)(object)_currentState, "_currentState"); ((NetworkBehaviour)this).NetworkVariableFields.Add((NetworkVariableBase)(object)_currentState); base.__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 ((NetworkBehaviour)this).__registerRpc(2838982378u, new RpcReceiveHandler(__rpc_handler_2838982378), "TeleportPlayerServerRPC"); ((NetworkBehaviour)this).__registerRpc(163295284u, new RpcReceiveHandler(__rpc_handler_163295284), "TeleportPlayerClientRPC"); ((NetworkBehaviour)this).__registerRpc(445249911u, new RpcReceiveHandler(__rpc_handler_445249911), "BeginSinkingClientRPC"); ((NetworkBehaviour)this).__registerRpc(2924807977u, new RpcReceiveHandler(__rpc_handler_2924807977), "PlayerBeatMashMinigameServerRPC"); ((NetworkBehaviour)this).__registerRpc(2622230991u, new RpcReceiveHandler(__rpc_handler_2622230991), "PlayerBeatMashMinigameClientRPC"); ((NetworkBehaviour)this).__registerRpc(1267405687u, new RpcReceiveHandler(__rpc_handler_1267405687), "BeginMashMinigameClientRPC"); ((NetworkBehaviour)this).__registerRpc(2124096682u, new RpcReceiveHandler(__rpc_handler_2124096682), "SetTeleportTrappedClientRPC"); base.__initializeRpcs(); } private static void __rpc_handler_2838982378(NetworkBehaviour target, FastBufferReader reader, __RpcParams rpcParams) { //IL_0023: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_0029: Unknown result type (might be due to invalid IL or missing references) //IL_007c: Unknown result type (might be due to invalid IL or missing references) //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Invalid comparison between Unknown and I4 //IL_00ce: 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_00e3: Unknown result type (might be due to invalid IL or missing references) //IL_00f2: Unknown result type (might be due to invalid IL or missing references) //IL_0105: 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_00ab: Unknown result type (might be due to invalid IL or missing references) NetworkManager networkManager = target.NetworkManager; if (networkManager == null || !networkManager.IsListening) { return; } if (rpcParams.Server.Receive.SenderClientId != target.OwnerClientId) { if ((int)networkManager.LogLevel <= 1) { Debug.LogError((object)"Only the owner can invoke a ServerRpc that requires ownership!"); } return; } bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference player = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref player, default(ForNetworkSerializable)); } Vector3 position = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref position); float yRot = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref yRot, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).TeleportPlayerServerRPC(player, position, yRot); target.__rpc_exec_stage = (__RpcExecStage)0; } private static void __rpc_handler_163295284(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_0081: Unknown result type (might be due to invalid IL or missing references) //IL_0087: Unknown result type (might be due to invalid IL or missing references) //IL_0096: 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_00b8: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } Vector3 position = default(Vector3); ((FastBufferReader)(ref reader)).ReadValueSafe(ref position); float yRot = default(float); ((FastBufferReader)(ref reader)).ReadValueSafe<float>(ref yRot, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).TeleportPlayerClientRPC(playerRef, position, yRot); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_445249911(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_006e: 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_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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).BeginSinkingClientRPC(playerRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2924807977(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_006e: 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_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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).PlayerBeatMashMinigameServerRPC(playerRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2622230991(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_006e: 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_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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).PlayerBeatMashMinigameClientRPC(playerRef); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_1267405687(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_0068: Unknown result type (might be due to invalid IL or missing references) //IL_007b: Unknown result type (might be due to invalid IL or missing references) //IL_0099: 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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } int requiredJumps = default(int); ByteUnpacker.ReadValueBitPacked(reader, ref requiredJumps); target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).BeginMashMinigameClientRPC(playerRef, requiredJumps); target.__rpc_exec_stage = (__RpcExecStage)0; } } private static void __rpc_handler_2124096682(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_0089: 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_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) NetworkManager networkManager = target.NetworkManager; if (networkManager != null && networkManager.IsListening) { bool flag = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref flag, default(ForPrimitives)); PlayerControllerReference playerRef = null; if (flag) { ((FastBufferReader)(ref reader)).ReadValueSafe<PlayerControllerReference>(ref playerRef, default(ForNetworkSerializable)); } bool trapped = default(bool); ((FastBufferReader)(ref reader)).ReadValueSafe<bool>(ref trapped, default(ForPrimitives)); target.__rpc_exec_stage = (__RpcExecStage)1; ((PandoraEnemyAI)(object)target).SetTeleportTrappedClientRPC(playerRef, trapped); target.__rpc_exec_stage = (__RpcExecStage)0; } } [MethodImpl(MethodImplOptions.NoInlining)] protected internal override string __getTypeName() { return "PandoraEnemyAI"; } } } namespace System.Runtime.CompilerServices { [AttributeUsage(AttributeTargets.Assembly, AllowMultiple = true)] internal sealed class IgnoresAccessChecksToAttribute : Attribute { public IgnoresAccessChecksToAttribute(string assemblyName) { } } } namespace __GEN { internal class NetworkVariableSerializationHelper { [RuntimeInitializeOnLoadMethod] internal static void InitializeSerialization() { NetworkVariableSerializationTypes.InitializeSerializer_UnmanagedByMemcpy<PandoraEnemyAI.PandoraState>(); NetworkVariableSerializationTypes.InitializeEqualityChecker_UnmanagedValueEquals<PandoraEnemyAI.PandoraState>(); } } } namespace com.github.xuuxiaolan.pandoraenemy.NetcodePatcher { [AttributeUsage(AttributeTargets.Module)] internal class NetcodePatchedAssemblyAttribute : Attribute { } }